From 1889bd7ab54834fbc0e639b32b0225e913623268 Mon Sep 17 00:00:00 2001 From: strbrian Date: Wed, 19 Jul 2023 10:32:02 -0400 Subject: [PATCH 01/44] enable consumer run without provider and ics channel locally --- cmd/consumer.go | 47 ++++++++++++++++++++++----------- dockernet/config.sh | 2 +- dockernet/src/init_chain.sh | 9 +++++-- dockernet/upgrades/setup_ics.sh | 11 ++------ 4 files changed, 41 insertions(+), 28 deletions(-) diff --git a/cmd/consumer.go b/cmd/consumer.go index 4dbf7327a6..ecfa10d52d 100644 --- a/cmd/consumer.go +++ b/cmd/consumer.go @@ -3,6 +3,7 @@ package cmd import ( "encoding/json" "fmt" + "strconv" errorsmod "cosmossdk.io/errors" types1 "github.com/cometbft/cometbft/abci/types" @@ -24,31 +25,46 @@ func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { genesisMutator := NewDefaultGenesisIO() txCmd := &cobra.Command{ - Use: "add-consumer-section", + Use: "add-consumer-section [num_nodes]", + Args: cobra.ExactArgs(1), Short: "ONLY FOR TESTING PURPOSES! Modifies genesis so that chain can be started locally with one node.", SuggestionsMinimumDistance: 2, RunE: func(cmd *cobra.Command, args []string) error { + numNodes, err := strconv.Atoi(args[0]) + if err != nil { + return errorsmod.Wrap(err, "invalid number of nodes") + } else if numNodes == 0 { + return errorsmod.Wrap(nil, "num_nodes can not be zero") + } + return genesisMutator.AlterConsumerModuleState(cmd, func(state *GenesisData, _ map[string]json.RawMessage) error { + initialValset := []types1.ValidatorUpdate{} genesisState := testutil.CreateMinimalConsumerTestGenesis() clientCtx := client.GetClientContextFromCmd(cmd) serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config - config.SetRoot(clientCtx.HomeDir) - privValidator := pvm.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) - pk, err := privValidator.GetPubKey() - if err != nil { - return err - } - sdkPublicKey, err := cryptocodec.FromTmPubKeyInterface(pk) - if err != nil { - return err - } - tmProtoPublicKey, err := cryptocodec.ToTmProtoPublicKey(sdkPublicKey) - if err != nil { - return err + homeDir := clientCtx.HomeDir + for i := 1; i <= numNodes; i++ { + homeDir = fmt.Sprintf("%s%d", homeDir[:len(homeDir)-1], i) + config.SetRoot(homeDir) + + privValidator := pvm.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) + pk, err := privValidator.GetPubKey() + if err != nil { + return err + } + sdkPublicKey, err := cryptocodec.FromTmPubKeyInterface(pk) + if err != nil { + return err + } + tmProtoPublicKey, err := cryptocodec.ToTmProtoPublicKey(sdkPublicKey) + if err != nil { + return err + } + + initialValset = append(initialValset, types1.ValidatorUpdate{PubKey: tmProtoPublicKey, Power: 100}) } - initialValset := []types1.ValidatorUpdate{{PubKey: tmProtoPublicKey, Power: 100}} vals, err := tmtypes.PB2TM.ValidatorUpdates(initialValset) if err != nil { return errorsmod.Wrap(err, "could not convert val updates to validator set") @@ -58,7 +74,6 @@ func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { genesisState.ProviderConsensusState.NextValidatorsHash = tmtypes.NewValidatorSet(vals).Hash() state.ConsumerModuleState = genesisState - return nil }) }, diff --git a/dockernet/config.sh b/dockernet/config.sh index e8e257a8a4..6e74fd96a8 100755 --- a/dockernet/config.sh +++ b/dockernet/config.sh @@ -157,7 +157,7 @@ STRIDE_MAIN_CMD="$STRIDE_BINARY --home $DOCKERNET_HOME/state/${STRIDE_NODE_PREFI # GAIA GAIA_CHAIN_ID=GAIA GAIA_NODE_PREFIX=gaia -GAIA_NUM_NODES=3 +GAIA_NUM_NODES=1 GAIA_BINARY="$DOCKERNET_HOME/../build/gaiad" GAIA_VAL_PREFIX=gval GAIA_REV_ACCT=grev1 diff --git a/dockernet/src/init_chain.sh b/dockernet/src/init_chain.sh index a79f942540..311d4a8c80 100644 --- a/dockernet/src/init_chain.sh +++ b/dockernet/src/init_chain.sh @@ -40,6 +40,9 @@ set_stride_genesis() { jq '.app_state.gov.voting_params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.max_deposit_period = $newVal' --arg newVal "$MAX_DEPOSIT_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config + + # set consumer genesis + $MAIN_CMD add-consumer-section $NUM_NODES jq '.app_state.ccvconsumer.params.unbonding_period = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config # enable stride as an interchain accounts controller @@ -207,8 +210,10 @@ else fi fi -# now we process gentx txs on the main node -$MAIN_CMD collect-gentxs &> /dev/null +if [ "$CHAIN" != "STRIDE" ]; then + # now we process gentx txs on the main node + $MAIN_CMD collect-gentxs &> /dev/null +fi # wipe out the persistent peers for the main node (these are incorrectly autogenerated for each validator during collect-gentxs) sed -i -E "s|persistent_peers = .*|persistent_peers = \"\"|g" $MAIN_CONFIG diff --git a/dockernet/upgrades/setup_ics.sh b/dockernet/upgrades/setup_ics.sh index cb16eae450..93db0bba69 100644 --- a/dockernet/upgrades/setup_ics.sh +++ b/dockernet/upgrades/setup_ics.sh @@ -5,7 +5,6 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${SCRIPT_DIR}/../config.sh #======== 1. ADD CONSUMER ======== - PROVIDER_HOME="$DOCKERNET_HOME/state/${GAIA_NODE_PREFIX}1" CONSUMER_HOME_PREFIX="$DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}" CONSUMER_HOME="${CONSUMER_HOME_PREFIX}1" @@ -141,14 +140,8 @@ $relayer_exec rly keys restore stride $RELAYER_STRIDE_ICS_ACCT "$mnemonic" >> $r $relayer_exec rly keys restore $chain_name $account_name "$mnemonic" --coin-type $coin_type >> $relayer_logs 2>&1 echo "Done restoring relayer keys" -printf "STRIDE <> GAIA - Creating new connections..." | tee -a $relayer_logs -$relayer_exec rly transact connection stride-gaia-ics >> $relayer_logs 2>&1 -echo "Done." -sleep 10 - -printf "STRIDE <> GAIA - Creating new channels..." | tee -a $relayer_logs -$relayer_exec rly transact channel stride-gaia-ics --src-port consumer --dst-port provider --order ordered --version 1 >> $relayer_logs 2>&1 -echo "Done." +printf "STRIDE <> GAIA - Creating ICS channel..." | tee -a $relayer_logs +$relayer_exec rly transact link stride-gaia-ics --src-port consumer --dst-port provider --order ordered --version 1 >> $relayer_logs 2>&1 $DOCKER_COMPOSE up -d relayer-gaia-ics $DOCKER_COMPOSE logs -f relayer-gaia-ics | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & From 2de3b6070c33cbd57471309ca74ea25d4ffaa19d Mon Sep 17 00:00:00 2001 From: strbrian Date: Mon, 24 Jul 2023 10:49:19 -0400 Subject: [PATCH 02/44] add script for creating stride governors --- dockernet/src/create_validator.sh | 23 +++++++++++++++++++++++ dockernet/start_network.sh | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 dockernet/src/create_validator.sh diff --git a/dockernet/src/create_validator.sh b/dockernet/src/create_validator.sh new file mode 100644 index 0000000000..7a570ea621 --- /dev/null +++ b/dockernet/src/create_validator.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +source $SCRIPT_DIR/../config.sh + +STAKE_TOKENS=${STAKE_TOKENS}ustrd + +echo "Creating stride governors.." +for (( i=1; i <= $STRIDE_NUM_NODES; i++ )); do + NODE_NAME="${STRIDE_NODE_PREFIX}${i}" + MAIN_CMD="$STRIDE_BINARY --home ${STATE}/$NODE_NAME" + VAL_ACCT="${STRIDE_VAL_PREFIX}${i}" + PUB_KEY=$($MAIN_CMD tendermint show-validator) + echo "$PUB_KEY" + + $MAIN_CMD tx staking create-validator --amount $STAKE_TOKENS --from $VAL_ACCT \ + --pubkey=$PUB_KEY --commission-rate="0.10" --commission-max-rate="0.20" \ + --commission-max-change-rate="0.01" --min-self-delegation="1" -y | TRIM_TX + sleep 2 +done +echo "Done" \ No newline at end of file diff --git a/dockernet/start_network.sh b/dockernet/start_network.sh index 943fde89bf..8533089a97 100755 --- a/dockernet/start_network.sh +++ b/dockernet/start_network.sh @@ -57,9 +57,10 @@ for chain in STRIDE ${HOST_CHAINS[@]}; do done -# Start the chain and create the transfer channels +# Start the chain, create the transfer channels and create a consumer validator bash $SRC/start_chain.sh bash $SRC/start_relayers.sh +bash $SRC/create_validator.sh # Register all host zones for i in ${!HOST_CHAINS[@]}; do From 1d5da15cedcda1ea6d707980e024d7b93c684cc5 Mon Sep 17 00:00:00 2001 From: strbrian Date: Mon, 24 Jul 2023 12:40:01 -0400 Subject: [PATCH 03/44] update whitelist for param change proposals --- app/proposals_whitelisting.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index aed3b0ed09..728c232f5e 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -14,8 +14,10 @@ import ( upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" + autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" ) @@ -86,6 +88,11 @@ var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyMaxEntries)}: {}, {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyHistoricalEntries)}: {}, {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyBondDenom)}: {}, + //autopilot + {MsgType: autopilottypes.ModuleName, Key: string(autopilottypes.KeyStakeibcActive)}: {}, + {MsgType: autopilottypes.ModuleName, Key: string(autopilottypes.KeyClaimActive)}: {}, + // //ICS + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyRewardDenoms)}: {}, //distribution {MsgType: distrtypes.ModuleName, Key: string(distrtypes.ParamStoreKeyCommunityTax)}: {}, {MsgType: distrtypes.ModuleName, Key: string(distrtypes.ParamStoreKeyWithdrawAddrEnabled)}: {}, From c62cfc2c7b11d3d86b1967a5e1a5233298c5d10a Mon Sep 17 00:00:00 2001 From: strbrian Date: Tue, 25 Jul 2023 10:27:09 -0400 Subject: [PATCH 04/44] whitelist missing param keys, fix governors bonding issue --- app/proposals_whitelisting.go | 6 +++++- dockernet/src/create_validator.sh | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index 728c232f5e..fd4ea2429a 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -91,7 +91,7 @@ var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ //autopilot {MsgType: autopilottypes.ModuleName, Key: string(autopilottypes.KeyStakeibcActive)}: {}, {MsgType: autopilottypes.ModuleName, Key: string(autopilottypes.KeyClaimActive)}: {}, - // //ICS + //ccv consumer {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyRewardDenoms)}: {}, //distribution {MsgType: distrtypes.ModuleName, Key: string(distrtypes.ParamStoreKeyCommunityTax)}: {}, @@ -103,6 +103,7 @@ var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ {MsgType: minttypes.ModuleName, Key: string(minttypes.KeyReductionPeriodInEpochs)}: {}, {MsgType: minttypes.ModuleName, Key: string(minttypes.KeyReductionFactor)}: {}, {MsgType: minttypes.ModuleName, Key: string(minttypes.KeyPoolAllocationRatio)}: {}, + {MsgType: minttypes.ModuleName, Key: string(minttypes.KeyDeveloperRewardsReceiver)}: {}, {MsgType: minttypes.ModuleName, Key: string(minttypes.KeyMintingRewardsDistributionStartEpoch)}: {}, //ibc transfer {MsgType: ibctransfertypes.ModuleName, Key: string(ibctransfertypes.KeySendEnabled)}: {}, @@ -123,6 +124,9 @@ var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyDefaultMaxRedemptionRateThreshold)}: {}, {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyIBCTransferTimeoutNanos)}: {}, {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeySafetyNumValidators)}: {}, + {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeySafetyMaxSlashPercent)}: {}, + {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyMaxRedemptionRates)}: {}, + {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyMinRedemptionRates)}: {}, //ica {MsgType: icahosttypes.SubModuleName, Key: string(icahosttypes.KeyHostEnabled)}: {}, {MsgType: icahosttypes.SubModuleName, Key: string(icahosttypes.KeyAllowMessages)}: {}, diff --git a/dockernet/src/create_validator.sh b/dockernet/src/create_validator.sh index 7a570ea621..6847db3257 100644 --- a/dockernet/src/create_validator.sh +++ b/dockernet/src/create_validator.sh @@ -5,7 +5,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/../config.sh -STAKE_TOKENS=${STAKE_TOKENS}ustrd +STAKE_TOKENS=${STAKE_TOKENS}000000ustrd echo "Creating stride governors.." for (( i=1; i <= $STRIDE_NUM_NODES; i++ )); do From 95ad02c74440b7c581a6e138a0294f229203c015 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 28 Jul 2023 09:08:50 -0500 Subject: [PATCH 05/44] small changes to get dockernet integration tests running as consumer chain (#870) --- dockernet/src/init_chain.sh | 17 ++++++++--------- dockernet/src/start_relayers.sh | 34 ++------------------------------- 2 files changed, 10 insertions(+), 41 deletions(-) diff --git a/dockernet/src/init_chain.sh b/dockernet/src/init_chain.sh index 311d4a8c80..c815c42936 100644 --- a/dockernet/src/init_chain.sh +++ b/dockernet/src/init_chain.sh @@ -36,8 +36,6 @@ set_stride_genesis() { jq '(.app_state.epochs.epochs[] | select(.identifier=="stride_epoch") ).duration = $epochLen' --arg epochLen $STRIDE_EPOCH_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '(.app_state.epochs.epochs[] | select(.identifier=="mint") ).duration = $epochLen' --arg epochLen $STRIDE_MINT_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.staking.params.unbonding_time = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config - jq '.app_state.gov.deposit_params.max_deposit_period = $newVal' --arg newVal "$MAX_DEPOSIT_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config - jq '.app_state.gov.voting_params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.max_deposit_period = $newVal' --arg newVal "$MAX_DEPOSIT_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config @@ -139,15 +137,15 @@ for (( i=1; i <= $NUM_NODES; i++ )); do # Add this account to the current node $cmd add-genesis-account ${val_addr} ${VAL_TOKENS}${DENOM} - if [[ $CHAIN != "STRIDE" ]]; then - cp $DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}${i}/config/priv_validator_key.json $DOCKERNET_HOME/state/${NODE_PREFIX}${i}/config/priv_validator_key.json - cp $DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}${i}/config/node_key.json $DOCKERNET_HOME/state/${NODE_PREFIX}${i}/config/node_key.json + if [[ $CHAIN == "GAIA" ]]; then + stride_config=$DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}${i}/config + host_config=$DOCKERNET_HOME/state/${NODE_PREFIX}${i}/config + cp ${stride_config}/priv_validator_key.json ${host_config}/priv_validator_key.json + cp ${stride_config}/node_key.json ${host_config}/node_key.json fi - if [[ ($CHAIN == "STRIDE" && ($i == 1 || $i == 2)) || $CHAIN != "STRIDE" ]]; then - # actually set this account as a validator on the current node - $cmd gentx $val_acct ${STAKE_TOKENS}${DENOM} --chain-id $CHAIN_ID --keyring-backend test &> /dev/null - fi + # actually set this account as a validator on the current node + $cmd gentx $val_acct ${STAKE_TOKENS}${DENOM} --chain-id $CHAIN_ID --keyring-backend test &> /dev/null # Get the endpoint and node ID node_id=$($cmd tendermint show-node-id)@$node_name:$PEER_PORT @@ -186,6 +184,7 @@ if [ "$CHAIN" == "STRIDE" ]; then RELAYER_MNEMONIC="${RELAYER_MNEMONICS[i]}" echo "$RELAYER_MNEMONIC" | $MAIN_CMD keys add $RELAYER_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 + RELAYER_ADDRESS=$($MAIN_CMD keys show $RELAYER_ACCT --keyring-backend test -a) $MAIN_CMD add-genesis-account ${RELAYER_ADDRESS} ${VAL_TOKENS}${DENOM} done diff --git a/dockernet/src/start_relayers.sh b/dockernet/src/start_relayers.sh index 2acab0ab2d..2f79a0545d 100644 --- a/dockernet/src/start_relayers.sh +++ b/dockernet/src/start_relayers.sh @@ -5,17 +5,6 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${SCRIPT_DIR}/../config.sh -HERMES_LOGS=${LOGS}/hermes.log -HERMES_CONFIG=$STATE/hermes/config.toml -TMP_MNEMONICS=mnemonic.txt - -mkdir -p $STATE/hermes -chmod -R 777 $STATE/hermes -cp ${DOCKERNET_HOME}/config/hermes_config.toml $HERMES_CONFIG - -HERMES_CMD="$DOCKERNET_HOME/../build/hermes/release/hermes --config $HERMES_CONFIG" - -added_stride_account="false" for chain in ${HOST_CHAINS[@]}; do chain_id=$(GET_VAR_VALUE ${chain}_CHAIN_ID) @@ -40,25 +29,6 @@ for chain in ${HOST_CHAINS[@]}; do $relayer_exec rly transact link stride-${chain_name} >> $relayer_logs 2>&1 echo "Done" - printf "STRIDE <> $chain - Adding hermes host key..." - echo "$mnemonic" > $TMP_MNEMONICS - $HERMES_CMD keys add --key-name $account_name --chain $chain_id --mnemonic-file $TMP_MNEMONICS --overwrite - echo "Done" - - if [[ "$added_stride_account" == "false" ]]; then - printf "STRIDE <> $chain - Adding hermes Stride key..." - echo "$mnemonic" > $TMP_MNEMONICS - $HERMES_CMD keys add --key-name $RELAYER_STRIDE_ACCT --chain $STRIDE_CHAIN_ID --mnemonic-file $TMP_MNEMONICS --overwrite - echo "Done" - - added_stride_account="true" - fi - - # $DOCKER_COMPOSE up -d relayer-${chain_name} - # $DOCKER_COMPOSE logs -f relayer-${chain_name} | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & + $DOCKER_COMPOSE up -d relayer-${chain_name} + $DOCKER_COMPOSE logs -f relayer-${chain_name} | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & done - -$DOCKER_COMPOSE up -d hermes -$DOCKER_COMPOSE logs -f hermes | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $HERMES_LOGS 2>&1 & - -rm $TMP_MNEMONICS \ No newline at end of file From fc7fe43674fb9850b4135620bc51a02b3ca96ab8 Mon Sep 17 00:00:00 2001 From: strbrian Date: Fri, 28 Jul 2023 10:11:46 -0400 Subject: [PATCH 06/44] func for rewards denom registration to whitelist --- app/app.go | 1 + x/stakeibc/keeper/consumer.go | 39 ++++++++++++++++++++ x/stakeibc/keeper/consumer_test.go | 54 ++++++++++++++++++++++++++++ x/stakeibc/keeper/keeper.go | 3 ++ x/stakeibc/types/errors.go | 1 + x/stakeibc/types/expected_keepers.go | 7 ++++ 6 files changed, 105 insertions(+) create mode 100644 x/stakeibc/keeper/consumer.go create mode 100644 x/stakeibc/keeper/consumer_test.go diff --git a/app/app.go b/app/app.go index c51f18dec4..da25877222 100644 --- a/app/app.go +++ b/app/app.go @@ -570,6 +570,7 @@ func NewStrideApp( app.StakingKeeper, app.IcacallbacksKeeper, app.RatelimitKeeper, + app.ConsumerKeeper, ) app.StakeibcKeeper = *stakeibcKeeper.SetHooks( stakeibcmoduletypes.NewMultiStakeIBCHooks(app.ClaimKeeper.Hooks()), diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go new file mode 100644 index 0000000000..872b235fce --- /dev/null +++ b/x/stakeibc/keeper/consumer.go @@ -0,0 +1,39 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v12/x/stakeibc/types" +) + +// Register new stTokens to the consumer reward denom whitelist +func (k Keeper) RegisterStTokenDenomsToWhitelist(ctx sdk.Context, denoms []string) error { + hostZones := k.GetAllHostZone(ctx) + allDenomsMap := make(map[string]bool) + registeredDenomsMap := make(map[string]bool) + + // get all stToken denoms + for _, zone := range hostZones { + allDenomsMap["st"+zone.HostDenom] = true + } + + // get registered denoms in the consumer reward denom whitelist + consumerParams := k.ConsumerKeeper.GetConsumerParams(ctx) + for _, denom := range consumerParams.RewardDenoms { + registeredDenomsMap[denom] = true + } + + // register new denoms to the whitelist + for _, denom := range denoms { + if !allDenomsMap[denom] { + return types.ErrStTokenNotFound + } else if registeredDenomsMap[denom] { + continue + } else { + consumerParams.RewardDenoms = append(consumerParams.RewardDenoms, denom) + } + } + + k.ConsumerKeeper.SetParams(ctx, consumerParams) + return nil +} diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go new file mode 100644 index 0000000000..28ba7a51f5 --- /dev/null +++ b/x/stakeibc/keeper/consumer_test.go @@ -0,0 +1,54 @@ +package keeper_test + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" +) + +func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { + tc := s.SetupRegisterHostZone() + _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().NoError(err, "able to successfully register host zone") + + for _, tc := range []struct { + desc string + newDenoms []string + expectedWhitelist []string + expectedErr error + }{ + { + desc: "both valid and invalid denoms", + newDenoms: []string{"stuatom", "stuosmo"}, + expectedWhitelist: nil, + expectedErr: stakeibctypes.ErrStTokenNotFound, + }, + { + desc: "only invalid denoms", + newDenoms: []string{"stuosmo", "stujuno"}, + expectedWhitelist: nil, + expectedErr: stakeibctypes.ErrStTokenNotFound, + }, + { + desc: "only valid denoms", + newDenoms: []string{"stuatom"}, + expectedWhitelist: []string{"stuatom"}, + expectedErr: nil, + }, + { + desc: "empty", + newDenoms: []string{}, + expectedWhitelist: []string{"stuatom"}, + expectedErr: nil, + }, + } { + s.Run(tc.desc, func() { + err := s.App.StakeibcKeeper.RegisterStTokenDenomsToWhitelist(s.Ctx, tc.newDenoms) + s.Require().Equal(tc.expectedErr, err) + + params := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + s.Require().Equal(tc.expectedWhitelist, params.RewardDenoms) + }) + } +} diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index 2f585f125e..c56871d206 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -45,6 +45,7 @@ type ( hooks types.StakeIBCHooks AccountKeeper types.AccountKeeper RatelimitKeeper types.RatelimitKeeper + ConsumerKeeper types.ConsumerKeeper } ) @@ -62,6 +63,7 @@ func NewKeeper( StakingKeeper stakingkeeper.Keeper, ICACallbacksKeeper icacallbackskeeper.Keeper, RatelimitKeeper types.RatelimitKeeper, + ConsumerKeeper types.ConsumerKeeper, ) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { @@ -82,6 +84,7 @@ func NewKeeper( StakingKeeper: StakingKeeper, ICACallbacksKeeper: ICACallbacksKeeper, RatelimitKeeper: RatelimitKeeper, + ConsumerKeeper: ConsumerKeeper, } } diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index 7072af92ec..5d894cea2d 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -49,4 +49,5 @@ var ( ErrRewardCollectorAccountNotFound = errorsmod.Register(ModuleName, 1541, "Reward Collector account not found") ErrHaltedHostZone = errorsmod.Register(ModuleName, 1542, "Halted host zone found") ErrInsufficientLiquidStake = errorsmod.Register(ModuleName, 1543, "Liquid staked amount is too small") + ErrStTokenNotFound = errorsmod.Register(ModuleName, 1544, "denom not found in stToken list") ) diff --git a/x/stakeibc/types/expected_keepers.go b/x/stakeibc/types/expected_keepers.go index 886691f43b..6d27818028 100644 --- a/x/stakeibc/types/expected_keepers.go +++ b/x/stakeibc/types/expected_keepers.go @@ -5,6 +5,8 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" + ratelimittypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" ) @@ -44,3 +46,8 @@ type RatelimitKeeper interface { RemoveDenomFromBlacklist(ctx sdk.Context, denom string) SetWhitelistedAddressPair(ctx sdk.Context, whitelist ratelimittypes.WhitelistedAddressPair) } + +type ConsumerKeeper interface { + GetConsumerParams(ctx sdk.Context) ccvconsumertypes.Params + SetParams(ctx sdk.Context, params ccvconsumertypes.Params) +} From b44bd1663af0bff06bbc850a1a7bdabf3257554b Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 28 Jul 2023 09:16:09 -0500 Subject: [PATCH 07/44] Reverted host zone submodules (#864) --- deps/evmos | 1 + deps/juno | 2 +- deps/relayer | 2 +- deps/stargaze | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 160000 deps/evmos diff --git a/deps/evmos b/deps/evmos new file mode 160000 index 0000000000..ec337e0357 --- /dev/null +++ b/deps/evmos @@ -0,0 +1 @@ +Subproject commit ec337e0357ae6b6727ad9092ac0ce3667df91319 diff --git a/deps/juno b/deps/juno index 9558920413..e57bc002ac 160000 --- a/deps/juno +++ b/deps/juno @@ -1 +1 @@ -Subproject commit 955892041359443fbb5addd34c0ab8b66bd8d75c +Subproject commit e57bc002ac3d27457e304985a4cd8445a2580172 diff --git a/deps/relayer b/deps/relayer index 01039ea63d..e95dd80608 160000 --- a/deps/relayer +++ b/deps/relayer @@ -1 +1 @@ -Subproject commit 01039ea63d8e6fdd188ea47fc168a0b57e5fa660 +Subproject commit e95dd80608536c31d37354bdd7f7ec46a2172009 diff --git a/deps/stargaze b/deps/stargaze index b0bea28fc6..0746ec779e 160000 --- a/deps/stargaze +++ b/deps/stargaze @@ -1 +1 @@ -Subproject commit b0bea28fc695a2a5c567e56a37b289a5b75830cc +Subproject commit 0746ec779e327f7a17300cfe6063cebc77a43ca4 From 9c6e796539df223f7e0b8614a1fba6a091070c69 Mon Sep 17 00:00:00 2001 From: strbrian Date: Mon, 31 Jul 2023 10:13:04 -0400 Subject: [PATCH 08/44] fix integration issues for HOST --- dockernet/src/create_validator.sh | 46 +++++++++++++++++++++---------- dockernet/src/init_chain.sh | 28 ++++++++++++++----- dockernet/start_network.sh | 7 +++-- 3 files changed, 57 insertions(+), 24 deletions(-) diff --git a/dockernet/src/create_validator.sh b/dockernet/src/create_validator.sh index 6847db3257..eec71ccf93 100644 --- a/dockernet/src/create_validator.sh +++ b/dockernet/src/create_validator.sh @@ -5,19 +5,35 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source $SCRIPT_DIR/../config.sh -STAKE_TOKENS=${STAKE_TOKENS}000000ustrd - -echo "Creating stride governors.." -for (( i=1; i <= $STRIDE_NUM_NODES; i++ )); do - NODE_NAME="${STRIDE_NODE_PREFIX}${i}" - MAIN_CMD="$STRIDE_BINARY --home ${STATE}/$NODE_NAME" - VAL_ACCT="${STRIDE_VAL_PREFIX}${i}" - PUB_KEY=$($MAIN_CMD tendermint show-validator) - echo "$PUB_KEY" - - $MAIN_CMD tx staking create-validator --amount $STAKE_TOKENS --from $VAL_ACCT \ - --pubkey=$PUB_KEY --commission-rate="0.10" --commission-max-rate="0.20" \ - --commission-max-change-rate="0.01" --min-self-delegation="1" -y | TRIM_TX - sleep 2 -done +INCLUDE_HOST="$1" +STRIDE_STAKE_TOKENS=${STAKE_TOKENS}000000ustrd +HOST_STAKE_TOKENS=${STAKE_TOKENS}000000uwalk + +create_validators() { + CHAIN_ID=$1 + NUM_NODES=$2 + NODE_PREFIX=$3 + BINARY=$4 + VAL_PREFIX=$5 + STAKE_TOKENS=$6 + + echo "Creating $CHAIN_ID governors.." + for (( i=1; i <= $NUM_NODES; i++ )); do + NODE_NAME="${NODE_PREFIX}${i}" + MAIN_CMD="$BINARY --home ${STATE}/$NODE_NAME" + VAL_ACCT="${VAL_PREFIX}${i}" + PUB_KEY=$($MAIN_CMD tendermint show-validator) + + $MAIN_CMD tx staking create-validator --amount $STAKE_TOKENS --from $VAL_ACCT \ + --pubkey=$PUB_KEY --commission-rate="0.10" --commission-max-rate="0.20" \ + --commission-max-change-rate="0.01" --min-self-delegation="1" -y | TRIM_TX + sleep 2 + done +} + +create_validators stride $STRIDE_NUM_NODES $STRIDE_NODE_PREFIX $STRIDE_BINARY $STRIDE_VAL_PREFIX $STRIDE_STAKE_TOKENS + +if [[ $INCLUDE_HOST == true ]]; then + create_validators HOST $HOST_NUM_NODES $HOST_NODE_PREFIX $HOST_BINARY $HOST_VAL_PREFIX $HOST_STAKE_TOKENS +fi echo "Done" \ No newline at end of file diff --git a/dockernet/src/init_chain.sh b/dockernet/src/init_chain.sh index c815c42936..c7e4f3a45a 100644 --- a/dockernet/src/init_chain.sh +++ b/dockernet/src/init_chain.sh @@ -39,10 +39,6 @@ set_stride_genesis() { jq '.app_state.gov.params.max_deposit_period = $newVal' --arg newVal "$MAX_DEPOSIT_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config - # set consumer genesis - $MAIN_CMD add-consumer-section $NUM_NODES - jq '.app_state.ccvconsumer.params.unbonding_period = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config - # enable stride as an interchain accounts controller jq "del(.app_state.interchain_accounts)" $genesis_config > json.tmp && mv json.tmp $genesis_config interchain_accts=$(cat $DOCKERNET_HOME/config/ica_controller.json) @@ -78,6 +74,14 @@ set_host_genesis() { sed -i -E 's|"slash_fraction_downtime": "0.010000000000000000"|"slash_fraction_downtime": "0.050000000000000000"|g' $genesis_config } +set_consumer_genesis() { + genesis_config=$1 + + # add consumer genesis + $MAIN_CMD add-consumer-section $NUM_NODES + jq '.app_state.ccvconsumer.params.unbonding_period = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config +} + MAIN_ID=1 # Node responsible for genesis and persistent_peers MAIN_NODE_NAME="" MAIN_NODE_ID="" @@ -137,6 +141,8 @@ for (( i=1; i <= $NUM_NODES; i++ )); do # Add this account to the current node $cmd add-genesis-account ${val_addr} ${VAL_TOKENS}${DENOM} + # Copy over the provider stride validator keys to the provider (in the event + # that we are testing ICS) if [[ $CHAIN == "GAIA" ]]; then stride_config=$DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}${i}/config host_config=$DOCKERNET_HOME/state/${NODE_PREFIX}${i}/config @@ -144,8 +150,10 @@ for (( i=1; i <= $NUM_NODES; i++ )); do cp ${stride_config}/node_key.json ${host_config}/node_key.json fi - # actually set this account as a validator on the current node - $cmd gentx $val_acct ${STAKE_TOKENS}${DENOM} --chain-id $CHAIN_ID --keyring-backend test &> /dev/null + # Only generate the validator txs for host chains + if [[ "$CHAIN" != "STRIDE" && "$CHAIN" != "HOST" ]]; then + $cmd gentx $val_acct ${STAKE_TOKENS}${DENOM} --chain-id $CHAIN_ID --keyring-backend test &> /dev/null + fi # Get the endpoint and node ID node_id=$($cmd tendermint show-node-id)@$node_name:$PEER_PORT @@ -209,7 +217,8 @@ else fi fi -if [ "$CHAIN" != "STRIDE" ]; then +# Only collect the validator genesis txs for host chains +if [[ "$CHAIN" != "STRIDE" && "$CHAIN" != "HOST" ]]; then # now we process gentx txs on the main node $MAIN_CMD collect-gentxs &> /dev/null fi @@ -224,6 +233,11 @@ else set_host_genesis $MAIN_GENESIS fi +# update consumer genesis for stride binary chains +if [[ "$CHAIN" == "STRIDE" || "$CHAIN" == "HOST" ]]; then + set_consumer_genesis $MAIN_GENESIS +fi + # for all peer nodes.... for (( i=2; i <= $NUM_NODES; i++ )); do node_name="${NODE_PREFIX}${i}" diff --git a/dockernet/start_network.sh b/dockernet/start_network.sh index 8533089a97..d196aa2b3f 100755 --- a/dockernet/start_network.sh +++ b/dockernet/start_network.sh @@ -50,9 +50,12 @@ if [[ "${UPGRADE_NAME:-}" != "" ]]; then echo "Done" fi - +INCLUDE_HOST=false # Initialize the state for each chain for chain in STRIDE ${HOST_CHAINS[@]}; do + if [[ $chain == "HOST" ]]; then + INCLUDE_HOST=true + fi bash $SRC/init_chain.sh $chain done @@ -60,7 +63,7 @@ done # Start the chain, create the transfer channels and create a consumer validator bash $SRC/start_chain.sh bash $SRC/start_relayers.sh -bash $SRC/create_validator.sh +bash $SRC/create_validator.sh $INCLUDE_HOST # Register all host zones for i in ${!HOST_CHAINS[@]}; do From 91d5473d03b59e3cce1645c7ad42a54fc395dbf2 Mon Sep 17 00:00:00 2001 From: sampocs Date: Mon, 31 Jul 2023 11:37:23 -0500 Subject: [PATCH 09/44] Small changes to HOST dockernet setup (#872) --- dockernet/src/create_governors.sh | 31 ++++++++++++++++++++++++ dockernet/src/create_validator.sh | 39 ------------------------------- dockernet/start_network.sh | 14 ++++++----- 3 files changed, 39 insertions(+), 45 deletions(-) create mode 100644 dockernet/src/create_governors.sh delete mode 100644 dockernet/src/create_validator.sh diff --git a/dockernet/src/create_governors.sh b/dockernet/src/create_governors.sh new file mode 100644 index 0000000000..d9df697e88 --- /dev/null +++ b/dockernet/src/create_governors.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source $SCRIPT_DIR/../config.sh + +CHAIN="$1" + +CHAIN_ID=$(GET_VAR_VALUE ${CHAIN}_CHAIN_ID) +BINARY=$(GET_VAR_VALUE ${CHAIN}_BINARY) +DENOM=$(GET_VAR_VALUE ${CHAIN}_DENOM) +NUM_NODES=$(GET_VAR_VALUE ${CHAIN}_NUM_NODES) +NODE_PREFIX=$(GET_VAR_VALUE ${CHAIN}_NODE_PREFIX) +VAL_PREFIX=$(GET_VAR_VALUE ${CHAIN}_VAL_PREFIX) + +STAKE_TOKENS=${STAKE_TOKENS}000000 + +echo "Creating $CHAIN_ID governors.." +for (( i=1; i <= $NUM_NODES; i++ )); do + node_name="${NODE_PREFIX}${i}" + cmd="$BINARY --home ${STATE}/$node_name" + val_acct="${VAL_PREFIX}${i}" + pub_key=$($cmd tendermint show-validator) + + $cmd tx staking create-validator --amount ${STAKE_TOKENS}${DENOM} --from $val_acct \ + --pubkey=$pub_key --commission-rate="0.10" --commission-max-rate="0.20" \ + --commission-max-change-rate="0.01" --min-self-delegation="1" -y | TRIM_TX + sleep 2 +done + +echo "Done" \ No newline at end of file diff --git a/dockernet/src/create_validator.sh b/dockernet/src/create_validator.sh deleted file mode 100644 index eec71ccf93..0000000000 --- a/dockernet/src/create_validator.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -set -eu -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -source $SCRIPT_DIR/../config.sh - -INCLUDE_HOST="$1" -STRIDE_STAKE_TOKENS=${STAKE_TOKENS}000000ustrd -HOST_STAKE_TOKENS=${STAKE_TOKENS}000000uwalk - -create_validators() { - CHAIN_ID=$1 - NUM_NODES=$2 - NODE_PREFIX=$3 - BINARY=$4 - VAL_PREFIX=$5 - STAKE_TOKENS=$6 - - echo "Creating $CHAIN_ID governors.." - for (( i=1; i <= $NUM_NODES; i++ )); do - NODE_NAME="${NODE_PREFIX}${i}" - MAIN_CMD="$BINARY --home ${STATE}/$NODE_NAME" - VAL_ACCT="${VAL_PREFIX}${i}" - PUB_KEY=$($MAIN_CMD tendermint show-validator) - - $MAIN_CMD tx staking create-validator --amount $STAKE_TOKENS --from $VAL_ACCT \ - --pubkey=$PUB_KEY --commission-rate="0.10" --commission-max-rate="0.20" \ - --commission-max-change-rate="0.01" --min-self-delegation="1" -y | TRIM_TX - sleep 2 - done -} - -create_validators stride $STRIDE_NUM_NODES $STRIDE_NODE_PREFIX $STRIDE_BINARY $STRIDE_VAL_PREFIX $STRIDE_STAKE_TOKENS - -if [[ $INCLUDE_HOST == true ]]; then - create_validators HOST $HOST_NUM_NODES $HOST_NODE_PREFIX $HOST_BINARY $HOST_VAL_PREFIX $HOST_STAKE_TOKENS -fi -echo "Done" \ No newline at end of file diff --git a/dockernet/start_network.sh b/dockernet/start_network.sh index d196aa2b3f..96c8778e39 100755 --- a/dockernet/start_network.sh +++ b/dockernet/start_network.sh @@ -50,20 +50,22 @@ if [[ "${UPGRADE_NAME:-}" != "" ]]; then echo "Done" fi -INCLUDE_HOST=false # Initialize the state for each chain for chain in STRIDE ${HOST_CHAINS[@]}; do - if [[ $chain == "HOST" ]]; then - INCLUDE_HOST=true - fi bash $SRC/init_chain.sh $chain done -# Start the chain, create the transfer channels and create a consumer validator +# Start each chain, create the transfer channels and start the relayers bash $SRC/start_chain.sh bash $SRC/start_relayers.sh -bash $SRC/create_validator.sh $INCLUDE_HOST + +# Create governors for chains running the stride binary +for chain in STRIDE ${HOST_CHAINS[@]}; do + if [[ "$chain" == "STRIDE" || "$chain" == "HOST" ]]; then + bash $SRC/create_governors.sh $chain + fi +done # Register all host zones for i in ${!HOST_CHAINS[@]}; do From 2e0911f33b3c70d573c3d482dade6aa90b68943a Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 3 Aug 2023 20:41:37 -0500 Subject: [PATCH 10/44] commented out get denom traces --- x/stakeibc/keeper/get_denom_traces_test.go | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/x/stakeibc/keeper/get_denom_traces_test.go b/x/stakeibc/keeper/get_denom_traces_test.go index 2a054dc205..2f4d64631b 100644 --- a/x/stakeibc/keeper/get_denom_traces_test.go +++ b/x/stakeibc/keeper/get_denom_traces_test.go @@ -1,20 +1,20 @@ package keeper_test -// Note: this is for dockernet +// // Note: this is for dockernet -import ( - "fmt" +// import ( +// "fmt" - transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" -) +// transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" +// ) -func (s *KeeperTestSuite) TestIBCDenom() { - chainId := "{CHAIN_ID}" - denom := "{minimal_denom}" - for i := 0; i < 4; i++ { - sourcePrefix := transfertypes.GetDenomPrefix("transfer", fmt.Sprintf("channel-%d", i)) - prefixedDenom := sourcePrefix + denom +// func (s *KeeperTestSuite) TestIBCDenom() { +// chainId := "{CHAIN_ID}" +// denom := "{minimal_denom}" +// for i := 0; i < 4; i++ { +// sourcePrefix := transfertypes.GetDenomPrefix("transfer", fmt.Sprintf("channel-%d", i)) +// prefixedDenom := sourcePrefix + denom - fmt.Printf("IBC_%s_CHANNEL_%d_DENOM='%s'\n", chainId, i, transfertypes.ParseDenomTrace(prefixedDenom).IBCDenom()) - } -} +// fmt.Printf("IBC_%s_CHANNEL_%d_DENOM='%s'\n", chainId, i, transfertypes.ParseDenomTrace(prefixedDenom).IBCDenom()) +// } +// } From e0e98e43140cef0ba78107eb77b5aefcba6e48bd Mon Sep 17 00:00:00 2001 From: strbrian Date: Wed, 9 Aug 2023 09:39:20 -0400 Subject: [PATCH 11/44] register sttokens when new hostzones are added --- x/stakeibc/keeper/consumer.go | 2 +- x/stakeibc/keeper/msg_server_register_host_zone.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go index 872b235fce..dfce9aee62 100644 --- a/x/stakeibc/keeper/consumer.go +++ b/x/stakeibc/keeper/consumer.go @@ -14,7 +14,7 @@ func (k Keeper) RegisterStTokenDenomsToWhitelist(ctx sdk.Context, denoms []strin // get all stToken denoms for _, zone := range hostZones { - allDenomsMap["st"+zone.HostDenom] = true + allDenomsMap[types.StAssetDenomFromHostZoneDenom(zone.HostDenom)] = true } // get registered denoms in the consumer reward denom whitelist diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 95118dc17c..e038708c43 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -186,6 +186,10 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste } k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) + // register stToken to consumer reward denom whitelist so that + // stToken rewards can be distributed to provider validators + k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) + // emit events ctx.EventManager().EmitEvent( sdk.NewEvent( From 558d25ad8286bde00ec3f63c459eb960a587acfe Mon Sep 17 00:00:00 2001 From: strbrian Date: Wed, 9 Aug 2023 09:49:01 -0400 Subject: [PATCH 12/44] handle error --- x/stakeibc/keeper/msg_server_register_host_zone.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index e038708c43..ee2fb09477 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -188,7 +188,12 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste // register stToken to consumer reward denom whitelist so that // stToken rewards can be distributed to provider validators - k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) + err = k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) + if err != nil { + errMsg := fmt.Sprintf("unable to register reward denom, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } // emit events ctx.EventManager().EmitEvent( From 827e1361c438b08c3b4dec2ecc4a58a3c81643dd Mon Sep 17 00:00:00 2001 From: strbrian Date: Wed, 9 Aug 2023 10:18:39 -0400 Subject: [PATCH 13/44] fix unit tests --- x/stakeibc/keeper/consumer_test.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index 28ba7a51f5..9d8b0adc03 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -12,6 +12,12 @@ func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) s.Require().NoError(err, "able to successfully register host zone") + // RegisterHostZone should have already registered stToken to consumer reward denom whitelist + params := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + stDenom := stakeibctypes.StAssetDenomFromHostZoneDenom(tc.validMsg.HostDenom) + expectedWhitelist := []string{stDenom} + s.Require().Equal([]string{stDenom}, params.RewardDenoms) + for _, tc := range []struct { desc string newDenoms []string @@ -20,26 +26,26 @@ func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { }{ { desc: "both valid and invalid denoms", - newDenoms: []string{"stuatom", "stuosmo"}, - expectedWhitelist: nil, + newDenoms: []string{stDenom, "stuosmo"}, + expectedWhitelist: expectedWhitelist, expectedErr: stakeibctypes.ErrStTokenNotFound, }, { desc: "only invalid denoms", newDenoms: []string{"stuosmo", "stujuno"}, - expectedWhitelist: nil, + expectedWhitelist: expectedWhitelist, expectedErr: stakeibctypes.ErrStTokenNotFound, }, { desc: "only valid denoms", - newDenoms: []string{"stuatom"}, - expectedWhitelist: []string{"stuatom"}, + newDenoms: []string{stDenom}, + expectedWhitelist: expectedWhitelist, expectedErr: nil, }, { desc: "empty", newDenoms: []string{}, - expectedWhitelist: []string{"stuatom"}, + expectedWhitelist: expectedWhitelist, expectedErr: nil, }, } { From bd182094742ca4ae4df654ca8a432362a61d9871 Mon Sep 17 00:00:00 2001 From: strbrian Date: Wed, 9 Aug 2023 10:36:14 -0400 Subject: [PATCH 14/44] register additional param keys to the proposal whitelist --- app/proposals_whitelisting.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index fd4ea2429a..b7041fe487 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -77,7 +77,8 @@ func isParamChangeWhitelisted(paramChanges map[ccvgov.ParamChangeKey]struct{}) b var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ //bank - {MsgType: banktypes.ModuleName, Key: string(banktypes.KeySendEnabled)}: {}, + {MsgType: banktypes.ModuleName, Key: string(banktypes.KeySendEnabled)}: {}, + {MsgType: banktypes.ModuleName, Key: string(banktypes.KeyDefaultSendEnabled)}: {}, //governance {MsgType: govtypes.ModuleName, Key: string(govv1.ParamStoreKeyDepositParams)}: {}, //min_deposit, max_deposit_period {MsgType: govtypes.ModuleName, Key: string(govv1.ParamStoreKeyVotingParams)}: {}, //voting_period @@ -88,11 +89,22 @@ var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyMaxEntries)}: {}, {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyHistoricalEntries)}: {}, {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyBondDenom)}: {}, + {MsgType: stakingtypes.ModuleName, Key: string(stakingtypes.KeyMinCommissionRate)}: {}, //autopilot {MsgType: autopilottypes.ModuleName, Key: string(autopilottypes.KeyStakeibcActive)}: {}, {MsgType: autopilottypes.ModuleName, Key: string(autopilottypes.KeyClaimActive)}: {}, //ccv consumer - {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyRewardDenoms)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyRewardDenoms)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyEnabled)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyBlocksPerDistributionTransmission)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyDistributionTransmissionChannel)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyProviderFeePoolAddrStr)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyTransferTimeoutPeriod)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyConsumerRedistributionFrac)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyHistoricalEntries)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyConsumerUnbondingPeriod)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeySoftOptOutThreshold)}: {}, + {MsgType: ccvconsumertypes.ModuleName, Key: string(ccvconsumertypes.KeyProviderRewardDenoms)}: {}, //distribution {MsgType: distrtypes.ModuleName, Key: string(distrtypes.ParamStoreKeyCommunityTax)}: {}, {MsgType: distrtypes.ModuleName, Key: string(distrtypes.ParamStoreKeyWithdrawAddrEnabled)}: {}, From e6c9032cb0836d95da61158e6cefde0b09acfdc7 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 9 Aug 2023 15:09:17 -0500 Subject: [PATCH 15/44] ICA Oracle (#884) --- app/app.go | 38 +- app/apptesting/test_helpers.go | 8 + app/proposals_whitelisting.go | 2 + app/upgrades.go | 5 + dockernet/config.sh | 2 +- dockernet/config/ica_host.json | 4 +- proto/cosmwasm/wasm/v1/cosmwasm.proto | 50 + proto/stride/icaoracle/callbacks.proto | 15 + proto/stride/icaoracle/contract.proto | 20 + proto/stride/icaoracle/genesis.proto | 28 + proto/stride/icaoracle/icaoracle.proto | 45 + proto/stride/icaoracle/query.proto | 66 + proto/stride/icaoracle/tx.proto | 80 + scripts/protocgen.sh | 12 + scripts/start_local_node.sh | 67 + x/autopilot/types/genesis.pb.go | 4 +- x/autopilot/types/params.pb.go | 4 +- x/autopilot/types/query.pb.go | 6 +- x/claim/types/claim.pb.go | 52 +- x/claim/types/genesis.pb.go | 6 +- x/claim/types/params.pb.go | 40 +- x/claim/types/query.pb.go | 148 +- x/claim/types/tx.pb.go | 72 +- x/claim/vesting/types/tx.pb.go | 4 +- x/claim/vesting/types/vesting.pb.go | 62 +- x/epochs/types/genesis.pb.go | 24 +- x/epochs/types/query.pb.go | 4 +- x/icacallbacks/types/callback_data.pb.go | 4 +- x/icacallbacks/types/events_ibc.go | 1 + x/icacallbacks/types/genesis.pb.go | 6 +- x/icacallbacks/types/packet.pb.go | 4 +- x/icacallbacks/types/params.pb.go | 4 +- x/icacallbacks/types/query.pb.go | 62 +- x/icacallbacks/types/tx.pb.go | 4 +- x/icaoracle/README.md | 172 ++ x/icaoracle/client/cli/cli_test.go | 83 + x/icaoracle/client/cli/query.go | 189 ++ x/icaoracle/client/cli/query_test.go | 30 + x/icaoracle/client/cli/tx.go | 147 ++ x/icaoracle/client/cli/tx_test.go | 14 + x/icaoracle/docs/metric-status.png | Bin 0 -> 67175 bytes x/icaoracle/docs/pushing.png | Bin 0 -> 141878 bytes x/icaoracle/docs/setup.png | Bin 0 -> 723445 bytes x/icaoracle/ibc_middleware.go | 179 ++ x/icaoracle/keeper/abci.go | 10 + x/icaoracle/keeper/events.go | 47 + x/icaoracle/keeper/genesis.go | 31 + x/icaoracle/keeper/genesis_test.go | 28 + x/icaoracle/keeper/grpc_query.go | 60 + x/icaoracle/keeper/grpc_query_test.go | 114 + x/icaoracle/keeper/ibc.go | 96 + x/icaoracle/keeper/ibc_test.go | 225 ++ x/icaoracle/keeper/icacallbacks.go | 23 + .../keeper/icacallbacks_instantiate_oracle.go | 65 + .../icacallbacks_instantiate_oracle_test.go | 166 ++ .../keeper/icacallbacks_update_oracle.go | 55 + .../keeper/icacallbacks_update_oracle_test.go | 90 + x/icaoracle/keeper/icaoracle.go | 119 + x/icaoracle/keeper/icaoracle_test.go | 166 ++ x/icaoracle/keeper/keeper.go | 65 + x/icaoracle/keeper/keeper_test.go | 71 + x/icaoracle/keeper/metric.go | 109 + x/icaoracle/keeper/metric_test.go | 73 + x/icaoracle/keeper/msg_server.go | 265 ++ .../keeper/msg_server_add_oracle_test.go | 117 + .../msg_server_instantiate_oracle_test.go | 101 + .../keeper/msg_server_remove_oracle_test.go | 51 + .../msg_server_restore_oracle_ica_test.go | 152 ++ .../keeper/msg_server_toggle_oracle_test.go | 47 + x/icaoracle/keeper/oracle.go | 106 + x/icaoracle/keeper/oracle_test.go | 124 + x/icaoracle/module.go | 157 ++ x/icaoracle/types/callbacks.pb.go | 551 +++++ x/icaoracle/types/codec.go | 46 + x/icaoracle/types/contract.go | 19 + x/icaoracle/types/contract.pb.go | 901 +++++++ x/icaoracle/types/cosmwasm.go | 89 + x/icaoracle/types/cosmwasm.pb.go | 1161 +++++++++ x/icaoracle/types/errors.go | 23 + x/icaoracle/types/events.go | 15 + x/icaoracle/types/expected_keepers.go | 56 + x/icaoracle/types/genesis.go | 40 + x/icaoracle/types/genesis.pb.go | 570 +++++ x/icaoracle/types/genesis_test.go | 76 + x/icaoracle/types/ica.go | 59 + x/icaoracle/types/ica_test.go | 143 ++ x/icaoracle/types/icaoracle.pb.go | 1370 ++++++++++ x/icaoracle/types/keys.go | 25 + x/icaoracle/types/message_add_oracle.go | 53 + x/icaoracle/types/message_add_oracle_test.go | 82 + .../types/message_instantiate_oracle.go | 52 + .../types/message_instantiate_oracle_test.go | 89 + x/icaoracle/types/message_remove_oracle.go | 31 + .../types/message_remove_oracle_test.go | 59 + ...ssage_restore_oracle_interchain_account.go | 42 + ..._restore_oracle_interchain_account_test.go | 63 + x/icaoracle/types/message_toggle_oracle.go | 31 + .../types/message_toggle_oracle_test.go | 59 + x/icaoracle/types/metric.go | 24 + x/icaoracle/types/metric_test.go | 44 + x/icaoracle/types/metrics.go | 5 + x/icaoracle/types/oracle.go | 28 + x/icaoracle/types/oracle_test.go | 87 + x/icaoracle/types/params.go | 32 + x/icaoracle/types/query.pb.go | 1780 +++++++++++++ x/icaoracle/types/query.pb.gw.go | 420 ++++ x/icaoracle/types/tx.pb.go | 2198 +++++++++++++++++ x/interchainquery/types/genesis.pb.go | 64 +- x/interchainquery/types/messages.pb.go | 4 +- x/interchainquery/types/query.pb.go | 4 +- x/mint/types/genesis.pb.go | 32 +- x/mint/types/mint.pb.go | 82 +- x/mint/types/query.pb.go | 6 +- x/ratelimit/types/genesis.pb.go | 44 +- x/ratelimit/types/gov.pb.go | 52 +- x/ratelimit/types/params.pb.go | 4 +- x/ratelimit/types/query.pb.go | 4 +- x/ratelimit/types/ratelimit.pb.go | 68 +- x/records/types/callbacks.pb.go | 4 +- x/records/types/genesis.pb.go | 108 +- x/records/types/query.pb.go | 126 +- x/stakeibc/ibc_middleware.go | 1 - x/stakeibc/keeper/hooks.go | 35 + x/stakeibc/keeper/icacallbacks.go | 15 +- x/stakeibc/keeper/keeper.go | 5 +- x/stakeibc/types/address_unbonding.pb.go | 8 +- x/stakeibc/types/callbacks.pb.go | 44 +- x/stakeibc/types/epoch_tracker.pb.go | 4 +- x/stakeibc/types/expected_keepers.go | 4 + x/stakeibc/types/genesis.pb.go | 46 +- x/stakeibc/types/gov.pb.go | 6 +- x/stakeibc/types/host_zone.pb.go | 86 +- x/stakeibc/types/ica_account.pb.go | 4 +- x/stakeibc/types/packet.pb.go | 4 +- x/stakeibc/types/params.pb.go | 74 +- x/stakeibc/types/query.pb.go | 4 +- x/stakeibc/types/tx.pb.go | 4 +- x/stakeibc/types/validator.pb.go | 54 +- 138 files changed, 15081 insertions(+), 742 deletions(-) create mode 100644 proto/cosmwasm/wasm/v1/cosmwasm.proto create mode 100644 proto/stride/icaoracle/callbacks.proto create mode 100644 proto/stride/icaoracle/contract.proto create mode 100644 proto/stride/icaoracle/genesis.proto create mode 100644 proto/stride/icaoracle/icaoracle.proto create mode 100644 proto/stride/icaoracle/query.proto create mode 100644 proto/stride/icaoracle/tx.proto create mode 100644 scripts/start_local_node.sh create mode 100644 x/icaoracle/README.md create mode 100644 x/icaoracle/client/cli/cli_test.go create mode 100644 x/icaoracle/client/cli/query.go create mode 100644 x/icaoracle/client/cli/query_test.go create mode 100644 x/icaoracle/client/cli/tx.go create mode 100644 x/icaoracle/client/cli/tx_test.go create mode 100644 x/icaoracle/docs/metric-status.png create mode 100644 x/icaoracle/docs/pushing.png create mode 100644 x/icaoracle/docs/setup.png create mode 100644 x/icaoracle/ibc_middleware.go create mode 100644 x/icaoracle/keeper/abci.go create mode 100644 x/icaoracle/keeper/events.go create mode 100644 x/icaoracle/keeper/genesis.go create mode 100644 x/icaoracle/keeper/genesis_test.go create mode 100644 x/icaoracle/keeper/grpc_query.go create mode 100644 x/icaoracle/keeper/grpc_query_test.go create mode 100644 x/icaoracle/keeper/ibc.go create mode 100644 x/icaoracle/keeper/ibc_test.go create mode 100644 x/icaoracle/keeper/icacallbacks.go create mode 100644 x/icaoracle/keeper/icacallbacks_instantiate_oracle.go create mode 100644 x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go create mode 100644 x/icaoracle/keeper/icacallbacks_update_oracle.go create mode 100644 x/icaoracle/keeper/icacallbacks_update_oracle_test.go create mode 100644 x/icaoracle/keeper/icaoracle.go create mode 100644 x/icaoracle/keeper/icaoracle_test.go create mode 100644 x/icaoracle/keeper/keeper.go create mode 100644 x/icaoracle/keeper/keeper_test.go create mode 100644 x/icaoracle/keeper/metric.go create mode 100644 x/icaoracle/keeper/metric_test.go create mode 100644 x/icaoracle/keeper/msg_server.go create mode 100644 x/icaoracle/keeper/msg_server_add_oracle_test.go create mode 100644 x/icaoracle/keeper/msg_server_instantiate_oracle_test.go create mode 100644 x/icaoracle/keeper/msg_server_remove_oracle_test.go create mode 100644 x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go create mode 100644 x/icaoracle/keeper/msg_server_toggle_oracle_test.go create mode 100644 x/icaoracle/keeper/oracle.go create mode 100644 x/icaoracle/keeper/oracle_test.go create mode 100644 x/icaoracle/module.go create mode 100644 x/icaoracle/types/callbacks.pb.go create mode 100644 x/icaoracle/types/codec.go create mode 100644 x/icaoracle/types/contract.go create mode 100644 x/icaoracle/types/contract.pb.go create mode 100644 x/icaoracle/types/cosmwasm.go create mode 100644 x/icaoracle/types/cosmwasm.pb.go create mode 100644 x/icaoracle/types/errors.go create mode 100644 x/icaoracle/types/events.go create mode 100644 x/icaoracle/types/expected_keepers.go create mode 100644 x/icaoracle/types/genesis.go create mode 100644 x/icaoracle/types/genesis.pb.go create mode 100644 x/icaoracle/types/genesis_test.go create mode 100644 x/icaoracle/types/ica.go create mode 100644 x/icaoracle/types/ica_test.go create mode 100644 x/icaoracle/types/icaoracle.pb.go create mode 100644 x/icaoracle/types/keys.go create mode 100644 x/icaoracle/types/message_add_oracle.go create mode 100644 x/icaoracle/types/message_add_oracle_test.go create mode 100644 x/icaoracle/types/message_instantiate_oracle.go create mode 100644 x/icaoracle/types/message_instantiate_oracle_test.go create mode 100644 x/icaoracle/types/message_remove_oracle.go create mode 100644 x/icaoracle/types/message_remove_oracle_test.go create mode 100644 x/icaoracle/types/message_restore_oracle_interchain_account.go create mode 100644 x/icaoracle/types/message_restore_oracle_interchain_account_test.go create mode 100644 x/icaoracle/types/message_toggle_oracle.go create mode 100644 x/icaoracle/types/message_toggle_oracle_test.go create mode 100644 x/icaoracle/types/metric.go create mode 100644 x/icaoracle/types/metric_test.go create mode 100644 x/icaoracle/types/metrics.go create mode 100644 x/icaoracle/types/oracle.go create mode 100644 x/icaoracle/types/oracle_test.go create mode 100644 x/icaoracle/types/params.go create mode 100644 x/icaoracle/types/query.pb.go create mode 100644 x/icaoracle/types/query.pb.gw.go create mode 100644 x/icaoracle/types/tx.pb.go diff --git a/app/app.go b/app/app.go index 3591e38330..883f406a6e 100644 --- a/app/app.go +++ b/app/app.go @@ -132,6 +132,9 @@ import ( icacallbacksmodule "github.com/Stride-Labs/stride/v12/x/icacallbacks" icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" icacallbacksmoduletypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icaoracle "github.com/Stride-Labs/stride/v12/x/icaoracle" + icaoraclekeeper "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" + icaoracletypes "github.com/Stride-Labs/stride/v12/x/icaoracle/types" ratelimitmodule "github.com/Stride-Labs/stride/v12/x/ratelimit" ratelimitclient "github.com/Stride-Labs/stride/v12/x/ratelimit/client" ratelimitmodulekeeper "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" @@ -214,6 +217,7 @@ var ( claim.AppModuleBasic{}, ccvconsumer.AppModuleBasic{}, autopilot.AppModuleBasic{}, + icaoracle.AppModuleBasic{}, tendermint.AppModuleBasic{}, ) @@ -299,8 +303,7 @@ type StrideApp struct { ScopedICAHostKeeper capabilitykeeper.ScopedKeeper ScopedCCVConsumerKeeper capabilitykeeper.ScopedKeeper - ScopedStakeibcKeeper capabilitykeeper.ScopedKeeper - StakeibcKeeper stakeibcmodulekeeper.Keeper + StakeibcKeeper stakeibcmodulekeeper.Keeper EpochsKeeper epochsmodulekeeper.Keeper InterchainqueryKeeper interchainquerykeeper.Keeper @@ -310,6 +313,7 @@ type StrideApp struct { ScopedratelimitKeeper capabilitykeeper.ScopedKeeper RatelimitKeeper ratelimitmodulekeeper.Keeper ClaimKeeper claimkeeper.Keeper + ICAOracleKeeper icaoraclekeeper.Keeper mm *module.Manager sm *module.SimulationManager @@ -353,6 +357,7 @@ func NewStrideApp( ratelimitmoduletypes.StoreKey, icacallbacksmoduletypes.StoreKey, claimtypes.StoreKey, + icaoracletypes.StoreKey, ccvconsumertypes.StoreKey, crisistypes.StoreKey, consensusparamtypes.StoreKey, @@ -525,7 +530,7 @@ func NewStrideApp( // ) // monitoringModule := monitoringp.NewAppModule(appCodec, app.MonitoringKeeper) - // Note: must be above app.StakeibcKeeper + // Note: must be above app.StakeibcKeeper and app.ICAOracleKeeper app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper( appCodec, keys[icacontrollertypes.StoreKey], app.GetSubspace(icacontrollertypes.SubModuleName), app.IBCKeeper.ChannelKeeper, // may be replaced with middleware such as ics29 fee @@ -556,6 +561,21 @@ func NewStrideApp( ) recordsModule := recordsmodule.NewAppModule(appCodec, app.RecordsKeeper, app.AccountKeeper, app.BankKeeper) + // Note: Must be above stakeibc keeper + app.ICAOracleKeeper = *icaoraclekeeper.NewKeeper( + appCodec, + keys[icaoracletypes.StoreKey], + app.GetSubspace(icaoracletypes.ModuleName), + authtypes.NewModuleAddress(govtypes.ModuleName).String(), + app.IBCKeeper.ChannelKeeper, // ICS4Wrapper - Note: this technically should be ICAController but it doesn't implement ICS4 + app.IBCKeeper.ClientKeeper, + app.IBCKeeper.ConnectionKeeper, + app.IBCKeeper.ChannelKeeper, + app.ICAControllerKeeper, + app.IcacallbacksKeeper, + ) + icaoracleModule := icaoracle.NewAppModule(appCodec, app.ICAOracleKeeper) + stakeibcKeeper := stakeibcmodulekeeper.NewKeeper( appCodec, keys[stakeibcmoduletypes.StoreKey], @@ -570,6 +590,7 @@ func NewStrideApp( app.StakingKeeper, app.IcacallbacksKeeper, app.RatelimitKeeper, + app.ICAOracleKeeper, app.ConsumerKeeper, ) app.StakeibcKeeper = *stakeibcKeeper.SetHooks( @@ -625,6 +646,7 @@ func NewStrideApp( if err := app.IcacallbacksKeeper.SetICACallbacks( app.StakeibcKeeper.Callbacks(), app.RecordsKeeper.Callbacks(), + app.ICAOracleKeeper.Callbacks(), ); err != nil { return nil } @@ -652,12 +674,14 @@ func NewStrideApp( // Stack two (ICACallbacks Stack) contains // - IBC - // - ICA + // - ICAController + // - ICAOracle // - stakeibc // - ICACallbacks // - base app var icacallbacksStack porttypes.IBCModule = icacallbacksIBCModule icacallbacksStack = stakeibcmodule.NewIBCMiddleware(icacallbacksStack, app.StakeibcKeeper) + icacallbacksStack = icaoracle.NewIBCMiddleware(icacallbacksStack, app.ICAOracleKeeper) icacallbacksStack = icacontroller.NewIBCMiddleware(icacallbacksStack, app.ICAControllerKeeper) // Stack three contains @@ -729,6 +753,7 @@ func NewStrideApp( icacallbacksModule, consumerModule, autopilotModule, + icaoracleModule, ) // During begin block slashing happens after distr.BeginBlocker so that @@ -765,6 +790,7 @@ func NewStrideApp( claimtypes.ModuleName, ccvconsumertypes.ModuleName, autopilottypes.ModuleName, + icaoracletypes.ModuleName, consensusparamtypes.ModuleName, ) @@ -798,6 +824,7 @@ func NewStrideApp( claimtypes.ModuleName, ccvconsumertypes.ModuleName, autopilottypes.ModuleName, + icaoracletypes.ModuleName, consensusparamtypes.ModuleName, ) @@ -836,6 +863,7 @@ func NewStrideApp( claimtypes.ModuleName, ccvconsumertypes.ModuleName, autopilottypes.ModuleName, + icaoracletypes.ModuleName, consensusparamtypes.ModuleName, ) @@ -1109,7 +1137,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(icacallbacksmoduletypes.ModuleName) paramsKeeper.Subspace(ccvconsumertypes.ModuleName) paramsKeeper.Subspace(autopilottypes.ModuleName) - + paramsKeeper.Subspace(icaoracletypes.ModuleName) paramsKeeper.Subspace(claimtypes.ModuleName) return paramsKeeper } diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 3cd0bd8388..9b4b400ed6 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -346,6 +346,14 @@ func CopyConnectionAndClientToPath(path *ibctesting.Path, pathToCopy *ibctesting return path } +// Helper function to change the state of a channel (i.e. to open/close it) +func (s *AppTestHelper) UpdateChannelState(portId, channelId string, channelState channeltypes.State) { + channel, found := s.App.IBCKeeper.ChannelKeeper.GetChannel(s.Ctx, portId, channelId) + s.Require().True(found, "ica channel should have been found") + channel.State = channelState + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portId, channelId, channel) +} + // Constructs an ICA Packet Acknowledgement compatible with ibc-go v5+ func ICAPacketAcknowledgement(t *testing.T, msgType string, msgResponses []proto.Message) channeltypes.Acknowledgement { txMsgData := &sdk.TxMsgData{ diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index b7041fe487..1e4bc2f3db 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -30,6 +30,8 @@ var WhiteListModule = map[string]struct{}{ "/cosmos.mint.v1beta1.MsgUpdateParams": {}, "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade": {}, "/cosmos.upgrade.v1beta1.MsgCancelUpgrade": {}, + "/stride.icaoracle.MsgToggleOracle": {}, + "/stride.icaoracle.MsgRemoveOracle": {}, } func IsModuleWhiteList(typeUrl string) bool { diff --git a/app/upgrades.go b/app/upgrades.go index d1a29f5da0..70b9c880d6 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -29,6 +29,7 @@ import ( autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icaoracletypes "github.com/Stride-Labs/stride/v12/x/icaoracle/types" ratelimittypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" @@ -193,6 +194,10 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{consumertypes.ModuleName}, } + case "v13": + storeUpgrades = &storetypes.StoreUpgrades{ + Added: []string{icaoracletypes.ModuleName}, + } } if storeUpgrades != nil { diff --git a/dockernet/config.sh b/dockernet/config.sh index b2467f606d..dc127d8da9 100755 --- a/dockernet/config.sh +++ b/dockernet/config.sh @@ -15,7 +15,7 @@ STRIDE_LOGS=$LOGS/stride.log TX_LOGS=$DOCKERNET_HOME/logs/tx.log KEYS_LOGS=$DOCKERNET_HOME/logs/keys.log -# List of hosts enabled +# List of hosts enabled HOST_CHAINS=() # If no host zones are specified above: diff --git a/dockernet/config/ica_host.json b/dockernet/config/ica_host.json index 6ae3df5a58..e061651d19 100644 --- a/dockernet/config/ica_host.json +++ b/dockernet/config/ica_host.json @@ -17,7 +17,9 @@ "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", - "/ibc.applications.transfer.v1.MsgTransfer" + "/ibc.applications.transfer.v1.MsgTransfer", + "/cosmwasm.wasm.v1.MsgExecuteContract", + "/cosmwasm.wasm.v1.MsgInstantiateContract" ] } } diff --git a/proto/cosmwasm/wasm/v1/cosmwasm.proto b/proto/cosmwasm/wasm/v1/cosmwasm.proto new file mode 100644 index 0000000000..56da875691 --- /dev/null +++ b/proto/cosmwasm/wasm/v1/cosmwasm.proto @@ -0,0 +1,50 @@ +syntax = "proto3"; +package cosmwasm.wasm.v1; + +import "gogoproto/gogo.proto"; +import "cosmos/base/v1beta1/coin.proto"; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// MsgExecuteContract submits the given message data to a smart contract +message MsgExecuteContract { + // Sender is the that actor that signed the messages + string sender = 1; + // Contract is the address of the smart contract + string contract = 2; + // Msg json encoded message to be passed to the contract + bytes msg = 3 [ (gogoproto.casttype) = "RawContractMessage" ]; + // Funds coins that are transferred to the contract on execution + repeated cosmos.base.v1beta1.Coin funds = 5 [ + (gogoproto.nullable) = false, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; +} + +// MsgInstantiateContract create a new smart contract instance for the given +// code id. +message MsgInstantiateContract { + // Sender is the that actor that signed the messages + string sender = 1; + // Admin is an optional address that can execute migrations + string admin = 2; + // CodeID is the reference to the stored WASM code + uint64 code_id = 3 [ (gogoproto.customname) = "CodeID" ]; + // Label is optional metadata to be stored with a contract instance. + string label = 4; + // Msg json encoded message to be passed to the contract on instantiation + bytes msg = 5 [ (gogoproto.casttype) = "RawContractMessage" ]; + // Funds coins that are transferred to the contract on instantiation + repeated cosmos.base.v1beta1.Coin funds = 6 [ + (gogoproto.nullable) = false, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; +} + +// MsgInstantiateContractResponse return instantiation result data +message MsgInstantiateContractResponse { + // Address is the bech32 address of the new contract instance. + string address = 1; + // Data contains bytes to returned from the contract + bytes data = 2; +} diff --git a/proto/stride/icaoracle/callbacks.proto b/proto/stride/icaoracle/callbacks.proto new file mode 100644 index 0000000000..417f431497 --- /dev/null +++ b/proto/stride/icaoracle/callbacks.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; +package stride.icaoracle; + +import "stride/icaoracle/icaoracle.proto"; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// Callback data for instantiating an oracle +message InstantiateOracleCallback { string oracle_chain_id = 1; } + +// Callback data for updating a value in the oracle +message UpdateOracleCallback { + string oracle_chain_id = 1; + Metric metric = 2; +} \ No newline at end of file diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto new file mode 100644 index 0000000000..fafe09e418 --- /dev/null +++ b/proto/stride/icaoracle/contract.proto @@ -0,0 +1,20 @@ +syntax = "proto3"; +package stride.icaoracle; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// InstanitateOracleContract is the contract-specific instantiate message +message MsgInstantiateOracleContract { string admin_address = 1; } + +// ExecuteContractPostMetric is the contract-specific metric update message +message MsgExecuteContractPostMetric { MsgPostMetric post_metric = 1; } + +// Body of PostMetric contract message +message MsgPostMetric { + string key = 1; + string value = 2; + string metric_type = 3; + int64 update_time = 4; + int64 block_height = 5; + string attributes = 6; +} \ No newline at end of file diff --git a/proto/stride/icaoracle/genesis.proto b/proto/stride/icaoracle/genesis.proto new file mode 100644 index 0000000000..6bc2a76437 --- /dev/null +++ b/proto/stride/icaoracle/genesis.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; +package stride.icaoracle; + +import "gogoproto/gogo.proto"; +import "stride/icaoracle/icaoracle.proto"; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// Params defines the icaoracle module parameters. +message Params {} + +// GenesisState defines the icaoracle module's genesis state. +message GenesisState { + Params params = 1 [ + (gogoproto.moretags) = "yaml:\"params\"", + (gogoproto.nullable) = false + ]; + + repeated Oracle oracles = 2 [ + (gogoproto.moretags) = "yaml:\"oracles\"", + (gogoproto.nullable) = false + ]; + + repeated Metric metrics = 3 [ + (gogoproto.moretags) = "yaml:\"metrics\"", + (gogoproto.nullable) = false + ]; +} \ No newline at end of file diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto new file mode 100644 index 0000000000..372de3e198 --- /dev/null +++ b/proto/stride/icaoracle/icaoracle.proto @@ -0,0 +1,45 @@ +syntax = "proto3"; +package stride.icaoracle; + +import "gogoproto/gogo.proto"; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// Oracle structure stores context about the CW oracle sitting a different chain +message Oracle { + string chain_id = 1; + string connection_id = 2; + string channel_id = 3; + string port_id = 4; + string ica_address = 5; + string contract_address = 6; + bool active = 7; +} + +// MetricStatus indicates whether the Metric update ICA has been sent +enum MetricStatus { + METRIC_STATUS_UNSPECIFIED = 0 + [ (gogoproto.enumvalue_customname) = "UNSPECIFIED" ]; + METRIC_STATUS_QUEUED = 1 [ (gogoproto.enumvalue_customname) = "QUEUED" ]; + METRIC_STATUS_IN_PROGRESS = 2 + [ (gogoproto.enumvalue_customname) = "IN_PROGRESS" ]; +} + +// Metric structure stores a generic metric using a key value structure +// along with additional context +message Metric { + string key = 1; + string value = 2; + string metric_type = 3; + int64 update_time = 4; + int64 block_height = 5; + string attributes = 6; + string destination_oracle = 7; + MetricStatus status = 8; +} + +// Attributes associated with a RedemptionRate metric update +message RedemptionRateAttributes { + string denom = 1; + string base_denom = 2; +} diff --git a/proto/stride/icaoracle/query.proto b/proto/stride/icaoracle/query.proto new file mode 100644 index 0000000000..5f102aab65 --- /dev/null +++ b/proto/stride/icaoracle/query.proto @@ -0,0 +1,66 @@ +syntax = "proto3"; +package stride.icaoracle; + +import "stride/icaoracle/icaoracle.proto"; +import "google/api/annotations.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// Query defines the gRPC querier service. +service Query { + // Query a specific oracle + rpc Oracle(QueryOracleRequest) returns (QueryOracleResponse) { + option (google.api.http).get = + "/Stride-Labs/stride/icaoracle/oracle/{chain_id}"; + } + + // Query all oracles + rpc AllOracles(QueryAllOraclesRequest) returns (QueryAllOraclesResponse) { + option (google.api.http).get = "/Stride-Labs/stride/icaoracle/oracles"; + } + + // Query oracles with active ffilter: + // - /oracles/by_active?active=true + // - /oracles/by_active?active=false + rpc ActiveOracles(QueryActiveOraclesRequest) + returns (QueryActiveOraclesResponse) { + option (google.api.http).get = + "/Stride-Labs/stride/icaoracle/oracles/by_active"; + } + + // Query metrics with optional filters + // + // Ex: + // - /metrics + // - /metrics?metric_key=X + // - /metrics?oracle_chain_id=Y + rpc Metrics(QueryMetricsRequest) returns (QueryMetricsResponse) { + option (google.api.http).get = "/Stride-Labs/stride/icaoracle/metrics"; + } +} + +// Query's a specific oracle +message QueryOracleRequest { string chain_id = 1; } +message QueryOracleResponse { Oracle oracle = 1; } + +// Query's all oracle's +message QueryAllOraclesRequest {} +message QueryAllOraclesResponse { + repeated Oracle oracles = 1 [ (gogoproto.nullable) = false ]; +} + +// Query's all oracle with a filter for whether they're active +message QueryActiveOraclesRequest { bool active = 1; } +message QueryActiveOraclesResponse { + repeated Oracle oracles = 1 [ (gogoproto.nullable) = false ]; +} + +// Query's metric's with optional filters +message QueryMetricsRequest { + string metric_key = 1; + string oracle_chain_id = 2; +} +message QueryMetricsResponse { + repeated Metric metrics = 1 [ (gogoproto.nullable) = false ]; +} \ No newline at end of file diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto new file mode 100644 index 0000000000..a47b774e6e --- /dev/null +++ b/proto/stride/icaoracle/tx.proto @@ -0,0 +1,80 @@ +syntax = "proto3"; +package stride.icaoracle; + +import "cosmos_proto/cosmos.proto"; +import "cosmos/msg/v1/msg.proto"; +import "amino/amino.proto"; + +option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; + +// Msg defines the Msg service. +service Msg { + // Adds a new oracle given a provided connection + rpc AddOracle(MsgAddOracle) returns (MsgAddOracleResponse); + // Instantiates an Oracle CW contract + rpc InstantiateOracle(MsgInstantiateOracle) + returns (MsgInstantiateOracleResponse); + // Restores the oracle ICA channel after a closure + rpc RestoreOracleICA(MsgRestoreOracleICA) + returns (MsgRestoreOracleICAResponse); + // Toggle's whether an oracle is active and should receive metric updates + rpc ToggleOracle(MsgToggleOracle) returns (MsgToggleOracleResponse); + // Removes an oracle completely + rpc RemoveOracle(MsgRemoveOracle) returns (MsgRemoveOracleResponse); +} + +// Adds a new oracle +message MsgAddOracle { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "stride/x/icaoracle/MsgAddOracle"; + + string creator = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string connection_id = 2; +} +message MsgAddOracleResponse {} + +// Instantiates the oracle's CW contract +message MsgInstantiateOracle { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "stride/x/icaoracle/MsgInstantiateOracle"; + + string creator = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string oracle_chain_id = 2; + uint64 contract_code_id = 3; +} +message MsgInstantiateOracleResponse {} + +// Restore's a closed ICA channel for a given oracle +message MsgRestoreOracleICA { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "stride/x/icaoracle/MsgRestoreOracleICA"; + + string creator = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string oracle_chain_id = 2; +} +message MsgRestoreOracleICAResponse {} + +// Toggle's whether an oracle is active and should receive metric updates +message MsgToggleOracle { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "stride/x/icaoracle/MsgToggleOracle"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string oracle_chain_id = 2; + bool active = 3; +} +message MsgToggleOracleResponse {} + +// Removes an oracle completely +message MsgRemoveOracle { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "stride/x/icaoracle/MsgRemoveOracle"; + + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string oracle_chain_id = 2; +} +message MsgRemoveOracleResponse {} \ No newline at end of file diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 3a6181666f..fcc126ba36 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -4,6 +4,8 @@ set -eo pipefail echo "Generating gogo proto code" cd proto + +# Generate stride protos proto_dirs=$(find ./stride -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) for dir in $proto_dirs; do for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do @@ -13,6 +15,16 @@ for dir in $proto_dirs; do done done +# Generate cosmwasm protos +proto_dirs=$(find ./cosmwasm -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) +for dir in $proto_dirs; do + for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do + if grep go_package "$file" &>/dev/null; then + buf generate --template buf.gen.gogo.yaml "$file" + fi + done +done + cd .. # move proto files to the right places diff --git a/scripts/start_local_node.sh b/scripts/start_local_node.sh new file mode 100644 index 0000000000..8ed852028b --- /dev/null +++ b/scripts/start_local_node.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# This script starts a single stride node locally +# It can be used in debugging scenarios where dockernet is unncessary +# (ex1: debugging an issue that does not require host chains or relayers) +# (ex2: debugging via adding logs to the SDK) +# (ex3: testing CLI commands) + +set -eu + +STRIDE_HOME=~/.stride-local +STRIDED="build/strided --home ${STRIDE_HOME}" +CHAIN_ID=stride-local-1 +DENOM=ustrd + +STRIDE_ADMIN_MNEMONIC="tone cause tribe this switch near host damage idle fragile antique tail soda alien depth write wool they rapid unfold body scan pledge soft" +STRIDE_VAL_MNEMONIC="close soup mirror crew erode defy knock trigger gather eyebrow tent farm gym gloom base lemon sleep weekend rich forget diagram hurt prize fly" + +STRIDE_DAY_EPOCH_DURATION="140s" +STRIDE_EPOCH_EPOCH_DURATION="35s" +MAX_DEPOSIT_PERIOD="30s" +VOTING_PERIOD="30s" +UNBONDING_TIME="240s" + +config_toml="${STRIDE_HOME}/config/config.toml" +client_toml="${STRIDE_HOME}/config/client.toml" +app_toml="${STRIDE_HOME}/config/app.toml" +genesis_json="${STRIDE_HOME}/config/genesis.json" + +rm -rf ${STRIDE_HOME} + +$STRIDED init stride-local --chain-id $CHAIN_ID --overwrite + +sed -i -E "s|minimum-gas-prices = \".*\"|minimum-gas-prices = \"0${DENOM}\"|g" $app_toml +sed -i -E '/\[api\]/,/^enable = .*$/ s/^enable = .*$/enable = true/' $app_toml + +sed -i -E "s|chain-id = \"\"|chain-id = \"${CHAIN_ID}\"|g" $client_toml +sed -i -E "s|keyring-backend = \"os\"|keyring-backend = \"test\"|g" $client_toml +sed -i -E "s|node = \".*\"|node = \"tcp://localhost:26657\"|g" $client_toml + +jq '(.app_state.epochs.epochs[] | select(.identifier=="day") ).duration = $epochLen' --arg epochLen $STRIDE_DAY_EPOCH_DURATION $genesis_json > json.tmp && mv json.tmp $genesis_json +jq '(.app_state.epochs.epochs[] | select(.identifier=="stride_epoch") ).duration = $epochLen' --arg epochLen $STRIDE_EPOCH_EPOCH_DURATION $genesis_json > json.tmp && mv json.tmp $genesis_json +jq '.app_state.gov.params.max_deposit_period = $newVal' --arg newVal "$MAX_DEPOSIT_PERIOD" $genesis_json > json.tmp && mv json.tmp $genesis_json +jq '.app_state.gov.params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_json > json.tmp && mv json.tmp $genesis_json + +jq "del(.app_state.interchain_accounts)" $genesis_json > json.tmp && mv json.tmp $genesis_json +interchain_accts=$(cat dockernet/config/ica_controller.json) +jq ".app_state += $interchain_accts" $genesis_json > json.tmp && mv json.tmp $genesis_json + +# hack since add-comsumer-section is built for dockernet +rm -rf ~/.stride-loca1 +cp -r ${STRIDE_HOME} ~/.stride-loca1 + +$STRIDED add-consumer-section 1 +jq '.app_state.ccvconsumer.params.unbonding_period = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_json > json.tmp && mv json.tmp $genesis_json + +rm -rf ~/.stride-loca1 + +echo "$STRIDE_VAL_MNEMONIC" | $STRIDED keys add val --recover --keyring-backend=test +$STRIDED add-genesis-account $($STRIDED keys show val -a) 100000000000${DENOM} + +echo "$STRIDE_ADMIN_MNEMONIC" | $STRIDED keys add admin --recover --keyring-backend=test +$STRIDED add-genesis-account $($STRIDED keys show admin -a) 100000000000${DENOM} + +$STRIDED start + + diff --git a/x/autopilot/types/genesis.pb.go b/x/autopilot/types/genesis.pb.go index 627d03b60a..9c643067be 100644 --- a/x/autopilot/types/genesis.pb.go +++ b/x/autopilot/types/genesis.pb.go @@ -88,8 +88,8 @@ var fileDescriptor_a7e087b21fd12e65 = []byte{ 0xbb, 0x93, 0xef, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x0d, 0xd7, 0xf5, 0x49, 0x4c, - 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x50, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x1e, 0x2b, 0xa8, + 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x48, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, + 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x76, 0x33, 0xbf, 0x1b, 0x17, 0x01, 0x00, 0x00, } diff --git a/x/autopilot/types/params.pb.go b/x/autopilot/types/params.pb.go index babd501701..21bee189ef 100644 --- a/x/autopilot/types/params.pb.go +++ b/x/autopilot/types/params.pb.go @@ -96,8 +96,8 @@ var fileDescriptor_b0b993e9f5195319 = []byte{ 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x0e, 0xd5, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xfa, - 0xa9, 0xcc, 0xd0, 0x50, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, - 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x71, 0x74, 0x98, 0x2d, 0xfa, 0x00, 0x00, 0x00, + 0xa9, 0xcc, 0xd0, 0x48, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, + 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x59, 0x0c, 0x9e, 0xfa, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/autopilot/types/query.pb.go b/x/autopilot/types/query.pb.go index e244cc61fa..389e950c61 100644 --- a/x/autopilot/types/query.pb.go +++ b/x/autopilot/types/query.pb.go @@ -136,9 +136,9 @@ var fileDescriptor_1dd160550c308365 = []byte{ 0xfd, 0x60, 0xb0, 0x72, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0x1c, 0x5e, 0x77, 0xf2, 0x3d, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xe3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, - 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x1a, 0xea, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x25, 0xbc, - 0xda, 0x46, 0xcf, 0x01, 0x00, 0x00, + 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x1a, 0xe9, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x91, + 0x4e, 0xf5, 0xcf, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/claim.pb.go b/x/claim/types/claim.pb.go index 83cd6b7792..1b611aee3c 100644 --- a/x/claim/types/claim.pb.go +++ b/x/claim/types/claim.pb.go @@ -127,32 +127,32 @@ func init() { func init() { proto.RegisterFile("stride/claim/claim.proto", fileDescriptor_b4747d999b9dc0da) } var fileDescriptor_b4747d999b9dc0da = []byte{ - // 392 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x0e, 0xd2, 0x30, - 0x00, 0xc6, 0x37, 0x20, 0xa8, 0x45, 0x05, 0xab, 0x86, 0x81, 0x71, 0x23, 0x3b, 0x18, 0x62, 0x64, - 0x0b, 0xf1, 0xe6, 0xc5, 0x0c, 0x18, 0x66, 0x71, 0xd1, 0x38, 0x30, 0x26, 0x5e, 0x96, 0xb1, 0xd6, - 0xd1, 0xc8, 0xe8, 0xb2, 0xd6, 0x3f, 0xbc, 0x81, 0x47, 0xdf, 0xc1, 0x9b, 0x4f, 0xc2, 0x91, 0xa3, - 0xf1, 0xb0, 0x18, 0x78, 0x83, 0x3d, 0x81, 0xa1, 0x2b, 0xc6, 0xe8, 0x65, 0x5b, 0x7e, 0xbf, 0x2f, - 0x5f, 0xd6, 0x7e, 0x40, 0x63, 0x3c, 0x27, 0x08, 0xdb, 0xf1, 0x26, 0x22, 0x69, 0xf5, 0xb4, 0xb2, - 0x9c, 0x72, 0x0a, 0xaf, 0x57, 0xc6, 0x12, 0xac, 0x7f, 0x27, 0xa1, 0x09, 0x15, 0xc2, 0x3e, 0x7f, - 0x55, 0x19, 0xf3, 0x7b, 0x0d, 0xb4, 0xa6, 0x67, 0x1f, 0xe0, 0x98, 0xe6, 0x08, 0xfa, 0x00, 0x46, - 0x24, 0x47, 0x39, 0xcd, 0x42, 0x82, 0xf0, 0x96, 0x93, 0x77, 0x04, 0xe7, 0x9a, 0x3a, 0x50, 0x87, - 0xd7, 0x26, 0xf7, 0xcb, 0xc2, 0xe8, 0xed, 0xa2, 0x74, 0xf3, 0xc4, 0xfc, 0x3f, 0x63, 0x06, 0xb7, - 0x24, 0xf4, 0xfe, 0x30, 0xf8, 0x08, 0x5c, 0x89, 0x10, 0xca, 0x31, 0x63, 0x5a, 0x4d, 0x54, 0xc0, - 0xb2, 0x30, 0x6e, 0xca, 0x8a, 0x4a, 0x98, 0xc1, 0x25, 0x02, 0xdf, 0x80, 0xe6, 0x27, 0x4c, 0x92, - 0x35, 0xd7, 0xea, 0x22, 0xfc, 0x74, 0x5f, 0x18, 0xca, 0xcf, 0xc2, 0x78, 0x90, 0x10, 0xbe, 0xfe, - 0xb0, 0xb2, 0x62, 0x9a, 0xda, 0x31, 0x65, 0x29, 0x65, 0xf2, 0x35, 0x62, 0xe8, 0xbd, 0xcd, 0x77, - 0x19, 0x66, 0xd6, 0x0c, 0xc7, 0x65, 0x61, 0xdc, 0xa8, 0xaa, 0xab, 0x16, 0x33, 0x90, 0x75, 0x70, - 0x0e, 0x3a, 0x51, 0xcc, 0x09, 0xdd, 0x86, 0x31, 0x4d, 0xb3, 0x0d, 0xe6, 0x18, 0x69, 0x8d, 0x41, - 0x7d, 0x78, 0x75, 0x72, 0xaf, 0x2c, 0x8c, 0xae, 0xfc, 0x9f, 0x7f, 0x12, 0x66, 0xd0, 0xae, 0xd0, - 0xf4, 0x42, 0x1e, 0x2e, 0x40, 0xd3, 0x11, 0x08, 0xb6, 0x41, 0xcb, 0x99, 0x2e, 0xbd, 0x97, 0x2f, - 0xc2, 0x79, 0xe0, 0xba, 0x1d, 0x05, 0x76, 0xc1, 0x6d, 0x09, 0x7c, 0xef, 0xd5, 0x6b, 0x6f, 0x16, - 0x2e, 0x96, 0xce, 0x73, 0xb7, 0xa3, 0xc2, 0x1e, 0xb8, 0x2b, 0xc5, 0xcc, 0xf5, 0xdd, 0x67, 0xce, - 0xd2, 0x95, 0xaa, 0xd6, 0x6f, 0x7c, 0xf9, 0xa6, 0x2b, 0x13, 0x6f, 0x7f, 0xd4, 0xd5, 0xc3, 0x51, - 0x57, 0x7f, 0x1d, 0x75, 0xf5, 0xeb, 0x49, 0x57, 0x0e, 0x27, 0x5d, 0xf9, 0x71, 0xd2, 0x95, 0xb7, - 0xf6, 0x5f, 0xe7, 0x5e, 0x88, 0x29, 0x47, 0x7e, 0xb4, 0x62, 0xb6, 0x1c, 0xfc, 0xe3, 0x78, 0x6c, - 0x7f, 0x96, 0xb3, 0x8b, 0x4b, 0x58, 0x35, 0xc5, 0xa6, 0x8f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, - 0x0a, 0xe0, 0xaf, 0x13, 0x13, 0x02, 0x00, 0x00, + // 394 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0xce, 0xd2, 0x40, + 0x00, 0xc5, 0x5b, 0x20, 0xa8, 0x83, 0x0a, 0x8e, 0x1a, 0x0a, 0xc6, 0x96, 0x74, 0x61, 0x88, 0x91, + 0x36, 0xea, 0xce, 0x8d, 0x29, 0x50, 0x4c, 0x63, 0xa3, 0xb1, 0x60, 0x4c, 0xdc, 0x34, 0xa5, 0x33, + 0x96, 0x89, 0x94, 0x69, 0x3a, 0xe3, 0x1f, 0x6e, 0xe0, 0xd2, 0x3b, 0xb8, 0xf3, 0x24, 0x2c, 0x59, + 0x1a, 0x17, 0x8d, 0x81, 0x1b, 0xf4, 0x04, 0x86, 0xe9, 0x60, 0xcc, 0xf7, 0x6d, 0xda, 0xe6, 0xf7, + 0x7b, 0x79, 0xe9, 0xcc, 0x03, 0x1a, 0xe3, 0x39, 0x41, 0xd8, 0x8e, 0xd7, 0x11, 0x49, 0xab, 0xa7, + 0x95, 0xe5, 0x94, 0x53, 0x78, 0xbd, 0x32, 0x96, 0x60, 0xfd, 0x3b, 0x09, 0x4d, 0xa8, 0x10, 0xf6, + 0xe9, 0xab, 0xca, 0x98, 0x3f, 0x6b, 0xa0, 0x35, 0x39, 0xf9, 0x00, 0xc7, 0x34, 0x47, 0xd0, 0x07, + 0x30, 0x22, 0x39, 0xca, 0x69, 0x16, 0x12, 0x84, 0x37, 0x9c, 0x7c, 0x20, 0x38, 0xd7, 0xd4, 0x81, + 0x3a, 0xbc, 0x36, 0xbe, 0x5f, 0x16, 0x46, 0x6f, 0x1b, 0xa5, 0xeb, 0x67, 0xe6, 0xe5, 0x8c, 0x19, + 0xdc, 0x92, 0xd0, 0xfb, 0xc7, 0xe0, 0x23, 0x70, 0x25, 0x42, 0x28, 0xc7, 0x8c, 0x69, 0x35, 0x51, + 0x01, 0xcb, 0xc2, 0xb8, 0x29, 0x2b, 0x2a, 0x61, 0x06, 0xe7, 0x08, 0x7c, 0x07, 0x9a, 0x5f, 0x30, + 0x49, 0x56, 0x5c, 0xab, 0x8b, 0xf0, 0xf3, 0x5d, 0x61, 0x28, 0xbf, 0x0b, 0xe3, 0x41, 0x42, 0xf8, + 0xea, 0xd3, 0xd2, 0x8a, 0x69, 0x6a, 0xc7, 0x94, 0xa5, 0x94, 0xc9, 0xd7, 0x88, 0xa1, 0x8f, 0x36, + 0xdf, 0x66, 0x98, 0x59, 0x53, 0x1c, 0x97, 0x85, 0x71, 0xa3, 0xaa, 0xae, 0x5a, 0xcc, 0x40, 0xd6, + 0xc1, 0x19, 0xe8, 0x44, 0x31, 0x27, 0x74, 0x13, 0xc6, 0x34, 0xcd, 0xd6, 0x98, 0x63, 0xa4, 0x35, + 0x06, 0xf5, 0xe1, 0xd5, 0xf1, 0xbd, 0xb2, 0x30, 0xba, 0xf2, 0x7f, 0x2e, 0x24, 0xcc, 0xa0, 0x5d, + 0xa1, 0xc9, 0x99, 0x3c, 0x9c, 0x83, 0xa6, 0x23, 0x10, 0x6c, 0x83, 0x96, 0x33, 0x59, 0x78, 0xaf, + 0x5f, 0x85, 0xb3, 0xc0, 0x75, 0x3b, 0x0a, 0xec, 0x82, 0xdb, 0x12, 0xf8, 0xde, 0x9b, 0xb7, 0xde, + 0x34, 0x9c, 0x2f, 0x9c, 0x97, 0x6e, 0x47, 0x85, 0x3d, 0x70, 0x57, 0x8a, 0xa9, 0xeb, 0xbb, 0x2f, + 0x9c, 0x85, 0x2b, 0x55, 0xad, 0xdf, 0xf8, 0xf6, 0x43, 0x57, 0xc6, 0xde, 0xee, 0xa0, 0xab, 0xfb, + 0x83, 0xae, 0xfe, 0x39, 0xe8, 0xea, 0xf7, 0xa3, 0xae, 0xec, 0x8f, 0xba, 0xf2, 0xeb, 0xa8, 0x2b, + 0xef, 0xed, 0xff, 0xce, 0x3d, 0x17, 0x53, 0x8e, 0xfc, 0x68, 0xc9, 0x6c, 0x39, 0xf8, 0xe7, 0xc7, + 0x4f, 0xec, 0xaf, 0x72, 0x76, 0x71, 0x09, 0xcb, 0xa6, 0xd8, 0xf4, 0xe9, 0xdf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x37, 0xd9, 0x4a, 0x65, 0x13, 0x02, 0x00, 0x00, } func (m *ClaimRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/genesis.pb.go b/x/claim/types/genesis.pb.go index f3762870c5..045b8a70ba 100644 --- a/x/claim/types/genesis.pb.go +++ b/x/claim/types/genesis.pb.go @@ -100,9 +100,9 @@ var fileDescriptor_ecf5648202726596 = []byte{ 0xa1, 0xb4, 0xd8, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x56, 0xe9, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xa8, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x27, 0x04, - 0x2b, 0xe7, 0x7c, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xa4, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x3d, + 0xce, 0x91, 0x7c, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/params.pb.go b/x/claim/types/params.pb.go index ee8273f5e2..b5511df0e3 100644 --- a/x/claim/types/params.pb.go +++ b/x/claim/types/params.pb.go @@ -183,36 +183,36 @@ var fileDescriptor_dd7ac871d3875dc3 = []byte{ // 515 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x6d, 0xd8, 0x68, 0x8b, 0x3b, 0xc1, 0x66, 0x40, 0xa4, 0x95, 0x48, 0xaa, 0x48, 0xa0, 0x4a, - 0xb0, 0x58, 0x1d, 0x37, 0x38, 0xb5, 0x1a, 0x48, 0x95, 0x76, 0x40, 0xe9, 0x4e, 0x5c, 0x22, 0xa7, + 0xb0, 0x58, 0x2b, 0x37, 0x38, 0xb5, 0x1a, 0x48, 0x95, 0x76, 0x40, 0xe9, 0x4e, 0x5c, 0x22, 0xa7, 0x76, 0x3b, 0x8b, 0x26, 0x8e, 0x6c, 0x17, 0xd1, 0x5f, 0xc0, 0x75, 0x47, 0x7e, 0x0f, 0xa7, 0x1d, 0x77, 0x44, 0x1c, 0x02, 0x6a, 0x6f, 0x1c, 0xf7, 0x0b, 0x90, 0x1d, 0xa7, 0x2b, 0xeb, 0xa9, 0xf5, 0x7b, 0xef, 0xfb, 0xde, 0xfb, 0xfc, 0xc5, 0xa0, 0x2d, 0x95, 0x60, 0x84, 0xa2, 0xc9, 0x1c, 0xb3, 0x14, 0xe5, 0x58, 0xe0, 0x54, 0x86, 0xb9, 0xe0, 0x8a, 0xc3, 0x83, 0x92, 0x0a, 0x0d, 0xd5, 0x79, 0x32, 0xe3, 0x33, 0x6e, 0x08, 0xa4, 0xff, 0x95, 0x9a, 0x8e, 0x37, 0xe3, 0x7c, 0x36, 0xa7, 0xc8, 0x9c, 0x92, 0xc5, 0x14, 0x91, 0x85, 0xc0, 0x8a, 0xf1, 0xcc, 0xf2, 0xfe, 0x5d, 0x5e, 0xb1, 0x94, - 0x4a, 0x85, 0xd3, 0xbc, 0x14, 0x04, 0xef, 0x40, 0xfd, 0xa3, 0x31, 0x85, 0x7d, 0xd0, 0xc4, 0x4c, - 0x10, 0xc1, 0x73, 0xe9, 0x3a, 0xdd, 0xbd, 0x5e, 0xeb, 0xe4, 0x69, 0xb8, 0x9d, 0x20, 0x1c, 0x94, + 0x4a, 0x85, 0xd3, 0xbc, 0x14, 0x04, 0xef, 0x40, 0xfd, 0xa3, 0x31, 0x85, 0x27, 0xa0, 0x89, 0x99, + 0x20, 0x82, 0xe7, 0xd2, 0x75, 0xba, 0x7b, 0xbd, 0x56, 0xff, 0x69, 0xb8, 0x9d, 0x20, 0x1c, 0x94, 0x6c, 0xb4, 0x91, 0x05, 0x3f, 0xf6, 0x41, 0xc3, 0xa2, 0xf0, 0x0c, 0x40, 0x8b, 0xc7, 0x8c, 0xd0, 0x4c, 0xb1, 0x29, 0xa3, 0xc2, 0x75, 0xba, 0x4e, 0xef, 0xc1, 0xf0, 0xf9, 0x4d, 0xe1, 0xb7, 0x97, 0x38, 0x9d, 0xbf, 0x0d, 0x76, 0x35, 0x41, 0x74, 0x64, 0xc1, 0xd1, 0x06, 0x83, 0x6d, 0xd0, 0x9c, 0x5c, 0x60, 0x96, 0xc5, 0x8c, 0xb8, 0x0d, 0xdd, 0x23, 0x6a, 0x98, 0xf3, 0x88, 0x40, 0x7e, 0x6b, - 0x24, 0x15, 0x16, 0x2a, 0xd6, 0x23, 0xb9, 0xf7, 0xba, 0x4e, 0xaf, 0x75, 0xd2, 0x09, 0xcb, 0x79, - 0xc3, 0x6a, 0xde, 0xf0, 0xbc, 0x9a, 0x77, 0xf8, 0xe2, 0xaa, 0xf0, 0x6b, 0xbb, 0x41, 0x6e, 0x7b, - 0x04, 0x97, 0xbf, 0x7d, 0x27, 0x3a, 0xb4, 0xc4, 0x58, 0xe3, 0xba, 0x1a, 0x7e, 0x73, 0x40, 0x05, - 0xc6, 0xd5, 0xf5, 0xba, 0x7b, 0xc6, 0xaf, 0xbd, 0xe3, 0x77, 0x6a, 0x05, 0xc3, 0x81, 0xb6, 0xfb, - 0x5b, 0xf8, 0x9d, 0xbb, 0xa5, 0xaf, 0x79, 0xca, 0x14, 0x4d, 0x73, 0xb5, 0xbc, 0x29, 0xfc, 0x67, - 0xff, 0x87, 0xa9, 0x34, 0xc1, 0x77, 0x1d, 0xe5, 0x91, 0x85, 0xab, 0x9e, 0xd0, 0x07, 0x2d, 0xb3, - 0x8a, 0x98, 0xd0, 0x8c, 0xa7, 0xee, 0xbe, 0xb9, 0x18, 0x60, 0xa0, 0x53, 0x8d, 0x40, 0x04, 0x1e, - 0x13, 0xa6, 0x97, 0x96, 0x2c, 0x14, 0x17, 0x31, 0x26, 0x44, 0x50, 0x29, 0xdd, 0xfb, 0x46, 0x08, - 0xb7, 0xa8, 0x41, 0xc9, 0xc0, 0x73, 0xf0, 0xd0, 0x94, 0x53, 0x12, 0x4b, 0x1e, 0x4f, 0xb1, 0x70, - 0xeb, 0x66, 0x63, 0xa1, 0x4e, 0xff, 0xab, 0xf0, 0x5f, 0xce, 0x98, 0xba, 0x58, 0x24, 0xe1, 0x84, - 0xa7, 0x68, 0xc2, 0x65, 0xca, 0xa5, 0xfd, 0x39, 0x96, 0xe4, 0x33, 0x52, 0xcb, 0x9c, 0xca, 0x70, - 0x94, 0xa9, 0xe8, 0xc0, 0x76, 0x19, 0xf3, 0x0f, 0x58, 0xc0, 0x57, 0xe0, 0x08, 0x2f, 0x14, 0xcf, - 0xd9, 0x9c, 0xab, 0x98, 0x66, 0x38, 0x99, 0x53, 0xe2, 0x36, 0xbb, 0x4e, 0xaf, 0x19, 0x1d, 0x6e, - 0x88, 0xf7, 0x25, 0x3e, 0x1c, 0x5d, 0xad, 0x3c, 0xe7, 0x7a, 0xe5, 0x39, 0x7f, 0x56, 0x9e, 0x73, - 0xb9, 0xf6, 0x6a, 0xd7, 0x6b, 0xaf, 0xf6, 0x73, 0xed, 0xd5, 0x3e, 0xa1, 0x2d, 0xf3, 0xb1, 0xf9, - 0x12, 0x8f, 0xcf, 0x70, 0x22, 0x91, 0x7d, 0x32, 0x5f, 0xfa, 0x7d, 0xf4, 0xd5, 0x3e, 0x1c, 0x93, - 0x24, 0xa9, 0x9b, 0x35, 0xbc, 0xf9, 0x17, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x72, 0x4e, 0x31, 0x55, + 0x24, 0x15, 0x16, 0x2a, 0xd6, 0x23, 0xb9, 0xf7, 0xba, 0x4e, 0xaf, 0xd5, 0xef, 0x84, 0xe5, 0xbc, + 0x61, 0x35, 0x6f, 0x78, 0x5e, 0xcd, 0x3b, 0x7c, 0x71, 0x55, 0xf8, 0xb5, 0xdd, 0x20, 0xb7, 0x3d, + 0x82, 0xcb, 0xdf, 0xbe, 0x13, 0x1d, 0x5a, 0x62, 0xac, 0x71, 0x5d, 0x0d, 0xbf, 0x39, 0xa0, 0x02, + 0xe3, 0xea, 0x7a, 0xdd, 0x3d, 0xe3, 0xd7, 0xde, 0xf1, 0x3b, 0xb5, 0x82, 0xe1, 0x40, 0xdb, 0xfd, + 0x2d, 0xfc, 0xce, 0xdd, 0xd2, 0xd7, 0x3c, 0x65, 0x8a, 0xa6, 0xb9, 0x5a, 0xde, 0x14, 0xfe, 0xb3, + 0xff, 0xc3, 0x54, 0x9a, 0xe0, 0xbb, 0x8e, 0xf2, 0xc8, 0xc2, 0x55, 0x4f, 0xe8, 0x83, 0x96, 0x59, + 0x45, 0x4c, 0x68, 0xc6, 0x53, 0x77, 0xdf, 0x5c, 0x0c, 0x30, 0xd0, 0xa9, 0x46, 0x20, 0x02, 0x8f, + 0x09, 0xd3, 0x4b, 0x4b, 0x16, 0x8a, 0x8b, 0x18, 0x13, 0x22, 0xa8, 0x94, 0xee, 0x7d, 0x23, 0x84, + 0x5b, 0xd4, 0xa0, 0x64, 0xe0, 0x39, 0x78, 0x68, 0xca, 0x29, 0x89, 0x25, 0x8f, 0xa7, 0x58, 0xb8, + 0x75, 0xb3, 0xb1, 0x50, 0xa7, 0xff, 0x55, 0xf8, 0x2f, 0x67, 0x4c, 0x5d, 0x2c, 0x92, 0x70, 0xc2, + 0x53, 0x34, 0xe1, 0x32, 0xe5, 0xd2, 0xfe, 0x1c, 0x4b, 0xf2, 0x19, 0xa9, 0x65, 0x4e, 0x65, 0x38, + 0xca, 0x54, 0x74, 0x60, 0xbb, 0x8c, 0xf9, 0x07, 0x2c, 0xe0, 0x2b, 0x70, 0x84, 0x17, 0x8a, 0xe7, + 0x6c, 0xce, 0x55, 0x4c, 0x33, 0x9c, 0xcc, 0x29, 0x71, 0x9b, 0x5d, 0xa7, 0xd7, 0x8c, 0x0e, 0x37, + 0xc4, 0xfb, 0x12, 0x1f, 0x8e, 0xae, 0x56, 0x9e, 0x73, 0xbd, 0xf2, 0x9c, 0x3f, 0x2b, 0xcf, 0xb9, + 0x5c, 0x7b, 0xb5, 0xeb, 0xb5, 0x57, 0xfb, 0xb9, 0xf6, 0x6a, 0x9f, 0xd0, 0x96, 0xf9, 0xd8, 0x7c, + 0x89, 0xc7, 0x67, 0x38, 0x91, 0xc8, 0x3e, 0x99, 0x2f, 0x27, 0x7d, 0xf4, 0xd5, 0x3e, 0x1c, 0x93, + 0x24, 0xa9, 0x9b, 0x35, 0xbc, 0xf9, 0x17, 0x00, 0x00, 0xff, 0xff, 0x60, 0x4b, 0xab, 0x47, 0x55, 0x03, 0x00, 0x00, } diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index f8cb6ad222..358218194b 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -926,82 +926,82 @@ func init() { proto.RegisterFile("stride/claim/query.proto", fileDescriptor_baa8 var fileDescriptor_baa87682a02846df = []byte{ // 1225 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x26, 0xa9, 0xbd, 0x69, 0x6c, 0x33, 0x90, - 0xc4, 0x48, 0xcd, 0x2e, 0x49, 0x11, 0x07, 0x2e, 0x80, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, - 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xd9, 0x8a, 0xa8, 0xaa, 0x10, + 0x18, 0xce, 0x24, 0x6d, 0xd2, 0x4e, 0x12, 0x47, 0x99, 0x7c, 0xd4, 0xde, 0x34, 0xb6, 0x19, 0x48, + 0x62, 0xa4, 0x66, 0x97, 0xb8, 0x88, 0x03, 0x17, 0x60, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, + 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xdd, 0x8a, 0xa8, 0xaa, 0x10, 0x70, 0xe0, 0x06, 0x91, 0x80, 0x1f, 0x01, 0x12, 0x07, 0x7e, 0x02, 0x07, 0xa4, 0x1e, 0x2b, 0x71, 0xe1, 0x00, 0x29, 0x4a, 0xf8, 0x05, 0x91, 0xe0, 0x8c, 0x76, 0xe6, 0x5d, 0x67, 0xd7, 0x59, 0xd7, - 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0x64, - 0xe8, 0xb9, 0xdc, 0x72, 0xda, 0xcc, 0xeb, 0x58, 0xbb, 0x11, 0x0f, 0xf7, 0xcc, 0x6e, 0x18, 0xc8, - 0x80, 0x4c, 0x6a, 0x89, 0xa9, 0x24, 0xc6, 0x6c, 0x2b, 0x68, 0x05, 0x4a, 0x60, 0xc5, 0xff, 0x69, - 0x1d, 0xe3, 0x7a, 0x2b, 0x08, 0x5a, 0x6d, 0x6e, 0xb1, 0xae, 0x67, 0x31, 0xdf, 0x0f, 0x24, 0x93, - 0x5e, 0xe0, 0x0b, 0x90, 0x96, 0x9d, 0x40, 0x74, 0x02, 0x61, 0x35, 0x99, 0xe0, 0xd6, 0xbd, 0xb5, - 0x26, 0x97, 0x6c, 0xcd, 0x72, 0x02, 0xcf, 0x07, 0x79, 0x36, 0xb6, 0xfa, 0x0b, 0x92, 0x52, 0x46, - 0xd2, 0x65, 0x21, 0xeb, 0x24, 0x4e, 0xaf, 0x83, 0xe8, 0x1e, 0x17, 0xd2, 0xf3, 0x5b, 0xc9, 0x2f, - 0x48, 0x2b, 0x00, 0x48, 0x7d, 0x35, 0xa3, 0x1d, 0x4b, 0x7a, 0x1d, 0x2e, 0x24, 0xeb, 0x74, 0xb5, - 0x02, 0xdd, 0xc6, 0x13, 0x1b, 0xb1, 0xd3, 0x2d, 0xc9, 0x64, 0x24, 0xc8, 0x2a, 0x26, 0xcc, 0x0b, - 0xdd, 0x30, 0xe8, 0x36, 0x3c, 0x97, 0xfb, 0xd2, 0xdb, 0xf1, 0x78, 0x58, 0x44, 0x55, 0x54, 0xbb, - 0x62, 0xcf, 0x80, 0x64, 0xb3, 0x27, 0x20, 0x45, 0x7c, 0x49, 0x41, 0xe2, 0x6e, 0x71, 0xb4, 0x8a, - 0x6a, 0x97, 0xed, 0xe4, 0x93, 0xbe, 0x85, 0xaf, 0xbd, 0x1b, 0x17, 0x2f, 0xe5, 0xdc, 0xe6, 0xbb, - 0x11, 0x17, 0x92, 0xdc, 0xc0, 0x97, 0x98, 0xeb, 0x86, 0x5c, 0x08, 0xed, 0xb8, 0x4e, 0x8e, 0x0f, - 0x2a, 0x85, 0x3d, 0xd6, 0x69, 0xbf, 0x4c, 0x41, 0x40, 0xed, 0x44, 0x85, 0x46, 0xb8, 0x78, 0xda, - 0x91, 0xe8, 0x06, 0xbe, 0xe0, 0xe4, 0x7d, 0x3c, 0xa9, 0xe2, 0x35, 0x84, 0x5a, 0x2f, 0xa2, 0xea, - 0x58, 0x6d, 0x62, 0xbd, 0x64, 0xa6, 0x3b, 0x65, 0xa6, 0x0c, 0xeb, 0x0b, 0x0f, 0x0f, 0x2a, 0x23, - 0xc7, 0x07, 0x95, 0xab, 0x3a, 0x5a, 0xda, 0x98, 0xda, 0x13, 0xce, 0x89, 0x26, 0xfd, 0x79, 0x14, - 0x4f, 0x29, 0xcb, 0x77, 0xb8, 0x64, 0x2e, 0x93, 0xec, 0xbc, 0xa5, 0x79, 0x16, 0x4f, 0x39, 0x51, - 0x18, 0x72, 0x5f, 0x36, 0xc2, 0x20, 0xf2, 0x75, 0x81, 0xae, 0xd8, 0x93, 0xb0, 0x68, 0xc7, 0x6b, - 0x24, 0xc4, 0x57, 0x33, 0x4a, 0x31, 0x96, 0x50, 0x16, 0xc7, 0xaa, 0xa8, 0x36, 0xb1, 0x6e, 0x98, - 0xba, 0x79, 0x66, 0xd2, 0x3c, 0xf3, 0x6e, 0xd2, 0xbc, 0xfa, 0x32, 0x24, 0x62, 0x40, 0x22, 0xa7, - 0x9d, 0xd0, 0xfd, 0xc7, 0x15, 0x64, 0xcf, 0xa4, 0xc3, 0x6d, 0xc5, 0xeb, 0xa4, 0x8d, 0x67, 0xb2, - 0xea, 0xdc, 0x77, 0x8b, 0x17, 0x86, 0x46, 0x7c, 0x0e, 0x22, 0x16, 0xf3, 0x22, 0x72, 0xdf, 0xd5, - 0xf1, 0xa6, 0xd3, 0xf1, 0xde, 0xf0, 0x5d, 0xba, 0x80, 0x4b, 0x27, 0xed, 0x4b, 0x6a, 0x09, 0x93, - 0x40, 0x3f, 0xc1, 0x46, 0x9e, 0x10, 0xba, 0xcb, 0x70, 0x41, 0x37, 0xa8, 0x03, 0x12, 0xe8, 0xef, - 0x42, 0x4e, 0x7f, 0x13, 0xe3, 0xfa, 0x22, 0xc0, 0x9c, 0x4b, 0x77, 0x38, 0x71, 0x40, 0xed, 0x29, - 0x27, 0xad, 0x4d, 0x23, 0xbc, 0xa4, 0x00, 0xbc, 0xee, 0xc5, 0x2e, 0x9b, 0x91, 0x0c, 0xc2, 0xd7, - 0x1c, 0x27, 0x88, 0x7c, 0x59, 0x67, 0x6d, 0xe6, 0x3b, 0x3c, 0x99, 0xd9, 0xdb, 0x83, 0x9b, 0x5f, - 0x5f, 0x3c, 0x3e, 0xa8, 0x94, 0x60, 0x7c, 0x4f, 0xe9, 0xd0, 0x9c, 0xd9, 0xa0, 0xbf, 0x21, 0xbc, - 0x3c, 0x2c, 0x2e, 0x14, 0xe1, 0x47, 0x84, 0x17, 0xdc, 0x13, 0xad, 0x06, 0xd3, 0x6a, 0x8d, 0xa6, - 0xd6, 0xeb, 0x8d, 0xbc, 0xa6, 0x16, 0x33, 0xa6, 0x16, 0x13, 0xa8, 0xc5, 0xdc, 0x08, 0x3c, 0xbf, - 0xbe, 0x0d, 0x05, 0xa1, 0x1a, 0xe1, 0x13, 0x7c, 0xd1, 0xef, 0x1f, 0x57, 0x6a, 0x2d, 0x4f, 0x7e, - 0x18, 0x35, 0x4d, 0x27, 0xe8, 0x58, 0xc0, 0x56, 0xfa, 0x67, 0x55, 0xb8, 0x1f, 0x59, 0x72, 0xaf, - 0xcb, 0x85, 0x72, 0x2b, 0xec, 0x92, 0x3b, 0x08, 0x3b, 0x9d, 0xc5, 0x44, 0x65, 0x77, 0x47, 0xf1, - 0x54, 0xd2, 0xec, 0x4d, 0x7c, 0x35, 0xb3, 0x0a, 0x09, 0xae, 0xe3, 0x71, 0xcd, 0x67, 0xaa, 0x9a, - 0x13, 0xeb, 0xb3, 0xd9, 0xee, 0x6a, 0xed, 0xfa, 0x85, 0x38, 0x0b, 0x1b, 0x34, 0xe9, 0xb7, 0x28, - 0xcd, 0x2e, 0x36, 0x77, 0x82, 0xd0, 0xfd, 0x4f, 0x3a, 0x95, 0xe6, 0xaa, 0xd1, 0x73, 0x72, 0x55, - 0x02, 0xab, 0x9f, 0xab, 0x42, 0xb5, 0x0e, 0xd9, 0xe6, 0x71, 0x95, 0x36, 0xcc, 0xe7, 0x2a, 0x6d, - 0x9c, 0x70, 0x95, 0xd6, 0xa4, 0xbf, 0x23, 0x5c, 0x3e, 0x89, 0xcb, 0x9a, 0x6d, 0xfe, 0x66, 0xdc, - 0x93, 0xf8, 0xe8, 0x79, 0x0a, 0xaa, 0x42, 0x5e, 0xc1, 0xe3, 0x4c, 0x81, 0x51, 0xbc, 0x56, 0xe8, - 0xef, 0xb0, 0x06, 0x5a, 0x9f, 0x39, 0x3e, 0xa8, 0x4c, 0x81, 0x0b, 0xb5, 0x42, 0x6d, 0x30, 0xa3, - 0xdf, 0x20, 0x5c, 0x19, 0x98, 0x1f, 0x94, 0x77, 0x17, 0x5f, 0x8c, 0x4f, 0x52, 0x31, 0x7c, 0x43, - 0xbc, 0x0a, 0x75, 0x9d, 0x84, 0xba, 0xc6, 0x56, 0xe7, 0x1b, 0x7d, 0x1d, 0x89, 0xfe, 0x84, 0x80, - 0xbe, 0xee, 0x06, 0x92, 0xb5, 0x7b, 0xd8, 0x9e, 0x86, 0x92, 0xaf, 0xe0, 0x69, 0xcf, 0x77, 0xda, - 0x91, 0xcb, 0x1b, 0xc9, 0xf9, 0x3c, 0xa6, 0xce, 0xe7, 0x02, 0x2c, 0x6f, 0xc0, 0x31, 0xbd, 0x8f, - 0xf0, 0x42, 0x6e, 0x0e, 0xff, 0x5f, 0x59, 0x6f, 0xc1, 0x26, 0x7a, 0x4f, 0xf0, 0x70, 0x5b, 0x5f, - 0x66, 0xfe, 0xe5, 0xd5, 0xe1, 0x6f, 0x04, 0x87, 0x4f, 0xd6, 0x15, 0xa4, 0xf6, 0x25, 0xc2, 0xd3, - 0xa2, 0xcb, 0x7d, 0x37, 0x4e, 0xb8, 0xa1, 0xb3, 0x1c, 0x1b, 0x96, 0xe5, 0xdb, 0x90, 0xe5, 0xbc, - 0x8e, 0xd9, 0x67, 0x7f, 0xbe, 0x7c, 0x0b, 0x3d, 0x6b, 0xf5, 0x4d, 0x6e, 0xe1, 0x4b, 0x5d, 0x1e, - 0x7a, 0x81, 0x9b, 0x54, 0x7b, 0x3e, 0xd9, 0x28, 0xc9, 0x9d, 0xee, 0x8e, 0x12, 0xd7, 0xe7, 0x01, - 0x04, 0x24, 0x0e, 0x46, 0xd4, 0x4e, 0xcc, 0xd7, 0xff, 0xba, 0x8c, 0x2f, 0xaa, 0xc4, 0xc9, 0x0f, - 0x08, 0x97, 0x06, 0x1e, 0x32, 0xe4, 0x66, 0x76, 0x27, 0x9e, 0xe9, 0x28, 0x34, 0x5e, 0x3c, 0x9f, - 0x91, 0xae, 0x36, 0x5d, 0xfa, 0xec, 0x97, 0x3f, 0xbf, 0x1e, 0xad, 0x90, 0x45, 0xb8, 0xc3, 0x76, - 0x02, 0x37, 0x6a, 0xf3, 0xfe, 0x23, 0x88, 0xb8, 0x78, 0x5c, 0x33, 0x3e, 0xa9, 0xe6, 0x84, 0xc9, - 0x1c, 0x28, 0xc6, 0x33, 0x4f, 0xd0, 0x80, 0xa8, 0x73, 0x2a, 0xea, 0x34, 0x99, 0xca, 0xdc, 0x9c, - 0xc9, 0xe7, 0x08, 0x6e, 0xbd, 0x9a, 0x40, 0xc9, 0x52, 0x8e, 0xa7, 0xd3, 0x47, 0x8b, 0xb1, 0x3c, - 0x4c, 0x6d, 0x40, 0xae, 0x69, 0xea, 0xb6, 0xee, 0xc3, 0x74, 0x3e, 0x20, 0xdf, 0x21, 0x4c, 0x4e, - 0x33, 0x1a, 0xb9, 0x31, 0x28, 0x4a, 0x1e, 0xb1, 0x1b, 0xab, 0x67, 0xd4, 0x06, 0x68, 0x2f, 0x29, - 0x68, 0x2f, 0x10, 0x33, 0x0d, 0x4d, 0x0d, 0xf0, 0x8e, 0xba, 0x10, 0xc4, 0xca, 0x27, 0x10, 0xad, - 0xfb, 0x7a, 0xe5, 0x01, 0xf9, 0x0a, 0xe1, 0x42, 0x96, 0x22, 0x48, 0x2d, 0x27, 0x72, 0x2e, 0x13, - 0x1a, 0xcf, 0x9f, 0x41, 0x13, 0xf0, 0xd5, 0x14, 0x3e, 0x4a, 0xaa, 0x80, 0x4f, 0xc6, 0x6a, 0x8d, - 0x1e, 0xca, 0x54, 0xf5, 0xbe, 0x40, 0x78, 0x32, 0xbd, 0xaf, 0x49, 0x5e, 0x77, 0x72, 0x38, 0xc4, - 0x58, 0x19, 0xaa, 0x07, 0x58, 0x96, 0x15, 0x96, 0x2a, 0x29, 0x03, 0x96, 0x48, 0xf0, 0xb0, 0x01, - 0x5b, 0x51, 0xa4, 0x90, 0xf4, 0xa6, 0x09, 0xde, 0x50, 0x03, 0xa7, 0x29, 0xf3, 0x0c, 0x1a, 0x3c, - 0x4d, 0xd9, 0x47, 0xce, 0x80, 0x69, 0xd2, 0x8f, 0x96, 0x14, 0x8a, 0x4f, 0x51, 0xff, 0x83, 0x65, - 0x65, 0x50, 0x80, 0xbe, 0x6b, 0xb8, 0x51, 0x1b, 0xae, 0x08, 0x58, 0x16, 0x15, 0x96, 0x6b, 0x64, - 0x2e, 0x83, 0x25, 0xb9, 0x5e, 0xd7, 0x37, 0x1f, 0x1e, 0x96, 0xd1, 0xa3, 0xc3, 0x32, 0xfa, 0xe3, - 0xb0, 0x8c, 0xf6, 0x8f, 0xca, 0x23, 0x8f, 0x8e, 0xca, 0x23, 0xbf, 0x1e, 0x95, 0x47, 0x3e, 0xb0, - 0x52, 0xac, 0xb8, 0xa5, 0x82, 0xad, 0xde, 0x66, 0x4d, 0x61, 0x25, 0x8f, 0xd7, 0xb5, 0x35, 0xeb, - 0xe3, 0xa4, 0xe5, 0x31, 0x45, 0x36, 0xc7, 0xd5, 0x13, 0xe4, 0xe6, 0x3f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x51, 0x3a, 0xaf, 0x1c, 0x90, 0x0f, 0x00, 0x00, + 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0xc2, + 0xc0, 0x75, 0xb8, 0x61, 0xb7, 0x99, 0xdb, 0x31, 0xf6, 0x22, 0x1e, 0xec, 0xeb, 0xdd, 0xc0, 0x0f, + 0x7d, 0x32, 0xa5, 0x24, 0xba, 0x94, 0x68, 0xf3, 0x2d, 0xbf, 0xe5, 0x4b, 0x81, 0x11, 0xff, 0xa7, + 0x74, 0xb4, 0xeb, 0x2d, 0xdf, 0x6f, 0xb5, 0xb9, 0xc1, 0xba, 0xae, 0xc1, 0x3c, 0xcf, 0x0f, 0x59, + 0xe8, 0xfa, 0x9e, 0x00, 0x69, 0xd9, 0xf6, 0x45, 0xc7, 0x17, 0x46, 0x93, 0x09, 0x6e, 0xdc, 0xdb, + 0x68, 0xf2, 0x90, 0x6d, 0x18, 0xb6, 0xef, 0x7a, 0x20, 0xcf, 0xc6, 0x96, 0x7f, 0x41, 0x52, 0xca, + 0x48, 0xba, 0x2c, 0x60, 0x9d, 0xc4, 0xe9, 0x75, 0x10, 0xdd, 0xe3, 0x22, 0x74, 0xbd, 0x56, 0xf2, + 0x0b, 0xd2, 0x0a, 0x00, 0x92, 0x5f, 0xcd, 0x68, 0xd7, 0x08, 0xdd, 0x0e, 0x17, 0x21, 0xeb, 0x74, + 0x95, 0x02, 0xdd, 0xc1, 0x93, 0x9b, 0xb1, 0xd3, 0xed, 0x90, 0x85, 0x91, 0x20, 0xeb, 0x98, 0x30, + 0x37, 0x70, 0x02, 0xbf, 0xdb, 0x70, 0x1d, 0xee, 0x85, 0xee, 0xae, 0xcb, 0x83, 0x22, 0xaa, 0xa2, + 0xda, 0x55, 0x6b, 0x16, 0x24, 0x5b, 0x3d, 0x01, 0x29, 0xe2, 0x09, 0x09, 0x89, 0x3b, 0xc5, 0xd1, + 0x2a, 0xaa, 0x5d, 0xb1, 0x92, 0x4f, 0xfa, 0x16, 0xbe, 0xf6, 0x6e, 0x5c, 0xbc, 0x94, 0x73, 0x8b, + 0xef, 0x45, 0x5c, 0x84, 0xe4, 0x06, 0x9e, 0x60, 0x8e, 0x13, 0x70, 0x21, 0x94, 0x63, 0x93, 0x9c, + 0x1c, 0x56, 0x0a, 0xfb, 0xac, 0xd3, 0x7e, 0x99, 0x82, 0x80, 0x5a, 0x89, 0x0a, 0x8d, 0x70, 0xf1, + 0xac, 0x23, 0xd1, 0xf5, 0x3d, 0xc1, 0xc9, 0xfb, 0x78, 0x4a, 0xc6, 0x6b, 0x08, 0xb9, 0x5e, 0x44, + 0xd5, 0xb1, 0xda, 0x64, 0xbd, 0xa4, 0xa7, 0x3b, 0xa5, 0xa7, 0x0c, 0xcd, 0xa5, 0x87, 0x87, 0x95, + 0x91, 0x93, 0xc3, 0xca, 0x9c, 0x8a, 0x96, 0x36, 0xa6, 0xd6, 0xa4, 0x7d, 0xaa, 0x49, 0x7f, 0x1e, + 0xc5, 0xd3, 0xd2, 0xf2, 0x1d, 0x1e, 0x32, 0x87, 0x85, 0xec, 0xa2, 0xa5, 0x79, 0x16, 0x4f, 0xdb, + 0x51, 0x10, 0x70, 0x2f, 0x6c, 0x04, 0x7e, 0xe4, 0xa9, 0x02, 0x5d, 0xb5, 0xa6, 0x60, 0xd1, 0x8a, + 0xd7, 0x48, 0x80, 0xe7, 0x32, 0x4a, 0x31, 0x96, 0x20, 0x2c, 0x8e, 0x55, 0x51, 0x6d, 0xb2, 0xae, + 0xe9, 0xaa, 0x79, 0x7a, 0xd2, 0x3c, 0xfd, 0x6e, 0xd2, 0x3c, 0x73, 0x15, 0x12, 0xd1, 0x20, 0x91, + 0xb3, 0x4e, 0xe8, 0xc1, 0xe3, 0x0a, 0xb2, 0x66, 0xd3, 0xe1, 0xb6, 0xe3, 0x75, 0xd2, 0xc6, 0xb3, + 0x59, 0x75, 0xee, 0x39, 0xc5, 0x4b, 0x43, 0x23, 0x3e, 0x07, 0x11, 0x8b, 0x79, 0x11, 0xb9, 0xe7, + 0xa8, 0x78, 0x33, 0xe9, 0x78, 0x6f, 0x78, 0x0e, 0x5d, 0xc2, 0xa5, 0xd3, 0xf6, 0x25, 0xb5, 0x84, + 0x49, 0xa0, 0x9f, 0x60, 0x2d, 0x4f, 0x08, 0xdd, 0x65, 0xb8, 0xa0, 0x1a, 0xd4, 0x01, 0x09, 0xf4, + 0x77, 0x29, 0xa7, 0xbf, 0x89, 0xb1, 0xb9, 0x0c, 0x30, 0x17, 0xd2, 0x1d, 0x4e, 0x1c, 0x50, 0x6b, + 0xda, 0x4e, 0x6b, 0xd3, 0x08, 0xaf, 0x48, 0x00, 0xaf, 0xbb, 0xb1, 0xcb, 0x66, 0x14, 0xfa, 0xc1, + 0x6b, 0xb6, 0xed, 0x47, 0x5e, 0x68, 0xb2, 0x36, 0xf3, 0x6c, 0x9e, 0xcc, 0xec, 0xed, 0xc1, 0xcd, + 0x37, 0x97, 0x4f, 0x0e, 0x2b, 0x25, 0x18, 0xdf, 0x33, 0x3a, 0x34, 0x67, 0x36, 0xe8, 0x6f, 0x08, + 0xaf, 0x0e, 0x8b, 0x0b, 0x45, 0xf8, 0x11, 0xe1, 0x25, 0xe7, 0x54, 0xab, 0xc1, 0x94, 0x5a, 0xa3, + 0xa9, 0xf4, 0x7a, 0x23, 0xaf, 0xa8, 0x45, 0x8f, 0xa9, 0x45, 0x07, 0x6a, 0xd1, 0x37, 0x7d, 0xd7, + 0x33, 0x77, 0xa0, 0x20, 0x54, 0x21, 0x7c, 0x82, 0x2f, 0xfa, 0xfd, 0xe3, 0x4a, 0xad, 0xe5, 0x86, + 0x1f, 0x46, 0x4d, 0xdd, 0xf6, 0x3b, 0x06, 0xb0, 0x95, 0xfa, 0x59, 0x17, 0xce, 0x47, 0x46, 0xb8, + 0xdf, 0xe5, 0x42, 0xba, 0x15, 0x56, 0xc9, 0x19, 0x84, 0x9d, 0xce, 0x63, 0x22, 0xb3, 0xbb, 0x23, + 0x79, 0x2a, 0x69, 0xf6, 0x16, 0x9e, 0xcb, 0xac, 0x42, 0x82, 0x75, 0x3c, 0xae, 0xf8, 0x4c, 0x56, + 0x73, 0xb2, 0x3e, 0x9f, 0xed, 0xae, 0xd2, 0x36, 0x2f, 0xc5, 0x59, 0x58, 0xa0, 0x49, 0xbf, 0x45, + 0x69, 0x76, 0xb1, 0xb8, 0xed, 0x07, 0xce, 0x7f, 0xd2, 0xa9, 0x34, 0x57, 0x8d, 0x5e, 0x90, 0xab, + 0x12, 0x58, 0xfd, 0x5c, 0x15, 0xc8, 0x75, 0xc8, 0x36, 0x8f, 0xab, 0x94, 0x61, 0x3e, 0x57, 0x29, + 0xe3, 0x84, 0xab, 0x94, 0x26, 0xfd, 0x1d, 0xe1, 0xf2, 0x69, 0x5c, 0xd6, 0x6c, 0xf3, 0x37, 0xe3, + 0x9e, 0xc4, 0x47, 0xcf, 0x53, 0x50, 0x15, 0xf2, 0x0a, 0x1e, 0x67, 0x12, 0x8c, 0xe4, 0xb5, 0x42, + 0x7f, 0x87, 0x15, 0x50, 0x73, 0xf6, 0xe4, 0xb0, 0x32, 0x0d, 0x2e, 0xe4, 0x0a, 0xb5, 0xc0, 0x8c, + 0x7e, 0x83, 0x70, 0x65, 0x60, 0x7e, 0x50, 0xde, 0x3d, 0x7c, 0x39, 0x3e, 0x49, 0xc5, 0xf0, 0x0d, + 0xf1, 0x2a, 0xd4, 0x75, 0x0a, 0xea, 0x1a, 0x5b, 0x5d, 0x6c, 0xf4, 0x55, 0x24, 0xfa, 0x13, 0x02, + 0xfa, 0xba, 0xeb, 0x87, 0xac, 0xdd, 0xc3, 0xf6, 0x34, 0x94, 0x7c, 0x0d, 0xcf, 0xb8, 0x9e, 0xdd, + 0x8e, 0x1c, 0xde, 0x48, 0xce, 0xe7, 0x31, 0x79, 0x3e, 0x17, 0x60, 0x79, 0x13, 0x8e, 0xe9, 0x03, + 0x84, 0x97, 0x72, 0x73, 0xf8, 0xff, 0xca, 0x7a, 0x0b, 0x36, 0xd1, 0x7b, 0x82, 0x07, 0x3b, 0xea, + 0x32, 0xf3, 0x2f, 0xaf, 0x0e, 0x7f, 0x23, 0x38, 0x7c, 0xb2, 0xae, 0x20, 0xb5, 0x2f, 0x11, 0x9e, + 0x11, 0x5d, 0xee, 0x39, 0x71, 0xc2, 0x0d, 0x95, 0xe5, 0xd8, 0xb0, 0x2c, 0xdf, 0x86, 0x2c, 0x17, + 0x55, 0xcc, 0x3e, 0xfb, 0x8b, 0xe5, 0x5b, 0xe8, 0x59, 0xcb, 0x6f, 0x72, 0x0b, 0x4f, 0x74, 0x79, + 0xe0, 0xfa, 0x4e, 0x52, 0xed, 0xc5, 0x64, 0xa3, 0x24, 0x77, 0xba, 0x3b, 0x52, 0x6c, 0x2e, 0x02, + 0x08, 0x48, 0x1c, 0x8c, 0xa8, 0x95, 0x98, 0xd7, 0xff, 0xba, 0x82, 0x2f, 0xcb, 0xc4, 0xc9, 0x0f, + 0x08, 0x97, 0x06, 0x1e, 0x32, 0xe4, 0x66, 0x76, 0x27, 0x9e, 0xeb, 0x28, 0xd4, 0x5e, 0xbc, 0x98, + 0x91, 0xaa, 0x36, 0x5d, 0xf9, 0xec, 0x97, 0x3f, 0xbf, 0x1e, 0xad, 0x90, 0x65, 0xb8, 0xc3, 0x76, + 0x7c, 0x27, 0x6a, 0xf3, 0xfe, 0x23, 0x88, 0x38, 0x78, 0x5c, 0x31, 0x3e, 0xa9, 0xe6, 0x84, 0xc9, + 0x1c, 0x28, 0xda, 0x33, 0x4f, 0xd0, 0x80, 0xa8, 0x0b, 0x32, 0xea, 0x0c, 0x99, 0xce, 0xdc, 0x9c, + 0xc9, 0xe7, 0x08, 0x6e, 0xbd, 0x8a, 0x40, 0xc9, 0x4a, 0x8e, 0xa7, 0xb3, 0x47, 0x8b, 0xb6, 0x3a, + 0x4c, 0x6d, 0x40, 0xae, 0x69, 0xea, 0x36, 0xee, 0xc3, 0x74, 0x3e, 0x20, 0xdf, 0x21, 0x4c, 0xce, + 0x32, 0x1a, 0xb9, 0x31, 0x28, 0x4a, 0x1e, 0xb1, 0x6b, 0xeb, 0xe7, 0xd4, 0x06, 0x68, 0x2f, 0x49, + 0x68, 0x2f, 0x10, 0x3d, 0x0d, 0x4d, 0x0e, 0xf0, 0xae, 0xbc, 0x10, 0xc4, 0xca, 0xa7, 0x10, 0x8d, + 0xfb, 0x6a, 0xe5, 0x01, 0xf9, 0x0a, 0xe1, 0x42, 0x96, 0x22, 0x48, 0x2d, 0x27, 0x72, 0x2e, 0x13, + 0x6a, 0xcf, 0x9f, 0x43, 0x13, 0xf0, 0xd5, 0x24, 0x3e, 0x4a, 0xaa, 0x80, 0x2f, 0x8c, 0xd5, 0x1a, + 0x3d, 0x94, 0xa9, 0xea, 0x7d, 0x81, 0xf0, 0x54, 0x7a, 0x5f, 0x93, 0xbc, 0xee, 0xe4, 0x70, 0x88, + 0xb6, 0x36, 0x54, 0x0f, 0xb0, 0xac, 0x4a, 0x2c, 0x55, 0x52, 0x06, 0x2c, 0x91, 0xe0, 0x41, 0x03, + 0xb6, 0xa2, 0x48, 0x21, 0xe9, 0x4d, 0x13, 0xbc, 0xa1, 0x06, 0x4e, 0x53, 0xe6, 0x19, 0x34, 0x78, + 0x9a, 0xb2, 0x8f, 0x9c, 0x01, 0xd3, 0xa4, 0x1e, 0x2d, 0x29, 0x14, 0x9f, 0xa2, 0xfe, 0x07, 0xcb, + 0xda, 0xa0, 0x00, 0x7d, 0xd7, 0x70, 0xad, 0x36, 0x5c, 0x11, 0xb0, 0x2c, 0x4b, 0x2c, 0xd7, 0xc8, + 0x42, 0x06, 0x4b, 0x72, 0xbd, 0x36, 0xb7, 0x1e, 0x1e, 0x95, 0xd1, 0xa3, 0xa3, 0x32, 0xfa, 0xe3, + 0xa8, 0x8c, 0x0e, 0x8e, 0xcb, 0x23, 0x8f, 0x8e, 0xcb, 0x23, 0xbf, 0x1e, 0x97, 0x47, 0x3e, 0x30, + 0x52, 0xac, 0xb8, 0x2d, 0x83, 0xad, 0xdf, 0x66, 0x4d, 0x61, 0x24, 0x8f, 0xd7, 0x8d, 0xba, 0xf1, + 0x71, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xf2, 0x09, 0x72, 0xf3, 0x9f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x6c, 0x03, 0x4a, 0x6a, 0x90, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/tx.pb.go b/x/claim/types/tx.pb.go index 4a38d8f1b4..3a0972b54c 100644 --- a/x/claim/types/tx.pb.go +++ b/x/claim/types/tx.pb.go @@ -448,44 +448,44 @@ var fileDescriptor_9d435242bf328977 = []byte{ // 643 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xbf, 0x4f, 0xdb, 0x40, 0x14, 0x8e, 0x9b, 0xf0, 0x23, 0x47, 0xa1, 0x70, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x3c, 0x20, 0x4b, - 0x15, 0x76, 0x43, 0xb7, 0x4e, 0x25, 0xd0, 0x4a, 0x48, 0xb0, 0x18, 0xa4, 0x4a, 0x48, 0x55, 0x74, - 0xb6, 0x5f, 0xcd, 0xa9, 0xb6, 0x2f, 0xf2, 0x5d, 0x28, 0xfc, 0x05, 0x5d, 0xf9, 0x3b, 0xfa, 0x97, - 0x30, 0x32, 0x56, 0x1d, 0xd2, 0x0a, 0xe6, 0x2e, 0x4c, 0x1d, 0x2b, 0xdf, 0x39, 0xc1, 0x21, 0xd0, + 0x15, 0x76, 0xa1, 0x5b, 0xa7, 0x12, 0x68, 0x25, 0x24, 0x58, 0x0c, 0x52, 0x25, 0xa4, 0x2a, 0x3a, + 0xdb, 0xaf, 0xe6, 0x54, 0xdb, 0x17, 0xf9, 0x2e, 0x14, 0xfe, 0x82, 0xae, 0xfc, 0x1d, 0xfd, 0x4b, + 0x18, 0x19, 0xab, 0x0e, 0x69, 0x05, 0x73, 0x17, 0xa6, 0x8e, 0x95, 0xef, 0x9c, 0xe0, 0x90, 0xd0, 0x32, 0x74, 0xb2, 0xdf, 0xf7, 0xbd, 0xfb, 0xee, 0xde, 0xfb, 0xde, 0x1d, 0x5a, 0xe1, 0x22, 0xa7, - 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x53, 0xb7, 0x97, 0x33, 0xc1, 0xf0, 0x53, 0x05, 0xbb, + 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x33, 0xb7, 0x9b, 0x33, 0xc1, 0xf0, 0x53, 0x05, 0xbb, 0x12, 0x36, 0x96, 0x63, 0x16, 0x33, 0x49, 0x78, 0xc5, 0x9f, 0xca, 0x31, 0xcc, 0x90, 0xf1, 0x94, - 0x71, 0x2f, 0x20, 0x1c, 0xbc, 0x93, 0x76, 0x00, 0x82, 0xb4, 0xbd, 0x90, 0xd1, 0x4c, 0xf1, 0xf6, - 0x6f, 0x0d, 0xe9, 0xfb, 0x3c, 0x3e, 0x00, 0xb1, 0x45, 0xf3, 0x28, 0x67, 0xbd, 0xad, 0x24, 0x61, - 0x21, 0x11, 0x94, 0x65, 0x1c, 0x3f, 0x47, 0x4d, 0xa2, 0x42, 0x96, 0xeb, 0x9a, 0xa5, 0x39, 0x4d, - 0xff, 0x16, 0xc0, 0x7b, 0x08, 0x13, 0xb5, 0xa6, 0x4b, 0x23, 0xc8, 0x04, 0xfd, 0x48, 0x21, 0xd7, - 0x9f, 0x14, 0x69, 0x9d, 0xb5, 0x9b, 0x41, 0x6b, 0xf5, 0x8c, 0xa4, 0xc9, 0x6b, 0x7b, 0x32, 0xc7, - 0xf6, 0x97, 0x4a, 0x70, 0x77, 0x84, 0xe1, 0x65, 0x34, 0xd5, 0xe7, 0x90, 0x73, 0xbd, 0x6e, 0xd5, - 0x9d, 0xa6, 0xaf, 0x02, 0x7c, 0x84, 0x66, 0x3e, 0x03, 0x8d, 0x8f, 0x05, 0xd7, 0x1b, 0x05, 0xde, - 0x79, 0x73, 0x31, 0x68, 0xd5, 0xbe, 0x0f, 0x5a, 0xeb, 0x31, 0x15, 0xc7, 0xfd, 0xc0, 0x0d, 0x59, - 0xea, 0x95, 0x25, 0xaa, 0xcf, 0x06, 0x8f, 0x3e, 0x79, 0xe2, 0xac, 0x07, 0xdc, 0xdd, 0x81, 0xf0, - 0x66, 0xd0, 0x5a, 0x50, 0xc7, 0x28, 0x65, 0x6c, 0x7f, 0x28, 0x68, 0xdb, 0xc8, 0x7a, 0xa8, 0x72, - 0x1f, 0x78, 0x8f, 0x65, 0x1c, 0x6c, 0x07, 0xe1, 0x7d, 0x1e, 0x6f, 0x17, 0x0d, 0x7e, 0x97, 0x03, - 0x6c, 0xa5, 0xac, 0x9f, 0x09, 0x8c, 0x51, 0xa3, 0x38, 0x5e, 0xd9, 0x12, 0xf9, 0x6f, 0x9f, 0x6b, - 0xc8, 0x98, 0x4c, 0x1d, 0x0a, 0xe1, 0x1c, 0x2d, 0x48, 0x9b, 0x20, 0xea, 0x12, 0xc9, 0xc8, 0x3a, - 0xe7, 0x36, 0x57, 0x5d, 0x75, 0x6c, 0xb7, 0x30, 0xc8, 0x2d, 0x0d, 0x72, 0xb7, 0x19, 0xcd, 0x3a, - 0x2f, 0x8b, 0x52, 0xbf, 0xfe, 0x68, 0x39, 0x8f, 0x28, 0xb5, 0x58, 0xc0, 0xfd, 0xf9, 0x72, 0x0b, - 0xb5, 0xb7, 0xfd, 0x4b, 0x43, 0x8b, 0xc5, 0x91, 0x72, 0x20, 0x02, 0xca, 0x22, 0xb1, 0x85, 0xe6, - 0x22, 0x5a, 0x0c, 0x4e, 0xd0, 0xbf, 0x75, 0xb5, 0x0a, 0x61, 0x13, 0xa1, 0xbb, 0x7e, 0xfa, 0x15, - 0x04, 0xaf, 0xa2, 0xd9, 0xf0, 0x98, 0xd0, 0xac, 0x4b, 0x23, 0x7d, 0x5a, 0xb2, 0x33, 0x32, 0xde, - 0x8d, 0x0a, 0x13, 0x23, 0xc8, 0x58, 0xaa, 0x4f, 0x49, 0x5c, 0x05, 0x78, 0x0d, 0x21, 0x2e, 0x48, - 0x2e, 0xba, 0x82, 0xa6, 0xa0, 0xd7, 0x2d, 0xcd, 0x69, 0xf8, 0x4d, 0x89, 0x1c, 0xd2, 0x14, 0xb0, - 0x81, 0x66, 0xa3, 0x7e, 0x2e, 0x1b, 0xaf, 0x37, 0x24, 0x39, 0x8a, 0xf1, 0x0b, 0xb4, 0x44, 0xfa, - 0x82, 0xf5, 0x68, 0xc2, 0x44, 0x17, 0x32, 0x12, 0x24, 0x10, 0xe9, 0x33, 0x96, 0xe6, 0xcc, 0xfa, - 0x8b, 0x23, 0xe2, 0xad, 0xc2, 0x6d, 0x43, 0x8e, 0xf2, 0x58, 0xb9, 0x23, 0x23, 0x0f, 0x65, 0x2b, - 0x76, 0x20, 0x81, 0xff, 0xd8, 0x8a, 0x72, 0xc7, 0x31, 0xd5, 0xe1, 0x8e, 0x9b, 0x5f, 0xea, 0xa8, - 0xbe, 0xcf, 0x63, 0xcc, 0xd0, 0xca, 0xfd, 0xb7, 0x6b, 0xdd, 0xad, 0xde, 0x5f, 0xf7, 0xa1, 0x59, - 0x34, 0xdc, 0xc7, 0xe5, 0x8d, 0x46, 0xed, 0x03, 0x7a, 0x76, 0x77, 0x60, 0xad, 0x09, 0x89, 0x3b, - 0x19, 0x86, 0xf3, 0xaf, 0x8c, 0x91, 0xfc, 0x7b, 0x34, 0x3f, 0x3e, 0x51, 0xe6, 0xe4, 0xd2, 0x2a, - 0x6f, 0xac, 0xff, 0x9d, 0xaf, 0x0a, 0x8f, 0xfb, 0x33, 0x29, 0x3c, 0xc6, 0xdf, 0x23, 0x7c, 0xaf, - 0x13, 0x9d, 0xdd, 0x8b, 0x2b, 0x53, 0xbb, 0xbc, 0x32, 0xb5, 0x9f, 0x57, 0xa6, 0x76, 0x7e, 0x6d, - 0xd6, 0x2e, 0xaf, 0xcd, 0xda, 0xb7, 0x6b, 0xb3, 0x76, 0xe4, 0x55, 0xae, 0xd6, 0x81, 0xd4, 0xda, - 0xd8, 0x23, 0x01, 0xf7, 0xca, 0xf7, 0xf6, 0xa4, 0xdd, 0xf6, 0x4e, 0x87, 0xaf, 0x6e, 0x71, 0xcf, - 0x82, 0x69, 0xf9, 0x6a, 0xbe, 0xfa, 0x13, 0x00, 0x00, 0xff, 0xff, 0x17, 0xcc, 0xf1, 0xb0, 0x92, + 0x71, 0x2f, 0x20, 0x1c, 0xbc, 0xd3, 0xcd, 0x00, 0x04, 0xd9, 0xf4, 0x42, 0x46, 0x33, 0xc5, 0xdb, + 0xbf, 0x35, 0xa4, 0x1f, 0xf0, 0xf8, 0x10, 0xc4, 0x36, 0xcd, 0xa3, 0x9c, 0x75, 0xb7, 0x93, 0x84, + 0x85, 0x44, 0x50, 0x96, 0x71, 0xfc, 0x1c, 0x35, 0x89, 0x0a, 0x59, 0xae, 0x6b, 0x96, 0xe6, 0x34, + 0xfd, 0x3b, 0x00, 0xef, 0x23, 0x4c, 0xd4, 0x9a, 0x0e, 0x8d, 0x20, 0x13, 0xf4, 0x23, 0x85, 0x5c, + 0x7f, 0x52, 0xa4, 0xb5, 0xd7, 0x6e, 0xfb, 0xad, 0xd5, 0x73, 0x92, 0x26, 0xaf, 0xed, 0xf1, 0x1c, + 0xdb, 0x5f, 0x2a, 0xc1, 0xbd, 0x21, 0x86, 0x97, 0xd1, 0x54, 0x8f, 0x43, 0xce, 0xf5, 0xba, 0x55, + 0x77, 0x9a, 0xbe, 0x0a, 0xf0, 0x31, 0x9a, 0xf9, 0x0c, 0x34, 0x3e, 0x11, 0x5c, 0x6f, 0x14, 0x78, + 0xfb, 0xcd, 0x65, 0xbf, 0x55, 0xfb, 0xde, 0x6f, 0xad, 0xc7, 0x54, 0x9c, 0xf4, 0x02, 0x37, 0x64, + 0xa9, 0x57, 0x96, 0xa8, 0x3e, 0x1b, 0x3c, 0xfa, 0xe4, 0x89, 0xf3, 0x2e, 0x70, 0x77, 0x17, 0xc2, + 0xdb, 0x7e, 0x6b, 0x41, 0x1d, 0xa3, 0x94, 0xb1, 0xfd, 0x81, 0xa0, 0x6d, 0x23, 0xeb, 0xa1, 0xca, + 0x7d, 0xe0, 0x5d, 0x96, 0x71, 0xb0, 0x1d, 0x84, 0x0f, 0x78, 0xbc, 0x53, 0x34, 0xf8, 0x5d, 0x0e, + 0xb0, 0x9d, 0xb2, 0x5e, 0x26, 0x30, 0x46, 0x8d, 0xe2, 0x78, 0x65, 0x4b, 0xe4, 0xbf, 0x7d, 0xa1, + 0x21, 0x63, 0x3c, 0x75, 0x20, 0x84, 0x73, 0xb4, 0x20, 0x6d, 0x82, 0xa8, 0x43, 0x24, 0x23, 0xeb, + 0x9c, 0xdb, 0x5a, 0x75, 0xd5, 0xb1, 0xdd, 0xc2, 0x20, 0xb7, 0x34, 0xc8, 0xdd, 0x61, 0x34, 0x6b, + 0xbf, 0x2c, 0x4a, 0xfd, 0xfa, 0xa3, 0xe5, 0x3c, 0xa2, 0xd4, 0x62, 0x01, 0xf7, 0xe7, 0xcb, 0x2d, + 0xd4, 0xde, 0xf6, 0x2f, 0x0d, 0x2d, 0x16, 0x47, 0xca, 0x81, 0x08, 0x28, 0x8b, 0xc4, 0x16, 0x9a, + 0x8b, 0x68, 0x31, 0x38, 0x41, 0xef, 0xce, 0xd5, 0x2a, 0x84, 0x4d, 0x84, 0xee, 0xfb, 0xe9, 0x57, + 0x10, 0xbc, 0x8a, 0x66, 0xc3, 0x13, 0x42, 0xb3, 0x0e, 0x8d, 0xf4, 0x69, 0xc9, 0xce, 0xc8, 0x78, + 0x2f, 0x2a, 0x4c, 0x8c, 0x20, 0x63, 0xa9, 0x3e, 0x25, 0x71, 0x15, 0xe0, 0x35, 0x84, 0xb8, 0x20, + 0xb9, 0xe8, 0x08, 0x9a, 0x82, 0x5e, 0xb7, 0x34, 0xa7, 0xe1, 0x37, 0x25, 0x72, 0x44, 0x53, 0xc0, + 0x06, 0x9a, 0x8d, 0x7a, 0xb9, 0x6c, 0xbc, 0xde, 0x90, 0xe4, 0x30, 0xc6, 0x2f, 0xd0, 0x12, 0xe9, + 0x09, 0xd6, 0xa5, 0x09, 0x13, 0x1d, 0xc8, 0x48, 0x90, 0x40, 0xa4, 0xcf, 0x58, 0x9a, 0x33, 0xeb, + 0x2f, 0x0e, 0x89, 0xb7, 0x0a, 0xb7, 0x0d, 0x39, 0xca, 0x23, 0xe5, 0x0e, 0x8d, 0x3c, 0x92, 0xad, + 0xd8, 0x85, 0x04, 0xfe, 0x63, 0x2b, 0xca, 0x1d, 0x47, 0x54, 0x07, 0x3b, 0x6e, 0x7d, 0xa9, 0xa3, + 0xfa, 0x01, 0x8f, 0x31, 0x43, 0x2b, 0x93, 0x6f, 0xd7, 0xba, 0x5b, 0xbd, 0xbf, 0xee, 0x43, 0xb3, + 0x68, 0xb8, 0x8f, 0xcb, 0x1b, 0x8e, 0xda, 0x07, 0xf4, 0xec, 0xfe, 0xc0, 0x5a, 0x63, 0x12, 0xf7, + 0x32, 0x0c, 0xe7, 0x5f, 0x19, 0x43, 0xf9, 0xf7, 0x68, 0x7e, 0x74, 0xa2, 0xcc, 0xf1, 0xa5, 0x55, + 0xde, 0x58, 0xff, 0x3b, 0x5f, 0x15, 0x1e, 0xf5, 0x67, 0x5c, 0x78, 0x84, 0x9f, 0x20, 0x3c, 0xd1, + 0x89, 0xf6, 0xde, 0xe5, 0xb5, 0xa9, 0x5d, 0x5d, 0x9b, 0xda, 0xcf, 0x6b, 0x53, 0xbb, 0xb8, 0x31, + 0x6b, 0x57, 0x37, 0x66, 0xed, 0xdb, 0x8d, 0x59, 0x3b, 0xf6, 0x2a, 0x57, 0xeb, 0x50, 0x6a, 0x6d, + 0xec, 0x93, 0x80, 0x7b, 0xe5, 0x7b, 0x7b, 0xba, 0xb9, 0xe5, 0x9d, 0x0d, 0x5e, 0xdd, 0xe2, 0x9e, + 0x05, 0xd3, 0xf2, 0xd5, 0x7c, 0xf5, 0x27, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xf5, 0x14, 0xc6, 0x92, 0x05, 0x00, 0x00, } diff --git a/x/claim/vesting/types/tx.pb.go b/x/claim/vesting/types/tx.pb.go index a59b8f6e12..cf5a732fa5 100644 --- a/x/claim/vesting/types/tx.pb.go +++ b/x/claim/vesting/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_5ebed07aad5e90bd = []byte{ 0xd3, 0x9d, 0x02, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x3c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xac, 0x57, 0xd7, 0x27, 0x31, - 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0xa1, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, + 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0x91, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, 0xb2, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x85, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x8b, 0x26, 0x79, 0x85, 0x8b, 0x00, 0x00, 0x00, + 0xf8, 0x1f, 0x51, 0x96, 0x8b, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/vesting.pb.go b/x/claim/vesting/types/vesting.pb.go index 79534f42c3..f0d0d175ba 100644 --- a/x/claim/vesting/types/vesting.pb.go +++ b/x/claim/vesting/types/vesting.pb.go @@ -186,42 +186,42 @@ func init() { proto.RegisterFile("stride/vesting/vesting.proto", fileDescriptor_ var fileDescriptor_41f0278a453c26b3 = []byte{ // 588 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x30, - 0x18, 0x8d, 0xd7, 0xae, 0x0c, 0x17, 0xb6, 0x11, 0x46, 0x09, 0xd3, 0x48, 0xaa, 0x9c, 0x7a, 0x59, - 0x42, 0xc7, 0x01, 0xa9, 0x37, 0x82, 0x84, 0x34, 0xb1, 0x03, 0x84, 0x89, 0xc3, 0x2e, 0x91, 0x93, + 0x18, 0x8d, 0xd7, 0xae, 0x0c, 0x17, 0xb6, 0x11, 0xc6, 0x08, 0xd3, 0x48, 0xaa, 0x9c, 0x7a, 0x59, + 0x42, 0xcb, 0x01, 0xa9, 0x37, 0x82, 0x84, 0x34, 0xb1, 0x03, 0x84, 0x89, 0xc3, 0x2e, 0x91, 0x93, 0x98, 0xd4, 0xa2, 0x89, 0xab, 0xd8, 0x9d, 0xe8, 0x3f, 0x40, 0xe2, 0x02, 0x12, 0x07, 0x8e, 0x3b, 0xf3, 0x4b, 0x26, 0x71, 0xa9, 0x38, 0x71, 0x2a, 0xa8, 0x15, 0x7f, 0x60, 0xbf, 0x00, 0xc5, 0x76, - 0x5a, 0x96, 0x1d, 0xaa, 0x71, 0x4a, 0xec, 0xcf, 0xef, 0xf9, 0x7d, 0xcf, 0x7e, 0x86, 0x7b, 0x8c, + 0x5a, 0x96, 0x1d, 0xaa, 0x71, 0x4a, 0xec, 0xcf, 0xef, 0xf9, 0x7d, 0xcf, 0x7e, 0x86, 0xfb, 0x8c, 0xe7, 0x24, 0xc6, 0xee, 0x29, 0x66, 0x9c, 0x64, 0x49, 0xf9, 0x75, 0x86, 0x39, 0xe5, 0x54, 0xdf, - 0x94, 0x55, 0x47, 0xcd, 0xee, 0xee, 0x24, 0x34, 0xa1, 0xa2, 0xe4, 0x16, 0x7f, 0x72, 0xd5, 0xae, - 0x19, 0x51, 0x96, 0x52, 0xe6, 0x86, 0x88, 0x61, 0xf7, 0xb4, 0x1b, 0x62, 0x8e, 0xba, 0x6e, 0x44, + 0x94, 0x55, 0x47, 0xcd, 0xee, 0xed, 0x24, 0x34, 0xa1, 0xa2, 0xe4, 0x16, 0x7f, 0x72, 0xd5, 0x9e, + 0x19, 0x51, 0x96, 0x52, 0xe6, 0x86, 0x88, 0x61, 0xf7, 0xb4, 0x13, 0x62, 0x8e, 0x3a, 0x6e, 0x44, 0x49, 0x56, 0xa9, 0xa3, 0x11, 0xef, 0x2f, 0xea, 0xc5, 0x40, 0xd6, 0xed, 0x1f, 0x75, 0xa8, 0x7b, 0x88, 0xe1, 0x37, 0x72, 0x97, 0xa7, 0x51, 0x44, 0x47, 0x19, 0xd7, 0x0f, 0xe1, 0xad, 0x82, 0x31, - 0x40, 0x72, 0x6c, 0x80, 0x36, 0xe8, 0x34, 0x0f, 0xda, 0x8e, 0x64, 0x73, 0x04, 0x81, 0x62, 0x73, - 0x0a, 0xb8, 0xc2, 0x79, 0xf5, 0xc9, 0xd4, 0x02, 0x7e, 0x33, 0x5c, 0x4e, 0xe9, 0x9f, 0x01, 0xdc, - 0xa6, 0x39, 0x49, 0x48, 0x86, 0x06, 0x81, 0x6a, 0xc6, 0x58, 0x6b, 0xd7, 0x3a, 0xcd, 0x83, 0x07, - 0x25, 0x5f, 0xb1, 0x7e, 0xc1, 0xf7, 0x8c, 0x92, 0xcc, 0x7b, 0x71, 0x3e, 0xb5, 0xb4, 0x8b, 0xa9, - 0x75, 0x7f, 0x8c, 0xd2, 0x41, 0xcf, 0xae, 0x12, 0xd8, 0xdf, 0x7e, 0x59, 0x9d, 0x84, 0xf0, 0xfe, - 0x28, 0x74, 0x22, 0x9a, 0xba, 0xaa, 0x4b, 0xf9, 0xd9, 0x67, 0xf1, 0x3b, 0x97, 0x8f, 0x87, 0x98, - 0x09, 0x2e, 0xe6, 0x6f, 0x95, 0x70, 0xd5, 0xa5, 0xfe, 0x11, 0xc0, 0xcd, 0x18, 0x0f, 0x70, 0x82, - 0x38, 0x8e, 0x83, 0xb7, 0x39, 0xc6, 0x46, 0x6d, 0x95, 0xa2, 0x43, 0xa5, 0xe8, 0x9e, 0x54, 0x74, - 0x19, 0x7e, 0x3d, 0x3d, 0xb7, 0x17, 0xe0, 0xe7, 0x39, 0xc6, 0xfa, 0x17, 0x00, 0xef, 0x2c, 0xe9, - 0x4a, 0x8b, 0xea, 0xab, 0x04, 0x1d, 0x29, 0x41, 0x46, 0x55, 0xd0, 0x7f, 0x79, 0xb4, 0xbd, 0xc0, - 0x97, 0x26, 0x39, 0x70, 0x03, 0x67, 0x71, 0xc0, 0x49, 0x8a, 0x8d, 0xf5, 0x36, 0xe8, 0xd4, 0xbc, - 0xbb, 0x17, 0x53, 0x6b, 0x4b, 0xee, 0x56, 0x56, 0x6c, 0xff, 0x06, 0xce, 0xe2, 0x63, 0x92, 0xe2, - 0xde, 0xc6, 0x87, 0x33, 0x4b, 0xfb, 0x7a, 0x66, 0x69, 0xf6, 0x77, 0x00, 0x1b, 0x2f, 0x71, 0x4e, - 0x68, 0xac, 0x3f, 0x84, 0x90, 0x71, 0x94, 0x73, 0x49, 0x53, 0x5c, 0xa3, 0x9a, 0x7f, 0x53, 0xcc, - 0x14, 0x18, 0xbd, 0x05, 0x1b, 0x03, 0x9c, 0x25, 0xbc, 0x6f, 0xac, 0x89, 0x92, 0x1a, 0xe9, 0x11, - 0x6c, 0xa0, 0x54, 0xdc, 0xbc, 0x95, 0xe7, 0xf2, 0xa8, 0xb0, 0xe1, 0x5a, 0xad, 0x2a, 0x6a, 0xdd, - 0x82, 0x4d, 0x14, 0x71, 0x42, 0xb3, 0xa0, 0xa8, 0x1a, 0xf5, 0x36, 0xe8, 0xac, 0xfb, 0x50, 0x4e, - 0x1d, 0x8f, 0x87, 0xb8, 0x57, 0x17, 0xdd, 0xfc, 0x01, 0x70, 0xef, 0xb5, 0xc8, 0xa2, 0xec, 0x89, - 0x44, 0x95, 0xb0, 0x9c, 0xc0, 0x1d, 0x11, 0x16, 0xe5, 0x7b, 0x25, 0x34, 0xb6, 0x73, 0x39, 0xc8, - 0xce, 0xd5, 0xb8, 0xa9, 0xd8, 0xe8, 0xe1, 0xd5, 0x20, 0x06, 0x70, 0xab, 0xa4, 0x1d, 0x8a, 0xdd, - 0x99, 0x72, 0xa4, 0x55, 0xa5, 0x95, 0xe2, 0x3c, 0x53, 0xdd, 0x8a, 0x96, 0x3c, 0xa7, 0x0a, 0xd8, - 0xf6, 0x37, 0xd5, 0x8c, 0x5c, 0xce, 0x96, 0xa7, 0xe6, 0xbd, 0x3a, 0x9f, 0x99, 0x60, 0x32, 0x33, - 0xc1, 0xef, 0x99, 0x09, 0x3e, 0xcd, 0x4d, 0x6d, 0x32, 0x37, 0xb5, 0x9f, 0x73, 0x53, 0x3b, 0x79, - 0xf2, 0x8f, 0xb5, 0xd2, 0x89, 0xfd, 0x23, 0x14, 0x32, 0xb7, 0x7c, 0xbf, 0xba, 0x5d, 0xf7, 0xbd, - 0x1b, 0x0d, 0x10, 0x49, 0x17, 0x6f, 0x99, 0xf0, 0x3b, 0x6c, 0x88, 0x47, 0xe6, 0xf1, 0xdf, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xc6, 0xf2, 0xb7, 0xb2, 0xea, 0x04, 0x00, 0x00, + 0x40, 0x72, 0x6c, 0x80, 0x16, 0x68, 0x37, 0xbb, 0x2d, 0x47, 0xb2, 0x39, 0x82, 0x40, 0xb1, 0x39, + 0x05, 0x5c, 0xe1, 0xbc, 0xfa, 0x64, 0x6a, 0x01, 0xbf, 0x19, 0x2e, 0xa7, 0xf4, 0xcf, 0x00, 0x6e, + 0xd3, 0x9c, 0x24, 0x24, 0x43, 0x83, 0x40, 0x35, 0x63, 0xac, 0xb5, 0x6a, 0xed, 0x66, 0xf7, 0x41, + 0xc9, 0x57, 0xac, 0x5f, 0xf0, 0x3d, 0xa3, 0x24, 0xf3, 0x5e, 0x9c, 0x4f, 0x2d, 0xed, 0x62, 0x6a, + 0xdd, 0x1f, 0xa3, 0x74, 0xd0, 0xb3, 0xab, 0x04, 0xf6, 0xb7, 0x5f, 0x56, 0x3b, 0x21, 0xbc, 0x3f, + 0x0a, 0x9d, 0x88, 0xa6, 0xae, 0xea, 0x52, 0x7e, 0x0e, 0x58, 0xfc, 0xce, 0xe5, 0xe3, 0x21, 0x66, + 0x82, 0x8b, 0xf9, 0x5b, 0x25, 0x5c, 0x75, 0xa9, 0x7f, 0x04, 0x70, 0x33, 0xc6, 0x03, 0x9c, 0x20, + 0x8e, 0xe3, 0xe0, 0x6d, 0x8e, 0xb1, 0x51, 0x5b, 0xa5, 0xe8, 0x50, 0x29, 0xba, 0x27, 0x15, 0x5d, + 0x86, 0x5f, 0x4f, 0xcf, 0xed, 0x05, 0xf8, 0x79, 0x8e, 0xb1, 0xfe, 0x05, 0xc0, 0x3b, 0x4b, 0xba, + 0xd2, 0xa2, 0xfa, 0x2a, 0x41, 0x47, 0x4a, 0x90, 0x51, 0x15, 0xf4, 0x5f, 0x1e, 0x6d, 0x2f, 0xf0, + 0xa5, 0x49, 0x0e, 0xdc, 0xc0, 0x59, 0x1c, 0x70, 0x92, 0x62, 0x63, 0xbd, 0x05, 0xda, 0x35, 0xef, + 0xee, 0xc5, 0xd4, 0xda, 0x92, 0xbb, 0x95, 0x15, 0xdb, 0xbf, 0x81, 0xb3, 0xf8, 0x98, 0xa4, 0xb8, + 0xb7, 0xf1, 0xe1, 0xcc, 0xd2, 0xbe, 0x9e, 0x59, 0x9a, 0xfd, 0x1d, 0xc0, 0xc6, 0x4b, 0x9c, 0x13, + 0x1a, 0xeb, 0x0f, 0x21, 0x64, 0x1c, 0xe5, 0x5c, 0xd2, 0x14, 0xd7, 0xa8, 0xe6, 0xdf, 0x14, 0x33, + 0x05, 0x46, 0xdf, 0x85, 0x8d, 0x01, 0xce, 0x12, 0xde, 0x37, 0xd6, 0x44, 0x49, 0x8d, 0xf4, 0x08, + 0x36, 0x50, 0x2a, 0x6e, 0xde, 0xca, 0x73, 0x79, 0x54, 0xd8, 0x70, 0xad, 0x56, 0x15, 0xb5, 0x6e, + 0xc1, 0x26, 0x8a, 0x38, 0xa1, 0x59, 0x50, 0x54, 0x8d, 0x7a, 0x0b, 0xb4, 0xd7, 0x7d, 0x28, 0xa7, + 0x8e, 0xc7, 0x43, 0xdc, 0xab, 0x8b, 0x6e, 0xfe, 0x00, 0xb8, 0xff, 0x5a, 0x64, 0x51, 0xf6, 0x44, + 0xa2, 0x4a, 0x58, 0x4e, 0xe0, 0x8e, 0x08, 0x8b, 0xf2, 0xbd, 0x12, 0x1a, 0xdb, 0xb9, 0x1c, 0x64, + 0xe7, 0x6a, 0xdc, 0x54, 0x6c, 0xf4, 0xf0, 0x6a, 0x10, 0x03, 0xb8, 0x55, 0xd2, 0x0e, 0xc5, 0xee, + 0x4c, 0x39, 0xb2, 0x5b, 0xa5, 0x95, 0xe2, 0x3c, 0x53, 0xdd, 0x8a, 0x5d, 0x79, 0x4e, 0x15, 0xb0, + 0xed, 0x6f, 0xaa, 0x19, 0xb9, 0x9c, 0x2d, 0x4f, 0xcd, 0x7b, 0x75, 0x3e, 0x33, 0xc1, 0x64, 0x66, + 0x82, 0xdf, 0x33, 0x13, 0x7c, 0x9a, 0x9b, 0xda, 0x64, 0x6e, 0x6a, 0x3f, 0xe7, 0xa6, 0x76, 0xf2, + 0xe4, 0x1f, 0x6b, 0xa5, 0x13, 0x07, 0x47, 0x28, 0x64, 0x6e, 0xf9, 0x7e, 0x75, 0xba, 0xee, 0x7b, + 0x37, 0x1a, 0x20, 0x92, 0x2e, 0xde, 0x32, 0xe1, 0x77, 0xd8, 0x10, 0x8f, 0xcc, 0xe3, 0xbf, 0x01, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0xcb, 0x9f, 0xa1, 0xea, 0x04, 0x00, 0x00, } func (m *BaseVestingAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 0a74562c3e..5962c9ea01 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -175,7 +175,7 @@ var fileDescriptor_92af8154b2eb736d = []byte{ // 467 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x8f, 0xd3, 0x30, 0x14, 0xc7, 0x6b, 0x5a, 0xca, 0xd5, 0x77, 0x27, 0x84, 0x75, 0x80, 0x29, 0x22, 0x89, 0xc2, 0x12, - 0x09, 0x48, 0xe8, 0x81, 0x18, 0x60, 0x2b, 0xbf, 0x11, 0x53, 0xca, 0x80, 0x58, 0xaa, 0xb4, 0x75, + 0x09, 0x48, 0xb8, 0x82, 0x18, 0x60, 0x2b, 0xbf, 0x11, 0x53, 0xca, 0x80, 0x58, 0xaa, 0xb4, 0x75, 0x1d, 0x4b, 0x97, 0x38, 0x8a, 0x5f, 0x10, 0xdd, 0x98, 0x99, 0x6e, 0xe4, 0x4f, 0xba, 0xf1, 0x46, 0xa6, 0x80, 0xda, 0x8d, 0xf1, 0xfe, 0x02, 0x14, 0x3b, 0x29, 0x3d, 0x0a, 0x62, 0x4b, 0xfc, 0xf9, 0xbe, 0xef, 0xd7, 0xef, 0xe9, 0x19, 0xdf, 0x54, 0x90, 0x8b, 0x19, 0x0b, 0x58, 0x26, 0xa7, 0xb1, @@ -184,11 +184,11 @@ var fileDescriptor_92af8154b2eb736d = []byte{ 0x4d, 0x8a, 0x79, 0x30, 0x2b, 0xf2, 0x08, 0x84, 0x4c, 0x6b, 0x6e, 0xff, 0xc9, 0x41, 0x24, 0x4c, 0x41, 0x94, 0x64, 0x46, 0xe0, 0x7e, 0xe9, 0xe0, 0xde, 0xf3, 0x2a, 0xe1, 0x75, 0x3a, 0x97, 0xc4, 0xc2, 0x58, 0xcc, 0x58, 0x0a, 0x62, 0x2e, 0x58, 0x4e, 0x91, 0x83, 0xbc, 0x5e, 0xb8, 0x71, 0x42, - 0xde, 0x63, 0xac, 0x20, 0xca, 0x61, 0x5c, 0xd9, 0xd0, 0x0b, 0x0e, 0xf2, 0x76, 0x0f, 0xfb, 0xbe, - 0xc9, 0xf0, 0x9b, 0x0c, 0xff, 0x5d, 0x93, 0x31, 0xbc, 0x75, 0x52, 0xda, 0xad, 0xb3, 0xd2, 0xbe, - 0xb2, 0x88, 0x92, 0xa3, 0xc7, 0xee, 0xef, 0x5a, 0xf7, 0xf8, 0xbb, 0x8d, 0xc2, 0x9e, 0x3e, 0xa8, - 0xe4, 0x24, 0xc6, 0x3b, 0xcd, 0xd5, 0x69, 0x5b, 0xfb, 0xde, 0xd8, 0xf2, 0x7d, 0x56, 0x0b, 0x86, - 0x83, 0xca, 0xf6, 0x67, 0x69, 0x93, 0xa6, 0xe4, 0xae, 0x4c, 0x04, 0xb0, 0x24, 0x83, 0xc5, 0x59, + 0xde, 0x63, 0xac, 0x20, 0xca, 0x61, 0x5c, 0xd9, 0xd0, 0x0b, 0x0e, 0xf2, 0x76, 0x07, 0x7d, 0xdf, + 0x64, 0xf8, 0x4d, 0x86, 0xff, 0xae, 0xc9, 0x18, 0xde, 0x3a, 0x29, 0xed, 0xd6, 0x59, 0x69, 0x5f, + 0x59, 0x44, 0xc9, 0xd1, 0x63, 0xf7, 0x77, 0xad, 0x7b, 0xfc, 0xdd, 0x46, 0x61, 0x4f, 0x1f, 0x54, + 0x72, 0x12, 0xe3, 0x9d, 0xe6, 0xea, 0xb4, 0xad, 0x7d, 0x6f, 0x6c, 0xf9, 0x3e, 0xab, 0x05, 0xc3, + 0xc3, 0xca, 0xf6, 0x67, 0x69, 0x93, 0xa6, 0xe4, 0xae, 0x4c, 0x04, 0xb0, 0x24, 0x83, 0xc5, 0x59, 0x69, 0x5f, 0x36, 0x61, 0x0d, 0x73, 0xbf, 0x56, 0x51, 0x6b, 0x77, 0x72, 0x1b, 0xef, 0x4f, 0x8b, 0x3c, 0x67, 0x29, 0x8c, 0xf5, 0x68, 0x69, 0xc7, 0x41, 0x5e, 0x3b, 0xdc, 0xab, 0x0f, 0xf5, 0x30, 0xc8, 0x67, 0x84, 0xe9, 0x39, 0xd5, 0x78, 0xa3, 0xef, 0x8b, 0xff, 0xed, 0xfb, 0x4e, 0xdd, 0xb7, @@ -196,12 +196,12 @@ var fileDescriptor_92af8154b2eb736d = []byte{ 0x46, 0x3f, 0x95, 0x45, 0x0a, 0x22, 0xe5, 0xa6, 0x90, 0xcd, 0x68, 0xd7, 0x41, 0xde, 0x4e, 0x78, 0xa0, 0xe9, 0xd3, 0x1a, 0x8e, 0x0c, 0x23, 0x4f, 0x70, 0xff, 0x6f, 0x69, 0x31, 0x13, 0x3c, 0x06, 0x7a, 0x49, 0xb7, 0x7a, 0x7d, 0x2b, 0xf0, 0x95, 0xc6, 0xee, 0x0b, 0xbc, 0xf7, 0xd2, 0xec, 0xe0, - 0x08, 0x22, 0x60, 0xe4, 0x11, 0xee, 0x9a, 0xed, 0xa3, 0xc8, 0x69, 0x7b, 0xbb, 0x87, 0xd4, 0x3f, - 0xb7, 0x93, 0xfe, 0x7a, 0x71, 0x86, 0x9d, 0xaa, 0xe1, 0xb0, 0x56, 0x0f, 0xdf, 0x9c, 0x2c, 0x2d, - 0x74, 0xba, 0xb4, 0xd0, 0x8f, 0xa5, 0x85, 0x8e, 0x57, 0x56, 0xeb, 0x74, 0x65, 0xb5, 0xbe, 0xad, - 0xac, 0xd6, 0x87, 0xfb, 0x5c, 0x40, 0x5c, 0x4c, 0xfc, 0xa9, 0x4c, 0x82, 0x91, 0xf6, 0xba, 0xf7, - 0x36, 0x9a, 0xa8, 0xa0, 0x7e, 0x08, 0x1f, 0x07, 0x83, 0xe0, 0x53, 0xf3, 0x1c, 0x60, 0x91, 0x31, - 0x35, 0xe9, 0xea, 0xf1, 0x3e, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x18, 0x8e, 0x75, 0x2c, + 0x08, 0x22, 0x60, 0xe4, 0x11, 0xee, 0x9a, 0xed, 0xa3, 0xc8, 0x69, 0x7b, 0xbb, 0x03, 0xea, 0x9f, + 0xdb, 0x49, 0x7f, 0xbd, 0x38, 0xc3, 0x4e, 0xd5, 0x70, 0x58, 0xab, 0x87, 0x6f, 0x4e, 0x96, 0x16, + 0x3a, 0x5d, 0x5a, 0xe8, 0xc7, 0xd2, 0x42, 0xc7, 0x2b, 0xab, 0x75, 0xba, 0xb2, 0x5a, 0xdf, 0x56, + 0x56, 0xeb, 0xc3, 0x7d, 0x2e, 0x20, 0x2e, 0x26, 0xfe, 0x54, 0x26, 0xc1, 0x48, 0x7b, 0xdd, 0x7b, + 0x1b, 0x4d, 0x54, 0x50, 0x3f, 0x84, 0x8f, 0x87, 0x83, 0xe0, 0x53, 0xf3, 0x1c, 0x60, 0x91, 0x31, + 0x35, 0xe9, 0xea, 0xf1, 0x3e, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xb1, 0x90, 0x2d, 0x2c, 0x03, 0x00, 0x00, } diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index efd2e26389..b7f010862a 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -345,8 +345,8 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ 0xe2, 0xf5, 0xd9, 0x59, 0xcc, 0xcf, 0x26, 0xcf, 0x97, 0xf6, 0xe2, 0x68, 0xec, 0xa1, 0xe3, 0xb1, 0x87, 0xfe, 0x8c, 0x3d, 0xf4, 0x65, 0xe2, 0x35, 0x8e, 0x27, 0x5e, 0xe3, 0xd7, 0xc4, 0x6b, 0xbc, 0xbb, 0x9d, 0x70, 0xbd, 0x33, 0x8a, 0x48, 0x2c, 0xf7, 0x9c, 0xd2, 0xad, 0x97, 0x05, 0xa9, 0x83, - 0xc1, 0x80, 0x7e, 0x38, 0x11, 0xd4, 0x87, 0x29, 0x53, 0xd1, 0x82, 0xf9, 0x00, 0xdc, 0xf9, 0x17, - 0x00, 0x00, 0xff, 0xff, 0x53, 0xe7, 0xc8, 0x06, 0xa9, 0x04, 0x00, 0x00, + 0xc1, 0x90, 0x7e, 0x38, 0x11, 0xd4, 0x87, 0x29, 0x53, 0xd1, 0x82, 0xf9, 0x00, 0xdc, 0xf9, 0x17, + 0x00, 0x00, 0xff, 0xff, 0x7b, 0x4e, 0xd6, 0x5e, 0xa9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/callback_data.pb.go b/x/icacallbacks/types/callback_data.pb.go index 135ed7533f..231c9c97b7 100644 --- a/x/icacallbacks/types/callback_data.pb.go +++ b/x/icacallbacks/types/callback_data.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_19b6f19ce856679b = []byte{ 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0x38, 0x1c, 0x74, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x81, 0x57, 0x66, 0x68, - 0xa8, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x03, 0x0d, 0x5e, 0x66, 0x01, 0x00, 0x00, + 0xa4, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, + 0x04, 0x00, 0x00, 0xff, 0xff, 0xef, 0x26, 0xac, 0x1a, 0x66, 0x01, 0x00, 0x00, } func (m *CallbackData) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/events_ibc.go b/x/icacallbacks/types/events_ibc.go index 07c66a43ca..c0012b4589 100644 --- a/x/icacallbacks/types/events_ibc.go +++ b/x/icacallbacks/types/events_ibc.go @@ -2,6 +2,7 @@ package types // IBC events const ( + EventTypeAck = "ack" EventTypeTimeout = "timeout" // this line is used by starport scaffolding # ibc/packet/event diff --git a/x/icacallbacks/types/genesis.pb.go b/x/icacallbacks/types/genesis.pb.go index 61eba92322..65f361c428 100644 --- a/x/icacallbacks/types/genesis.pb.go +++ b/x/icacallbacks/types/genesis.pb.go @@ -107,9 +107,9 @@ var fileDescriptor_8c333baddfa20681 = []byte{ 0x32, 0x8b, 0x4b, 0x9c, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0x6c, 0xbc, 0xae, - 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x0d, 0xf5, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, - 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xea, - 0x20, 0xaa, 0x85, 0xaf, 0x01, 0x00, 0x00, + 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x8d, 0xf4, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf2, + 0x05, 0x0b, 0xc1, 0xaf, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/packet.pb.go b/x/icacallbacks/types/packet.pb.go index fe5055602a..ecabc14dbe 100644 --- a/x/icacallbacks/types/packet.pb.go +++ b/x/icacallbacks/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_e68b4c401320f2a0 = []byte{ 0x14, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x66, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0x60, 0xe3, 0x75, 0x7d, 0x12, 0x93, 0x8a, - 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd4, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x68, 0x74, 0x90, 0x94, 0xf7, + 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd2, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x70, 0x51, 0x31, 0xd0, 0xf7, 0x00, 0x00, 0x00, } diff --git a/x/icacallbacks/types/params.pb.go b/x/icacallbacks/types/params.pb.go index 4a85012a50..e770b37f25 100644 --- a/x/icacallbacks/types/params.pb.go +++ b/x/icacallbacks/types/params.pb.go @@ -75,8 +75,8 @@ var fileDescriptor_4c402599e6cfed62 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xb3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0xf9, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0xd7, 0x94, 0x19, 0x1a, 0xea, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, - 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xbe, 0x68, 0xc7, 0x82, 0xb7, 0x00, 0x00, 0x00, + 0xd7, 0x94, 0x19, 0x1a, 0xe9, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, + 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xa6, 0x4d, 0x66, 0xc6, 0xb7, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/query.pb.go b/x/icacallbacks/types/query.pb.go index 12bac62416..a4d9ae1db0 100644 --- a/x/icacallbacks/types/query.pb.go +++ b/x/icacallbacks/types/query.pb.go @@ -312,37 +312,37 @@ var fileDescriptor_5e73b99abb7e91c2 = []byte{ // 520 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0x13, 0x31, 0x18, 0xc6, 0xe3, 0x52, 0x22, 0xe1, 0x16, 0x21, 0xb9, 0x1d, 0x50, 0x5a, 0x5d, 0xdb, 0x1b, 0x48, - 0x41, 0xc2, 0xee, 0x15, 0xa9, 0x12, 0x03, 0x82, 0x96, 0x3f, 0x1d, 0xe8, 0x10, 0xc2, 0xc6, 0x82, - 0xde, 0xbb, 0x5a, 0xc7, 0xa9, 0xce, 0xf9, 0x1a, 0x3b, 0x15, 0x11, 0x62, 0x41, 0x8c, 0x0c, 0x48, - 0x7c, 0x0f, 0x36, 0x16, 0x3e, 0x41, 0xc7, 0x4a, 0x2c, 0x4c, 0x08, 0x25, 0x7c, 0x10, 0x14, 0xdb, - 0x29, 0x77, 0xaa, 0xd3, 0x28, 0x6c, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, - 0x4d, 0xe9, 0x6e, 0x76, 0xc8, 0x59, 0x96, 0x40, 0x02, 0x42, 0xc4, 0x90, 0x1c, 0x29, 0x76, 0xdc, - 0xe3, 0xdd, 0x3e, 0x2d, 0xba, 0x52, 0x4b, 0xb2, 0x64, 0x05, 0xb4, 0x2c, 0x68, 0x2c, 0xa7, 0x32, - 0x95, 0xe6, 0x9d, 0x8d, 0x4e, 0x56, 0xda, 0x58, 0x4d, 0xa5, 0x4c, 0x05, 0x67, 0x50, 0x64, 0x0c, - 0xf2, 0x5c, 0x6a, 0xd0, 0x99, 0xcc, 0x95, 0x7b, 0xbd, 0x93, 0x48, 0xd5, 0x91, 0x8a, 0xc5, 0xa0, - 0xb8, 0x4d, 0x60, 0x27, 0x51, 0xcc, 0x35, 0x44, 0xac, 0x80, 0x34, 0xcb, 0x8d, 0xd8, 0x69, 0xd7, - 0x7d, 0x54, 0x05, 0x74, 0xa1, 0x33, 0x76, 0x6b, 0xfa, 0x14, 0xe3, 0xd3, 0xeb, 0x43, 0xd0, 0x60, - 0x85, 0xe1, 0x32, 0x26, 0x2f, 0x46, 0x61, 0x2d, 0x53, 0xdd, 0xe6, 0xc7, 0x3d, 0xae, 0x74, 0xd8, - 0xc2, 0x4b, 0x95, 0x5b, 0x55, 0xc8, 0x5c, 0x71, 0x72, 0x1f, 0xd7, 0x6d, 0xca, 0x4d, 0xb4, 0x8e, - 0x36, 0x17, 0xb6, 0x57, 0xa8, 0xa7, 0x7b, 0x6a, 0x8b, 0xf6, 0xe6, 0x4f, 0x7f, 0xad, 0xd5, 0xda, - 0xae, 0x20, 0x7c, 0x84, 0x57, 0x8c, 0xe3, 0x3e, 0xd7, 0x8f, 0x9d, 0xf2, 0x09, 0x68, 0x70, 0x81, - 0x64, 0x03, 0x2f, 0x9e, 0xd3, 0x1d, 0xf1, 0xbe, 0xf1, 0xbf, 0xd6, 0x5e, 0x18, 0xdf, 0x3d, 0xe7, - 0xfd, 0x50, 0xe0, 0x55, 0xbf, 0x83, 0x83, 0x3b, 0xc0, 0xd7, 0x2b, 0x0d, 0x3a, 0xc6, 0x0d, 0x2f, - 0x63, 0xd9, 0xc1, 0x91, 0x9e, 0x03, 0x8c, 0xee, 0x42, 0xee, 0x78, 0x77, 0x85, 0xf0, 0xf1, 0x3e, - 0xc3, 0xf8, 0xdf, 0x54, 0x5c, 0xd2, 0x2d, 0x6a, 0x47, 0x48, 0x47, 0x23, 0xa4, 0x76, 0x49, 0xdc, - 0x08, 0x69, 0x0b, 0x52, 0xee, 0x6a, 0xdb, 0xa5, 0xca, 0xf0, 0x1b, 0x72, 0x5d, 0x5d, 0xc8, 0x99, - 0xdc, 0xd5, 0x95, 0xff, 0xee, 0x8a, 0xec, 0x57, 0xb0, 0xe7, 0x0c, 0x76, 0x73, 0x2a, 0xb6, 0x45, - 0x29, 0x73, 0x6f, 0x7f, 0x9c, 0xc7, 0x57, 0x0d, 0x37, 0xf9, 0x84, 0x70, 0xdd, 0x4e, 0x9c, 0x34, - 0xbd, 0x50, 0x17, 0xd7, 0xab, 0xb1, 0x39, 0x5d, 0x68, 0x33, 0x43, 0xf6, 0xe1, 0xc7, 0x9f, 0x2f, - 0x73, 0xb7, 0x49, 0x93, 0xbd, 0x34, 0x15, 0x77, 0x0f, 0x20, 0x56, 0x6c, 0xf2, 0xfa, 0x93, 0xef, - 0x08, 0x2f, 0x96, 0x3f, 0x03, 0xd9, 0x9a, 0x9c, 0xe5, 0xdf, 0xc5, 0x46, 0x34, 0x43, 0x85, 0xc3, - 0x7c, 0x6a, 0x30, 0x1f, 0x92, 0x07, 0x53, 0x31, 0x2b, 0xc3, 0x64, 0xef, 0xca, 0x4b, 0xff, 0x9e, - 0x7c, 0x45, 0xf8, 0x46, 0xd9, 0x7f, 0x57, 0x88, 0xcb, 0xf8, 0xfd, 0xbb, 0x79, 0x19, 0xff, 0x84, - 0x2d, 0x0b, 0x77, 0x0c, 0xff, 0x16, 0xa1, 0xb3, 0xf1, 0xef, 0xb5, 0x4e, 0x07, 0x01, 0x3a, 0x1b, - 0x04, 0xe8, 0xf7, 0x20, 0x40, 0x9f, 0x87, 0x41, 0xed, 0x6c, 0x18, 0xd4, 0x7e, 0x0e, 0x83, 0xda, - 0xab, 0x9d, 0x34, 0xd3, 0x6f, 0x7a, 0x31, 0x4d, 0x64, 0xc7, 0xe7, 0x79, 0x12, 0x45, 0xec, 0x6d, - 0xd5, 0x59, 0xf7, 0x0b, 0xae, 0xe2, 0xba, 0xf9, 0x2d, 0xdd, 0xfb, 0x1b, 0x00, 0x00, 0xff, 0xff, - 0x86, 0x3b, 0x2e, 0xae, 0x79, 0x05, 0x00, 0x00, + 0x41, 0xc2, 0x6e, 0x82, 0x54, 0x89, 0x01, 0x41, 0xcb, 0x9f, 0x0e, 0x74, 0x08, 0x61, 0x63, 0x41, + 0xef, 0x5d, 0xad, 0xe3, 0x54, 0xe7, 0x7c, 0x8d, 0x9d, 0x8a, 0x08, 0xb1, 0x20, 0x46, 0x06, 0x24, + 0xbe, 0x07, 0x1b, 0x0b, 0x9f, 0xa0, 0x63, 0x25, 0x16, 0x26, 0x84, 0x12, 0x3e, 0x08, 0x8a, 0xed, + 0x94, 0x3b, 0xd5, 0xd7, 0xa8, 0x6c, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, + 0x4d, 0xe9, 0x7e, 0x7a, 0xc0, 0x59, 0x1a, 0x43, 0x0c, 0x42, 0x44, 0x10, 0x1f, 0x2a, 0x76, 0x34, + 0xe0, 0xfd, 0x21, 0xcd, 0xfb, 0x52, 0x4b, 0xb2, 0x64, 0x05, 0xb4, 0x28, 0x68, 0x2c, 0x27, 0x32, + 0x91, 0xe6, 0x9d, 0x4d, 0x4e, 0x56, 0xda, 0x58, 0x4d, 0xa4, 0x4c, 0x04, 0x67, 0x90, 0xa7, 0x0c, + 0xb2, 0x4c, 0x6a, 0xd0, 0xa9, 0xcc, 0x94, 0x7b, 0xbd, 0x13, 0x4b, 0xd5, 0x93, 0x8a, 0x45, 0xa0, + 0xb8, 0x4d, 0x60, 0xc7, 0xad, 0x88, 0x6b, 0x68, 0xb1, 0x1c, 0x92, 0x34, 0x33, 0x62, 0xa7, 0x5d, + 0xf7, 0x51, 0xe5, 0xd0, 0x87, 0xde, 0xd4, 0xad, 0xe9, 0x53, 0x4c, 0x4f, 0xaf, 0x0f, 0x40, 0x83, + 0x15, 0x86, 0xcb, 0x98, 0xbc, 0x98, 0x84, 0x75, 0x4c, 0x75, 0x97, 0x1f, 0x0d, 0xb8, 0xd2, 0x61, + 0x07, 0x2f, 0x95, 0x6e, 0x55, 0x2e, 0x33, 0xc5, 0xc9, 0x7d, 0x5c, 0xb7, 0x29, 0x37, 0xd1, 0x3a, + 0xda, 0x5c, 0x68, 0xaf, 0x50, 0x4f, 0xf7, 0xd4, 0x16, 0xed, 0xce, 0x9f, 0xfc, 0x5a, 0xab, 0x75, + 0x5d, 0x41, 0xf8, 0x08, 0xaf, 0x18, 0xc7, 0x3d, 0xae, 0x1f, 0x3b, 0xe5, 0x13, 0xd0, 0xe0, 0x02, + 0xc9, 0x06, 0x5e, 0x3c, 0xa3, 0x3b, 0xe4, 0x43, 0xe3, 0x7f, 0xad, 0xbb, 0x30, 0xbd, 0x7b, 0xce, + 0x87, 0xa1, 0xc0, 0xab, 0x7e, 0x07, 0x07, 0xb7, 0x8f, 0xaf, 0x97, 0x1a, 0x74, 0x8c, 0x1b, 0x5e, + 0xc6, 0xa2, 0x83, 0x23, 0x3d, 0x03, 0x98, 0xdc, 0x85, 0xdc, 0xf1, 0xee, 0x08, 0xe1, 0xe3, 0x7d, + 0x86, 0xf1, 0xbf, 0xa9, 0xb8, 0xa4, 0x5b, 0xd4, 0x8e, 0x90, 0x4e, 0x46, 0x48, 0xed, 0x92, 0xb8, + 0x11, 0xd2, 0x0e, 0x24, 0xdc, 0xd5, 0x76, 0x0b, 0x95, 0xe1, 0x37, 0xe4, 0xba, 0x3a, 0x97, 0x53, + 0xdd, 0xd5, 0x95, 0xff, 0xee, 0x8a, 0xec, 0x95, 0xb0, 0xe7, 0x0c, 0x76, 0x73, 0x26, 0xb6, 0x45, + 0x29, 0x72, 0xb7, 0x3f, 0xce, 0xe3, 0xab, 0x86, 0x9b, 0x7c, 0x42, 0xb8, 0x6e, 0x27, 0x4e, 0x9a, + 0x5e, 0xa8, 0xf3, 0xeb, 0xd5, 0xd8, 0x9c, 0x2d, 0xb4, 0x99, 0x21, 0xfb, 0xf0, 0xe3, 0xcf, 0x97, + 0xb9, 0xdb, 0xa4, 0xc9, 0x5e, 0x9a, 0x8a, 0xbb, 0xfb, 0x10, 0x29, 0x56, 0xbd, 0xfe, 0xe4, 0x3b, + 0xc2, 0x8b, 0xc5, 0xcf, 0x40, 0xb6, 0xaa, 0xb3, 0xfc, 0xbb, 0xd8, 0x68, 0x5d, 0xa2, 0xc2, 0x61, + 0x3e, 0x35, 0x98, 0x0f, 0xc9, 0x83, 0x99, 0x98, 0xa5, 0x61, 0xb2, 0x77, 0xc5, 0xa5, 0x7f, 0x4f, + 0xbe, 0x22, 0x7c, 0xa3, 0xe8, 0xbf, 0x23, 0xc4, 0x45, 0xfc, 0xfe, 0xdd, 0xbc, 0x88, 0xbf, 0x62, + 0xcb, 0xc2, 0x6d, 0xc3, 0xbf, 0x45, 0xe8, 0xe5, 0xf8, 0x77, 0x3b, 0x27, 0xa3, 0x00, 0x9d, 0x8e, + 0x02, 0xf4, 0x7b, 0x14, 0xa0, 0xcf, 0xe3, 0xa0, 0x76, 0x3a, 0x0e, 0x6a, 0x3f, 0xc7, 0x41, 0xed, + 0xd5, 0x76, 0x92, 0xea, 0x37, 0x83, 0x88, 0xc6, 0xb2, 0xe7, 0xf3, 0x3c, 0x6e, 0xb5, 0xd9, 0xdb, + 0xb2, 0xb3, 0x1e, 0xe6, 0x5c, 0x45, 0x75, 0xf3, 0x5b, 0xba, 0xf7, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x9e, 0x1e, 0x8f, 0xea, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/tx.pb.go b/x/icacallbacks/types/tx.pb.go index 1caa92fe48..9e0896af4d 100644 --- a/x/icacallbacks/types/tx.pb.go +++ b/x/icacallbacks/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_c4981fec5f7fee51 = []byte{ 0xb1, 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, - 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0x86, 0xfa, 0x15, 0x68, + 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0x46, 0xfa, 0x15, 0x68, 0x16, 0x56, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x2d, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xdf, 0xfc, 0x56, 0x0c, 0x94, 0x00, 0x00, 0x00, + 0xc7, 0xd9, 0xf7, 0x48, 0x94, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/README.md b/x/icaoracle/README.md new file mode 100644 index 0000000000..9fb1302e22 --- /dev/null +++ b/x/icaoracle/README.md @@ -0,0 +1,172 @@ +--- +title: "ICA Oracle" +excerpt: "" +category: 6392913957c533007128548e +--- + +# ICA Oracle Module + +## Overview +The `icaoracle` facilities trustless data publication to cosmwasm outposts on adjacent chains. The full ICA Oracle solution consists of two components: the `icaoracle` module deployed on the _source_ chain (described here), as well as a corresponding cosmwasm oracle contract deployed on the _destination_ chain. The contract features a standard key-value store, that accepts push messages from this module via interchain accounts. The data sent is referred to as a `Metric`. For Stride, the primary application of this module is to enable integrations to trustlessly retrieve the redemption rate (internal exchange rate) of stTokens. + +Some key features of this module are: +* **Trustless**: The solution uses interchain accounts which allows the data to be transmitted and retrieved with the same trust properties as IBC +* **Easy adoption to other chains**: Since the destination chain's oracle is deployed as a contract, it can be easily added to any chain with cosmwasm. There is no need for those chains to upgrade. +* **Generic key-value store**: While the immediate use case of this module is for the redemption rate, the oracle uses a generic key-value format that should work with any metric +* **High throughput/low latency**: ICAs are triggered as soon as possible, which eliminates a hop compared to interchain queries +* **Support for multiple oracles**: Each metric can be simultaneously pushed to multiple CW outposts + +### Setup +Before data can be transmitted, there are a few setup steps required: +1. The contract must be stored on the cosmwasm chain (destination chain) +2. A connection must exist between the source and destination chain +3. The oracle must be added to the source chain using the `add-oracle` transaction. This transaction will begin the registration on the source chain and create an interchain account on the destination chain. The interchain account will be responsible for instantiating the contract and posting metrics. +4. After the oracle is added, the `instantiate-oracle` transaction must be submitted which will submit an interchain account message (`MsgInstantiateContract`) to instantiate the oracle contract with the interchain account's address as the contract admin. + +### Pushing Metrics +After an oracle is registered, metrics can be posted on-chain using the `QueueMetricUpdate` function. This will queue the data so that it can be pushed to each registered oracle. In the `EndBlocker` after the metric is queued, an interchain account message (`MsgExecuteContract{MsgPostMetric}`) will be submitted to post the value to the oracle. + +## Diagrams +### Setup +![alt text](https://github.com/Stride-Labs/stride/blob/main/x/icaoracle/docs/setup.png?raw=true) +### Pushing Metrics +![alt text](https://github.com/Stride-Labs/stride/blob/main/x/icaoracle/docs/pushing.png?raw=true) +### Metric Status +![alt text](https://github.com/Stride-Labs/stride/blob/main/x/icaoracle/docs/metric-status.png?raw=true) + +## Implementation +### State +```go +Oracle + ChainId string + ConnectionId string + ChannelId string + PortId string + ICAAddress string + ContractAddress string + Active bool + +Metric + Key string + Value string + MetricType string + UpdateTime int64 + BlockHeight int64 + Attributes string + DestinationOracle string + Status (enum: QUEUED/IN_PROGRESS) +``` + +### Keeper functions +#### Oracles +```go +// Stores/updates an oracle object in the store +func SetOracle(oracle types.Oracle) + +// Grabs and returns an oracle object from the store using the chain-id +func GetOracle(chainId string) (oracle types.Oracle, found bool) + +// Returns all oracles +func GetAllOracles() []types.Oracle + +// Removes an oracle from the store +func RemoveOracle(chainId string) + +// Toggle whether an oracle is active +func ToggleOracle(chainId string, active bool) error + +// Grab's an oracle from it's connectionId +func GetOracleFromConnectionId(connectionId string) (oracle types.Oracle, found bool) + +// Checks if the oracle ICA channel is open +func IsOracleICAChannelOpen(oracle types.Oracle) bool +``` + +#### Metrics +```go +// Stores a metric in the main metric store and then either +// adds the metric to the queue or removes it from the queue +// depending on the status of the metric +func SetMetric(metric types.Metric) + +// Gets a specifc metric from the store +func GetMetric(metricId string) (metric types.Metric, found bool) + +// Returns all metrics from the store +func GetAllMetrics() (metrics []types.Metric) + +// Removes a metric from the store +func RemoveMetric(metricId string) + +// Updates the status of a metric which will consequently move it either +// in or out of the queue +func UpdateMetricStatus(, metric types.Metric, status types.MetricStatus) + +// Adds a metric to the queue, which acts as an index for all metrics +// that should be submitted to it's relevant oracle +func addMetricToQueue(metricKey []byte) + +// Removes a metric from the queue +func removeMetricFromQueue(, metricKey []byte) + +// Returns all metrics from the index queue +func GetAllQueuedMetrics() (metrics []types.Metric) +``` + +### Transactions +```go +// Adds a new oracle +AddOracle(connectionId string) + +// Instantiates the oracle's CW contract +InstantiateOracle(oracleChainId string, contractCodeId uint64) + +// Restore's a closed ICA channel for a given oracle +RestoreOracleICA(oracleChainId string) + +// Toggle's whether an oracle is active and should receive metric updates +ToggleOracle(oracleChainId string, active bool) [Governance] + +// Removes an oracle completely +RemoveOracle(oracleChainId string) [Governance] +``` + +### Queries +```go +// Query a specific oracle +// /Stride-Labs/stride/icaoracle/oracle/{chain_id} +Oracle(oracleChainId string) + +// Query all oracles +// /Stride-Labs/stride/icaoracle/oracles +AllOracles() + +// Query metrics with optional filters +// +// Ex: +// - /Stride-Labs/stride/icaoracle/metrics +// - /Stride-Labs/stride/icaoracle/metrics?metric_key=X +// - /Stride-Labs/stride/icaoracle/metrics?oracle_chain_id=Y +Metrics(metricKey, oracleChainId string) +``` + +### Business Logic +```go +// Queues an metric update across each active oracle +// One metric record is created for each oracle, in status QUEUED +// This is called by the modules that want to publish metrics +func QueueMetricUpdate(key, value, metricType, attributes string) + +// For each queued metric, submit an ICA to each oracle, and then flag the metric as IN_PROGRESS +// This is called each block in the EndBlocker +func PostAllQueuedMetrics() +``` + +### ICA Callbacks +```go +// Callback after an oracle is instantiated +func InstantiateOracleCallback() + +// Callback after a metric is published +func UpdateOracleCallback() +``` diff --git a/x/icaoracle/client/cli/cli_test.go b/x/icaoracle/client/cli/cli_test.go new file mode 100644 index 0000000000..19290c27c5 --- /dev/null +++ b/x/icaoracle/client/cli/cli_test.go @@ -0,0 +1,83 @@ +package cli_test + +import ( + "fmt" + "testing" + + tmcli "github.com/cometbft/cometbft/libs/cli" + "github.com/cosmos/cosmos-sdk/client/flags" + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/spf13/cobra" + "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v12/app" + cmdcfg "github.com/Stride-Labs/stride/v12/cmd/strided/config" + strideclitestutil "github.com/Stride-Labs/stride/v12/testutil/cli" + "github.com/Stride-Labs/stride/v12/testutil/network" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +var ( + HostChainId = "chain-1" +) + +type ClientTestSuite struct { + suite.Suite + + cfg network.Config + network *network.Network + val *network.Validator +} + +func TestClientTestSuite(t *testing.T) { + suite.Run(t, new(ClientTestSuite)) +} + +func (s *ClientTestSuite) SetupSuite() { + s.T().Log("setting up client test suite") + + s.cfg = network.DefaultConfig() + + genState := app.ModuleBasics.DefaultGenesis(s.cfg.Codec) + + // Add an oracle to the store for the query command + icaoracleGenstate := types.DefaultGenesis() + icaoracleGenstate.Oracles = []types.Oracle{{ChainId: HostChainId}} + icaoracleGenstateBz := s.cfg.Codec.MustMarshalJSON(icaoracleGenstate) + genState[types.ModuleName] = icaoracleGenstateBz + + s.cfg.GenesisState = genState + s.network = network.New(s.T(), s.cfg) + + _, err := s.network.WaitForHeight(1) + s.Require().NoError(err) + + s.val = s.network.Validators[0] + + cmdcfg.RegisterDenoms() +} + +func (s *ClientTestSuite) ExecuteTxAndCheckSuccessful(cmd *cobra.Command, args []string, description string) { + defaultFlags := []string{ + fmt.Sprintf("--%s=%s", flags.FlagFrom, s.val.Address.String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync), + fmt.Sprintf("--%s=json", tmcli.OutputFlag), + strideclitestutil.DefaultFeeString(s.cfg), + } + args = append(args, defaultFlags...) + + clientCtx := s.val.ClientCtx + out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args) + s.Require().NoError(err) + + var response sdk.TxResponse + s.Require().NoError(clientCtx.Codec.UnmarshalJSON(out.Bytes(), &response)) +} + +func (s *ClientTestSuite) ExecuteQueryAndCheckSuccessful(cmd *cobra.Command, args []string, description string) { + clientCtx := s.val.ClientCtx + _, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args) + s.Require().NoError(err) +} diff --git a/x/icaoracle/client/cli/query.go b/x/icaoracle/client/cli/query.go new file mode 100644 index 0000000000..dd244b613b --- /dev/null +++ b/x/icaoracle/client/cli/query.go @@ -0,0 +1,189 @@ +package cli + +import ( + "context" + "fmt" + "strconv" + "strings" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/version" + "github.com/gogo/protobuf/proto" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +const ( + FlagMetricKey = "metric-key" + FlagOracleChainId = "oracle-chain-id" + FlagActive = "active" +) + +// GetQueryCmd returns the cli query commands for this module. +func GetQueryCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + GetCmdQueryOracle(), + GetCmdQueryOracles(), + GetCmdQueryMetrics(), + ) + + return cmd +} + +// GetCmdQueryOracle implements a command to query a specific oracle using the oracle's chain ID +func GetCmdQueryOracle() *cobra.Command { + cmd := &cobra.Command{ + Use: "oracle [chain-id]", + Short: "Queries a specific oracle", + Long: strings.TrimSpace( + fmt.Sprintf(`Queries a specific oracle using the oracle's chain ID +Example: + $ %s query %s oracle [chain-id] +`, version.AppName, types.ModuleName), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + chainId := args[0] + + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + req := &types.QueryOracleRequest{ + ChainId: chainId, + } + res, err := queryClient.Oracle(context.Background(), req) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + return cmd +} + +// GetCmdQueryOracles implements a command to query all oracles with an optional "active" filter +func GetCmdQueryOracles() *cobra.Command { + cmd := &cobra.Command{ + Use: "oracles", + Short: "Queries all oracles", + Long: strings.TrimSpace( + fmt.Sprintf(`Queries all oracles with an optional "active" filter +Examples: + $ %[1]s query %[2]s oracles + $ %[1]s query %[2]s oracles --active true + $ %[1]s query %[2]s oracles --active false +`, version.AppName, types.ModuleName), + ), + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + activeString, err := cmd.Flags().GetString(FlagActive) + if err != nil { + return err + } + + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + // If no active flag is passed, return all oracles + var res proto.Message + if activeString == "" { + req := &types.QueryAllOraclesRequest{} + res, err = queryClient.AllOracles(context.Background(), req) + if err != nil { + return err + } + } else { + // Otherwise, filter using the active flag + activeBool, err := strconv.ParseBool(activeString) + if err != nil { + return err + } + req := &types.QueryActiveOraclesRequest{ + Active: activeBool, + } + res, err = queryClient.ActiveOracles(context.Background(), req) + if err != nil { + return err + } + } + + return clientCtx.PrintProto(res) + }, + } + + cmd.Flags().String(FlagActive, "", "Filter only active oracles") + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +// GetCmdQueryMetrics implements a command to query metrics with optional +// key and/or oracle chain-id filters +func GetCmdQueryMetrics() *cobra.Command { + cmd := &cobra.Command{ + Use: "metrics", + Short: "Queries all metric update ICAs", + Long: strings.TrimSpace( + fmt.Sprintf(`Queries all metrics with optional filters +Examples: + $ %[1]s query %[2]s metrics + $ %[1]s query %[2]s metrics --metric-key=[key] + $ %[1]s query %[2]s metrics --oracle-chain-id=[chain-id] +`, version.AppName, types.ModuleName), + ), + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + metricKey, err := cmd.Flags().GetString(FlagMetricKey) + if err != nil { + return err + } + oracleChainId, err := cmd.Flags().GetString(FlagOracleChainId) + if err != nil { + return err + } + + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + queryClient := types.NewQueryClient(clientCtx) + + // If no filters are passed, return all pending metrics + req := &types.QueryMetricsRequest{ + MetricKey: metricKey, + OracleChainId: oracleChainId, + } + res, err := queryClient.Metrics(context.Background(), req) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + cmd.Flags().String(FlagMetricKey, "", "The metric key") + cmd.Flags().String(FlagOracleChainId, "", "The oracle chain ID") + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/icaoracle/client/cli/query_test.go b/x/icaoracle/client/cli/query_test.go new file mode 100644 index 0000000000..1fbcafd52d --- /dev/null +++ b/x/icaoracle/client/cli/query_test.go @@ -0,0 +1,30 @@ +package cli_test + +import "github.com/Stride-Labs/stride/v12/x/icaoracle/client/cli" + +func (s *ClientTestSuite) TestCmdQueryOracle() { + args := []string{ + HostChainId, + } + + cmd := cli.GetCmdQueryOracle() + s.ExecuteQueryAndCheckSuccessful(cmd, args, "query oracle") +} + +func (s *ClientTestSuite) TestCmdQueryOracles() { + cmd := cli.GetCmdQueryOracles() + s.ExecuteQueryAndCheckSuccessful(cmd, []string{}, "query oracles") + s.ExecuteQueryAndCheckSuccessful(cmd, []string{"--active", "true"}, "query active oracles") + s.ExecuteQueryAndCheckSuccessful(cmd, []string{"--active", "false"}, "query inactive oracles") +} + +func (s *ClientTestSuite) TestCmdQueryPendingMetricUpdates() { + byMetric := []string{"--metric-key", "key"} + byOracle := []string{"--oracle-chain-id", HostChainId} + + cmd := cli.GetCmdQueryMetrics() + s.ExecuteQueryAndCheckSuccessful(cmd, []string{}, "query pending metric updates") + s.ExecuteQueryAndCheckSuccessful(cmd, byMetric, "query pending metric updates by metric") + s.ExecuteQueryAndCheckSuccessful(cmd, byOracle, "query pending metric updates by oracle") + s.ExecuteQueryAndCheckSuccessful(cmd, append(byMetric, byOracle...), "query pending metric updates by metric and oracle") +} diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go new file mode 100644 index 0000000000..3ea3a9633d --- /dev/null +++ b/x/icaoracle/client/cli/tx.go @@ -0,0 +1,147 @@ +package cli + +import ( + "fmt" + "strconv" + "strings" + + "github.com/spf13/cobra" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/cosmos/cosmos-sdk/version" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// GetTxCmd returns the transaction commands for this module +func GetTxCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + CmdAddOracle(), + CmdInstantiateOracle(), + CmdRestoreOracleICA(), + ) + + return cmd +} + +// Adds a new oracle given a provided connection and registers the oracle ICA +func CmdAddOracle() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-oracle [connection-id]", + Short: "Adds an oracle as a destination for metric updates", + Long: strings.TrimSpace( + fmt.Sprintf(`Registers a new oracle ICA as a destination for metric updates. +Must provide the ID of an existing connection. + +Example: + $ %[1]s tx %[2]s add-oracle connection-0 +`, version.AppName, types.ModuleName), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + connectionId := args[0] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgAddOracle( + clientCtx.GetFromAddress().String(), + connectionId, + ) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// Instantiates an oracle cosmwasm contract +func CmdInstantiateOracle() *cobra.Command { + cmd := &cobra.Command{ + Use: "instantiate-oracle [oracle-chain-id] [contract-code-id]", + Short: "Instantiates an oracle cosmwasm contract", + Long: strings.TrimSpace( + fmt.Sprintf(`Submits an ICA to instantiate the oracle cosmwasm contract. +Must provide the codeID of a cosmwasm contract that has already been uploaded to the host chain. + +Example: + $ %[1]s tx %[2]s instantiate-oracle osmosis-1 1000 +`, version.AppName, types.ModuleName), + ), + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + chainId := args[0] + contractCodeId, err := strconv.ParseUint(args[1], 10, 64) + if err != nil { + return err + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgInstantiateOracle( + clientCtx.GetFromAddress().String(), + chainId, + contractCodeId, + ) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} + +// Restores the oracle ICA channel after a channel closure +func CmdRestoreOracleICA() *cobra.Command { + cmd := &cobra.Command{ + Use: "restore-oracle-ica [oracle-chain-id]", + Short: "Restores an oracle ICA channel", + Long: strings.TrimSpace( + fmt.Sprintf(`After a channel closure, creates a new oracle ICA channel and restores the ICA account + +Example: + $ %[1]s tx %[2]s restore-oracle-ica osmosis +`, version.AppName, types.ModuleName), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + chainId := args[0] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgRestoreOracleICA( + clientCtx.GetFromAddress().String(), + chainId, + ) + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/icaoracle/client/cli/tx_test.go b/x/icaoracle/client/cli/tx_test.go new file mode 100644 index 0000000000..3e35cba976 --- /dev/null +++ b/x/icaoracle/client/cli/tx_test.go @@ -0,0 +1,14 @@ +package cli_test + +import ( + "github.com/Stride-Labs/stride/v12/x/icaoracle/client/cli" +) + +func (s *ClientTestSuite) TestCmdRestoreOracleICA() { + args := []string{ + HostChainId, + } + + cmd := cli.CmdRestoreOracleICA() + s.ExecuteTxAndCheckSuccessful(cmd, args, "restore oracle ICA") +} diff --git a/x/icaoracle/docs/metric-status.png b/x/icaoracle/docs/metric-status.png new file mode 100644 index 0000000000000000000000000000000000000000..01342b1426079aa63899774df19489fab2462666 GIT binary patch literal 67175 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%0DT|h|AjO=?@ms)QJrY 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
w=R^B7&3?3r*>zuU-{$K*bB$Wx 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 P$p8eNu6{1-oD!MmcyxCN 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≫?O^~d2N-beBN#$TxzD! zyOoEhE)IM``f@yvRD31mDFV80aql6nX_2|LLt$CaM@j%F(4yRbty!125V_@1(dDu( zmG1|O;j|aO^CZu)eW;_Z)V-3K(nYU*8v9=({~Bf+(T+T)Me|b@&P@G;IyDJ#fjxir zCUOkIayEFPH84|z#(p?tria_9w<^rCGg!AT$?7OBngYsWY{xJV$Ey)v9vykl<`NGWZ?uN88nc3b8t57*Zs(peG8qC<`EMEP1?)s-8!t**E>dQt&(#YOu+ zaT*TuTZiK_7{4!wT~n>+#&Ys+e8U2t)T?KYi4D)cz|T(-kYtxBTEuv-He&<<{X^@? zedfory|;7yK0;d$9AHb1?0VZI1*D2!hFo6PEF% z77|X1!Uj}{BjAI^%^;95&Xt@;E~+|7g8Mn&lgH_eNqIIO>PzjF>g!5lYNLf_?@ZX~ zNt9TuV8*-xl@>d)ZY+sdSBa~9SPgsRlh*&qBTJLugm=yH-?KV9S^D$25tWg88k(#T zZ&p@1{{#Z}s`TGzLZ709rQhYU!|;R*RL*h07KqJB*5h|!wS8bKrs4MKwzl1dp_mLO z3}xQJ94-AB1=f$wBfSffVi%`)J8STZhOi!>cwU_4nRSOb<9QcLXX;vFv+2b^X1@PV zrVXkQy#Z4*!8$tTN|jhC|5=2+HaOn20XyxrE(G#u7PAl4mc+8DC_ZOy?_lXO6XVYu zmF8`*Q7Vy)3O-#{`?yS{SbB798ULEK{l^R^#Q(AJhgs)b?|>0=HKC!uT3r& zPiR({57;baHn_wt@->aQ&y6`KBM5l_MV7%6E5z0Rx+$3N!kVXZqepBM{?7W1)r+#L~5H$+0V!mYMBI z9<>JN&sy;sMp5Evl=GH)X(Q9L(5*59f`ze(5>P>yBLDDjbNVf2q3O_OwrX9LQNSXu zwCSXCqBiiwCXQd<<)GQ3?U(Yz=^Ssq<*srSx_JJ_NFzhc<8nf=>pJCeH}A`F?NdXn)DhH{X{SWCxN~OpMz77y=HKb$-A6L# zzew+tYkU+b!7#8CZIbHz++NtQ>hdhKJg?-?4e_)RzH=tMQs{ZE?5@(;en;_nZ0;CK z=dbeKH*G5=Bl;Q2L#kdgW4DJ~?xLpaIvqC(KW{Oe+W%n~w&}hm=|!&%f6A<|!n}L< zF=nPcQ2M5|NA5x)Uw`G$Nf^BRrB_04gE^y(VSAob=i9?Jxs@o#uS4rUp#xtQ&z6^V z0jUa8K18cWw6u&GCiID#TY|hpW*CRHDR|?RMl`0=|g;2_ZeHktw zW}A2V8PsAR{=BjN7%3PKKmVj63>Ol(n|`o{45^fIW^)LgMfAc_z~n3f!jtBoJqFjD zM`T5v;A*Mj$}uu?%r%8-g@%R%qU!c^2u6kJFSTXLaArdf0pWqUu~T!zNNK?tVHt>$ZBGWib(3^{KZXUzpEf5Bu8 zR>VC#DpGsuqhRrpaZ4Fk*)*Kv^=YS<~PtTQh>qYxqP%x{Ew~2@MqaYWd(r|iTZea~ z57Th@m0Kt&D)XuHL8*>2W}AfD?eejuae+@ol8Cib0GdvivqtK?x@rV2^mhBGoIr;& z4id_A4Oz+|SXs9EjzieAdQ2Ii4@FQ&T^yvF(0F~&-k=g1+9qoSRK~eME4-xaMP)yb zDSMb%k^Cd8w0jNTKCk)m);`=tH&>vvMSp#p{k{udxmtcE`+Px#hjdZkIS*Z9`TfcJ z7p(HPdHgg9v^30|NT7sv!wzD~U621}| zT&yB0)EWP>TsU2KW>^y}2gL^adt;K-ov#7dDa}3(&5C$hYF5q)pK;Ozhd4y*>D$Jg ztSu4TNj>v379!5-acq72NHo5}{OZ&TTK6)vy|LwHOpoEA=`#p0)Gt&zoSAH0a3`ge z3lgHN?oNn!O;Odva0XP#2cYfUMK43>x94aRaV`LF_QeU;y%?RjZBR(+aD=A{zdj+@|?P+mqsIq z8v8o7F8eG^gOypaJrZ28#=m?KN#E%rr575-6fOUL$n!=CxAfc%YICW1y^^`gd(M<% zZoPue0*!Aod!7DZ`)FAQXi;^^3n3329<;FAW}KH2033F3V-7GNb9^SW_HlnMZH^t$ z=u?I}tb1{~0v<|84Xa`2+DTHjzRH?L9O3ua8?Sm^oQfecIBAO-^LSmxCeL}qT+Bx8 zk9KV^#lT)LG-uQVnS~d2_}5|<@4u6dOpFaYUR1J<>xFs0b8JC-HsZ_uT(Z3DqZnmW zMxX~J8}&4@?1+{f9f^}~<}31<`H3L!?R)xvj(H@`vq{#cO_3Z&-t#yA;Bo!IwFj4G z2TdMT7U(^NCo=_lG-vovoVfO8Uad4&@iR*K)(pTcc3cZ) zBETaW^4Q6znhEXV6V>zEe&aE0zpdGpHC zlm-5e?x3L~9Y$fYl&mww(`NFmJ}~sAnyG)rzF20JXn*i8G3d&q>n(v+b-~uVDHDWG zxNFZ6c_`bnXz*MbQxVy5)(rB_xsX>e9A|D2{lnt_hZbW5-%%-RxTh( zoHH#Zp@{8w4%O!4GAM<6n_gY}6xY<3gwf``hu%1`EWA}w82UE@7O7PZBhX>wvzL#a zA#{5X>?%gs2^1Hi)d`5U9Y^Fs3vXNE4ni)-vqb`)T`JC06dHWE>M?{K6ch4_0$LfP zZsqOnXe-{;sW#ImFSy2RBK}KB06q7HRDtRBtE6aHpiyxj_u0o9l2?A~UP-U+Jy;XG z-uTG1H}@xXVs!XoBI`3-dK-Z#C8euJX@A1b6P->&Alt2%Fv#a$ETW3GViAe zCqb?o2cvy-2t7825ko#CHj>r?_lJJ=niYR$Ql|UsM_&f^KQYr(TI@WPiCJCMRZ}#G ze{NE(kYxf_=EqNv2zjWbmj=ll7y8i;+WlcdZKrlxULUA1ntE)m=rUj0ceGjY^N8RM zj{=Fw%etMcoWcbG- zPls#`ynLK4`pQ{L`cPsz{$7JWu{{EW%Rj8DmxoCL}GsWB^&WT~GBn z-qtIRK&^`WFY%fK8z5tD7-s3Zko%M2_X?8r9~qDwOcvrXvZ>Ov&H1&(GDV<9d7^Dx z71sSv|KH=VOo0a)nNKAy_Q#d>exyUI-YuP9m$D7cEjOLwJlk?iz*F1DujJ(jtL6W| zEO?;pc4p=vmp)DZ^MCsp5)3fY@QY*$-R(Rm6Dic*erB=Jlz{QF0Pt3Q=5AYqHO283 zWS--mjrEpOwkBPl2{hB9EVFLlITuw zBFc|?Y15f(rU8jAyaPWr;)&#tB0` z9^>fa+Wxxn3Qq1qO191N2QpFLw_Ce+Y#w{vbrg?ipY7aZlVd<-4qY!jJs#|SMMB=c z1qRZXp+j#^_uV2b7f`pG=9@_BrUe2F1P{mxy_U|H^lM#fGw_NPKlWC#pBB1p@%>nF z&IfyAY*JsC_fQ|eVh*T8O&ch z+1Po;=(ef*Ac-p0=rPIMoMl%eU_@`~QJ1xWIK^BIeiK7Rp#$@3Sn)cgyiW)6>z7up zy`D16x0}4PqZh$|Ttw3d9k$s0s9!@L`JBw$SW4eFO27B0n~;(l1h%AVIr%QXmU3^i z^%}Z12hM?5858R@ZS95TAgnG&dme_d^n8!$%!N7%M&Nla>xUqggvFmgPzjw0*dHJL z2GfA&1Zwx3e2uGUz@K$?ct$Iv3(ZP3rqavf@4ajJA}f4f@1cQ7O6|X2WYywv@3ws8 zBrg6+YuCzy$GBKrl_Ml{TVDZb&9Hdk7-rs1mzH*CadRYo0B<4cc?)rb4CL|}(&yhA z?KuPs^wQk+7i78K;xTeZztS^uC`~{fE&Gu@ChQhUlX;e%RaXvK&LW64x2v4irxI&j%0iZE;->Ws$GY2{ z4$UZS(Y{f|-me8h&O^t`52-=fTJ=>qBvL_->)Ah*{gV6ZMHhC->z;Ai?Qs%*%cAYx z%dKV>{KuOfVf^E_z%?8McNJP-DwgkokA*CTRAciM-$bQ<;`2tVnFLObLC^BRUXMiQ z@V{4E&A~p*^0c0NCwk;ipG^3V7)kQ2Lt#iG)fQ*nU_TPeC7#6V+S?4_p&gY}e#0!F zfX)9d74!klcI)x%m+GjU{SBXv<=B9wXpxC~1HWt)lEh91t0t~AIIw%o804b zOHWKu{WD$1(*BT)SI1W%zf*x!pMQ4?YOUKpHy$FA`$31sU>2rI z3Z`Nw%$S9EsA7&r(=5$ZiWK8)5XH}H zbX+>Gx&KzwiR|BY($gPHFWl$EwN9~&$D&!=s>ir)MGFG8wUj+S<mqtRe*q+a&BFIG?Zp|2z z*>+H6J(C z$xcv!ylE1(QIz!riMph79lyC%!m=1{>QHKm_&+p#by!p11GkbQEz+qd9WrWC6Hq!t zq)TE_($X;r0i|2IOS+qhba!`m3;YrY>fU#@f=R`+(!AUKk;#gGwtJoY^H(r!VLN-v zXMe{IJ$f${LHGDfOZ!|!{mi~0Bi=hMcfC(G(FM<*N;#Fe%$vcJ>}zE>w%I*NK}h^ zJKtSbD)5T-IKP6i(0(|S2Z7ta0q&ewe5uzV*H~#MjI#RwSpYs{k`d(b583}|-!B8u zHj5Ww=aM^961!Fg4Y29U6LHPtuKR2@%duN>CT$mqqbz}LGoRA(*1I}j=+-g787T{Z zSBnqE;+k^uZ<8mHlKbh+VfK~*CqNedn*B>pJ|B_GJc`g?p^QD~1(7`fjveV%is8~> zc>9C9{EJ5=BmQp!=C4hsA7`befshAV9Lx{Md7Ffs{d9g!vD z2q_tuwEM-^%o(G0`yd~oq1T#a%SiKC=8;81tcK+mYKm9IOxZ3%)@A*_ihEs#Rjl~! zq|dnXi~_N&P`s{N=y`7-W`Jdtp(B54w6Xn{$~ z=k-wun8tbZ2uG-08aem?O`uL6vs&kTW+Cp_o7oAZavT2X4)B7%au0YSC?*@`gnj~4 z-*>cRA>6daVUN?$%j#Vb>G4=Rax`bzR|839R@zj!p%iX)(!smu`-9u-D3HPZfz)EF zcO4(}A2}f4h7zzHgw;ZXWyPuw>!~g`YXO&VqV0fwyup73OeSX0f$^!9bP)_+>CJv^ zx24gpI;SvQ!#sy#wHCA@S`*CNYs_Z{Q( zOkU}R{$(qXLZec4%#oR>n;O@dAKg|nzp5D-@5t90G;SoDbyzx` zI#&F<8NAnvi--9^1{_diw$7#J`hpojy~yx98qJ-0e;X#YtuLJi37n)a&swziqcNyDC1V(=HKtYoxjxot-DBg&Ac{dm&8D z`h1%sFQYcoYhCA#GzXcrl!JWy{GvOMLo8DCSyBwxC$`fCFOA{-&$vK25L}BHwqHdn za0hYf_ijN>jqR-~CvXh>=x3!J8>tu|T)XzLwWWVyoq_(~eLx;F7;vwiKou>iGWPm7 zsYa0AYp15gb$53D_qHc6qfCBj*;&kqcr2HdEzDy6bdzxW=k9vIXr5EUvbH3S@64?iV9@ zzr6ZFktLu6IsdP6irsf<^5)US6hYWmVvmc-C@zed z3*v`f1XwP8%&72t5Zz@%T=6r*Zwux+1?vw|Tre_beXz&Bz^$&v8ZzzAkulcK>RF$0 zrD$yzz`&iDoiaH7wXUi(#Zn)4)?K8JG3sd~cW`~Fj%s`6g4s(0cVW9Y z4u(i`Qm$Toc}tb2%7J7NT66lfVTXFHVuJ&EeuhirK)u6w^hFAqG}>c+0L)GUqn zm>}3U`8-|ELWY^$q0W@oh{jYfJ*$&S<3Lme+;ak*Ldbv4WOooAdy~fAOo%$47BF&r zk5oVWV>XBRN}_Ez`<>+sb2@phj^c%zh^vn`j5lCP>zh?DRCp-ikXMP6qkJ#49_#&m zf6D1-S}Yia;W<>nJ%pevFmm7Lulcrw_6h4~_}F7DGm*aZpv14m zDs3L!Xge*Z=#LYP5@8j#Jru8eo{eZSS`Fo;HK{As$Z@^zg^K-7<)fG*LQnQ`85&jM zDZFsXFU^8;OE86yscZmWrSAaVH|}=Oa2^-$r$AP!yDn3lq}2ifFcvNQxw~GeWM(efq0#~7e!v9zfl@y zUsm-IPZ`3Vb&_iAd2v6*B6222kSE2C8(XqVqhF()oA|cM_W5GhG2Qc4DDCk9b5^u= zDr`x62X>BB%esS&E=(@-5kfZ90lSggyOULBya{F=8OWRMlwos-OHCxu3gmqj>I834-9I zgv7aLQ=3z4j(piK=aYvI>s~<=l=}O=$==9*pdB$_#N6+`JgNenu1o^F>rC1Np*U6g1WJpPsmLXPlNfXz-|V@eF~5tX zdxJwkSQ!n*B-c#up16}3l|zAzKtaBH^pA$C?Zp7!bclxwfOtX&7Xr+TSFd=6_=WcaijX&)`?-W;prX$`XFa6&b5b_|e_# z)bgO$M#SOleZT|(b9cKdYS_EL^4I(fcfz$M`&>PN<%%R8k+di}67P#gteMbr+?`_D zgLD3S+|Nn-k-I!doeYMSG{ewtAwL#v%T+9=+t)z9UPOkZXRJlr6B1`i-(el^TK3Q&E?l!w^o|fFs8f2F91&&KxHh z-u70~Ota_Go-{VNM-Xdl-VlLk?GqHdWyv>S7^=QT*!?Wz4wlq_gJ1}Wh{3Bty?}rAdV?jF7YV1V z>o2x7fof+haJMP306q_T&mmZfKVF-!3kkkNSX+{$_?P5DD7xYV)2Fwg&E+vhK*(Wx zsP*&~z$Ouz8ZPD>{@JIC<#y67QrtX6G~ce9T5hLwT$ zx7X)cFXTg)hLJQn-Qs5ZV8wJ7CN zcQIt#^q?1C`whu3HkB2baGY_YH>rYamTYcPf=->0!onu+0_G{-{ry%tnIJt0UHxmu z-0fZf4cm^9yt+P`Mv&i=-np~D%_o;p(6HO-_l7zL(ezp=Ic71CfXIakY~{-BF)e@Y zKfAWt{!>ld0cg`crgIMS4&5n^p}sfT%LZU9rjDkML1q%v_wv3)dR`&B;RvBd?-*tF zd)7g(DhS%W{v`DVacd_aQ}L~;#jcvH;yt~kr_I0zk(Q&P>ki7Nwd8=TKfeut_HVT* z$6f0@Dn1PfTf6GA5i~^7u23UnUFrjUCde~*hb40$w{VX;1YvX>^bd?&ThXm4VGyzv znD6WpL~Ktg)W4bM5#{^#_qq4!E7|aYr@Ulg9?%fh6rE|*{#UynLbi4`G$PTyU zs-~j7b$3|63rO3^QkAJfe%<6VXIY zb?6!P$8^z$S?q*<4zy8~2{-YcsxOk(eYM%ptDtAU>h)Vw zHyB>aJwg=QD?hG1w!B$yihOGJ=#e#MTz5!|lQad=dBoOoOQkJ}(mv1PEKB}FSv7B3 z4>E{A&bs{tS{-bE-!z;3{SUO<@Hr`H>RtPU9?;GaAA%GAHJ=mCiuV%@rrYPSxiVY$ zS8j#|%Zm%zTzBNZKlnZhUHdu-dA?ZvMGxs{x* zFawFO+($N_cp3XZ@CO$2+Cp>Pg(r(#0B_5Q&eFQ?R_fDSdFnn??gg42*VgV&*Y324 zYL{jBFd>`#uCT-D9V`noj#o)Erxm~)nghK)+#Pz_VE-T^gAjU*({h~$?TOxyw}N-w z4;D;oCW;|55Jhen<4mZfHB^bL?N$nCGe2Aol2(O0Uws^Q{Oyb*)qT<%aMK$$H0RD( zvy5$Szo^cAkKyp1v|e`#vJ5*-6gK4}_q#lH9lm3Yo9t(O#!jC8QhPjuU!MGLsbkw8uS8|edLMC8{0L6Vngy?sjH>?kpQGyH30c<0iD}{bPEP-HAzH+z_}AK zZt_eJ-!{zsA<`a!{}Jo=?e|;g=j>y3cA@zafvEVu8+O3l_J*!=# zFVjuusU!jRz*c^bN`d9I{+RN3VCoT0aN~y>w8X;PyvA*^>saX&sjAhk`*|#^s*OPL z-6k#PT>R={iqd=Eb;9{|zd?4rCyBCE{%UDnK#DnMXuCf|#PR1;Jygz1RtB@Mg(es@|J~ObH5A-7Di4qdtJ>4^I8p%n}bl&4V zneUb?Z%zFc32TCzs3aY8&-}QVGY0xm+rHGgEQ1$Y;{lJHBv`rfH6_$0Swy~sXLv1! z6}p`&wA{y!5Ar)9iEWw173O4WC=_*#Ulbd|YzS`Jn$5 zbLY01PhvZ=Kc#zdkuTVA`3t9W?Fv~Jx_=1r}xz;FwcABw& zx*PxE&0W{pI0iyWId~&F|FM29@oFCh=ID6h2>T(9`wrGa8%zLnf{EK?J{@e!`oI8C z=<2|HfbS3F%}oPPvOzgCiiNETGLE7xqG$Fnn`kLH1P=c!9Y8Q*!LSeeEu| zYrk;4dV9SWZXE|Ikt0w##E8fM3de))L(u8q+LxXTRVRMNm1Lo*3e7e)5!ENjo4=ZnC#?$=ZR=clH?rO*9N2GUi`KYgE$N5vrD6GZ+M4A@}u zcs|~QC6p_>y^&=X?*Ma@`pzFO^4h59O`r2mM<-Hp2D~NE^mExczB@=b2yM|D{f!X^PgpVfq=(--i;(*JE5^87D31K6Dc=W~e2$5r69A_DatoEe4ko0_Q|JpYc z^|x{-PPjNv`lM%;7A`s%d8L`4V%>DM=b+HS0SxtqeRmqIDCtib_-@jARQ=9$rJ?Ml zi~M4dE@QIVmKGhBi$@0;mRQo8=bIxm!vxm`p4xl zNE5i*$^&@RZ$M&JOCb3z)Xv+otP?RmHN|J$;hmA;J_)qsgqFP*pa)n`h`msA%o4%d zrzN~C*AE}*8Qzt-T}0LDb`Y3ZjLUIgN`!)UPFXYKljPq=T+&qPixNCn<$n3m?KASw zAt%%yYDa{w$O4!d=`xNQMt9M9b-_*0a;zw=ix|V-fq9ULA0l&GpHu_shExpFj^jb> zwX@q0>+P7vz}dw{(>Ns(IG4Y@)a1{e4{V{eAChTy_Wpjo5^hp1gQ}6WB-&k9WXGEK zcjypANwFXK#fN^mL3zpo5Hbcg-A!A&HJ0F&7QL=b$=RWrfTsWg5!tLC7H`)Y&_i0n;)V4R zPHqZ$dX?n8)}8SHJ4nl9Edx#+^uqM+?2UYp5v_+g;hP5$Ikk;4S0W*c&N|a^KM9ov zD%*85%L<)DJ_y*)1T2x%NpnRBO(xndJ*Fhga)x`ilz< zl%<_g6c4AAhxfb$1T%^dl1iTO&ojwB99{_fHI&qAX0fr8r$#fk3E)W)E+;|zPvnD#KQ|;;g`SE1Ua8#FjlQ#0Yc8}>v3oYF zbQ9K4{&pzJR!OBnyLp0Bj^0%0ATXM$~%F+8A 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

TiTLD>&;7!A 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≷m>&qpud2bFMGp$`(1h<|#Tl0V_#Srk8CMkK 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%0AffN3f1OvKrR0#ZFo@xg~WjIF#2HK+pn3vr2&e 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 M_pVOEE&I6t3!zm*sQ>@~ literal 0 HcmV?d00001 diff --git a/x/icaoracle/ibc_middleware.go b/x/icaoracle/ibc_middleware.go new file mode 100644 index 0000000000..6efb8e40aa --- /dev/null +++ b/x/icaoracle/ibc_middleware.go @@ -0,0 +1,179 @@ +package icaoracle + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" +) + +var _ porttypes.Middleware = &IBCMiddleware{} + +type IBCMiddleware struct { + app porttypes.IBCModule + keeper keeper.Keeper +} + +// NewIBCMiddleware creates a new IBCMiddleware given the keeper +func NewIBCMiddleware(app porttypes.IBCModule, k keeper.Keeper) IBCMiddleware { + return IBCMiddleware{ + app: app, + keeper: k, + } +} + +// OnChanOpenInit implements the IBCMiddleware interface +func (im IBCMiddleware) OnChanOpenInit( + ctx sdk.Context, + order channeltypes.Order, + connectionHops []string, + portID string, + channelID string, + channelCap *capabilitytypes.Capability, + counterparty channeltypes.Counterparty, + version string, +) (string, error) { + return im.app.OnChanOpenInit( + ctx, + order, + connectionHops, + portID, + channelID, + channelCap, + counterparty, + version, + ) +} + +// OnChanOpenTry simply passes down the to next middleware stack +func (im IBCMiddleware) OnChanOpenTry( + ctx sdk.Context, + order channeltypes.Order, + connectionHops []string, + portID, + channelID string, + chanCap *capabilitytypes.Capability, + counterparty channeltypes.Counterparty, + counterpartyVersion string, +) (string, error) { + return im.app.OnChanOpenTry(ctx, order, connectionHops, portID, channelID, chanCap, counterparty, counterpartyVersion) +} + +// OnChanOpenAck implements the IBCMiddleware interface +func (im IBCMiddleware) OnChanOpenAck( + ctx sdk.Context, + portID string, + channelID string, + counterpartyChannelID string, + counterpartyVersion string, +) error { + im.keeper.Logger(ctx).Info(fmt.Sprintf("OnChanOpenAck (ICAOracle): portID %s, channelID %s, counterpartyChannelID %s, counterpartyVersion %s", + portID, channelID, counterpartyChannelID, counterpartyVersion)) + + if err := im.keeper.OnChanOpenAck(ctx, portID, channelID); err != nil { + im.keeper.Logger(ctx).Error(fmt.Sprintf("ICAOracle ChanOpenAck failed: %s", err.Error())) + return errorsmod.Wrapf(err, "ICAOracle OnChanOpenAck failed") + } + + return im.app.OnChanOpenAck( + ctx, + portID, + channelID, + counterpartyChannelID, + counterpartyVersion, + ) +} + +// OnChanCloseConfirm simply passes down the to next middleware stack +func (im IBCMiddleware) OnChanCloseConfirm( + ctx sdk.Context, + portID, + channelID string, +) error { + return im.app.OnChanCloseConfirm(ctx, portID, channelID) +} + +// OnChanCloseInit simply passes down the to next middleware stack +func (im IBCMiddleware) OnChanCloseInit( + ctx sdk.Context, + portID, + channelID string, +) error { + return im.app.OnChanCloseInit(ctx, portID, channelID) +} + +// OnChanOpenConfirm simply passes down the to next middleware stack +func (im IBCMiddleware) OnChanOpenConfirm( + ctx sdk.Context, + portID, + channelID string, +) error { + return im.app.OnChanOpenConfirm(ctx, portID, channelID) +} + +// OnAcknowledgementPacket simply passes down the to next middleware stack +// The Ack handling and routing is managed by icacallbacks +func (im IBCMiddleware) OnAcknowledgementPacket( + ctx sdk.Context, + packet channeltypes.Packet, + acknowledgement []byte, + relayer sdk.AccAddress, +) error { + return im.app.OnAcknowledgementPacket(ctx, packet, acknowledgement, relayer) +} + +// OnTimeoutPacket simply passes down the to next middleware stack +// The Ack handling and routing is managed by icacallbacks +func (im IBCMiddleware) OnTimeoutPacket( + ctx sdk.Context, + packet channeltypes.Packet, + relayer sdk.AccAddress, +) error { + return im.app.OnTimeoutPacket(ctx, packet, relayer) +} + +// OnRecvPacket simply passes down the to next middleware stack +func (im IBCMiddleware) OnRecvPacket( + ctx sdk.Context, + packet channeltypes.Packet, + relayer sdk.AccAddress, +) ibcexported.Acknowledgement { + return im.app.OnRecvPacket(ctx, packet, relayer) +} + +// SendPacket implements the ICS4 Wrapper interface but is not utilized in the ICA stack +func (im IBCMiddleware) SendPacket( + ctx sdk.Context, + chanCap *capabilitytypes.Capability, + sourcePort string, + sourceChannel string, + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, + data []byte, +) (sequence uint64, err error) { + panic("UNIMPLEMENTED") +} + +// WriteAcknowledgement implements the ICS4 Wrapper interface +// but is not utilized in the bottom of ICA stack +func (im IBCMiddleware) WriteAcknowledgement( + ctx sdk.Context, + chanCap *capabilitytypes.Capability, + packet ibcexported.PacketI, + ack ibcexported.Acknowledgement, +) error { + panic("UNIMPLEMENTED") +} + +// GetAppVersion implements the ICS4 Wrapper interface +// but is not utilized in the bottom of ICA stack +func (im IBCMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) { + panic("UNIMPLEMENTED") +} diff --git a/x/icaoracle/keeper/abci.go b/x/icaoracle/keeper/abci.go new file mode 100644 index 0000000000..87aca7e887 --- /dev/null +++ b/x/icaoracle/keeper/abci.go @@ -0,0 +1,10 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// EndBlocker of icaoracle module +func (k Keeper) EndBlocker(ctx sdk.Context) { + k.PostAllQueuedMetrics(ctx) +} diff --git a/x/icaoracle/keeper/events.go b/x/icaoracle/keeper/events.go new file mode 100644 index 0000000000..723c37111a --- /dev/null +++ b/x/icaoracle/keeper/events.go @@ -0,0 +1,47 @@ +package keeper + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// Emits an event for an oracle update +func EmitUpdateOracleEvent(ctx sdk.Context, metric types.Metric) { + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeUpdateOracle, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyOracleChainId, metric.DestinationOracle), + sdk.NewAttribute(types.AttributeKeyMetricID, metric.GetMetricID()), + sdk.NewAttribute(types.AttributeKeyMetricKey, metric.Key), + sdk.NewAttribute(types.AttributeKeyMetricValue, metric.Value), + sdk.NewAttribute(types.AttributeKeyMetricType, metric.MetricType), + sdk.NewAttribute(types.AttributeKeyMetricUpdateTime, fmt.Sprintf("%d", metric.UpdateTime)), + sdk.NewAttribute(types.AttributeKeyMetricBlockHeight, fmt.Sprintf("%d", metric.BlockHeight)), + ), + ) +} + +// Emits an event for an oracle update +func EmitUpdateOracleAckEvent(ctx sdk.Context, metric *types.Metric, ackStatus string) { + if metric == nil { + return + } + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeUpdateOracleAck, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyOracleChainId, metric.DestinationOracle), + sdk.NewAttribute(types.AttributeKeyMetricID, metric.GetMetricID()), + sdk.NewAttribute(types.AttributeKeyMetricAckStatus, ackStatus), + sdk.NewAttribute(types.AttributeKeyMetricKey, metric.Key), + sdk.NewAttribute(types.AttributeKeyMetricValue, metric.Value), + sdk.NewAttribute(types.AttributeKeyMetricType, metric.MetricType), + sdk.NewAttribute(types.AttributeKeyMetricUpdateTime, fmt.Sprintf("%d", metric.UpdateTime)), + sdk.NewAttribute(types.AttributeKeyMetricBlockHeight, fmt.Sprintf("%d", metric.BlockHeight)), + ), + ) +} diff --git a/x/icaoracle/keeper/genesis.go b/x/icaoracle/keeper/genesis.go new file mode 100644 index 0000000000..2d4728e8d2 --- /dev/null +++ b/x/icaoracle/keeper/genesis.go @@ -0,0 +1,31 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// InitGenesis initializes the capability module's state from a provided genesis +// state. +func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) { + if err := genState.Validate(); err != nil { + panic(err) + } + for _, oracle := range genState.Oracles { + k.SetOracle(ctx, oracle) + } + for _, metric := range genState.Metrics { + k.SetMetric(ctx, metric) + } +} + +// ExportGenesis returns the capability module's exported genesis. +func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { + genesis := types.DefaultGenesis() + + genesis.Oracles = k.GetAllOracles(ctx) + genesis.Metrics = k.GetAllMetrics(ctx) + + return genesis +} diff --git a/x/icaoracle/keeper/genesis_test.go b/x/icaoracle/keeper/genesis_test.go new file mode 100644 index 0000000000..b6f7c335b1 --- /dev/null +++ b/x/icaoracle/keeper/genesis_test.go @@ -0,0 +1,28 @@ +package keeper_test + +import ( + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) TestGenesis() { + oracle := types.Oracle{ + ChainId: "chain", + } + metric := types.Metric{ + Key: "key", + UpdateTime: int64(1), + DestinationOracle: "chain", + Status: types.MetricStatus_QUEUED, + } + + genesisState := types.GenesisState{ + Params: types.Params{}, + Oracles: []types.Oracle{oracle}, + Metrics: []types.Metric{metric}, + } + + s.App.ICAOracleKeeper.InitGenesis(s.Ctx, genesisState) + exported := s.App.ICAOracleKeeper.ExportGenesis(s.Ctx) + + s.Require().Equal(genesisState, *exported) +} diff --git a/x/icaoracle/keeper/grpc_query.go b/x/icaoracle/keeper/grpc_query.go new file mode 100644 index 0000000000..a2761828cc --- /dev/null +++ b/x/icaoracle/keeper/grpc_query.go @@ -0,0 +1,60 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +var _ types.QueryServer = Keeper{} + +// Query a specific oracle +func (k Keeper) Oracle(c context.Context, req *types.QueryOracleRequest) (*types.QueryOracleResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + oracle, found := k.GetOracle(ctx, req.ChainId) + if !found { + return &types.QueryOracleResponse{}, types.ErrOracleNotFound + } + + return &types.QueryOracleResponse{Oracle: &oracle}, nil +} + +// Query all oracles with s +func (k Keeper) AllOracles(c context.Context, req *types.QueryAllOraclesRequest) (*types.QueryAllOraclesResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + oracles := k.GetAllOracles(ctx) + return &types.QueryAllOraclesResponse{Oracles: oracles}, nil +} + +// Query all oracles with a filter on whether they are currently active +func (k Keeper) ActiveOracles(c context.Context, req *types.QueryActiveOraclesRequest) (*types.QueryActiveOraclesResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + oracles := []types.Oracle{} + for _, oracle := range k.GetAllOracles(ctx) { + if oracle.Active == req.Active { + oracles = append(oracles, oracle) + } + } + return &types.QueryActiveOraclesResponse{Oracles: oracles}, nil +} + +// Query metrics with optional filters +func (k Keeper) Metrics(c context.Context, req *types.QueryMetricsRequest) (*types.QueryMetricsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + metrics := []types.Metric{} + for _, metric := range k.GetAllMetrics(ctx) { + metricKeyMatch := req.MetricKey == "" || req.MetricKey == metric.Key + metricOracleMatch := req.OracleChainId == "" || req.OracleChainId == metric.DestinationOracle + + if metricKeyMatch && metricOracleMatch { + metrics = append(metrics, metric) + } + } + + return &types.QueryMetricsResponse{Metrics: metrics}, nil +} diff --git a/x/icaoracle/keeper/grpc_query_test.go b/x/icaoracle/keeper/grpc_query_test.go new file mode 100644 index 0000000000..e191013132 --- /dev/null +++ b/x/icaoracle/keeper/grpc_query_test.go @@ -0,0 +1,114 @@ +package keeper_test + +import ( + "context" + "fmt" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) TestQueryOracle() { + allOracles := s.CreateTestOracles() + for _, expectedOracle := range allOracles { + queryResponse, err := s.QueryClient.Oracle(context.Background(), &types.QueryOracleRequest{ + ChainId: expectedOracle.ChainId, + }) + s.Require().NoError(err, "no error expected when querying oracle %s", expectedOracle.ChainId) + s.Require().Equal(expectedOracle, *queryResponse.Oracle) + } +} + +func (s *KeeperTestSuite) TestQueryAllOracles() { + expectedOracles := s.CreateTestOracles() + queryResponse, err := s.QueryClient.AllOracles(context.Background(), &types.QueryAllOraclesRequest{}) + s.Require().NoError(err, "no error expected when querying all oracles") + s.Require().ElementsMatch(expectedOracles, queryResponse.Oracles) +} + +func (s *KeeperTestSuite) TestQueryActiveOracles() { + // Add 6 oracles, alternating each oracle between active and inactive + activeOracles := []types.Oracle{} + inActiveOracles := []types.Oracle{} + for i := 1; i <= 6; i++ { + oracle := types.Oracle{ChainId: fmt.Sprintf("chain-%d", i)} + if i%2 == 0 { + oracle.Active = true + activeOracles = append(activeOracles, oracle) + } else { + oracle.Active = false + inActiveOracles = append(inActiveOracles, oracle) + } + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + } + + // Query active oracles + activeOraclesResponse, err := s.QueryClient.ActiveOracles(context.Background(), &types.QueryActiveOraclesRequest{ + Active: true, + }) + s.Require().NoError(err, "no error expected when querying active oracles") + s.Require().ElementsMatch(activeOracles, activeOraclesResponse.Oracles) + + // Query inactive oracles + inActiveOraclesResponse, err := s.QueryClient.ActiveOracles(context.Background(), &types.QueryActiveOraclesRequest{ + Active: false, + }) + s.Require().NoError(err, "no error expected when querying inactive oracles") + s.Require().ElementsMatch(inActiveOracles, inActiveOraclesResponse.Oracles) +} + +func (s *KeeperTestSuite) TestQueryMetrics() { + filterMetricKey := "key-2" + filterOracleChainId := "chain-2" + + // Add metrics across 2 keys and 2 oracles + updatesByMetric := make(map[string][]types.Metric) + updatesByOracle := make(map[string][]types.Metric) + allMetrics := []types.Metric{ + {Key: "key-1", DestinationOracle: "chain-1", Status: types.MetricStatus_IN_PROGRESS}, + {Key: "key-2", DestinationOracle: "chain-1", Status: types.MetricStatus_IN_PROGRESS}, + {Key: "key-1", DestinationOracle: "chain-2", Status: types.MetricStatus_IN_PROGRESS}, + {Key: "key-2", DestinationOracle: "chain-2", Status: types.MetricStatus_IN_PROGRESS}, + } + for _, metric := range allMetrics { + key := metric.Key + chainId := metric.DestinationOracle + + updatesByMetric[key] = append(updatesByMetric[key], metric) + updatesByOracle[chainId] = append(updatesByOracle[chainId], metric) + + s.App.ICAOracleKeeper.SetMetric(s.Ctx, metric) + } + + // First check with no filters + expectedNoFilters := allMetrics + queryResponse, err := s.QueryClient.Metrics(s.Ctx, &types.QueryMetricsRequest{}) + s.Require().NoError(err, "no error expected when querying pending metric updates with no filter") + s.Require().ElementsMatch(expectedNoFilters, queryResponse.Metrics, "no filter") + + // Check with a filter on the metric (metric key == "key-2") + queryResponse, err = s.QueryClient.Metrics(s.Ctx, &types.QueryMetricsRequest{ + MetricKey: filterMetricKey, + }) + s.Require().NoError(err, "no error expected when querying pending metric updates with metric key filter") + s.Require().ElementsMatch(updatesByMetric[filterMetricKey], queryResponse.Metrics, "metric key filter") + + // Check with a filter on the oracle (chain-id == "chain-2") + queryResponse, err = s.QueryClient.Metrics(s.Ctx, &types.QueryMetricsRequest{ + OracleChainId: filterOracleChainId, + }) + s.Require().NoError(err, "no error expected when querying pending metric updates with oracle filter") + s.Require().ElementsMatch(updatesByOracle[filterOracleChainId], queryResponse.Metrics, "chain-id filter") + + // Check with a filter on both the metric and oracle (metric key == "key2", chain-id == "chain-2") + expectedMetricAndOracleFilter := []types.Metric{{ + Key: filterMetricKey, + DestinationOracle: filterOracleChainId, + Status: types.MetricStatus_IN_PROGRESS, + }} + queryResponse, err = s.QueryClient.Metrics(s.Ctx, &types.QueryMetricsRequest{ + MetricKey: filterMetricKey, + OracleChainId: filterOracleChainId, + }) + s.Require().NoError(err, "no error expected when querying pending metric updates with metric key and oracle filter") + s.Require().ElementsMatch(expectedMetricAndOracleFilter, queryResponse.Metrics, "metric and chain filter") +} diff --git a/x/icaoracle/keeper/ibc.go b/x/icaoracle/keeper/ibc.go new file mode 100644 index 0000000000..a98c19ab35 --- /dev/null +++ b/x/icaoracle/keeper/ibc.go @@ -0,0 +1,96 @@ +package keeper + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" + icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" + icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + + icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { + // Get the connectionId from the port and channel + connectionId, _, err := k.ChannelKeeper.GetChannelConnection(ctx, portID, channelID) + if err != nil { + return errorsmod.Wrapf(err, "unable to get connection from channel (%s) and port (%s)", channelID, portID) + } + + // If the callback is not for an oracle ICA, it should do nothing and then pass the ack down to stakeibc + oracle, found := k.GetOracleFromConnectionId(ctx, connectionId) + if !found { + return nil + } + expectedOraclePort, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(oracle.ChainId, types.ICAAccountType_Oracle)) + if err != nil { + return err + } + if portID != expectedOraclePort { + return nil + } + + // If this callback is for an oracle channel, store the ICA address and channel on the oracle struct + // Get the associated ICA address from the port and connection + icaAddress, found := k.ICAControllerKeeper.GetInterchainAccountAddress(ctx, connectionId, portID) + if !found { + return errorsmod.Wrapf(icatypes.ErrInterchainAccountNotFound, "unable to get ica address from connection (%s)", connectionId) + } + k.Logger(ctx).Info(fmt.Sprintf("Oracle ICA registered to channel %s and address %s", channelID, icaAddress)) + + // Update the ICA address and channel in the oracle + oracle.IcaAddress = icaAddress + oracle.ChannelId = channelID + oracle.PortId = portID + + k.SetOracle(ctx, oracle) + + return nil +} + +func (k Keeper) SubmitICATx(ctx sdk.Context, tx types.ICATx) error { + // Validate the ICATx struct has all the required fields + if err := tx.ValidateICATx(); err != nil { + return err + } + + // Serialize tx messages + txBz, err := icatypes.SerializeCosmosTx(k.cdc, tx.Messages) + if err != nil { + return errorsmod.Wrapf(err, "unable to serialize cosmos transaction") + } + packetData := icatypes.InterchainAccountPacketData{ + Type: icatypes.EXECUTE_TX, + Data: txBz, + } + + // Submit ICA and grab sequence number for the callback key + icaMsgServer := icacontrollerkeeper.NewMsgServerImpl(&k.ICAControllerKeeper) + msgSendTx := icacontrollertypes.NewMsgSendTx(tx.Owner, tx.ConnectionId, tx.GetRelativeTimeoutNano(), packetData) + res, err := icaMsgServer.SendTx(ctx, msgSendTx) + if err != nil { + return errorsmod.Wrapf(err, "unable to send ICA tx") + } + sequence := res.Sequence + + // Store the callback data + callbackArgsBz, err := proto.Marshal(tx.CallbackArgs) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal callback") + } + callbackData := icacallbacktypes.CallbackData{ + CallbackKey: icacallbacktypes.PacketID(tx.PortId, tx.ChannelId, sequence), + PortId: tx.PortId, + ChannelId: tx.ChannelId, + Sequence: sequence, + CallbackId: tx.CallbackId, + CallbackArgs: callbackArgsBz, + } + k.ICACallbacksKeeper.SetCallbackData(ctx, callbackData) + + return nil +} diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go new file mode 100644 index 0000000000..df1ff3b273 --- /dev/null +++ b/x/icaoracle/keeper/ibc_test.go @@ -0,0 +1,225 @@ +package keeper_test + +import ( + "time" + + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + proto "github.com/cosmos/gogoproto/proto" + + icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// ------------------------------------------ +// OnChanOpenAck +// ------------------------------------------ + +type OnChanOpenAckTestCase struct { + ChannelId string + PortId string + ICAAddress string + InitialOracle types.Oracle +} + +func (s *KeeperTestSuite) SetupTestOnChanOpenAck() OnChanOpenAckTestCase { + // Create clients, connections, and an oracle ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) + channelId := s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Get ica address that was just created + icaAddress, found := s.App.ICAControllerKeeper.GetInterchainAccountAddress(s.Ctx, ibctesting.FirstConnectionID, portId) + s.Require().True(found, "ICA account should have been created") + s.Require().NotEmpty(icaAddress, "ICA Address should not be empty") + + // Add an oracle + oracle := types.Oracle{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + } + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Confirm the oracle was stored + _, found = s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should be in the store during setup") + + return OnChanOpenAckTestCase{ + ChannelId: channelId, + PortId: portId, + ICAAddress: icaAddress, + InitialOracle: oracle, + } +} + +func (s *KeeperTestSuite) TestOnChanOpenAck_Success() { + tc := s.SetupTestOnChanOpenAck() + + // Call callback + err := s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, tc.PortId, tc.ChannelId) + s.Require().NoError(err, "no error expected when calling OnChanOpenAck") + + // Confirm oracle was updated + expectedOracle := tc.InitialOracle + expectedOracle.ChannelId = tc.ChannelId + expectedOracle.PortId = tc.PortId + expectedOracle.IcaAddress = tc.ICAAddress + + actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should have been found") + s.Require().Equal(expectedOracle, actualOracle, "oracle should have updated") +} + +func (s *KeeperTestSuite) TestOnChanOpenAck_ConnectionNotFound() { + tc := s.SetupTestOnChanOpenAck() + + // Pass a different channel-id - the connection should not be found and the callback should error + err := s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, tc.PortId, "fake_channel") + s.Require().ErrorContains(err, "unable to get connection from channel (fake_channel) and port") +} + +func (s *KeeperTestSuite) TestOnChanOpenAck_NoOracle() { + tc := s.SetupTestOnChanOpenAck() + + // Update the oracle to have a different connection so it cannoth be found + oracle := tc.InitialOracle + oracle.ConnectionId = "different_connection_id" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // The callback should not fail (as it can be called by non-oracle callbacks) + // But the oracle should not be updated + err := s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, tc.PortId, tc.ChannelId) + s.Require().NoError(err, "no error expected when calling OnChanOpenAck") + + actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should have been found") + s.Require().Equal(oracle, actualOracle, "oracle should not have updated") +} + +func (s *KeeperTestSuite) TestOnChanOpenAck_NotOracleChannel() { + tc := s.SetupTestOnChanOpenAck() + + // Create non-oracle ICA channel and use that for the callback + owner := types.FormatICAAccountOwner(HostChainId, "NOT_ORACLE") + differentChannelId := s.CreateICAChannel(owner) + differentPortId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // The callback should succeed but the oracle should not be updated + err = s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, differentPortId, differentChannelId) + s.Require().NoError(err, "no error expected when calling OnChanOpenAck") + + actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should have been found") + s.Require().Equal(tc.InitialOracle, actualOracle, "oracle should not have updated") +} + +func (s *KeeperTestSuite) TestOnChanOpenAck_NoICAAddress() { + tc := s.SetupTestOnChanOpenAck() + + // Update the oracle's channel/port to map to a different connection + differentConnectionId := "connection-2" + connection := connectiontypes.ConnectionEnd{} + s.App.IBCKeeper.ConnectionKeeper.SetConnection(s.Ctx, differentConnectionId, connection) + + channel := channeltypes.Channel{ + ConnectionHops: []string{differentConnectionId}, + } + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, tc.PortId, tc.ChannelId, channel) + + // Update the oracle struct to use the different connection as well + oracle := tc.InitialOracle + oracle.ConnectionId = differentConnectionId + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + err := s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, tc.PortId, tc.ChannelId) + s.Require().ErrorContains(err, "unable to get ica address from connection") +} + +// ------------------------------------------ +// SubmitICATx +// ------------------------------------------ + +func (s *KeeperTestSuite) SetupTestSubmitICATx() (tx types.ICATx, callbackBz []byte) { + // Create clients, connections, and an oracle ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) + channelId := s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Callback args (we can use any callback type here) + callback := types.InstantiateOracleCallback{OracleChainId: HostChainId} + callbackBz, err = proto.Marshal(&callback) + s.Require().NoError(err, "no error expected when serializing callback args") + + // Return a valid ICATx + return types.ICATx{ + ConnectionId: ibctesting.FirstConnectionID, + ChannelId: channelId, + PortId: portId, + Owner: owner, + Messages: []proto.Message{&banktypes.MsgSend{}}, + RelativeTimeout: time.Second, + CallbackId: "callback_id", + CallbackArgs: &callback, + }, callbackBz +} + +func (s *KeeperTestSuite) TestSubmitICATx_Success() { + icaTx, callbackBz := s.SetupTestSubmitICATx() + + // Submit ICA + err := s.App.ICAOracleKeeper.SubmitICATx(s.Ctx, icaTx) + s.Require().NoError(err, "no error expected when submitting ICA") + + // Confirm callback data was stored + sequence := uint64(1) + callbackKey := icacallbacktypes.PacketID(icaTx.PortId, icaTx.ChannelId, sequence) + + expectedCallbackData := icacallbacktypes.CallbackData{ + CallbackKey: callbackKey, + PortId: icaTx.PortId, + ChannelId: icaTx.ChannelId, + Sequence: sequence, + CallbackId: icaTx.CallbackId, + CallbackArgs: callbackBz, + } + actualCallbackData, found := s.App.IcacallbacksKeeper.GetCallbackData(s.Ctx, callbackKey) + s.Require().True(found, "callback data should have been found") + s.Require().Equal(expectedCallbackData, actualCallbackData, "callback data") +} + +func (s *KeeperTestSuite) TestSubmitICATx_InvalidICATx() { + icaTx, _ := s.SetupTestSubmitICATx() + + // Submit ICA without a connection-id - should fail + icaTx.ConnectionId = "" + err := s.App.ICAOracleKeeper.SubmitICATx(s.Ctx, icaTx) + s.Require().ErrorContains(err, "connection-id is empty: invalid ICA request") +} + +func (s *KeeperTestSuite) TestSubmitICATx_InvalidMessage() { + icaTx, _ := s.SetupTestSubmitICATx() + + // Submit ICA without a nil message - should fail + icaTx.Messages = []proto.Message{nil} + err := s.App.ICAOracleKeeper.SubmitICATx(s.Ctx, icaTx) + s.Require().ErrorContains(err, "unable to serialize cosmos transaction") +} + +func (s *KeeperTestSuite) TestSubmitICATx_SendFailure() { + icaTx, _ := s.SetupTestSubmitICATx() + + // Close the channel so that the ICA fails + s.UpdateChannelState(icaTx.PortId, icaTx.ChannelId, channeltypes.CLOSED) + + // Submit the ICA which should error + err := s.App.ICAOracleKeeper.SubmitICATx(s.Ctx, icaTx) + s.Require().ErrorContains(err, "unable to send ICA tx") +} diff --git a/x/icaoracle/keeper/icacallbacks.go b/x/icaoracle/keeper/icacallbacks.go new file mode 100644 index 0000000000..0a3df3a9e7 --- /dev/null +++ b/x/icaoracle/keeper/icacallbacks.go @@ -0,0 +1,23 @@ +package keeper + +import ( + icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" +) + +const ( + ICACallbackID_InstantiateOracle = "instantiate_oracle" + ICACallbackID_UpdateOracle = "update_oracle" +) + +func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { + return []icacallbackstypes.ICACallback{ + { + CallbackId: ICACallbackID_InstantiateOracle, + CallbackFunc: icacallbackstypes.ICACallbackFunction(k.InstantiateOracleCallback), + }, + { + CallbackId: ICACallbackID_UpdateOracle, + CallbackFunc: icacallbackstypes.ICACallbackFunction(k.UpdateOracleCallback), + }, + } +} diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go new file mode 100644 index 0000000000..27506d0550 --- /dev/null +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go @@ -0,0 +1,65 @@ +package keeper + +import ( + errorsmod "cosmossdk.io/errors" + + "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + + icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" +) + +// Callback after an instantiating an oracle's CW contract +// +// If successful: Stores the cosmwasm contract address on the oracle object +// If timeout/failure: Does nothing +func (k Keeper) InstantiateOracleCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { + // Fetch callback args + instantiateCallback := types.InstantiateOracleCallback{} + if err := proto.Unmarshal(args, &instantiateCallback); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal instantiate oracle callback") + } + chainId := instantiateCallback.OracleChainId + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_InstantiateOracle, "Starting instantiate oracle callback")) + + // Check for timeout/failure + // No action is necessary on a timeout + if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT || + ackResponse.Status == icacallbackstypes.AckResponseStatus_FAILURE { + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_InstantiateOracle, ackResponse.Status, packet)) + return nil + } + + k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_InstantiateOracle, + icacallbackstypes.AckResponseStatus_SUCCESS, packet)) + + // Get oracle from chainId + oracle, found := k.GetOracle(ctx, chainId) + if !found { + return types.ErrOracleNotFound + } + + // If the ICA was successful, store the contract address + if len(ackResponse.MsgResponses) != 1 { + return errorsmod.Wrapf(types.ErrInvalidICAResponse, + "tx response from CW contract instantiation should have 1 message (%d found)", len(ackResponse.MsgResponses)) + } + var instantiateContractResponse types.MsgInstantiateContractResponse + if err := proto.Unmarshal(ackResponse.MsgResponses[0], &instantiateContractResponse); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal instantiate contract response") + } + if instantiateContractResponse.Address == "" { + return errorsmod.Wrapf(types.ErrInvalidICAResponse, "response from CW contract instantiation ICA does not contain a contract address") + } + + // Update contract address and mark the oracle as active + oracle.ContractAddress = instantiateContractResponse.Address + oracle.Active = true + k.SetOracle(ctx, oracle) + + return nil +} diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go new file mode 100644 index 0000000000..34d76ee1d8 --- /dev/null +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go @@ -0,0 +1,166 @@ +package keeper_test + +import ( + "github.com/cosmos/gogoproto/proto" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +type InstantiateOracleCallbackTestCase struct { + ContractAddress string + ValidCallbackArgs []byte + ValidICAMsgResponse [][]byte + ValidAckResponse icacallbacktypes.AcknowledgementResponse +} + +func (s *KeeperTestSuite) SetupTestInstantiateOracleCallback() InstantiateOracleCallbackTestCase { + // Store oracle + s.App.ICAOracleKeeper.SetOracle(s.Ctx, types.Oracle{ + ChainId: HostChainId, + Active: false, + }) + + // Confirm it was stored + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should be in the store during setup") + + // Build ack response + contractAddress := "contract_address" + icaResponse := types.MsgInstantiateContractResponse{ + Address: contractAddress, + } + icaResponseBz, err := proto.Marshal(&icaResponse) + s.Require().NoError(err, "no error expected when marshalling contract response") + icaMsgResponse := [][]byte{icaResponseBz} + + // Build callback data + callbackArgs := types.InstantiateOracleCallback{ + OracleChainId: HostChainId, + } + callbackArgsBz, err := proto.Marshal(&callbackArgs) + s.Require().NoError(err, "no error expected when marshalling callback args") + + return InstantiateOracleCallbackTestCase{ + ContractAddress: contractAddress, + ValidCallbackArgs: callbackArgsBz, + ValidICAMsgResponse: icaMsgResponse, + ValidAckResponse: icacallbacktypes.AcknowledgementResponse{ + Status: icacallbacktypes.AckResponseStatus_SUCCESS, + MsgResponses: icaMsgResponse, + }, + } +} + +// Helper function to check the state after the callback +func (s *KeeperTestSuite) checkStateAfterInstantiateCallback(success bool, expectedContractAddress string) { + oracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should have been found after callback") + + expectedActive := success // if successful, it should be active + + s.Require().Equal(expectedActive, oracle.Active, "oracle active field") + s.Require().Equal(oracle.ContractAddress, expectedContractAddress, "oracle contract address") +} + +// Function to call the callback, and check the state depending on whether it was successful +func (s *KeeperTestSuite) executeCallbackAndCheckState( + tc InstantiateOracleCallbackTestCase, + ackStatus icacallbacktypes.AckResponseStatus, + callbackArgs []byte, +) { + // Build the ack response object with the provided status + ackResponse := icacallbacktypes.AcknowledgementResponse{ + Status: ackStatus, + MsgResponses: tc.ValidICAMsgResponse, + } + + // The callback should not throw an error in these cases (even in the event of a timeout/ack failure) + err := s.App.ICAOracleKeeper.InstantiateOracleCallback(s.Ctx, channeltypes.Packet{}, &ackResponse, callbackArgs) + s.Require().Nil(err, "no error expected during callback") + + // If the ack was a success, check that the contract address was updated + if ackStatus == icacallbacktypes.AckResponseStatus_SUCCESS { + success := true + expectedContractAddress := tc.ContractAddress + s.checkStateAfterInstantiateCallback(success, expectedContractAddress) + } else { + // Otherwise, during timeout / ack failure, check that no state was changed + success := false + expectedContractAddress := "" + s.checkStateAfterInstantiateCallback(success, expectedContractAddress) + } +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_AckSuccess() { + tc := s.SetupTestInstantiateOracleCallback() + s.executeCallbackAndCheckState(tc, icacallbacktypes.AckResponseStatus_SUCCESS, tc.ValidCallbackArgs) +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_AckTimeout() { + tc := s.SetupTestInstantiateOracleCallback() + s.executeCallbackAndCheckState(tc, icacallbacktypes.AckResponseStatus_TIMEOUT, tc.ValidCallbackArgs) +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_AckFailure() { + tc := s.SetupTestInstantiateOracleCallback() + s.executeCallbackAndCheckState(tc, icacallbacktypes.AckResponseStatus_FAILURE, tc.ValidCallbackArgs) +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_UnmarshalCallbackFailure() { + tc := s.SetupTestInstantiateOracleCallback() + + // Calling the callback with invalid callback args should fail + invalidArgs := []byte{1, 2, 3} + err := s.App.ICAOracleKeeper.InstantiateOracleCallback(s.Ctx, channeltypes.Packet{}, &tc.ValidAckResponse, invalidArgs) + s.Require().ErrorContains(err, "unable to unmarshal instantiate oracle callback") +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_OracleNotFound() { + tc := s.SetupTestInstantiateOracleCallback() + + // Remove the oracle + s.App.ICAOracleKeeper.RemoveOracle(s.Ctx, HostChainId) + + // Call the callback - should fail + err := s.App.ICAOracleKeeper.InstantiateOracleCallback(s.Ctx, channeltypes.Packet{}, &tc.ValidAckResponse, tc.ValidCallbackArgs) + s.Require().ErrorContains(err, "oracle not found") +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_NoMessagesInICAResponse() { + tc := s.SetupTestInstantiateOracleCallback() + + // Calling the callback with no messages in the ICA response should fail + invalidAckResponse := tc.ValidAckResponse + invalidAckResponse.MsgResponses = [][]byte{} + + err := s.App.ICAOracleKeeper.InstantiateOracleCallback(s.Ctx, channeltypes.Packet{}, &invalidAckResponse, tc.ValidCallbackArgs) + s.Require().ErrorContains(err, "tx response from CW contract instantiation should have 1 message (0 found)") +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_UnmarshalICAResponseFailure() { + tc := s.SetupTestInstantiateOracleCallback() + + // Calling the callback with an invalid ack response should fail + invalidAckResponse := tc.ValidAckResponse + invalidAckResponse.MsgResponses = [][]byte{{1, 2, 3}} + + err := s.App.ICAOracleKeeper.InstantiateOracleCallback(s.Ctx, channeltypes.Packet{}, &invalidAckResponse, tc.ValidCallbackArgs) + s.Require().ErrorContains(err, "unable to unmarshal instantiate contract response") +} + +func (s *KeeperTestSuite) TestInstantiateOracleCallback_NoContractAddressInICAResponse() { + tc := s.SetupTestInstantiateOracleCallback() + + // Create an ack response that does not contain a contract address + responseWithNoContract := types.MsgInstantiateContractResponse{} + responseWithNoContractBz, err := proto.Marshal(&responseWithNoContract) + s.Require().NoError(err, "no error expected when marshalling contract response") + + invalidAckResponse := tc.ValidAckResponse + invalidAckResponse.MsgResponses = [][]byte{responseWithNoContractBz} + + err = s.App.ICAOracleKeeper.InstantiateOracleCallback(s.Ctx, channeltypes.Packet{}, &invalidAckResponse, tc.ValidCallbackArgs) + s.Require().ErrorContains(err, "response from CW contract instantiation ICA does not contain a contract address") +} diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle.go b/x/icaoracle/keeper/icacallbacks_update_oracle.go new file mode 100644 index 0000000000..102a2250d8 --- /dev/null +++ b/x/icaoracle/keeper/icacallbacks_update_oracle.go @@ -0,0 +1,55 @@ +package keeper + +import ( + errorsmod "cosmossdk.io/errors" + + "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + + icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" +) + +// Callback after an update oracle ICA +// +// If successful/failure: the metric is removed from the pending store +// If timeout: metric is left in pending store so it can be re-submitted +func (k Keeper) UpdateOracleCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { + // Fetch callback args + updateOracleCallback := types.UpdateOracleCallback{} + if err := proto.Unmarshal(args, &updateOracleCallback); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal update oracle callback") + } + chainId := updateOracleCallback.OracleChainId + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_UpdateOracle, "Starting update oracle callback")) + + // If the ack timed-out, log the error and exit successfully + // The metric should remain in the pending store so that the ICA can be resubmitted when the channel is restored + if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { + EmitUpdateOracleAckEvent(ctx, updateOracleCallback.Metric, "timeout") + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_UpdateOracle, ackResponse.Status, packet)) + return nil + } + + // if the ack fails, log the response as an error, otherwise log the success as an info log + if ackResponse.Status == icacallbackstypes.AckResponseStatus_FAILURE { + EmitUpdateOracleAckEvent(ctx, updateOracleCallback.Metric, "failure") + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_UpdateOracle, ackResponse.Status, packet)) + } else { + EmitUpdateOracleAckEvent(ctx, updateOracleCallback.Metric, "success") + k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_UpdateOracle, ackResponse.Status, packet)) + } + + // Confirm the callback has a valid metric + if updateOracleCallback.Metric == nil || updateOracleCallback.Metric.Key == "" { + return errorsmod.Wrapf(types.ErrInvalidCallback, "metric is missing from callback: %+v", updateOracleCallback) + } + + // Remove the metric from the store (aka mark update as complete) + k.RemoveMetric(ctx, updateOracleCallback.Metric.GetMetricID()) + + return nil +} diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go new file mode 100644 index 0000000000..2a7420b92d --- /dev/null +++ b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go @@ -0,0 +1,90 @@ +package keeper_test + +import ( + "github.com/cosmos/gogoproto/proto" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) SetupTestUpdateOracleCallback() types.Metric { + // Store an IN_PROGRESS metric + metric := types.Metric{ + Key: "key1", + UpdateTime: 1, + DestinationOracle: HostChainId, + Status: types.MetricStatus_IN_PROGRESS, + } + s.App.ICAOracleKeeper.SetMetric(s.Ctx, metric) + + return metric +} + +func (s *KeeperTestSuite) CallCallbackAndCheckState(ackStatus icacallbacktypes.AckResponseStatus) { + metric := s.SetupTestUpdateOracleCallback() + + // Serialize callback + callback := types.UpdateOracleCallback{ + Metric: &metric, + } + callbackBz, err := proto.Marshal(&callback) + s.Require().NoError(err, "no error expected when marshalling callback data") + + // Call update oracle callback + ackResponse := icacallbacktypes.AcknowledgementResponse{ + Status: ackStatus, + } + err = s.App.ICAOracleKeeper.UpdateOracleCallback(s.Ctx, channeltypes.Packet{}, &ackResponse, callbackBz) + s.Require().NoError(err, "no error expected during callback") + + // Confirm the pending update was removed in the case of success/failure + expectedFound := ackStatus == icacallbacktypes.AckResponseStatus_TIMEOUT + _, actualFound := s.App.ICAOracleKeeper.GetMetric(s.Ctx, metric.GetMetricID()) + s.Require().Equal(expectedFound, actualFound, "metric found") +} + +func (s *KeeperTestSuite) TestUpdateOracleCallback_AckSuccess() { + s.CallCallbackAndCheckState(icacallbacktypes.AckResponseStatus_SUCCESS) +} + +func (s *KeeperTestSuite) TestUpdateOracleCallback_AckTimeout() { + s.CallCallbackAndCheckState(icacallbacktypes.AckResponseStatus_TIMEOUT) +} + +func (s *KeeperTestSuite) TestUpdateOracleCallback_AckFailure() { + s.CallCallbackAndCheckState(icacallbacktypes.AckResponseStatus_FAILURE) +} + +func (s *KeeperTestSuite) TestUpdateOracleCallback_UnmarshalFailure() { + dummyPacket := channeltypes.Packet{} + dummyAckResponse := icacallbacktypes.AcknowledgementResponse{} + invalidArgs := []byte{1, 2, 3} + err := s.App.ICAOracleKeeper.UpdateOracleCallback(s.Ctx, dummyPacket, &dummyAckResponse, invalidArgs) + s.Require().ErrorContains(err, "unable to unmarshal update oracle callback") +} + +func (s *KeeperTestSuite) TestUpdateOracleCallback_InvalidCallbackData() { + dummyPacket := channeltypes.Packet{} + dummyAckResponse := icacallbacktypes.AcknowledgementResponse{} + + // Create invalid callback args with no metric field + callback := types.UpdateOracleCallback{} + invalidArgs, err := proto.Marshal(&callback) + s.Require().NoError(err, "no error expected when marshalling callback data") + + // Callback should fail + err = s.App.ICAOracleKeeper.UpdateOracleCallback(s.Ctx, dummyPacket, &dummyAckResponse, invalidArgs) + s.Require().ErrorContains(err, "metric is missing from callback") + + // Create another invalid callback args, this time with a metric struct, but no key + callback = types.UpdateOracleCallback{ + Metric: &types.Metric{Value: "value1"}, + } + invalidArgs, err = proto.Marshal(&callback) + s.Require().NoError(err, "no error expected when marshalling callback data") + + // Callback should fail again + err = s.App.ICAOracleKeeper.UpdateOracleCallback(s.Ctx, dummyPacket, &dummyAckResponse, invalidArgs) + s.Require().ErrorContains(err, "metric is missing from callback") +} diff --git a/x/icaoracle/keeper/icaoracle.go b/x/icaoracle/keeper/icaoracle.go new file mode 100644 index 0000000000..8f56d5397e --- /dev/null +++ b/x/icaoracle/keeper/icaoracle.go @@ -0,0 +1,119 @@ +package keeper + +import ( + "encoding/json" + "fmt" + "time" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + proto "github.com/cosmos/gogoproto/proto" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +var ( + InstantiateOracleTimeout = time.Hour * 24 // 1 day + MetricUpdateTimeout = time.Hour * 24 // 1 day +) + +// Queues an metric update across each active oracle +// One metric record is created for each oracle, in status QUEUED +func (k Keeper) QueueMetricUpdate(ctx sdk.Context, key, value, metricType, attributes string) { + metric := types.NewMetric(ctx, key, value, metricType, attributes) + metric.Status = types.MetricStatus_QUEUED + + for _, oracle := range k.GetAllOracles(ctx) { + // Ignore any inactive oracles + if !oracle.Active { + continue + } + + metric.DestinationOracle = oracle.ChainId + k.SetMetric(ctx, metric) + + k.Logger(ctx).Info(fmt.Sprintf("Queueing oracle metric update - Metric: %s, Oracle: %s", metric.Key, oracle.ChainId)) + } +} + +// Submits an ICA to update the metric in the CW contract +func (k Keeper) SubmitMetricUpdate(ctx sdk.Context, oracle types.Oracle, metric types.Metric) error { + // Validate ICA is setup properly, contract has been instantiated, and oracle is active + if err := oracle.ValidateICASetup(); err != nil { + return err + } + if err := oracle.ValidateContractInstantiated(); err != nil { + return err + } + if !oracle.Active { + return errorsmod.Wrapf(types.ErrOracleInactive, "oracle (%s) is inactive", oracle.ChainId) + } + + // Build contract message with metric update + contractMsg := types.NewMsgExecuteContractPostMetric(metric) + contractMsgBz, err := json.Marshal(contractMsg) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal execute contract post metric") + } + + // Build ICA message to execute the CW contract + msgs := []proto.Message{&types.MsgExecuteContract{ + Sender: oracle.IcaAddress, + Contract: oracle.ContractAddress, + Msg: contractMsgBz, + }} + + // Submit the ICA to execute the contract + callbackArgs := types.UpdateOracleCallback{ + OracleChainId: oracle.ChainId, + Metric: &metric, + } + icaTx := types.ICATx{ + ConnectionId: oracle.ConnectionId, + ChannelId: oracle.ChannelId, + PortId: oracle.PortId, + Owner: types.FormatICAAccountOwner(oracle.ChainId, types.ICAAccountType_Oracle), + Messages: msgs, + RelativeTimeout: MetricUpdateTimeout, + CallbackArgs: &callbackArgs, + CallbackId: ICACallbackID_UpdateOracle, + } + if err := k.SubmitICATx(ctx, icaTx); err != nil { + return errorsmod.Wrapf(err, "unable to submit update oracle contract ICA") + } + + return nil +} + +// For each queued metric, submit an ICA to each oracle, and then flag the metric as IN_PROGRESS +func (k Keeper) PostAllQueuedMetrics(ctx sdk.Context) { + for _, metric := range k.GetAllQueuedMetrics(ctx) { + k.Logger(ctx).Info(fmt.Sprintf("Submitting oracle metric update - Metric: %s, Oracle: %s", metric.Key, metric.DestinationOracle)) + + // Ignore any inactive oracles + oracle, found := k.GetOracle(ctx, metric.DestinationOracle) + if !found || !oracle.Active { + k.Logger(ctx).Info(fmt.Sprintf("Oracle %s is inactive", oracle.ChainId)) + continue + } + + // Flag the metric as IN_PROGRESS to prevent resubmissions next block + // We do this even in the case where the ICA submission fails (from something like a channel closure) + // If the channel closes, once it is restored, the metric will get re-queued + k.UpdateMetricStatus(ctx, metric, types.MetricStatus_IN_PROGRESS) + + if !k.IsOracleICAChannelOpen(ctx, oracle) { + k.Logger(ctx).Error(fmt.Sprintf("Oracle %s has a closed ICA channel (%s)", oracle.ChainId, oracle.ChannelId)) + continue + } + + // Submit the ICA for each metric + if err := k.SubmitMetricUpdate(ctx, oracle, metric); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Failed to submit a metric update ICA - Metric: %+v, Oracle: %+v, %s", metric, oracle, err.Error())) + continue + } + + k.Logger(ctx).Info(fmt.Sprintf("Submitted metric update ICA - Metric: %s, Oracle: %s, Time: %d", metric.Key, oracle.ChainId, metric.UpdateTime)) + EmitUpdateOracleEvent(ctx, metric) + } +} diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go new file mode 100644 index 0000000000..286dfdfc25 --- /dev/null +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -0,0 +1,166 @@ +package keeper_test + +import ( + "github.com/cosmos/gogoproto/proto" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +type SubmitMetricUpdateTestCase struct { + Oracle types.Oracle + Metric types.Metric + CallbackArgs []byte + CallbackId string +} + +func (s *KeeperTestSuite) SetupTestSubmitMetricUpdate() SubmitMetricUpdateTestCase { + // Create clients, connections, and an oracle ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) + channelId := s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Create oracle + oracle := types.Oracle{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + ChannelId: channelId, + PortId: portId, + IcaAddress: "ica_address", + ContractAddress: "contract_address", + Active: true, + } + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Create metric + metric := types.Metric{ + Key: "key1", + Value: "value1", + } + + // Callback args + callbackId := keeper.ICACallbackID_UpdateOracle + callback := types.UpdateOracleCallback{ + OracleChainId: HostChainId, + Metric: &metric, + } + callbackBz, err := proto.Marshal(&callback) + s.Require().NoError(err, "no error expected when serializing callback args") + + return SubmitMetricUpdateTestCase{ + Oracle: oracle, + Metric: metric, + CallbackArgs: callbackBz, + CallbackId: callbackId, + } +} + +func (s *KeeperTestSuite) TestSubmitMetricUpdate_Success() { + tc := s.SetupTestSubmitMetricUpdate() + + // Call submit metric update (which should trigger an ICA) + err := s.App.ICAOracleKeeper.SubmitMetricUpdate(s.Ctx, tc.Oracle, tc.Metric) + s.Require().NoError(err, "no error expected when submitting metric update") + + // Confirm callback data has been stored + sequence := uint64(1) + callbackKey := icacallbacktypes.PacketID(tc.Oracle.PortId, tc.Oracle.ChannelId, sequence) + + expectedCallbackData := icacallbacktypes.CallbackData{ + CallbackKey: callbackKey, + PortId: tc.Oracle.PortId, + ChannelId: tc.Oracle.ChannelId, + Sequence: sequence, + CallbackId: tc.CallbackId, + CallbackArgs: tc.CallbackArgs, + } + actualCallbackData, found := s.App.IcacallbacksKeeper.GetCallbackData(s.Ctx, callbackKey) + s.Require().True(found, "callback data should have been found") + s.Require().Equal(expectedCallbackData, actualCallbackData, "callback data") +} + +func (s *KeeperTestSuite) TestSubmitMetricUpdate_IcaNotRegistered() { + tc := s.SetupTestSubmitMetricUpdate() + + // Remove ICAAddress from oracle so it appears as if the ICA was not registered + oracle := tc.Oracle + oracle.IcaAddress = "" + + // Submit the metric update which should fail because the ICA is not setup + err := s.App.ICAOracleKeeper.SubmitMetricUpdate(s.Ctx, oracle, tc.Metric) + s.Require().ErrorContains(err, "ICAAddress is empty: oracle ICA channel has not been registered") +} + +func (s *KeeperTestSuite) TestSubmitMetricUpdate_ContractNotInstantiated() { + tc := s.SetupTestSubmitMetricUpdate() + + // Remove ContractAddress from oracle so it appears as if the contract was never instantiated + oracle := tc.Oracle + oracle.ContractAddress = "" + + // Submit the metric update which should fail because the contract is not instantiated + err := s.App.ICAOracleKeeper.SubmitMetricUpdate(s.Ctx, oracle, tc.Metric) + s.Require().ErrorContains(err, "contract address is empty: oracle not instantiated") +} + +func (s *KeeperTestSuite) TestSubmitMetricUpdate_OracleInactive() { + tc := s.SetupTestSubmitMetricUpdate() + + // Set the oracle to inactive + oracle := tc.Oracle + oracle.Active = false + + // Submit the metric update which should fail because the oracle is not active + err := s.App.ICAOracleKeeper.SubmitMetricUpdate(s.Ctx, oracle, tc.Metric) + s.Require().ErrorContains(err, "oracle is inactive") +} + +func (s *KeeperTestSuite) TestSubmitMetricUpdate_FailedToSubmitICA() { + tc := s.SetupTestSubmitMetricUpdate() + + // Close the channel so that the ICA fails + s.UpdateChannelState(tc.Oracle.PortId, tc.Oracle.ChannelId, channeltypes.CLOSED) + + // Submit the metric update which should fail + err := s.App.ICAOracleKeeper.SubmitMetricUpdate(s.Ctx, tc.Oracle, tc.Metric) + s.Require().ErrorContains(err, "unable to submit update oracle contract ICA: unable to send ICA tx") +} + +func (s *KeeperTestSuite) TestPostAllQueuedMetrics() { + s.SetupTestSubmitMetricUpdate() + + // Add an inactive oracle + s.App.ICAOracleKeeper.SetOracle(s.Ctx, types.Oracle{ + ChainId: "inactive", + Active: false, + }) + + // Add metrics across different states + metrics := []types.Metric{ + // Should get sent + {Key: "key-1", Value: "value-1", DestinationOracle: HostChainId, Status: types.MetricStatus_QUEUED}, + {Key: "key-2", Value: "value-2", DestinationOracle: HostChainId, Status: types.MetricStatus_QUEUED}, + {Key: "key-3", Value: "value-3", DestinationOracle: HostChainId, Status: types.MetricStatus_QUEUED}, + // Metric not QUEUED + {Key: "key-4", Value: "value-4", DestinationOracle: HostChainId, Status: types.MetricStatus_IN_PROGRESS}, + // Inactive oracle - should not get sent + {Key: "key-5", Value: "value-5", DestinationOracle: "inactive", Status: types.MetricStatus_QUEUED}, + // Oracle not found - should not get sent + {Key: "key-6", Value: "value-6", DestinationOracle: "not-found", Status: types.MetricStatus_QUEUED}, + } + for _, metric := range metrics { + s.App.ICAOracleKeeper.SetMetric(s.Ctx, metric) + } + + // Post all metrics + s.App.ICAOracleKeeper.PostAllQueuedMetrics(s.Ctx) + + // Check 3 ICAs were submitted + callbacks := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Len(callbacks, 3, "three callbacks submitted") +} diff --git a/x/icaoracle/keeper/keeper.go b/x/icaoracle/keeper/keeper.go new file mode 100644 index 0000000000..2b2b0db50b --- /dev/null +++ b/x/icaoracle/keeper/keeper.go @@ -0,0 +1,65 @@ +package keeper + +import ( + "fmt" + + "github.com/cometbft/cometbft/libs/log" + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +type Keeper struct { + cdc codec.BinaryCodec + storeKey storetypes.StoreKey + paramstore paramtypes.Subspace + authority string + + ICS4Wrapper types.ICS4Wrapper + ClientKeeper types.ClientKeeper + ConnectionKeeper types.ConnectionKeeper + ChannelKeeper types.ChannelKeeper + ICAControllerKeeper icacontrollerkeeper.Keeper + ICACallbacksKeeper types.ICACallbacksKeeper +} + +func NewKeeper( + cdc codec.BinaryCodec, + key storetypes.StoreKey, + paramstore paramtypes.Subspace, + authority string, + + ics4Wrapper types.ICS4Wrapper, + clientKeeper types.ClientKeeper, + connectionKeeper types.ConnectionKeeper, + channelKeeper types.ChannelKeeper, + icaControllerKeeper icacontrollerkeeper.Keeper, + icaCallbacksKeeper types.ICACallbacksKeeper, +) *Keeper { + return &Keeper{ + cdc: cdc, + storeKey: key, + paramstore: paramstore, + authority: authority, + + ICS4Wrapper: ics4Wrapper, + ClientKeeper: clientKeeper, + ConnectionKeeper: connectionKeeper, + ChannelKeeper: channelKeeper, + ICAControllerKeeper: icaControllerKeeper, + ICACallbacksKeeper: icaCallbacksKeeper, + } +} + +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + +// GetAuthority returns the x/staking module's authority. +func (k Keeper) GetAuthority() string { + return k.authority +} diff --git a/x/icaoracle/keeper/keeper_test.go b/x/icaoracle/keeper/keeper_test.go new file mode 100644 index 0000000000..fddcb2045d --- /dev/null +++ b/x/icaoracle/keeper/keeper_test.go @@ -0,0 +1,71 @@ +package keeper_test + +import ( + "strconv" + "testing" + + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +var ( + HostChainId = "host1" + ConnectionId = "connection-0" +) + +type KeeperTestSuite struct { + apptesting.AppTestHelper + QueryClient types.QueryClient +} + +func (s *KeeperTestSuite) SetupTest() { + s.Setup() + s.QueryClient = types.NewQueryClient(s.QueryHelper) +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(KeeperTestSuite)) +} + +// Dynamically gets the MsgServer for this module's keeper +// this function must be used so that the MsgServer is always created with the most updated App context +// +// which can change depending on the type of test +// (e.g. tests with only one Stride chain vs tests with multiple chains and IBC support) +func (s *KeeperTestSuite) GetMsgServer() types.MsgServer { + return keeper.NewMsgServerImpl(s.App.ICAOracleKeeper) +} + +// Helper function to create 5 oracle objects with various attributes +func (s *KeeperTestSuite) CreateTestOracles() []types.Oracle { + oracles := []types.Oracle{} + for i := 1; i <= 5; i++ { + suffix := strconv.Itoa(i) + + channelId := "channel-" + suffix + portId := "port-" + suffix + + oracle := types.Oracle{ + ChainId: "chain-" + suffix, + ConnectionId: "connection-" + suffix, + ChannelId: channelId, + PortId: portId, + IcaAddress: "oracle-address", + ContractAddress: "contract-address", + Active: true, + } + + oracles = append(oracles, oracle) + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Create open ICA channel + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portId, channelId, channeltypes.Channel{ + State: channeltypes.OPEN, + }) + } + return oracles +} diff --git a/x/icaoracle/keeper/metric.go b/x/icaoracle/keeper/metric.go new file mode 100644 index 0000000000..d0cb90ccee --- /dev/null +++ b/x/icaoracle/keeper/metric.go @@ -0,0 +1,109 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// Stores a metric in the main metric store and then either +// adds the metric to the queue or removes it from the queue +// depending on the status of the metric +func (k Keeper) SetMetric(ctx sdk.Context, metric types.Metric) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricKeyPrefix) + + metricKey := types.KeyPrefix(metric.GetMetricID()) + metricValue := k.cdc.MustMarshal(&metric) + + store.Set(metricKey, metricValue) + + switch metric.Status { + case types.MetricStatus_QUEUED: + k.addMetricToQueue(ctx, metricKey) + case types.MetricStatus_IN_PROGRESS: + k.removeMetricFromQueue(ctx, metricKey) + default: + panic("metric status must be specified as QUEUED or IN_PROGRESS before storing") + } +} + +// Gets a specifc metric from the store +func (k Keeper) GetMetric(ctx sdk.Context, metricId string) (metric types.Metric, found bool) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricKeyPrefix) + + metricKey := types.KeyPrefix(metricId) + metricBz := store.Get(metricKey) + + if len(metricBz) == 0 { + return metric, false + } + + k.cdc.MustUnmarshal(metricBz, &metric) + return metric, true +} + +// Returns all metrics from the store +func (k Keeper) GetAllMetrics(ctx sdk.Context) (metrics []types.Metric) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricKeyPrefix) + + iterator := store.Iterator(nil, nil) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + + metric := types.Metric{} + k.cdc.MustUnmarshal(iterator.Value(), &metric) + metrics = append(metrics, metric) + } + + return metrics +} + +// Removes a metric from the store +func (k Keeper) RemoveMetric(ctx sdk.Context, metricId string) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricKeyPrefix) + metricKey := types.KeyPrefix(metricId) + store.Delete(metricKey) + k.removeMetricFromQueue(ctx, metricKey) +} + +// Updates the status of a metric which will consequently move it either +// in or out of the queue +func (k Keeper) UpdateMetricStatus(ctx sdk.Context, metric types.Metric, status types.MetricStatus) { + metric.Status = status + k.SetMetric(ctx, metric) +} + +// Adds a metric to the queue, which acts as an index for all metrics +// that should be submitted to it's relevant oracle +func (k Keeper) addMetricToQueue(ctx sdk.Context, metricKey []byte) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricQueueKeyPrefix) + store.Set(metricKey, []byte{1}) +} + +// Removes a metric from the queue +func (k Keeper) removeMetricFromQueue(ctx sdk.Context, metricKey []byte) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricQueueKeyPrefix) + store.Delete(metricKey) +} + +// Returns all metrics from the index queue +func (k Keeper) GetAllQueuedMetrics(ctx sdk.Context) (metrics []types.Metric) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.MetricQueueKeyPrefix) + + iterator := store.Iterator(nil, nil) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + + metricId := string(iterator.Key()) + metric, found := k.GetMetric(ctx, metricId) + if !found { + panic("metric in queue but not metric store") + } + metrics = append(metrics, metric) + } + + return metrics +} diff --git a/x/icaoracle/keeper/metric_test.go b/x/icaoracle/keeper/metric_test.go new file mode 100644 index 0000000000..0d30ca151e --- /dev/null +++ b/x/icaoracle/keeper/metric_test.go @@ -0,0 +1,73 @@ +package keeper_test + +import ( + "strconv" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// Helper function to create 5 metric objects with various attributes +func (s *KeeperTestSuite) createMetrics() []types.Metric { + metrics := []types.Metric{} + for i := 1; i <= 5; i++ { + suffix := strconv.Itoa(i) + metric := types.Metric{ + Key: "key-" + suffix, + Value: "value-" + suffix, + DestinationOracle: "chain", + Status: types.MetricStatus_QUEUED, + } + + metrics = append(metrics, metric) + s.App.ICAOracleKeeper.SetMetric(s.Ctx, metric) + } + return metrics +} + +func (s *KeeperTestSuite) TestGetMetric() { + metrics := s.createMetrics() + + for _, expected := range metrics { + metricId := expected.GetMetricID() + + actual, found := s.App.ICAOracleKeeper.GetMetric(s.Ctx, metricId) + s.Require().True(found, "metric %s should have been found", metricId) + s.Require().Equal(expected, actual, "metric %s", metricId) + } +} + +func (s *KeeperTestSuite) TestGetAllMetrics() { + metrics := s.createMetrics() + + actualMetrics := s.App.ICAOracleKeeper.GetAllMetrics(s.Ctx) + s.Require().Equal(len(actualMetrics), len(metrics), "number of metrics") + + for i, expected := range metrics { + metricId := expected.GetMetricID() + + actual := actualMetrics[i] + s.Require().Equal(expected, actual, "metrics %s", metricId) + } +} + +func (s *KeeperTestSuite) TestMetricQueue() { + metrics := s.createMetrics() + + actualQueuedMetrics := s.App.ICAOracleKeeper.GetAllQueuedMetrics(s.Ctx) + s.Require().Equal(len(actualQueuedMetrics), len(metrics), "number of queued metrics") + + for i, metric := range metrics { + metricId := metric.GetMetricID() + + // set the metric to in progres which should remove it from the queue + s.App.ICAOracleKeeper.UpdateMetricStatus(s.Ctx, metric, types.MetricStatus_IN_PROGRESS) + metricsInProgress := i + 1 + queuedMetrics := s.App.ICAOracleKeeper.GetAllQueuedMetrics(s.Ctx) + + s.Require().Equal(len(queuedMetrics), len(metrics)-metricsInProgress, + "number of remaining queued metrics after updating %s", metricId) + + s.Require().ElementsMatch(metrics[metricsInProgress:], queuedMetrics, + "queued metric after setting %s to in progress", metricId) + } +} diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go new file mode 100644 index 0000000000..20dbb053ca --- /dev/null +++ b/x/icaoracle/keeper/msg_server.go @@ -0,0 +1,265 @@ +package keeper + +import ( + "context" + "encoding/json" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + proto "github.com/cosmos/gogoproto/proto" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +type msgServer struct { + Keeper +} + +// NewMsgServerImpl returns an implementation of the MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} + +var _ types.MsgServer = msgServer{} + +// Adds a new oracle as a destination for metric updates +// Registers a new ICA account along this connection +func (k msgServer) AddOracle(goCtx context.Context, msg *types.MsgAddOracle) (*types.MsgAddOracleResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Grab the connection and confirm it exists + controllerConnectionId := msg.ConnectionId + connectionEnd, found := k.ConnectionKeeper.GetConnection(ctx, controllerConnectionId) + if !found { + return nil, errorsmod.Wrapf(sdkerrors.ErrNotFound, "connection (%s) not found", controllerConnectionId) + } + + // Get chain id from the connection + clientState, found := k.ClientKeeper.GetClientState(ctx, connectionEnd.ClientId) + if !found { + return nil, errorsmod.Wrapf(sdkerrors.ErrNotFound, "client (%s) not found", connectionEnd.ClientId) + } + client, ok := clientState.(*ibctmtypes.ClientState) + if !ok { + return nil, types.ErrClientStateNotTendermint + } + chainId := client.ChainId + + // Confirm oracle was not already created + _, found = k.GetOracle(ctx, chainId) + if found { + return nil, types.ErrOracleAlreadyExists + } + + // Create the oracle struct, marked as inactive + oracle := types.Oracle{ + ChainId: chainId, + ConnectionId: controllerConnectionId, + Active: false, + } + k.SetOracle(ctx, oracle) + + // Get the expected port ID for the ICA channel + owner := types.FormatICAAccountOwner(chainId, types.ICAAccountType_Oracle) + portID, err := icatypes.NewControllerPortID(owner) + if err != nil { + return nil, err + } + + // Check if an ICA account has already been created for this oracle + // (in the event that an oracle was removed and then added back) + // If so, there's no need to register a new ICA + channelID, channelFound := k.ICAControllerKeeper.GetOpenActiveChannel(ctx, controllerConnectionId, portID) + icaAddress, icaFound := k.ICAControllerKeeper.GetInterchainAccountAddress(ctx, controllerConnectionId, portID) + + if channelFound && icaFound { + oracle.IcaAddress = icaAddress + oracle.ChannelId = channelID + oracle.PortId = portID + + k.SetOracle(ctx, oracle) + + return &types.MsgAddOracleResponse{}, nil + } + + // Get the corresponding connection on the host + hostConnectionId := connectionEnd.Counterparty.ConnectionId + if hostConnectionId == "" { + return nil, types.ErrHostConnectionNotFound + } + + // Register the oracle interchain account + appVersion := string(icatypes.ModuleCdc.MustMarshalJSON(&icatypes.Metadata{ + Version: icatypes.Version, + ControllerConnectionId: controllerConnectionId, + HostConnectionId: hostConnectionId, + Encoding: icatypes.EncodingProtobuf, + TxType: icatypes.TxTypeSDKMultiMsg, + })) + + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, controllerConnectionId, owner, appVersion); err != nil { + return nil, errorsmod.Wrapf(err, "unable to register oracle interchain account") + } + + return &types.MsgAddOracleResponse{}, nil +} + +// Instantiates the oracle cosmwasm contract +func (k msgServer) InstantiateOracle(goCtx context.Context, msg *types.MsgInstantiateOracle) (*types.MsgInstantiateOracleResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Confirm the oracle has already been added, but has not yet been instantiated + oracle, found := k.GetOracle(ctx, msg.OracleChainId) + if !found { + return nil, types.ErrOracleNotFound + } + if oracle.ContractAddress != "" { + return nil, types.ErrOracleAlreadyInstantiated + } + + // Confirm the oracle ICA was registered + if err := oracle.ValidateICASetup(); err != nil { + return nil, err + } + + // Build the contract-specific instantiation message + contractMsg := types.MsgInstantiateOracleContract{ + AdminAddress: oracle.IcaAddress, + } + contractMsgBz, err := json.Marshal(contractMsg) + if err != nil { + return nil, errorsmod.Wrapf(err, "unable to marshal instantiate oracle contract") + } + + // Build the ICA message to instantiate the contract + msgs := []proto.Message{&types.MsgInstantiateContract{ + Sender: oracle.IcaAddress, + Admin: oracle.IcaAddress, + CodeID: msg.ContractCodeId, + Label: "Stride ICA Oracle", + Msg: contractMsgBz, + }} + + // Submit the ICA + callbackArgs := types.InstantiateOracleCallback{ + OracleChainId: oracle.ChainId, + } + icaTx := types.ICATx{ + ConnectionId: oracle.ConnectionId, + ChannelId: oracle.ChannelId, + PortId: oracle.PortId, + Owner: types.FormatICAAccountOwner(oracle.ChainId, types.ICAAccountType_Oracle), + Messages: msgs, + RelativeTimeout: InstantiateOracleTimeout, + CallbackArgs: &callbackArgs, + CallbackId: ICACallbackID_InstantiateOracle, + } + if err := k.SubmitICATx(ctx, icaTx); err != nil { + return nil, errorsmod.Wrapf(err, "unable to submit instantiate oracle contract ICA") + } + + return &types.MsgInstantiateOracleResponse{}, nil +} + +// Creates a new ICA channel and restores the oracle ICA account after a channel closer +func (k msgServer) RestoreOracleICA(goCtx context.Context, msg *types.MsgRestoreOracleICA) (*types.MsgRestoreOracleICAResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Confirm the oracle exists and has already had an ICA registered + oracle, found := k.GetOracle(ctx, msg.OracleChainId) + if !found { + return nil, types.ErrOracleNotFound + } + if err := oracle.ValidateICASetup(); err != nil { + return nil, errorsmod.Wrapf(err, "the oracle (%s) has never had an registered ICA", oracle.ChainId) + } + + // Confirm the channel is closed + if k.IsOracleICAChannelOpen(ctx, oracle) { + return nil, errorsmod.Wrapf(types.ErrUnableToRestoreICAChannel, + "channel already open, chain-id: %s, channel-id: %s", oracle.ChainId, oracle.ChannelId) + } + + // Grab the connectionEnd for the counterparty connection + connectionEnd, found := k.ConnectionKeeper.GetConnection(ctx, oracle.ConnectionId) + if !found { + return nil, errorsmod.Wrapf(sdkerrors.ErrNotFound, "connection (%s) not found", oracle.ConnectionId) + } + hostConnectionId := connectionEnd.Counterparty.ConnectionId + + // Only allow restoring an ICA if the account already exists + owner := types.FormatICAAccountOwner(oracle.ChainId, types.ICAAccountType_Oracle) + portId, err := icatypes.NewControllerPortID(owner) + if err != nil { + return nil, errorsmod.Wrapf(err, "unable to build portId from owner (%s)", owner) + } + _, exists := k.ICAControllerKeeper.GetInterchainAccountAddress(ctx, oracle.ConnectionId, portId) + if !exists { + return nil, errorsmod.Wrapf(types.ErrICAAccountDoesNotExist, + "cannot find ICA account for connection (%s) and port (%s)", oracle.ConnectionId, portId) + } + + // Call register ICA again to restore the account + appVersion := string(icatypes.ModuleCdc.MustMarshalJSON(&icatypes.Metadata{ + Version: icatypes.Version, + ControllerConnectionId: oracle.ConnectionId, + HostConnectionId: hostConnectionId, + Encoding: icatypes.EncodingProtobuf, + TxType: icatypes.TxTypeSDKMultiMsg, + })) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, oracle.ConnectionId, owner, appVersion); err != nil { + return nil, errorsmod.Wrapf(err, "unable to register oracle interchain account") + } + + // Revert all pending metrics for this oracle back to status QUEUED + for _, metric := range k.GetAllMetrics(ctx) { + if metric.DestinationOracle == msg.OracleChainId && metric.Status == types.MetricStatus_IN_PROGRESS { + k.UpdateMetricStatus(ctx, metric, types.MetricStatus_QUEUED) + } + } + + return &types.MsgRestoreOracleICAResponse{}, nil +} + +// Proposal handler for toggling whether an oracle is currently active (meaning it's a destination for metric pushes) +func (ms msgServer) ToggleOracle(goCtx context.Context, msg *types.MsgToggleOracle) (*types.MsgToggleOracleResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + if ms.authority != msg.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.authority, msg.Authority) + } + + if err := ms.Keeper.ToggleOracle(ctx, msg.OracleChainId, msg.Active); err != nil { + return nil, err + } + + return &types.MsgToggleOracleResponse{}, nil +} + +// Proposal handler for removing an oracle from the store +func (ms msgServer) RemoveOracle(goCtx context.Context, msg *types.MsgRemoveOracle) (*types.MsgRemoveOracleResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + if ms.authority != msg.Authority { + return nil, errorsmod.Wrapf(govtypes.ErrInvalidSigner, "invalid authority; expected %s, got %s", ms.authority, msg.Authority) + } + + _, found := ms.Keeper.GetOracle(ctx, msg.OracleChainId) + if !found { + return nil, types.ErrOracleNotFound + } + + ms.Keeper.RemoveOracle(ctx, msg.OracleChainId) + + // Remove all metrics that were targeting this oracle + for _, metric := range ms.Keeper.GetAllMetrics(ctx) { + if metric.DestinationOracle == msg.OracleChainId { + ms.Keeper.RemoveMetric(ctx, metric.GetMetricID()) + } + } + + return &types.MsgRemoveOracleResponse{}, nil +} diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go new file mode 100644 index 0000000000..fdcc1c68c4 --- /dev/null +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -0,0 +1,117 @@ +package keeper_test + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) SetupTestAddOracle() types.MsgAddOracle { + s.CreateTransferChannel(HostChainId) + + return types.MsgAddOracle{ConnectionId: ConnectionId} +} + +func (s *KeeperTestSuite) TestAddOracle_Successful() { + validMsg := s.SetupTestAddOracle() + + // Submit the AddOracle message + _, err := s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &validMsg) + s.Require().NoError(err, "no error expected when adding an oracle") + + // Confirm the oracle was created + expectedOracle := types.Oracle{ + ChainId: HostChainId, + ConnectionId: ConnectionId, + Active: false, + } + actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should be created") + s.Require().Equal(expectedOracle, actualOracle, "oracle created") + + // Confirm the ICA registration was initiated + // We can verify this by checking that the ICAController module is bound to the oracle port + expectedOraclePort := fmt.Sprintf("icacontroller-%s.ORACLE", HostChainId) + isBound := s.App.ICAControllerKeeper.IsBound(s.Ctx, expectedOraclePort) + s.Require().True(isBound, "oracle ICA port %s should have been bound to the ICAController module", expectedOraclePort) +} + +func (s *KeeperTestSuite) TestAddOracle_Successful_IcaAlreadyExists() { + validMsg := s.SetupTestAddOracle() + + // Create the oracle ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) + channelID := s.CreateICAChannel(owner) + portId, _ := icatypes.NewControllerPortID(owner) + icaAddress := s.IcaAddresses[owner] + + // Submit the AddOracle message + _, err := s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &validMsg) + s.Require().NoError(err, "no error expected when adding an oracle") + + // Confirm the oracle was created and that the existing ICA channel was used + expectedOracle := types.Oracle{ + ChainId: HostChainId, + ConnectionId: ConnectionId, + ChannelId: channelID, + PortId: portId, + IcaAddress: icaAddress, + Active: false, + } + actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should be created") + s.Require().Equal(expectedOracle, actualOracle, "oracle created") +} + +func (s *KeeperTestSuite) TestAddOracle_Failure_OracleAlreadyExists() { + validMsg := s.SetupTestAddOracle() + + // Set an oracle successfully + _, err := s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &validMsg) + s.Require().NoError(err, "no error expected when adding an oracle") + + // Then attempt to submit it again - it should fail + _, err = s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &validMsg) + s.Require().ErrorContains(err, "oracle already exists", "error expected when adding duplicate oracle") +} + +func (s *KeeperTestSuite) TestAddOracle_Failure_ControllerConnectionDoesNotExist() { + validMsg := s.SetupTestAddOracle() + + // Submit the AddOracle message with an invalid connection Id - should fail + invalidMsg := validMsg + invalidMsg.ConnectionId = "fake_connection" + _, err := s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().ErrorContains(err, "connection (fake_connection) not found", "error expected when adding oracle") +} + +func (s *KeeperTestSuite) TestAddOracle_Failure_HostConnectionDoesNotExist() { + validMsg := s.SetupTestAddOracle() + + // Delete the host connection ID from the controller connection end + connectionEnd, found := s.App.IBCKeeper.ConnectionKeeper.GetConnection(s.Ctx, ConnectionId) + s.Require().True(found, "connection should have been found") + connectionEnd.Counterparty.ConnectionId = "" + s.App.IBCKeeper.ConnectionKeeper.SetConnection(s.Ctx, ConnectionId, connectionEnd) + + // Submit the AddOracle message - it should fail + _, err := s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &validMsg) + s.Require().ErrorContains(err, "host connection not found", "error expected when adding oracle") +} + +func (s *KeeperTestSuite) TestAddOracle_Failure_ClientDoesNotExist() { + validMsg := s.SetupTestAddOracle() + + // Update the connection end so that the client cannot be found + connectionEnd, found := s.App.IBCKeeper.ConnectionKeeper.GetConnection(s.Ctx, ConnectionId) + s.Require().True(found, "connection should have been found") + connectionEnd.ClientId = "fake_client" + s.App.IBCKeeper.ConnectionKeeper.SetConnection(s.Ctx, ConnectionId, connectionEnd) + + // Submit the AddOracle message - it should fail + _, err := s.GetMsgServer().AddOracle(sdk.WrapSDKContext(s.Ctx), &validMsg) + s.Require().ErrorContains(err, "client (fake_client) not found", "error expected when adding oracle") +} diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go new file mode 100644 index 0000000000..a9c17696df --- /dev/null +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -0,0 +1,101 @@ +package keeper_test + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +type InstantiateOracleTestCase struct { + OracleChannelId string + OraclePortId string + ValidMsg types.MsgInstantiateOracle + InitialOracle types.Oracle +} + +func (s *KeeperTestSuite) SetupTestInstantiateOracle() InstantiateOracleTestCase { + // Create oracle ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) + channelId := s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Create oracle + oracle := types.Oracle{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + ChannelId: channelId, + PortId: portId, + IcaAddress: "ica_address", + } + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Confirm the oracle was stored + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should be in the store during setup") + + return InstantiateOracleTestCase{ + OracleChannelId: channelId, + OraclePortId: portId, + ValidMsg: types.MsgInstantiateOracle{ + OracleChainId: HostChainId, + ContractCodeId: uint64(1), + }, + InitialOracle: oracle, + } +} + +func (s *KeeperTestSuite) TestInstantiateOracle_Successful() { + tc := s.SetupTestInstantiateOracle() + + // Submit the instantiate message + _, err := s.GetMsgServer().InstantiateOracle(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().NoError(err, "no error expected when instantiating an oracle") + + // Confirm the callback data was stored + callbackKey := icacallbacktypes.PacketID(tc.OraclePortId, tc.OracleChannelId, uint64(1)) + _, found := s.App.IcacallbacksKeeper.GetCallbackData(s.Ctx, callbackKey) + s.Require().True(found, "callback data should have been found") +} + +func (s *KeeperTestSuite) TestInstantiateOracle_Failure_OracleNotFound() { + tc := s.SetupTestInstantiateOracle() + + // Remove the oracle from the store + s.App.ICAOracleKeeper.RemoveOracle(s.Ctx, HostChainId) + + // Submit the instantiate message - it should fail + _, err := s.GetMsgServer().InstantiateOracle(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "oracle not found") +} + +func (s *KeeperTestSuite) TestInstantiateOracle_Failure_OracleAlreadyInstantiated() { + tc := s.SetupTestInstantiateOracle() + + // Set the oracle contract address to appear as if it was already instantiated + instantiatedOracle := tc.InitialOracle + instantiatedOracle.ContractAddress = "contract" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, instantiatedOracle) + + // Submit the instantiate message - it should fail + _, err := s.GetMsgServer().InstantiateOracle(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "oracle already instantiated") +} + +func (s *KeeperTestSuite) TestInstantiateOracle_Failure_InvalidICASetup() { + tc := s.SetupTestInstantiateOracle() + + // Remove the oracle ICA address to appear as if it the ICA was not registered yet + instantiatedOracle := tc.InitialOracle + instantiatedOracle.IcaAddress = "" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, instantiatedOracle) + + // Submit the instantiate message - it should fail + _, err := s.GetMsgServer().InstantiateOracle(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "oracle ICA channel has not been registered") +} diff --git a/x/icaoracle/keeper/msg_server_remove_oracle_test.go b/x/icaoracle/keeper/msg_server_remove_oracle_test.go new file mode 100644 index 0000000000..793ddacb7d --- /dev/null +++ b/x/icaoracle/keeper/msg_server_remove_oracle_test.go @@ -0,0 +1,51 @@ +package keeper_test + +import ( + "fmt" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) TestGovRemoveOracle() { + oracles := s.CreateTestOracles() + + oracleIndexToRemove := 1 + oracleToRemove := oracles[oracleIndexToRemove] + + // Add metrics to that oracle + for i := 0; i < 3; i++ { + metric := types.Metric{ + Key: fmt.Sprintf("key-%d", i), + Value: fmt.Sprintf("value-%d", i), + BlockHeight: s.Ctx.BlockHeight(), + UpdateTime: s.Ctx.BlockTime().Unix(), + DestinationOracle: oracleToRemove.ChainId, + Status: types.MetricStatus_QUEUED, + } + s.App.ICAOracleKeeper.SetMetric(s.Ctx, metric) + } + + // Remove the oracle thorugh goverance + _, err := s.GetMsgServer().RemoveOracle(s.Ctx, &types.MsgRemoveOracle{ + Authority: s.App.ICAOracleKeeper.GetAuthority(), + OracleChainId: oracleToRemove.ChainId, + }) + s.Require().NoError(err) + + // Confirm only one oracle was removed + remainingOracles := s.App.ICAOracleKeeper.GetAllOracles(s.Ctx) + s.Require().Len(remainingOracles, len(oracles)-1, "number of oracles after removal") + + // Confirm the other oracles are still there + for i, oracle := range oracles { + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, oracle.ChainId) + if i == oracleIndexToRemove { + s.Require().False(found, "oracle %s should have been removed", oracle.ChainId) + } else { + s.Require().True(found, "oracle %s should not have been removed", oracle.ChainId) + } + } + + // Confirm the metrics were removed + s.Require().Empty(s.App.ICAOracleKeeper.GetAllMetrics(s.Ctx), "all metrics removed") +} diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go new file mode 100644 index 0000000000..169b723e60 --- /dev/null +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -0,0 +1,152 @@ +package keeper_test + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +type RestoreOracleICATestCase struct { + ValidMsg types.MsgRestoreOracleICA + Oracle types.Oracle +} + +func (s *KeeperTestSuite) SetupTestRestoreOracleICA() RestoreOracleICATestCase { + // Create oracle ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) + channelId := s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Create oracle + oracle := types.Oracle{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + ChannelId: channelId, + PortId: portId, + IcaAddress: "ica_address", + } + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Confirm the oracle was stored + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) + s.Require().True(found, "oracle should be in the store during setup") + + // Close the channel (to test the restore functionality) + s.UpdateChannelState(portId, channelId, channeltypes.CLOSED) + + return RestoreOracleICATestCase{ + ValidMsg: types.MsgRestoreOracleICA{OracleChainId: HostChainId}, + Oracle: oracle, + } +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_Successful() { + tc := s.SetupTestRestoreOracleICA() + + // Confirm there are two channels originally + channels := s.App.IBCKeeper.ChannelKeeper.GetAllChannels(s.Ctx) + s.Require().Len(channels, 2, "there should be 2 channels initially (transfer + oracle)") + + // Submit the restore message + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().NoError(err, "no error expected when restoring an oracle ICA") + + // Confirm the new channel was created + channels = s.App.IBCKeeper.ChannelKeeper.GetAllChannels(s.Ctx) + s.Require().Len(channels, 3, "there should be 3 channels after restoring") + + // Confirm the new channel is in state INIT + newChannelActive := false + for _, channel := range channels { + // The new channel should have the same port, a new channel ID and be in state INIT + if channel.PortId == tc.Oracle.PortId && channel.ChannelId != tc.Oracle.ChannelId && channel.State == channeltypes.INIT { + newChannelActive = true + } + } + s.Require().True(newChannelActive, "a new channel should have been created") +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_OracleDoesNotExist() { + tc := s.SetupTestRestoreOracleICA() + + // Submit the oracle with an invalid host zone, it should fail + invalidMsg := tc.ValidMsg + invalidMsg.OracleChainId = "fake_chain" + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().ErrorContains(err, "oracle not found") +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_IcaNotRegistered() { + tc := s.SetupTestRestoreOracleICA() + + // Update the oracle to appear as if the ICA was never registered in the first place + oracle := tc.Oracle + oracle.IcaAddress = "" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Submit the restore message - it should fail + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, fmt.Sprintf("the oracle (%s) has never had an registered ICA", HostChainId)) +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_ConnectionDoesNotExist() { + tc := s.SetupTestRestoreOracleICA() + + // Update the oracle to to have a non-existent connection-id + oracle := tc.Oracle + oracle.ConnectionId = "fake_connection" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Submit the rsetore message - it should fail + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "connection (fake_connection) not found") +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_Failure_IcaDoesNotExist() { + tc := s.SetupTestRestoreOracleICA() + + // Add a new connection-id that is not tied to an ICA + differentConnectionId := "connection-2" + connection := connectiontypes.ConnectionEnd{} + s.App.IBCKeeper.ConnectionKeeper.SetConnection(s.Ctx, differentConnectionId, connection) + + // Update the oracle to have that connectionId + oracle := tc.Oracle + oracle.ConnectionId = differentConnectionId + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracle) + + // Submit the restore message - it should fail + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "cannot find ICA account for connection") +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_Failure_ChannelOpen() { + tc := s.SetupTestRestoreOracleICA() + + // Open the channel back up + s.UpdateChannelState(tc.Oracle.PortId, tc.Oracle.ChannelId, channeltypes.OPEN) + + // Since the channel already OPEN, the restore should fail + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "channel already open") +} + +func (s *KeeperTestSuite) TestRestoreOracleICA_Failure_RegisterAccountFailure() { + tc := s.SetupTestRestoreOracleICA() + + // Change the channel status to INIT so that it's not OPEN or CLOSED + s.UpdateChannelState(tc.Oracle.PortId, tc.Oracle.ChannelId, channeltypes.INIT) + + // Disable middleware so the ICA registration fails + s.App.ICAControllerKeeper.SetMiddlewareDisabled(s.Ctx, tc.Oracle.PortId, tc.Oracle.ConnectionId) + + _, err := s.GetMsgServer().RestoreOracleICA(sdk.WrapSDKContext(s.Ctx), &tc.ValidMsg) + s.Require().ErrorContains(err, "unable to register oracle interchain account") +} diff --git a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go new file mode 100644 index 0000000000..3f6485425c --- /dev/null +++ b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go @@ -0,0 +1,47 @@ +package keeper_test + +import ( + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) TestGovToggleOracle() { + oracles := s.CreateTestOracles() + + oracleIndexToToggle := 1 + oracleToToggle := oracles[oracleIndexToToggle] + + // Set the oracle to inactive + _, err := s.GetMsgServer().ToggleOracle(s.Ctx, &types.MsgToggleOracle{ + Authority: s.App.ICAOracleKeeper.GetAuthority(), + OracleChainId: oracleToToggle.ChainId, + Active: false, + }) + s.Require().NoError(err) + + // Confirm it's the only oracle inactive + for i, oracle := range s.App.ICAOracleKeeper.GetAllOracles(s.Ctx) { + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, oracle.ChainId) + s.Require().True(found, "oracle %s does not exist", oracle.ChainId) + + if i == oracleIndexToToggle { + s.Require().False(oracle.Active, "oracle %s should have been toggled to inactive", oracle.ChainId) + } else { + s.Require().True(oracle.Active, "oracle %s should still be active", oracle.ChainId) + } + } + + // Set it back to active + _, err = s.GetMsgServer().ToggleOracle(s.Ctx, &types.MsgToggleOracle{ + Authority: s.App.ICAOracleKeeper.GetAuthority(), + OracleChainId: oracleToToggle.ChainId, + Active: true, + }) + s.Require().NoError(err) + + // Confirm all oracles are active again + for _, oracle := range s.App.ICAOracleKeeper.GetAllOracles(s.Ctx) { + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, oracle.ChainId) + s.Require().True(found, "oracle %s does not exist", oracle.ChainId) + s.Require().True(oracle.Active, "oracle %s should still be active", oracle.ChainId) + } +} diff --git a/x/icaoracle/keeper/oracle.go b/x/icaoracle/keeper/oracle.go new file mode 100644 index 0000000000..8d410294ec --- /dev/null +++ b/x/icaoracle/keeper/oracle.go @@ -0,0 +1,106 @@ +package keeper + +import ( + errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// Stores/updates an oracle object in the store +func (k Keeper) SetOracle(ctx sdk.Context, oracle types.Oracle) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OracleKeyPrefix) + + oracleKey := types.KeyPrefix(oracle.ChainId) + oracleValue := k.cdc.MustMarshal(&oracle) + + store.Set(oracleKey, oracleValue) +} + +// Grabs and returns an oracle object from the store using the chain-id +func (k Keeper) GetOracle(ctx sdk.Context, chainId string) (oracle types.Oracle, found bool) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OracleKeyPrefix) + + oracleKey := types.KeyPrefix(chainId) + oracleBz := store.Get(oracleKey) + + if len(oracleBz) == 0 { + return oracle, false + } + + k.cdc.MustUnmarshal(oracleBz, &oracle) + return oracle, true +} + +// Returns all oracles +func (k Keeper) GetAllOracles(ctx sdk.Context) []types.Oracle { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OracleKeyPrefix) + + iterator := store.Iterator(nil, nil) + defer iterator.Close() + + allOracles := []types.Oracle{} + for ; iterator.Valid(); iterator.Next() { + + oracle := types.Oracle{} + k.cdc.MustUnmarshal(iterator.Value(), &oracle) + allOracles = append(allOracles, oracle) + } + + return allOracles +} + +// Removes an oracle from the store +func (k Keeper) RemoveOracle(ctx sdk.Context, chainId string) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OracleKeyPrefix) + oracleKey := types.KeyPrefix(chainId) + store.Delete(oracleKey) +} + +// Toggle whether an oracle is active +func (k Keeper) ToggleOracle(ctx sdk.Context, chainId string, active bool) error { + oracle, found := k.GetOracle(ctx, chainId) + if !found { + return types.ErrOracleNotFound + } + + // If the oracle is being set to active, we need to first validate the ICA setup + if active { + if err := oracle.ValidateICASetup(); err != nil { + return err + } + if err := oracle.ValidateContractInstantiated(); err != nil { + return err + } + if !k.IsOracleICAChannelOpen(ctx, oracle) { + return errorsmod.Wrapf(types.ErrOracleICAChannelClosed, + "chain-id: %s, channel-id: %s", chainId, oracle.ChannelId) + } + } + + oracle.Active = active + k.SetOracle(ctx, oracle) + return nil +} + +// Grab's an oracle from it's connectionId +func (k Keeper) GetOracleFromConnectionId(ctx sdk.Context, connectionId string) (oracle types.Oracle, found bool) { + for _, oracle := range k.GetAllOracles(ctx) { + if oracle.ConnectionId == connectionId { + return oracle, true + } + } + return oracle, false +} + +// Checks if the oracle ICA channel is open +func (k Keeper) IsOracleICAChannelOpen(ctx sdk.Context, oracle types.Oracle) bool { + channel, found := k.ChannelKeeper.GetChannel(ctx, oracle.PortId, oracle.ChannelId) + if !found { + return false + } + return channel.State == channeltypes.OPEN +} diff --git a/x/icaoracle/keeper/oracle_test.go b/x/icaoracle/keeper/oracle_test.go new file mode 100644 index 0000000000..9ab3332894 --- /dev/null +++ b/x/icaoracle/keeper/oracle_test.go @@ -0,0 +1,124 @@ +package keeper_test + +import ( + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func (s *KeeperTestSuite) TestGetOracle() { + oracles := s.CreateTestOracles() + + expectedOracle := oracles[1] + + actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, expectedOracle.ChainId) + s.Require().True(found, "oracle should have been found, but was not") + s.Require().Equal(expectedOracle, actualOracle) +} + +func (s *KeeperTestSuite) TestGetAllOracles() { + expectedOracles := s.CreateTestOracles() + actualOracles := s.App.ICAOracleKeeper.GetAllOracles(s.Ctx) + s.Require().Len(actualOracles, len(expectedOracles), "number of oracles") + s.Require().ElementsMatch(expectedOracles, actualOracles, "contents of oracles") +} + +func (s *KeeperTestSuite) TestRemoveOracle() { + oracles := s.CreateTestOracles() + + oracleToRemove := oracles[1] + + // Remove the oracle + s.App.ICAOracleKeeper.RemoveOracle(s.Ctx, oracleToRemove.ChainId) + _, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, oracleToRemove.ChainId) + s.Require().False(found, "the removed oracle should not have been found, but it was") +} + +func (s *KeeperTestSuite) TestToggleOracle() { + oracles := s.CreateTestOracles() + oracleToToggle := oracles[1] + + // Set the oracle to inactive + err := s.App.ICAOracleKeeper.ToggleOracle(s.Ctx, oracleToToggle.ChainId, false) + s.Require().NoError(err, "no error expected when toggling oracle") + + oracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, oracleToToggle.ChainId) + s.Require().True(found, "oracle should have been found, but was not") + s.Require().False(oracle.Active, "oracle should have been marked inactive") + + // Remove the oracle connection ID and then try to re-activate it, it should fail + invalidOracle := oracleToToggle + invalidOracle.ConnectionId = "" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, invalidOracle) + + err = s.App.ICAOracleKeeper.ToggleOracle(s.Ctx, oracleToToggle.ChainId, true) + s.Require().ErrorContains(err, "oracle ICA channel has not been registered") + + // Remove the oracle contract address and try to re-activate it, it should fail + invalidOracle = oracleToToggle + invalidOracle.ContractAddress = "" + s.App.ICAOracleKeeper.SetOracle(s.Ctx, invalidOracle) + + err = s.App.ICAOracleKeeper.ToggleOracle(s.Ctx, oracleToToggle.ChainId, true) + s.Require().ErrorContains(err, "oracle not instantiated") + + // Reset the oracle with all fields present + s.App.ICAOracleKeeper.SetOracle(s.Ctx, oracleToToggle) + + // Close the ICA channel and try to re-active it, it should fail + s.UpdateChannelState(oracle.PortId, oracle.ChannelId, channeltypes.CLOSED) + + err = s.App.ICAOracleKeeper.ToggleOracle(s.Ctx, oracleToToggle.ChainId, true) + s.Require().ErrorContains(err, "oracle ICA channel is closed") + + // Re-open the channel and try once more - this time it should succeed + s.UpdateChannelState(oracle.PortId, oracle.ChannelId, channeltypes.OPEN) + + err = s.App.ICAOracleKeeper.ToggleOracle(s.Ctx, oracleToToggle.ChainId, true) + s.Require().NoError(err, "no error expected when toggling oracle") + + oracle, found = s.App.ICAOracleKeeper.GetOracle(s.Ctx, oracleToToggle.ChainId) + s.Require().True(found, "oracle should have been found, but was not") + s.Require().True(oracle.Active, "oracle should have been marked as active") +} + +func (s *KeeperTestSuite) TestGetOracleFromConnectionId() { + oracles := s.CreateTestOracles() + + // Get oracle using connection Id + expectedOracle := oracles[1] + actualOracle, found := s.App.ICAOracleKeeper.GetOracleFromConnectionId(s.Ctx, expectedOracle.ConnectionId) + s.Require().True(found, "oracle should have been found, but was not") + s.Require().Equal(expectedOracle, actualOracle) + + // Attempt to get an oracle with a fake connectionId - should fail + _, found = s.App.ICAOracleKeeper.GetOracleFromConnectionId(s.Ctx, "fake-connection-id") + s.Require().False(found, "oracle should not have been found, but it was") +} + +func (s *KeeperTestSuite) TestIsOracleICAChannelOpen() { + s.CreateTransferChannel("chain-1") + + oracle := types.Oracle{ + PortId: transfertypes.PortID, + ChannelId: ibctesting.FirstChannelID, + } + + // Check with an open channel, should equal true + isOpen := s.App.ICAOracleKeeper.IsOracleICAChannelOpen(s.Ctx, oracle) + s.Require().True(isOpen, "channel should be open") + + // Close the channel + s.UpdateChannelState(transfertypes.PortID, ibctesting.FirstChannelID, channeltypes.CLOSED) + + // Try again, it should be false this time + isOpen = s.App.ICAOracleKeeper.IsOracleICAChannelOpen(s.Ctx, oracle) + s.Require().False(isOpen, "channel should now be closed") + + // Try with a fake channel + oracle.ChannelId = "fake_channel" + isOpen = s.App.ICAOracleKeeper.IsOracleICAChannelOpen(s.Ctx, oracle) + s.Require().False(isOpen, "channel does not exist") +} diff --git a/x/icaoracle/module.go b/x/icaoracle/module.go new file mode 100644 index 0000000000..1758f2fdfb --- /dev/null +++ b/x/icaoracle/module.go @@ -0,0 +1,157 @@ +package icaoracle + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/gorilla/mux" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + + abci "github.com/cometbft/cometbft/abci/types" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +var ( + _ module.AppModule = AppModule{} + _ module.AppModuleBasic = AppModuleBasic{} +) + +// ---------------------------------------------------------------------------- +// AppModuleBasic +// ---------------------------------------------------------------------------- + +// AppModuleBasic implements the AppModuleBasic interface for the capability module. +type AppModuleBasic struct { + cdc codec.BinaryCodec +} + +func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { + return AppModuleBasic{cdc: cdc} +} + +// Name returns the capability module's name. +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) +} + +// RegisterInterfaces registers the module's interface types +func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(reg) +} + +// DefaultGenesis returns the capability module's default genesis state. +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesis()) +} + +// ValidateGenesis performs genesis state validation for the capability module. +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { + var genState types.GenesisState + if err := cdc.UnmarshalJSON(bz, &genState); err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) + } + return genState.Validate() +} + +// RegisterRESTRoutes registers the capability module's REST service handlers. +func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { +} + +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. +func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { + panic(err) + } +} + +// GetTxCmd returns the capability module's root tx command. +func (a AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.GetTxCmd() +} + +// GetQueryCmd returns the capability module's root query command. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + +// ---------------------------------------------------------------------------- +// AppModule +// ---------------------------------------------------------------------------- + +// AppModule implements the AppModule interface for the capability module. +type AppModule struct { + AppModuleBasic + + keeper keeper.Keeper +} + +func NewAppModule( + cdc codec.Codec, + keeper keeper.Keeper, +) AppModule { + return AppModule{ + AppModuleBasic: NewAppModuleBasic(cdc), + keeper: keeper, + } +} + +// Name returns the capability module's name. +func (am AppModule) Name() string { + return am.AppModuleBasic.Name() +} + +// RegisterServices registers a GRPC query service to respond to the +// module-specific GRPC queries. +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterQueryServer(cfg.QueryServer(), am.keeper) + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) +} + +// RegisterInvariants registers the capability module's invariants. +func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} + +// InitGenesis performs the capability module's genesis initialization It returns +// no validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { + var genState types.GenesisState + // Initialize global index to index in genesis state + cdc.MustUnmarshalJSON(gs, &genState) + + am.keeper.InitGenesis(ctx, genState) + + return []abci.ValidatorUpdate{} +} + +// ExportGenesis returns the capability module's exported genesis state as raw JSON bytes. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + genState := am.keeper.ExportGenesis(ctx) + return cdc.MustMarshalJSON(genState) +} + +// ConsensusVersion implements ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 1 } + +// BeginBlock executes all ABCI BeginBlock logic respective to the capability module. +func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} + +// EndBlock executes all ABCI EndBlock logic respective to the capability module. It +// returns no validator updates. +func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { + am.keeper.EndBlocker(ctx) + return []abci.ValidatorUpdate{} +} diff --git a/x/icaoracle/types/callbacks.pb.go b/x/icaoracle/types/callbacks.pb.go new file mode 100644 index 0000000000..41e254f478 --- /dev/null +++ b/x/icaoracle/types/callbacks.pb.go @@ -0,0 +1,551 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/icaoracle/callbacks.proto + +package types + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Callback data for instantiating an oracle +type InstantiateOracleCallback struct { + OracleChainId string `protobuf:"bytes,1,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` +} + +func (m *InstantiateOracleCallback) Reset() { *m = InstantiateOracleCallback{} } +func (m *InstantiateOracleCallback) String() string { return proto.CompactTextString(m) } +func (*InstantiateOracleCallback) ProtoMessage() {} +func (*InstantiateOracleCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_7b4c39df2554f0a2, []int{0} +} +func (m *InstantiateOracleCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *InstantiateOracleCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_InstantiateOracleCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *InstantiateOracleCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_InstantiateOracleCallback.Merge(m, src) +} +func (m *InstantiateOracleCallback) XXX_Size() int { + return m.Size() +} +func (m *InstantiateOracleCallback) XXX_DiscardUnknown() { + xxx_messageInfo_InstantiateOracleCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_InstantiateOracleCallback proto.InternalMessageInfo + +func (m *InstantiateOracleCallback) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +// Callback data for updating a value in the oracle +type UpdateOracleCallback struct { + OracleChainId string `protobuf:"bytes,1,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` + Metric *Metric `protobuf:"bytes,2,opt,name=metric,proto3" json:"metric,omitempty"` +} + +func (m *UpdateOracleCallback) Reset() { *m = UpdateOracleCallback{} } +func (m *UpdateOracleCallback) String() string { return proto.CompactTextString(m) } +func (*UpdateOracleCallback) ProtoMessage() {} +func (*UpdateOracleCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_7b4c39df2554f0a2, []int{1} +} +func (m *UpdateOracleCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UpdateOracleCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UpdateOracleCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UpdateOracleCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdateOracleCallback.Merge(m, src) +} +func (m *UpdateOracleCallback) XXX_Size() int { + return m.Size() +} +func (m *UpdateOracleCallback) XXX_DiscardUnknown() { + xxx_messageInfo_UpdateOracleCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdateOracleCallback proto.InternalMessageInfo + +func (m *UpdateOracleCallback) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +func (m *UpdateOracleCallback) GetMetric() *Metric { + if m != nil { + return m.Metric + } + return nil +} + +func init() { + proto.RegisterType((*InstantiateOracleCallback)(nil), "stride.icaoracle.InstantiateOracleCallback") + proto.RegisterType((*UpdateOracleCallback)(nil), "stride.icaoracle.UpdateOracleCallback") +} + +func init() { proto.RegisterFile("stride/icaoracle/callbacks.proto", fileDescriptor_7b4c39df2554f0a2) } + +var fileDescriptor_7b4c39df2554f0a2 = []byte{ + // 230 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x28, 0x2e, 0x29, 0xca, + 0x4c, 0x49, 0xd5, 0xcf, 0x4c, 0x4e, 0xcc, 0x2f, 0x4a, 0x4c, 0xce, 0x49, 0xd5, 0x4f, 0x4e, 0xcc, + 0xc9, 0x49, 0x4a, 0x4c, 0xce, 0x2e, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xa8, + 0xd0, 0x83, 0xab, 0x90, 0xc2, 0xd4, 0x03, 0x67, 0x41, 0xf4, 0x28, 0x39, 0x73, 0x49, 0x7a, 0xe6, + 0x15, 0x97, 0x24, 0xe6, 0x95, 0x64, 0x26, 0x96, 0xa4, 0xfa, 0x83, 0xa5, 0x9c, 0xa1, 0xe6, 0x0a, + 0xa9, 0x71, 0xf1, 0x43, 0x14, 0xc7, 0x27, 0x67, 0x24, 0x66, 0xe6, 0xc5, 0x67, 0xa6, 0x48, 0x30, + 0x2a, 0x30, 0x6a, 0x70, 0x06, 0xf1, 0x42, 0x84, 0x9d, 0x41, 0xa2, 0x9e, 0x29, 0x4a, 0x05, 0x5c, + 0x22, 0xa1, 0x05, 0x29, 0x64, 0xeb, 0x17, 0x32, 0xe0, 0x62, 0xcb, 0x4d, 0x2d, 0x29, 0xca, 0x4c, + 0x96, 0x60, 0x52, 0x60, 0xd4, 0xe0, 0x36, 0x92, 0xd0, 0x43, 0xf7, 0x89, 0x9e, 0x2f, 0x58, 0x3e, + 0x08, 0xaa, 0xce, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, + 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, + 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0xa6, 0xe8, 0xfa, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x48, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb9, 0xcd, + 0xd9, 0x9d, 0x64, 0x01, 0x00, 0x00, +} + +func (m *InstantiateOracleCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InstantiateOracleCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *InstantiateOracleCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintCallbacks(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UpdateOracleCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UpdateOracleCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdateOracleCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metric != nil { + { + size, err := m.Metric.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintCallbacks(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintCallbacks(dAtA []byte, offset int, v uint64) int { + offset -= sovCallbacks(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *InstantiateOracleCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovCallbacks(uint64(l)) + } + return n +} + +func (m *UpdateOracleCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovCallbacks(uint64(l)) + } + if m.Metric != nil { + l = m.Metric.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + return n +} + +func sovCallbacks(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozCallbacks(x uint64) (n int) { + return sovCallbacks(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *InstantiateOracleCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InstantiateOracleCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InstantiateOracleCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateOracleCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateOracleCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateOracleCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metric", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metric == nil { + m.Metric = &Metric{} + } + if err := m.Metric.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipCallbacks(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCallbacks + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCallbacks + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCallbacks + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthCallbacks + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupCallbacks + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthCallbacks + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthCallbacks = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowCallbacks = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupCallbacks = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/icaoracle/types/codec.go b/x/icaoracle/types/codec.go new file mode 100644 index 0000000000..0cd4ce9fd0 --- /dev/null +++ b/x/icaoracle/types/codec.go @@ -0,0 +1,46 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/legacy" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + govcodec "github.com/cosmos/cosmos-sdk/x/gov/codec" +) + +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + legacy.RegisterAminoMsg(cdc, &MsgAddOracle{}, "icaoracle/AddOracle") + legacy.RegisterAminoMsg(cdc, &MsgInstantiateOracle{}, "icaoracle/InstantiateOracle") + legacy.RegisterAminoMsg(cdc, &MsgRestoreOracleICA{}, "icaoracle/RestoreOracleICA") + legacy.RegisterAminoMsg(cdc, &MsgToggleOracle{}, "icaoracle/MsgToggleOracle") + legacy.RegisterAminoMsg(cdc, &MsgRemoveOracle{}, "icaoracle/MsgRemoveOracle") +} + +func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgAddOracle{}, + &MsgInstantiateOracle{}, + &MsgRestoreOracleICA{}, + &MsgToggleOracle{}, + &MsgRemoveOracle{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} + +var ( + amino = codec.NewLegacyAmino() + ModuleCdc = codec.NewProtoCodec(cdctypes.NewInterfaceRegistry()) +) + +func init() { + RegisterLegacyAminoCodec(amino) + cryptocodec.RegisterCrypto(amino) + sdk.RegisterLegacyAminoCodec(amino) + + // Register all Amino interfaces and concrete types on the authz and gov Amino codec so that this can later be + // used to properly serialize MsgSubmitProposal instances + RegisterLegacyAminoCodec(govcodec.Amino) +} diff --git a/x/icaoracle/types/contract.go b/x/icaoracle/types/contract.go new file mode 100644 index 0000000000..0cd6299115 --- /dev/null +++ b/x/icaoracle/types/contract.go @@ -0,0 +1,19 @@ +package types + +import ( + "encoding/base64" +) + +// Creates a new PostMetric contract message from a Metric +func NewMsgExecuteContractPostMetric(metric Metric) MsgExecuteContractPostMetric { + return MsgExecuteContractPostMetric{ + PostMetric: &MsgPostMetric{ + Key: metric.Key, + Value: metric.Value, + MetricType: metric.MetricType, + UpdateTime: metric.UpdateTime, + BlockHeight: metric.BlockHeight, + Attributes: base64.StdEncoding.EncodeToString([]byte(metric.Attributes)), + }, + } +} diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go new file mode 100644 index 0000000000..a6f4aebfa9 --- /dev/null +++ b/x/icaoracle/types/contract.pb.go @@ -0,0 +1,901 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/icaoracle/contract.proto + +package types + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// InstanitateOracleContract is the contract-specific instantiate message +type MsgInstantiateOracleContract struct { + AdminAddress string `protobuf:"bytes,1,opt,name=admin_address,json=adminAddress,proto3" json:"admin_address,omitempty"` +} + +func (m *MsgInstantiateOracleContract) Reset() { *m = MsgInstantiateOracleContract{} } +func (m *MsgInstantiateOracleContract) String() string { return proto.CompactTextString(m) } +func (*MsgInstantiateOracleContract) ProtoMessage() {} +func (*MsgInstantiateOracleContract) Descriptor() ([]byte, []int) { + return fileDescriptor_8bf036e49b48ee03, []int{0} +} +func (m *MsgInstantiateOracleContract) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgInstantiateOracleContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgInstantiateOracleContract.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgInstantiateOracleContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgInstantiateOracleContract.Merge(m, src) +} +func (m *MsgInstantiateOracleContract) XXX_Size() int { + return m.Size() +} +func (m *MsgInstantiateOracleContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgInstantiateOracleContract.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgInstantiateOracleContract proto.InternalMessageInfo + +func (m *MsgInstantiateOracleContract) GetAdminAddress() string { + if m != nil { + return m.AdminAddress + } + return "" +} + +// ExecuteContractPostMetric is the contract-specific metric update message +type MsgExecuteContractPostMetric struct { + PostMetric *MsgPostMetric `protobuf:"bytes,1,opt,name=post_metric,json=postMetric,proto3" json:"post_metric,omitempty"` +} + +func (m *MsgExecuteContractPostMetric) Reset() { *m = MsgExecuteContractPostMetric{} } +func (m *MsgExecuteContractPostMetric) String() string { return proto.CompactTextString(m) } +func (*MsgExecuteContractPostMetric) ProtoMessage() {} +func (*MsgExecuteContractPostMetric) Descriptor() ([]byte, []int) { + return fileDescriptor_8bf036e49b48ee03, []int{1} +} +func (m *MsgExecuteContractPostMetric) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgExecuteContractPostMetric) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgExecuteContractPostMetric.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgExecuteContractPostMetric) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgExecuteContractPostMetric.Merge(m, src) +} +func (m *MsgExecuteContractPostMetric) XXX_Size() int { + return m.Size() +} +func (m *MsgExecuteContractPostMetric) XXX_DiscardUnknown() { + xxx_messageInfo_MsgExecuteContractPostMetric.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgExecuteContractPostMetric proto.InternalMessageInfo + +func (m *MsgExecuteContractPostMetric) GetPostMetric() *MsgPostMetric { + if m != nil { + return m.PostMetric + } + return nil +} + +// Body of PostMetric contract message +type MsgPostMetric struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + MetricType string `protobuf:"bytes,3,opt,name=metric_type,json=metricType,proto3" json:"metric_type,omitempty"` + UpdateTime int64 `protobuf:"varint,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + BlockHeight int64 `protobuf:"varint,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + Attributes string `protobuf:"bytes,6,opt,name=attributes,proto3" json:"attributes,omitempty"` +} + +func (m *MsgPostMetric) Reset() { *m = MsgPostMetric{} } +func (m *MsgPostMetric) String() string { return proto.CompactTextString(m) } +func (*MsgPostMetric) ProtoMessage() {} +func (*MsgPostMetric) Descriptor() ([]byte, []int) { + return fileDescriptor_8bf036e49b48ee03, []int{2} +} +func (m *MsgPostMetric) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPostMetric) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPostMetric.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgPostMetric) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPostMetric.Merge(m, src) +} +func (m *MsgPostMetric) XXX_Size() int { + return m.Size() +} +func (m *MsgPostMetric) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPostMetric.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPostMetric proto.InternalMessageInfo + +func (m *MsgPostMetric) GetKey() string { + if m != nil { + return m.Key + } + return "" +} + +func (m *MsgPostMetric) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func (m *MsgPostMetric) GetMetricType() string { + if m != nil { + return m.MetricType + } + return "" +} + +func (m *MsgPostMetric) GetUpdateTime() int64 { + if m != nil { + return m.UpdateTime + } + return 0 +} + +func (m *MsgPostMetric) GetBlockHeight() int64 { + if m != nil { + return m.BlockHeight + } + return 0 +} + +func (m *MsgPostMetric) GetAttributes() string { + if m != nil { + return m.Attributes + } + return "" +} + +func init() { + proto.RegisterType((*MsgInstantiateOracleContract)(nil), "stride.icaoracle.MsgInstantiateOracleContract") + proto.RegisterType((*MsgExecuteContractPostMetric)(nil), "stride.icaoracle.MsgExecuteContractPostMetric") + proto.RegisterType((*MsgPostMetric)(nil), "stride.icaoracle.MsgPostMetric") +} + +func init() { proto.RegisterFile("stride/icaoracle/contract.proto", fileDescriptor_8bf036e49b48ee03) } + +var fileDescriptor_8bf036e49b48ee03 = []byte{ + // 346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcf, 0x4e, 0xc2, 0x40, + 0x10, 0xc6, 0xa9, 0x08, 0x89, 0x5b, 0x48, 0xc8, 0xc6, 0x43, 0x0f, 0xa6, 0x20, 0x5e, 0xb8, 0xd8, + 0x46, 0x78, 0x01, 0x95, 0x98, 0x68, 0x62, 0xa3, 0x41, 0x4e, 0x5e, 0xea, 0x76, 0x3b, 0x29, 0x1b, + 0x68, 0xb7, 0xe9, 0x4e, 0x09, 0xbc, 0x85, 0x0f, 0xe4, 0x03, 0x78, 0xe4, 0xe8, 0xd1, 0xc0, 0x8b, + 0x18, 0x76, 0x09, 0xa8, 0xb7, 0x99, 0xdf, 0x7c, 0xf3, 0x67, 0xf7, 0x23, 0x6d, 0x85, 0x85, 0x88, + 0xc1, 0x17, 0x9c, 0xc9, 0x82, 0xf1, 0x19, 0xf8, 0x5c, 0x66, 0x58, 0x30, 0x8e, 0x5e, 0x5e, 0x48, + 0x94, 0xb4, 0x65, 0x04, 0xde, 0x5e, 0xd0, 0x1d, 0x92, 0xb3, 0x40, 0x25, 0x0f, 0x99, 0x42, 0x96, + 0xa1, 0x60, 0x08, 0x4f, 0x9a, 0x0f, 0x77, 0x7d, 0xf4, 0x82, 0x34, 0x59, 0x9c, 0x8a, 0x2c, 0x64, + 0x71, 0x5c, 0x80, 0x52, 0x8e, 0xd5, 0xb1, 0x7a, 0x27, 0xa3, 0x86, 0x86, 0x37, 0x86, 0x75, 0xdf, + 0xf4, 0x90, 0xbb, 0x05, 0xf0, 0x12, 0xf7, 0xad, 0xcf, 0x52, 0x61, 0x00, 0x58, 0x08, 0x4e, 0xaf, + 0x89, 0x9d, 0x4b, 0x85, 0x61, 0xaa, 0x53, 0x3d, 0xc2, 0xee, 0xb7, 0xbd, 0xff, 0xc7, 0x78, 0x81, + 0x4a, 0x0e, 0x5d, 0x23, 0x92, 0xef, 0xe3, 0xee, 0x87, 0x45, 0x9a, 0x7f, 0xaa, 0xb4, 0x45, 0xaa, + 0x53, 0x58, 0xee, 0xce, 0xd9, 0x86, 0xf4, 0x94, 0xd4, 0xe6, 0x6c, 0x56, 0x82, 0x73, 0xa4, 0x99, + 0x49, 0x68, 0x9b, 0xd8, 0x66, 0x6d, 0x88, 0xcb, 0x1c, 0x9c, 0xaa, 0xae, 0x11, 0x83, 0xc6, 0xcb, + 0x5c, 0x0b, 0xca, 0x3c, 0x66, 0x08, 0x21, 0x8a, 0x14, 0x9c, 0xe3, 0x8e, 0xd5, 0xab, 0x8e, 0x88, + 0x41, 0x63, 0x91, 0x02, 0x3d, 0x27, 0x8d, 0x68, 0x26, 0xf9, 0x34, 0x9c, 0x80, 0x48, 0x26, 0xe8, + 0xd4, 0xb4, 0xc2, 0xd6, 0xec, 0x5e, 0x23, 0xea, 0x12, 0xc2, 0x10, 0x0b, 0x11, 0x95, 0x08, 0xca, + 0xa9, 0x9b, 0x1d, 0x07, 0x72, 0x1b, 0x7c, 0xae, 0x5d, 0x6b, 0xb5, 0x76, 0xad, 0xef, 0xb5, 0x6b, + 0xbd, 0x6f, 0xdc, 0xca, 0x6a, 0xe3, 0x56, 0xbe, 0x36, 0x6e, 0xe5, 0x75, 0x90, 0x08, 0x9c, 0x94, + 0x91, 0xc7, 0x65, 0xea, 0xbf, 0xe8, 0xff, 0xb8, 0x7c, 0x64, 0x91, 0xf2, 0x77, 0x4e, 0xce, 0xaf, + 0xfa, 0xfe, 0xe2, 0x97, 0x9f, 0xdb, 0x37, 0xa8, 0xa8, 0xae, 0xdd, 0x1c, 0xfc, 0x04, 0x00, 0x00, + 0xff, 0xff, 0xe5, 0xeb, 0x1f, 0x12, 0xf0, 0x01, 0x00, 0x00, +} + +func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgInstantiateOracleContract) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgInstantiateOracleContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AdminAddress) > 0 { + i -= len(m.AdminAddress) + copy(dAtA[i:], m.AdminAddress) + i = encodeVarintContract(dAtA, i, uint64(len(m.AdminAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgExecuteContractPostMetric) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgExecuteContractPostMetric) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgExecuteContractPostMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.PostMetric != nil { + { + size, err := m.PostMetric.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintContract(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgPostMetric) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgPostMetric) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPostMetric) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Attributes) > 0 { + i -= len(m.Attributes) + copy(dAtA[i:], m.Attributes) + i = encodeVarintContract(dAtA, i, uint64(len(m.Attributes))) + i-- + dAtA[i] = 0x32 + } + if m.BlockHeight != 0 { + i = encodeVarintContract(dAtA, i, uint64(m.BlockHeight)) + i-- + dAtA[i] = 0x28 + } + if m.UpdateTime != 0 { + i = encodeVarintContract(dAtA, i, uint64(m.UpdateTime)) + i-- + dAtA[i] = 0x20 + } + if len(m.MetricType) > 0 { + i -= len(m.MetricType) + copy(dAtA[i:], m.MetricType) + i = encodeVarintContract(dAtA, i, uint64(len(m.MetricType))) + i-- + dAtA[i] = 0x1a + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintContract(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x12 + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintContract(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintContract(dAtA []byte, offset int, v uint64) int { + offset -= sovContract(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgInstantiateOracleContract) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.AdminAddress) + if l > 0 { + n += 1 + l + sovContract(uint64(l)) + } + return n +} + +func (m *MsgExecuteContractPostMetric) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PostMetric != nil { + l = m.PostMetric.Size() + n += 1 + l + sovContract(uint64(l)) + } + return n +} + +func (m *MsgPostMetric) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Key) + if l > 0 { + n += 1 + l + sovContract(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovContract(uint64(l)) + } + l = len(m.MetricType) + if l > 0 { + n += 1 + l + sovContract(uint64(l)) + } + if m.UpdateTime != 0 { + n += 1 + sovContract(uint64(m.UpdateTime)) + } + if m.BlockHeight != 0 { + n += 1 + sovContract(uint64(m.BlockHeight)) + } + l = len(m.Attributes) + if l > 0 { + n += 1 + l + sovContract(uint64(l)) + } + return n +} + +func sovContract(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozContract(x uint64) (n int) { + return sovContract(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgInstantiateOracleContract) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgInstantiateOracleContract: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgInstantiateOracleContract: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AdminAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + 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 ErrInvalidLengthContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AdminAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipContract(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthContract + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgExecuteContractPostMetric) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgExecuteContractPostMetric: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgExecuteContractPostMetric: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PostMetric", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthContract + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PostMetric == nil { + m.PostMetric = &MsgPostMetric{} + } + if err := m.PostMetric.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipContract(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthContract + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgPostMetric) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgPostMetric: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPostMetric: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + 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 ErrInvalidLengthContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + 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 ErrInvalidLengthContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + 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 ErrInvalidLengthContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateTime", wireType) + } + m.UpdateTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdateTime |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType) + } + m.BlockHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BlockHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + 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 ErrInvalidLengthContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Attributes = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipContract(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthContract + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipContract(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowContract + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowContract + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowContract + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthContract + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupContract + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthContract + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthContract = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowContract = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupContract = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/icaoracle/types/cosmwasm.go b/x/icaoracle/types/cosmwasm.go new file mode 100644 index 0000000000..2534e49788 --- /dev/null +++ b/x/icaoracle/types/cosmwasm.go @@ -0,0 +1,89 @@ +package types + +import ( + "bytes" + "encoding/json" + "errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// RawContractMessage defines a json message that is sent or returned by a wasm contract. +// This type can hold any type of bytes. Until validateBasic is called there should not be +// any assumptions made that the data is valid syntax or semantic. +type RawContractMessage []byte + +func (r RawContractMessage) MarshalJSON() ([]byte, error) { + return json.RawMessage(r).MarshalJSON() +} + +func (r *RawContractMessage) UnmarshalJSON(b []byte) error { + if r == nil { + return errors.New("unmarshalJSON on nil pointer") + } + *r = append((*r)[0:0], b...) + return nil +} + +func (r *RawContractMessage) ValidateBasic() error { + if r == nil { + return sdkerrors.ErrInvalidType + } + if !json.Valid(*r) { + return sdkerrors.ErrInvalidRequest + } + return nil +} + +// Bytes returns raw bytes type +func (r RawContractMessage) Bytes() []byte { + return r +} + +// Equal content is equal json. Byte equal but this can change in the future. +func (r RawContractMessage) Equal(o RawContractMessage) bool { + return bytes.Equal(r.Bytes(), o.Bytes()) +} + +var _ sdk.Msg = &MsgExecuteContract{} + +func (msg MsgExecuteContract) Route() string { + return RouterKey +} + +func (msg MsgExecuteContract) Type() string { + return "execute" +} + +func (msg MsgExecuteContract) ValidateBasic() error { + return nil +} + +func (msg MsgExecuteContract) GetSignBytes() []byte { + return nil +} + +func (msg MsgExecuteContract) GetSigners() []sdk.AccAddress { + return []sdk.AccAddress{} +} + +func (msg MsgInstantiateContract) Route() string { + return RouterKey +} + +func (msg MsgInstantiateContract) Type() string { + return "instantiate" +} + +func (msg MsgInstantiateContract) ValidateBasic() error { + return nil +} + +func (msg MsgInstantiateContract) GetSignBytes() []byte { + return nil +} + +func (msg MsgInstantiateContract) GetSigners() []sdk.AccAddress { + return []sdk.AccAddress{} +} diff --git a/x/icaoracle/types/cosmwasm.pb.go b/x/icaoracle/types/cosmwasm.pb.go new file mode 100644 index 0000000000..5ad44e747e --- /dev/null +++ b/x/icaoracle/types/cosmwasm.pb.go @@ -0,0 +1,1161 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmwasm/wasm/v1/cosmwasm.proto + +package types + +import ( + fmt "fmt" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgExecuteContract submits the given message data to a smart contract +type MsgExecuteContract struct { + // Sender is the that actor that signed the messages + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + // Contract is the address of the smart contract + Contract string `protobuf:"bytes,2,opt,name=contract,proto3" json:"contract,omitempty"` + // Msg json encoded message to be passed to the contract + Msg RawContractMessage `protobuf:"bytes,3,opt,name=msg,proto3,casttype=RawContractMessage" json:"msg,omitempty"` + // Funds coins that are transferred to the contract on execution + Funds github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,5,rep,name=funds,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"funds"` +} + +func (m *MsgExecuteContract) Reset() { *m = MsgExecuteContract{} } +func (m *MsgExecuteContract) String() string { return proto.CompactTextString(m) } +func (*MsgExecuteContract) ProtoMessage() {} +func (*MsgExecuteContract) Descriptor() ([]byte, []int) { + return fileDescriptor_42aeb672f768be80, []int{0} +} +func (m *MsgExecuteContract) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgExecuteContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgExecuteContract.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgExecuteContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgExecuteContract.Merge(m, src) +} +func (m *MsgExecuteContract) XXX_Size() int { + return m.Size() +} +func (m *MsgExecuteContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgExecuteContract.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgExecuteContract proto.InternalMessageInfo + +func (m *MsgExecuteContract) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +func (m *MsgExecuteContract) GetContract() string { + if m != nil { + return m.Contract + } + return "" +} + +func (m *MsgExecuteContract) GetMsg() RawContractMessage { + if m != nil { + return m.Msg + } + return nil +} + +func (m *MsgExecuteContract) GetFunds() github_com_cosmos_cosmos_sdk_types.Coins { + if m != nil { + return m.Funds + } + return nil +} + +// MsgInstantiateContract create a new smart contract instance for the given +// code id. +type MsgInstantiateContract struct { + // Sender is the that actor that signed the messages + Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + // Admin is an optional address that can execute migrations + Admin string `protobuf:"bytes,2,opt,name=admin,proto3" json:"admin,omitempty"` + // CodeID is the reference to the stored WASM code + CodeID uint64 `protobuf:"varint,3,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` + // Label is optional metadata to be stored with a contract instance. + Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"` + // Msg json encoded message to be passed to the contract on instantiation + Msg RawContractMessage `protobuf:"bytes,5,opt,name=msg,proto3,casttype=RawContractMessage" json:"msg,omitempty"` + // Funds coins that are transferred to the contract on instantiation + Funds github_com_cosmos_cosmos_sdk_types.Coins `protobuf:"bytes,6,rep,name=funds,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"funds"` +} + +func (m *MsgInstantiateContract) Reset() { *m = MsgInstantiateContract{} } +func (m *MsgInstantiateContract) String() string { return proto.CompactTextString(m) } +func (*MsgInstantiateContract) ProtoMessage() {} +func (*MsgInstantiateContract) Descriptor() ([]byte, []int) { + return fileDescriptor_42aeb672f768be80, []int{1} +} +func (m *MsgInstantiateContract) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgInstantiateContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgInstantiateContract.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgInstantiateContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgInstantiateContract.Merge(m, src) +} +func (m *MsgInstantiateContract) XXX_Size() int { + return m.Size() +} +func (m *MsgInstantiateContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgInstantiateContract.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgInstantiateContract proto.InternalMessageInfo + +func (m *MsgInstantiateContract) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +func (m *MsgInstantiateContract) GetAdmin() string { + if m != nil { + return m.Admin + } + return "" +} + +func (m *MsgInstantiateContract) GetCodeID() uint64 { + if m != nil { + return m.CodeID + } + return 0 +} + +func (m *MsgInstantiateContract) GetLabel() string { + if m != nil { + return m.Label + } + return "" +} + +func (m *MsgInstantiateContract) GetMsg() RawContractMessage { + if m != nil { + return m.Msg + } + return nil +} + +func (m *MsgInstantiateContract) GetFunds() github_com_cosmos_cosmos_sdk_types.Coins { + if m != nil { + return m.Funds + } + return nil +} + +// MsgInstantiateContractResponse return instantiation result data +type MsgInstantiateContractResponse struct { + // Address is the bech32 address of the new contract instance. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // Data contains bytes to returned from the contract + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *MsgInstantiateContractResponse) Reset() { *m = MsgInstantiateContractResponse{} } +func (m *MsgInstantiateContractResponse) String() string { return proto.CompactTextString(m) } +func (*MsgInstantiateContractResponse) ProtoMessage() {} +func (*MsgInstantiateContractResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_42aeb672f768be80, []int{2} +} +func (m *MsgInstantiateContractResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgInstantiateContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgInstantiateContractResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgInstantiateContractResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgInstantiateContractResponse.Merge(m, src) +} +func (m *MsgInstantiateContractResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgInstantiateContractResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgInstantiateContractResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgInstantiateContractResponse proto.InternalMessageInfo + +func (m *MsgInstantiateContractResponse) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *MsgInstantiateContractResponse) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +func init() { + proto.RegisterType((*MsgExecuteContract)(nil), "cosmwasm.wasm.v1.MsgExecuteContract") + proto.RegisterType((*MsgInstantiateContract)(nil), "cosmwasm.wasm.v1.MsgInstantiateContract") + proto.RegisterType((*MsgInstantiateContractResponse)(nil), "cosmwasm.wasm.v1.MsgInstantiateContractResponse") +} + +func init() { proto.RegisterFile("cosmwasm/wasm/v1/cosmwasm.proto", fileDescriptor_42aeb672f768be80) } + +var fileDescriptor_42aeb672f768be80 = []byte{ + // 427 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xb1, 0x8e, 0xd3, 0x40, + 0x10, 0x8d, 0x2f, 0x89, 0x0f, 0x96, 0x2b, 0xd0, 0xea, 0x14, 0x99, 0x14, 0x76, 0x74, 0x34, 0x6e, + 0xce, 0x4b, 0xee, 0xfe, 0x20, 0x81, 0x22, 0x12, 0xa1, 0x30, 0x1d, 0x0d, 0x1a, 0x7b, 0x07, 0x63, + 0x11, 0xef, 0x46, 0x9e, 0x4d, 0xee, 0xf8, 0x09, 0xc4, 0x77, 0xf0, 0x25, 0x57, 0x5e, 0x83, 0x44, + 0x15, 0x50, 0xf2, 0x17, 0x54, 0xc8, 0xbb, 0x76, 0x44, 0x41, 0x01, 0x05, 0xcd, 0x78, 0x9e, 0xe7, + 0xcd, 0xe8, 0xbd, 0xa7, 0x65, 0x51, 0xae, 0xa9, 0xba, 0x01, 0xaa, 0x84, 0x2d, 0xdb, 0xa9, 0xe8, + 0x7e, 0x24, 0xeb, 0x5a, 0x1b, 0xcd, 0x1f, 0x1f, 0xb1, 0x2d, 0xdb, 0xe9, 0xf8, 0xbc, 0xd0, 0x85, + 0xb6, 0x43, 0xd1, 0x74, 0x8e, 0x37, 0x0e, 0x1b, 0x9e, 0x26, 0x91, 0x01, 0xa1, 0xd8, 0x4e, 0x33, + 0x34, 0xd0, 0xdc, 0x2a, 0x95, 0x9b, 0x5f, 0x7c, 0xf5, 0x18, 0x5f, 0x52, 0xf1, 0xe2, 0x16, 0xf3, + 0x8d, 0xc1, 0xb9, 0x56, 0xa6, 0x86, 0xdc, 0xf0, 0x11, 0xf3, 0x09, 0x95, 0xc4, 0x3a, 0xf0, 0x26, + 0x5e, 0xfc, 0x30, 0x6d, 0x11, 0x1f, 0xb3, 0x07, 0x79, 0xcb, 0x09, 0x4e, 0xec, 0xe4, 0x88, 0x79, + 0xcc, 0xfa, 0x15, 0x15, 0x41, 0x7f, 0xe2, 0xc5, 0x67, 0xb3, 0xd1, 0xcf, 0x5d, 0xc4, 0x53, 0xb8, + 0xe9, 0x2e, 0x2e, 0x91, 0x08, 0x0a, 0x4c, 0x1b, 0x0a, 0x07, 0x36, 0x7c, 0xb7, 0x51, 0x92, 0x82, + 0xe1, 0xa4, 0x1f, 0x3f, 0xba, 0x7a, 0x92, 0x38, 0x91, 0x49, 0x23, 0x32, 0x69, 0x45, 0x26, 0x73, + 0x5d, 0xaa, 0xd9, 0xb3, 0xbb, 0x5d, 0xd4, 0xfb, 0xf2, 0x3d, 0x8a, 0x8b, 0xd2, 0xbc, 0xdf, 0x64, + 0x49, 0xae, 0x2b, 0xd1, 0x3a, 0x72, 0x9f, 0x4b, 0x92, 0x1f, 0x84, 0xf9, 0xb8, 0x46, 0xb2, 0x0b, + 0x94, 0xba, 0xcb, 0x17, 0x9f, 0x4e, 0xd8, 0x68, 0x49, 0xc5, 0x42, 0x91, 0x01, 0x65, 0x4a, 0xf8, + 0x0b, 0x6f, 0xe7, 0x6c, 0x08, 0xb2, 0x2a, 0x55, 0x6b, 0xcc, 0x01, 0xfe, 0x94, 0x9d, 0xe6, 0x5a, + 0xe2, 0xdb, 0x52, 0x5a, 0x67, 0x83, 0x19, 0xdb, 0xef, 0x22, 0x7f, 0xae, 0x25, 0x2e, 0x9e, 0xa7, + 0x7e, 0x33, 0x5a, 0xc8, 0x66, 0x75, 0x05, 0x19, 0xae, 0x82, 0x81, 0x5b, 0xb5, 0xa0, 0x0b, 0x64, + 0xf8, 0x0f, 0x81, 0xf8, 0xff, 0x2d, 0x90, 0x57, 0x2c, 0xfc, 0x73, 0x1e, 0x29, 0xd2, 0x5a, 0x2b, + 0x42, 0x1e, 0xb0, 0x53, 0x90, 0xb2, 0x46, 0xa2, 0x36, 0x98, 0x0e, 0x72, 0xce, 0x06, 0x12, 0x0c, + 0xd8, 0x60, 0xce, 0x52, 0xdb, 0xcf, 0x96, 0x77, 0xfb, 0xd0, 0xbb, 0xdf, 0x87, 0xde, 0x8f, 0x7d, + 0xe8, 0x7d, 0x3e, 0x84, 0xbd, 0xfb, 0x43, 0xd8, 0xfb, 0x76, 0x08, 0x7b, 0x6f, 0xae, 0x7f, 0x93, + 0xf6, 0xda, 0xd4, 0xa5, 0xc4, 0xcb, 0x97, 0x90, 0x91, 0x20, 0xdb, 0x8b, 0xed, 0xf4, 0x4a, 0xdc, + 0x8a, 0x32, 0x07, 0x5d, 0x43, 0xbe, 0x42, 0xa7, 0x35, 0xf3, 0xed, 0x73, 0xbc, 0xfe, 0x15, 0x00, + 0x00, 0xff, 0xff, 0x1a, 0x59, 0xb5, 0x49, 0xf9, 0x02, 0x00, 0x00, +} + +func (m *MsgExecuteContract) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgExecuteContract) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgExecuteContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Funds) > 0 { + for iNdEx := len(m.Funds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Funds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCosmwasm(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.Msg) > 0 { + i -= len(m.Msg) + copy(dAtA[i:], m.Msg) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Msg))) + i-- + dAtA[i] = 0x1a + } + if len(m.Contract) > 0 { + i -= len(m.Contract) + copy(dAtA[i:], m.Contract) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Contract))) + i-- + dAtA[i] = 0x12 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgInstantiateContract) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgInstantiateContract) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgInstantiateContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Funds) > 0 { + for iNdEx := len(m.Funds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Funds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCosmwasm(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.Msg) > 0 { + i -= len(m.Msg) + copy(dAtA[i:], m.Msg) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Msg))) + i-- + dAtA[i] = 0x2a + } + if len(m.Label) > 0 { + i -= len(m.Label) + copy(dAtA[i:], m.Label) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Label))) + i-- + dAtA[i] = 0x22 + } + if m.CodeID != 0 { + i = encodeVarintCosmwasm(dAtA, i, uint64(m.CodeID)) + i-- + dAtA[i] = 0x18 + } + if len(m.Admin) > 0 { + i -= len(m.Admin) + copy(dAtA[i:], m.Admin) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Admin))) + i-- + dAtA[i] = 0x12 + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgInstantiateContractResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgInstantiateContractResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgInstantiateContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x12 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintCosmwasm(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintCosmwasm(dAtA []byte, offset int, v uint64) int { + offset -= sovCosmwasm(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgExecuteContract) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + l = len(m.Contract) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + l = len(m.Msg) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + if len(m.Funds) > 0 { + for _, e := range m.Funds { + l = e.Size() + n += 1 + l + sovCosmwasm(uint64(l)) + } + } + return n +} + +func (m *MsgInstantiateContract) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + l = len(m.Admin) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + if m.CodeID != 0 { + n += 1 + sovCosmwasm(uint64(m.CodeID)) + } + l = len(m.Label) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + l = len(m.Msg) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + if len(m.Funds) > 0 { + for _, e := range m.Funds { + l = e.Size() + n += 1 + l + sovCosmwasm(uint64(l)) + } + } + return n +} + +func (m *MsgInstantiateContractResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovCosmwasm(uint64(l)) + } + return n +} + +func sovCosmwasm(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozCosmwasm(x uint64) (n int) { + return sovCosmwasm(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgExecuteContract) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgExecuteContract: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgExecuteContract: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + 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 ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Contract", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + 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 ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Contract = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Msg = append(m.Msg[:0], dAtA[iNdEx:postIndex]...) + if m.Msg == nil { + m.Msg = []byte{} + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Funds = append(m.Funds, types.Coin{}) + if err := m.Funds[len(m.Funds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCosmwasm(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCosmwasm + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgInstantiateContract) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgInstantiateContract: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgInstantiateContract: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + 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 ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Admin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + 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 ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Admin = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CodeID", wireType) + } + m.CodeID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CodeID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Label", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + 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 ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Label = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Msg = append(m.Msg[:0], dAtA[iNdEx:postIndex]...) + if m.Msg == nil { + m.Msg = []byte{} + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Funds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Funds = append(m.Funds, types.Coin{}) + if err := m.Funds[len(m.Funds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCosmwasm(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCosmwasm + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgInstantiateContractResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgInstantiateContractResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgInstantiateContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + 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 ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthCosmwasm + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthCosmwasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCosmwasm(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCosmwasm + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipCosmwasm(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowCosmwasm + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthCosmwasm + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupCosmwasm + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthCosmwasm + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthCosmwasm = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowCosmwasm = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupCosmwasm = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/icaoracle/types/errors.go b/x/icaoracle/types/errors.go new file mode 100644 index 0000000000..26ae487590 --- /dev/null +++ b/x/icaoracle/types/errors.go @@ -0,0 +1,23 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" +) + +var ( + ErrOracleNotFound = errorsmod.Register(ModuleName, 1, "oracle not found") + ErrClientStateNotTendermint = errorsmod.Register(ModuleName, 2, "client state is not tendermint") + ErrHostConnectionNotFound = errorsmod.Register(ModuleName, 3, "host connection not found") + ErrOracleAlreadyExists = errorsmod.Register(ModuleName, 4, "oracle already exists") + ErrOracleNotInstantiated = errorsmod.Register(ModuleName, 5, "oracle not instantiated") + ErrOracleAlreadyInstantiated = errorsmod.Register(ModuleName, 6, "oracle already instantiated") + ErrOracleICANotRegistered = errorsmod.Register(ModuleName, 7, "oracle ICA channel has not been registered") + ErrOracleICAChannelClosed = errorsmod.Register(ModuleName, 8, "oracle ICA channel is closed") + ErrOracleInactive = errorsmod.Register(ModuleName, 9, "oracle is inactive") + ErrInvalidICARequest = errorsmod.Register(ModuleName, 10, "invalid ICA request") + ErrInvalidICAResponse = errorsmod.Register(ModuleName, 11, "invalid ICA response") + ErrInvalidCallback = errorsmod.Register(ModuleName, 12, "invalid callback data") + ErrICAAccountDoesNotExist = errorsmod.Register(ModuleName, 13, "ICA account does not exist") + ErrInvalidGenesisState = errorsmod.Register(ModuleName, 14, "Invalid genesis state") + ErrUnableToRestoreICAChannel = errorsmod.Register(ModuleName, 15, "unable to restore oracle ICA channel") +) diff --git a/x/icaoracle/types/events.go b/x/icaoracle/types/events.go new file mode 100644 index 0000000000..2c6fae1130 --- /dev/null +++ b/x/icaoracle/types/events.go @@ -0,0 +1,15 @@ +package types + +const ( + EventTypeUpdateOracle = "update_oracle" + EventTypeUpdateOracleAck = "update_oracle_ack" + + AttributeKeyOracleChainId = "oracle_chain_id" + AttributeKeyMetricID = "metric_id" + AttributeKeyMetricKey = "metric_key" + AttributeKeyMetricValue = "metric_value" + AttributeKeyMetricType = "metric_type" + AttributeKeyMetricUpdateTime = "metric_update_time" + AttributeKeyMetricBlockHeight = "metric_block_height" + AttributeKeyMetricAckStatus = "metric_ack_status" +) diff --git a/x/icaoracle/types/expected_keepers.go b/x/icaoracle/types/expected_keepers.go new file mode 100644 index 0000000000..0ca123995e --- /dev/null +++ b/x/icaoracle/types/expected_keepers.go @@ -0,0 +1,56 @@ +package types + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v7/modules/core/exported" + ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + + icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" +) + +// ClientKeeper defines the expected IBC client keeper +type ClientKeeper interface { + GetClientState(ctx sdk.Context, clientID string) (exported.ClientState, bool) +} + +// ConnectionKeeper defines the expected IBC connection keeper +type ConnectionKeeper interface { + GetConnection(ctx sdk.Context, connectionID string) (connectiontypes.ConnectionEnd, bool) +} + +// ChannelKeeper defines the expected IBC channel keeper +type ChannelKeeper interface { + GetChannel(ctx sdk.Context, portID, channelID string) (channeltypes.Channel, bool) + GetChannelConnection(ctx sdk.Context, portID, channelID string) (string, exported.ConnectionI, error) +} + +// ICAControllerKeeper defines the expected ICA controller keeper +type ICAControllerKeeper interface { + GetInterchainAccountAddress(ctx sdk.Context, connectionID, portID string) (string, bool) + GetOpenActiveChannel(ctx sdk.Context, connectionID, portID string) (string, bool) + RegisterInterchainAccount(ctx sdk.Context, connectionID, owner, version string) error +} + +// ICACallbacksKeeper defines the expected ICA callback keeper +type ICACallbacksKeeper interface { + SetCallbackData(ctx sdk.Context, callbackData icacallbackstypes.CallbackData) +} + +// ICS4Wrapper defines the expected ICS4Wrapper for middleware +type ICS4Wrapper interface { + WriteAcknowledgement(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, acknowledgement ibcexported.Acknowledgement) error + SendPacket( + ctx sdk.Context, + chanCap *capabilitytypes.Capability, + sourcePort string, + sourceChannel string, + timeoutHeight clienttypes.Height, + timeoutTimestamp uint64, + data []byte, + ) (sequence uint64, err error) + GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) +} diff --git a/x/icaoracle/types/genesis.go b/x/icaoracle/types/genesis.go new file mode 100644 index 0000000000..6a6adc9b4c --- /dev/null +++ b/x/icaoracle/types/genesis.go @@ -0,0 +1,40 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" +) + +// DefaultGenesis returns the default Capability genesis state +func DefaultGenesis() *GenesisState { + return &GenesisState{ + Params: DefaultParams(), + Oracles: []Oracle{}, + Metrics: []Metric{}, + } +} + +// Validate performs basic genesis state validation returning an error upon any +// failure. +func (gs GenesisState) Validate() error { + if err := gs.Params.Validate(); err != nil { + return errorsmod.Wrapf(ErrInvalidGenesisState, err.Error()) + } + for _, oracle := range gs.Oracles { + if oracle.ChainId == "" { + return errorsmod.Wrapf(ErrInvalidGenesisState, "oracle has empty chain ID") + } + } + for _, metric := range gs.Metrics { + if metric.Key == "" { + return errorsmod.Wrapf(ErrInvalidGenesisState, "metric has missing key") + } + if metric.UpdateTime == 0 { + return errorsmod.Wrapf(ErrInvalidGenesisState, "metric has missing time") + } + if metric.DestinationOracle == "" { + return errorsmod.Wrapf(ErrInvalidGenesisState, "metric has missing destination oracle chain ID") + } + } + + return nil +} diff --git a/x/icaoracle/types/genesis.pb.go b/x/icaoracle/types/genesis.pb.go new file mode 100644 index 0000000000..ce2b6793a4 --- /dev/null +++ b/x/icaoracle/types/genesis.pb.go @@ -0,0 +1,570 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/icaoracle/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the icaoracle module parameters. +type Params struct { +} + +func (m *Params) Reset() { *m = Params{} } +func (m *Params) String() string { return proto.CompactTextString(m) } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_89fd81957c6adfb8, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +// GenesisState defines the icaoracle module's genesis state. +type GenesisState struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params" yaml:"params"` + Oracles []Oracle `protobuf:"bytes,2,rep,name=oracles,proto3" json:"oracles" yaml:"oracles"` + Metrics []Metric `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics" yaml:"metrics"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_89fd81957c6adfb8, []int{1} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func (m *GenesisState) GetOracles() []Oracle { + if m != nil { + return m.Oracles + } + return nil +} + +func (m *GenesisState) GetMetrics() []Metric { + if m != nil { + return m.Metrics + } + return nil +} + +func init() { + proto.RegisterType((*Params)(nil), "stride.icaoracle.Params") + proto.RegisterType((*GenesisState)(nil), "stride.icaoracle.GenesisState") +} + +func init() { proto.RegisterFile("stride/icaoracle/genesis.proto", fileDescriptor_89fd81957c6adfb8) } + +var fileDescriptor_89fd81957c6adfb8 = []byte{ + // 274 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2b, 0x2e, 0x29, 0xca, + 0x4c, 0x49, 0xd5, 0xcf, 0x4c, 0x4e, 0xcc, 0x2f, 0x4a, 0x4c, 0xce, 0x49, 0xd5, 0x4f, 0x4f, 0xcd, + 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc8, 0xeb, 0xc1, + 0xe5, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, 0x02, + 0x86, 0x39, 0x70, 0x16, 0x44, 0x85, 0x12, 0x07, 0x17, 0x5b, 0x40, 0x62, 0x51, 0x62, 0x6e, 0xb1, + 0xd2, 0x7b, 0x46, 0x2e, 0x1e, 0x77, 0x88, 0x2d, 0xc1, 0x25, 0x89, 0x25, 0xa9, 0x42, 0xee, 0x5c, + 0x6c, 0x05, 0x60, 0x29, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x09, 0x3d, 0x74, 0x5b, 0xf5, + 0x20, 0x5a, 0x9d, 0x44, 0x4f, 0xdc, 0x93, 0x67, 0xf8, 0x74, 0x4f, 0x9e, 0xb7, 0x32, 0x31, 0x37, + 0xc7, 0x4a, 0x09, 0xa2, 0x4b, 0x29, 0x08, 0xaa, 0x5d, 0xc8, 0x8b, 0x8b, 0x1d, 0xa2, 0xbe, 0x58, + 0x82, 0x49, 0x81, 0x19, 0xbb, 0x49, 0xfe, 0x60, 0xca, 0x49, 0x0c, 0x6a, 0x12, 0x1f, 0xc4, 0x24, + 0xa8, 0x36, 0xa5, 0x20, 0x98, 0x01, 0x20, 0xb3, 0x72, 0x53, 0x4b, 0x8a, 0x32, 0x93, 0x8b, 0x25, + 0x98, 0x71, 0x99, 0xe5, 0x0b, 0x56, 0x80, 0x6e, 0x16, 0x54, 0x9b, 0x52, 0x10, 0xcc, 0x00, 0x27, + 0xdf, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, + 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, + 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x1b, 0xaf, 0xeb, 0x93, 0x98, 0x54, 0xac, + 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x23, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, + 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x9e, 0x88, 0x09, 0xbd, 0x01, + 0x00, 0x00, +} + +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Metrics) > 0 { + for iNdEx := len(m.Metrics) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Metrics[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.Oracles) > 0 { + for iNdEx := len(m.Oracles) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Oracles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.Oracles) > 0 { + for _, e := range m.Oracles { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.Metrics) > 0 { + for _, e := range m.Metrics { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Oracles", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Oracles = append(m.Oracles, Oracle{}) + if err := m.Oracles[len(m.Oracles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metrics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Metrics = append(m.Metrics, Metric{}) + if err := m.Metrics[len(m.Metrics)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/icaoracle/types/genesis_test.go b/x/icaoracle/types/genesis_test.go new file mode 100644 index 0000000000..2c4bfbf199 --- /dev/null +++ b/x/icaoracle/types/genesis_test.go @@ -0,0 +1,76 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestValidateGenesis(t *testing.T) { + apptesting.SetupConfig() + + validChainId := "chain" + validMetricKey := "key" + validUpdateTime := int64(1) + validMetric := types.Metric{ + Key: validMetricKey, + UpdateTime: validUpdateTime, + DestinationOracle: validChainId, + } + + tests := []struct { + name string + genesisState types.GenesisState + valid bool + }{ + { + name: "valid genesis", + genesisState: types.GenesisState{ + Oracles: []types.Oracle{ + {ChainId: validChainId}, + }, + Metrics: []types.Metric{ + validMetric, + }, + }, + valid: true, + }, + { + name: "invalid oracle", + genesisState: types.GenesisState{ + Oracles: []types.Oracle{ + {ChainId: ""}, + }, + Metrics: []types.Metric{ + validMetric, + }, + }, + valid: false, + }, + { + name: "invalid metric", + genesisState: types.GenesisState{ + Oracles: []types.Oracle{ + {ChainId: validChainId}, + }, + Metrics: []types.Metric{ + {Key: "", UpdateTime: validUpdateTime, DestinationOracle: validChainId}, + }, + }, + valid: false, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.valid { + require.NoError(t, test.genesisState.Validate(), "test: %v", test.name) + } else { + require.ErrorContains(t, test.genesisState.Validate(), types.ErrInvalidGenesisState.Error(), "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/ica.go b/x/icaoracle/types/ica.go new file mode 100644 index 0000000000..72b23a9bc1 --- /dev/null +++ b/x/icaoracle/types/ica.go @@ -0,0 +1,59 @@ +package types + +import ( + fmt "fmt" + "time" + + errorsmod "cosmossdk.io/errors" + + proto "github.com/cosmos/gogoproto/proto" +) + +const ( + ICAAccountType_Oracle = "ORACLE" +) + +type ICATx struct { + ConnectionId string + ChannelId string + PortId string + Owner string + Messages []proto.Message + RelativeTimeout time.Duration + CallbackArgs proto.Message + CallbackId string +} + +func (i ICATx) ValidateICATx() error { + if i.ConnectionId == "" { + return errorsmod.Wrapf(ErrInvalidICARequest, "connection-id is empty") + } + if i.ChannelId == "" { + return errorsmod.Wrapf(ErrInvalidICARequest, "channel-id is empty") + } + if i.PortId == "" { + return errorsmod.Wrapf(ErrInvalidICARequest, "port-id is empty") + } + if i.Owner == "" { + return errorsmod.Wrapf(ErrInvalidICARequest, "owner is empty") + } + if len(i.Messages) < 1 { + return errorsmod.Wrapf(ErrInvalidICARequest, "messages are empty") + } + if i.RelativeTimeout <= 0 { + return errorsmod.Wrapf(ErrInvalidICARequest, + "relative timeout must be greater than 0, timeout: %d", i.RelativeTimeout) + } + if i.CallbackId == "" { + return errorsmod.Wrapf(ErrInvalidICARequest, "callback-id is empty") + } + return nil +} + +func (i ICATx) GetRelativeTimeoutNano() uint64 { + return uint64(i.RelativeTimeout.Nanoseconds()) +} + +func FormatICAAccountOwner(chainId string, accountType string) string { + return fmt.Sprintf("%s.%s", chainId, accountType) +} diff --git a/x/icaoracle/types/ica_test.go b/x/icaoracle/types/ica_test.go new file mode 100644 index 0000000000..8443ee39f8 --- /dev/null +++ b/x/icaoracle/types/ica_test.go @@ -0,0 +1,143 @@ +package types_test + +import ( + "testing" + "time" + + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/stretchr/testify/require" + + proto "github.com/cosmos/gogoproto/proto" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestValidateICATx(t *testing.T) { + validConnectionId := "connection-0" + validChannelId := "channel-0" + validPortId := "port-0" + validOwner := "owner" + validMessages := []proto.Message{&banktypes.MsgSend{}} + validTimeout := time.Second + validCallbackId := "callback-id" + + tests := []struct { + name string + tx types.ICATx + err string + }{ + { + name: "successful ICA Tx", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + Owner: validOwner, + Messages: validMessages, + RelativeTimeout: validTimeout, + CallbackId: validCallbackId, + }, + }, + { + name: "invalid connection-id", + tx: types.ICATx{ + ConnectionId: "", + ChannelId: validChannelId, + PortId: validPortId, + Owner: validOwner, + Messages: validMessages, + RelativeTimeout: validTimeout, + CallbackId: validCallbackId, + }, + err: "connection-id is empty", + }, + { + name: "invalid channel-id", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: "", + PortId: validPortId, + Owner: validOwner, + Messages: validMessages, + RelativeTimeout: validTimeout, + CallbackId: validCallbackId, + }, + err: "channel-id is empty", + }, + { + name: "invalid port-id", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: "", + Owner: validOwner, + Messages: validMessages, + RelativeTimeout: validTimeout, + CallbackId: validCallbackId, + }, + err: "port-id is empty", + }, + { + name: "invalid owner", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + Owner: "", + Messages: validMessages, + RelativeTimeout: validTimeout, + CallbackId: validCallbackId, + }, + err: "owner is empty", + }, + { + name: "invalid messages", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + Owner: validOwner, + Messages: []proto.Message{}, + RelativeTimeout: validTimeout, + CallbackId: validCallbackId, + }, + err: "messages are empty", + }, + { + name: "invalid timeout", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + Owner: validOwner, + Messages: validMessages, + RelativeTimeout: -1 * time.Second, + CallbackId: validCallbackId, + }, + err: "relative timeout must be greater than 0", + }, + { + name: "invalid callback-id", + tx: types.ICATx{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + Owner: validOwner, + Messages: validMessages, + RelativeTimeout: validTimeout, + CallbackId: "", + }, + err: "callback-id is empty", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.tx.ValidateICATx(), "test: %v", test.name) + } else { + require.ErrorContains(t, test.tx.ValidateICATx(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go new file mode 100644 index 0000000000..04fd6ae391 --- /dev/null +++ b/x/icaoracle/types/icaoracle.pb.go @@ -0,0 +1,1370 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/icaoracle/icaoracle.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MetricStatus indicates whether the Metric update ICA has been sent +type MetricStatus int32 + +const ( + MetricStatus_UNSPECIFIED MetricStatus = 0 + MetricStatus_QUEUED MetricStatus = 1 + MetricStatus_IN_PROGRESS MetricStatus = 2 +) + +var MetricStatus_name = map[int32]string{ + 0: "METRIC_STATUS_UNSPECIFIED", + 1: "METRIC_STATUS_QUEUED", + 2: "METRIC_STATUS_IN_PROGRESS", +} + +var MetricStatus_value = map[string]int32{ + "METRIC_STATUS_UNSPECIFIED": 0, + "METRIC_STATUS_QUEUED": 1, + "METRIC_STATUS_IN_PROGRESS": 2, +} + +func (x MetricStatus) String() string { + return proto.EnumName(MetricStatus_name, int32(x)) +} + +func (MetricStatus) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_842e38c1f0da9e66, []int{0} +} + +// Oracle structure stores context about the CW oracle sitting a different chain +type Oracle struct { + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + ChannelId string `protobuf:"bytes,3,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + PortId string `protobuf:"bytes,4,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"` + IcaAddress string `protobuf:"bytes,5,opt,name=ica_address,json=icaAddress,proto3" json:"ica_address,omitempty"` + ContractAddress string `protobuf:"bytes,6,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` + Active bool `protobuf:"varint,7,opt,name=active,proto3" json:"active,omitempty"` +} + +func (m *Oracle) Reset() { *m = Oracle{} } +func (m *Oracle) String() string { return proto.CompactTextString(m) } +func (*Oracle) ProtoMessage() {} +func (*Oracle) Descriptor() ([]byte, []int) { + return fileDescriptor_842e38c1f0da9e66, []int{0} +} +func (m *Oracle) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Oracle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Oracle.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Oracle) XXX_Merge(src proto.Message) { + xxx_messageInfo_Oracle.Merge(m, src) +} +func (m *Oracle) XXX_Size() int { + return m.Size() +} +func (m *Oracle) XXX_DiscardUnknown() { + xxx_messageInfo_Oracle.DiscardUnknown(m) +} + +var xxx_messageInfo_Oracle proto.InternalMessageInfo + +func (m *Oracle) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *Oracle) GetConnectionId() string { + if m != nil { + return m.ConnectionId + } + return "" +} + +func (m *Oracle) GetChannelId() string { + if m != nil { + return m.ChannelId + } + return "" +} + +func (m *Oracle) GetPortId() string { + if m != nil { + return m.PortId + } + return "" +} + +func (m *Oracle) GetIcaAddress() string { + if m != nil { + return m.IcaAddress + } + return "" +} + +func (m *Oracle) GetContractAddress() string { + if m != nil { + return m.ContractAddress + } + return "" +} + +func (m *Oracle) GetActive() bool { + if m != nil { + return m.Active + } + return false +} + +// Metric structure stores a generic metric using a key value structure +// along with additional context +type Metric struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + MetricType string `protobuf:"bytes,3,opt,name=metric_type,json=metricType,proto3" json:"metric_type,omitempty"` + UpdateTime int64 `protobuf:"varint,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + BlockHeight int64 `protobuf:"varint,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + Attributes string `protobuf:"bytes,6,opt,name=attributes,proto3" json:"attributes,omitempty"` + DestinationOracle string `protobuf:"bytes,7,opt,name=destination_oracle,json=destinationOracle,proto3" json:"destination_oracle,omitempty"` + Status MetricStatus `protobuf:"varint,8,opt,name=status,proto3,enum=stride.icaoracle.MetricStatus" json:"status,omitempty"` +} + +func (m *Metric) Reset() { *m = Metric{} } +func (m *Metric) String() string { return proto.CompactTextString(m) } +func (*Metric) ProtoMessage() {} +func (*Metric) Descriptor() ([]byte, []int) { + return fileDescriptor_842e38c1f0da9e66, []int{1} +} +func (m *Metric) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Metric) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Metric.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Metric) XXX_Merge(src proto.Message) { + xxx_messageInfo_Metric.Merge(m, src) +} +func (m *Metric) XXX_Size() int { + return m.Size() +} +func (m *Metric) XXX_DiscardUnknown() { + xxx_messageInfo_Metric.DiscardUnknown(m) +} + +var xxx_messageInfo_Metric proto.InternalMessageInfo + +func (m *Metric) GetKey() string { + if m != nil { + return m.Key + } + return "" +} + +func (m *Metric) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + +func (m *Metric) GetMetricType() string { + if m != nil { + return m.MetricType + } + return "" +} + +func (m *Metric) GetUpdateTime() int64 { + if m != nil { + return m.UpdateTime + } + return 0 +} + +func (m *Metric) GetBlockHeight() int64 { + if m != nil { + return m.BlockHeight + } + return 0 +} + +func (m *Metric) GetAttributes() string { + if m != nil { + return m.Attributes + } + return "" +} + +func (m *Metric) GetDestinationOracle() string { + if m != nil { + return m.DestinationOracle + } + return "" +} + +func (m *Metric) GetStatus() MetricStatus { + if m != nil { + return m.Status + } + return MetricStatus_UNSPECIFIED +} + +// Attributes associated with a RedemptionRate metric update +type RedemptionRateAttributes struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + BaseDenom string `protobuf:"bytes,2,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` +} + +func (m *RedemptionRateAttributes) Reset() { *m = RedemptionRateAttributes{} } +func (m *RedemptionRateAttributes) String() string { return proto.CompactTextString(m) } +func (*RedemptionRateAttributes) ProtoMessage() {} +func (*RedemptionRateAttributes) Descriptor() ([]byte, []int) { + return fileDescriptor_842e38c1f0da9e66, []int{2} +} +func (m *RedemptionRateAttributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RedemptionRateAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RedemptionRateAttributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RedemptionRateAttributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_RedemptionRateAttributes.Merge(m, src) +} +func (m *RedemptionRateAttributes) XXX_Size() int { + return m.Size() +} +func (m *RedemptionRateAttributes) XXX_DiscardUnknown() { + xxx_messageInfo_RedemptionRateAttributes.DiscardUnknown(m) +} + +var xxx_messageInfo_RedemptionRateAttributes proto.InternalMessageInfo + +func (m *RedemptionRateAttributes) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *RedemptionRateAttributes) GetBaseDenom() string { + if m != nil { + return m.BaseDenom + } + return "" +} + +func init() { + proto.RegisterEnum("stride.icaoracle.MetricStatus", MetricStatus_name, MetricStatus_value) + proto.RegisterType((*Oracle)(nil), "stride.icaoracle.Oracle") + proto.RegisterType((*Metric)(nil), "stride.icaoracle.Metric") + proto.RegisterType((*RedemptionRateAttributes)(nil), "stride.icaoracle.RedemptionRateAttributes") +} + +func init() { proto.RegisterFile("stride/icaoracle/icaoracle.proto", fileDescriptor_842e38c1f0da9e66) } + +var fileDescriptor_842e38c1f0da9e66 = []byte{ + // 559 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x30, + 0x14, 0xc7, 0x9b, 0x95, 0x65, 0xeb, 0xdb, 0x60, 0xc1, 0xaa, 0xa0, 0x9b, 0x44, 0x08, 0x83, 0xc3, + 0x40, 0x5a, 0x2a, 0x36, 0x89, 0xfb, 0xd8, 0x02, 0x44, 0xa2, 0xeb, 0x48, 0xda, 0x0b, 0x97, 0xc8, + 0xb1, 0xad, 0xd6, 0x5a, 0x13, 0x47, 0x89, 0x5b, 0xd1, 0xaf, 0xb0, 0x13, 0x07, 0x8e, 0xec, 0xfb, + 0x70, 0xdc, 0x91, 0x23, 0x6a, 0xf9, 0x20, 0x28, 0x76, 0xba, 0x05, 0xb8, 0xf9, 0xfd, 0xfe, 0xff, + 0x38, 0xfe, 0x3f, 0xfb, 0x81, 0x53, 0xc8, 0x9c, 0x53, 0xd6, 0xe5, 0x04, 0x8b, 0x1c, 0x93, 0x49, + 0x6d, 0xe5, 0x66, 0xb9, 0x90, 0x02, 0x59, 0xda, 0xe1, 0xde, 0xf2, 0xbd, 0xf6, 0x48, 0x8c, 0x84, + 0x12, 0xbb, 0xe5, 0x4a, 0xfb, 0xf6, 0x7f, 0x1b, 0x60, 0xf6, 0x95, 0x01, 0xed, 0xc2, 0x26, 0x19, + 0x63, 0x9e, 0x46, 0x9c, 0x76, 0x0c, 0xc7, 0x38, 0x68, 0x05, 0x1b, 0xaa, 0xf6, 0x29, 0x7a, 0x0e, + 0xf7, 0x89, 0x48, 0x53, 0x46, 0x24, 0x17, 0x4a, 0x5f, 0x53, 0xfa, 0xf6, 0x1d, 0xf4, 0x29, 0x7a, + 0x02, 0x40, 0xc6, 0x38, 0x4d, 0xd9, 0xa4, 0x74, 0x34, 0x95, 0xa3, 0x55, 0x11, 0x9f, 0xa2, 0xc7, + 0xb0, 0x91, 0x89, 0x5c, 0x96, 0xda, 0x3d, 0xa5, 0x99, 0x65, 0xe9, 0x53, 0xf4, 0x14, 0xb6, 0x38, + 0xc1, 0x11, 0xa6, 0x34, 0x67, 0x45, 0xd1, 0x59, 0x57, 0x22, 0x70, 0x82, 0x4f, 0x34, 0x41, 0x2f, + 0xc1, 0x22, 0x22, 0x95, 0x39, 0x26, 0xf2, 0xd6, 0x65, 0x2a, 0xd7, 0xce, 0x8a, 0xaf, 0xac, 0x8f, + 0xc0, 0xc4, 0x44, 0xf2, 0x19, 0xeb, 0x6c, 0x38, 0xc6, 0xc1, 0x66, 0x50, 0x55, 0xfb, 0xdf, 0xd7, + 0xc0, 0xec, 0x31, 0x99, 0x73, 0x82, 0x2c, 0x68, 0x5e, 0xb2, 0x79, 0x95, 0xb0, 0x5c, 0xa2, 0x36, + 0xac, 0xcf, 0xf0, 0x64, 0xca, 0xaa, 0x54, 0xba, 0x28, 0x8f, 0x95, 0xa8, 0x2f, 0x22, 0x39, 0xcf, + 0x58, 0x95, 0x07, 0x34, 0x1a, 0xcc, 0x33, 0x65, 0x98, 0x66, 0x14, 0x4b, 0x16, 0x49, 0x9e, 0x30, + 0x15, 0xaa, 0x19, 0x80, 0x46, 0x03, 0x9e, 0x30, 0xf4, 0x0c, 0xb6, 0xe3, 0x89, 0x20, 0x97, 0xd1, + 0x98, 0xf1, 0xd1, 0x58, 0xaa, 0x64, 0xcd, 0x60, 0x4b, 0xb1, 0x0f, 0x0a, 0x21, 0x1b, 0x00, 0x4b, + 0x99, 0xf3, 0x78, 0x2a, 0xd9, 0x2a, 0x54, 0x8d, 0xa0, 0x43, 0x40, 0x94, 0x15, 0x92, 0xa7, 0x58, + 0x75, 0x5e, 0x5f, 0xa5, 0xca, 0xd6, 0x0a, 0x1e, 0xd6, 0x94, 0xea, 0x0a, 0xdf, 0x80, 0x59, 0x48, + 0x2c, 0xa7, 0x45, 0x67, 0xd3, 0x31, 0x0e, 0x1e, 0x1c, 0xd9, 0xee, 0xbf, 0xcf, 0xc0, 0xd5, 0x5d, + 0x08, 0x95, 0x2b, 0xa8, 0xdc, 0xfb, 0x7d, 0xe8, 0x04, 0x8c, 0xb2, 0x24, 0x2b, 0xf7, 0x0a, 0xb0, + 0x64, 0x27, 0x77, 0x47, 0x68, 0xc3, 0x3a, 0x65, 0xa9, 0x48, 0xaa, 0x8e, 0xe9, 0xa2, 0xbc, 0xec, + 0x18, 0x17, 0x2c, 0xd2, 0x92, 0x6e, 0x5c, 0xab, 0x24, 0x67, 0x25, 0x78, 0xf5, 0xcd, 0x80, 0xed, + 0xfa, 0x9f, 0x90, 0x0b, 0xbb, 0x3d, 0x6f, 0x10, 0xf8, 0xa7, 0x51, 0x38, 0x38, 0x19, 0x0c, 0xc3, + 0x68, 0x78, 0x1e, 0x5e, 0x78, 0xa7, 0xfe, 0x3b, 0xdf, 0x3b, 0xb3, 0x1a, 0x7b, 0x3b, 0x57, 0xd7, + 0xce, 0x56, 0x0d, 0xa1, 0x17, 0xd0, 0xfe, 0xdb, 0xff, 0x69, 0xe8, 0x0d, 0xbd, 0x33, 0xcb, 0xd8, + 0x83, 0xab, 0x6b, 0xc7, 0xd4, 0xd5, 0xff, 0xbb, 0xfa, 0xe7, 0xd1, 0x45, 0xd0, 0x7f, 0x1f, 0x78, + 0x61, 0x68, 0xad, 0xe9, 0x5d, 0x6b, 0xe8, 0x6d, 0xef, 0xc7, 0xc2, 0x36, 0x6e, 0x16, 0xb6, 0xf1, + 0x6b, 0x61, 0x1b, 0x5f, 0x97, 0x76, 0xe3, 0x66, 0x69, 0x37, 0x7e, 0x2e, 0xed, 0xc6, 0xe7, 0xe3, + 0x11, 0x97, 0xe3, 0x69, 0xec, 0x12, 0x91, 0x74, 0x43, 0xd5, 0xb3, 0xc3, 0x8f, 0x38, 0x2e, 0xba, + 0xd5, 0xa0, 0xcd, 0x5e, 0x1f, 0x75, 0xbf, 0xd4, 0xc6, 0xad, 0x7c, 0x12, 0x45, 0x6c, 0xaa, 0x19, + 0x3a, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xe7, 0xe9, 0x8c, 0x8f, 0x03, 0x00, 0x00, +} + +func (m *Oracle) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Oracle) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Oracle) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Active { + i-- + if m.Active { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if len(m.ContractAddress) > 0 { + i -= len(m.ContractAddress) + copy(dAtA[i:], m.ContractAddress) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.ContractAddress))) + i-- + dAtA[i] = 0x32 + } + if len(m.IcaAddress) > 0 { + i -= len(m.IcaAddress) + copy(dAtA[i:], m.IcaAddress) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.IcaAddress))) + i-- + dAtA[i] = 0x2a + } + if len(m.PortId) > 0 { + i -= len(m.PortId) + copy(dAtA[i:], m.PortId) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.PortId))) + i-- + dAtA[i] = 0x22 + } + if len(m.ChannelId) > 0 { + i -= len(m.ChannelId) + copy(dAtA[i:], m.ChannelId) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.ChannelId))) + i-- + dAtA[i] = 0x1a + } + if len(m.ConnectionId) > 0 { + i -= len(m.ConnectionId) + copy(dAtA[i:], m.ConnectionId) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.ConnectionId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Metric) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Metric) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Metric) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Status != 0 { + i = encodeVarintIcaoracle(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x40 + } + if len(m.DestinationOracle) > 0 { + i -= len(m.DestinationOracle) + copy(dAtA[i:], m.DestinationOracle) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.DestinationOracle))) + i-- + dAtA[i] = 0x3a + } + if len(m.Attributes) > 0 { + i -= len(m.Attributes) + copy(dAtA[i:], m.Attributes) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.Attributes))) + i-- + dAtA[i] = 0x32 + } + if m.BlockHeight != 0 { + i = encodeVarintIcaoracle(dAtA, i, uint64(m.BlockHeight)) + i-- + dAtA[i] = 0x28 + } + if m.UpdateTime != 0 { + i = encodeVarintIcaoracle(dAtA, i, uint64(m.UpdateTime)) + i-- + dAtA[i] = 0x20 + } + if len(m.MetricType) > 0 { + i -= len(m.MetricType) + copy(dAtA[i:], m.MetricType) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.MetricType))) + i-- + dAtA[i] = 0x1a + } + if len(m.Value) > 0 { + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x12 + } + if len(m.Key) > 0 { + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *RedemptionRateAttributes) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *RedemptionRateAttributes) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RedemptionRateAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.BaseDenom) > 0 { + i -= len(m.BaseDenom) + copy(dAtA[i:], m.BaseDenom) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.BaseDenom))) + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintIcaoracle(dAtA []byte, offset int, v uint64) int { + offset -= sovIcaoracle(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Oracle) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.ConnectionId) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.ChannelId) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.PortId) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.IcaAddress) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.ContractAddress) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + if m.Active { + n += 2 + } + return n +} + +func (m *Metric) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Key) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.MetricType) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + if m.UpdateTime != 0 { + n += 1 + sovIcaoracle(uint64(m.UpdateTime)) + } + if m.BlockHeight != 0 { + n += 1 + sovIcaoracle(uint64(m.BlockHeight)) + } + l = len(m.Attributes) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.DestinationOracle) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + if m.Status != 0 { + n += 1 + sovIcaoracle(uint64(m.Status)) + } + return n +} + +func (m *RedemptionRateAttributes) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + l = len(m.BaseDenom) + if l > 0 { + n += 1 + l + sovIcaoracle(uint64(l)) + } + return n +} + +func sovIcaoracle(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozIcaoracle(x uint64) (n int) { + return sovIcaoracle(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Oracle) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Oracle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Oracle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConnectionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChannelId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChannelId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PortId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PortId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IcaAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IcaAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Active = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipIcaoracle(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcaoracle + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Metric) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Metric: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Metric: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateTime", wireType) + } + m.UpdateTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdateTime |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BlockHeight", wireType) + } + m.BlockHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BlockHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Attributes = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DestinationOracle", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DestinationOracle = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= MetricStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipIcaoracle(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcaoracle + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RedemptionRateAttributes) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RedemptionRateAttributes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RedemptionRateAttributes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaoracle + } + 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 ErrInvalidLengthIcaoracle + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaoracle + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BaseDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcaoracle(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcaoracle + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipIcaoracle(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowIcaoracle + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthIcaoracle + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupIcaoracle + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthIcaoracle + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthIcaoracle = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowIcaoracle = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupIcaoracle = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/icaoracle/types/keys.go b/x/icaoracle/types/keys.go new file mode 100644 index 0000000000..036713e805 --- /dev/null +++ b/x/icaoracle/types/keys.go @@ -0,0 +1,25 @@ +package types + +const ( + ModuleName = "icaoracle" + + // StoreKey defines the primary module store key + StoreKey = ModuleName + + // RouterKey is the message route for slashing + RouterKey = ModuleName + + // QuerierRoute defines the module's query routing key + QuerierRoute = ModuleName +) + +// Generates a key byte prefix from a string +func KeyPrefix(p string) []byte { + return []byte(p) +} + +var ( + OracleKeyPrefix = KeyPrefix("oracle") + MetricKeyPrefix = KeyPrefix("metric") + MetricQueueKeyPrefix = KeyPrefix("queue") +) diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go new file mode 100644 index 0000000000..26415ae37c --- /dev/null +++ b/x/icaoracle/types/message_add_oracle.go @@ -0,0 +1,53 @@ +package types + +import ( + "regexp" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v12/utils" +) + +var _ sdk.Msg = &MsgAddOracle{} + +func NewMsgAddOracle(creator string, connectionId string) *MsgAddOracle { + return &MsgAddOracle{ + Creator: creator, + ConnectionId: connectionId, + } +} + +func (msg *MsgAddOracle) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgAddOracle) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgAddOracle) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + if err := utils.ValidateAdminAddress(msg.Creator); err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + + matched, err := regexp.MatchString(`^connection-\d+$`, msg.ConnectionId) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to verify connnection-id (%s)", msg.ConnectionId) + } + if !matched { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid connection-id (%s), must be of the format 'connection-{N}'", msg.ConnectionId) + } + + return nil +} diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go new file mode 100644 index 0000000000..0941fa8cbc --- /dev/null +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -0,0 +1,82 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestMsgAddOracle(t *testing.T) { + apptesting.SetupConfig() + + validNotAdminAddress, invalidAddress := apptesting.GenerateTestAddrs() + validAdminAddress, ok := apptesting.GetAdminAddress() + require.True(t, ok) + + validConnectionId := "connection-10" + + tests := []struct { + name string + msg types.MsgAddOracle + err string + }{ + { + name: "successful message", + msg: types.MsgAddOracle{ + Creator: validAdminAddress, + ConnectionId: validConnectionId, + }, + }, + { + name: "invalid creator address", + msg: types.MsgAddOracle{ + Creator: invalidAddress, + ConnectionId: validConnectionId, + }, + err: "invalid creator address", + }, + { + name: "invalid admin address", + msg: types.MsgAddOracle{ + Creator: validNotAdminAddress, + ConnectionId: validConnectionId, + }, + err: "invalid creator address", + }, + { + name: "invalid connection prefix", + msg: types.MsgAddOracle{ + Creator: validAdminAddress, + ConnectionId: "connect-1", + }, + err: "invalid connection-id", + }, + { + name: "invalid connection suffix", + msg: types.MsgAddOracle{ + Creator: validAdminAddress, + ConnectionId: "connection-X", + }, + err: "invalid connection-id", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) + + signers := test.msg.GetSigners() + require.Equal(t, len(signers), 1) + require.Equal(t, signers[0].String(), validAdminAddress) + + require.Equal(t, test.msg.ConnectionId, validConnectionId, "connnectionId") + } else { + require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go new file mode 100644 index 0000000000..c31a78130e --- /dev/null +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -0,0 +1,52 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v12/utils" +) + +var _ sdk.Msg = &MsgInstantiateOracle{} + +func NewMsgInstantiateOracle(creator string, chainId string, contractCodeId uint64) *MsgInstantiateOracle { + return &MsgInstantiateOracle{ + Creator: creator, + OracleChainId: chainId, + ContractCodeId: contractCodeId, + } +} + +func (msg *MsgInstantiateOracle) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgInstantiateOracle) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgInstantiateOracle) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + if err := utils.ValidateAdminAddress(msg.Creator); err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + + if msg.OracleChainId == "" { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "oracle-chain-id is required") + } + + if msg.ContractCodeId == 0 { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "contract code-id cannot be 0") + } + + return nil +} diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go new file mode 100644 index 0000000000..2644d941cd --- /dev/null +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -0,0 +1,89 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestMsgInstantiateOracle(t *testing.T) { + apptesting.SetupConfig() + + validNotAdminAddress, invalidAddress := apptesting.GenerateTestAddrs() + validAdminAddress, ok := apptesting.GetAdminAddress() + require.True(t, ok) + + validChainId := "chain-1" + validCodeId := uint64(1) + + tests := []struct { + name string + msg types.MsgInstantiateOracle + err string + }{ + { + name: "successful message", + msg: types.MsgInstantiateOracle{ + Creator: validAdminAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + }, + }, + { + name: "invalid creator address", + msg: types.MsgInstantiateOracle{ + Creator: invalidAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + }, + err: "invalid creator address", + }, + { + name: "invalid admin address", + msg: types.MsgInstantiateOracle{ + Creator: validNotAdminAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + }, + err: "invalid creator address", + }, + { + name: "invalid chain-id", + msg: types.MsgInstantiateOracle{ + Creator: validAdminAddress, + OracleChainId: "", + ContractCodeId: validCodeId, + }, + err: "oracle-chain-id is required", + }, + { + name: "invalid code ID", + msg: types.MsgInstantiateOracle{ + Creator: validAdminAddress, + OracleChainId: validChainId, + ContractCodeId: 0, + }, + err: "contract code-id cannot be 0", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) + + signers := test.msg.GetSigners() + require.Equal(t, len(signers), 1) + require.Equal(t, signers[0].String(), validAdminAddress) + + require.Equal(t, test.msg.OracleChainId, validChainId, "chainId") + require.Equal(t, test.msg.ContractCodeId, validCodeId, "codeId") + } else { + require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/message_remove_oracle.go b/x/icaoracle/types/message_remove_oracle.go new file mode 100644 index 0000000000..f0bc3dddcd --- /dev/null +++ b/x/icaoracle/types/message_remove_oracle.go @@ -0,0 +1,31 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgRemoveOracle{} + +func (msg *MsgRemoveOracle) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgRemoveOracle) GetSigners() []sdk.AccAddress { + addr, _ := sdk.AccAddressFromBech32(msg.Authority) + return []sdk.AccAddress{addr} +} + +func (msg *MsgRemoveOracle) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { + return errorsmod.Wrap(err, "invalid authority address") + } + + if msg.OracleChainId == "" { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "oracle-chain-id is required") + } + + return nil +} diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go new file mode 100644 index 0000000000..cd7ecff8fd --- /dev/null +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -0,0 +1,59 @@ +package types_test + +import ( + "testing" + + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestMsgRemoveOracle(t *testing.T) { + apptesting.SetupConfig() + + validChainId := "chain-id" + + tests := []struct { + name string + msg types.MsgRemoveOracle + err string + }{ + { + name: "successful message", + msg: types.MsgRemoveOracle{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + OracleChainId: validChainId, + }, + }, + { + name: "empty chain-id", + msg: types.MsgRemoveOracle{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + OracleChainId: "", + }, + err: "oracle-chain-id is required", + }, + { + name: "invalid authority", + msg: types.MsgRemoveOracle{ + Authority: "invalid", + OracleChainId: validChainId, + }, + err: "invalid authority address", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) + require.Equal(t, test.msg.OracleChainId, validChainId, "oracle chain-id") + } else { + require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account.go b/x/icaoracle/types/message_restore_oracle_interchain_account.go new file mode 100644 index 0000000000..8b7d4be300 --- /dev/null +++ b/x/icaoracle/types/message_restore_oracle_interchain_account.go @@ -0,0 +1,42 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgRestoreOracleICA{} + +func NewMsgRestoreOracleICA(creator string, oracleChainId string) *MsgRestoreOracleICA { + return &MsgRestoreOracleICA{ + Creator: creator, + OracleChainId: oracleChainId, + } +} + +func (msg *MsgRestoreOracleICA) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgRestoreOracleICA) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgRestoreOracleICA) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + + if msg.OracleChainId == "" { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "oracle-chain-id is required") + } + + return nil +} diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go new file mode 100644 index 0000000000..f89627b7fc --- /dev/null +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -0,0 +1,63 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestMsgRestoreOracleICA(t *testing.T) { + apptesting.SetupConfig() + validAddr, invalidAddr := apptesting.GenerateTestAddrs() + + validChainId := "chain-1" + + tests := []struct { + name string + msg types.MsgRestoreOracleICA + err string + }{ + { + name: "successful message", + msg: types.MsgRestoreOracleICA{ + Creator: validAddr, + OracleChainId: validChainId, + }, + }, + { + name: "invalid creator", + msg: types.MsgRestoreOracleICA{ + Creator: invalidAddr, + OracleChainId: validChainId, + }, + err: "invalid creator address", + }, + { + name: "empty chain-id", + msg: types.MsgRestoreOracleICA{ + Creator: validAddr, + OracleChainId: "", + }, + err: "oracle-chain-id is required", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) + + signers := test.msg.GetSigners() + require.Equal(t, len(signers), 1) + require.Equal(t, signers[0].String(), validAddr) + + require.Equal(t, test.msg.OracleChainId, validChainId, "oracle-chain-id") + } else { + require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/message_toggle_oracle.go b/x/icaoracle/types/message_toggle_oracle.go new file mode 100644 index 0000000000..fb88d08c11 --- /dev/null +++ b/x/icaoracle/types/message_toggle_oracle.go @@ -0,0 +1,31 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +var _ sdk.Msg = &MsgToggleOracle{} + +func (msg *MsgToggleOracle) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgToggleOracle) GetSigners() []sdk.AccAddress { + addr, _ := sdk.AccAddressFromBech32(msg.Authority) + return []sdk.AccAddress{addr} +} + +func (msg *MsgToggleOracle) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Authority); err != nil { + return errorsmod.Wrap(err, "invalid authority address") + } + + if msg.OracleChainId == "" { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "oracle-chain-id is required") + } + + return nil +} diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go new file mode 100644 index 0000000000..5f1633225a --- /dev/null +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -0,0 +1,59 @@ +package types_test + +import ( + "testing" + + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestMsgMsgToggleOracle(t *testing.T) { + apptesting.SetupConfig() + + validChainId := "chain-1" + + tests := []struct { + name string + msg types.MsgToggleOracle + err string + }{ + { + name: "successful message", + msg: types.MsgToggleOracle{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + OracleChainId: validChainId, + }, + }, + { + name: "empty chain-id", + msg: types.MsgToggleOracle{ + Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), + OracleChainId: "", + }, + err: "oracle-chain-id is required", + }, + { + name: "invalid authority", + msg: types.MsgToggleOracle{ + Authority: "invalid", + OracleChainId: validChainId, + }, + err: "invalid authority address", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) + require.Equal(t, test.msg.OracleChainId, validChainId, "oracle chain-id") + } else { + require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/icaoracle/types/metric.go b/x/icaoracle/types/metric.go new file mode 100644 index 0000000000..3b6d40bf5f --- /dev/null +++ b/x/icaoracle/types/metric.go @@ -0,0 +1,24 @@ +package types + +import ( + fmt "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// Returns a new metric at the current block time and height +func NewMetric(ctx sdk.Context, key, value, metricType, attributes string) Metric { + return Metric{ + Key: key, + Value: value, + MetricType: metricType, + UpdateTime: ctx.BlockTime().Unix(), + BlockHeight: ctx.BlockHeight(), + Attributes: attributes, + } +} + +// Returns the ID for a metric +func (m Metric) GetMetricID() string { + return fmt.Sprintf("%s-%s-%d-%s", m.Key, m.Value, m.UpdateTime, m.DestinationOracle) +} diff --git a/x/icaoracle/types/metric_test.go b/x/icaoracle/types/metric_test.go new file mode 100644 index 0000000000..badc45a765 --- /dev/null +++ b/x/icaoracle/types/metric_test.go @@ -0,0 +1,44 @@ +package types_test + +import ( + "testing" + "time" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +// Tests NewMetric and GetMetricID +func TestMetric(t *testing.T) { + blockHeight := int64(10) + blockTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + blockTimeUnix := int64(1672531200) + + ctx := sdk.Context{}. + WithBlockHeight(blockHeight). + WithBlockTime(blockTime) + + key := "key" + value := "value" + attributes := "attributes" + metricType := "type" + + expectedMetric := types.Metric{ + Key: key, + Value: value, + MetricType: metricType, + UpdateTime: blockTimeUnix, + BlockHeight: blockHeight, + Attributes: "attributes", + Status: types.MetricStatus_UNSPECIFIED, + } + + actualMetric := types.NewMetric(ctx, key, value, metricType, attributes) + require.Equal(t, expectedMetric, actualMetric, "metric") + + actualMetric.DestinationOracle = "chain" + expectedId := "key-value-1672531200-chain" + require.Equal(t, expectedId, actualMetric.GetMetricID(), "metric ID") +} diff --git a/x/icaoracle/types/metrics.go b/x/icaoracle/types/metrics.go new file mode 100644 index 0000000000..0273268c84 --- /dev/null +++ b/x/icaoracle/types/metrics.go @@ -0,0 +1,5 @@ +package types + +var ( + MetricType_RedemptionRate = "redemption_rate" +) diff --git a/x/icaoracle/types/oracle.go b/x/icaoracle/types/oracle.go new file mode 100644 index 0000000000..701a1d6de3 --- /dev/null +++ b/x/icaoracle/types/oracle.go @@ -0,0 +1,28 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" +) + +func (o Oracle) ValidateICASetup() error { + if o.ConnectionId == "" { + return errorsmod.Wrapf(ErrOracleICANotRegistered, "connectionId is empty") + } + if o.ChannelId == "" { + return errorsmod.Wrapf(ErrOracleICANotRegistered, "channelId is empty") + } + if o.PortId == "" { + return errorsmod.Wrapf(ErrOracleICANotRegistered, "portId is empty") + } + if o.IcaAddress == "" { + return errorsmod.Wrapf(ErrOracleICANotRegistered, "ICAAddress is empty") + } + return nil +} + +func (o Oracle) ValidateContractInstantiated() error { + if o.ContractAddress == "" { + return errorsmod.Wrapf(ErrOracleNotInstantiated, "contract address is empty") + } + return nil +} diff --git a/x/icaoracle/types/oracle_test.go b/x/icaoracle/types/oracle_test.go new file mode 100644 index 0000000000..3e2b0ffb47 --- /dev/null +++ b/x/icaoracle/types/oracle_test.go @@ -0,0 +1,87 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v12/x/icaoracle/types" +) + +func TestValidateICASetup(t *testing.T) { + validConnectionId := "connection-0" + validChannelId := "channel-0" + validPortId := "port-0" + validIcaAddress := "ica-address" + + tests := []struct { + name string + oracle types.Oracle + err string + }{ + { + name: "successful ICA setup", + oracle: types.Oracle{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + IcaAddress: validIcaAddress, + }, + }, + { + name: "invalid connection-id", + oracle: types.Oracle{ + ConnectionId: "", + ChannelId: validChannelId, + PortId: validPortId, + IcaAddress: validIcaAddress, + }, + err: "connectionId is empty", + }, + { + name: "invalid channel-id", + oracle: types.Oracle{ + ConnectionId: validConnectionId, + ChannelId: "", + PortId: validPortId, + IcaAddress: validIcaAddress, + }, + err: "channelId is empty", + }, + { + name: "invalid port-id", + oracle: types.Oracle{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: "", + IcaAddress: validIcaAddress, + }, + err: "portId is empty", + }, + { + name: "invalid ICA address", + oracle: types.Oracle{ + ConnectionId: validConnectionId, + ChannelId: validChannelId, + PortId: validPortId, + IcaAddress: "", + }, + err: "ICAAddress is empty", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.oracle.ValidateICASetup(), "test: %v", test.name) + } else { + require.ErrorContains(t, test.oracle.ValidateICASetup(), test.err, "test: %v", test.name) + } + }) + } +} + +func TestValidateContractInstantiated(t *testing.T) { + require.NoError(t, types.Oracle{ContractAddress: "contract"}.ValidateContractInstantiated()) + require.ErrorContains(t, types.Oracle{}.ValidateContractInstantiated(), "contract address is empty") +} diff --git a/x/icaoracle/types/params.go b/x/icaoracle/types/params.go new file mode 100644 index 0000000000..4f3215e350 --- /dev/null +++ b/x/icaoracle/types/params.go @@ -0,0 +1,32 @@ +package types + +import ( + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" +) + +var _ paramtypes.ParamSet = (*Params)(nil) + +// ParamKeyTable the param key table for launch module +func ParamKeyTable() paramtypes.KeyTable { + return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) +} + +// NewParams creates a new Params instance +func NewParams() Params { + return Params{} +} + +// DefaultParams returns a default set of parameters +func DefaultParams() Params { + return NewParams() +} + +// ParamSetPairs get the params.ParamSet +func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { + return paramtypes.ParamSetPairs{} +} + +// Validate validates the set of params +func (p Params) Validate() error { + return nil +} diff --git a/x/icaoracle/types/query.pb.go b/x/icaoracle/types/query.pb.go new file mode 100644 index 0000000000..c4e13e9562 --- /dev/null +++ b/x/icaoracle/types/query.pb.go @@ -0,0 +1,1780 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/icaoracle/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Query's a specific oracle +type QueryOracleRequest struct { + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` +} + +func (m *QueryOracleRequest) Reset() { *m = QueryOracleRequest{} } +func (m *QueryOracleRequest) String() string { return proto.CompactTextString(m) } +func (*QueryOracleRequest) ProtoMessage() {} +func (*QueryOracleRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{0} +} +func (m *QueryOracleRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryOracleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryOracleRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryOracleRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryOracleRequest.Merge(m, src) +} +func (m *QueryOracleRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryOracleRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryOracleRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryOracleRequest proto.InternalMessageInfo + +func (m *QueryOracleRequest) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +type QueryOracleResponse struct { + Oracle *Oracle `protobuf:"bytes,1,opt,name=oracle,proto3" json:"oracle,omitempty"` +} + +func (m *QueryOracleResponse) Reset() { *m = QueryOracleResponse{} } +func (m *QueryOracleResponse) String() string { return proto.CompactTextString(m) } +func (*QueryOracleResponse) ProtoMessage() {} +func (*QueryOracleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{1} +} +func (m *QueryOracleResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryOracleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryOracleResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryOracleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryOracleResponse.Merge(m, src) +} +func (m *QueryOracleResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryOracleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryOracleResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryOracleResponse proto.InternalMessageInfo + +func (m *QueryOracleResponse) GetOracle() *Oracle { + if m != nil { + return m.Oracle + } + return nil +} + +// Query's all oracle's +type QueryAllOraclesRequest struct { +} + +func (m *QueryAllOraclesRequest) Reset() { *m = QueryAllOraclesRequest{} } +func (m *QueryAllOraclesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAllOraclesRequest) ProtoMessage() {} +func (*QueryAllOraclesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{2} +} +func (m *QueryAllOraclesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllOraclesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllOraclesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAllOraclesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllOraclesRequest.Merge(m, src) +} +func (m *QueryAllOraclesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAllOraclesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllOraclesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllOraclesRequest proto.InternalMessageInfo + +type QueryAllOraclesResponse struct { + Oracles []Oracle `protobuf:"bytes,1,rep,name=oracles,proto3" json:"oracles"` +} + +func (m *QueryAllOraclesResponse) Reset() { *m = QueryAllOraclesResponse{} } +func (m *QueryAllOraclesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAllOraclesResponse) ProtoMessage() {} +func (*QueryAllOraclesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{3} +} +func (m *QueryAllOraclesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAllOraclesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAllOraclesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAllOraclesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAllOraclesResponse.Merge(m, src) +} +func (m *QueryAllOraclesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAllOraclesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAllOraclesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAllOraclesResponse proto.InternalMessageInfo + +func (m *QueryAllOraclesResponse) GetOracles() []Oracle { + if m != nil { + return m.Oracles + } + return nil +} + +// Query's all oracle with a filter for whether they're active +type QueryActiveOraclesRequest struct { + Active bool `protobuf:"varint,1,opt,name=active,proto3" json:"active,omitempty"` +} + +func (m *QueryActiveOraclesRequest) Reset() { *m = QueryActiveOraclesRequest{} } +func (m *QueryActiveOraclesRequest) String() string { return proto.CompactTextString(m) } +func (*QueryActiveOraclesRequest) ProtoMessage() {} +func (*QueryActiveOraclesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{4} +} +func (m *QueryActiveOraclesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryActiveOraclesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryActiveOraclesRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryActiveOraclesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryActiveOraclesRequest.Merge(m, src) +} +func (m *QueryActiveOraclesRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryActiveOraclesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryActiveOraclesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryActiveOraclesRequest proto.InternalMessageInfo + +func (m *QueryActiveOraclesRequest) GetActive() bool { + if m != nil { + return m.Active + } + return false +} + +type QueryActiveOraclesResponse struct { + Oracles []Oracle `protobuf:"bytes,1,rep,name=oracles,proto3" json:"oracles"` +} + +func (m *QueryActiveOraclesResponse) Reset() { *m = QueryActiveOraclesResponse{} } +func (m *QueryActiveOraclesResponse) String() string { return proto.CompactTextString(m) } +func (*QueryActiveOraclesResponse) ProtoMessage() {} +func (*QueryActiveOraclesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{5} +} +func (m *QueryActiveOraclesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryActiveOraclesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryActiveOraclesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryActiveOraclesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryActiveOraclesResponse.Merge(m, src) +} +func (m *QueryActiveOraclesResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryActiveOraclesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryActiveOraclesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryActiveOraclesResponse proto.InternalMessageInfo + +func (m *QueryActiveOraclesResponse) GetOracles() []Oracle { + if m != nil { + return m.Oracles + } + return nil +} + +// Query's metric's with optional filters +type QueryMetricsRequest struct { + MetricKey string `protobuf:"bytes,1,opt,name=metric_key,json=metricKey,proto3" json:"metric_key,omitempty"` + OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` +} + +func (m *QueryMetricsRequest) Reset() { *m = QueryMetricsRequest{} } +func (m *QueryMetricsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryMetricsRequest) ProtoMessage() {} +func (*QueryMetricsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{6} +} +func (m *QueryMetricsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryMetricsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryMetricsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryMetricsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryMetricsRequest.Merge(m, src) +} +func (m *QueryMetricsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryMetricsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryMetricsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryMetricsRequest proto.InternalMessageInfo + +func (m *QueryMetricsRequest) GetMetricKey() string { + if m != nil { + return m.MetricKey + } + return "" +} + +func (m *QueryMetricsRequest) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +type QueryMetricsResponse struct { + Metrics []Metric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics"` +} + +func (m *QueryMetricsResponse) Reset() { *m = QueryMetricsResponse{} } +func (m *QueryMetricsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryMetricsResponse) ProtoMessage() {} +func (*QueryMetricsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d4d4563f64cd9510, []int{7} +} +func (m *QueryMetricsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryMetricsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryMetricsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryMetricsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryMetricsResponse.Merge(m, src) +} +func (m *QueryMetricsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryMetricsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryMetricsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryMetricsResponse proto.InternalMessageInfo + +func (m *QueryMetricsResponse) GetMetrics() []Metric { + if m != nil { + return m.Metrics + } + return nil +} + +func init() { + proto.RegisterType((*QueryOracleRequest)(nil), "stride.icaoracle.QueryOracleRequest") + proto.RegisterType((*QueryOracleResponse)(nil), "stride.icaoracle.QueryOracleResponse") + proto.RegisterType((*QueryAllOraclesRequest)(nil), "stride.icaoracle.QueryAllOraclesRequest") + proto.RegisterType((*QueryAllOraclesResponse)(nil), "stride.icaoracle.QueryAllOraclesResponse") + proto.RegisterType((*QueryActiveOraclesRequest)(nil), "stride.icaoracle.QueryActiveOraclesRequest") + proto.RegisterType((*QueryActiveOraclesResponse)(nil), "stride.icaoracle.QueryActiveOraclesResponse") + proto.RegisterType((*QueryMetricsRequest)(nil), "stride.icaoracle.QueryMetricsRequest") + proto.RegisterType((*QueryMetricsResponse)(nil), "stride.icaoracle.QueryMetricsResponse") +} + +func init() { proto.RegisterFile("stride/icaoracle/query.proto", fileDescriptor_d4d4563f64cd9510) } + +var fileDescriptor_d4d4563f64cd9510 = []byte{ + // 518 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6b, 0x13, 0x41, + 0x14, 0xce, 0xd4, 0x9a, 0xb4, 0x4f, 0x8a, 0xf2, 0x2c, 0x35, 0x5d, 0xea, 0x1a, 0x16, 0x5b, 0x2b, + 0xda, 0x1d, 0x9b, 0x1c, 0xf4, 0x6a, 0x3d, 0x88, 0x68, 0x51, 0x53, 0xf0, 0x20, 0x42, 0xd8, 0x6c, + 0x86, 0xed, 0x60, 0xba, 0x93, 0xee, 0x4c, 0x8a, 0x8b, 0x78, 0xf1, 0xe2, 0x4d, 0x0a, 0xfe, 0x04, + 0xff, 0x4c, 0x8f, 0x05, 0x2f, 0x82, 0x20, 0x92, 0xf8, 0x43, 0xa4, 0x33, 0x93, 0xd4, 0x75, 0x93, + 0x26, 0xea, 0x29, 0xb3, 0xef, 0x7d, 0xef, 0xfb, 0xbe, 0x79, 0xf3, 0x11, 0x58, 0x91, 0x2a, 0xe1, + 0x2d, 0x46, 0x79, 0x18, 0x88, 0x24, 0x08, 0xdb, 0x8c, 0xee, 0x77, 0x59, 0x92, 0xfa, 0x9d, 0x44, + 0x28, 0x81, 0x97, 0x4c, 0xd7, 0x1f, 0x76, 0x9d, 0x4a, 0x0e, 0x3f, 0x3c, 0x99, 0x19, 0x67, 0x25, + 0x12, 0x22, 0x6a, 0x33, 0x1a, 0x74, 0x38, 0x0d, 0xe2, 0x58, 0xa8, 0x40, 0x71, 0x11, 0x4b, 0xdb, + 0x5d, 0x8c, 0x44, 0x24, 0xf4, 0x91, 0x9e, 0x9c, 0x4c, 0xd5, 0xa3, 0x80, 0xcf, 0x4f, 0x64, 0x9f, + 0x6a, 0xa2, 0x3a, 0xdb, 0xef, 0x32, 0xa9, 0x70, 0x19, 0xe6, 0xc2, 0xdd, 0x80, 0xc7, 0x0d, 0xde, + 0x2a, 0x93, 0x0a, 0x59, 0x9f, 0xaf, 0x97, 0xf4, 0xf7, 0xa3, 0x96, 0xf7, 0x10, 0x2e, 0x67, 0x06, + 0x64, 0x47, 0xc4, 0x92, 0xe1, 0x1d, 0x28, 0x1a, 0x2f, 0x1a, 0x7f, 0xa1, 0x5a, 0xf6, 0xff, 0xbc, + 0x80, 0x6f, 0x27, 0x2c, 0xce, 0x2b, 0xc3, 0x92, 0x26, 0xba, 0xdf, 0x6e, 0x9b, 0x8e, 0xb4, 0xea, + 0xde, 0x0e, 0x5c, 0xc9, 0x75, 0xac, 0xcc, 0x3d, 0x28, 0x99, 0x71, 0x59, 0x26, 0x95, 0x73, 0x67, + 0xe9, 0x6c, 0xcd, 0x1e, 0x7d, 0xbf, 0x56, 0xa8, 0x0f, 0xe0, 0x5e, 0x0d, 0x96, 0x0d, 0x69, 0xa8, + 0xf8, 0x01, 0xcb, 0x2a, 0xe2, 0x12, 0x14, 0x03, 0x5d, 0xd7, 0xee, 0xe7, 0xea, 0xf6, 0xcb, 0x7b, + 0x01, 0xce, 0xa8, 0xa1, 0xff, 0x36, 0xf3, 0xca, 0x2e, 0x71, 0x9b, 0xa9, 0x84, 0x87, 0x43, 0x1b, + 0x57, 0x01, 0xf6, 0x74, 0xa5, 0xf1, 0x9a, 0xa5, 0x76, 0xf1, 0xf3, 0xa6, 0xf2, 0x98, 0xa5, 0xb8, + 0x06, 0x17, 0x0d, 0x41, 0x63, 0xf8, 0x38, 0x33, 0x1a, 0xb3, 0x60, 0xca, 0x0f, 0xec, 0x13, 0x3d, + 0x83, 0xc5, 0x2c, 0xfb, 0xa9, 0x5f, 0x43, 0x76, 0x86, 0x5f, 0x33, 0x33, 0xf0, 0x6b, 0xe1, 0xd5, + 0x6f, 0xb3, 0x70, 0x5e, 0x53, 0xe2, 0x47, 0x02, 0x45, 0x73, 0x27, 0xbc, 0x9e, 0x9f, 0xce, 0x47, + 0xc9, 0x59, 0x9d, 0x80, 0x32, 0xde, 0xbc, 0xbb, 0xef, 0xbf, 0xfc, 0xfc, 0x34, 0xb3, 0x89, 0x94, + 0xee, 0x68, 0xf8, 0xc6, 0x93, 0xa0, 0x29, 0x69, 0x2e, 0xf2, 0xf6, 0xe7, 0xed, 0x60, 0x01, 0xef, + 0xf0, 0x90, 0x00, 0x9c, 0x06, 0x05, 0xd7, 0xc7, 0xc8, 0xe5, 0x52, 0xe6, 0xdc, 0x9c, 0x02, 0x69, + 0xcd, 0x6d, 0x68, 0x73, 0x37, 0x70, 0x75, 0x1a, 0x73, 0x12, 0x3f, 0x13, 0x58, 0xc8, 0x24, 0x06, + 0x6f, 0x8d, 0xd3, 0x1a, 0x11, 0x46, 0xe7, 0xf6, 0x74, 0xe0, 0x7f, 0x59, 0x9c, 0xa4, 0xcd, 0xb4, + 0x61, 0xb2, 0x8d, 0x1f, 0x08, 0x94, 0x6c, 0x42, 0x70, 0xdc, 0x23, 0x65, 0xf3, 0xe9, 0xac, 0x4d, + 0x82, 0xfd, 0xdd, 0xbe, 0x6c, 0xba, 0xb6, 0xb6, 0x8f, 0x7a, 0x2e, 0x39, 0xee, 0xb9, 0xe4, 0x47, + 0xcf, 0x25, 0x87, 0x7d, 0xb7, 0x70, 0xdc, 0x77, 0x0b, 0x5f, 0xfb, 0x6e, 0xe1, 0x65, 0x2d, 0xe2, + 0x6a, 0xb7, 0xdb, 0xf4, 0x43, 0xb1, 0x37, 0x8a, 0xea, 0x60, 0xb3, 0x4a, 0xdf, 0xfc, 0x46, 0xa8, + 0xd2, 0x0e, 0x93, 0xcd, 0xa2, 0xfe, 0x67, 0xab, 0xfd, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x45, + 0xd1, 0x48, 0x61, 0x05, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Query a specific oracle + Oracle(ctx context.Context, in *QueryOracleRequest, opts ...grpc.CallOption) (*QueryOracleResponse, error) + // Query all oracles + AllOracles(ctx context.Context, in *QueryAllOraclesRequest, opts ...grpc.CallOption) (*QueryAllOraclesResponse, error) + // Query oracles with active ffilter: + // - /oracles/by_active?active=true + // - /oracles/by_active?active=false + ActiveOracles(ctx context.Context, in *QueryActiveOraclesRequest, opts ...grpc.CallOption) (*QueryActiveOraclesResponse, error) + // Query metrics with optional filters + // + // Ex: + // - /metrics + // - /metrics?metric_key=X + // - /metrics?oracle_chain_id=Y + Metrics(ctx context.Context, in *QueryMetricsRequest, opts ...grpc.CallOption) (*QueryMetricsResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Oracle(ctx context.Context, in *QueryOracleRequest, opts ...grpc.CallOption) (*QueryOracleResponse, error) { + out := new(QueryOracleResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Query/Oracle", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) AllOracles(ctx context.Context, in *QueryAllOraclesRequest, opts ...grpc.CallOption) (*QueryAllOraclesResponse, error) { + out := new(QueryAllOraclesResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Query/AllOracles", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ActiveOracles(ctx context.Context, in *QueryActiveOraclesRequest, opts ...grpc.CallOption) (*QueryActiveOraclesResponse, error) { + out := new(QueryActiveOraclesResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Query/ActiveOracles", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Metrics(ctx context.Context, in *QueryMetricsRequest, opts ...grpc.CallOption) (*QueryMetricsResponse, error) { + out := new(QueryMetricsResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Query/Metrics", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Query a specific oracle + Oracle(context.Context, *QueryOracleRequest) (*QueryOracleResponse, error) + // Query all oracles + AllOracles(context.Context, *QueryAllOraclesRequest) (*QueryAllOraclesResponse, error) + // Query oracles with active ffilter: + // - /oracles/by_active?active=true + // - /oracles/by_active?active=false + ActiveOracles(context.Context, *QueryActiveOraclesRequest) (*QueryActiveOraclesResponse, error) + // Query metrics with optional filters + // + // Ex: + // - /metrics + // - /metrics?metric_key=X + // - /metrics?oracle_chain_id=Y + Metrics(context.Context, *QueryMetricsRequest) (*QueryMetricsResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Oracle(ctx context.Context, req *QueryOracleRequest) (*QueryOracleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Oracle not implemented") +} +func (*UnimplementedQueryServer) AllOracles(ctx context.Context, req *QueryAllOraclesRequest) (*QueryAllOraclesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AllOracles not implemented") +} +func (*UnimplementedQueryServer) ActiveOracles(ctx context.Context, req *QueryActiveOraclesRequest) (*QueryActiveOraclesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ActiveOracles not implemented") +} +func (*UnimplementedQueryServer) Metrics(ctx context.Context, req *QueryMetricsRequest) (*QueryMetricsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Metrics not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Oracle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryOracleRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Oracle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Query/Oracle", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Oracle(ctx, req.(*QueryOracleRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_AllOracles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAllOraclesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).AllOracles(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Query/AllOracles", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).AllOracles(ctx, req.(*QueryAllOraclesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ActiveOracles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryActiveOraclesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ActiveOracles(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Query/ActiveOracles", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ActiveOracles(ctx, req.(*QueryActiveOraclesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Metrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryMetricsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Metrics(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Query/Metrics", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Metrics(ctx, req.(*QueryMetricsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "stride.icaoracle.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Oracle", + Handler: _Query_Oracle_Handler, + }, + { + MethodName: "AllOracles", + Handler: _Query_AllOracles_Handler, + }, + { + MethodName: "ActiveOracles", + Handler: _Query_ActiveOracles_Handler, + }, + { + MethodName: "Metrics", + Handler: _Query_Metrics_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "stride/icaoracle/query.proto", +} + +func (m *QueryOracleRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryOracleRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryOracleRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryOracleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryOracleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryOracleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Oracle != nil { + { + size, err := m.Oracle.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAllOraclesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAllOraclesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllOraclesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryAllOraclesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAllOraclesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAllOraclesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Oracles) > 0 { + for iNdEx := len(m.Oracles) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Oracles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryActiveOraclesRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActiveOraclesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActiveOraclesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Active { + i-- + if m.Active { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryActiveOraclesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryActiveOraclesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryActiveOraclesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Oracles) > 0 { + for iNdEx := len(m.Oracles) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Oracles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *QueryMetricsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMetricsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMetricsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.MetricKey) > 0 { + i -= len(m.MetricKey) + copy(dAtA[i:], m.MetricKey) + i = encodeVarintQuery(dAtA, i, uint64(len(m.MetricKey))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryMetricsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryMetricsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryMetricsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Metrics) > 0 { + for iNdEx := len(m.Metrics) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Metrics[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryOracleRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryOracleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Oracle != nil { + l = m.Oracle.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllOraclesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryAllOraclesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Oracles) > 0 { + for _, e := range m.Oracles { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryActiveOraclesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Active { + n += 2 + } + return n +} + +func (m *QueryActiveOraclesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Oracles) > 0 { + for _, e := range m.Oracles { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryMetricsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.MetricKey) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryMetricsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Metrics) > 0 { + for _, e := range m.Metrics { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryOracleRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryOracleRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryOracleRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryOracleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryOracleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryOracleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Oracle", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Oracle == nil { + m.Oracle = &Oracle{} + } + if err := m.Oracle.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllOraclesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAllOraclesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllOraclesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAllOraclesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAllOraclesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAllOraclesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Oracles", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Oracles = append(m.Oracles, Oracle{}) + if err := m.Oracles[len(m.Oracles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryActiveOraclesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryActiveOraclesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryActiveOraclesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Active = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryActiveOraclesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryActiveOraclesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryActiveOraclesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Oracles", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Oracles = append(m.Oracles, Oracle{}) + if err := m.Oracles[len(m.Oracles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryMetricsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryMetricsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryMetricsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetricKey", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetricKey = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryMetricsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryMetricsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryMetricsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metrics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Metrics = append(m.Metrics, Metric{}) + if err := m.Metrics[len(m.Metrics)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/icaoracle/types/query.pb.gw.go b/x/icaoracle/types/query.pb.gw.go new file mode 100644 index 0000000000..3638baf384 --- /dev/null +++ b/x/icaoracle/types/query.pb.gw.go @@ -0,0 +1,420 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: stride/icaoracle/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Oracle_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryOracleRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["chain_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "chain_id") + } + + protoReq.ChainId, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "chain_id", err) + } + + msg, err := client.Oracle(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Oracle_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryOracleRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["chain_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "chain_id") + } + + protoReq.ChainId, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "chain_id", err) + } + + msg, err := server.Oracle(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_AllOracles_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllOraclesRequest + var metadata runtime.ServerMetadata + + msg, err := client.AllOracles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_AllOracles_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAllOraclesRequest + var metadata runtime.ServerMetadata + + msg, err := server.AllOracles(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_ActiveOracles_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_ActiveOracles_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryActiveOraclesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ActiveOracles_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ActiveOracles(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ActiveOracles_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryActiveOraclesRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_ActiveOracles_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ActiveOracles(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_Metrics_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_Metrics_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryMetricsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Metrics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.Metrics(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Metrics_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryMetricsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_Metrics_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.Metrics(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Oracle_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Oracle_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Oracle_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_AllOracles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_AllOracles_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_AllOracles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ActiveOracles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_ActiveOracles_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_ActiveOracles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Metrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Metrics_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Metrics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Oracle_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Oracle_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Oracle_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_AllOracles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_AllOracles_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_AllOracles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ActiveOracles_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_ActiveOracles_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_ActiveOracles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Metrics_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Metrics_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Metrics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Oracle_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"Stride-Labs", "stride", "icaoracle", "oracle", "chain_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_AllOracles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"Stride-Labs", "stride", "icaoracle", "oracles"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_ActiveOracles_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"Stride-Labs", "stride", "icaoracle", "oracles", "by_active"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Metrics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"Stride-Labs", "stride", "icaoracle", "metrics"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Oracle_0 = runtime.ForwardResponseMessage + + forward_Query_AllOracles_0 = runtime.ForwardResponseMessage + + forward_Query_ActiveOracles_0 = runtime.ForwardResponseMessage + + forward_Query_Metrics_0 = runtime.ForwardResponseMessage +) diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go new file mode 100644 index 0000000000..f408a862de --- /dev/null +++ b/x/icaoracle/types/tx.pb.go @@ -0,0 +1,2198 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/icaoracle/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + grpc1 "github.com/cosmos/gogoproto/grpc" + proto "github.com/cosmos/gogoproto/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Adds a new oracle +type MsgAddOracle struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` +} + +func (m *MsgAddOracle) Reset() { *m = MsgAddOracle{} } +func (m *MsgAddOracle) String() string { return proto.CompactTextString(m) } +func (*MsgAddOracle) ProtoMessage() {} +func (*MsgAddOracle) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{0} +} +func (m *MsgAddOracle) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddOracle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddOracle.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAddOracle) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddOracle.Merge(m, src) +} +func (m *MsgAddOracle) XXX_Size() int { + return m.Size() +} +func (m *MsgAddOracle) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddOracle.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddOracle proto.InternalMessageInfo + +func (m *MsgAddOracle) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgAddOracle) GetConnectionId() string { + if m != nil { + return m.ConnectionId + } + return "" +} + +type MsgAddOracleResponse struct { +} + +func (m *MsgAddOracleResponse) Reset() { *m = MsgAddOracleResponse{} } +func (m *MsgAddOracleResponse) String() string { return proto.CompactTextString(m) } +func (*MsgAddOracleResponse) ProtoMessage() {} +func (*MsgAddOracleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{1} +} +func (m *MsgAddOracleResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgAddOracleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgAddOracleResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgAddOracleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgAddOracleResponse.Merge(m, src) +} +func (m *MsgAddOracleResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgAddOracleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgAddOracleResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgAddOracleResponse proto.InternalMessageInfo + +// Instantiates the oracle's CW contract +type MsgInstantiateOracle struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` + ContractCodeId uint64 `protobuf:"varint,3,opt,name=contract_code_id,json=contractCodeId,proto3" json:"contract_code_id,omitempty"` +} + +func (m *MsgInstantiateOracle) Reset() { *m = MsgInstantiateOracle{} } +func (m *MsgInstantiateOracle) String() string { return proto.CompactTextString(m) } +func (*MsgInstantiateOracle) ProtoMessage() {} +func (*MsgInstantiateOracle) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{2} +} +func (m *MsgInstantiateOracle) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgInstantiateOracle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgInstantiateOracle.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgInstantiateOracle) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgInstantiateOracle.Merge(m, src) +} +func (m *MsgInstantiateOracle) XXX_Size() int { + return m.Size() +} +func (m *MsgInstantiateOracle) XXX_DiscardUnknown() { + xxx_messageInfo_MsgInstantiateOracle.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgInstantiateOracle proto.InternalMessageInfo + +func (m *MsgInstantiateOracle) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgInstantiateOracle) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +func (m *MsgInstantiateOracle) GetContractCodeId() uint64 { + if m != nil { + return m.ContractCodeId + } + return 0 +} + +type MsgInstantiateOracleResponse struct { +} + +func (m *MsgInstantiateOracleResponse) Reset() { *m = MsgInstantiateOracleResponse{} } +func (m *MsgInstantiateOracleResponse) String() string { return proto.CompactTextString(m) } +func (*MsgInstantiateOracleResponse) ProtoMessage() {} +func (*MsgInstantiateOracleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{3} +} +func (m *MsgInstantiateOracleResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgInstantiateOracleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgInstantiateOracleResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgInstantiateOracleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgInstantiateOracleResponse.Merge(m, src) +} +func (m *MsgInstantiateOracleResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgInstantiateOracleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgInstantiateOracleResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgInstantiateOracleResponse proto.InternalMessageInfo + +// Restore's a closed ICA channel for a given oracle +type MsgRestoreOracleICA struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` +} + +func (m *MsgRestoreOracleICA) Reset() { *m = MsgRestoreOracleICA{} } +func (m *MsgRestoreOracleICA) String() string { return proto.CompactTextString(m) } +func (*MsgRestoreOracleICA) ProtoMessage() {} +func (*MsgRestoreOracleICA) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{4} +} +func (m *MsgRestoreOracleICA) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRestoreOracleICA) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRestoreOracleICA.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRestoreOracleICA) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRestoreOracleICA.Merge(m, src) +} +func (m *MsgRestoreOracleICA) XXX_Size() int { + return m.Size() +} +func (m *MsgRestoreOracleICA) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRestoreOracleICA.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRestoreOracleICA proto.InternalMessageInfo + +func (m *MsgRestoreOracleICA) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgRestoreOracleICA) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +type MsgRestoreOracleICAResponse struct { +} + +func (m *MsgRestoreOracleICAResponse) Reset() { *m = MsgRestoreOracleICAResponse{} } +func (m *MsgRestoreOracleICAResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRestoreOracleICAResponse) ProtoMessage() {} +func (*MsgRestoreOracleICAResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{5} +} +func (m *MsgRestoreOracleICAResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRestoreOracleICAResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRestoreOracleICAResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRestoreOracleICAResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRestoreOracleICAResponse.Merge(m, src) +} +func (m *MsgRestoreOracleICAResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRestoreOracleICAResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRestoreOracleICAResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRestoreOracleICAResponse proto.InternalMessageInfo + +// Toggle's whether an oracle is active and should receive metric updates +type MsgToggleOracle struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` + Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` +} + +func (m *MsgToggleOracle) Reset() { *m = MsgToggleOracle{} } +func (m *MsgToggleOracle) String() string { return proto.CompactTextString(m) } +func (*MsgToggleOracle) ProtoMessage() {} +func (*MsgToggleOracle) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{6} +} +func (m *MsgToggleOracle) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgToggleOracle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgToggleOracle.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgToggleOracle) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleOracle.Merge(m, src) +} +func (m *MsgToggleOracle) XXX_Size() int { + return m.Size() +} +func (m *MsgToggleOracle) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleOracle.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgToggleOracle proto.InternalMessageInfo + +func (m *MsgToggleOracle) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgToggleOracle) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +func (m *MsgToggleOracle) GetActive() bool { + if m != nil { + return m.Active + } + return false +} + +type MsgToggleOracleResponse struct { +} + +func (m *MsgToggleOracleResponse) Reset() { *m = MsgToggleOracleResponse{} } +func (m *MsgToggleOracleResponse) String() string { return proto.CompactTextString(m) } +func (*MsgToggleOracleResponse) ProtoMessage() {} +func (*MsgToggleOracleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{7} +} +func (m *MsgToggleOracleResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgToggleOracleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgToggleOracleResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgToggleOracleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgToggleOracleResponse.Merge(m, src) +} +func (m *MsgToggleOracleResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgToggleOracleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgToggleOracleResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgToggleOracleResponse proto.InternalMessageInfo + +// Removes an oracle completely +type MsgRemoveOracle struct { + // authority is the address that controls the module (defaults to x/gov unless + // overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` +} + +func (m *MsgRemoveOracle) Reset() { *m = MsgRemoveOracle{} } +func (m *MsgRemoveOracle) String() string { return proto.CompactTextString(m) } +func (*MsgRemoveOracle) ProtoMessage() {} +func (*MsgRemoveOracle) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{8} +} +func (m *MsgRemoveOracle) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRemoveOracle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRemoveOracle.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRemoveOracle) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRemoveOracle.Merge(m, src) +} +func (m *MsgRemoveOracle) XXX_Size() int { + return m.Size() +} +func (m *MsgRemoveOracle) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRemoveOracle.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRemoveOracle proto.InternalMessageInfo + +func (m *MsgRemoveOracle) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgRemoveOracle) GetOracleChainId() string { + if m != nil { + return m.OracleChainId + } + return "" +} + +type MsgRemoveOracleResponse struct { +} + +func (m *MsgRemoveOracleResponse) Reset() { *m = MsgRemoveOracleResponse{} } +func (m *MsgRemoveOracleResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRemoveOracleResponse) ProtoMessage() {} +func (*MsgRemoveOracleResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_6e58a377bb8520d3, []int{9} +} +func (m *MsgRemoveOracleResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRemoveOracleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRemoveOracleResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRemoveOracleResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRemoveOracleResponse.Merge(m, src) +} +func (m *MsgRemoveOracleResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRemoveOracleResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRemoveOracleResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRemoveOracleResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgAddOracle)(nil), "stride.icaoracle.MsgAddOracle") + proto.RegisterType((*MsgAddOracleResponse)(nil), "stride.icaoracle.MsgAddOracleResponse") + proto.RegisterType((*MsgInstantiateOracle)(nil), "stride.icaoracle.MsgInstantiateOracle") + proto.RegisterType((*MsgInstantiateOracleResponse)(nil), "stride.icaoracle.MsgInstantiateOracleResponse") + proto.RegisterType((*MsgRestoreOracleICA)(nil), "stride.icaoracle.MsgRestoreOracleICA") + proto.RegisterType((*MsgRestoreOracleICAResponse)(nil), "stride.icaoracle.MsgRestoreOracleICAResponse") + proto.RegisterType((*MsgToggleOracle)(nil), "stride.icaoracle.MsgToggleOracle") + proto.RegisterType((*MsgToggleOracleResponse)(nil), "stride.icaoracle.MsgToggleOracleResponse") + proto.RegisterType((*MsgRemoveOracle)(nil), "stride.icaoracle.MsgRemoveOracle") + proto.RegisterType((*MsgRemoveOracleResponse)(nil), "stride.icaoracle.MsgRemoveOracleResponse") +} + +func init() { proto.RegisterFile("stride/icaoracle/tx.proto", fileDescriptor_6e58a377bb8520d3) } + +var fileDescriptor_6e58a377bb8520d3 = []byte{ + // 592 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3d, 0x6f, 0xd3, 0x4e, + 0x1c, 0xc7, 0xe3, 0x7f, 0xfe, 0x2a, 0xe4, 0x94, 0xd2, 0xd4, 0x54, 0x6d, 0x62, 0xc0, 0xb4, 0x46, + 0x84, 0x50, 0x29, 0x36, 0x4d, 0xc5, 0x83, 0xb2, 0xa5, 0x99, 0x22, 0x11, 0x21, 0x39, 0x4c, 0x08, + 0x29, 0xba, 0xdc, 0x9d, 0x9c, 0x13, 0x8d, 0x2f, 0xf2, 0x5d, 0xa3, 0x76, 0x65, 0x64, 0x62, 0xe5, + 0x1d, 0x20, 0xa6, 0x0e, 0xbc, 0x00, 0x46, 0xc6, 0x8a, 0x01, 0x31, 0xa2, 0x64, 0xe8, 0xc4, 0x7b, + 0x40, 0x7e, 0x76, 0x1c, 0x97, 0x06, 0x21, 0x58, 0x12, 0xdd, 0xf7, 0xf7, 0xbd, 0xdf, 0x7d, 0x3f, + 0xba, 0x07, 0x83, 0x0a, 0x17, 0x0e, 0xc5, 0xc4, 0xa0, 0x08, 0x32, 0x07, 0xa2, 0x43, 0x62, 0x88, + 0x63, 0x7d, 0xec, 0x30, 0xc1, 0xe4, 0x92, 0x5f, 0xd2, 0xa3, 0x92, 0x52, 0x41, 0x8c, 0x8f, 0x18, + 0xef, 0x7b, 0x75, 0xc3, 0x1f, 0xf8, 0x66, 0x65, 0xcb, 0x1f, 0x19, 0x23, 0x6e, 0x19, 0x93, 0x3d, + 0xf7, 0x2f, 0x28, 0xac, 0xc3, 0x11, 0xb5, 0x99, 0xe1, 0xfd, 0xfa, 0x92, 0xf6, 0x4e, 0x02, 0xc5, + 0x2e, 0xb7, 0x5a, 0x18, 0x3f, 0xf3, 0xfa, 0xca, 0x0d, 0x70, 0x05, 0x39, 0x04, 0x0a, 0xe6, 0x94, + 0xa5, 0x6d, 0xa9, 0x56, 0x38, 0x28, 0x7f, 0xf9, 0x58, 0xdf, 0x08, 0xfa, 0xb7, 0x30, 0x76, 0x08, + 0xe7, 0x3d, 0xe1, 0x50, 0xdb, 0x32, 0x43, 0xa3, 0x7c, 0x07, 0xac, 0x22, 0x66, 0xdb, 0x04, 0x09, + 0xca, 0xec, 0x3e, 0xc5, 0xe5, 0xff, 0xdc, 0x99, 0x66, 0x31, 0x16, 0x3b, 0xb8, 0xf9, 0xe0, 0xf5, + 0xf9, 0xe9, 0x6e, 0x38, 0xe5, 0xcd, 0xf9, 0xe9, 0xee, 0xed, 0x00, 0xf7, 0x38, 0x01, 0x9c, 0x8c, + 0xa2, 0x6d, 0x82, 0x8d, 0xe4, 0xd8, 0x24, 0x7c, 0xcc, 0x6c, 0x4e, 0xb4, 0xaf, 0x92, 0x57, 0xe8, + 0xd8, 0x5c, 0x40, 0x5b, 0x50, 0x28, 0xc8, 0x1f, 0x64, 0xaf, 0x82, 0x35, 0x7f, 0xed, 0x3e, 0x1a, + 0x42, 0x9a, 0x48, 0xbf, 0xea, 0xcb, 0x6d, 0x57, 0xed, 0x60, 0xb9, 0x06, 0x4a, 0x88, 0xd9, 0xc2, + 0x81, 0x48, 0xf4, 0x11, 0xc3, 0xc4, 0x35, 0xe6, 0xb7, 0xa5, 0xda, 0xff, 0xe6, 0xb5, 0x50, 0x6f, + 0x33, 0x4c, 0x3a, 0xb8, 0xf9, 0x24, 0x0d, 0x7a, 0x2f, 0x1b, 0x74, 0x21, 0xbf, 0xa6, 0x82, 0x9b, + 0x59, 0x7a, 0x04, 0xfe, 0x41, 0x02, 0xd7, 0xbb, 0xdc, 0x32, 0x09, 0x17, 0xcc, 0x09, 0x8a, 0x9d, + 0x76, 0xeb, 0x6f, 0x72, 0x37, 0x1f, 0xa7, 0x69, 0xaa, 0xd9, 0x34, 0xe9, 0x50, 0xda, 0x2d, 0x70, + 0x23, 0x43, 0x8e, 0x58, 0x3e, 0x49, 0x60, 0xad, 0xcb, 0xad, 0xe7, 0xcc, 0xb2, 0x0e, 0xc3, 0xfd, + 0x7b, 0x04, 0x0a, 0xf0, 0x48, 0x0c, 0x99, 0x43, 0xc5, 0xc9, 0xa5, 0x24, 0xb1, 0x75, 0xe9, 0x3d, + 0xdc, 0x04, 0x2b, 0x10, 0x09, 0x3a, 0x21, 0xde, 0xce, 0x5d, 0x35, 0x83, 0x51, 0xf3, 0xa1, 0xcb, + 0x18, 0xf7, 0x73, 0x29, 0xb5, 0x6c, 0xca, 0x64, 0x5c, 0xad, 0x02, 0xb6, 0x52, 0x52, 0x44, 0xf7, + 0xde, 0xa7, 0x33, 0xc9, 0x88, 0x4d, 0xfe, 0x11, 0xdd, 0x6f, 0x50, 0x24, 0x63, 0x05, 0x14, 0x49, + 0x29, 0xa4, 0x68, 0xfc, 0xc8, 0x83, 0x7c, 0x97, 0x5b, 0x72, 0x0f, 0x14, 0xe2, 0x07, 0x42, 0xd5, + 0xd3, 0x6f, 0x91, 0x9e, 0xbc, 0xa5, 0x4a, 0xf5, 0xd7, 0xf5, 0xb0, 0xb9, 0xfc, 0x0a, 0xac, 0x2f, + 0xde, 0xe0, 0xec, 0xc9, 0x0b, 0x3e, 0x45, 0x5f, 0xce, 0x17, 0x2d, 0x36, 0x04, 0xa5, 0x85, 0x5b, + 0x73, 0x37, 0xb3, 0x47, 0xda, 0xa6, 0xd4, 0x97, 0xb2, 0x45, 0x2b, 0xbd, 0x04, 0xc5, 0xb9, 0x33, + 0xbd, 0x93, 0x39, 0x3d, 0x69, 0x51, 0xee, 0x5f, 0x6a, 0x49, 0x76, 0x9f, 0x3b, 0x53, 0x3b, 0x17, + 0x84, 0x8b, 0x2d, 0x17, 0x74, 0xcf, 0xda, 0xef, 0x83, 0xee, 0xe7, 0xa9, 0x2a, 0x9d, 0x4d, 0x55, + 0xe9, 0xfb, 0x54, 0x95, 0xde, 0xce, 0xd4, 0xdc, 0xd9, 0x4c, 0xcd, 0x7d, 0x9b, 0xa9, 0xb9, 0x17, + 0xfb, 0x16, 0x15, 0xc3, 0xa3, 0x81, 0x8e, 0xd8, 0xc8, 0xe8, 0x79, 0xed, 0xea, 0x4f, 0xe1, 0x80, + 0x1b, 0xc1, 0xf9, 0x9a, 0xec, 0x35, 0xe6, 0xce, 0x98, 0x38, 0x19, 0x13, 0x3e, 0x58, 0xf1, 0x3e, + 0x31, 0xfb, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x73, 0x79, 0x08, 0xd8, 0x06, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // Adds a new oracle given a provided connection + AddOracle(ctx context.Context, in *MsgAddOracle, opts ...grpc.CallOption) (*MsgAddOracleResponse, error) + // Instantiates an Oracle CW contract + InstantiateOracle(ctx context.Context, in *MsgInstantiateOracle, opts ...grpc.CallOption) (*MsgInstantiateOracleResponse, error) + // Restores the oracle ICA channel after a closure + RestoreOracleICA(ctx context.Context, in *MsgRestoreOracleICA, opts ...grpc.CallOption) (*MsgRestoreOracleICAResponse, error) + // Toggle's whether an oracle is active and should receive metric updates + ToggleOracle(ctx context.Context, in *MsgToggleOracle, opts ...grpc.CallOption) (*MsgToggleOracleResponse, error) + // Removes an oracle completely + RemoveOracle(ctx context.Context, in *MsgRemoveOracle, opts ...grpc.CallOption) (*MsgRemoveOracleResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) AddOracle(ctx context.Context, in *MsgAddOracle, opts ...grpc.CallOption) (*MsgAddOracleResponse, error) { + out := new(MsgAddOracleResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Msg/AddOracle", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) InstantiateOracle(ctx context.Context, in *MsgInstantiateOracle, opts ...grpc.CallOption) (*MsgInstantiateOracleResponse, error) { + out := new(MsgInstantiateOracleResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Msg/InstantiateOracle", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RestoreOracleICA(ctx context.Context, in *MsgRestoreOracleICA, opts ...grpc.CallOption) (*MsgRestoreOracleICAResponse, error) { + out := new(MsgRestoreOracleICAResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Msg/RestoreOracleICA", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) ToggleOracle(ctx context.Context, in *MsgToggleOracle, opts ...grpc.CallOption) (*MsgToggleOracleResponse, error) { + out := new(MsgToggleOracleResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Msg/ToggleOracle", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) RemoveOracle(ctx context.Context, in *MsgRemoveOracle, opts ...grpc.CallOption) (*MsgRemoveOracleResponse, error) { + out := new(MsgRemoveOracleResponse) + err := c.cc.Invoke(ctx, "/stride.icaoracle.Msg/RemoveOracle", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // Adds a new oracle given a provided connection + AddOracle(context.Context, *MsgAddOracle) (*MsgAddOracleResponse, error) + // Instantiates an Oracle CW contract + InstantiateOracle(context.Context, *MsgInstantiateOracle) (*MsgInstantiateOracleResponse, error) + // Restores the oracle ICA channel after a closure + RestoreOracleICA(context.Context, *MsgRestoreOracleICA) (*MsgRestoreOracleICAResponse, error) + // Toggle's whether an oracle is active and should receive metric updates + ToggleOracle(context.Context, *MsgToggleOracle) (*MsgToggleOracleResponse, error) + // Removes an oracle completely + RemoveOracle(context.Context, *MsgRemoveOracle) (*MsgRemoveOracleResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) AddOracle(ctx context.Context, req *MsgAddOracle) (*MsgAddOracleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddOracle not implemented") +} +func (*UnimplementedMsgServer) InstantiateOracle(ctx context.Context, req *MsgInstantiateOracle) (*MsgInstantiateOracleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method InstantiateOracle not implemented") +} +func (*UnimplementedMsgServer) RestoreOracleICA(ctx context.Context, req *MsgRestoreOracleICA) (*MsgRestoreOracleICAResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RestoreOracleICA not implemented") +} +func (*UnimplementedMsgServer) ToggleOracle(ctx context.Context, req *MsgToggleOracle) (*MsgToggleOracleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ToggleOracle not implemented") +} +func (*UnimplementedMsgServer) RemoveOracle(ctx context.Context, req *MsgRemoveOracle) (*MsgRemoveOracleResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveOracle not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_AddOracle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgAddOracle) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).AddOracle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Msg/AddOracle", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).AddOracle(ctx, req.(*MsgAddOracle)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_InstantiateOracle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgInstantiateOracle) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).InstantiateOracle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Msg/InstantiateOracle", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).InstantiateOracle(ctx, req.(*MsgInstantiateOracle)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RestoreOracleICA_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRestoreOracleICA) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RestoreOracleICA(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Msg/RestoreOracleICA", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RestoreOracleICA(ctx, req.(*MsgRestoreOracleICA)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_ToggleOracle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgToggleOracle) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ToggleOracle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Msg/ToggleOracle", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ToggleOracle(ctx, req.(*MsgToggleOracle)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_RemoveOracle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgRemoveOracle) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).RemoveOracle(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.icaoracle.Msg/RemoveOracle", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).RemoveOracle(ctx, req.(*MsgRemoveOracle)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "stride.icaoracle.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "AddOracle", + Handler: _Msg_AddOracle_Handler, + }, + { + MethodName: "InstantiateOracle", + Handler: _Msg_InstantiateOracle_Handler, + }, + { + MethodName: "RestoreOracleICA", + Handler: _Msg_RestoreOracleICA_Handler, + }, + { + MethodName: "ToggleOracle", + Handler: _Msg_ToggleOracle_Handler, + }, + { + MethodName: "RemoveOracle", + Handler: _Msg_RemoveOracle_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "stride/icaoracle/tx.proto", +} + +func (m *MsgAddOracle) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAddOracle) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddOracle) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ConnectionId) > 0 { + i -= len(m.ConnectionId) + copy(dAtA[i:], m.ConnectionId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ConnectionId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgAddOracleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgAddOracleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgAddOracleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgInstantiateOracle) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgInstantiateOracle) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgInstantiateOracle) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ContractCodeId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.ContractCodeId)) + i-- + dAtA[i] = 0x18 + } + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgInstantiateOracleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgInstantiateOracleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgInstantiateOracleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgRestoreOracleICA) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRestoreOracleICA) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRestoreOracleICA) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRestoreOracleICAResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRestoreOracleICAResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRestoreOracleICAResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgToggleOracle) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgToggleOracle) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgToggleOracle) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Active { + i-- + if m.Active { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgToggleOracleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgToggleOracleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgToggleOracleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgRemoveOracle) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRemoveOracle) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRemoveOracle) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OracleChainId) > 0 { + i -= len(m.OracleChainId) + copy(dAtA[i:], m.OracleChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.OracleChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Authority) > 0 { + i -= len(m.Authority) + copy(dAtA[i:], m.Authority) + i = encodeVarintTx(dAtA, i, uint64(len(m.Authority))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRemoveOracleResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRemoveOracleResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRemoveOracleResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgAddOracle) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ConnectionId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgAddOracleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgInstantiateOracle) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.ContractCodeId != 0 { + n += 1 + sovTx(uint64(m.ContractCodeId)) + } + return n +} + +func (m *MsgInstantiateOracleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgRestoreOracleICA) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRestoreOracleICAResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgToggleOracle) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Active { + n += 2 + } + return n +} + +func (m *MsgToggleOracleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgRemoveOracle) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Authority) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.OracleChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgRemoveOracleResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgAddOracle) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAddOracle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddOracle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionId", 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.ConnectionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgAddOracleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgAddOracleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgAddOracleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgInstantiateOracle) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgInstantiateOracle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgInstantiateOracle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", 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.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractCodeId", wireType) + } + m.ContractCodeId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ContractCodeId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgInstantiateOracleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgInstantiateOracleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgInstantiateOracleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRestoreOracleICA) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRestoreOracleICA: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRestoreOracleICA: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", 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.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRestoreOracleICAResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRestoreOracleICAResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRestoreOracleICAResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgToggleOracle) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgToggleOracle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgToggleOracle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", 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.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", 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.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Active", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Active = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgToggleOracleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgToggleOracleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgToggleOracleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRemoveOracle) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRemoveOracle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRemoveOracle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Authority", 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.Authority = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OracleChainId", 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.OracleChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRemoveOracleResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRemoveOracleResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRemoveOracleResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index 1abb9f3684..ebdb203f63 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -235,38 +235,38 @@ func init() { } var fileDescriptor_74cd646eb05658fd = []byte{ - // 494 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x52, 0xcf, 0xaa, 0xd3, 0x4e, - 0x14, 0xee, 0xf4, 0xcf, 0xaf, 0xed, 0x34, 0xf7, 0xc7, 0x65, 0xb8, 0x8b, 0xf4, 0x82, 0x69, 0xac, - 0xa0, 0x45, 0x6c, 0x42, 0x75, 0x25, 0xb8, 0x90, 0x22, 0x68, 0xc0, 0xc5, 0x35, 0x75, 0xe5, 0x26, - 0x4c, 0x93, 0x21, 0x1d, 0x6e, 0x32, 0xd3, 0x9b, 0x39, 0x29, 0xf6, 0x19, 0xdc, 0xf8, 0x30, 0x3e, - 0xc4, 0x5d, 0x5e, 0x5c, 0x89, 0x8b, 0x22, 0x2d, 0xb8, 0xf0, 0x29, 0x24, 0x33, 0x29, 0x8a, 0x17, - 0x77, 0xae, 0x32, 0xe7, 0x7c, 0xe7, 0x7c, 0xe7, 0x7c, 0x27, 0x1f, 0x7e, 0xa0, 0xa0, 0xe0, 0x09, - 0xf3, 0xb9, 0x00, 0x56, 0xc4, 0x2b, 0xca, 0xc5, 0x55, 0xc9, 0x8a, 0xad, 0xbf, 0x99, 0xf9, 0x29, - 0x13, 0x4c, 0x71, 0xe5, 0xad, 0x0b, 0x09, 0x92, 0x0c, 0x4d, 0xa1, 0xf7, 0x47, 0xa1, 0xb7, 0x99, - 0x9d, 0x9f, 0xa5, 0x32, 0x95, 0xba, 0xca, 0xaf, 0x5e, 0xa6, 0xe1, 0x7c, 0x18, 0x4b, 0x95, 0x4b, - 0x15, 0x19, 0xc0, 0x04, 0x06, 0x1a, 0x7f, 0x47, 0xb8, 0xf3, 0xa6, 0xea, 0x26, 0xff, 0xe3, 0x26, - 0x4f, 0x6c, 0xe4, 0xa2, 0x49, 0x3f, 0x6c, 0xf2, 0x84, 0xdc, 0xc3, 0x27, 0xb1, 0x14, 0x82, 0xc5, - 0xc0, 0xa5, 0x88, 0x78, 0x62, 0x37, 0x35, 0x64, 0xfd, 0x4a, 0x06, 0x09, 0x19, 0xe2, 0x9e, 0x5e, - 0xa0, 0xc2, 0x5b, 0x1a, 0xef, 0xea, 0x38, 0x48, 0xc8, 0x1d, 0x8c, 0xf5, 0x5a, 0x11, 0x6c, 0xd7, - 0xcc, 0x6e, 0x6b, 0xb0, 0xaf, 0x33, 0x6f, 0xb7, 0x6b, 0x46, 0x6c, 0xdc, 0x2d, 0xd8, 0x55, 0xc9, - 0x14, 0xd8, 0x1d, 0x17, 0x4d, 0xac, 0xf0, 0x18, 0x92, 0x11, 0x1e, 0xc4, 0x34, 0xcb, 0x96, 0x34, - 0xbe, 0xac, 0x68, 0x7b, 0xba, 0x13, 0x1f, 0x53, 0x41, 0x42, 0x4e, 0x71, 0x0b, 0x20, 0xb3, 0xfb, - 0x2e, 0x9a, 0xb4, 0xc3, 0xea, 0x49, 0xee, 0x62, 0xab, 0xee, 0x8e, 0x14, 0x13, 0x60, 0x0f, 0x5c, - 0x34, 0xe9, 0x85, 0x83, 0x3a, 0xb7, 0x60, 0x02, 0xc6, 0x1f, 0x9a, 0xb8, 0xff, 0x82, 0x02, 0xbd, - 0x90, 0x5c, 0xc0, 0x2d, 0xb1, 0x14, 0x9f, 0x14, 0x2c, 0x97, 0xc0, 0xa2, 0x15, 0xe3, 0xe9, 0x0a, - 0x8c, 0xd8, 0xf9, 0xb3, 0xeb, 0xdd, 0xa8, 0xf1, 0x75, 0x37, 0xba, 0x9f, 0x72, 0x58, 0x95, 0x4b, - 0x2f, 0x96, 0x79, 0x7d, 0xbe, 0xfa, 0x33, 0x55, 0xc9, 0xa5, 0x5f, 0x09, 0x54, 0x5e, 0x20, 0xe0, - 0xf3, 0xa7, 0x29, 0xae, 0xaf, 0x1b, 0x08, 0x08, 0x2d, 0x43, 0xf9, 0x4a, 0x33, 0x92, 0x08, 0x5b, - 0x99, 0x8c, 0x69, 0x76, 0x9c, 0xd0, 0xfa, 0x07, 0x13, 0x06, 0x9a, 0xb1, 0x1e, 0xf0, 0x10, 0x77, - 0x36, 0x34, 0x2b, 0xcd, 0xad, 0xad, 0xf9, 0xd9, 0x8f, 0xdd, 0xe8, 0xb4, 0x60, 0xaa, 0xcc, 0xe0, - 0x91, 0xcc, 0x39, 0xb0, 0x7c, 0x0d, 0xdb, 0xd0, 0x94, 0x8c, 0x2f, 0xb0, 0xf5, 0xd2, 0x78, 0x6a, - 0x01, 0x14, 0x18, 0x79, 0x8e, 0xbb, 0xd5, 0xaf, 0xe1, 0x4c, 0xd9, 0xc8, 0x6d, 0x4d, 0x06, 0x8f, - 0x5d, 0xef, 0xaf, 0x26, 0xf3, 0xb4, 0x5f, 0xe6, 0xed, 0x6a, 0xf3, 0xf0, 0xd8, 0x36, 0x5f, 0x5c, - 0xef, 0x1d, 0x74, 0xb3, 0x77, 0xd0, 0xb7, 0xbd, 0x83, 0x3e, 0x1e, 0x9c, 0xc6, 0xcd, 0xc1, 0x69, - 0x7c, 0x39, 0x38, 0x8d, 0x77, 0x4f, 0x7f, 0x93, 0xb6, 0xd0, 0xa4, 0xd3, 0xd7, 0x74, 0xa9, 0xfc, - 0xda, 0xee, 0x9b, 0xd9, 0xcc, 0x7f, 0x7f, 0xcb, 0xf4, 0x5a, 0xf1, 0xf2, 0x3f, 0x6d, 0xd2, 0x27, - 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xc7, 0x86, 0x37, 0x1b, 0x03, 0x00, 0x00, + // 492 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x52, 0x41, 0x8b, 0xd3, 0x40, + 0x14, 0xee, 0xb4, 0x5b, 0xdb, 0x4e, 0xb3, 0xb2, 0x0c, 0x7b, 0x48, 0x17, 0x4c, 0x63, 0x05, 0x2d, + 0x62, 0x13, 0xba, 0x9e, 0x04, 0x0f, 0x52, 0x04, 0x0d, 0x78, 0x58, 0x53, 0x4f, 0x5e, 0xc2, 0x34, + 0x19, 0xd2, 0x61, 0x93, 0x99, 0x6e, 0xe6, 0xa5, 0xd8, 0xdf, 0xe0, 0xc5, 0x1f, 0xe3, 0x8f, 0xd8, + 0xe3, 0xe2, 0x49, 0x3c, 0x14, 0x69, 0xc1, 0x83, 0xbf, 0x42, 0x32, 0x93, 0xa2, 0xb8, 0x78, 0xf3, + 0x94, 0x79, 0xef, 0x7b, 0xef, 0x7b, 0xef, 0x7b, 0xf9, 0xf0, 0x23, 0x05, 0x05, 0x4f, 0x98, 0xcf, + 0x05, 0xb0, 0x22, 0x5e, 0x52, 0x2e, 0xae, 0x4a, 0x56, 0x6c, 0xfc, 0xf5, 0xd4, 0x4f, 0x99, 0x60, + 0x8a, 0x2b, 0x6f, 0x55, 0x48, 0x90, 0x64, 0x60, 0x0a, 0xbd, 0xbf, 0x0a, 0xbd, 0xf5, 0xf4, 0xec, + 0x34, 0x95, 0xa9, 0xd4, 0x55, 0x7e, 0xf5, 0x32, 0x0d, 0x67, 0x83, 0x58, 0xaa, 0x5c, 0xaa, 0xc8, + 0x00, 0x26, 0x30, 0xd0, 0xe8, 0x07, 0xc2, 0xed, 0xb7, 0x55, 0x37, 0xb9, 0x8b, 0x9b, 0x3c, 0xb1, + 0x91, 0x8b, 0xc6, 0xbd, 0xb0, 0xc9, 0x13, 0xf2, 0x00, 0x1f, 0xc7, 0x52, 0x08, 0x16, 0x03, 0x97, + 0x22, 0xe2, 0x89, 0xdd, 0xd4, 0x90, 0xf5, 0x3b, 0x19, 0x24, 0x64, 0x80, 0xbb, 0x7a, 0x81, 0x0a, + 0x6f, 0x69, 0xbc, 0xa3, 0xe3, 0x20, 0x21, 0xf7, 0x30, 0xd6, 0x6b, 0x45, 0xb0, 0x59, 0x31, 0xfb, + 0x48, 0x83, 0x3d, 0x9d, 0x79, 0xb7, 0x59, 0x31, 0x62, 0xe3, 0x4e, 0xc1, 0xae, 0x4a, 0xa6, 0xc0, + 0x6e, 0xbb, 0x68, 0x6c, 0x85, 0x87, 0x90, 0x0c, 0x71, 0x3f, 0xa6, 0x59, 0xb6, 0xa0, 0xf1, 0x65, + 0x45, 0xdb, 0xd5, 0x9d, 0xf8, 0x90, 0x0a, 0x12, 0x72, 0x82, 0x5b, 0x00, 0x99, 0xdd, 0x73, 0xd1, + 0xf8, 0x28, 0xac, 0x9e, 0xe4, 0x3e, 0xb6, 0xea, 0xee, 0x48, 0x31, 0x01, 0x76, 0xdf, 0x45, 0xe3, + 0x6e, 0xd8, 0xaf, 0x73, 0x73, 0x26, 0x60, 0xf4, 0xb1, 0x89, 0x7b, 0x2f, 0x29, 0xd0, 0x0b, 0xc9, + 0x05, 0xdc, 0x12, 0x4b, 0xf1, 0x71, 0xc1, 0x72, 0x09, 0x2c, 0x5a, 0x32, 0x9e, 0x2e, 0xc1, 0x88, + 0x9d, 0x3d, 0xbf, 0xde, 0x0e, 0x1b, 0xdf, 0xb6, 0xc3, 0x87, 0x29, 0x87, 0x65, 0xb9, 0xf0, 0x62, + 0x99, 0xd7, 0xe7, 0xab, 0x3f, 0x13, 0x95, 0x5c, 0xfa, 0x95, 0x40, 0xe5, 0x05, 0x02, 0xbe, 0x7c, + 0x9e, 0xe0, 0xfa, 0xba, 0x81, 0x80, 0xd0, 0x32, 0x94, 0xaf, 0x35, 0x23, 0x89, 0xb0, 0x95, 0xc9, + 0x98, 0x66, 0x87, 0x09, 0xad, 0xff, 0x30, 0xa1, 0xaf, 0x19, 0xeb, 0x01, 0x8f, 0x71, 0x7b, 0x4d, + 0xb3, 0xd2, 0xdc, 0xda, 0x9a, 0x9d, 0xfe, 0xdc, 0x0e, 0x4f, 0x0a, 0xa6, 0xca, 0x0c, 0x9e, 0xc8, + 0x9c, 0x03, 0xcb, 0x57, 0xb0, 0x09, 0x4d, 0xc9, 0xe8, 0x02, 0x5b, 0xaf, 0x8c, 0xa7, 0xe6, 0x40, + 0x81, 0x91, 0x17, 0xb8, 0x53, 0xfd, 0x1a, 0xce, 0x94, 0x8d, 0xdc, 0xd6, 0xb8, 0x7f, 0xee, 0x7a, + 0xff, 0x34, 0x99, 0xa7, 0xfd, 0x32, 0x3b, 0xaa, 0x36, 0x0f, 0x0f, 0x6d, 0xb3, 0xf9, 0xf5, 0xce, + 0x41, 0x37, 0x3b, 0x07, 0x7d, 0xdf, 0x39, 0xe8, 0xd3, 0xde, 0x69, 0xdc, 0xec, 0x9d, 0xc6, 0xd7, + 0xbd, 0xd3, 0x78, 0xff, 0xec, 0x0f, 0x69, 0x73, 0x4d, 0x3a, 0x79, 0x43, 0x17, 0xca, 0xaf, 0xed, + 0xbe, 0x9e, 0x9e, 0xfb, 0x1f, 0x6e, 0x99, 0x5e, 0x2b, 0x5e, 0xdc, 0xd1, 0x26, 0x7d, 0xfa, 0x2b, + 0x00, 0x00, 0xff, 0xff, 0x89, 0x76, 0x91, 0x6c, 0x1b, 0x03, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { diff --git a/x/interchainquery/types/messages.pb.go b/x/interchainquery/types/messages.pb.go index bba3702b36..b861ddd50d 100644 --- a/x/interchainquery/types/messages.pb.go +++ b/x/interchainquery/types/messages.pb.go @@ -153,8 +153,8 @@ var fileDescriptor_25adad4f8ed32400 = []byte{ 0xa8, 0xd0, 0xc7, 0x52, 0xe7, 0xd0, 0xee, 0x6e, 0xef, 0xd3, 0xd2, 0x05, 0x67, 0x4b, 0x17, 0x7c, 0x5b, 0xba, 0xe0, 0xcd, 0xca, 0x2d, 0x9d, 0xad, 0xdc, 0xd2, 0xd7, 0x95, 0x5b, 0x7a, 0x71, 0x48, 0x99, 0x1a, 0x4d, 0x06, 0x68, 0xc8, 0x63, 0xdc, 0xd3, 0x2d, 0x1d, 0x3c, 0x0e, 0x07, 0x12, 0xe7, - 0x6f, 0x66, 0xea, 0xfb, 0xf8, 0xf4, 0x62, 0x95, 0x59, 0x4a, 0xe4, 0xa0, 0xaa, 0x77, 0xf5, 0xc1, - 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xb0, 0xee, 0xa3, 0x60, 0x03, 0x00, 0x00, + 0x6f, 0x66, 0xea, 0xb7, 0xf1, 0xe9, 0xc5, 0x2a, 0xb3, 0x94, 0xc8, 0x41, 0x55, 0xef, 0xea, 0x83, + 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x01, 0xf9, 0xf8, 0x60, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/types/query.pb.go b/x/interchainquery/types/query.pb.go index 58b83047e5..91d9b4806e 100644 --- a/x/interchainquery/types/query.pb.go +++ b/x/interchainquery/types/query.pb.go @@ -137,9 +137,9 @@ var fileDescriptor_b720c147b9144d5b = []byte{ 0x85, 0x8c, 0xf5, 0x83, 0xc1, 0xfa, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0x71, 0x44, 0x09, 0x5a, 0x68, 0x38, 0x05, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x65, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x0d, 0xf5, 0x2b, + 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x8d, 0xf4, 0x2b, 0x30, 0x8c, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xc7, 0x9c, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0xe7, 0x9f, 0xf7, 0x72, 0x5a, 0x02, 0x00, 0x00, + 0xff, 0xff, 0xf2, 0x2e, 0xe0, 0x29, 0x5a, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/mint/types/genesis.pb.go b/x/mint/types/genesis.pb.go index 100d9c0763..fd5e9e1de8 100644 --- a/x/mint/types/genesis.pb.go +++ b/x/mint/types/genesis.pb.go @@ -94,25 +94,25 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/genesis.proto", fileDescriptor_f4521d63f51851f3) } var fileDescriptor_f4521d63f51851f3 = []byte{ - // 282 bytes of a gzipped FileDescriptorProto + // 283 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x31, 0x4e, 0xc3, 0x30, 0x14, 0x40, 0x63, 0x8a, 0x3a, 0x04, 0xa6, 0x00, 0x22, 0x2a, 0x92, 0x5b, 0x32, 0x75, 0xc1, 0x56, - 0x60, 0x82, 0x31, 0x12, 0x82, 0x01, 0x24, 0xd4, 0x6c, 0x5d, 0x2a, 0x27, 0xb1, 0xd2, 0x48, 0x24, - 0x8e, 0xec, 0xdf, 0x8a, 0xde, 0x82, 0x63, 0x75, 0xec, 0xc8, 0x54, 0x55, 0xc9, 0x0d, 0x38, 0x01, - 0xb2, 0x1d, 0x98, 0x4a, 0x37, 0xcb, 0xef, 0xbd, 0x6f, 0xeb, 0xbb, 0xd7, 0x0a, 0x64, 0x91, 0x71, - 0x5a, 0x16, 0x15, 0xd0, 0x65, 0x98, 0x70, 0x60, 0x21, 0xcd, 0x79, 0xc5, 0x55, 0xa1, 0x48, 0x2d, + 0xca, 0x04, 0x63, 0x24, 0x04, 0x03, 0x48, 0xa8, 0xd9, 0xba, 0x54, 0x4e, 0x62, 0xa5, 0x91, 0x48, + 0x1c, 0xd9, 0xbf, 0x15, 0xbd, 0x05, 0xc7, 0xea, 0xd8, 0x91, 0xa9, 0xaa, 0x92, 0x1b, 0x70, 0x02, + 0x64, 0x3b, 0x30, 0x15, 0x36, 0xcb, 0xef, 0xbd, 0x6f, 0xeb, 0xbb, 0xd7, 0x0a, 0x64, 0x91, 0x71, + 0x5a, 0x16, 0x15, 0xd0, 0x55, 0x98, 0x70, 0x60, 0x21, 0xcd, 0x79, 0xc5, 0x55, 0xa1, 0x48, 0x2d, 0x05, 0x08, 0xef, 0xcc, 0x2a, 0x44, 0x2b, 0xa4, 0x53, 0x06, 0xe7, 0xb9, 0xc8, 0x85, 0xe1, 0x54, - 0x9f, 0xac, 0x3a, 0xc0, 0xfb, 0xa6, 0x99, 0xce, 0xf0, 0x60, 0x87, 0xdc, 0xd3, 0x27, 0x3b, 0x3c, - 0x06, 0x06, 0xdc, 0xbb, 0x77, 0xfb, 0x1a, 0x73, 0xe9, 0xa3, 0x11, 0x1a, 0x9f, 0xdc, 0x5e, 0x91, - 0x3d, 0x8f, 0x91, 0x57, 0xa3, 0x44, 0xc7, 0xeb, 0xed, 0xd0, 0x99, 0x74, 0x81, 0x4e, 0x6b, 0x26, - 0x59, 0xa9, 0xfc, 0xa3, 0x03, 0xe9, 0x9b, 0x51, 0x7e, 0x53, 0x1b, 0x78, 0x53, 0xf7, 0x52, 0xf2, - 0x6c, 0x91, 0x42, 0x21, 0xaa, 0x99, 0x02, 0x26, 0x81, 0x67, 0x33, 0x5e, 0x8b, 0x74, 0xee, 0xf7, - 0x46, 0x68, 0xdc, 0x8b, 0x82, 0xef, 0xed, 0x10, 0xaf, 0x58, 0xf9, 0xfe, 0x10, 0xfc, 0x23, 0x06, - 0x93, 0x8b, 0x3f, 0x12, 0x5b, 0xf0, 0xa8, 0xef, 0xa3, 0xe7, 0x75, 0x83, 0xd1, 0xa6, 0xc1, 0x68, - 0xd7, 0x60, 0xf4, 0xd9, 0x62, 0x67, 0xd3, 0x62, 0xe7, 0xab, 0xc5, 0xce, 0x94, 0xe4, 0x05, 0xcc, - 0x17, 0x09, 0x49, 0x45, 0x49, 0x63, 0xf3, 0xd5, 0x9b, 0x17, 0x96, 0x28, 0xda, 0xed, 0x6c, 0x19, - 0x86, 0xf4, 0xc3, 0x6e, 0x0e, 0x56, 0x35, 0x57, 0x49, 0xdf, 0xec, 0xec, 0xee, 0x27, 0x00, 0x00, - 0xff, 0xff, 0xd8, 0xc4, 0xb4, 0x94, 0xa3, 0x01, 0x00, 0x00, + 0x9f, 0xac, 0x3a, 0xc0, 0x87, 0xa6, 0x99, 0xce, 0xf0, 0x60, 0x8f, 0xdc, 0xd3, 0x47, 0x3b, 0x3c, + 0x06, 0x06, 0xdc, 0xbb, 0x73, 0xfb, 0x1a, 0x73, 0xe9, 0xa3, 0x11, 0x1a, 0x9f, 0x4c, 0xae, 0xc8, + 0x81, 0xc7, 0xc8, 0x8b, 0x51, 0xa2, 0xe3, 0xcd, 0x6e, 0xe8, 0x4c, 0xbb, 0x40, 0xa7, 0x35, 0x93, + 0xac, 0x54, 0xfe, 0xd1, 0x3f, 0xe9, 0xab, 0x51, 0x7e, 0x52, 0x1b, 0x78, 0x33, 0xf7, 0x52, 0xf2, + 0x6c, 0x99, 0x42, 0x21, 0xaa, 0xb9, 0x02, 0x26, 0x81, 0x67, 0x73, 0x5e, 0x8b, 0x74, 0xe1, 0xf7, + 0x46, 0x68, 0xdc, 0x8b, 0x82, 0xaf, 0xdd, 0x10, 0xaf, 0x59, 0xf9, 0x76, 0x1f, 0xfc, 0x21, 0x06, + 0xd3, 0x8b, 0x5f, 0x12, 0x5b, 0xf0, 0xa0, 0xef, 0xa3, 0xa7, 0x4d, 0x83, 0xd1, 0xb6, 0xc1, 0x68, + 0xdf, 0x60, 0xf4, 0xd1, 0x62, 0x67, 0xdb, 0x62, 0xe7, 0xb3, 0xc5, 0xce, 0x8c, 0xe4, 0x05, 0x2c, + 0x96, 0x09, 0x49, 0x45, 0x49, 0x63, 0xf3, 0xd5, 0x9b, 0x67, 0x96, 0x28, 0xda, 0xed, 0x6c, 0x15, + 0x4e, 0xe8, 0xbb, 0xdd, 0x1c, 0xac, 0x6b, 0xae, 0x92, 0xbe, 0xd9, 0xd9, 0xed, 0x77, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x98, 0x69, 0xcc, 0xad, 0xa3, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index c4c930d1e2..e96aa174af 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -206,47 +206,47 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/mint.proto", fileDescriptor_5ad5fa4b1fdb702f) } var fileDescriptor_5ad5fa4b1fdb702f = []byte{ - // 632 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0x8d, 0x69, 0x9b, 0xaa, 0x8b, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, 0x7a, - 0xa0, 0xb6, 0x42, 0x6f, 0x3d, 0xa1, 0xa8, 0xb4, 0x54, 0x02, 0x29, 0x38, 0xb7, 0x5e, 0x2c, 0x7f, - 0x6c, 0x9d, 0x55, 0xe3, 0x5d, 0x6b, 0x77, 0x9d, 0x12, 0x21, 0xf1, 0x07, 0xca, 0x81, 0x23, 0x47, - 0x7e, 0x4e, 0x8f, 0x3d, 0xa2, 0x1e, 0x22, 0x94, 0xfc, 0x83, 0x5c, 0xb8, 0xa2, 0xdd, 0x75, 0x3e, - 0x21, 0x12, 0x11, 0x3d, 0xc5, 0xfb, 0x66, 0x76, 0xde, 0xcb, 0xdb, 0x99, 0x01, 0x26, 0xe3, 0x14, - 0xc5, 0xd0, 0x4d, 0x11, 0xe6, 0x6e, 0xbb, 0x1a, 0x42, 0x1e, 0x54, 0xe5, 0xc1, 0xc9, 0x28, 0xe1, - 0x44, 0xdf, 0x54, 0x71, 0x47, 0x42, 0x45, 0x7c, 0xfb, 0x51, 0x42, 0x12, 0x22, 0xe3, 0xae, 0xf8, - 0x52, 0xa9, 0xf6, 0x67, 0x50, 0x7e, 0x8f, 0x30, 0x87, 0x54, 0xe7, 0x60, 0x03, 0x66, 0x24, 0x6a, - 0xfa, 0x19, 0x25, 0x6d, 0xc4, 0x10, 0xc1, 0xcc, 0xd0, 0x76, 0xb5, 0xbd, 0xb5, 0xda, 0xe9, 0x75, - 0xd7, 0x2a, 0xdd, 0x76, 0xad, 0x17, 0x09, 0xe2, 0xcd, 0x3c, 0x74, 0x22, 0x92, 0xba, 0x11, 0x61, - 0x29, 0x61, 0xc5, 0xcf, 0x3e, 0x8b, 0x2f, 0x5c, 0xde, 0xc9, 0x20, 0x73, 0x8e, 0x60, 0x34, 0xe8, - 0x5a, 0x95, 0x4e, 0x90, 0xb6, 0x0e, 0xed, 0xd9, 0x7a, 0xb6, 0xb7, 0x2e, 0xa1, 0xfa, 0x18, 0xf9, - 0xb5, 0x04, 0x2a, 0x47, 0x48, 0xe8, 0x0d, 0x73, 0x8e, 0x08, 0xae, 0x53, 0x92, 0x11, 0x2a, 0xbe, - 0x98, 0x7e, 0x06, 0x56, 0x19, 0x0f, 0x2e, 0x10, 0x4e, 0x0a, 0x21, 0xaf, 0x17, 0x16, 0xf2, 0x40, - 0x09, 0x29, 0xca, 0xd8, 0xde, 0xb0, 0xa0, 0xfe, 0x09, 0x6c, 0x45, 0x24, 0x4d, 0x73, 0x8c, 0x78, - 0xc7, 0xcf, 0x08, 0x69, 0xf9, 0x09, 0x25, 0x97, 0xbc, 0x69, 0xdc, 0x93, 0x4c, 0x27, 0x0b, 0x33, - 0x6d, 0x29, 0xa6, 0xe9, 0xa2, 0xb6, 0xb7, 0x39, 0x02, 0xea, 0x84, 0xb4, 0x4e, 0x24, 0x87, 0xfe, - 0x45, 0x03, 0xe6, 0x0c, 0x3b, 0x83, 0x51, 0x4e, 0xc5, 0x29, 0xcc, 0xe3, 0x04, 0x72, 0x63, 0xe9, - 0x6e, 0x65, 0xec, 0x4c, 0xc9, 0x68, 0x14, 0x64, 0x35, 0xc9, 0xa5, 0x73, 0xf0, 0x90, 0x71, 0x1a, - 0x70, 0x98, 0xa0, 0xc8, 0xa7, 0x90, 0x41, 0xda, 0x86, 0xc6, 0xf2, 0xdd, 0x0a, 0xd8, 0x18, 0x31, - 0x78, 0x8a, 0xc0, 0xbe, 0x5d, 0x01, 0xe5, 0x7a, 0x40, 0x83, 0x94, 0xe9, 0x4f, 0x00, 0x10, 0xad, - 0xea, 0xc7, 0x10, 0x93, 0x54, 0xbd, 0xb5, 0xb7, 0x26, 0x90, 0x23, 0x01, 0xe8, 0x57, 0x1a, 0x30, - 0x12, 0x88, 0x21, 0x43, 0xcc, 0xff, 0xa3, 0x45, 0xd5, 0x7b, 0x7d, 0x58, 0x58, 0xa7, 0xa5, 0x74, - 0xce, 0xab, 0x6b, 0x7b, 0x8f, 0x8b, 0xd0, 0x9b, 0xe9, 0x8e, 0xd5, 0x8f, 0x87, 0x73, 0x82, 0x62, - 0x88, 0x39, 0x3a, 0x47, 0x90, 0x16, 0xaf, 0xb5, 0x33, 0xdb, 0xf9, 0xe3, 0x8c, 0x61, 0xe7, 0x9f, - 0x8e, 0x10, 0x3d, 0x04, 0xdb, 0x14, 0xc6, 0x79, 0x24, 0x7a, 0xdd, 0xcf, 0x20, 0x45, 0x24, 0xf6, - 0x11, 0x56, 0x42, 0x98, 0xb4, 0x7f, 0xa9, 0xf6, 0x7c, 0xd0, 0xb5, 0x9e, 0xaa, 0x8a, 0xf3, 0x73, - 0x6d, 0xaf, 0x32, 0x0a, 0xd6, 0x65, 0xec, 0x14, 0x4b, 0xd1, 0x4c, 0xcc, 0xf4, 0xf8, 0xde, 0x79, - 0x10, 0x71, 0x42, 0x8d, 0x95, 0xff, 0x9b, 0xe9, 0xd9, 0x7a, 0xb6, 0xb7, 0x3e, 0x82, 0x8e, 0x25, - 0xa2, 0xa7, 0xc0, 0x88, 0x27, 0x46, 0x5a, 0xb8, 0x3a, 0x9c, 0x69, 0xa3, 0xbc, 0xab, 0xed, 0xdd, - 0x7f, 0xf5, 0xd2, 0xf9, 0xcb, 0x86, 0x72, 0xe6, 0xec, 0x81, 0xda, 0xb2, 0xd0, 0xea, 0x55, 0xe2, - 0x39, 0x6b, 0xe2, 0x4a, 0x03, 0x7b, 0xa2, 0x0e, 0xc2, 0x89, 0x4f, 0xe1, 0x65, 0x40, 0x63, 0xe6, - 0x4f, 0xf1, 0x33, 0x1e, 0x50, 0xae, 0xcc, 0x32, 0x56, 0xa5, 0xaf, 0x07, 0x83, 0xae, 0xe5, 0xaa, - 0xff, 0xf3, 0xaf, 0x37, 0x6d, 0xef, 0x59, 0x91, 0xea, 0xa9, 0xcc, 0x49, 0xb5, 0x0d, 0x91, 0x27, - 0x3d, 0x3f, 0x5c, 0xfe, 0xf6, 0xdd, 0x2a, 0xd5, 0xde, 0x5e, 0xf7, 0x4c, 0xed, 0xa6, 0x67, 0x6a, - 0x3f, 0x7b, 0xa6, 0xf6, 0xb5, 0x6f, 0x96, 0x6e, 0xfa, 0x66, 0xe9, 0x47, 0xdf, 0x2c, 0x9d, 0x39, - 0x13, 0x86, 0x37, 0xa4, 0x09, 0xfb, 0xef, 0x82, 0x90, 0xb9, 0xc5, 0x4a, 0x6f, 0x57, 0xab, 0xee, - 0x47, 0xb5, 0xd8, 0xa5, 0xf9, 0x61, 0x59, 0xee, 0xe9, 0x83, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, - 0x11, 0xb2, 0xc1, 0x11, 0xf4, 0x05, 0x00, 0x00, + // 634 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0x8d, 0xbf, 0xb6, 0xa9, 0x3a, 0x9f, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, + 0xba, 0xa0, 0xb6, 0xda, 0xee, 0xba, 0x42, 0x51, 0x69, 0x89, 0x04, 0x52, 0x70, 0x76, 0xdd, 0x58, + 0xfe, 0x99, 0x3a, 0xa3, 0xc6, 0x33, 0xd6, 0xcc, 0x38, 0x25, 0x42, 0xe2, 0x05, 0xca, 0x82, 0x25, + 0x4b, 0x1e, 0xa7, 0xcb, 0x2e, 0x51, 0x17, 0x11, 0x4a, 0xde, 0x20, 0x1b, 0xb6, 0x68, 0x66, 0x9c, + 0x5f, 0x88, 0x44, 0x44, 0x57, 0xf1, 0x9c, 0x7b, 0xe7, 0x9e, 0x93, 0x33, 0xf7, 0x5e, 0x60, 0x32, + 0x4e, 0x51, 0x0c, 0xdd, 0x14, 0x61, 0xee, 0xb6, 0x0f, 0x42, 0xc8, 0x83, 0x03, 0x79, 0x70, 0x32, + 0x4a, 0x38, 0xd1, 0x37, 0x55, 0xdc, 0x91, 0x50, 0x11, 0xdf, 0x7e, 0x94, 0x90, 0x84, 0xc8, 0xb8, + 0x2b, 0xbe, 0x54, 0xaa, 0xfd, 0x09, 0x94, 0xdf, 0x21, 0xcc, 0x21, 0xd5, 0x39, 0xd8, 0x80, 0x19, + 0x89, 0x9a, 0x7e, 0x46, 0x49, 0x1b, 0x31, 0x44, 0x30, 0x33, 0xb4, 0x5d, 0x6d, 0x6f, 0xad, 0x5a, + 0xbb, 0xe9, 0x5a, 0xa5, 0xbb, 0xae, 0xf5, 0x22, 0x41, 0xbc, 0x99, 0x87, 0x4e, 0x44, 0x52, 0x37, + 0x22, 0x2c, 0x25, 0xac, 0xf8, 0xd9, 0x67, 0xf1, 0xa5, 0xcb, 0x3b, 0x19, 0x64, 0xce, 0x09, 0x8c, + 0x06, 0x5d, 0xab, 0xd2, 0x09, 0xd2, 0xd6, 0xb1, 0x3d, 0x5b, 0xcf, 0xf6, 0xd6, 0x25, 0x54, 0x1f, + 0x23, 0x3f, 0x97, 0x40, 0xe5, 0x04, 0x09, 0xbd, 0x61, 0xce, 0x11, 0xc1, 0x75, 0x4a, 0x32, 0x42, + 0xc5, 0x17, 0xd3, 0xcf, 0xc1, 0x2a, 0xe3, 0xc1, 0x25, 0xc2, 0x49, 0x21, 0xe4, 0xd5, 0xc2, 0x42, + 0x1e, 0x28, 0x21, 0x45, 0x19, 0xdb, 0x1b, 0x16, 0xd4, 0x3f, 0x82, 0xad, 0x88, 0xa4, 0x69, 0x8e, + 0x11, 0xef, 0xf8, 0x19, 0x21, 0x2d, 0x3f, 0xa1, 0xe4, 0x8a, 0x37, 0x8d, 0xff, 0x24, 0xd3, 0xd9, + 0xc2, 0x4c, 0x5b, 0x8a, 0x69, 0xba, 0xa8, 0xed, 0x6d, 0x8e, 0x80, 0x3a, 0x21, 0xad, 0x33, 0xc9, + 0xa1, 0x7f, 0xd6, 0x80, 0x39, 0xc3, 0xce, 0x60, 0x94, 0x53, 0x71, 0x0a, 0xf3, 0x38, 0x81, 0xdc, + 0x58, 0xba, 0x5f, 0x19, 0x3b, 0x53, 0x32, 0x1a, 0x05, 0x59, 0x55, 0x72, 0xe9, 0x1c, 0x3c, 0x64, + 0x9c, 0x06, 0x1c, 0x26, 0x28, 0xf2, 0x29, 0x64, 0x90, 0xb6, 0xa1, 0xb1, 0x7c, 0xbf, 0x02, 0x36, + 0x46, 0x0c, 0x9e, 0x22, 0xb0, 0xef, 0x56, 0x40, 0xb9, 0x1e, 0xd0, 0x20, 0x65, 0xfa, 0x13, 0x00, + 0x44, 0xab, 0xfa, 0x31, 0xc4, 0x24, 0x55, 0x6f, 0xed, 0xad, 0x09, 0xe4, 0x44, 0x00, 0xfa, 0xb5, + 0x06, 0x8c, 0x04, 0x62, 0xc8, 0x10, 0xf3, 0x7f, 0x6b, 0x51, 0xf5, 0x5e, 0xef, 0x17, 0xd6, 0x69, + 0x29, 0x9d, 0xf3, 0xea, 0xda, 0xde, 0xe3, 0x22, 0xf4, 0x7a, 0xba, 0x63, 0xf5, 0xd3, 0xe1, 0x9c, + 0xa0, 0x18, 0x62, 0x8e, 0x2e, 0x10, 0xa4, 0xc5, 0x6b, 0xed, 0xcc, 0x76, 0xfe, 0x38, 0x63, 0xd8, + 0xf9, 0xb5, 0x11, 0xa2, 0x87, 0x60, 0x9b, 0xc2, 0x38, 0x8f, 0x44, 0xaf, 0xfb, 0x19, 0xa4, 0x88, + 0xc4, 0x3e, 0xc2, 0x4a, 0x08, 0x93, 0xf6, 0x2f, 0x55, 0x9f, 0x0f, 0xba, 0xd6, 0x53, 0x55, 0x71, + 0x7e, 0xae, 0xed, 0x55, 0x46, 0xc1, 0xba, 0x8c, 0xd5, 0xb0, 0x14, 0xcd, 0xc4, 0x4c, 0x8f, 0xef, + 0x5d, 0x04, 0x11, 0x27, 0xd4, 0x58, 0xf9, 0xb7, 0x99, 0x9e, 0xad, 0x67, 0x7b, 0xeb, 0x23, 0xe8, + 0x54, 0x22, 0x7a, 0x0a, 0x8c, 0x78, 0x62, 0xa4, 0x85, 0xab, 0xc3, 0x99, 0x36, 0xca, 0xbb, 0xda, + 0xde, 0xff, 0x87, 0x2f, 0x9d, 0x3f, 0x6c, 0x28, 0x67, 0xce, 0x1e, 0xa8, 0x2e, 0x0b, 0xad, 0x5e, + 0x25, 0x9e, 0xb3, 0x26, 0xae, 0x35, 0xb0, 0x27, 0xea, 0x20, 0x9c, 0xf8, 0x14, 0x5e, 0x05, 0x34, + 0x66, 0xfe, 0x14, 0x3f, 0xe3, 0x01, 0xe5, 0xca, 0x2c, 0x63, 0x55, 0xfa, 0x7a, 0x34, 0xe8, 0x5a, + 0xae, 0xfa, 0x3f, 0x7f, 0x7b, 0xd3, 0xf6, 0x9e, 0x15, 0xa9, 0x9e, 0xca, 0x9c, 0x54, 0xdb, 0x10, + 0x79, 0xd2, 0xf3, 0xe3, 0xe5, 0xaf, 0xdf, 0xac, 0x52, 0xf5, 0xcd, 0x4d, 0xcf, 0xd4, 0x6e, 0x7b, + 0xa6, 0xf6, 0xa3, 0x67, 0x6a, 0x5f, 0xfa, 0x66, 0xe9, 0xb6, 0x6f, 0x96, 0xbe, 0xf7, 0xcd, 0xd2, + 0xb9, 0x33, 0x61, 0x78, 0x43, 0x9a, 0xb0, 0xff, 0x36, 0x08, 0x99, 0x5b, 0xac, 0xf4, 0xf6, 0xc1, + 0xa1, 0xfb, 0x41, 0x2d, 0x76, 0x69, 0x7e, 0x58, 0x96, 0x7b, 0xfa, 0xe8, 0x57, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x51, 0x1f, 0xb9, 0x28, 0xf4, 0x05, 0x00, 0x00, } func (m *Minter) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index b50636c825..63cb5640a7 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -224,9 +224,9 @@ var fileDescriptor_b5a371e09ad2a41a = []byte{ 0x41, 0x69, 0x65, 0x77, 0xb8, 0xff, 0xbb, 0x76, 0x7e, 0x8b, 0x9a, 0xf1, 0x8f, 0x89, 0x34, 0x56, 0x53, 0xc6, 0x6a, 0x40, 0x94, 0x8d, 0xb5, 0x5a, 0x76, 0xf7, 0x64, 0xba, 0x40, 0xea, 0x6c, 0x81, 0xd4, 0xb7, 0x05, 0x52, 0xef, 0x97, 0x48, 0x99, 0x2d, 0x91, 0xf2, 0xb2, 0x44, 0xca, 0x25, 0xfe, - 0x56, 0xfc, 0xb9, 0xb4, 0x6f, 0x9f, 0x9a, 0x16, 0x27, 0xe9, 0xc3, 0x9b, 0x18, 0x06, 0xb9, 0x4d, - 0xc4, 0xe5, 0x25, 0x58, 0x45, 0xf9, 0xf0, 0x0e, 0x3e, 0x02, 0x00, 0x00, 0xff, 0xff, 0xc2, 0xd4, - 0xc8, 0xfa, 0x04, 0x03, 0x00, 0x00, + 0x56, 0xfc, 0xb9, 0xb4, 0x6f, 0x9f, 0x9a, 0x16, 0x27, 0xe9, 0xc3, 0x9b, 0x18, 0x1d, 0x72, 0x9b, + 0x88, 0xcb, 0x4b, 0xb0, 0x8a, 0xf2, 0xe1, 0x1d, 0x7c, 0x04, 0x00, 0x00, 0xff, 0xff, 0x82, 0x79, + 0xb0, 0xc3, 0x04, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/types/genesis.pb.go b/x/ratelimit/types/genesis.pb.go index 1897f9e71a..1ad5fd7389 100644 --- a/x/ratelimit/types/genesis.pb.go +++ b/x/ratelimit/types/genesis.pb.go @@ -110,29 +110,29 @@ var fileDescriptor_9e224b293959881c = []byte{ // 402 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6b, 0xd4, 0x40, 0x18, 0x86, 0x37, 0xae, 0x16, 0x9c, 0x55, 0xd0, 0x41, 0x31, 0xae, 0x98, 0x86, 0xe0, 0x21, 0x97, - 0x26, 0xb4, 0xbd, 0x79, 0x33, 0x08, 0xbd, 0xd4, 0xb2, 0x24, 0x07, 0xc5, 0x4b, 0x98, 0x64, 0x3e, + 0x26, 0xb8, 0xbd, 0x79, 0x33, 0x08, 0xbd, 0xd4, 0xb2, 0x24, 0x07, 0xc5, 0x4b, 0x98, 0x64, 0x3e, 0xd2, 0xa1, 0x9b, 0x49, 0x9c, 0x6f, 0xd6, 0xda, 0x3f, 0x21, 0xfe, 0x25, 0x6f, 0x3d, 0xf6, 0xe8, - 0xa9, 0xc8, 0xee, 0x3f, 0xf0, 0x17, 0x48, 0x66, 0xc6, 0xba, 0x18, 0x7b, 0x1b, 0x78, 0xdf, 0xe7, - 0x79, 0x43, 0xf8, 0x48, 0x80, 0x5a, 0x09, 0x0e, 0xa9, 0x62, 0x1a, 0x96, 0xa2, 0x15, 0x3a, 0x6d, - 0x40, 0x02, 0x0a, 0x4c, 0x7a, 0xd5, 0xe9, 0x8e, 0x3e, 0xb2, 0x79, 0x72, 0x93, 0xcf, 0x9f, 0x34, - 0x5d, 0xd3, 0x99, 0x30, 0x1d, 0x5e, 0xb6, 0x37, 0x7f, 0x39, 0xf2, 0xf4, 0x4c, 0xb1, 0xd6, 0x69, - 0xe6, 0xe1, 0x28, 0xbe, 0x79, 0xd9, 0x46, 0xf4, 0x7d, 0x4a, 0x1e, 0x1c, 0xd9, 0xe9, 0x42, 0x33, - 0x0d, 0xf4, 0x88, 0xec, 0x58, 0x85, 0xef, 0x85, 0x5e, 0x3c, 0x3b, 0xf0, 0x93, 0x7f, 0x3f, 0x25, - 0x59, 0x98, 0x3c, 0x7b, 0x7a, 0x79, 0xbd, 0x3b, 0xf9, 0x75, 0xbd, 0xfb, 0xf0, 0x82, 0xb5, 0xcb, - 0xd7, 0x91, 0xa5, 0xa2, 0xdc, 0xe1, 0xf4, 0x03, 0x99, 0x0d, 0x48, 0x69, 0x18, 0xf4, 0xef, 0x84, - 0xd3, 0x78, 0x76, 0xf0, 0x62, 0x6c, 0xcb, 0x99, 0x86, 0xe3, 0xe1, 0x95, 0xcd, 0x9d, 0x90, 0x5a, - 0xe1, 0x16, 0x1d, 0xe5, 0x44, 0xfd, 0xa9, 0x21, 0xfd, 0xea, 0x91, 0xe7, 0xe7, 0xa7, 0x62, 0x10, - 0xa0, 0x06, 0x5e, 0x32, 0xce, 0x15, 0x20, 0x96, 0x3d, 0x13, 0x0a, 0xfd, 0xa9, 0x19, 0x8a, 0xc7, - 0x43, 0xef, 0xff, 0x22, 0x6f, 0x2c, 0xb1, 0x60, 0x42, 0x65, 0xb1, 0x5b, 0x0d, 0xed, 0xea, 0xad, - 0xe2, 0x28, 0x7f, 0x76, 0xfe, 0x5f, 0x03, 0xd2, 0x3d, 0x42, 0xab, 0x25, 0xab, 0xcf, 0x1c, 0xc6, - 0x41, 0x76, 0x2d, 0xfa, 0x77, 0xc3, 0x69, 0x7c, 0x3f, 0x7f, 0xbc, 0x95, 0xbc, 0x35, 0x01, 0x3d, - 0x21, 0xaf, 0x7a, 0x90, 0x5c, 0xc8, 0xa6, 0x44, 0x90, 0xbc, 0xec, 0x59, 0x7d, 0x06, 0xba, 0x44, - 0xf8, 0xb4, 0x02, 0x59, 0x43, 0x29, 0x57, 0x6d, 0x05, 0x0a, 0xfd, 0x7b, 0x46, 0x10, 0xba, 0x6e, - 0x01, 0x92, 0x2f, 0x4c, 0xb3, 0x70, 0xc5, 0x13, 0xdb, 0xcb, 0xde, 0x5d, 0xae, 0x03, 0xef, 0x6a, - 0x1d, 0x78, 0x3f, 0xd7, 0x81, 0xf7, 0x6d, 0x13, 0x4c, 0xae, 0x36, 0xc1, 0xe4, 0xc7, 0x26, 0x98, - 0x7c, 0x3c, 0x6c, 0x84, 0x3e, 0x5d, 0x55, 0x49, 0xdd, 0xb5, 0x69, 0x61, 0xfe, 0xc7, 0xde, 0x31, - 0xab, 0x30, 0x75, 0x67, 0xf1, 0x79, 0x7f, 0x3f, 0xfd, 0xb2, 0x75, 0x1c, 0xfa, 0xa2, 0x07, 0xac, - 0x76, 0xcc, 0x65, 0x1c, 0xfe, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x66, 0xb6, 0xcd, 0x91, 0xa4, 0x02, + 0xa9, 0xc8, 0xee, 0x3f, 0xf0, 0x17, 0x48, 0x66, 0xc6, 0xba, 0x18, 0xbd, 0x0d, 0xbc, 0xef, 0xf3, + 0xbc, 0x21, 0x7c, 0x24, 0x40, 0xad, 0x04, 0x87, 0x54, 0x31, 0x0d, 0x2b, 0xd1, 0x0a, 0x9d, 0x36, + 0x20, 0x01, 0x05, 0x26, 0xbd, 0xea, 0x74, 0x47, 0x1f, 0xd8, 0x3c, 0xb9, 0xc9, 0xe7, 0x8f, 0x9a, + 0xae, 0xe9, 0x4c, 0x98, 0x0e, 0x2f, 0xdb, 0x9b, 0x3f, 0x1f, 0x79, 0x7a, 0xa6, 0x58, 0xeb, 0x34, + 0xf3, 0x70, 0x14, 0xdf, 0xbc, 0x6c, 0x23, 0xfa, 0x36, 0x25, 0xf7, 0x8e, 0xec, 0x74, 0xa1, 0x99, + 0x06, 0x7a, 0x44, 0xf6, 0xac, 0xc2, 0xf7, 0x42, 0x2f, 0x9e, 0x2d, 0xfc, 0xe4, 0xef, 0x4f, 0x49, + 0x96, 0x26, 0xcf, 0x1e, 0x5f, 0x5e, 0xef, 0x4f, 0x7e, 0x5e, 0xef, 0xdf, 0xbf, 0x60, 0xed, 0xea, + 0x55, 0x64, 0xa9, 0x28, 0x77, 0x38, 0x7d, 0x4f, 0x66, 0x03, 0x52, 0x1a, 0x06, 0xfd, 0x5b, 0xe1, + 0x34, 0x9e, 0x2d, 0x9e, 0x8d, 0x6d, 0x39, 0xd3, 0x70, 0x3c, 0xbc, 0xb2, 0xb9, 0x13, 0x52, 0x2b, + 0xdc, 0xa1, 0xa3, 0x9c, 0xa8, 0xdf, 0x35, 0xa4, 0x5f, 0x3c, 0xf2, 0xf4, 0xfc, 0x54, 0x0c, 0x02, + 0xd4, 0xc0, 0x4b, 0xc6, 0xb9, 0x02, 0xc4, 0xb2, 0x67, 0x42, 0xa1, 0x3f, 0x35, 0x43, 0xf1, 0x78, + 0xe8, 0xdd, 0x1f, 0xe4, 0xb5, 0x25, 0x96, 0x4c, 0xa8, 0x2c, 0x76, 0xab, 0xa1, 0x5d, 0xfd, 0xaf, + 0x38, 0xca, 0x9f, 0x9c, 0xff, 0xd3, 0x80, 0xf4, 0x80, 0xd0, 0x6a, 0xc5, 0xea, 0x33, 0x87, 0x71, + 0x90, 0x5d, 0x8b, 0xfe, 0xed, 0x70, 0x1a, 0xdf, 0xcd, 0x1f, 0xee, 0x24, 0x6f, 0x4c, 0x40, 0x4f, + 0xc8, 0x8b, 0x1e, 0x24, 0x17, 0xb2, 0x29, 0x11, 0x24, 0x2f, 0x7b, 0x56, 0x9f, 0x81, 0x2e, 0x11, + 0x3e, 0xae, 0x41, 0xd6, 0x50, 0xca, 0x75, 0x5b, 0x81, 0x42, 0xff, 0x8e, 0x11, 0x84, 0xae, 0x5b, + 0x80, 0xe4, 0x4b, 0xd3, 0x2c, 0x5c, 0xf1, 0xc4, 0xf6, 0xb2, 0xb7, 0x97, 0x9b, 0xc0, 0xbb, 0xda, + 0x04, 0xde, 0x8f, 0x4d, 0xe0, 0x7d, 0xdd, 0x06, 0x93, 0xab, 0x6d, 0x30, 0xf9, 0xbe, 0x0d, 0x26, + 0x1f, 0x0e, 0x1b, 0xa1, 0x4f, 0xd7, 0x55, 0x52, 0x77, 0x6d, 0x5a, 0x98, 0xff, 0x71, 0x70, 0xcc, + 0x2a, 0x4c, 0xdd, 0x59, 0x7c, 0x7a, 0xb9, 0x48, 0x3f, 0xef, 0x1c, 0x87, 0xbe, 0xe8, 0x01, 0xab, + 0x3d, 0x73, 0x19, 0x87, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x9b, 0x59, 0x22, 0xa4, 0x02, 0x00, 0x00, } diff --git a/x/ratelimit/types/gov.pb.go b/x/ratelimit/types/gov.pb.go index cc88c2a90a..339bae1133 100644 --- a/x/ratelimit/types/gov.pb.go +++ b/x/ratelimit/types/gov.pb.go @@ -203,32 +203,32 @@ var fileDescriptor_3ad7ef7cb59a1c37 = []byte{ // 437 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x08, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, - 0x76, 0x97, 0xd2, 0x5b, 0x6f, 0xf6, 0x64, 0xa1, 0x42, 0x99, 0x22, 0x88, 0x97, 0x30, 0xd9, 0x79, - 0x24, 0x83, 0x3b, 0x33, 0xcb, 0xcc, 0x64, 0x49, 0xff, 0x81, 0x47, 0x8f, 0x22, 0x08, 0xf9, 0x2b, - 0x7a, 0xea, 0xb1, 0x47, 0xf1, 0x10, 0x24, 0xb9, 0x78, 0xf6, 0x17, 0xc8, 0xce, 0xa6, 0x12, 0xf0, - 0x24, 0x1e, 0x54, 0xf0, 0xb4, 0xfb, 0xbe, 0xef, 0x7b, 0x6f, 0xf8, 0x78, 0x8f, 0x0f, 0xef, 0x39, - 0x6f, 0xa5, 0x80, 0xcc, 0x72, 0x0f, 0x85, 0x54, 0xd2, 0x67, 0x23, 0x53, 0xa5, 0xa5, 0x35, 0xde, - 0x90, 0x9d, 0x86, 0x4b, 0x7f, 0x70, 0x7b, 0xdd, 0x91, 0x19, 0x99, 0x40, 0x66, 0xf5, 0x5f, 0xa3, - 0xeb, 0xbf, 0x6b, 0xe1, 0xee, 0x13, 0x21, 0x18, 0xf7, 0x70, 0x56, 0xcb, 0xce, 0xad, 0x29, 0x8d, - 0xe3, 0x05, 0xe9, 0xe2, 0xb6, 0x97, 0xbe, 0x00, 0x8a, 0x7a, 0x68, 0x7f, 0x9b, 0x35, 0x05, 0xe9, - 0xe1, 0x3b, 0x02, 0x5c, 0x6e, 0x65, 0xe9, 0xa5, 0xd1, 0xf4, 0x56, 0xe0, 0xd6, 0xa1, 0xba, 0x4f, - 0x80, 0x36, 0x8a, 0xb6, 0x9a, 0xbe, 0x50, 0x90, 0x07, 0x18, 0xe7, 0x63, 0xae, 0x35, 0x14, 0x03, - 0x29, 0xe8, 0x46, 0xa0, 0xb6, 0x57, 0xc8, 0xa9, 0x20, 0x2f, 0xf0, 0x8e, 0xe2, 0xd3, 0x41, 0x09, - 0x36, 0x07, 0xed, 0x07, 0x0e, 0xb4, 0xa0, 0xed, 0x5a, 0x74, 0x92, 0x5e, 0xcd, 0x93, 0xe8, 0xf3, - 0x3c, 0x79, 0x34, 0x92, 0x7e, 0x3c, 0x19, 0xa6, 0xb9, 0x51, 0x59, 0x6e, 0x9c, 0x32, 0x6e, 0xf5, - 0x39, 0x70, 0xe2, 0x55, 0xe6, 0x2f, 0x4b, 0x70, 0xe9, 0xa9, 0xf6, 0xac, 0xa3, 0xf8, 0xf4, 0xbc, - 0x19, 0x73, 0x01, 0xfa, 0xa7, 0xc9, 0x16, 0xf2, 0x8a, 0x6e, 0xfe, 0xee, 0x64, 0x06, 0x79, 0x45, - 0x1e, 0xe2, 0x8e, 0x98, 0x58, 0x5e, 0x9b, 0x1e, 0x8c, 0xcd, 0xc4, 0x3a, 0xba, 0xd5, 0x43, 0xfb, - 0x1b, 0xec, 0xde, 0x0d, 0xfa, 0xb4, 0x06, 0xc9, 0x63, 0xbc, 0x25, 0xa0, 0x34, 0x4e, 0x7a, 0x7a, - 0x3b, 0xbc, 0x4b, 0xbe, 0xcd, 0x93, 0xce, 0x25, 0x57, 0xc5, 0x71, 0x7f, 0x45, 0xf4, 0xd9, 0x8d, - 0xe4, 0xf8, 0xee, 0xeb, 0x59, 0x12, 0xbd, 0x9d, 0x25, 0xd1, 0xd7, 0x59, 0x82, 0xfa, 0xef, 0x5b, - 0x78, 0xf7, 0x79, 0x29, 0xb8, 0x87, 0xff, 0xfb, 0xf9, 0x1b, 0xf7, 0xf3, 0x11, 0xe1, 0x5d, 0x06, - 0xca, 0x54, 0x7f, 0x7a, 0x3f, 0x6b, 0x26, 0xda, 0xbf, 0x6a, 0xe2, 0x03, 0xc2, 0xf7, 0x19, 0x38, - 0xf0, 0xff, 0xae, 0x87, 0x93, 0x67, 0x57, 0x8b, 0x18, 0x5d, 0x2f, 0x62, 0xf4, 0x65, 0x11, 0xa3, - 0x37, 0xcb, 0x38, 0xba, 0x5e, 0xc6, 0xd1, 0xa7, 0x65, 0x1c, 0xbd, 0x3c, 0x5a, 0xbb, 0x9e, 0x8b, - 0x10, 0x89, 0x07, 0x67, 0x7c, 0xe8, 0xb2, 0x55, 0x74, 0x56, 0x87, 0x87, 0xd9, 0x74, 0x2d, 0x40, - 0xc3, 0x39, 0x0d, 0x37, 0x43, 0x36, 0x1e, 0x7d, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xd6, 0xcb, 0xea, - 0x23, 0x61, 0x05, 0x00, 0x00, + 0x76, 0x17, 0xed, 0xad, 0x37, 0x7b, 0xb2, 0x50, 0xa1, 0x4c, 0x11, 0xc4, 0x4b, 0x98, 0xec, 0x3c, + 0x92, 0xc1, 0x9d, 0x99, 0x65, 0x66, 0xb2, 0xa4, 0xff, 0xc0, 0xa3, 0x47, 0x11, 0x84, 0xfc, 0x15, + 0x3d, 0xf5, 0xd8, 0xa3, 0x78, 0x08, 0x92, 0x5c, 0x3c, 0xfb, 0x0b, 0x64, 0x67, 0x53, 0x09, 0x78, + 0x12, 0x0f, 0x2a, 0x78, 0xda, 0x7d, 0xdf, 0xf7, 0xbd, 0x37, 0x7c, 0xbc, 0xc7, 0x87, 0xf7, 0x9c, + 0xb7, 0x52, 0x40, 0x66, 0xb9, 0x87, 0x42, 0x2a, 0xe9, 0xb3, 0x91, 0xa9, 0xd2, 0xd2, 0x1a, 0x6f, + 0xc8, 0x4e, 0xc3, 0xa5, 0x3f, 0xb8, 0xbd, 0xee, 0xc8, 0x8c, 0x4c, 0x20, 0xb3, 0xfa, 0xaf, 0xd1, + 0xf5, 0xdf, 0xb5, 0x70, 0xf7, 0x89, 0x10, 0x8c, 0x7b, 0x38, 0xad, 0x65, 0x67, 0xd6, 0x94, 0xc6, + 0xf1, 0x82, 0x74, 0x71, 0xdb, 0x4b, 0x5f, 0x00, 0x45, 0x3d, 0xb4, 0xbf, 0xcd, 0x9a, 0x82, 0xf4, + 0xf0, 0x2d, 0x01, 0x2e, 0xb7, 0xb2, 0xf4, 0xd2, 0x68, 0x7a, 0x23, 0x70, 0xeb, 0x50, 0xdd, 0x27, + 0x40, 0x1b, 0x45, 0x5b, 0x4d, 0x5f, 0x28, 0xc8, 0x3d, 0x8c, 0xf3, 0x31, 0xd7, 0x1a, 0x8a, 0x81, + 0x14, 0x74, 0x23, 0x50, 0xdb, 0x2b, 0xe4, 0x44, 0x90, 0x17, 0x78, 0x47, 0xf1, 0xe9, 0xa0, 0x04, + 0x9b, 0x83, 0xf6, 0x03, 0x07, 0x5a, 0xd0, 0x76, 0x2d, 0x3a, 0x4e, 0x2f, 0xe7, 0x49, 0xf4, 0x79, + 0x9e, 0x3c, 0x18, 0x49, 0x3f, 0x9e, 0x0c, 0xd3, 0xdc, 0xa8, 0x2c, 0x37, 0x4e, 0x19, 0xb7, 0xfa, + 0x1c, 0x38, 0xf1, 0x2a, 0xf3, 0x17, 0x25, 0xb8, 0xf4, 0x44, 0x7b, 0xd6, 0x51, 0x7c, 0x7a, 0xd6, + 0x8c, 0x39, 0x07, 0xfd, 0xd3, 0x64, 0x0b, 0x79, 0x45, 0x37, 0x7f, 0x77, 0x32, 0x83, 0xbc, 0x22, + 0xf7, 0x71, 0x47, 0x4c, 0x2c, 0xaf, 0x4d, 0x0f, 0xc6, 0x66, 0x62, 0x1d, 0xdd, 0xea, 0xa1, 0xfd, + 0x0d, 0x76, 0xe7, 0x1a, 0x7d, 0x5a, 0x83, 0xe4, 0x21, 0xde, 0x12, 0x50, 0x1a, 0x27, 0x3d, 0xbd, + 0x19, 0xde, 0x25, 0xdf, 0xe6, 0x49, 0xe7, 0x82, 0xab, 0xe2, 0xa8, 0xbf, 0x22, 0xfa, 0xec, 0x5a, + 0x72, 0x74, 0xfb, 0xf5, 0x2c, 0x89, 0xde, 0xce, 0x92, 0xe8, 0xeb, 0x2c, 0x41, 0xfd, 0xf7, 0x2d, + 0xbc, 0xfb, 0xbc, 0x14, 0xdc, 0xc3, 0xff, 0xfd, 0xfc, 0x8d, 0xfb, 0xf9, 0x88, 0xf0, 0x2e, 0x03, + 0x65, 0xaa, 0x3f, 0xbd, 0x9f, 0x35, 0x13, 0xed, 0x5f, 0x35, 0xf1, 0x01, 0xe1, 0xbb, 0x0c, 0x1c, + 0xf8, 0x7f, 0xd7, 0xc3, 0xf1, 0xb3, 0xcb, 0x45, 0x8c, 0xae, 0x16, 0x31, 0xfa, 0xb2, 0x88, 0xd1, + 0x9b, 0x65, 0x1c, 0x5d, 0x2d, 0xe3, 0xe8, 0xd3, 0x32, 0x8e, 0x5e, 0x1e, 0xae, 0x5d, 0xcf, 0x79, + 0x88, 0xc4, 0x83, 0x53, 0x3e, 0x74, 0xd9, 0x2a, 0x3a, 0xab, 0x47, 0x8f, 0xb3, 0xe9, 0x5a, 0x80, + 0x86, 0x73, 0x1a, 0x6e, 0x86, 0x6c, 0x3c, 0xfc, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x15, 0xe6, 0x7e, + 0x90, 0x61, 0x05, 0x00, 0x00, } func (this *AddRateLimitProposal) Equal(that interface{}) bool { diff --git a/x/ratelimit/types/params.pb.go b/x/ratelimit/types/params.pb.go index 90202fe991..b0d3980c23 100644 --- a/x/ratelimit/types/params.pb.go +++ b/x/ratelimit/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_7af4964ecd08f136 = []byte{ 0x95, 0x38, 0xb8, 0xd8, 0x02, 0xc0, 0x2a, 0x9c, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, - 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x43, 0xfd, 0x0a, + 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x23, 0xfd, 0x0a, 0x24, 0x1b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x36, 0x1a, 0x03, 0x02, 0x00, 0x00, - 0xff, 0xff, 0xf4, 0xe5, 0x54, 0x39, 0x92, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x37, 0xc8, 0xc0, 0x8a, 0x92, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/query.pb.go b/x/ratelimit/types/query.pb.go index 6fbbab788e..e309035b4d 100644 --- a/x/ratelimit/types/query.pb.go +++ b/x/ratelimit/types/query.pb.go @@ -601,8 +601,8 @@ var fileDescriptor_97a373ef8fcef03b = []byte{ 0xa3, 0x0c, 0x78, 0x5c, 0xb4, 0x5b, 0x49, 0xd3, 0x92, 0xdd, 0xa3, 0xb7, 0x1d, 0x8d, 0x0a, 0x09, 0x44, 0x4a, 0x8f, 0x0f, 0x8e, 0x32, 0xe8, 0xf0, 0x28, 0x83, 0x7e, 0x1f, 0x65, 0xd0, 0x87, 0x76, 0x26, 0x75, 0xd8, 0xce, 0xa4, 0x7e, 0xb6, 0x33, 0xa9, 0x17, 0xc5, 0x3a, 0xf3, 0x1a, 0xbb, 0xd5, - 0x7c, 0xcd, 0xd9, 0x8e, 0x12, 0x7e, 0xb3, 0xbc, 0x6c, 0xbc, 0xfb, 0x47, 0xde, 0x6b, 0x35, 0x29, - 0xaf, 0x8e, 0x89, 0xbf, 0x09, 0xc5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xef, 0xcd, 0x51, 0xc9, + 0x7c, 0xcd, 0xd9, 0x8e, 0x12, 0x7e, 0xb3, 0x5c, 0x30, 0xde, 0xfd, 0x23, 0xef, 0xb5, 0x9a, 0x94, + 0x57, 0xc7, 0xc4, 0xdf, 0x84, 0xe2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2c, 0xe0, 0xc5, 0x7a, 0xae, 0x08, 0x00, 0x00, } diff --git a/x/ratelimit/types/ratelimit.pb.go b/x/ratelimit/types/ratelimit.pb.go index 1e1054878a..b240b7d5cd 100644 --- a/x/ratelimit/types/ratelimit.pb.go +++ b/x/ratelimit/types/ratelimit.pb.go @@ -310,40 +310,40 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/ratelimit.proto", fileDescriptor_a3e00ee2c967d747) } var fileDescriptor_a3e00ee2c967d747 = []byte{ - // 520 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcd, 0x6e, 0xd3, 0x4c, - 0x14, 0xb5, 0xbf, 0x26, 0xf9, 0xc8, 0x84, 0xb6, 0xd1, 0xa8, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, - 0xa8, 0xaa, 0x14, 0x5b, 0x6d, 0x57, 0x88, 0x55, 0x7f, 0x52, 0xb5, 0x22, 0xa0, 0xe0, 0xa0, 0x82, - 0xd8, 0x44, 0x13, 0xcf, 0x25, 0x1e, 0x35, 0xf6, 0x84, 0x99, 0xb1, 0x1b, 0xde, 0x80, 0x25, 0xe2, - 0x15, 0x78, 0x99, 0x2e, 0xbb, 0x44, 0x2c, 0x2a, 0x94, 0xac, 0x79, 0x07, 0x34, 0x63, 0xa7, 0x44, - 0x45, 0x2c, 0x28, 0x2b, 0xcf, 0x3d, 0xf7, 0xcc, 0x91, 0xcf, 0x9d, 0x73, 0x51, 0x53, 0x2a, 0xc1, - 0x28, 0x78, 0x82, 0x28, 0x18, 0xb3, 0x88, 0xa9, 0x5f, 0x27, 0x77, 0x22, 0xb8, 0xe2, 0xb8, 0x9a, - 0x31, 0xdc, 0x1b, 0xbc, 0xb1, 0x31, 0xe2, 0x23, 0x6e, 0x9a, 0x9e, 0x3e, 0x65, 0xbc, 0xd6, 0x53, - 0x54, 0xe8, 0x11, 0x15, 0xe2, 0x0d, 0x54, 0xa4, 0x10, 0xf3, 0xa8, 0x6e, 0x37, 0xed, 0xad, 0xb2, - 0x9f, 0x15, 0xf8, 0x21, 0x42, 0x41, 0x48, 0xe2, 0x18, 0xc6, 0x03, 0x46, 0xeb, 0xff, 0x99, 0x56, - 0x39, 0x47, 0x4e, 0x69, 0x6b, 0x66, 0xa3, 0xe2, 0xcb, 0x84, 0x2b, 0x82, 0xdf, 0xa0, 0x6a, 0x44, - 0xa6, 0x83, 0x09, 0x88, 0x00, 0x62, 0x35, 0x90, 0x10, 0xd3, 0x4c, 0xe9, 0xc0, 0xbd, 0xbc, 0xde, - 0xb4, 0xbe, 0x5d, 0x6f, 0x3e, 0x1e, 0x31, 0x15, 0x26, 0x43, 0x37, 0xe0, 0x91, 0x17, 0x70, 0x19, - 0x71, 0x99, 0x7f, 0xda, 0x92, 0x9e, 0x7b, 0xea, 0xc3, 0x04, 0xa4, 0x7b, 0x1a, 0x2b, 0x7f, 0x2d, - 0x22, 0xd3, 0x5e, 0x26, 0xd3, 0x87, 0x98, 0xde, 0x56, 0x16, 0x10, 0xa4, 0xd9, 0x8f, 0xfc, 0x8b, - 0xb2, 0x0f, 0x41, 0x8a, 0x1f, 0xa1, 0x35, 0x9a, 0x08, 0xa2, 0x18, 0x8f, 0x07, 0x21, 0x4f, 0x84, - 0xac, 0xaf, 0x34, 0xed, 0xad, 0x82, 0xbf, 0xba, 0x40, 0x4f, 0x34, 0xd8, 0xfa, 0x61, 0xa3, 0xc2, - 0xf1, 0x98, 0x5f, 0xe0, 0x63, 0x54, 0x62, 0xf1, 0xbb, 0x31, 0xbf, 0xb8, 0xa3, 0xb3, 0xfc, 0x36, - 0x3e, 0x41, 0xff, 0xf3, 0x44, 0x19, 0xa1, 0xbb, 0x19, 0x59, 0x5c, 0xc7, 0x7d, 0xb4, 0xba, 0x78, - 0x9e, 0x94, 0x8c, 0x13, 0x30, 0x06, 0xfe, 0x5e, 0xef, 0x7e, 0x2e, 0x72, 0xa6, 0x35, 0x5a, 0x9f, - 0x6d, 0x54, 0xf6, 0x89, 0x82, 0xae, 0x4e, 0x0d, 0xde, 0x46, 0x85, 0x09, 0x51, 0xa1, 0xb1, 0x5c, - 0xd9, 0xad, 0xb9, 0xb7, 0x63, 0xe5, 0xea, 0xf4, 0xf8, 0x86, 0x83, 0xdb, 0xa8, 0xf8, 0x5e, 0xa7, - 0xc1, 0xd8, 0xaa, 0xec, 0x3e, 0xf8, 0x9d, 0x6c, 0xc2, 0xe2, 0x67, 0x2c, 0x2d, 0x6d, 0x86, 0xb0, - 0xf2, 0x27, 0x69, 0x3d, 0x75, 0xdf, 0x70, 0x5a, 0x5d, 0x54, 0x7b, 0x1d, 0x32, 0xdd, 0x90, 0x0a, - 0xe8, 0x3e, 0xa5, 0x02, 0xa4, 0xec, 0x11, 0x26, 0x70, 0x0d, 0x95, 0x74, 0xda, 0x40, 0xe4, 0xc9, - 0xcd, 0x2b, 0xdc, 0x40, 0xf7, 0x04, 0x04, 0xc0, 0x52, 0x10, 0x79, 0x70, 0x6f, 0xea, 0xed, 0x27, - 0x68, 0xbd, 0x47, 0x82, 0x73, 0x50, 0x47, 0x4c, 0x40, 0xa0, 0x9f, 0x1a, 0xaf, 0xa3, 0x4a, 0x6f, - 0xff, 0xf0, 0x59, 0xe7, 0xd5, 0xa0, 0xdf, 0x79, 0x71, 0x54, 0xb5, 0x96, 0x00, 0xbf, 0x73, 0x78, - 0x56, 0xb5, 0x1b, 0x85, 0x8f, 0x5f, 0x1c, 0xeb, 0xe0, 0xf9, 0xe5, 0xcc, 0xb1, 0xaf, 0x66, 0x8e, - 0xfd, 0x7d, 0xe6, 0xd8, 0x9f, 0xe6, 0x8e, 0x75, 0x35, 0x77, 0xac, 0xaf, 0x73, 0xc7, 0x7a, 0xbb, - 0xb7, 0x34, 0xed, 0xbe, 0xb1, 0xd2, 0xee, 0x92, 0xa1, 0xf4, 0xf2, 0x55, 0x4d, 0x77, 0x76, 0xbc, - 0xe9, 0xd2, 0xc2, 0x9a, 0xf1, 0x0f, 0x4b, 0x66, 0x0b, 0xf7, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, - 0x2f, 0x7e, 0x63, 0xbf, 0xd1, 0x03, 0x00, 0x00, + // 519 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0xb5, 0x69, 0x1a, 0xc8, 0x86, 0xb6, 0xd1, 0xaa, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, 0xa8, + 0xaa, 0x14, 0x5b, 0xa4, 0x27, 0xc4, 0xa9, 0x1f, 0xa9, 0x5a, 0x11, 0x50, 0x70, 0x50, 0x41, 0x5c, + 0xa2, 0x8d, 0x77, 0x88, 0x57, 0x8d, 0xbd, 0x61, 0x77, 0xed, 0x86, 0x7f, 0xc0, 0x11, 0xf1, 0x17, + 0xf8, 0x33, 0x3d, 0xf6, 0x88, 0x38, 0x54, 0x28, 0x39, 0xf3, 0x1f, 0xd0, 0xae, 0x9d, 0x12, 0x15, + 0x71, 0xa0, 0x9c, 0xbc, 0xf3, 0xe6, 0xed, 0x93, 0xdf, 0xec, 0x1b, 0xd4, 0x90, 0x4a, 0x30, 0x0a, + 0x9e, 0x20, 0x0a, 0xc6, 0x2c, 0x62, 0xea, 0xf7, 0xc9, 0x9d, 0x08, 0xae, 0x38, 0xae, 0x64, 0x0c, + 0xf7, 0x1a, 0xaf, 0x6f, 0x8e, 0xf8, 0x88, 0x9b, 0xa6, 0xa7, 0x4f, 0x19, 0xaf, 0xf9, 0x0c, 0x15, + 0x7a, 0x44, 0x85, 0x78, 0x13, 0xad, 0x52, 0x88, 0x79, 0x54, 0xb3, 0x1b, 0xf6, 0x76, 0xc9, 0xcf, + 0x0a, 0xfc, 0x10, 0xa1, 0x20, 0x24, 0x71, 0x0c, 0xe3, 0x01, 0xa3, 0xb5, 0x3b, 0xa6, 0x55, 0xca, + 0x91, 0x13, 0xda, 0x9c, 0xd9, 0x68, 0xf5, 0x55, 0xc2, 0x15, 0xc1, 0x6f, 0x51, 0x25, 0x22, 0xd3, + 0xc1, 0x04, 0x44, 0x00, 0xb1, 0x1a, 0x48, 0x88, 0x69, 0xa6, 0xb4, 0xef, 0x5e, 0x5c, 0x6d, 0x59, + 0xdf, 0xaf, 0xb6, 0x1e, 0x8f, 0x98, 0x0a, 0x93, 0xa1, 0x1b, 0xf0, 0xc8, 0x0b, 0xb8, 0x8c, 0xb8, + 0xcc, 0x3f, 0x2d, 0x49, 0xcf, 0x3c, 0xf5, 0x71, 0x02, 0xd2, 0x3d, 0x89, 0x95, 0xbf, 0x1e, 0x91, + 0x69, 0x2f, 0x93, 0xe9, 0x43, 0x4c, 0x6f, 0x2a, 0x0b, 0x08, 0xd2, 0xec, 0x47, 0xfe, 0x47, 0xd9, + 0x87, 0x20, 0xc5, 0x8f, 0xd0, 0x3a, 0x4d, 0x04, 0x51, 0x8c, 0xc7, 0x83, 0x90, 0x27, 0x42, 0xd6, + 0x56, 0x1a, 0xf6, 0x76, 0xc1, 0x5f, 0x5b, 0xa0, 0xc7, 0x1a, 0x6c, 0xfe, 0xb4, 0x51, 0xe1, 0x68, + 0xcc, 0xcf, 0xf1, 0x11, 0x2a, 0xb2, 0xf8, 0xfd, 0x98, 0x9f, 0xdf, 0xd2, 0x59, 0x7e, 0x1b, 0x1f, + 0xa3, 0xbb, 0x3c, 0x51, 0x46, 0xe8, 0x76, 0x46, 0x16, 0xd7, 0x71, 0x1f, 0xad, 0x2d, 0x9e, 0x27, + 0x25, 0xe3, 0x04, 0x8c, 0x81, 0x7f, 0xd7, 0xbb, 0x9f, 0x8b, 0x9c, 0x6a, 0x8d, 0xe6, 0x17, 0x1b, + 0x95, 0x7c, 0xa2, 0xa0, 0xab, 0x53, 0x83, 0x77, 0x50, 0x61, 0x42, 0x54, 0x68, 0x2c, 0x97, 0xdb, + 0x55, 0xf7, 0x66, 0xac, 0x5c, 0x9d, 0x1e, 0xdf, 0x70, 0x70, 0x0b, 0xad, 0x7e, 0xd0, 0x69, 0x30, + 0xb6, 0xca, 0xed, 0x07, 0x7f, 0x92, 0x4d, 0x58, 0xfc, 0x8c, 0xa5, 0xa5, 0xcd, 0x10, 0x56, 0xfe, + 0x26, 0xad, 0xa7, 0xee, 0x1b, 0x4e, 0xb3, 0x8b, 0xaa, 0x6f, 0x42, 0xa6, 0x1b, 0x52, 0x01, 0xdd, + 0xa3, 0x54, 0x80, 0x94, 0x3d, 0xc2, 0x04, 0xae, 0xa2, 0xa2, 0x4e, 0x1b, 0x88, 0x3c, 0xb9, 0x79, + 0x85, 0xeb, 0xe8, 0x9e, 0x80, 0x00, 0x58, 0x0a, 0x22, 0x0f, 0xee, 0x75, 0xbd, 0xf3, 0x14, 0x6d, + 0xf4, 0x48, 0x70, 0x06, 0xea, 0x90, 0x09, 0x08, 0xf4, 0x53, 0xe3, 0x0d, 0x54, 0xee, 0xed, 0x1d, + 0x3c, 0xef, 0xbc, 0x1e, 0xf4, 0x3b, 0x2f, 0x0f, 0x2b, 0xd6, 0x12, 0xe0, 0x77, 0x0e, 0x4e, 0x2b, + 0x76, 0xbd, 0xf0, 0xe9, 0xab, 0x63, 0xed, 0xbf, 0xb8, 0x98, 0x39, 0xf6, 0xe5, 0xcc, 0xb1, 0x7f, + 0xcc, 0x1c, 0xfb, 0xf3, 0xdc, 0xb1, 0x2e, 0xe7, 0x8e, 0xf5, 0x6d, 0xee, 0x58, 0xef, 0x76, 0x97, + 0xa6, 0xdd, 0x37, 0x56, 0x5a, 0x5d, 0x32, 0x94, 0x5e, 0xbe, 0xaa, 0xe9, 0x93, 0xb6, 0x37, 0x5d, + 0x5a, 0x58, 0x33, 0xfe, 0x61, 0xd1, 0x6c, 0xe1, 0xee, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xec, + 0x53, 0xf7, 0x0c, 0xd1, 0x03, 0x00, 0x00, } func (m *Path) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index 33fd585ba8..979f6f5881 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -84,8 +84,8 @@ var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ 0x27, 0xef, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x5b, 0xaa, 0xeb, 0x93, 0x98, 0x54, - 0xac, 0x0f, 0x75, 0x60, 0x99, 0xa1, 0xa1, 0x7e, 0x05, 0xdc, 0x99, 0x25, 0x95, 0x05, 0xa9, 0xc5, - 0x49, 0x6c, 0x60, 0x37, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd4, 0xfe, 0x60, 0x0f, 0xc5, + 0xac, 0x0f, 0x75, 0x60, 0x99, 0xa1, 0x91, 0x7e, 0x05, 0xdc, 0x99, 0x25, 0x95, 0x05, 0xa9, 0xc5, + 0x49, 0x6c, 0x60, 0x37, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x87, 0x48, 0x8d, 0x3a, 0xc5, 0x00, 0x00, 0x00, } diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index 97623750cd..ceda128890 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -690,66 +690,66 @@ func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_ var fileDescriptor_98cfd0253c8b6797 = []byte{ // 979 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x3d, 0x6f, 0xdb, 0x46, - 0x18, 0x16, 0x45, 0x8a, 0x92, 0x5f, 0xdb, 0x8a, 0x7c, 0x56, 0x6c, 0xda, 0x49, 0x64, 0x85, 0x68, - 0x0b, 0x2d, 0x91, 0x6a, 0xb7, 0xe8, 0x50, 0x14, 0x68, 0x25, 0x4b, 0xb1, 0x99, 0x2a, 0xb2, 0x7a, + 0x18, 0x16, 0x45, 0x9a, 0x92, 0x5f, 0xdb, 0x8a, 0x7c, 0x56, 0x6c, 0xda, 0x49, 0x64, 0x85, 0x68, + 0x0b, 0x2d, 0x91, 0x6a, 0xb5, 0xe8, 0x50, 0x14, 0x68, 0x25, 0x4b, 0xb1, 0x99, 0x2a, 0xb2, 0x7a, 0x92, 0x9a, 0x22, 0x43, 0x09, 0x4a, 0x3c, 0x48, 0x84, 0x43, 0x9e, 0xc0, 0x3b, 0x19, 0x6d, 0x97, 0xfe, 0x85, 0x0e, 0x1d, 0x3a, 0x76, 0x29, 0xfa, 0x57, 0x32, 0x66, 0x2c, 0x3a, 0x04, 0x85, 0x3d, 0xf4, 0x47, 0x74, 0x29, 0x78, 0xa4, 0x69, 0xea, 0x23, 0x09, 0x60, 0x64, 0x92, 0xf8, 0x7e, 0xdf, - 0xfb, 0x3c, 0x7c, 0x8e, 0x70, 0x9f, 0x71, 0xdf, 0xb1, 0x49, 0xcd, 0x27, 0x23, 0xea, 0xdb, 0xac, - 0x36, 0x26, 0x1e, 0x61, 0x0e, 0xab, 0x4e, 0x7d, 0xca, 0x29, 0xca, 0x87, 0xde, 0x6a, 0xe4, 0xdd, - 0x2f, 0x8e, 0xe9, 0x98, 0x0a, 0x57, 0x2d, 0xf8, 0x17, 0x46, 0xe9, 0x7f, 0xa6, 0xa1, 0x38, 0x60, - 0xc4, 0xc7, 0xc4, 0x26, 0xee, 0x94, 0x3b, 0xd4, 0xc3, 0x22, 0x1e, 0xe5, 0x21, 0xed, 0xd8, 0x9a, - 0x54, 0x96, 0x2a, 0x6b, 0x38, 0xed, 0xd8, 0x68, 0x07, 0x54, 0x46, 0x3c, 0x9b, 0xf8, 0x5a, 0x5a, - 0xd8, 0xa2, 0x27, 0xb4, 0x0f, 0x39, 0x9f, 0x8c, 0x88, 0x73, 0x41, 0x7c, 0x4d, 0x16, 0x9e, 0xf8, - 0x19, 0x3d, 0x06, 0xd5, 0x72, 0xe9, 0xcc, 0xe3, 0x9a, 0x12, 0x78, 0x1a, 0xd5, 0x97, 0xaf, 0x0f, - 0x52, 0x7f, 0xbf, 0x3e, 0xf8, 0x68, 0xec, 0xf0, 0xc9, 0x6c, 0x58, 0x1d, 0x51, 0xb7, 0x36, 0xa2, - 0xcc, 0xa5, 0x2c, 0xfa, 0x79, 0xc4, 0xec, 0xf3, 0x1a, 0xff, 0x71, 0x4a, 0x58, 0xd5, 0xf0, 0x38, - 0x8e, 0xb2, 0x51, 0x11, 0x32, 0x36, 0xf1, 0xa8, 0xab, 0x65, 0x44, 0x83, 0xf0, 0x01, 0x95, 0x61, - 0x63, 0x42, 0x19, 0x37, 0x7f, 0xa2, 0x1e, 0x31, 0x1d, 0x5b, 0x53, 0x85, 0x13, 0x02, 0xdb, 0x73, - 0xea, 0x11, 0xc3, 0x46, 0x0f, 0x61, 0x83, 0x4c, 0xe9, 0x68, 0x62, 0x7a, 0x33, 0x77, 0x48, 0x7c, - 0x2d, 0x5b, 0x96, 0x2a, 0x0a, 0x5e, 0x17, 0xb6, 0x8e, 0x30, 0xa1, 0x0a, 0x14, 0x46, 0x2f, 0x2c, - 0xc7, 0x35, 0x1d, 0x66, 0x4e, 0x89, 0x67, 0x3b, 0xde, 0x58, 0xcb, 0x95, 0xa5, 0x4a, 0x0e, 0xe7, - 0x85, 0xdd, 0x60, 0xdd, 0xd0, 0xaa, 0xe7, 0x41, 0xed, 0x5a, 0xbe, 0xe5, 0xb2, 0xcf, 0x95, 0xdf, - 0x7e, 0x3f, 0x48, 0xe9, 0x5d, 0xd8, 0x0a, 0x57, 0xc5, 0xba, 0xd6, 0xe8, 0x9c, 0xf0, 0xa6, 0xc5, - 0x2d, 0x74, 0x08, 0x59, 0x8f, 0x9a, 0xb6, 0xc5, 0x2d, 0xb1, 0xba, 0xf5, 0xa3, 0x9d, 0xea, 0x3c, - 0x0c, 0xd5, 0x0e, 0x0d, 0x02, 0x4f, 0x53, 0x58, 0xf5, 0xc4, 0xbf, 0x46, 0x0e, 0xd4, 0xa9, 0x28, - 0xa0, 0xe7, 0x40, 0x0d, 0xbd, 0xfa, 0xbf, 0x32, 0x6c, 0x36, 0xc9, 0x94, 0x32, 0x87, 0x2f, 0xc1, - 0xa1, 0x08, 0x38, 0x6e, 0x56, 0x9b, 0x7e, 0x3f, 0xab, 0x95, 0xdf, 0xb6, 0x5a, 0x65, 0x69, 0xb5, - 0x5f, 0x80, 0xca, 0xb8, 0xc5, 0x67, 0x4c, 0xac, 0x3d, 0x7f, 0xf4, 0xc1, 0xe2, 0x39, 0xe7, 0xc6, - 0xaf, 0xf6, 0x44, 0x2c, 0x8e, 0x72, 0xd0, 0xc7, 0x50, 0xb4, 0x43, 0xbf, 0xb9, 0x02, 0x20, 0x14, + 0xfb, 0x3c, 0x7c, 0x8e, 0x70, 0x9f, 0x71, 0xdf, 0xb1, 0x49, 0xd5, 0x27, 0x23, 0xea, 0xdb, 0xac, + 0x3a, 0x26, 0x1e, 0x61, 0x0e, 0xab, 0x4c, 0x7d, 0xca, 0x29, 0xca, 0x85, 0xde, 0x4a, 0xe4, 0x3d, + 0x28, 0x8c, 0xe9, 0x98, 0x0a, 0x57, 0x35, 0xf8, 0x17, 0x46, 0xe9, 0x7f, 0xa6, 0xa1, 0x30, 0x60, + 0xc4, 0xc7, 0xc4, 0x26, 0xee, 0x94, 0x3b, 0xd4, 0xc3, 0x22, 0x1e, 0xe5, 0x20, 0xed, 0xd8, 0x9a, + 0x54, 0x92, 0xca, 0xeb, 0x38, 0xed, 0xd8, 0x68, 0x17, 0x54, 0x46, 0x3c, 0x9b, 0xf8, 0x5a, 0x5a, + 0xd8, 0xa2, 0x27, 0x74, 0x00, 0x59, 0x9f, 0x8c, 0x88, 0x73, 0x41, 0x7c, 0x4d, 0x16, 0x9e, 0xf8, + 0x19, 0x3d, 0x06, 0xd5, 0x72, 0xe9, 0xcc, 0xe3, 0x9a, 0x12, 0x78, 0x1a, 0x95, 0x97, 0xaf, 0x0f, + 0x53, 0x7f, 0xbf, 0x3e, 0xfc, 0x68, 0xec, 0xf0, 0xc9, 0x6c, 0x58, 0x19, 0x51, 0xb7, 0x3a, 0xa2, + 0xcc, 0xa5, 0x2c, 0xfa, 0x79, 0xc4, 0xec, 0xf3, 0x2a, 0xff, 0x71, 0x4a, 0x58, 0xc5, 0xf0, 0x38, + 0x8e, 0xb2, 0x51, 0x01, 0xd6, 0x6c, 0xe2, 0x51, 0x57, 0x5b, 0x13, 0x0d, 0xc2, 0x07, 0x54, 0x82, + 0xcd, 0x09, 0x65, 0xdc, 0xfc, 0x89, 0x7a, 0xc4, 0x74, 0x6c, 0x4d, 0x15, 0x4e, 0x08, 0x6c, 0xcf, + 0xa9, 0x47, 0x0c, 0x1b, 0x3d, 0x84, 0x4d, 0x32, 0xa5, 0xa3, 0x89, 0xe9, 0xcd, 0xdc, 0x21, 0xf1, + 0xb5, 0x4c, 0x49, 0x2a, 0x2b, 0x78, 0x43, 0xd8, 0x3a, 0xc2, 0x84, 0xca, 0x90, 0x1f, 0xbd, 0xb0, + 0x1c, 0xd7, 0x74, 0x98, 0x39, 0x25, 0x9e, 0xed, 0x78, 0x63, 0x2d, 0x5b, 0x92, 0xca, 0x59, 0x9c, + 0x13, 0x76, 0x83, 0x75, 0x43, 0xab, 0x9e, 0x03, 0xb5, 0x6b, 0xf9, 0x96, 0xcb, 0x3e, 0x57, 0x7e, + 0xfb, 0xfd, 0x30, 0xa5, 0x77, 0x61, 0x3b, 0x5c, 0x15, 0xeb, 0x5a, 0xa3, 0x73, 0xc2, 0x9b, 0x16, + 0xb7, 0xd0, 0x11, 0x64, 0x3c, 0x6a, 0xda, 0x16, 0xb7, 0xc4, 0xea, 0x36, 0x6a, 0xbb, 0x95, 0x79, + 0x18, 0x2a, 0x1d, 0x1a, 0x04, 0x9e, 0xa6, 0xb0, 0xea, 0x89, 0x7f, 0x8d, 0x2c, 0xa8, 0x53, 0x51, + 0x40, 0xcf, 0x82, 0x1a, 0x7a, 0xf5, 0x7f, 0x65, 0xd8, 0x6a, 0x92, 0x29, 0x65, 0x0e, 0x5f, 0x82, + 0x43, 0x11, 0x70, 0xdc, 0xac, 0x36, 0xfd, 0x7e, 0x56, 0x2b, 0xbf, 0x6d, 0xb5, 0xca, 0xd2, 0x6a, + 0xbf, 0x00, 0x95, 0x71, 0x8b, 0xcf, 0x98, 0x58, 0x7b, 0xae, 0xf6, 0xc1, 0xe2, 0x39, 0xe7, 0xc6, + 0xaf, 0xf4, 0x44, 0x2c, 0x8e, 0x72, 0xd0, 0xc7, 0x50, 0xb0, 0x43, 0xbf, 0xb9, 0x02, 0x20, 0x14, 0xf9, 0x5a, 0x09, 0x9c, 0x82, 0x7e, 0x74, 0xe6, 0x8f, 0x88, 0x40, 0xe7, 0xdd, 0xfd, 0x44, 0x2c, - 0x8e, 0x72, 0xf4, 0x09, 0xa8, 0xe1, 0x04, 0x08, 0x41, 0xbe, 0x8f, 0xeb, 0x9d, 0xde, 0xe3, 0x16, - 0x36, 0xbf, 0x19, 0xb4, 0x06, 0xad, 0x42, 0x0a, 0x69, 0x50, 0x8c, 0x6d, 0x46, 0xc7, 0xec, 0xe2, - 0xb3, 0x13, 0xdc, 0xea, 0xf5, 0x0a, 0x69, 0x54, 0x84, 0x42, 0xb3, 0xd5, 0x6e, 0x9d, 0xd4, 0xfb, - 0xc6, 0x59, 0x27, 0x8a, 0x97, 0xd0, 0x3e, 0xec, 0x24, 0xac, 0xc9, 0x0c, 0x59, 0xaf, 0x80, 0x1a, - 0xf6, 0x46, 0x00, 0x6a, 0xaf, 0x8f, 0x8d, 0x66, 0xd0, 0x01, 0x41, 0xfe, 0x99, 0xd1, 0x3f, 0x6d, - 0xe2, 0xfa, 0xb3, 0x7a, 0xdb, 0x34, 0x8e, 0xeb, 0x05, 0xe9, 0x89, 0x92, 0xcb, 0x14, 0x54, 0xfd, - 0x0f, 0x05, 0xb6, 0x4e, 0xa3, 0xb5, 0x0e, 0xbc, 0x21, 0x15, 0x5c, 0x43, 0xdf, 0xc2, 0x1d, 0xc6, - 0x4d, 0x4e, 0xcf, 0x89, 0x67, 0x46, 0x30, 0x4b, 0xb7, 0x82, 0x79, 0x93, 0xf1, 0x7e, 0x50, 0xa5, - 0x1e, 0xa2, 0xfd, 0x3d, 0x6c, 0x7b, 0x16, 0x77, 0x2e, 0xc8, 0x7c, 0xed, 0xdb, 0x51, 0x68, 0x2b, - 0x2c, 0x95, 0xac, 0x7f, 0x5b, 0x36, 0x7d, 0x08, 0xf9, 0xd9, 0xf5, 0xe1, 0x4d, 0xee, 0xb8, 0x44, - 0xbc, 0xe9, 0x0a, 0xde, 0x8c, 0xad, 0x7d, 0xc7, 0x25, 0xe8, 0xab, 0x05, 0xd2, 0x55, 0x16, 0x49, - 0xb0, 0xb4, 0xc9, 0x45, 0xe2, 0x7d, 0x06, 0xbb, 0x33, 0x46, 0x7c, 0xd3, 0x8f, 0xe5, 0xce, 0x8c, - 0x72, 0xb5, 0x6c, 0x59, 0xae, 0xac, 0xe1, 0xbb, 0xb3, 0x15, 0x62, 0xc8, 0xf4, 0x9f, 0x63, 0x02, - 0x6d, 0xc3, 0x9d, 0x41, 0xa7, 0x71, 0xd6, 0x69, 0x1a, 0x9d, 0x93, 0x98, 0x41, 0x7b, 0x70, 0xf7, - 0xc6, 0x38, 0x47, 0x08, 0xb4, 0x0b, 0xdb, 0xad, 0xef, 0x8c, 0xbe, 0xb9, 0xc0, 0x3a, 0x09, 0x3d, - 0x80, 0xbd, 0x79, 0x47, 0x32, 0x4f, 0x41, 0x9b, 0xb0, 0x76, 0xdc, 0xae, 0x1b, 0x4f, 0xeb, 0x8d, - 0x76, 0xab, 0x90, 0xd6, 0x7f, 0x95, 0xa0, 0x28, 0xde, 0x87, 0xf8, 0x68, 0x91, 0x30, 0x2c, 0x6a, - 0x9c, 0xb4, 0xac, 0x71, 0x3d, 0x28, 0xde, 0xec, 0x3f, 0xde, 0x28, 0xd3, 0xe4, 0xb2, 0x5c, 0x59, - 0x3f, 0x7a, 0xf8, 0xce, 0x25, 0x62, 0x34, 0x59, 0x34, 0xb1, 0x27, 0x4a, 0x2e, 0x5d, 0x90, 0xf5, - 0xff, 0x64, 0xd8, 0x38, 0x09, 0xaf, 0x9d, 0x60, 0x3f, 0x04, 0x7d, 0x1a, 0xa8, 0x59, 0xa0, 0x92, - 0x6f, 0xd2, 0xbf, 0x50, 0x43, 0x1b, 0x4a, 0x40, 0x36, 0x1c, 0xc5, 0xa2, 0x5d, 0xc8, 0x4e, 0xa9, + 0x8e, 0x72, 0xf4, 0x09, 0xa8, 0xe1, 0x04, 0x08, 0x41, 0xae, 0x8f, 0xeb, 0x9d, 0xde, 0xe3, 0x16, + 0x36, 0xbf, 0x19, 0xb4, 0x06, 0xad, 0x7c, 0x0a, 0x69, 0x50, 0x88, 0x6d, 0x46, 0xc7, 0xec, 0xe2, + 0xb3, 0x13, 0xdc, 0xea, 0xf5, 0xf2, 0x69, 0x54, 0x80, 0x7c, 0xb3, 0xd5, 0x6e, 0x9d, 0xd4, 0xfb, + 0xc6, 0x59, 0x27, 0x8a, 0x97, 0xd0, 0x01, 0xec, 0x26, 0xac, 0xc9, 0x0c, 0x59, 0x2f, 0x83, 0x1a, + 0xf6, 0x46, 0x00, 0x6a, 0xaf, 0x8f, 0x8d, 0x66, 0xd0, 0x01, 0x41, 0xee, 0x99, 0xd1, 0x3f, 0x6d, + 0xe2, 0xfa, 0xb3, 0x7a, 0xdb, 0x34, 0x8e, 0xeb, 0x79, 0xe9, 0x89, 0x92, 0x5d, 0xcb, 0xab, 0xfa, + 0x1f, 0x0a, 0x6c, 0x9f, 0x46, 0x6b, 0x1d, 0x78, 0x43, 0x2a, 0xb8, 0x86, 0xbe, 0x85, 0x3b, 0x8c, + 0x9b, 0x9c, 0x9e, 0x13, 0xcf, 0x8c, 0x60, 0x96, 0x6e, 0x05, 0xf3, 0x16, 0xe3, 0xfd, 0xa0, 0x4a, + 0x3d, 0x44, 0xfb, 0x7b, 0xd8, 0xf1, 0x2c, 0xee, 0x5c, 0x90, 0xf9, 0xda, 0xb7, 0xa3, 0xd0, 0x76, + 0x58, 0x2a, 0x59, 0xff, 0xb6, 0x6c, 0xfa, 0x10, 0x72, 0xb3, 0xeb, 0xc3, 0x9b, 0xdc, 0x71, 0x89, + 0x78, 0xd3, 0x15, 0xbc, 0x15, 0x5b, 0xfb, 0x8e, 0x4b, 0xd0, 0x57, 0x0b, 0xa4, 0x2b, 0x2f, 0x92, + 0x60, 0x69, 0x93, 0x8b, 0xc4, 0xfb, 0x0c, 0xf6, 0x66, 0x8c, 0xf8, 0xa6, 0x1f, 0xcb, 0x9d, 0x19, + 0xe5, 0x6a, 0x99, 0x92, 0x5c, 0x5e, 0xc7, 0x77, 0x67, 0x2b, 0xc4, 0x90, 0xe9, 0x3f, 0xc7, 0x04, + 0xda, 0x81, 0x3b, 0x83, 0x4e, 0xe3, 0xac, 0xd3, 0x34, 0x3a, 0x27, 0x31, 0x83, 0xf6, 0xe1, 0xee, + 0x8d, 0x71, 0x8e, 0x10, 0x68, 0x0f, 0x76, 0x5a, 0xdf, 0x19, 0x7d, 0x73, 0x81, 0x75, 0x12, 0x7a, + 0x00, 0xfb, 0xf3, 0x8e, 0x64, 0x9e, 0x82, 0xb6, 0x60, 0xfd, 0xb8, 0x5d, 0x37, 0x9e, 0xd6, 0x1b, + 0xed, 0x56, 0x3e, 0xad, 0xff, 0x2a, 0x41, 0x41, 0xbc, 0x0f, 0xf1, 0xd1, 0x22, 0x61, 0x58, 0xd4, + 0x38, 0x69, 0x59, 0xe3, 0x7a, 0x50, 0xb8, 0xd9, 0x7f, 0xbc, 0x51, 0xa6, 0xc9, 0x25, 0xb9, 0xbc, + 0x51, 0x7b, 0xf8, 0xce, 0x25, 0x62, 0x34, 0x59, 0x34, 0xb1, 0x27, 0x4a, 0x36, 0x9d, 0x97, 0xf5, + 0xff, 0x64, 0xd8, 0x3c, 0x09, 0xaf, 0x9d, 0x60, 0x3f, 0x04, 0x7d, 0x1a, 0xa8, 0x59, 0xa0, 0x92, + 0x6f, 0xd2, 0xbf, 0x50, 0x43, 0x1b, 0x4a, 0x40, 0x36, 0x1c, 0xc5, 0xa2, 0x3d, 0xc8, 0x4c, 0xa9, 0xcf, 0x03, 0x72, 0x44, 0xb7, 0x4b, 0xf0, 0x68, 0xd8, 0xc8, 0x81, 0x7b, 0xab, 0xf1, 0x32, 0x5f, 0x38, 0x8c, 0x47, 0x27, 0x58, 0xd2, 0x82, 0x55, 0x17, 0x5a, 0xd4, 0x51, 0x5b, 0x85, 0x6f, 0xdb, - 0x61, 0x1c, 0x7d, 0x09, 0xf7, 0xdf, 0xd0, 0x6a, 0x14, 0x5f, 0x61, 0x0a, 0xde, 0x5b, 0x95, 0x7f, - 0x2c, 0xc8, 0xef, 0xc0, 0xbd, 0x10, 0x89, 0x1b, 0x2a, 0x27, 0x67, 0xcd, 0xac, 0x9e, 0x75, 0x15, - 0xa8, 0xd7, 0xb3, 0x92, 0x15, 0x3e, 0x31, 0x6b, 0x0f, 0xb6, 0xaf, 0xf5, 0x33, 0xd9, 0x22, 0x2b, - 0x5a, 0x3c, 0x78, 0xab, 0x34, 0x46, 0xb5, 0xb7, 0xec, 0xa4, 0x51, 0x14, 0x4d, 0x88, 0xf2, 0xdc, - 0xc1, 0x73, 0x73, 0xa2, 0x9c, 0x38, 0xf1, 0x51, 0x06, 0xe4, 0xa7, 0x6c, 0xdc, 0xf8, 0xfa, 0xe5, - 0x65, 0x49, 0x7a, 0x75, 0x59, 0x92, 0xfe, 0xb9, 0x2c, 0x49, 0xbf, 0x5c, 0x95, 0x52, 0xaf, 0xae, - 0x4a, 0xa9, 0xbf, 0xae, 0x4a, 0xa9, 0xe7, 0x87, 0x09, 0x29, 0xe9, 0x89, 0xa1, 0x1e, 0xb5, 0xad, - 0x21, 0xab, 0x45, 0x1f, 0x2e, 0x17, 0x87, 0x87, 0xb5, 0x1f, 0xe2, 0xcf, 0x17, 0xa1, 0x2c, 0x43, - 0x55, 0x7c, 0x97, 0x7c, 0xf2, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x93, 0x79, 0x0f, 0x45, 0xdd, + 0x61, 0x1c, 0x7d, 0x09, 0xf7, 0xdf, 0xd0, 0x6a, 0x14, 0x5f, 0x61, 0x0a, 0xde, 0x5f, 0x95, 0x7f, + 0x2c, 0xc8, 0xef, 0xc0, 0xbd, 0x10, 0x89, 0x1b, 0x2a, 0x27, 0x67, 0x5d, 0x5b, 0x3d, 0xeb, 0x2a, + 0x50, 0xaf, 0x67, 0x25, 0x2b, 0x7c, 0x62, 0xd6, 0x1e, 0xec, 0x5c, 0xeb, 0x67, 0xb2, 0x45, 0x46, + 0xb4, 0x78, 0xf0, 0x56, 0x69, 0x8c, 0x6a, 0x6f, 0xdb, 0x49, 0xa3, 0x28, 0x9a, 0x10, 0xe5, 0xb9, + 0x83, 0x67, 0xe7, 0x44, 0x39, 0x71, 0xe2, 0xda, 0x1a, 0xc8, 0x4f, 0xd9, 0xb8, 0xf1, 0xf5, 0xcb, + 0xcb, 0xa2, 0xf4, 0xea, 0xb2, 0x28, 0xfd, 0x73, 0x59, 0x94, 0x7e, 0xb9, 0x2a, 0xa6, 0x5e, 0x5d, + 0x15, 0x53, 0x7f, 0x5d, 0x15, 0x53, 0xcf, 0x8f, 0x12, 0x52, 0xd2, 0x13, 0x43, 0x3d, 0x6a, 0x5b, + 0x43, 0x56, 0x8d, 0x3e, 0x5c, 0x2e, 0x8e, 0x6a, 0xd5, 0x1f, 0xe2, 0xcf, 0x17, 0xa1, 0x2c, 0x43, + 0x55, 0x7c, 0x97, 0x7c, 0xf2, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xcf, 0xe2, 0x70, 0xdd, 0x08, 0x00, 0x00, } diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index 525a4b5ae7..de86b76b28 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -915,69 +915,69 @@ func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25 var fileDescriptor_25e7cc311be81f7b = []byte{ // 1002 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0xcf, 0x64, 0x93, 0x94, 0xbe, 0x36, 0x51, 0x35, 0x5d, 0x95, 0xb0, 0xb4, 0xdb, 0xd4, 0xa9, - 0xf8, 0x13, 0x52, 0x0f, 0x9b, 0x06, 0x55, 0x94, 0x03, 0x4a, 0x0b, 0x69, 0x42, 0x51, 0x55, 0x8c, - 0x7a, 0xe9, 0x01, 0xd7, 0x5e, 0x4f, 0x1c, 0x0b, 0xaf, 0xc7, 0xf5, 0x78, 0x2b, 0x96, 0x65, 0x2f, - 0x9c, 0x38, 0x22, 0xf1, 0x11, 0x10, 0xdf, 0x80, 0x0b, 0x37, 0xc4, 0x29, 0x07, 0x0e, 0xad, 0xb8, - 0xf4, 0x84, 0x50, 0xc2, 0xe7, 0x40, 0xc8, 0x33, 0xb3, 0xc9, 0x7a, 0x33, 0x76, 0x76, 0xa3, 0xe5, - 0xc0, 0xcd, 0x9e, 0xf7, 0xef, 0xf7, 0x7b, 0xf3, 0xde, 0xbc, 0x19, 0xa8, 0xf1, 0x34, 0x09, 0x3c, - 0x4a, 0x12, 0xda, 0x64, 0x89, 0xc7, 0xc9, 0xd3, 0x36, 0x4d, 0x3a, 0x66, 0x9c, 0xb0, 0x94, 0xe1, - 0x05, 0x29, 0x33, 0x95, 0xac, 0x56, 0xf5, 0x99, 0xcf, 0x84, 0x88, 0x64, 0x5f, 0x52, 0xab, 0x76, - 0xd9, 0x67, 0xcc, 0x0f, 0x29, 0x71, 0xe2, 0x80, 0x38, 0x51, 0xc4, 0x52, 0x27, 0x0d, 0x58, 0xc4, - 0x95, 0x74, 0xa5, 0xc9, 0x78, 0x8b, 0x71, 0xe2, 0x3a, 0x9c, 0x4a, 0xe7, 0xe4, 0x59, 0xc3, 0xa5, - 0xa9, 0xd3, 0x20, 0xb1, 0xe3, 0x07, 0x91, 0x50, 0xee, 0x7b, 0x1a, 0xc2, 0xe2, 0xd3, 0x88, 0xf2, - 0x40, 0x79, 0x32, 0xaa, 0x80, 0x3f, 0xcb, 0xec, 0x1f, 0x3a, 0x89, 0xd3, 0xe2, 0x16, 0x7d, 0xda, - 0xa6, 0x3c, 0x35, 0xee, 0xc3, 0xc5, 0xdc, 0x2a, 0x8f, 0x59, 0xc4, 0x29, 0x5e, 0x87, 0xb9, 0x58, - 0xac, 0x2c, 0xa2, 0x25, 0xf4, 0xd6, 0xb9, 0xb5, 0x4b, 0x66, 0x9e, 0x8b, 0x29, 0xf5, 0xef, 0xcc, - 0xec, 0xfd, 0x79, 0x75, 0xca, 0x52, 0xba, 0x86, 0x09, 0x97, 0x85, 0xb3, 0x7b, 0x34, 0xfd, 0x88, - 0xc6, 0x8c, 0x07, 0xa9, 0x25, 0xd4, 0x55, 0x30, 0xbc, 0x00, 0xd3, 0x81, 0x27, 0x3c, 0xce, 0x58, - 0xd3, 0x81, 0x67, 0x7c, 0x09, 0x57, 0x0a, 0xf4, 0x15, 0x8c, 0x4f, 0x60, 0xc1, 0x93, 0x02, 0x5b, - 0x06, 0x56, 0x70, 0xae, 0x0c, 0xc3, 0xc9, 0x99, 0x2b, 0x54, 0xf3, 0xde, 0xe0, 0xa2, 0xb1, 0xa3, - 0xc0, 0x6d, 0x84, 0xa1, 0x16, 0xdc, 0x26, 0xc0, 0x51, 0x46, 0x55, 0x9c, 0x37, 0x4c, 0x99, 0x7e, - 0x33, 0x4b, 0xbf, 0x29, 0xf7, 0x56, 0xa5, 0xdf, 0x7c, 0xe8, 0xf8, 0x54, 0xd9, 0x5a, 0x03, 0x96, - 0xc6, 0xcf, 0x48, 0xb1, 0x3a, 0x1e, 0xa8, 0x84, 0x55, 0xe5, 0x74, 0xac, 0xf0, 0xbd, 0x1c, 0xea, - 0x69, 0x81, 0xfa, 0xcd, 0x13, 0x51, 0x4b, 0x20, 0x39, 0xd8, 0x77, 0xe1, 0xaa, 0x40, 0x9d, 0x8f, - 0xd9, 0xd9, 0x62, 0x3c, 0xed, 0x67, 0x68, 0x09, 0xce, 0xef, 0x32, 0x9e, 0xda, 0x5f, 0xb3, 0x88, - 0xda, 0x6a, 0x23, 0xcf, 0x5a, 0x90, 0xad, 0x3d, 0x66, 0x11, 0xdd, 0xf6, 0x8c, 0x08, 0x96, 0x8a, - 0x9d, 0x4c, 0x9e, 0xbd, 0xf1, 0x1e, 0x2c, 0xf7, 0x0b, 0xe8, 0x11, 0xa7, 0x89, 0x45, 0x3d, 0xda, - 0x8a, 0x33, 0x3a, 0x45, 0x75, 0x77, 0x56, 0xd4, 0xdd, 0x77, 0x08, 0xae, 0x97, 0xdb, 0x29, 0xac, - 0x4f, 0xe0, 0x52, 0x9b, 0xd3, 0xc4, 0x4e, 0x0e, 0x15, 0xf2, 0x75, 0x78, 0x7d, 0x18, 0xb3, 0xce, - 0x9b, 0x82, 0x5e, 0x6d, 0x6b, 0x64, 0x46, 0x4b, 0x31, 0xd8, 0x08, 0xc3, 0x32, 0x06, 0x93, 0x2a, - 0xce, 0x17, 0x7d, 0xe6, 0x85, 0xf1, 0x46, 0x60, 0x5e, 0x99, 0x04, 0xf3, 0xc9, 0x55, 0xee, 0x0b, - 0x04, 0x2b, 0x65, 0x9c, 0x36, 0x59, 0x22, 0x97, 0x65, 0x2a, 0x5f, 0x83, 0x57, 0x9a, 0xbb, 0x4e, - 0x10, 0x1d, 0x55, 0xf0, 0x19, 0xf1, 0xbf, 0xed, 0xe1, 0x0b, 0x50, 0xf1, 0x9c, 0x8e, 0xc0, 0x32, - 0x63, 0x65, 0x9f, 0x78, 0x11, 0xce, 0x38, 0x9e, 0x97, 0x50, 0xce, 0x17, 0x2b, 0x52, 0x57, 0xfd, - 0xe2, 0x2a, 0xcc, 0x86, 0x41, 0x2b, 0x48, 0x17, 0x67, 0x84, 0xb6, 0xfc, 0x19, 0xda, 0xa7, 0xd9, - 0x53, 0xef, 0xd3, 0x4b, 0x04, 0xef, 0x8c, 0xc4, 0xe9, 0xff, 0xb7, 0x5d, 0x5b, 0x47, 0x3d, 0xfb, - 0x71, 0xcc, 0x9a, 0xbb, 0x8f, 0x22, 0x97, 0x45, 0x5e, 0x10, 0xf9, 0xf9, 0x8a, 0xbf, 0x06, 0xe7, - 0x69, 0x26, 0xb6, 0xa3, 0x76, 0xcb, 0xa5, 0x89, 0x9a, 0x1a, 0xe7, 0xc4, 0xda, 0x03, 0xb1, 0x94, - 0x6b, 0x63, 0xbd, 0xab, 0xa3, 0xec, 0x48, 0x5f, 0xed, 0xbe, 0xc2, 0x09, 0x6d, 0xac, 0xf3, 0xd6, - 0xcf, 0x0e, 0xd5, 0xc8, 0x06, 0xdb, 0xb8, 0x8c, 0xd4, 0x7f, 0xd1, 0xc6, 0xa7, 0x66, 0x5e, 0x99, - 0x04, 0xf3, 0x89, 0xd5, 0xc5, 0xda, 0x2f, 0xf3, 0x30, 0x2b, 0x38, 0xe1, 0x6f, 0x60, 0x4e, 0x5e, - 0x2f, 0xb0, 0x31, 0x0c, 0xef, 0xf8, 0x0d, 0xa6, 0xb6, 0x5c, 0xaa, 0x23, 0x03, 0x19, 0x6f, 0x7f, - 0xfb, 0xc7, 0xdf, 0x3f, 0x4c, 0x2f, 0xe3, 0x6b, 0xe4, 0x73, 0xa1, 0xfc, 0xa9, 0xe3, 0x72, 0x32, - 0x74, 0x5d, 0x92, 0x97, 0x18, 0xfc, 0x1b, 0x82, 0xaa, 0xae, 0x3b, 0xf0, 0x4d, 0x6d, 0xa0, 0xf2, - 0xd1, 0x53, 0x5b, 0x1f, 0xcf, 0x48, 0xc1, 0xfd, 0x50, 0xc0, 0x7d, 0x1f, 0xdf, 0x52, 0x70, 0x6f, - 0xe8, 0xf0, 0xea, 0x1b, 0x9e, 0x74, 0x03, 0xaf, 0x87, 0x7f, 0x45, 0xf0, 0xaa, 0x2e, 0xc2, 0x46, - 0x18, 0x16, 0xf0, 0x28, 0x1f, 0x40, 0x05, 0x3c, 0x4e, 0x98, 0x22, 0xc6, 0x6d, 0xc1, 0x63, 0x1d, - 0xaf, 0x8d, 0xcf, 0x03, 0xff, 0x83, 0xe0, 0xf5, 0x92, 0xa3, 0x0f, 0xdf, 0x1e, 0x07, 0x51, 0x7e, - 0x06, 0xd4, 0x3e, 0x38, 0x95, 0xad, 0x22, 0xb5, 0x23, 0x48, 0x3d, 0xc1, 0x5f, 0x8c, 0x4f, 0xca, - 0xde, 0x61, 0x89, 0x9d, 0x89, 0x48, 0xb7, 0x3f, 0x83, 0x7a, 0xa4, 0xeb, 0x39, 0x9d, 0x1e, 0xe9, - 0xaa, 0xc1, 0xd2, 0x23, 0x5d, 0x31, 0x4a, 0x7a, 0xf8, 0x77, 0x04, 0x55, 0x5d, 0x3b, 0x16, 0x17, - 0x62, 0xc9, 0xd1, 0x53, 0x5c, 0x88, 0x65, 0xe7, 0x87, 0xb1, 0x2d, 0xb8, 0xde, 0xc5, 0x1b, 0x65, - 0x5c, 0xf5, 0x27, 0x0c, 0xe9, 0x0e, 0x9e, 0xdf, 0xb2, 0x24, 0x75, 0xb1, 0x4a, 0x4b, 0x72, 0x7c, - 0x46, 0x27, 0x9c, 0x88, 0xa3, 0x95, 0xa4, 0x9e, 0x11, 0xfe, 0x09, 0xc1, 0x7c, 0xee, 0x56, 0x8a, - 0x57, 0x8b, 0xb2, 0xaa, 0x7b, 0x62, 0xd4, 0x6e, 0x8c, 0xa8, 0xad, 0xa0, 0xde, 0x12, 0x50, 0x1b, - 0x98, 0x94, 0x41, 0xcd, 0xdf, 0xa5, 0x65, 0xf7, 0xff, 0x88, 0xe0, 0x42, 0xce, 0x65, 0x96, 0xe3, - 0xd5, 0xa2, 0x74, 0x8d, 0x01, 0xb5, 0xe8, 0x49, 0x63, 0xac, 0x09, 0xa8, 0xab, 0x78, 0x65, 0x74, - 0xa8, 0x78, 0x0f, 0xc1, 0x45, 0xcd, 0x43, 0x01, 0x13, 0x6d, 0xe8, 0xe2, 0x77, 0x49, 0xed, 0xdd, - 0xd1, 0x0d, 0x14, 0xdc, 0x07, 0x02, 0xee, 0x16, 0xde, 0x1c, 0x1d, 0xae, 0xed, 0x76, 0xec, 0xc3, - 0xd7, 0x0f, 0xe9, 0x0e, 0x3e, 0x84, 0x7a, 0x77, 0xee, 0xef, 0xed, 0xd7, 0xd1, 0xf3, 0xfd, 0x3a, - 0xfa, 0x6b, 0xbf, 0x8e, 0xbe, 0x3f, 0xa8, 0x4f, 0x3d, 0x3f, 0xa8, 0x4f, 0xbd, 0x3c, 0xa8, 0x4f, - 0x3d, 0x6e, 0xf8, 0x41, 0xba, 0xdb, 0x76, 0xcd, 0x26, 0x6b, 0xe9, 0x62, 0x3d, 0x6b, 0x34, 0xc8, - 0x57, 0x87, 0x11, 0xd3, 0x4e, 0x4c, 0xb9, 0x3b, 0x27, 0xde, 0xeb, 0x37, 0xff, 0x0d, 0x00, 0x00, - 0xff, 0xff, 0xfb, 0x34, 0x2c, 0xb4, 0x5b, 0x10, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0xc4, 0x49, 0x4a, 0x5f, 0x9b, 0xa8, 0x9a, 0x5a, 0x25, 0x98, 0xd6, 0x4d, 0x37, 0x15, + 0x7f, 0x42, 0xba, 0x83, 0xdd, 0xa0, 0x8a, 0x72, 0x40, 0x69, 0x21, 0x4d, 0x28, 0xaa, 0x8a, 0x51, + 0x2f, 0x3d, 0xb0, 0xdd, 0xf5, 0x4e, 0x36, 0x2b, 0xd6, 0x3b, 0xdb, 0x9d, 0x75, 0x85, 0x31, 0xbe, + 0x70, 0xe2, 0x88, 0xc4, 0x47, 0x40, 0x7c, 0x03, 0x2e, 0xdc, 0x10, 0xa7, 0x1c, 0x38, 0xb4, 0xe2, + 0xd2, 0x13, 0x42, 0x09, 0x9f, 0x03, 0xa1, 0x9d, 0x19, 0x27, 0x5e, 0x67, 0x76, 0x63, 0x5b, 0xe6, + 0xc0, 0x6d, 0x77, 0xde, 0xbf, 0xdf, 0xef, 0xcd, 0x7b, 0xf3, 0x66, 0xa0, 0xc2, 0x93, 0xd8, 0x77, + 0x29, 0x89, 0x69, 0x93, 0xc5, 0x2e, 0x27, 0x4f, 0xdb, 0x34, 0xee, 0x98, 0x51, 0xcc, 0x12, 0x86, + 0x97, 0xa4, 0xcc, 0x54, 0xb2, 0x4a, 0xd9, 0x63, 0x1e, 0x13, 0x22, 0x92, 0x7e, 0x49, 0xad, 0xca, + 0x65, 0x8f, 0x31, 0x2f, 0xa0, 0xc4, 0x8e, 0x7c, 0x62, 0x87, 0x21, 0x4b, 0xec, 0xc4, 0x67, 0x21, + 0x57, 0xd2, 0xb5, 0x26, 0xe3, 0x2d, 0xc6, 0x89, 0x63, 0x73, 0x2a, 0x9d, 0x93, 0x67, 0x35, 0x87, + 0x26, 0x76, 0x8d, 0x44, 0xb6, 0xe7, 0x87, 0x42, 0xb9, 0xef, 0x69, 0x08, 0x8b, 0x47, 0x43, 0xca, + 0x7d, 0xe5, 0xc9, 0x28, 0x03, 0xfe, 0x2c, 0xb5, 0x7f, 0x68, 0xc7, 0x76, 0x8b, 0x37, 0xe8, 0xd3, + 0x36, 0xe5, 0x89, 0x71, 0x1f, 0x2e, 0x66, 0x56, 0x79, 0xc4, 0x42, 0x4e, 0xf1, 0x06, 0x2c, 0x44, + 0x62, 0x65, 0x19, 0xad, 0xa0, 0xb7, 0xce, 0xd5, 0x2f, 0x99, 0x59, 0x2e, 0xa6, 0xd4, 0xbf, 0x33, + 0xb7, 0xff, 0xe7, 0xd5, 0x99, 0x86, 0xd2, 0x35, 0x4c, 0xb8, 0x2c, 0x9c, 0xdd, 0xa3, 0xc9, 0x47, + 0x34, 0x62, 0xdc, 0x4f, 0x1a, 0x42, 0x5d, 0x05, 0xc3, 0x4b, 0x30, 0xeb, 0xbb, 0xc2, 0xe3, 0x5c, + 0x63, 0xd6, 0x77, 0x8d, 0x2f, 0xe1, 0x4a, 0x8e, 0xbe, 0x82, 0xf1, 0x09, 0x2c, 0xb9, 0x52, 0x60, + 0xc9, 0xc0, 0x0a, 0xce, 0x95, 0x61, 0x38, 0x19, 0x73, 0x85, 0x6a, 0xd1, 0x1d, 0x5c, 0x34, 0x76, + 0x15, 0xb8, 0xcd, 0x20, 0xd0, 0x82, 0xdb, 0x02, 0x38, 0xce, 0xa8, 0x8a, 0xf3, 0x86, 0x29, 0xd3, + 0x6f, 0xa6, 0xe9, 0x37, 0xe5, 0xde, 0xaa, 0xf4, 0x9b, 0x0f, 0x6d, 0x8f, 0x2a, 0xdb, 0xc6, 0x80, + 0xa5, 0xf1, 0x33, 0x52, 0xac, 0x4e, 0x06, 0x2a, 0x60, 0x55, 0x9a, 0x8c, 0x15, 0xbe, 0x97, 0x41, + 0x3d, 0x2b, 0x50, 0xbf, 0x79, 0x2a, 0x6a, 0x09, 0x24, 0x03, 0xfb, 0x2e, 0x5c, 0x15, 0xa8, 0xb3, + 0x31, 0x3b, 0xdb, 0x8c, 0x27, 0xfd, 0x0c, 0xad, 0xc0, 0xf9, 0x3d, 0xc6, 0x13, 0xeb, 0x6b, 0x16, + 0x52, 0x4b, 0x6d, 0xe4, 0xd9, 0x06, 0xa4, 0x6b, 0x8f, 0x59, 0x48, 0x77, 0x5c, 0x23, 0x84, 0x95, + 0x7c, 0x27, 0xd3, 0x67, 0x6f, 0xbc, 0x07, 0xab, 0xfd, 0x02, 0x7a, 0xc4, 0x69, 0xdc, 0xa0, 0x2e, + 0x6d, 0x45, 0x29, 0x9d, 0xbc, 0xba, 0x3b, 0x2b, 0xea, 0xee, 0x3b, 0x04, 0xd7, 0x8b, 0xed, 0x14, + 0xd6, 0x27, 0x70, 0xa9, 0xcd, 0x69, 0x6c, 0xc5, 0x47, 0x0a, 0xd9, 0x3a, 0xbc, 0x3e, 0x8c, 0x59, + 0xe7, 0x4d, 0x41, 0x2f, 0xb7, 0x35, 0x32, 0xa3, 0xa5, 0x18, 0x6c, 0x06, 0x41, 0x11, 0x83, 0x69, + 0x15, 0xe7, 0x8b, 0x3e, 0xf3, 0xdc, 0x78, 0x23, 0x30, 0x2f, 0x4d, 0x83, 0xf9, 0xf4, 0x2a, 0xf7, + 0x05, 0x82, 0xb5, 0x22, 0x4e, 0x5b, 0x2c, 0x96, 0xcb, 0x32, 0x95, 0xaf, 0xc1, 0x2b, 0xcd, 0x3d, + 0xdb, 0x0f, 0x8f, 0x2b, 0xf8, 0x8c, 0xf8, 0xdf, 0x71, 0xf1, 0x05, 0x28, 0xb9, 0x76, 0x47, 0x60, + 0x99, 0x6b, 0xa4, 0x9f, 0x78, 0x19, 0xce, 0xd8, 0xae, 0x1b, 0x53, 0xce, 0x97, 0x4b, 0x52, 0x57, + 0xfd, 0xe2, 0x32, 0xcc, 0x07, 0x7e, 0xcb, 0x4f, 0x96, 0xe7, 0x84, 0xb6, 0xfc, 0x19, 0xda, 0xa7, + 0xf9, 0x89, 0xf7, 0xe9, 0x25, 0x82, 0x77, 0x46, 0xe2, 0xf4, 0xff, 0xdb, 0xae, 0xed, 0xe3, 0x9e, + 0xfd, 0x38, 0x62, 0xcd, 0xbd, 0x47, 0xa1, 0xc3, 0x42, 0xd7, 0x0f, 0xbd, 0x6c, 0xc5, 0x5f, 0x83, + 0xf3, 0x34, 0x15, 0x5b, 0x61, 0xbb, 0xe5, 0xd0, 0x58, 0x4d, 0x8d, 0x73, 0x62, 0xed, 0x81, 0x58, + 0xca, 0xb4, 0xb1, 0xde, 0xd5, 0x71, 0x76, 0xa4, 0xaf, 0x76, 0x5f, 0xe1, 0x94, 0x36, 0xd6, 0x79, + 0xeb, 0x67, 0x87, 0x6a, 0x64, 0x83, 0x6d, 0x5c, 0x44, 0xea, 0xbf, 0x68, 0xe3, 0x89, 0x99, 0x97, + 0xa6, 0xc1, 0x7c, 0x6a, 0x75, 0x51, 0xff, 0x65, 0x11, 0xe6, 0x05, 0x27, 0xfc, 0x0d, 0x2c, 0xc8, + 0xeb, 0x05, 0x36, 0x86, 0xe1, 0x9d, 0xbc, 0xc1, 0x54, 0x56, 0x0b, 0x75, 0x64, 0x20, 0xe3, 0xed, + 0x6f, 0xff, 0xf8, 0xfb, 0x87, 0xd9, 0x55, 0x7c, 0x8d, 0x7c, 0x2e, 0x94, 0x3f, 0xb5, 0x1d, 0x4e, + 0x86, 0xae, 0x4b, 0xf2, 0x12, 0x83, 0x7f, 0x43, 0x50, 0xd6, 0x75, 0x07, 0xbe, 0xa9, 0x0d, 0x54, + 0x3c, 0x7a, 0x2a, 0x1b, 0xe3, 0x19, 0x29, 0xb8, 0x1f, 0x0a, 0xb8, 0xef, 0xe3, 0x5b, 0x0a, 0xee, + 0x0d, 0x1d, 0x5e, 0x7d, 0xc3, 0x93, 0xae, 0xef, 0xf6, 0xf0, 0xaf, 0x08, 0x5e, 0xd5, 0x45, 0xd8, + 0x0c, 0x82, 0x1c, 0x1e, 0xc5, 0x03, 0x28, 0x87, 0xc7, 0x29, 0x53, 0xc4, 0xb8, 0x2d, 0x78, 0x6c, + 0xe0, 0xfa, 0xf8, 0x3c, 0xf0, 0x3f, 0x08, 0x5e, 0x2f, 0x38, 0xfa, 0xf0, 0xed, 0x71, 0x10, 0x65, + 0x67, 0x40, 0xe5, 0x83, 0x89, 0x6c, 0x15, 0xa9, 0x5d, 0x41, 0xea, 0x09, 0xfe, 0x62, 0x7c, 0x52, + 0xd6, 0x2e, 0x8b, 0xad, 0x54, 0x44, 0xba, 0xfd, 0x19, 0xd4, 0x23, 0x5d, 0xd7, 0xee, 0xf4, 0x48, + 0x57, 0x0d, 0x96, 0x1e, 0xe9, 0x8a, 0x51, 0xd2, 0xc3, 0xbf, 0x23, 0x28, 0xeb, 0xda, 0x31, 0xbf, + 0x10, 0x0b, 0x8e, 0x9e, 0xfc, 0x42, 0x2c, 0x3a, 0x3f, 0x8c, 0x1d, 0xc1, 0xf5, 0x2e, 0xde, 0x2c, + 0xe2, 0xaa, 0x3f, 0x61, 0x48, 0x77, 0xf0, 0xfc, 0x96, 0x25, 0xa9, 0x8b, 0x55, 0x58, 0x92, 0xe3, + 0x33, 0x3a, 0xe5, 0x44, 0x1c, 0xad, 0x24, 0xf5, 0x8c, 0xf0, 0x4f, 0x08, 0x16, 0x33, 0xb7, 0x52, + 0xbc, 0x9e, 0x97, 0x55, 0xdd, 0x13, 0xa3, 0x72, 0x63, 0x44, 0x6d, 0x05, 0xf5, 0x96, 0x80, 0x5a, + 0xc3, 0xa4, 0x08, 0x6a, 0xf6, 0x2e, 0x2d, 0xbb, 0xff, 0x47, 0x04, 0x17, 0x32, 0x2e, 0xd3, 0x1c, + 0xaf, 0xe7, 0xa5, 0x6b, 0x0c, 0xa8, 0x79, 0x4f, 0x1a, 0xa3, 0x2e, 0xa0, 0xae, 0xe3, 0xb5, 0xd1, + 0xa1, 0xe2, 0x7d, 0x04, 0x17, 0x35, 0x0f, 0x05, 0x4c, 0xb4, 0xa1, 0xf3, 0xdf, 0x25, 0x95, 0x77, + 0x47, 0x37, 0x50, 0x70, 0x1f, 0x08, 0xb8, 0xdb, 0x78, 0x6b, 0x74, 0xb8, 0x96, 0xd3, 0xb1, 0x8e, + 0x5e, 0x3f, 0xa4, 0x3b, 0xf8, 0x10, 0xea, 0xdd, 0xb9, 0xbf, 0x7f, 0x50, 0x45, 0xcf, 0x0f, 0xaa, + 0xe8, 0xaf, 0x83, 0x2a, 0xfa, 0xfe, 0xb0, 0x3a, 0xf3, 0xfc, 0xb0, 0x3a, 0xf3, 0xf2, 0xb0, 0x3a, + 0xf3, 0xb8, 0xe6, 0xf9, 0xc9, 0x5e, 0xdb, 0x31, 0x9b, 0xac, 0xa5, 0x8b, 0xf5, 0xac, 0x56, 0x27, + 0x5f, 0x1d, 0x45, 0x4c, 0x3a, 0x11, 0xe5, 0xce, 0x82, 0x78, 0xaf, 0xdf, 0xfc, 0x37, 0x00, 0x00, + 0xff, 0xff, 0xa8, 0x82, 0xc1, 0x81, 0x5b, 0x10, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index d3be85baea..b6c17114cb 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -189,7 +189,6 @@ func (im IBCMiddleware) OnRecvPacket( } // SendPacket implements the ICS4 Wrapper interface but is not utilized in the ICA stack -// but is not utilized in the bottom of ICA stack func (im IBCMiddleware) SendPacket( ctx sdk.Context, chanCap *capabilitytypes.Capability, diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index eb711d1796..3cf0554137 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -1,6 +1,7 @@ package keeper import ( + "encoding/json" "fmt" sdkmath "cosmossdk.io/math" @@ -9,6 +10,7 @@ import ( "github.com/Stride-Labs/stride/v12/utils" epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + icaoracletypes "github.com/Stride-Labs/stride/v12/x/icaoracle/types" recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" "github.com/Stride-Labs/stride/v12/x/stakeibc/types" ) @@ -167,9 +169,42 @@ func (k Keeper) UpdateRedemptionRates(ctx sdk.Context, depositRecords []recordst hostZone.LastRedemptionRate = hostZone.RedemptionRate hostZone.RedemptionRate = redemptionRate k.SetHostZone(ctx, hostZone) + + // If the redemption rate is outside of safety bounds, exit so the redemption rate is not pushed to the oracle + redemptionRateSafe, _ := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) + if !redemptionRateSafe { + continue + } + + // Otherwise, submit the redemption rate to the oracle + if err := k.PostRedemptionRateToOracles(ctx, hostZone, redemptionRate); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to send redemption rate to oracle: %s", err.Error())) + continue + } } } +// Pushes a redemption rate update to the ICA oracle +func (k Keeper) PostRedemptionRateToOracles(ctx sdk.Context, hostZone types.HostZone, redemptionRate sdk.Dec) error { + stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) + nativeDenom := hostZone.IbcDenom + attributes, err := json.Marshal(icaoracletypes.RedemptionRateAttributes{ + Denom: stDenom, + BaseDenom: nativeDenom, + }) + if err != nil { + return err + } + + // Metric Key is of format: {stToken}_redemption_rate + metricKey := fmt.Sprintf("%s_%s", stDenom, icaoracletypes.MetricType_RedemptionRate) + metricValue := redemptionRate.String() + metricType := icaoracletypes.MetricType_RedemptionRate + k.ICAOracleKeeper.QueueMetricUpdate(ctx, metricKey, metricValue, metricType, string(attributes)) + + return nil +} + func (k Keeper) GetUndelegatedBalance(hostZone types.HostZone, depositRecords []recordstypes.DepositRecord) sdkmath.Int { // filter to only the deposit records for the host zone with status DELEGATION_QUEUE UndelegatedDepositRecords := utils.FilterDepositRecords(depositRecords, func(record recordstypes.DepositRecord) (condition bool) { diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index 335f2f223f..a023510b80 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -1,7 +1,6 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" ) @@ -15,12 +14,12 @@ const ( ) func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { - return []types.ICACallback{ - {CallbackId: ICACallbackID_Delegate, CallbackFunc: types.ICACallbackFunction(k.DelegateCallback)}, - {CallbackId: ICACallbackID_Claim, CallbackFunc: types.ICACallbackFunction(k.ClaimCallback)}, - {CallbackId: ICACallbackID_Undelegate, CallbackFunc: types.ICACallbackFunction(k.UndelegateCallback)}, - {CallbackId: ICACallbackID_Reinvest, CallbackFunc: types.ICACallbackFunction(k.ReinvestCallback)}, - {CallbackId: ICACallbackID_Redemption, CallbackFunc: types.ICACallbackFunction(k.RedemptionCallback)}, - {CallbackId: ICACallbackID_Rebalance, CallbackFunc: types.ICACallbackFunction(k.RebalanceCallback)}, + return []icacallbackstypes.ICACallback{ + {CallbackId: ICACallbackID_Delegate, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.DelegateCallback)}, + {CallbackId: ICACallbackID_Claim, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.ClaimCallback)}, + {CallbackId: ICACallbackID_Undelegate, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.UndelegateCallback)}, + {CallbackId: ICACallbackID_Reinvest, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.ReinvestCallback)}, + {CallbackId: ICACallbackID_Redemption, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.RedemptionCallback)}, + {CallbackId: ICACallbackID_Rebalance, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.RebalanceCallback)}, } } diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index c56871d206..99b643274e 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -38,13 +38,14 @@ type ( ICAControllerKeeper icacontrollerkeeper.Keeper IBCKeeper ibckeeper.Keeper bankKeeper bankkeeper.Keeper + AccountKeeper types.AccountKeeper InterchainQueryKeeper icqkeeper.Keeper RecordsKeeper recordsmodulekeeper.Keeper StakingKeeper stakingkeeper.Keeper ICACallbacksKeeper icacallbackskeeper.Keeper hooks types.StakeIBCHooks - AccountKeeper types.AccountKeeper RatelimitKeeper types.RatelimitKeeper + ICAOracleKeeper types.ICAOracleKeeper ConsumerKeeper types.ConsumerKeeper } ) @@ -63,6 +64,7 @@ func NewKeeper( StakingKeeper stakingkeeper.Keeper, ICACallbacksKeeper icacallbackskeeper.Keeper, RatelimitKeeper types.RatelimitKeeper, + icaOracleKeeper types.ICAOracleKeeper, ConsumerKeeper types.ConsumerKeeper, ) Keeper { // set KeyTable if it has not already been set @@ -84,6 +86,7 @@ func NewKeeper( StakingKeeper: StakingKeeper, ICACallbacksKeeper: ICACallbacksKeeper, RatelimitKeeper: RatelimitKeeper, + ICAOracleKeeper: icaOracleKeeper, ConsumerKeeper: ConsumerKeeper, } } diff --git a/x/stakeibc/types/address_unbonding.pb.go b/x/stakeibc/types/address_unbonding.pb.go index 886f3aeffc..be372f962d 100644 --- a/x/stakeibc/types/address_unbonding.pb.go +++ b/x/stakeibc/types/address_unbonding.pb.go @@ -121,7 +121,7 @@ var fileDescriptor_6491082275bcb473 = []byte{ // 348 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4e, 0xea, 0x40, 0x18, 0x6d, 0xb9, 0xc0, 0x85, 0xb9, 0x37, 0x4a, 0x26, 0xc4, 0x4c, 0x58, 0x14, 0x74, 0xa1, 0xdd, - 0xd0, 0x06, 0xdd, 0xb8, 0x95, 0x44, 0x13, 0x12, 0x62, 0x4c, 0xd5, 0x8d, 0x9b, 0xa6, 0x3f, 0x5f, + 0xd0, 0x46, 0xdc, 0xb8, 0x95, 0x44, 0x13, 0x12, 0x62, 0x4c, 0xd5, 0x8d, 0x9b, 0xa6, 0x3f, 0x5f, 0xca, 0x04, 0x67, 0xa6, 0xe9, 0x4c, 0x89, 0xbe, 0x85, 0x2f, 0xe2, 0x7b, 0xb0, 0x64, 0x69, 0x5c, 0x10, 0x03, 0x2f, 0x62, 0x98, 0xb6, 0xe8, 0x6a, 0xe6, 0x3b, 0xe7, 0xcc, 0xf9, 0x4e, 0xe6, 0xa0, 0x33, 0xa9, 0x32, 0x1a, 0x83, 0x2b, 0x55, 0x30, 0x07, 0x1a, 0x46, 0x6e, 0x10, 0xc7, 0x19, 0x48, @@ -138,9 +138,9 @@ var fileDescriptor_6491082275bcb473 = []byte{ 0xbc, 0x03, 0x8d, 0x4f, 0xe4, 0x5d, 0x81, 0xe2, 0x63, 0xf4, 0x1f, 0x52, 0x11, 0xcd, 0x7c, 0x9e, 0xb3, 0x10, 0x32, 0xd2, 0x1e, 0x98, 0x76, 0xdd, 0xfb, 0xa7, 0xb1, 0x5b, 0x0d, 0x8d, 0xa7, 0xcb, 0x8d, 0x65, 0xae, 0x36, 0x96, 0xf9, 0xb5, 0xb1, 0xcc, 0xb7, 0xad, 0x65, 0xac, 0xb6, 0x96, 0xf1, - 0xb1, 0xb5, 0x8c, 0xa7, 0xf3, 0x5f, 0x61, 0xef, 0xf5, 0xdf, 0x0f, 0xa7, 0x41, 0x28, 0xdd, 0xb2, - 0xb0, 0xc5, 0x68, 0xe4, 0xbe, 0xfc, 0xd4, 0xa6, 0xc3, 0x87, 0x4d, 0x5d, 0xc2, 0xc5, 0x77, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x49, 0x7c, 0xda, 0xeb, 0xd6, 0x01, 0x00, 0x00, + 0xb1, 0xb5, 0x8c, 0xa7, 0xd1, 0xaf, 0xb0, 0xf7, 0xfa, 0xef, 0x87, 0xd3, 0x20, 0x94, 0x6e, 0x59, + 0xd8, 0xe2, 0x7c, 0xe4, 0xbe, 0xfc, 0xd4, 0xa6, 0xc3, 0x87, 0x4d, 0x5d, 0xc2, 0xc5, 0x77, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xb1, 0x91, 0x8d, 0x19, 0xd6, 0x01, 0x00, 0x00, } func (m *AddressUnbonding) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index fadefcf64a..9d4ec667b4 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -480,30 +480,30 @@ var fileDescriptor_f41c99b09b96a5ac = []byte{ // 631 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x6e, 0xd3, 0x4c, 0x14, 0xc5, 0xe3, 0xa6, 0xea, 0xf7, 0xf5, 0x26, 0x25, 0xad, 0x85, 0x20, 0xad, 0x2a, 0x27, 0xb8, - 0x12, 0x54, 0x48, 0xb5, 0x95, 0xb2, 0x42, 0x6c, 0x4a, 0x8b, 0x90, 0x22, 0x15, 0x16, 0xae, 0xca, + 0x12, 0x54, 0x48, 0xb5, 0xd5, 0xb0, 0x42, 0x6c, 0x4a, 0x8b, 0x90, 0x22, 0x15, 0x16, 0xae, 0xca, 0xa2, 0x1b, 0x6b, 0xec, 0x19, 0x25, 0xa3, 0xda, 0x33, 0x91, 0xef, 0x24, 0x05, 0x9e, 0x80, 0x25, 0x5b, 0x1e, 0x01, 0x36, 0xbc, 0x03, 0xab, 0x2e, 0xbb, 0x44, 0x2c, 0x0a, 0x6a, 0x5e, 0x04, 0x8d, 0xff, 0xc4, 0x69, 0x8a, 0x2a, 0xc2, 0x2a, 0xc9, 0xbd, 0x67, 0x72, 0xcf, 0x99, 0xdf, 0xcc, 0x40, 0x0b, 0x55, 0xc2, 0x29, 0x73, 0x51, 0x91, 0x53, 0xc6, 0x83, 0xd0, 0x0d, 0x49, 0x14, 0x05, 0x24, 0x3c, 0x45, 0x67, 0x90, 0x48, 0x25, 0xcd, 0x46, 0x26, 0x70, 0x0a, 0xc1, 0xc6, 0xdd, 0x9e, 0xec, 0xc9, 0xb4, 0xe7, 0xea, 0x6f, 0x99, 0x6c, 0xc3, 0x0a, 0x25, 0xc6, 0x12, 0xdd, 0x80, 0x20, 0x73, - 0x47, 0x9d, 0x80, 0x29, 0xd2, 0x71, 0x43, 0xc9, 0x45, 0xd6, 0xb7, 0xcf, 0xa0, 0x71, 0x34, 0x88, - 0xb8, 0x7a, 0xc1, 0x22, 0xd6, 0x23, 0x8a, 0x4b, 0x61, 0x6e, 0xc2, 0xf2, 0x88, 0x44, 0x9c, 0x12, - 0x25, 0x93, 0xa6, 0xd1, 0x36, 0xb6, 0x97, 0xbd, 0xb2, 0x60, 0xbe, 0x84, 0x25, 0x12, 0xcb, 0xa1, - 0x50, 0xcd, 0x05, 0xdd, 0xda, 0x77, 0xce, 0x2f, 0x5b, 0x95, 0x1f, 0x97, 0xad, 0x87, 0x3d, 0xae, - 0xfa, 0xc3, 0xc0, 0x09, 0x65, 0xec, 0xe6, 0x33, 0xb3, 0x8f, 0x1d, 0xa4, 0xa7, 0xae, 0x7a, 0x37, - 0x60, 0xe8, 0x74, 0x85, 0xf2, 0xf2, 0xd5, 0xf6, 0x57, 0x03, 0x56, 0xf3, 0xa1, 0xec, 0x20, 0xcf, - 0x66, 0xb6, 0xa1, 0xde, 0x97, 0xa8, 0xfc, 0xf7, 0x52, 0x30, 0x9f, 0xd3, 0x7c, 0x3a, 0xe8, 0xda, - 0x89, 0x14, 0xac, 0x4b, 0xcd, 0xc7, 0xb0, 0x46, 0xd9, 0x40, 0x22, 0x57, 0x7e, 0xc2, 0x42, 0x99, - 0x50, 0x2d, 0xd3, 0x4e, 0x16, 0xbd, 0x46, 0xde, 0xf0, 0xd2, 0x7a, 0x97, 0x9a, 0xaf, 0x60, 0x0d, - 0x75, 0x36, 0x9f, 0x4e, 0xc2, 0x61, 0xb3, 0xda, 0xae, 0x6e, 0xd7, 0x76, 0xdb, 0xce, 0xcc, 0xf6, - 0x39, 0x33, 0xbb, 0xe0, 0xad, 0xe2, 0xf5, 0x02, 0xda, 0x1f, 0x0c, 0x58, 0x39, 0x88, 0x08, 0x8f, - 0x27, 0x76, 0x9f, 0xc2, 0xfa, 0x10, 0x59, 0xe2, 0x27, 0x8c, 0xb2, 0x78, 0xa0, 0x55, 0x53, 0xa6, - 0x32, 0xef, 0xf7, 0xb4, 0xc0, 0x9b, 0xf4, 0x27, 0xde, 0xd6, 0xe1, 0xff, 0xb0, 0x4f, 0xb8, 0x28, - 0xec, 0x2f, 0x7b, 0xff, 0xa5, 0xbf, 0xbb, 0xd4, 0x7c, 0x00, 0x75, 0x36, 0x90, 0x61, 0xdf, 0x17, - 0xc3, 0x38, 0x60, 0x49, 0xb3, 0x9a, 0xa6, 0xab, 0xa5, 0xb5, 0xd7, 0x69, 0xc9, 0xfe, 0x6c, 0xc0, - 0xaa, 0xc7, 0xb8, 0x18, 0x31, 0x54, 0x13, 0x37, 0x08, 0x8d, 0x24, 0xaf, 0xf9, 0x39, 0x22, 0xed, - 0xa1, 0xb6, 0xbb, 0xee, 0x64, 0x24, 0x1c, 0x7d, 0x08, 0x9c, 0xfc, 0x10, 0x38, 0x07, 0x92, 0x8b, + 0x47, 0xbb, 0x01, 0x53, 0x64, 0xd7, 0x0d, 0x25, 0x17, 0x59, 0xdf, 0x3e, 0x83, 0xc6, 0xd1, 0x20, + 0xe2, 0xea, 0x05, 0x8b, 0x58, 0x8f, 0x28, 0x2e, 0x85, 0xb9, 0x09, 0xcb, 0x23, 0x12, 0x71, 0x4a, + 0x94, 0x4c, 0x9a, 0x46, 0xdb, 0xd8, 0x5e, 0xf6, 0xca, 0x82, 0xf9, 0x12, 0x96, 0x48, 0x2c, 0x87, + 0x42, 0x35, 0x17, 0x74, 0x6b, 0xdf, 0x39, 0xbf, 0x6c, 0x55, 0x7e, 0x5c, 0xb6, 0x1e, 0xf6, 0xb8, + 0xea, 0x0f, 0x03, 0x27, 0x94, 0xb1, 0x9b, 0xcf, 0xcc, 0x3e, 0x76, 0x90, 0x9e, 0xba, 0xea, 0xdd, + 0x80, 0xa1, 0xd3, 0x15, 0xca, 0xcb, 0x57, 0xdb, 0x5f, 0x0d, 0x58, 0xcd, 0x87, 0xb2, 0x83, 0x3c, + 0x9b, 0xd9, 0x86, 0x7a, 0x5f, 0xa2, 0xf2, 0xdf, 0x4b, 0xc1, 0x7c, 0x4e, 0xf3, 0xe9, 0xa0, 0x6b, + 0x27, 0x52, 0xb0, 0x2e, 0x35, 0x1f, 0xc3, 0x1a, 0x65, 0x03, 0x89, 0x5c, 0xf9, 0x09, 0x0b, 0x65, + 0x42, 0xb5, 0x4c, 0x3b, 0x59, 0xf4, 0x1a, 0x79, 0xc3, 0x4b, 0xeb, 0x5d, 0x6a, 0xbe, 0x82, 0x35, + 0xd4, 0xd9, 0x7c, 0x3a, 0x09, 0x87, 0xcd, 0x6a, 0xbb, 0xba, 0x5d, 0xeb, 0xb4, 0x9d, 0x99, 0xed, + 0x73, 0x66, 0x76, 0xc1, 0x5b, 0xc5, 0xeb, 0x05, 0xb4, 0x3f, 0x18, 0xb0, 0x72, 0x10, 0x11, 0x1e, + 0x4f, 0xec, 0x3e, 0x85, 0xf5, 0x21, 0xb2, 0xc4, 0x4f, 0x18, 0x65, 0xf1, 0x40, 0xab, 0xa6, 0x4c, + 0x65, 0xde, 0xef, 0x69, 0x81, 0x37, 0xe9, 0x4f, 0xbc, 0xad, 0xc3, 0xff, 0x61, 0x9f, 0x70, 0x51, + 0xd8, 0x5f, 0xf6, 0xfe, 0x4b, 0x7f, 0x77, 0xa9, 0xf9, 0x00, 0xea, 0x6c, 0x20, 0xc3, 0xbe, 0x2f, + 0x86, 0x71, 0xc0, 0x92, 0x66, 0x35, 0x4d, 0x57, 0x4b, 0x6b, 0xaf, 0xd3, 0x92, 0xfd, 0xd9, 0x80, + 0x55, 0x8f, 0x71, 0x31, 0x62, 0xa8, 0x26, 0x6e, 0x10, 0x1a, 0x49, 0x5e, 0xf3, 0x73, 0x44, 0xda, + 0x43, 0xad, 0xb3, 0xee, 0x64, 0x24, 0x1c, 0x7d, 0x08, 0x9c, 0xfc, 0x10, 0x38, 0x07, 0x92, 0x8b, 0x7d, 0x57, 0xd3, 0xfb, 0xf2, 0xb3, 0xf5, 0xe8, 0x2f, 0xe8, 0xe9, 0x05, 0xde, 0x9d, 0x62, 0xc4, 0xf3, 0x74, 0xc2, 0x0d, 0x62, 0xd5, 0x59, 0x62, 0xf6, 0x37, 0x03, 0xcc, 0x63, 0x41, 0xe7, 0x47, 0xfd, 0x47, 0x7c, 0x0b, 0xff, 0x8a, 0xcf, 0x7c, 0x06, 0x1b, 0xd9, 0xb6, 0x0e, 0x45, 0x20, 0x05, @@ -514,10 +514,10 @@ var fileDescriptor_f41c99b09b96a5ac = []byte{ 0x29, 0xaa, 0x52, 0xb4, 0x07, 0x55, 0x12, 0xab, 0x0c, 0xd6, 0xdc, 0x37, 0x58, 0x2f, 0xb5, 0xcf, 0x60, 0xad, 0xb0, 0x36, 0x0f, 0xd3, 0x3d, 0xa8, 0x27, 0x65, 0xa2, 0x02, 0xe7, 0xe6, 0x0d, 0x9c, 0x53, 0xb1, 0xbd, 0x6b, 0x2b, 0xf6, 0x0f, 0xcf, 0xaf, 0x2c, 0xe3, 0xe2, 0xca, 0x32, 0x7e, 0x5d, - 0x59, 0xc6, 0xc7, 0xb1, 0x55, 0xb9, 0x18, 0x5b, 0x95, 0xef, 0x63, 0xab, 0x72, 0xb2, 0x3b, 0xe5, - 0xff, 0x28, 0xfd, 0xbf, 0x9d, 0x43, 0x12, 0xa0, 0x9b, 0xbf, 0xa4, 0xa3, 0x4e, 0xc7, 0x7d, 0x5b, - 0xbe, 0xa7, 0x69, 0x9e, 0x60, 0x29, 0x7d, 0x05, 0x9f, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb4, - 0xc6, 0xc3, 0xa3, 0x6f, 0x05, 0x00, 0x00, + 0x59, 0xc6, 0xc7, 0xb1, 0x55, 0xb9, 0x18, 0x5b, 0x95, 0xef, 0x63, 0xab, 0x72, 0xd2, 0x99, 0xf2, + 0x7f, 0x94, 0xfe, 0xdf, 0xce, 0x21, 0x09, 0xd0, 0xcd, 0x5f, 0xd2, 0xd1, 0x6e, 0xc7, 0x7d, 0x5b, + 0xbe, 0xa7, 0x69, 0x9e, 0x60, 0x29, 0x7d, 0x05, 0x9f, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x4c, + 0x2b, 0x94, 0x51, 0x6f, 0x05, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/epoch_tracker.pb.go b/x/stakeibc/types/epoch_tracker.pb.go index 0065e0f47f..dc5af455dd 100644 --- a/x/stakeibc/types/epoch_tracker.pb.go +++ b/x/stakeibc/types/epoch_tracker.pb.go @@ -114,8 +114,8 @@ var fileDescriptor_e7c48143f24adf66 = []byte{ 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x7e, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, - 0x06, 0x4a, 0x99, 0xa1, 0xa1, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, - 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x35, 0x96, 0xf9, 0x3a, 0x01, 0x00, + 0x06, 0x4a, 0x99, 0xa1, 0x91, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, + 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x4d, 0xd8, 0xc1, 0x0b, 0x3a, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/expected_keepers.go b/x/stakeibc/types/expected_keepers.go index 6d27818028..dc22aada7c 100644 --- a/x/stakeibc/types/expected_keepers.go +++ b/x/stakeibc/types/expected_keepers.go @@ -41,6 +41,10 @@ type StakeIBCHooks interface { AfterLiquidStake(ctx sdk.Context, addr sdk.AccAddress) // Must be called after liquid stake is completed } +type ICAOracleKeeper interface { + QueueMetricUpdate(ctx sdk.Context, key, value, metricType, attributes string) +} + type RatelimitKeeper interface { AddDenomToBlacklist(ctx sdk.Context, denom string) RemoveDenomFromBlacklist(ctx sdk.Context, denom string) diff --git a/x/stakeibc/types/genesis.pb.go b/x/stakeibc/types/genesis.pb.go index bf8555e6b5..328bdbda3b 100644 --- a/x/stakeibc/types/genesis.pb.go +++ b/x/stakeibc/types/genesis.pb.go @@ -100,29 +100,29 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/genesis.proto", fileDescriptor_dea81129ed6fb77a) } var fileDescriptor_dea81129ed6fb77a = []byte{ - // 349 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x4e, 0xea, 0x40, - 0x14, 0xc6, 0x5b, 0x18, 0x4a, 0x19, 0xc8, 0xbd, 0x4d, 0x73, 0x13, 0xb8, 0xe4, 0x52, 0xc8, 0x75, - 0xc3, 0xc6, 0x36, 0x60, 0x7c, 0x01, 0x12, 0xa2, 0x36, 0x2c, 0x14, 0x5c, 0xb1, 0x69, 0xda, 0x32, - 0x69, 0x27, 0x08, 0xd3, 0x74, 0x8e, 0x46, 0x7d, 0x0a, 0x57, 0x3e, 0x13, 0x4b, 0x96, 0xae, 0x8c, - 0x81, 0x17, 0x31, 0xed, 0x8c, 0xff, 0xca, 0x6e, 0xce, 0x7c, 0xbf, 0xfc, 0xce, 0x97, 0x83, 0x3b, - 0x1c, 0x52, 0xba, 0x20, 0x0e, 0x07, 0x7f, 0x49, 0x68, 0x10, 0x3a, 0x11, 0x59, 0x13, 0x4e, 0xb9, - 0x9d, 0xa4, 0x0c, 0x98, 0xf9, 0x5b, 0xc4, 0xf6, 0x47, 0xdc, 0xfe, 0x13, 0xb1, 0x88, 0xe5, 0x99, - 0x93, 0xbd, 0x04, 0xd6, 0xfe, 0x57, 0xb4, 0x24, 0x7e, 0xea, 0xaf, 0xa4, 0xa4, 0xdd, 0x2d, 0xa6, - 0x31, 0xe3, 0xe0, 0x3d, 0xb2, 0x35, 0x91, 0xc0, 0x51, 0x11, 0x20, 0x09, 0x0b, 0x63, 0x0f, 0x52, - 0x3f, 0x5c, 0x92, 0x54, 0x40, 0xff, 0x9f, 0x4b, 0xb8, 0x71, 0x26, 0xca, 0xcd, 0xc0, 0x07, 0x62, - 0x9e, 0x62, 0x4d, 0xac, 0x69, 0xa9, 0x3d, 0xb5, 0x5f, 0x1f, 0x36, 0xed, 0x42, 0x59, 0xfb, 0x32, - 0x8f, 0x47, 0x68, 0xf3, 0xda, 0x55, 0xa6, 0x12, 0x36, 0x9b, 0xb8, 0x9a, 0xb0, 0x14, 0x3c, 0xba, - 0x68, 0x95, 0x7a, 0x6a, 0xbf, 0x36, 0xd5, 0xb2, 0xf1, 0x62, 0x61, 0x8e, 0xf1, 0xaf, 0xcf, 0x62, - 0xde, 0x0d, 0xe5, 0xd0, 0xaa, 0xf4, 0xca, 0xfd, 0xfa, 0xf0, 0xef, 0x81, 0xf7, 0x9c, 0x71, 0x98, - 0xb3, 0x35, 0x91, 0xe6, 0x46, 0x2c, 0xe7, 0x09, 0xe5, 0x60, 0x5e, 0x61, 0xf3, 0x47, 0x7d, 0xa1, - 0xc2, 0xb9, 0xaa, 0x73, 0xa0, 0x1a, 0x67, 0xe8, 0xb5, 0x20, 0xa5, 0xce, 0x20, 0xdf, 0xfe, 0x32, - 0xa5, 0x8b, 0xf4, 0xb2, 0x81, 0x5c, 0xa4, 0x23, 0xa3, 0xe2, 0x22, 0x5d, 0x33, 0xaa, 0x2e, 0xd2, - 0x6b, 0x06, 0x76, 0x91, 0x5e, 0x37, 0x1a, 0xa3, 0xc9, 0x66, 0x67, 0xa9, 0xdb, 0x9d, 0xa5, 0xbe, - 0xed, 0x2c, 0xf5, 0x69, 0x6f, 0x29, 0xdb, 0xbd, 0xa5, 0xbc, 0xec, 0x2d, 0x65, 0x3e, 0x8c, 0x28, - 0xc4, 0xb7, 0x81, 0x1d, 0xb2, 0x95, 0x33, 0xcb, 0x17, 0x1f, 0x4f, 0xfc, 0x80, 0x3b, 0xf2, 0xdc, - 0x77, 0x83, 0x81, 0x73, 0xff, 0x75, 0x74, 0x78, 0x48, 0x08, 0x0f, 0xb4, 0xfc, 0xda, 0x27, 0xef, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xec, 0xdc, 0xde, 0x19, 0x02, 0x00, 0x00, + // 346 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcd, 0x4e, 0xc2, 0x40, + 0x14, 0x85, 0x5b, 0x18, 0x4a, 0x19, 0x88, 0x36, 0x8d, 0x09, 0x48, 0xa4, 0x10, 0xdd, 0xb0, 0xb1, + 0x8d, 0x35, 0xbe, 0x00, 0x09, 0x51, 0x1b, 0x16, 0x0a, 0xae, 0xd8, 0x34, 0x6d, 0x99, 0xb4, 0x0d, + 0xc2, 0x34, 0x9d, 0xab, 0x51, 0x9f, 0xc2, 0x95, 0xcf, 0xc4, 0x92, 0xa5, 0x2b, 0x63, 0xe0, 0x45, + 0x4c, 0x3b, 0xe3, 0x5f, 0xd9, 0xcd, 0x9d, 0xf3, 0xe5, 0xbb, 0x27, 0x17, 0x77, 0x18, 0xa4, 0xf1, + 0x8c, 0x58, 0x0c, 0xbc, 0x39, 0x89, 0xfd, 0xc0, 0x0a, 0xc9, 0x92, 0xb0, 0x98, 0x99, 0x49, 0x4a, + 0x81, 0xea, 0xfb, 0x3c, 0x36, 0xbf, 0xe3, 0xf6, 0x41, 0x48, 0x43, 0x9a, 0x67, 0x56, 0xf6, 0xe2, + 0x58, 0xfb, 0xa8, 0x68, 0x49, 0xbc, 0xd4, 0x5b, 0x08, 0x49, 0xbb, 0x5b, 0x4c, 0x23, 0xca, 0xc0, + 0x7d, 0xa1, 0x4b, 0x22, 0x80, 0x93, 0x22, 0x40, 0x12, 0x1a, 0x44, 0x2e, 0xa4, 0x5e, 0x30, 0x27, + 0x29, 0x87, 0x8e, 0xdf, 0x4a, 0xb8, 0x71, 0xc9, 0xcb, 0x4d, 0xc0, 0x03, 0xa2, 0x5f, 0x60, 0x85, + 0xaf, 0x69, 0xc9, 0x3d, 0xb9, 0x5f, 0xb7, 0x9b, 0x66, 0xa1, 0xac, 0x79, 0x93, 0xc7, 0x03, 0xb4, + 0xfa, 0xe8, 0x4a, 0x63, 0x01, 0xeb, 0x4d, 0x5c, 0x4d, 0x68, 0x0a, 0x6e, 0x3c, 0x6b, 0x95, 0x7a, + 0x72, 0xbf, 0x36, 0x56, 0xb2, 0xf1, 0x7a, 0xa6, 0x0f, 0xf1, 0xde, 0x4f, 0x31, 0xf7, 0x3e, 0x66, + 0xd0, 0xaa, 0xf4, 0xca, 0xfd, 0xba, 0x7d, 0xb8, 0xe3, 0xbd, 0xa2, 0x0c, 0xa6, 0x74, 0x49, 0x84, + 0xb9, 0x11, 0x89, 0x79, 0x14, 0x33, 0xd0, 0x6f, 0xb1, 0xfe, 0xaf, 0x3e, 0x57, 0xe1, 0x5c, 0xd5, + 0xd9, 0x51, 0x0d, 0x33, 0xf4, 0x8e, 0x93, 0x42, 0xa7, 0x91, 0x3f, 0x7f, 0x99, 0xd2, 0x41, 0x6a, + 0x59, 0x43, 0x0e, 0x52, 0x91, 0x56, 0x71, 0x90, 0xaa, 0x68, 0x55, 0x07, 0xa9, 0x35, 0x0d, 0x3b, + 0x48, 0xad, 0x6b, 0x8d, 0xc1, 0x68, 0xb5, 0x31, 0xe4, 0xf5, 0xc6, 0x90, 0x3f, 0x37, 0x86, 0xfc, + 0xba, 0x35, 0xa4, 0xf5, 0xd6, 0x90, 0xde, 0xb7, 0x86, 0x34, 0xb5, 0xc3, 0x18, 0xa2, 0x07, 0xdf, + 0x0c, 0xe8, 0xc2, 0x9a, 0xe4, 0x8b, 0x4f, 0x47, 0x9e, 0xcf, 0x2c, 0x71, 0xee, 0xc7, 0x33, 0xdb, + 0x7a, 0xfa, 0x3d, 0x3a, 0x3c, 0x27, 0x84, 0xf9, 0x4a, 0x7e, 0xed, 0xf3, 0xaf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x09, 0x01, 0x8b, 0x2c, 0x19, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index 4dc35a5e30..925228142c 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -88,9 +88,9 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x16, 0xc8, 0x33, 0x3a, 0xf9, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x51, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0xd8, 0x1d, 0xba, - 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0xd0, 0x80, 0x2b, 0x33, 0x34, 0xd4, 0xaf, 0x40, 0x04, 0x5f, 0x49, - 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0xec, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf1, - 0xea, 0x39, 0x3d, 0xa0, 0x01, 0x00, 0x00, + 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0xd0, 0x80, 0x2b, 0x33, 0x34, 0xd2, 0xaf, 0x40, 0x04, 0x5f, 0x49, + 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0xec, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x09, + 0x07, 0x6e, 0xcf, 0xa0, 0x01, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index 287c446f9f..cf24b6f367 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -200,49 +200,49 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 672 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcf, 0x4e, 0xdb, 0x4a, - 0x14, 0xc6, 0xe3, 0x0b, 0x17, 0x92, 0x09, 0xff, 0x32, 0x01, 0x64, 0x40, 0x37, 0xc9, 0x4d, 0xa5, - 0x2a, 0x8b, 0xe2, 0x88, 0xb0, 0x43, 0x6c, 0xf8, 0xa3, 0xaa, 0x41, 0x74, 0x51, 0x57, 0x62, 0xc1, - 0xc6, 0x1a, 0xcf, 0x9c, 0x24, 0x23, 0x9c, 0x99, 0xd4, 0x33, 0x81, 0xd0, 0x47, 0xe8, 0xaa, 0x0f, - 0xd3, 0x87, 0x60, 0x89, 0xba, 0xaa, 0xba, 0x40, 0x15, 0xbc, 0x41, 0x9f, 0xa0, 0xca, 0xd8, 0x4e, - 0x4c, 0xb2, 0x80, 0x4a, 0xac, 0xec, 0x39, 0xdf, 0x77, 0x7e, 0xdf, 0xe8, 0x8c, 0x3d, 0xa8, 0xac, - 0x74, 0xc8, 0x19, 0xd4, 0x95, 0x26, 0x17, 0xc0, 0x7d, 0x5a, 0xef, 0x48, 0xa5, 0xbd, 0xcf, 0x52, - 0x80, 0xd3, 0x0b, 0xa5, 0x96, 0x78, 0x39, 0x32, 0x38, 0x89, 0x61, 0x73, 0xaa, 0xe3, 0x92, 0x04, - 0x9c, 0x11, 0x2d, 0xc3, 0xa8, 0x63, 0xf3, 0xff, 0x49, 0x03, 0xa7, 0xc4, 0x23, 0x94, 0xca, 0xbe, - 0xd0, 0xb1, 0x65, 0xb5, 0x2d, 0xdb, 0xd2, 0xbc, 0xd6, 0x87, 0x6f, 0x71, 0x75, 0x83, 0x4a, 0xd5, - 0x95, 0xca, 0x8b, 0x84, 0x68, 0x11, 0x49, 0xd5, 0x2f, 0x08, 0x65, 0xdf, 0x49, 0xa5, 0xcf, 0xa5, - 0x00, 0xbc, 0x81, 0xb2, 0xb4, 0x43, 0xb8, 0xf0, 0x38, 0xb3, 0xad, 0x8a, 0x55, 0xcb, 0xb9, 0xf3, - 0x66, 0xdd, 0x64, 0xf8, 0x15, 0x5a, 0xa4, 0x52, 0x08, 0xa0, 0x9a, 0x4b, 0xa3, 0xff, 0x63, 0xf4, - 0x85, 0x71, 0xb1, 0xc9, 0x70, 0x15, 0x2d, 0xf8, 0x40, 0x3b, 0xbb, 0x8d, 0x5e, 0x08, 0x2d, 0x3e, - 0xb0, 0x0b, 0x91, 0x27, 0x5d, 0xc3, 0x0e, 0x2a, 0xea, 0x90, 0x08, 0xd5, 0x82, 0xd0, 0xa3, 0x1d, - 0x22, 0x04, 0x04, 0x43, 0xdc, 0x82, 0xb1, 0x16, 0x12, 0xe9, 0x28, 0x52, 0x9a, 0x0c, 0xef, 0x21, - 0x34, 0x9a, 0x83, 0xb2, 0x67, 0x2a, 0x33, 0xb5, 0x7c, 0x63, 0xd3, 0x99, 0x98, 0x9d, 0x73, 0x96, - 0x58, 0xdc, 0x94, 0x1b, 0x7f, 0x40, 0xeb, 0x7e, 0x40, 0xe8, 0x45, 0xc0, 0x95, 0x06, 0xe6, 0xa5, - 0x38, 0xb3, 0x4f, 0x72, 0xd6, 0x52, 0x9d, 0x67, 0x63, 0xe4, 0x09, 0xc2, 0x57, 0x5c, 0x77, 0x58, - 0x48, 0xae, 0x48, 0x90, 0x0c, 0xdf, 0xfe, 0xb7, 0x62, 0xd5, 0xf2, 0x8d, 0xad, 0x29, 0x5c, 0xf3, - 0xe8, 0xe0, 0x20, 0xb2, 0xb8, 0x85, 0x71, 0x5b, 0x5c, 0xc2, 0xfb, 0x28, 0xdf, 0x02, 0x18, 0x41, - 0xe6, 0x9e, 0x86, 0xa0, 0x16, 0x40, 0xd2, 0x7d, 0x82, 0x30, 0x83, 0x00, 0xda, 0xc4, 0x9c, 0x48, - 0x02, 0x99, 0x7f, 0xc6, 0x4e, 0xc6, 0x6d, 0x29, 0x56, 0x08, 0x0c, 0xba, 0xbd, 0x47, 0xac, 0x95, - 0x67, 0xb0, 0xc6, 0x6d, 0x09, 0x6b, 0x0b, 0xe5, 0xb8, 0x4f, 0x3d, 0x06, 0x42, 0x76, 0xed, 0xac, - 0x39, 0xd6, 0x2c, 0xf7, 0xe9, 0xf1, 0x70, 0x8d, 0xff, 0x43, 0xc8, 0xfc, 0x07, 0x91, 0x9a, 0x33, - 0x6a, 0x6e, 0x58, 0x89, 0x64, 0x81, 0x56, 0x03, 0xa2, 0xb4, 0x97, 0xda, 0x4c, 0x48, 0x34, 0xd8, - 0x68, 0x68, 0x3c, 0xdc, 0xbf, 0xb9, 0x2b, 0x67, 0x7e, 0xde, 0x95, 0x5f, 0xb7, 0xb9, 0xee, 0xf4, - 0x7d, 0x87, 0xca, 0x6e, 0xfc, 0x31, 0xc7, 0x8f, 0x6d, 0xc5, 0x2e, 0xea, 0xfa, 0xba, 0x07, 0xca, - 0x39, 0x06, 0xfa, 0xfd, 0xdb, 0x36, 0x8a, 0xbf, 0xf5, 0x63, 0xa0, 0x2e, 0x1e, 0x92, 0xdd, 0x11, - 0xd8, 0x25, 0x1a, 0x30, 0xa0, 0xe5, 0xc9, 0xa8, 0xfc, 0x0b, 0x44, 0x2d, 0x85, 0x8f, 0x63, 0xea, - 0xa8, 0xd8, 0x17, 0xbe, 0x14, 0x8c, 0x8b, 0xb6, 0xd7, 0x0a, 0xe1, 0x53, 0x1f, 0x04, 0xbd, 0xb6, - 0x97, 0x2a, 0x56, 0x6d, 0xd6, 0xc5, 0x23, 0xe9, 0x6d, 0xa2, 0xe0, 0xf7, 0x08, 0x99, 0x69, 0x33, - 0xcf, 0x27, 0x81, 0xbd, 0x68, 0xb6, 0xe4, 0xfc, 0xc5, 0x96, 0x9a, 0x42, 0xbb, 0xb9, 0x88, 0x70, - 0x48, 0x02, 0xfc, 0x06, 0xcd, 0x13, 0xc6, 0x42, 0x50, 0xca, 0xc6, 0x86, 0x85, 0x7f, 0xdf, 0x95, - 0x97, 0xae, 0x49, 0x37, 0xd8, 0xab, 0xc6, 0x42, 0xd5, 0x4d, 0x2c, 0x78, 0x1d, 0xcd, 0x75, 0x48, - 0xa0, 0x81, 0xd9, 0xc5, 0x8a, 0x55, 0xcb, 0xba, 0xf1, 0x0a, 0x07, 0xa8, 0xd8, 0xe5, 0x62, 0xea, - 0x6c, 0x56, 0x5f, 0x60, 0x60, 0x85, 0x2e, 0x17, 0x13, 0x47, 0x33, 0x4c, 0x23, 0x83, 0xa9, 0xb4, - 0xb5, 0x17, 0x49, 0x23, 0x83, 0xc7, 0x69, 0x27, 0xb3, 0xd9, 0xe5, 0x95, 0x95, 0xc3, 0xd3, 0x9b, - 0xfb, 0x92, 0x75, 0x7b, 0x5f, 0xb2, 0x7e, 0xdd, 0x97, 0xac, 0xaf, 0x0f, 0xa5, 0xcc, 0xed, 0x43, - 0x29, 0xf3, 0xe3, 0xa1, 0x94, 0x39, 0x6f, 0xa4, 0x82, 0x3e, 0x9a, 0xdf, 0x61, 0xfb, 0x94, 0xf8, - 0xaa, 0x1e, 0xdf, 0xc8, 0x97, 0x3b, 0x3b, 0xf5, 0xc1, 0xf8, 0x5e, 0x36, 0xc1, 0xfe, 0x9c, 0xb9, - 0x61, 0x77, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x0a, 0x02, 0x65, 0x0a, 0x06, 0x00, 0x00, + // 671 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcd, 0x4e, 0xdb, 0x4e, + 0x14, 0xc5, 0xe3, 0x3f, 0xfc, 0x21, 0x99, 0xf0, 0x95, 0x09, 0x20, 0x03, 0x6a, 0x92, 0xa6, 0x52, + 0x95, 0x45, 0x71, 0xd4, 0xb0, 0x43, 0x6c, 0xf8, 0x50, 0xd5, 0x20, 0xba, 0xa8, 0x2b, 0xb1, 0x60, + 0x63, 0x8d, 0x67, 0x6e, 0x92, 0x11, 0xce, 0x4c, 0xea, 0x99, 0x40, 0xe8, 0x23, 0x74, 0xd5, 0x87, + 0xe9, 0x43, 0xb0, 0x44, 0x5d, 0x55, 0x5d, 0xa0, 0x0a, 0xde, 0xa0, 0x4f, 0x50, 0x65, 0x6c, 0x27, + 0x26, 0x59, 0x40, 0x25, 0x56, 0xf6, 0xdc, 0x73, 0xee, 0xef, 0x8c, 0xee, 0xd8, 0x83, 0xca, 0x4a, + 0x87, 0x9c, 0x41, 0x5d, 0x69, 0x72, 0x0e, 0xdc, 0xa7, 0xf5, 0x8e, 0x54, 0xda, 0xfb, 0x22, 0x05, + 0x38, 0xbd, 0x50, 0x6a, 0x89, 0x97, 0x23, 0x83, 0x93, 0x18, 0x36, 0xa7, 0x3a, 0x2e, 0x48, 0xc0, + 0x19, 0xd1, 0x32, 0x8c, 0x3a, 0x36, 0x5f, 0x4e, 0x1a, 0x38, 0x25, 0x1e, 0xa1, 0x54, 0xf6, 0x85, + 0x8e, 0x2d, 0xab, 0x6d, 0xd9, 0x96, 0xe6, 0xb5, 0x3e, 0x7c, 0x8b, 0xab, 0x1b, 0x54, 0xaa, 0xae, + 0x54, 0x5e, 0x24, 0x44, 0x8b, 0x48, 0xaa, 0x7e, 0x45, 0x28, 0xfb, 0x5e, 0x2a, 0x7d, 0x26, 0x05, + 0xe0, 0x0d, 0x94, 0xa5, 0x1d, 0xc2, 0x85, 0xc7, 0x99, 0x6d, 0x55, 0xac, 0x5a, 0xce, 0x9d, 0x37, + 0xeb, 0x26, 0xc3, 0xaf, 0xd0, 0x22, 0x95, 0x42, 0x00, 0xd5, 0x5c, 0x1a, 0xfd, 0x3f, 0xa3, 0x2f, + 0x8c, 0x8b, 0x4d, 0x86, 0xab, 0x68, 0xc1, 0x07, 0xda, 0xd9, 0x69, 0xf4, 0x42, 0x68, 0xf1, 0x81, + 0x5d, 0x88, 0x3c, 0xe9, 0x1a, 0x76, 0x50, 0x51, 0x87, 0x44, 0xa8, 0x16, 0x84, 0x1e, 0xed, 0x10, + 0x21, 0x20, 0x18, 0xe2, 0x16, 0x8c, 0xb5, 0x90, 0x48, 0x87, 0x91, 0xd2, 0x64, 0x78, 0x17, 0xa1, + 0xd1, 0x1c, 0x94, 0x3d, 0x53, 0x99, 0xa9, 0xe5, 0x1b, 0x9b, 0xce, 0xc4, 0xec, 0x9c, 0xd3, 0xc4, + 0xe2, 0xa6, 0xdc, 0xf8, 0x23, 0x5a, 0xf7, 0x03, 0x42, 0xcf, 0x03, 0xae, 0x34, 0x30, 0x2f, 0xc5, + 0x99, 0x7d, 0x94, 0xb3, 0x96, 0xea, 0x3c, 0x1d, 0x23, 0x8f, 0x11, 0xbe, 0xe4, 0xba, 0xc3, 0x42, + 0x72, 0x49, 0x82, 0x64, 0xf8, 0xf6, 0xff, 0x15, 0xab, 0x96, 0x6f, 0x6c, 0x4d, 0xe1, 0x9a, 0x87, + 0xfb, 0xfb, 0x91, 0xc5, 0x2d, 0x8c, 0xdb, 0xe2, 0x12, 0xde, 0x43, 0xf9, 0x16, 0xc0, 0x08, 0x32, + 0xf7, 0x38, 0x04, 0xb5, 0x00, 0x92, 0xee, 0x63, 0x84, 0x19, 0x04, 0xd0, 0x26, 0xe6, 0x44, 0x12, + 0xc8, 0xfc, 0x13, 0x76, 0x32, 0x6e, 0x4b, 0xb1, 0x42, 0x60, 0xd0, 0xed, 0x3d, 0x60, 0xad, 0x3c, + 0x81, 0x35, 0x6e, 0x4b, 0x58, 0x5b, 0x28, 0xc7, 0x7d, 0xea, 0x31, 0x10, 0xb2, 0x6b, 0x67, 0xcd, + 0xb1, 0x66, 0xb9, 0x4f, 0x8f, 0x86, 0x6b, 0xfc, 0x02, 0x21, 0xf3, 0x1f, 0x44, 0x6a, 0xce, 0xa8, + 0xb9, 0x61, 0x25, 0x92, 0x05, 0x5a, 0x0d, 0x88, 0xd2, 0x5e, 0x6a, 0x33, 0x21, 0xd1, 0x60, 0xa3, + 0xa1, 0xf1, 0x60, 0xef, 0xfa, 0xb6, 0x9c, 0xf9, 0x75, 0x5b, 0x7e, 0xdd, 0xe6, 0xba, 0xd3, 0xf7, + 0x1d, 0x2a, 0xbb, 0xf1, 0xc7, 0x1c, 0x3f, 0xb6, 0x15, 0x3b, 0xaf, 0xeb, 0xab, 0x1e, 0x28, 0xe7, + 0x08, 0xe8, 0x8f, 0xef, 0xdb, 0x28, 0xfe, 0xd6, 0x8f, 0x80, 0xba, 0x78, 0x48, 0x76, 0x47, 0x60, + 0x97, 0x68, 0xc0, 0x80, 0x96, 0x27, 0xa3, 0xf2, 0xcf, 0x10, 0xb5, 0x14, 0x3e, 0x8c, 0xa9, 0xa3, + 0x62, 0x5f, 0xf8, 0x52, 0x30, 0x2e, 0xda, 0x5e, 0x2b, 0x84, 0xcf, 0x7d, 0x10, 0xf4, 0xca, 0x5e, + 0xaa, 0x58, 0xb5, 0x59, 0x17, 0x8f, 0xa4, 0x77, 0x89, 0x82, 0x3f, 0x20, 0x64, 0xa6, 0xcd, 0x3c, + 0x9f, 0x04, 0xf6, 0xa2, 0xd9, 0x92, 0xf3, 0x0f, 0x5b, 0x6a, 0x0a, 0xed, 0xe6, 0x22, 0xc2, 0x01, + 0x09, 0xf0, 0x1b, 0x34, 0x4f, 0x18, 0x0b, 0x41, 0x29, 0x1b, 0x1b, 0x16, 0xfe, 0x73, 0x5b, 0x5e, + 0xba, 0x22, 0xdd, 0x60, 0xb7, 0x1a, 0x0b, 0x55, 0x37, 0xb1, 0xe0, 0x75, 0x34, 0xd7, 0x21, 0x81, + 0x06, 0x66, 0x17, 0x2b, 0x56, 0x2d, 0xeb, 0xc6, 0x2b, 0x1c, 0xa0, 0x62, 0x97, 0x8b, 0xa9, 0xb3, + 0x59, 0x7d, 0x86, 0x81, 0x15, 0xba, 0x5c, 0x4c, 0x1c, 0xcd, 0x30, 0x8d, 0x0c, 0xa6, 0xd2, 0xd6, + 0x9e, 0x25, 0x8d, 0x0c, 0x1e, 0xa6, 0x1d, 0xcf, 0x66, 0x97, 0x57, 0x56, 0x0e, 0x4e, 0xae, 0xef, + 0x4a, 0xd6, 0xcd, 0x5d, 0xc9, 0xfa, 0x7d, 0x57, 0xb2, 0xbe, 0xdd, 0x97, 0x32, 0x37, 0xf7, 0xa5, + 0xcc, 0xcf, 0xfb, 0x52, 0xe6, 0xac, 0x91, 0x0a, 0xfa, 0x64, 0x7e, 0x87, 0xed, 0x13, 0xe2, 0xab, + 0x7a, 0x7c, 0x23, 0x5f, 0xbc, 0x6d, 0xd4, 0x07, 0xe3, 0x7b, 0xd9, 0x04, 0xfb, 0x73, 0xe6, 0x86, + 0xdd, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x0e, 0xe7, 0x55, 0x97, 0x0a, 0x06, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index 9528df8443..11e55f9320 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_2976ae6e7f6ce824 = []byte{ 0x9d, 0x7c, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xec, 0x3a, 0x5d, 0x9f, 0xc4, 0xa4, - 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xea, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, - 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x51, 0x58, 0xe1, + 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xe9, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, + 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xbc, 0x0f, 0x13, 0x71, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/packet.pb.go b/x/stakeibc/types/packet.pb.go index 9be73f81aa..b595355a57 100644 --- a/x/stakeibc/types/packet.pb.go +++ b/x/stakeibc/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_a86fa6a12773333f = []byte{ 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x8d, 0xd6, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xba, 0xbe, 0xcc, - 0xd0, 0x50, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x00, 0xfb, 0x24, 0xe3, 0x00, 0x00, 0x00, + 0xd0, 0x48, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x21, 0xed, 0xac, 0xd6, 0xe3, 0x00, 0x00, 0x00, } func (m *StakeibcPacketData) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index 89389a768d..4fab37501b 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -196,43 +196,43 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/params.proto", fileDescriptor_5aeaab6a38c2b438) } var fileDescriptor_5aeaab6a38c2b438 = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x5b, 0xa8, 0xca, 0xe6, 0x01, 0x6b, 0xc3, 0x3f, 0x6b, 0x82, 0x0c, 0x90, 0x90, 0x18, - 0x83, 0x46, 0x1b, 0x07, 0x10, 0x3b, 0x20, 0x6d, 0xe2, 0x30, 0xb4, 0x4d, 0x55, 0x5b, 0x71, 0xe0, - 0x62, 0x39, 0xce, 0x9b, 0xd6, 0x5a, 0x12, 0x47, 0xb6, 0x53, 0xb2, 0x7d, 0x0a, 0x8e, 0x1c, 0xf9, - 0x38, 0x1c, 0x77, 0xe4, 0x88, 0xda, 0x6f, 0xc0, 0x27, 0x40, 0xb1, 0xd3, 0x74, 0x41, 0x83, 0x5b, - 0xf5, 0x3c, 0xbf, 0xf7, 0xc9, 0xeb, 0xc7, 0x35, 0x7a, 0xa8, 0xb4, 0xe4, 0x01, 0x78, 0x4a, 0xd3, - 0x53, 0xe0, 0x3e, 0xf3, 0x52, 0x2a, 0x69, 0xac, 0x7a, 0xa9, 0x14, 0x5a, 0x38, 0xeb, 0xd6, 0xed, - 0x2d, 0xdc, 0x8d, 0xbb, 0x63, 0x31, 0x16, 0xc6, 0xf3, 0x8a, 0x5f, 0x16, 0x7b, 0xfa, 0xbb, 0x8d, - 0xda, 0x7d, 0x33, 0xe7, 0x6c, 0xa1, 0x8e, 0x84, 0x2f, 0x54, 0x06, 0x8a, 0xf0, 0x44, 0x83, 0x9c, - 0xd2, 0x08, 0x37, 0x1f, 0x37, 0x9f, 0xb7, 0x06, 0xeb, 0xa5, 0x7e, 0x58, 0xca, 0xce, 0x36, 0xea, - 0x06, 0x10, 0xc1, 0x98, 0x6a, 0x58, 0xb2, 0x6d, 0xc3, 0x76, 0x16, 0x46, 0x05, 0x6f, 0xa1, 0x4e, - 0x00, 0xa9, 0x50, 0x5c, 0x2f, 0xd9, 0x6b, 0x36, 0xb7, 0xd4, 0x2b, 0xf4, 0x2d, 0xc2, 0x12, 0x02, - 0x88, 0x53, 0xcd, 0x45, 0x42, 0x64, 0x2d, 0xfe, 0xba, 0x19, 0xb9, 0xbf, 0xf4, 0x07, 0x97, 0x3f, - 0xb2, 0x8d, 0xba, 0xf6, 0xc0, 0x84, 0x89, 0x38, 0xe6, 0x4a, 0x71, 0x91, 0xe0, 0x96, 0xdd, 0xc8, - 0x1a, 0x07, 0x95, 0x5e, 0xc0, 0x12, 0x78, 0x32, 0x05, 0x75, 0x69, 0xa5, 0x1b, 0x16, 0x5e, 0x18, - 0x55, 0xf2, 0x0b, 0xd4, 0xe5, 0x8c, 0x12, 0xcd, 0x63, 0x10, 0x99, 0x26, 0x09, 0x4d, 0x84, 0xc2, - 0xab, 0x76, 0x7f, 0xce, 0xe8, 0xc8, 0xea, 0x27, 0x85, 0xec, 0x6c, 0xa2, 0x35, 0x3f, 0x0b, 0x43, - 0x90, 0x44, 0xf1, 0x73, 0xc0, 0xc8, 0x50, 0xc8, 0x4a, 0x43, 0x7e, 0x0e, 0xce, 0x4b, 0xe4, 0x70, - 0x9f, 0x55, 0x61, 0x7e, 0x24, 0xd8, 0xa9, 0xc2, 0x6b, 0xf6, 0xd3, 0xdc, 0x67, 0x65, 0xda, 0xbe, - 0xd1, 0x9d, 0x3d, 0xb4, 0x11, 0x02, 0x10, 0x2d, 0x69, 0xa2, 0x8a, 0xd0, 0xfa, 0x0e, 0x37, 0xcd, - 0xd4, 0x83, 0x10, 0x60, 0x54, 0x02, 0xb5, 0x5d, 0xde, 0xa3, 0x47, 0x31, 0xcd, 0x89, 0xb9, 0x7f, - 0x52, 0x9c, 0x80, 0xd1, 0x28, 0x52, 0x24, 0x05, 0x49, 0x20, 0x15, 0x6c, 0x82, 0x6f, 0x99, 0x79, - 0x1c, 0xd3, 0x7c, 0x58, 0x30, 0x87, 0x8c, 0x1e, 0x14, 0x44, 0x1f, 0xe4, 0x87, 0xc2, 0x77, 0xfa, - 0xe8, 0x59, 0x00, 0x21, 0xcd, 0x22, 0x4d, 0x62, 0x9e, 0x90, 0xbf, 0x2f, 0x46, 0x4f, 0x24, 0xa8, - 0x89, 0x88, 0x02, 0x7c, 0xdb, 0x04, 0x3d, 0x29, 0xe1, 0x63, 0x9e, 0x0c, 0x6a, 0x77, 0x34, 0x5a, - 0x80, 0xb5, 0x44, 0x9a, 0xff, 0x27, 0x71, 0xbd, 0x9e, 0x48, 0xf3, 0x7f, 0x25, 0xee, 0xa1, 0x0d, - 0xd3, 0xe7, 0xd5, 0x0d, 0x75, 0x6c, 0x43, 0x45, 0xaf, 0x57, 0x35, 0xb4, 0x8b, 0xee, 0x29, 0x1a, - 0x82, 0x3e, 0x23, 0x49, 0x16, 0x93, 0x29, 0x8d, 0x78, 0x40, 0xb5, 0x90, 0x0a, 0x77, 0xcd, 0xdc, - 0x1d, 0x6b, 0x9e, 0x64, 0xf1, 0xa7, 0xca, 0x72, 0xde, 0x20, 0x5c, 0xce, 0x98, 0x72, 0x23, 0xaa, - 0x26, 0x45, 0xa5, 0x0c, 0x12, 0x8d, 0x1d, 0x33, 0x56, 0x66, 0x1e, 0xd3, 0x7c, 0x58, 0xb8, 0x7d, - 0x6b, 0xbe, 0x6b, 0x7d, 0xfb, 0xbe, 0xd9, 0xf8, 0xd8, 0x5a, 0x59, 0xe9, 0xac, 0xee, 0x1f, 0xfd, - 0x98, 0xb9, 0xcd, 0x8b, 0x99, 0xdb, 0xfc, 0x35, 0x73, 0x9b, 0x5f, 0xe7, 0x6e, 0xe3, 0x62, 0xee, - 0x36, 0x7e, 0xce, 0xdd, 0xc6, 0xe7, 0xdd, 0x31, 0xd7, 0x93, 0xcc, 0xef, 0x31, 0x11, 0x7b, 0x43, - 0xf3, 0xb7, 0x7d, 0x75, 0x44, 0x7d, 0xe5, 0x95, 0x4f, 0x7d, 0xba, 0xb3, 0xe3, 0xe5, 0xcb, 0x07, - 0xaf, 0xcf, 0x52, 0x50, 0x7e, 0xdb, 0xbc, 0xe4, 0xd7, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xc0, - 0xf3, 0x33, 0xd5, 0x10, 0x04, 0x00, 0x00, + // 568 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0xcf, 0x6e, 0xd3, 0x4c, + 0x14, 0xc5, 0x93, 0xef, 0x8b, 0x42, 0x3b, 0x05, 0x9a, 0x98, 0x7f, 0xa3, 0x0a, 0x5c, 0x40, 0x42, + 0xa2, 0x14, 0x62, 0x11, 0x16, 0x20, 0xba, 0x40, 0x6a, 0xc5, 0xa2, 0xa8, 0xad, 0xa2, 0x24, 0x62, + 0xc1, 0x66, 0x34, 0x1e, 0x5f, 0x27, 0xa3, 0xda, 0x1e, 0x6b, 0x66, 0x1c, 0xdc, 0x3e, 0x05, 0x4b, + 0x96, 0x3c, 0x0e, 0xcb, 0x2e, 0x59, 0xa2, 0xe4, 0x0d, 0x78, 0x02, 0xe4, 0x19, 0xc7, 0xa9, 0x51, + 0x61, 0x17, 0x9d, 0xf3, 0xbb, 0xc7, 0x77, 0xce, 0x64, 0xd0, 0x7d, 0xa5, 0x25, 0x0f, 0xc0, 0x53, + 0x9a, 0x9e, 0x02, 0xf7, 0x99, 0x97, 0x52, 0x49, 0x63, 0xd5, 0x4b, 0xa5, 0xd0, 0xc2, 0xd9, 0xb4, + 0x6e, 0x6f, 0xe9, 0x6e, 0xdd, 0x9e, 0x88, 0x89, 0x30, 0x9e, 0x57, 0xfc, 0xb2, 0xd8, 0xe3, 0x5f, + 0x6d, 0xd4, 0x1e, 0x98, 0x39, 0x67, 0x07, 0x75, 0x24, 0x7c, 0xa6, 0x32, 0x50, 0x84, 0x27, 0x1a, + 0xe4, 0x8c, 0x46, 0xb8, 0xf9, 0xb0, 0xf9, 0xb4, 0x35, 0xdc, 0x2c, 0xf5, 0xc3, 0x52, 0x76, 0x76, + 0x51, 0x37, 0x80, 0x08, 0x26, 0x54, 0xc3, 0x8a, 0x6d, 0x1b, 0xb6, 0xb3, 0x34, 0x2a, 0x78, 0x07, + 0x75, 0x02, 0x48, 0x85, 0xe2, 0x7a, 0xc5, 0xfe, 0x67, 0x73, 0x4b, 0xbd, 0x42, 0xdf, 0x20, 0x2c, + 0x21, 0x80, 0x38, 0xd5, 0x5c, 0x24, 0x44, 0xd6, 0xe2, 0xff, 0x37, 0x23, 0x77, 0x57, 0xfe, 0xf0, + 0xf2, 0x47, 0x76, 0x51, 0xd7, 0x1e, 0x98, 0x30, 0x11, 0xc7, 0x5c, 0x29, 0x2e, 0x12, 0xdc, 0xb2, + 0x1b, 0x59, 0xe3, 0xa0, 0xd2, 0x0b, 0x58, 0x02, 0x4f, 0x66, 0xa0, 0x2e, 0xad, 0x74, 0xcd, 0xc2, + 0x4b, 0xa3, 0x4a, 0x7e, 0x86, 0xba, 0x9c, 0x51, 0xa2, 0x79, 0x0c, 0x22, 0xd3, 0x24, 0xa1, 0x89, + 0x50, 0x78, 0xdd, 0xee, 0xcf, 0x19, 0x1d, 0x5b, 0xfd, 0xa4, 0x90, 0x9d, 0x6d, 0xb4, 0xe1, 0x67, + 0x61, 0x08, 0x92, 0x28, 0x7e, 0x0e, 0x18, 0x19, 0x0a, 0x59, 0x69, 0xc4, 0xcf, 0xc1, 0x79, 0x8e, + 0x1c, 0xee, 0xb3, 0x2a, 0xcc, 0x8f, 0x04, 0x3b, 0x55, 0x78, 0xc3, 0x7e, 0x9a, 0xfb, 0xac, 0x4c, + 0xdb, 0x37, 0xba, 0xb3, 0x87, 0xb6, 0x42, 0x00, 0xa2, 0x25, 0x4d, 0x54, 0x11, 0x5a, 0xdf, 0xe1, + 0xba, 0x99, 0xba, 0x17, 0x02, 0x8c, 0x4b, 0xa0, 0xb6, 0xcb, 0x3b, 0xf4, 0x20, 0xa6, 0x39, 0x31, + 0xf7, 0x4f, 0x8a, 0x13, 0x30, 0x1a, 0x45, 0x8a, 0xa4, 0x20, 0x09, 0xa4, 0x82, 0x4d, 0xf1, 0x0d, + 0x33, 0x8f, 0x63, 0x9a, 0x8f, 0x0a, 0xe6, 0x90, 0xd1, 0x83, 0x82, 0x18, 0x80, 0x7c, 0x5f, 0xf8, + 0xce, 0x00, 0x3d, 0x09, 0x20, 0xa4, 0x59, 0xa4, 0x49, 0xcc, 0x13, 0xf2, 0xe7, 0xc5, 0xe8, 0xa9, + 0x04, 0x35, 0x15, 0x51, 0x80, 0x6f, 0x9a, 0xa0, 0x47, 0x25, 0x7c, 0xcc, 0x93, 0x61, 0xed, 0x8e, + 0xc6, 0x4b, 0xb0, 0x96, 0x48, 0xf3, 0x7f, 0x24, 0x6e, 0xd6, 0x13, 0x69, 0xfe, 0xb7, 0xc4, 0x3d, + 0xb4, 0x65, 0xfa, 0xbc, 0xba, 0xa1, 0x8e, 0x6d, 0xa8, 0xe8, 0xf5, 0xaa, 0x86, 0xfa, 0xe8, 0x8e, + 0xa2, 0x21, 0xe8, 0x33, 0x92, 0x64, 0x31, 0x99, 0xd1, 0x88, 0x07, 0x54, 0x0b, 0xa9, 0x70, 0xd7, + 0xcc, 0xdd, 0xb2, 0xe6, 0x49, 0x16, 0x7f, 0xac, 0x2c, 0xe7, 0x35, 0xc2, 0xe5, 0x8c, 0x29, 0x37, + 0xa2, 0x6a, 0x5a, 0x54, 0xca, 0x20, 0xd1, 0xd8, 0x31, 0x63, 0x65, 0xe6, 0x31, 0xcd, 0x47, 0x85, + 0x3b, 0xb0, 0xe6, 0xdb, 0xd6, 0xd7, 0x6f, 0xdb, 0x8d, 0x0f, 0xad, 0xb5, 0xb5, 0xce, 0xfa, 0xfe, + 0xd1, 0xf7, 0xb9, 0xdb, 0xbc, 0x98, 0xbb, 0xcd, 0x9f, 0x73, 0xb7, 0xf9, 0x65, 0xe1, 0x36, 0x2e, + 0x16, 0x6e, 0xe3, 0xc7, 0xc2, 0x6d, 0x7c, 0xea, 0x4f, 0xb8, 0x9e, 0x66, 0x7e, 0x8f, 0x89, 0xd8, + 0x1b, 0x99, 0xbf, 0xed, 0x8b, 0x23, 0xea, 0x2b, 0xaf, 0x7c, 0xea, 0xb3, 0x97, 0x7d, 0x2f, 0x5f, + 0x3d, 0x78, 0x7d, 0x96, 0x82, 0xf2, 0xdb, 0xe6, 0x25, 0xbf, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, + 0x38, 0x1e, 0x64, 0x27, 0x10, 0x04, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/query.pb.go b/x/stakeibc/types/query.pb.go index 190045516c..a278915d9e 100644 --- a/x/stakeibc/types/query.pb.go +++ b/x/stakeibc/types/query.pb.go @@ -1028,8 +1028,8 @@ var fileDescriptor_494b786fe66f2b80 = []byte{ 0xe3, 0x86, 0xba, 0x31, 0xa0, 0xe1, 0x05, 0xa5, 0xaa, 0xf3, 0x5c, 0x19, 0x27, 0xea, 0xd2, 0xb5, 0x77, 0xf7, 0x5f, 0x9c, 0xe5, 0xb5, 0x97, 0x67, 0x79, 0xed, 0xef, 0xb3, 0xbc, 0xf6, 0xec, 0x3c, 0x3f, 0xf4, 0xf2, 0x3c, 0x3f, 0xf4, 0xd7, 0x79, 0x7e, 0xe8, 0x51, 0xb1, 0x66, 0xfb, 0xf5, 0x56, - 0xb5, 0x60, 0xf2, 0x46, 0x5a, 0xd8, 0xc3, 0xcd, 0x4d, 0xe3, 0xa8, 0x13, 0xdc, 0x3f, 0x6e, 0x52, - 0xaf, 0x3a, 0x2a, 0xfe, 0x59, 0x6d, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0xce, 0xcb, 0xe4, 0xec, + 0xb5, 0x60, 0xf2, 0x46, 0x5a, 0xd8, 0xc3, 0xcd, 0xa2, 0x71, 0xd4, 0x09, 0xee, 0x1f, 0x37, 0xa9, + 0x57, 0x1d, 0x15, 0xff, 0xac, 0xb6, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x36, 0x26, 0xb3, 0x1e, 0x97, 0x0e, 0x00, 0x00, } diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index d466c649c6..1a5248c6dd 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1189,8 +1189,8 @@ var fileDescriptor_9b7e09c9ad51cd54 = []byte{ 0xfa, 0xef, 0x22, 0xe4, 0xb5, 0xab, 0x10, 0xa1, 0xef, 0xf2, 0xde, 0x8b, 0xf3, 0xac, 0xf0, 0xf2, 0x3c, 0x2b, 0xfc, 0x7d, 0x9e, 0x15, 0x7e, 0xba, 0xc8, 0xa6, 0x5e, 0x5e, 0x64, 0x53, 0x7f, 0x5e, 0x64, 0x53, 0x87, 0xa5, 0xc8, 0x6d, 0xef, 0x80, 0x79, 0x5b, 0xdf, 0x43, 0x35, 0x5a, 0x0c, 0x3e, - 0x62, 0x4f, 0x37, 0x36, 0x8a, 0xed, 0xc8, 0x87, 0xb1, 0x77, 0xfb, 0xab, 0x8d, 0xb1, 0xcf, 0xd2, - 0xcd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x51, 0x9a, 0x88, 0x38, 0x0f, 0x00, 0x00, + 0x62, 0x4f, 0x37, 0x4a, 0xc5, 0x76, 0xe4, 0xc3, 0xd8, 0xbb, 0xfd, 0xd5, 0xc6, 0xd8, 0x67, 0xe9, + 0xe6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xbc, 0xcd, 0x7a, 0x38, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index 1e41a0bf7e..b5aec1a94a 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -148,34 +148,34 @@ func init() { proto.RegisterFile("stride/stakeibc/validator.proto", fileDescript var fileDescriptor_5d2f32e16bd6ab8f = []byte{ // 439 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x3d, 0x6f, 0xdb, 0x30, - 0x10, 0x35, 0x53, 0xc5, 0x89, 0x99, 0x7e, 0x04, 0x84, 0x1b, 0xa8, 0x1e, 0x64, 0x37, 0x43, 0xe0, - 0xc5, 0x12, 0xe2, 0xae, 0x5d, 0x62, 0xa4, 0x43, 0x83, 0xa0, 0x83, 0x9c, 0x76, 0x28, 0x0a, 0x08, - 0x94, 0x74, 0x90, 0x08, 0x5b, 0xa4, 0x41, 0x5e, 0xd2, 0x74, 0xeb, 0x4f, 0xe8, 0x0f, 0xe9, 0x98, - 0xb5, 0x7b, 0xc6, 0x20, 0x53, 0xd1, 0x21, 0x28, 0xec, 0x3f, 0x52, 0x94, 0xa2, 0x92, 0xa0, 0xe8, - 0x92, 0x89, 0xe4, 0xe3, 0xe3, 0xbd, 0xf7, 0x78, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, - 0x67, 0x20, 0xd2, 0x2c, 0x3a, 0xe3, 0x73, 0x91, 0x73, 0x54, 0x3a, 0x5c, 0x68, 0x85, 0x8a, 0x3d, - 0xab, 0x09, 0x61, 0x43, 0xe8, 0xbd, 0xc8, 0x94, 0xa9, 0x94, 0x49, 0xec, 0x75, 0x54, 0x1f, 0x6a, - 0x6e, 0xaf, 0x5b, 0xa8, 0x42, 0xd5, 0xf8, 0xdf, 0x5d, 0x8d, 0xee, 0xfe, 0x20, 0xf4, 0xf9, 0x87, - 0xa6, 0xea, 0x9b, 0xf3, 0xac, 0xe4, 0xb2, 0x80, 0x98, 0x23, 0xb0, 0xaf, 0x84, 0x06, 0x42, 0x22, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0xbf, 0x6f, 0x13, 0x31, + 0x14, 0x8e, 0xcb, 0x35, 0x6d, 0x5c, 0x7e, 0x54, 0x56, 0xa8, 0x8e, 0x0c, 0x97, 0xd0, 0xa1, 0xca, + 0x92, 0x3b, 0x11, 0x56, 0x96, 0x46, 0x65, 0xa0, 0xaa, 0x18, 0x2e, 0x85, 0x01, 0x21, 0x9d, 0x7c, + 0x77, 0x4f, 0x77, 0x56, 0x72, 0x76, 0x64, 0xbf, 0x96, 0xb2, 0xf1, 0x27, 0xf0, 0x87, 0x30, 0x76, + 0x65, 0xef, 0x58, 0x75, 0x42, 0x0c, 0x15, 0x4a, 0xfe, 0x11, 0x84, 0xcf, 0xd7, 0x46, 0x88, 0x85, + 0xc9, 0xf6, 0xe7, 0xcf, 0xef, 0xfb, 0x3e, 0xbf, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, + 0x67, 0x20, 0xd2, 0x2c, 0x3a, 0xe7, 0x73, 0x91, 0x73, 0x54, 0x3a, 0x5c, 0x68, 0x85, 0x8a, 0x3d, + 0xa9, 0x09, 0x61, 0x43, 0xe8, 0x3d, 0xcb, 0x94, 0xa9, 0x94, 0x49, 0xec, 0x75, 0x54, 0x1f, 0x6a, + 0x6e, 0xaf, 0x5b, 0xa8, 0x42, 0xd5, 0xf8, 0x9f, 0x5d, 0x8d, 0xee, 0x7f, 0x27, 0xf4, 0xe9, 0xfb, + 0xa6, 0xea, 0xeb, 0x8b, 0xac, 0xe4, 0xb2, 0x80, 0x98, 0x23, 0xb0, 0x2f, 0x84, 0x06, 0x42, 0x22, 0x68, 0xc9, 0xe7, 0x09, 0xaa, 0x19, 0x48, 0x93, 0xa0, 0x4a, 0x4c, 0xc9, 0x35, 0x98, 0x44, 0x73, - 0x04, 0x9f, 0x0c, 0xc8, 0xb0, 0x33, 0x79, 0x7d, 0x79, 0xd3, 0x6f, 0xfd, 0xba, 0xe9, 0xef, 0x15, - 0x02, 0xcb, 0xd3, 0x34, 0xcc, 0x54, 0xe5, 0x94, 0xdd, 0x32, 0x32, 0xf9, 0x2c, 0xc2, 0x2f, 0x0b, - 0x30, 0xe1, 0x21, 0x64, 0xd7, 0x17, 0x23, 0xea, 0x8c, 0x1d, 0x42, 0x16, 0xf7, 0x1a, 0x8d, 0x13, - 0x2b, 0x71, 0xa2, 0xa6, 0x56, 0xc0, 0x5a, 0x78, 0x49, 0x1f, 0xc3, 0x42, 0x65, 0x65, 0x22, 0x4f, - 0xab, 0x14, 0xb4, 0xbf, 0x36, 0x20, 0x43, 0x2f, 0xde, 0xb2, 0xd8, 0x3b, 0x0b, 0xed, 0x7e, 0x5f, - 0xa3, 0x9d, 0x5b, 0xff, 0x8c, 0x51, 0x4f, 0xf2, 0xca, 0x19, 0x8b, 0xed, 0x9e, 0x8d, 0xe9, 0x06, - 0xcf, 0x73, 0x0d, 0xc6, 0xd8, 0xf7, 0x9d, 0x89, 0x7f, 0x7d, 0x31, 0xea, 0x3a, 0x07, 0x07, 0xf5, - 0xcd, 0x14, 0xb5, 0x90, 0x45, 0xdc, 0x10, 0xd9, 0x7b, 0xfa, 0x34, 0x87, 0x39, 0x14, 0x1c, 0x85, - 0x92, 0x09, 0xaf, 0xd0, 0x5f, 0xb7, 0x4f, 0xc3, 0x07, 0x44, 0x7d, 0x2b, 0x31, 0x7e, 0x72, 0x57, - 0xe5, 0xa0, 0x42, 0xb6, 0x43, 0xdb, 0x9f, 0x41, 0x14, 0x25, 0xfa, 0x6d, 0x9b, 0xc4, 0x9d, 0xd8, - 0x27, 0xba, 0x73, 0xfb, 0xd3, 0xe0, 0x7a, 0x50, 0xff, 0xf0, 0xc6, 0x80, 0x0c, 0xb7, 0xc6, 0x7b, - 0xe1, 0x3f, 0x7d, 0x0e, 0xff, 0xdb, 0xb2, 0xb8, 0xdb, 0x54, 0xb9, 0x8f, 0x1e, 0x79, 0x9b, 0x8f, - 0xb6, 0xbd, 0x23, 0x6f, 0xd3, 0xdb, 0x5e, 0x9f, 0x1c, 0x5f, 0x2e, 0x03, 0x72, 0xb5, 0x0c, 0xc8, - 0xef, 0x65, 0x40, 0xbe, 0xad, 0x82, 0xd6, 0xd5, 0x2a, 0x68, 0xfd, 0x5c, 0x05, 0xad, 0x8f, 0xe3, - 0x7b, 0x91, 0xa6, 0x56, 0x6d, 0x74, 0xcc, 0x53, 0x13, 0xb9, 0x11, 0x3c, 0xdb, 0xdf, 0x8f, 0xce, - 0xef, 0x06, 0xd1, 0x46, 0x4c, 0xdb, 0x76, 0x86, 0x5e, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x91, - 0x62, 0x30, 0xab, 0xa8, 0x02, 0x00, 0x00, + 0x04, 0x9f, 0x0c, 0xc8, 0xb0, 0x33, 0x79, 0x75, 0x75, 0xdb, 0x6f, 0xfd, 0xbc, 0xed, 0x1f, 0x14, + 0x02, 0xcb, 0xb3, 0x34, 0xcc, 0x54, 0xe5, 0x94, 0xdd, 0x32, 0x32, 0xf9, 0x2c, 0xc2, 0xcf, 0x0b, + 0x30, 0xe1, 0x11, 0x64, 0x37, 0x97, 0x23, 0xea, 0x8c, 0x1d, 0x41, 0x16, 0xf7, 0x1a, 0x8d, 0x53, + 0x2b, 0x71, 0xaa, 0xa6, 0x56, 0xc0, 0x5a, 0x78, 0x4e, 0x1f, 0xc2, 0x42, 0x65, 0x65, 0x22, 0xcf, + 0xaa, 0x14, 0xb4, 0xbf, 0x31, 0x20, 0x43, 0x2f, 0xde, 0xb1, 0xd8, 0x5b, 0x0b, 0xed, 0x7f, 0xdb, + 0xa0, 0x9d, 0x3b, 0xff, 0x8c, 0x51, 0x4f, 0xf2, 0xca, 0x19, 0x8b, 0xed, 0x9e, 0x8d, 0xe9, 0x16, + 0xcf, 0x73, 0x0d, 0xc6, 0xd8, 0xf7, 0x9d, 0x89, 0x7f, 0x73, 0x39, 0xea, 0x3a, 0x07, 0x87, 0xf5, + 0xcd, 0x14, 0xb5, 0x90, 0x45, 0xdc, 0x10, 0xd9, 0x3b, 0xfa, 0x38, 0x87, 0x39, 0x14, 0x1c, 0x85, + 0x92, 0x09, 0xaf, 0xd0, 0xdf, 0xb4, 0x4f, 0xc3, 0xff, 0x88, 0xfa, 0x46, 0x62, 0xfc, 0xe8, 0xbe, + 0xca, 0x61, 0x85, 0x6c, 0x8f, 0xb6, 0x3f, 0x81, 0x28, 0x4a, 0xf4, 0xdb, 0x36, 0x89, 0x3b, 0xb1, + 0x8f, 0x74, 0xef, 0xee, 0xa7, 0xc1, 0xf5, 0xa0, 0xfe, 0xe1, 0xad, 0x01, 0x19, 0xee, 0x8c, 0x0f, + 0xc2, 0xbf, 0xfa, 0x1c, 0xfe, 0xb3, 0x65, 0x71, 0xb7, 0xa9, 0xb2, 0x8e, 0x1e, 0x7b, 0xdb, 0x0f, + 0x76, 0xbd, 0x63, 0x6f, 0xdb, 0xdb, 0xdd, 0x9c, 0x9c, 0x5c, 0x2d, 0x03, 0x72, 0xbd, 0x0c, 0xc8, + 0xaf, 0x65, 0x40, 0xbe, 0xae, 0x82, 0xd6, 0xf5, 0x2a, 0x68, 0xfd, 0x58, 0x05, 0xad, 0x0f, 0xe3, + 0xb5, 0x48, 0x53, 0xab, 0x36, 0x3a, 0xe1, 0xa9, 0x89, 0xdc, 0x08, 0x9e, 0xbf, 0x18, 0x47, 0x17, + 0xf7, 0x83, 0x68, 0x23, 0xa6, 0x6d, 0x3b, 0x43, 0x2f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x69, + 0x8f, 0x67, 0x59, 0xa8, 0x02, 0x00, 0x00, } func (m *ValidatorExchangeRate) Marshal() (dAtA []byte, err error) { From 7d212ae5bc2a3453f2dc5158fd20890129295e63 Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 10 Aug 2023 12:06:18 -0500 Subject: [PATCH 16/44] V13 import paths (#891) --- app/app.go | 76 ++++----- app/apptesting/test_helpers.go | 4 +- app/proposals_whitelisting.go | 6 +- app/test_setup.go | 4 +- app/upgrades.go | 36 ++--- app/upgrades/v10/upgrades.go | 24 +-- app/upgrades/v10/upgrades_test.go | 24 +-- app/upgrades/v3/upgrades.go | 6 +- app/upgrades/v3/upgrades_test.go | 2 +- app/upgrades/v4/upgrades_test.go | 2 +- app/upgrades/v5/upgrades.go | 20 +-- app/upgrades/v5/upgrades_test.go | 28 ++-- app/upgrades/v6/upgrades.go | 2 +- app/upgrades/v6/upgrades_test.go | 8 +- app/upgrades/v7/upgrades.go | 14 +- app/upgrades/v7/upgrades_test.go | 12 +- app/upgrades/v8/upgrades.go | 12 +- app/upgrades/v8/upgrades_test.go | 10 +- app/upgrades/v9/upgrades.go | 2 +- app/upgrades/v9/upgrades_test.go | 14 +- cmd/consumer.go | 2 +- cmd/strided/main.go | 6 +- cmd/strided/root.go | 4 +- go.mod | 2 +- proto/cosmwasm/wasm/v1/cosmwasm.proto | 2 +- proto/stride/autopilot/genesis.proto | 2 +- proto/stride/autopilot/params.proto | 2 +- proto/stride/autopilot/query.proto | 2 +- proto/stride/claim/claim.proto | 2 +- proto/stride/claim/genesis.proto | 2 +- proto/stride/claim/params.proto | 2 +- proto/stride/claim/query.proto | 2 +- proto/stride/claim/tx.proto | 2 +- proto/stride/epochs/genesis.proto | 2 +- proto/stride/epochs/query.proto | 4 +- proto/stride/icacallbacks/callback_data.proto | 2 +- proto/stride/icacallbacks/genesis.proto | 2 +- proto/stride/icacallbacks/packet.proto | 2 +- proto/stride/icacallbacks/params.proto | 2 +- proto/stride/icacallbacks/query.proto | 2 +- proto/stride/icacallbacks/tx.proto | 2 +- proto/stride/icaoracle/callbacks.proto | 2 +- proto/stride/icaoracle/contract.proto | 2 +- proto/stride/icaoracle/genesis.proto | 2 +- proto/stride/icaoracle/icaoracle.proto | 2 +- proto/stride/icaoracle/query.proto | 2 +- proto/stride/icaoracle/tx.proto | 2 +- proto/stride/interchainquery/v1/genesis.proto | 2 +- .../stride/interchainquery/v1/messages.proto | 2 +- proto/stride/interchainquery/v1/query.proto | 2 +- proto/stride/mint/v1beta1/genesis.proto | 2 +- proto/stride/mint/v1beta1/mint.proto | 2 +- proto/stride/mint/v1beta1/query.proto | 2 +- proto/stride/ratelimit/genesis.proto | 2 +- proto/stride/ratelimit/gov.proto | 2 +- proto/stride/ratelimit/params.proto | 2 +- proto/stride/ratelimit/query.proto | 2 +- proto/stride/ratelimit/ratelimit.proto | 2 +- proto/stride/records/callbacks.proto | 2 +- proto/stride/records/genesis.proto | 2 +- proto/stride/records/query.proto | 2 +- proto/stride/stakeibc/address_unbonding.proto | 2 +- proto/stride/stakeibc/callbacks.proto | 2 +- proto/stride/stakeibc/epoch_tracker.proto | 2 +- proto/stride/stakeibc/genesis.proto | 2 +- proto/stride/stakeibc/gov.proto | 2 +- proto/stride/stakeibc/host_zone.proto | 2 +- proto/stride/stakeibc/ica_account.proto | 2 +- proto/stride/stakeibc/packet.proto | 2 +- proto/stride/stakeibc/params.proto | 2 +- proto/stride/stakeibc/query.proto | 2 +- proto/stride/stakeibc/tx.proto | 2 +- proto/stride/stakeibc/validator.proto | 2 +- proto/stride/vesting/tx.proto | 2 +- proto/stride/vesting/vesting.proto | 2 +- scripts/protocgen.sh | 2 +- testutil/keeper/claim.go | 4 +- testutil/keeper/epochs.go | 4 +- testutil/keeper/icacallbacks.go | 4 +- testutil/keeper/interchainquery.go | 4 +- testutil/keeper/records.go | 4 +- testutil/keeper/stakeibc.go | 4 +- testutil/network/network.go | 4 +- utils/utils.go | 6 +- x/autopilot/client/cli/query.go | 2 +- x/autopilot/genesis.go | 4 +- x/autopilot/genesis_test.go | 6 +- x/autopilot/handler.go | 4 +- x/autopilot/keeper/airdrop.go | 8 +- x/autopilot/keeper/airdrop_test.go | 10 +- x/autopilot/keeper/grpc_query_params.go | 2 +- x/autopilot/keeper/grpc_query_params_test.go | 2 +- x/autopilot/keeper/keeper.go | 6 +- x/autopilot/keeper/keeper_test.go | 4 +- x/autopilot/keeper/liquidstake.go | 6 +- x/autopilot/keeper/liquidstake_test.go | 14 +- x/autopilot/keeper/params.go | 2 +- x/autopilot/keeper/params_test.go | 2 +- x/autopilot/module.go | 6 +- x/autopilot/module_ibc.go | 4 +- x/autopilot/types/genesis.pb.go | 4 +- x/autopilot/types/genesis_test.go | 2 +- x/autopilot/types/params.pb.go | 4 +- x/autopilot/types/parser_test.go | 4 +- x/autopilot/types/query.pb.go | 6 +- x/claim/client/cli/cli_test.go | 14 +- x/claim/client/cli/query.go | 2 +- x/claim/client/cli/tx.go | 2 +- x/claim/client/cli/tx_claim_free_amount.go | 2 +- x/claim/client/cli/tx_create_airdrop.go | 2 +- x/claim/client/cli/tx_delete_airdrop.go | 2 +- .../client/cli/tx_set_airdrop_allocations.go | 2 +- x/claim/genesis_test.go | 6 +- x/claim/handler.go | 4 +- x/claim/keeper/claim.go | 8 +- x/claim/keeper/claim_test.go | 10 +- x/claim/keeper/genesis.go | 2 +- x/claim/keeper/grpc_query.go | 2 +- x/claim/keeper/hooks.go | 6 +- x/claim/keeper/hooks_test.go | 6 +- x/claim/keeper/keeper.go | 2 +- x/claim/keeper/keeper_test.go | 6 +- x/claim/keeper/msg_server.go | 2 +- x/claim/keeper/msg_server_test.go | 4 +- x/claim/keeper/params.go | 2 +- x/claim/migrations/v2/convert.go | 4 +- x/claim/migrations/v2/convert_test.go | 4 +- x/claim/migrations/v2/migrations.go | 4 +- x/claim/module.go | 6 +- x/claim/types/claim.pb.go | 52 +++--- x/claim/types/expected_keepers.go | 2 +- x/claim/types/genesis.pb.go | 6 +- x/claim/types/msgs.go | 2 +- x/claim/types/params.pb.go | 64 ++++---- x/claim/types/query.pb.go | 148 +++++++++--------- x/claim/types/tx.pb.go | 84 +++++----- x/claim/vesting/client/cli/tx.go | 2 +- x/claim/vesting/client/testutil/suite.go | 2 +- x/claim/vesting/handler.go | 2 +- x/claim/vesting/module.go | 4 +- x/claim/vesting/msg_server.go | 2 +- x/claim/vesting/types/codec.go | 2 +- x/claim/vesting/types/common_test.go | 2 +- x/claim/vesting/types/tx.pb.go | 4 +- x/claim/vesting/types/vesting.pb.go | 76 ++++----- x/claim/vesting/types/vesting_account.go | 4 +- x/claim/vesting/types/vesting_account_test.go | 2 +- x/epochs/client/cli/query.go | 2 +- x/epochs/genesis.go | 4 +- x/epochs/genesis_test.go | 8 +- x/epochs/handler.go | 4 +- x/epochs/keeper/abci.go | 4 +- x/epochs/keeper/abci_test.go | 4 +- x/epochs/keeper/epoch.go | 2 +- x/epochs/keeper/epoch_test.go | 2 +- x/epochs/keeper/grpc_query.go | 2 +- x/epochs/keeper/grpc_query_test.go | 2 +- x/epochs/keeper/hooks.go | 2 +- x/epochs/keeper/keeper.go | 2 +- x/epochs/keeper/keeper_test.go | 4 +- x/epochs/module.go | 8 +- x/epochs/simulation/genesis.go | 2 +- x/epochs/types/genesis.pb.go | 62 ++++---- x/epochs/types/query.pb.go | 58 +++---- x/icacallbacks/client/cli/query.go | 2 +- .../client/cli/query_callback_data.go | 2 +- .../client/cli/query_callback_data_test.go | 8 +- x/icacallbacks/client/cli/query_params.go | 2 +- x/icacallbacks/client/cli/tx.go | 2 +- x/icacallbacks/genesis.go | 4 +- x/icacallbacks/genesis_test.go | 8 +- x/icacallbacks/handler.go | 4 +- x/icacallbacks/ibc_module.go | 4 +- x/icacallbacks/icacallbacks.go | 2 +- x/icacallbacks/icacallbacks_test.go | 6 +- x/icacallbacks/keeper/callback_data.go | 2 +- x/icacallbacks/keeper/callback_data_test.go | 8 +- x/icacallbacks/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_callback_data.go | 2 +- .../keeper/grpc_query_callback_data_test.go | 6 +- x/icacallbacks/keeper/grpc_query_params.go | 2 +- .../keeper/grpc_query_params_test.go | 4 +- x/icacallbacks/keeper/keeper.go | 2 +- x/icacallbacks/keeper/msg_server.go | 2 +- x/icacallbacks/keeper/params.go | 2 +- x/icacallbacks/keeper/params_test.go | 4 +- x/icacallbacks/migrations/v2/convert.go | 6 +- x/icacallbacks/migrations/v2/convert_test.go | 4 +- x/icacallbacks/migrations/v2/migrations.go | 2 +- x/icacallbacks/module.go | 6 +- x/icacallbacks/module_simulation.go | 6 +- x/icacallbacks/types/callback_data.pb.go | 4 +- x/icacallbacks/types/genesis.pb.go | 6 +- x/icacallbacks/types/genesis_test.go | 2 +- x/icacallbacks/types/packet.pb.go | 4 +- x/icacallbacks/types/params.pb.go | 4 +- x/icacallbacks/types/query.pb.go | 68 ++++---- x/icacallbacks/types/tx.pb.go | 4 +- x/icaoracle/client/cli/cli_test.go | 10 +- x/icaoracle/client/cli/query.go | 2 +- x/icaoracle/client/cli/query_test.go | 2 +- x/icaoracle/client/cli/tx.go | 2 +- x/icaoracle/client/cli/tx_test.go | 2 +- x/icaoracle/ibc_middleware.go | 2 +- x/icaoracle/keeper/events.go | 2 +- x/icaoracle/keeper/genesis.go | 2 +- x/icaoracle/keeper/genesis_test.go | 2 +- x/icaoracle/keeper/grpc_query.go | 2 +- x/icaoracle/keeper/grpc_query_test.go | 2 +- x/icaoracle/keeper/ibc.go | 4 +- x/icaoracle/keeper/ibc_test.go | 4 +- x/icaoracle/keeper/icacallbacks.go | 2 +- .../keeper/icacallbacks_instantiate_oracle.go | 6 +- .../icacallbacks_instantiate_oracle_test.go | 4 +- .../keeper/icacallbacks_update_oracle.go | 6 +- .../keeper/icacallbacks_update_oracle_test.go | 4 +- x/icaoracle/keeper/icaoracle.go | 2 +- x/icaoracle/keeper/icaoracle_test.go | 6 +- x/icaoracle/keeper/keeper.go | 2 +- x/icaoracle/keeper/keeper_test.go | 6 +- x/icaoracle/keeper/metric.go | 2 +- x/icaoracle/keeper/metric_test.go | 2 +- x/icaoracle/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_oracle_test.go | 2 +- .../msg_server_instantiate_oracle_test.go | 4 +- .../keeper/msg_server_remove_oracle_test.go | 2 +- .../msg_server_restore_oracle_ica_test.go | 2 +- .../keeper/msg_server_toggle_oracle_test.go | 2 +- x/icaoracle/keeper/oracle.go | 2 +- x/icaoracle/keeper/oracle_test.go | 2 +- x/icaoracle/module.go | 6 +- x/icaoracle/types/callbacks.pb.go | 6 +- x/icaoracle/types/contract.pb.go | 46 +++--- x/icaoracle/types/cosmwasm.pb.go | 50 +++--- x/icaoracle/types/expected_keepers.go | 2 +- x/icaoracle/types/genesis.pb.go | 4 +- x/icaoracle/types/genesis_test.go | 4 +- x/icaoracle/types/ica_test.go | 2 +- x/icaoracle/types/icaoracle.pb.go | 73 ++++----- x/icaoracle/types/message_add_oracle.go | 2 +- x/icaoracle/types/message_add_oracle_test.go | 4 +- .../types/message_instantiate_oracle.go | 2 +- .../types/message_instantiate_oracle_test.go | 4 +- .../types/message_remove_oracle_test.go | 4 +- ..._restore_oracle_interchain_account_test.go | 4 +- .../types/message_toggle_oracle_test.go | 4 +- x/icaoracle/types/metric_test.go | 2 +- x/icaoracle/types/oracle_test.go | 2 +- x/icaoracle/types/query.pb.go | 60 +++---- x/icaoracle/types/tx.pb.go | 56 +++---- x/interchainquery/client/cli/query.go | 2 +- x/interchainquery/genesis.go | 4 +- x/interchainquery/handler.go | 4 +- x/interchainquery/keeper/abci.go | 2 +- x/interchainquery/keeper/grpc_query.go | 2 +- x/interchainquery/keeper/keeper.go | 4 +- x/interchainquery/keeper/keeper_test.go | 6 +- x/interchainquery/keeper/msg_server.go | 4 +- .../keeper/msg_submit_query_response_test.go | 2 +- x/interchainquery/keeper/new_query_test.go | 2 +- x/interchainquery/keeper/queries.go | 2 +- x/interchainquery/keeper/queries_test.go | 4 +- x/interchainquery/module.go | 6 +- x/interchainquery/types/genesis.pb.go | 14 +- x/interchainquery/types/messages.pb.go | 66 ++++---- x/interchainquery/types/query.pb.go | 4 +- x/mint/client/cli/cli_test.go | 4 +- x/mint/client/cli/query.go | 2 +- x/mint/client/rest/grpc_query_test.go | 4 +- x/mint/genesis.go | 4 +- x/mint/keeper/grpc_query.go | 2 +- x/mint/keeper/hooks.go | 4 +- x/mint/keeper/keeper.go | 2 +- x/mint/module.go | 8 +- x/mint/types/expected_keepers.go | 2 +- x/mint/types/genesis.pb.go | 22 +-- x/mint/types/mint.pb.go | 82 +++++----- x/mint/types/params.go | 2 +- x/mint/types/query.pb.go | 52 +++--- x/ratelimit/client/cli/query.go | 2 +- x/ratelimit/client/cli/tx.go | 2 +- x/ratelimit/client/proposal_handler.go | 2 +- x/ratelimit/genesis.go | 4 +- x/ratelimit/genesis_test.go | 8 +- x/ratelimit/handler.go | 6 +- x/ratelimit/ibc_middleware.go | 2 +- x/ratelimit/keeper/gov/gov.go | 4 +- x/ratelimit/keeper/gov/gov_test.go | 8 +- x/ratelimit/keeper/grpc_query.go | 2 +- x/ratelimit/keeper/grpc_query_test.go | 2 +- x/ratelimit/keeper/hooks.go | 2 +- x/ratelimit/keeper/hooks_test.go | 4 +- x/ratelimit/keeper/keeper.go | 2 +- x/ratelimit/keeper/keeper_test.go | 4 +- x/ratelimit/keeper/packet.go | 6 +- x/ratelimit/keeper/packet_test.go | 4 +- x/ratelimit/keeper/params.go | 2 +- x/ratelimit/keeper/rate_limit.go | 2 +- x/ratelimit/keeper/rate_limit_test.go | 6 +- x/ratelimit/module.go | 6 +- x/ratelimit/types/flow_test.go | 2 +- x/ratelimit/types/genesis.pb.go | 34 ++-- x/ratelimit/types/gov.pb.go | 52 +++--- x/ratelimit/types/gov_add_rate_limit_test.go | 4 +- .../types/gov_remove_rate_limit_test.go | 4 +- .../types/gov_reset_rate_limit_test.go | 4 +- .../types/gov_update_rate_limit_test.go | 4 +- x/ratelimit/types/params.pb.go | 4 +- x/ratelimit/types/query.pb.go | 4 +- x/ratelimit/types/quota_test.go | 2 +- x/ratelimit/types/ratelimit.pb.go | 28 ++-- x/records/client/cli/query.go | 2 +- x/records/client/cli/query_deposit_record.go | 2 +- .../client/cli/query_deposit_record_test.go | 8 +- .../cli/query_epoch_unbonding_record.go | 2 +- x/records/client/cli/query_params.go | 2 +- .../cli/query_user_redemption_record.go | 2 +- .../cli/query_user_redemption_record_test.go | 8 +- x/records/client/cli/tx.go | 2 +- x/records/genesis.go | 4 +- x/records/genesis_test.go | 8 +- x/records/handler.go | 4 +- x/records/keeper/callback_transfer.go | 4 +- x/records/keeper/callback_transfer_test.go | 6 +- x/records/keeper/callbacks.go | 2 +- x/records/keeper/deposit_record.go | 2 +- x/records/keeper/epoch_unbonding_record.go | 4 +- .../keeper/epoch_unbonding_record_test.go | 8 +- x/records/keeper/grpc_query.go | 2 +- x/records/keeper/grpc_query_deposit_record.go | 2 +- .../keeper/grpc_query_deposit_record_test.go | 8 +- .../grpc_query_epoch_unbonding_record.go | 2 +- .../grpc_query_epoch_unbonding_record_test.go | 6 +- x/records/keeper/grpc_query_params.go | 2 +- x/records/keeper/grpc_query_params_test.go | 4 +- .../grpc_query_user_redemption_record.go | 2 +- ...c_query_user_redemption_record_for_user.go | 2 +- .../grpc_query_user_redemption_record_test.go | 6 +- x/records/keeper/keeper.go | 8 +- x/records/keeper/keeper_test.go | 6 +- x/records/keeper/msg_server.go | 2 +- x/records/keeper/params.go | 2 +- x/records/keeper/params_test.go | 4 +- x/records/keeper/transfer_test.go | 4 +- x/records/keeper/user_redemption_record.go | 2 +- .../keeper/user_redemption_record_test.go | 8 +- x/records/migrations/v2/convert.go | 4 +- x/records/migrations/v2/convert_test.go | 4 +- x/records/migrations/v2/migrations.go | 4 +- x/records/module.go | 6 +- x/records/module_ibc.go | 6 +- x/records/module_simulation.go | 6 +- x/records/types/callbacks.pb.go | 4 +- x/records/types/genesis.pb.go | 116 +++++++------- x/records/types/genesis_test.go | 2 +- x/records/types/query.pb.go | 126 +++++++-------- x/stakeibc/abci.go | 4 +- x/stakeibc/client/cli/query.go | 2 +- x/stakeibc/client/cli/query_epoch_tracker.go | 2 +- .../client/cli/query_epoch_tracker_test.go | 6 +- x/stakeibc/client/cli/query_host_zone.go | 2 +- x/stakeibc/client/cli/query_module_address.go | 2 +- .../client/cli/query_next_packet_sequence.go | 2 +- x/stakeibc/client/cli/query_params.go | 2 +- x/stakeibc/client/cli/query_register_ica.go | 2 +- x/stakeibc/client/cli/query_validator.go | 2 +- x/stakeibc/client/cli/tx.go | 2 +- x/stakeibc/client/cli/tx_add_validators.go | 2 +- .../client/cli/tx_add_validators_proposal.go | 2 +- .../client/cli/tx_change_validator_weight.go | 2 +- .../client/cli/tx_claim_undelegated_tokens.go | 2 +- x/stakeibc/client/cli/tx_clear_balance.go | 2 +- x/stakeibc/client/cli/tx_delete_validator.go | 2 +- x/stakeibc/client/cli/tx_liquid_stake.go | 2 +- .../client/cli/tx_rebalance_validators.go | 2 +- x/stakeibc/client/cli/tx_redeem_stake.go | 2 +- .../client/cli/tx_register_host_zone.go | 2 +- .../cli/tx_restore_interchain_account.go | 2 +- x/stakeibc/client/cli/tx_update_delegation.go | 2 +- x/stakeibc/client/proposal_handler.go | 2 +- x/stakeibc/genesis.go | 4 +- x/stakeibc/genesis_test.go | 8 +- x/stakeibc/handler.go | 4 +- x/stakeibc/ibc_middleware.go | 4 +- x/stakeibc/keeper/consumer.go | 2 +- x/stakeibc/keeper/consumer_test.go | 2 +- x/stakeibc/keeper/deposit_records.go | 6 +- x/stakeibc/keeper/deposit_records_test.go | 8 +- .../keeper/epoch_elapsed_shares_test.go | 4 +- x/stakeibc/keeper/epoch_tracker.go | 2 +- x/stakeibc/keeper/epoch_tracker_test.go | 8 +- x/stakeibc/keeper/gov.go | 2 +- x/stakeibc/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_address_unbondings.go | 4 +- x/stakeibc/keeper/grpc_query_epoch_tracker.go | 2 +- .../keeper/grpc_query_epoch_tracker_test.go | 6 +- x/stakeibc/keeper/grpc_query_host_zone.go | 2 +- .../keeper/grpc_query_host_zone_test.go | 6 +- .../keeper/grpc_query_module_address.go | 2 +- .../keeper/grpc_query_next_packet_sequence.go | 2 +- .../grpc_query_next_packet_sequence_test.go | 2 +- x/stakeibc/keeper/grpc_query_params.go | 2 +- x/stakeibc/keeper/grpc_query_params_test.go | 4 +- x/stakeibc/keeper/grpc_query_register_ica.go | 2 +- x/stakeibc/keeper/grpc_query_validator.go | 2 +- .../keeper/grpc_query_validator_test.go | 6 +- x/stakeibc/keeper/hooks.go | 10 +- x/stakeibc/keeper/host_zone.go | 4 +- x/stakeibc/keeper/host_zone_test.go | 8 +- x/stakeibc/keeper/icacallbacks.go | 2 +- x/stakeibc/keeper/icacallbacks_claim.go | 8 +- x/stakeibc/keeper/icacallbacks_claim_test.go | 6 +- x/stakeibc/keeper/icacallbacks_delegate.go | 8 +- .../keeper/icacallbacks_delegate_test.go | 6 +- x/stakeibc/keeper/icacallbacks_rebalance.go | 6 +- .../keeper/icacallbacks_rebalance_test.go | 4 +- x/stakeibc/keeper/icacallbacks_redemption.go | 8 +- .../keeper/icacallbacks_redemption_test.go | 6 +- x/stakeibc/keeper/icacallbacks_reinvest.go | 12 +- .../keeper/icacallbacks_reinvest_test.go | 16 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 8 +- .../keeper/icacallbacks_undelegate_test.go | 6 +- x/stakeibc/keeper/icqcallbacks.go | 2 +- .../keeper/icqcallbacks_delegator_shares.go | 8 +- .../icqcallbacks_delegator_shares_test.go | 8 +- x/stakeibc/keeper/icqcallbacks_fee_balance.go | 10 +- .../keeper/icqcallbacks_fee_balance_test.go | 8 +- .../icqcallbacks_validator_exchange_rate.go | 8 +- ...qcallbacks_validator_exchange_rate_test.go | 8 +- .../keeper/icqcallbacks_withdrawal_balance.go | 8 +- .../icqcallbacks_withdrawal_balance_test.go | 10 +- x/stakeibc/keeper/keeper.go | 10 +- x/stakeibc/keeper/keeper_test.go | 6 +- x/stakeibc/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_validators.go | 2 +- .../keeper/msg_server_add_validators_test.go | 4 +- .../msg_server_change_validator_weight.go | 2 +- .../msg_server_claim_undelegated_tokens.go | 6 +- ...sg_server_claim_undelegated_tokens_test.go | 8 +- x/stakeibc/keeper/msg_server_clear_balance.go | 2 +- .../keeper/msg_server_clear_balance_test.go | 4 +- .../keeper/msg_server_delete_validator.go | 2 +- .../msg_server_delete_validator_test.go | 2 +- x/stakeibc/keeper/msg_server_liquid_stake.go | 4 +- .../keeper/msg_server_liquid_stake_test.go | 6 +- .../keeper/msg_server_rebalance_validators.go | 4 +- .../msg_server_rebalance_validators_test.go | 6 +- x/stakeibc/keeper/msg_server_redeem_stake.go | 6 +- .../keeper/msg_server_redeem_stake_test.go | 6 +- .../keeper/msg_server_register_host_zone.go | 8 +- .../msg_server_register_host_zone_test.go | 8 +- .../msg_server_restore_interchain_account.go | 4 +- ..._server_restore_interchain_account_test.go | 4 +- x/stakeibc/keeper/msg_server_submit_tx.go | 12 +- ...erver_update_validator_shares_exch_rate.go | 2 +- x/stakeibc/keeper/params.go | 2 +- x/stakeibc/keeper/params_test.go | 4 +- x/stakeibc/keeper/reward_allocation.go | 2 +- x/stakeibc/keeper/reward_allocation_test.go | 6 +- x/stakeibc/keeper/unbonding_records.go | 6 +- .../keeper/unbonding_records_cleanup_test.go | 4 +- ...ords_get_host_zone_unbondings_msgs_test.go | 4 +- ...ng_records_initiate_all_unbondings_test.go | 4 +- ...ding_records_sweep_unbonded_tokens_test.go | 6 +- .../keeper/update_redemption_rates_test.go | 4 +- .../update_validator_shares_exch_rate_test.go | 6 +- x/stakeibc/keeper/validator_selection.go | 4 +- x/stakeibc/migrations/v2/convert.go | 4 +- x/stakeibc/migrations/v2/convert_test.go | 4 +- x/stakeibc/migrations/v2/migrations.go | 4 +- x/stakeibc/module.go | 6 +- x/stakeibc/module_simulation.go | 6 +- x/stakeibc/proposal_handler.go | 4 +- x/stakeibc/simulation/add_validator.go | 4 +- .../simulation/change_validator_weight.go | 4 +- .../simulation/claim_undelegated_tokens.go | 4 +- x/stakeibc/simulation/delete_validator.go | 4 +- x/stakeibc/simulation/liquid_stake.go | 4 +- x/stakeibc/simulation/rebalance_validators.go | 4 +- .../simulation/restore_interchain_account.go | 4 +- x/stakeibc/simulation/update_delegation.go | 4 +- x/stakeibc/types/address_unbonding.pb.go | 8 +- x/stakeibc/types/callbacks.pb.go | 82 +++++----- x/stakeibc/types/epoch_tracker.pb.go | 4 +- x/stakeibc/types/expected_keepers.go | 2 +- x/stakeibc/types/genesis.pb.go | 46 +++--- x/stakeibc/types/genesis_test.go | 2 +- x/stakeibc/types/gov.pb.go | 6 +- x/stakeibc/types/host_zone.pb.go | 4 +- x/stakeibc/types/ica_account.pb.go | 4 +- x/stakeibc/types/message_add_validators.go | 2 +- .../types/message_add_validators_test.go | 4 +- .../types/message_change_validator_weight.go | 2 +- .../message_change_validator_weight_test.go | 2 +- .../types/message_claim_undelegated_tokens.go | 2 +- .../message_claim_undelegated_tokens_test.go | 2 +- x/stakeibc/types/message_clear_balance.go | 2 +- x/stakeibc/types/message_delete_validator.go | 2 +- .../types/message_delete_validator_test.go | 2 +- x/stakeibc/types/message_liquid_stake_test.go | 2 +- .../types/message_rebalance_validators.go | 2 +- .../message_rebalance_validators_test.go | 4 +- x/stakeibc/types/message_redeem_stake_test.go | 2 +- .../types/message_register_host_zone.go | 2 +- ...message_restore_interchain_account_test.go | 2 +- x/stakeibc/types/message_update_delegation.go | 2 +- x/stakeibc/types/packet.pb.go | 4 +- x/stakeibc/types/params.pb.go | 74 ++++----- x/stakeibc/types/query.pb.go | 4 +- x/stakeibc/types/tx.pb.go | 4 +- x/stakeibc/types/validator.pb.go | 54 +++---- 511 files changed, 1898 insertions(+), 1897 deletions(-) diff --git a/app/app.go b/app/app.go index 883f406a6e..28a0ca1263 100644 --- a/app/app.go +++ b/app/app.go @@ -13,7 +13,7 @@ import ( nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -62,12 +62,12 @@ import ( ccvdistr "github.com/cosmos/interchain-security/v3/x/ccv/democracy/distribution" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" - claimvesting "github.com/Stride-Labs/stride/v12/x/claim/vesting" - claimvestingtypes "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + claimvesting "github.com/Stride-Labs/stride/v13/x/claim/vesting" + claimvestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" - "github.com/Stride-Labs/stride/v12/x/mint" - mintkeeper "github.com/Stride-Labs/stride/v12/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/mint" + mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" dbm "github.com/cometbft/cometbft-db" abci "github.com/cometbft/cometbft/abci/types" @@ -114,38 +114,38 @@ import ( // monitoringp "github.com/tendermint/spn/x/monitoringp" // monitoringpkeeper "github.com/tendermint/spn/x/monitoringp/keeper" - epochsmodule "github.com/Stride-Labs/stride/v12/x/epochs" - epochsmodulekeeper "github.com/Stride-Labs/stride/v12/x/epochs/keeper" - epochsmoduletypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - - "github.com/Stride-Labs/stride/v12/x/interchainquery" - interchainquerykeeper "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - interchainquerytypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - - "github.com/Stride-Labs/stride/v12/x/autopilot" - autopilotkeeper "github.com/Stride-Labs/stride/v12/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" - - "github.com/Stride-Labs/stride/v12/x/claim" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - icacallbacksmodule "github.com/Stride-Labs/stride/v12/x/icacallbacks" - icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - icacallbacksmoduletypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - icaoracle "github.com/Stride-Labs/stride/v12/x/icaoracle" - icaoraclekeeper "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" - icaoracletypes "github.com/Stride-Labs/stride/v12/x/icaoracle/types" - ratelimitmodule "github.com/Stride-Labs/stride/v12/x/ratelimit" - ratelimitclient "github.com/Stride-Labs/stride/v12/x/ratelimit/client" - ratelimitmodulekeeper "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - ratelimitmoduletypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" - recordsmodule "github.com/Stride-Labs/stride/v12/x/records" - recordsmodulekeeper "github.com/Stride-Labs/stride/v12/x/records/keeper" - recordsmoduletypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibcmodule "github.com/Stride-Labs/stride/v12/x/stakeibc" - stakeibcclient "github.com/Stride-Labs/stride/v12/x/stakeibc/client" - stakeibcmodulekeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibcmoduletypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochsmodule "github.com/Stride-Labs/stride/v13/x/epochs" + epochsmodulekeeper "github.com/Stride-Labs/stride/v13/x/epochs/keeper" + epochsmoduletypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + + "github.com/Stride-Labs/stride/v13/x/interchainquery" + interchainquerykeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + interchainquerytypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + + "github.com/Stride-Labs/stride/v13/x/autopilot" + autopilotkeeper "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" + + "github.com/Stride-Labs/stride/v13/x/claim" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + icacallbacksmodule "github.com/Stride-Labs/stride/v13/x/icacallbacks" + icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + icacallbacksmoduletypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icaoracle "github.com/Stride-Labs/stride/v13/x/icaoracle" + icaoraclekeeper "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" + icaoracletypes "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + ratelimitmodule "github.com/Stride-Labs/stride/v13/x/ratelimit" + ratelimitclient "github.com/Stride-Labs/stride/v13/x/ratelimit/client" + ratelimitmodulekeeper "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + ratelimitmoduletypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + recordsmodule "github.com/Stride-Labs/stride/v13/x/records" + recordsmodulekeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" + recordsmoduletypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibcmodule "github.com/Stride-Labs/stride/v13/x/stakeibc" + stakeibcclient "github.com/Stride-Labs/stride/v13/x/stakeibc/client" + stakeibcmodulekeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibcmoduletypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ccvconsumer "github.com/cosmos/interchain-security/v3/x/ccv/consumer" ccvconsumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper" diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 9b4b400ed6..324d8ae07d 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -32,8 +32,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/utils" ) var ( diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index 1e4bc2f3db..b7ec0045ba 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -17,9 +17,9 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" - autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var WhiteListModule = map[string]struct{}{ diff --git a/app/test_setup.go b/app/test_setup.go index 578f245938..51ce479a86 100644 --- a/app/test_setup.go +++ b/app/test_setup.go @@ -21,9 +21,9 @@ import ( ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing" consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - testutil "github.com/Stride-Labs/stride/v12/testutil" + testutil "github.com/Stride-Labs/stride/v13/testutil" - cmdcfg "github.com/Stride-Labs/stride/v12/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" ) const Bech32Prefix = "stride" diff --git a/app/upgrades.go b/app/upgrades.go index 70b9c880d6..a06d87dd5e 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -15,24 +15,24 @@ import ( capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - v10 "github.com/Stride-Labs/stride/v12/app/upgrades/v10" - v11 "github.com/Stride-Labs/stride/v12/app/upgrades/v11" - v12 "github.com/Stride-Labs/stride/v12/app/upgrades/v12" - v2 "github.com/Stride-Labs/stride/v12/app/upgrades/v2" - v3 "github.com/Stride-Labs/stride/v12/app/upgrades/v3" - v4 "github.com/Stride-Labs/stride/v12/app/upgrades/v4" - v5 "github.com/Stride-Labs/stride/v12/app/upgrades/v5" - v6 "github.com/Stride-Labs/stride/v12/app/upgrades/v6" - v7 "github.com/Stride-Labs/stride/v12/app/upgrades/v7" - v8 "github.com/Stride-Labs/stride/v12/app/upgrades/v8" - v9 "github.com/Stride-Labs/stride/v12/app/upgrades/v9" - autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - icaoracletypes "github.com/Stride-Labs/stride/v12/x/icaoracle/types" - ratelimittypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + v10 "github.com/Stride-Labs/stride/v13/app/upgrades/v10" + v11 "github.com/Stride-Labs/stride/v13/app/upgrades/v11" + v12 "github.com/Stride-Labs/stride/v13/app/upgrades/v12" + v2 "github.com/Stride-Labs/stride/v13/app/upgrades/v2" + v3 "github.com/Stride-Labs/stride/v13/app/upgrades/v3" + v4 "github.com/Stride-Labs/stride/v13/app/upgrades/v4" + v5 "github.com/Stride-Labs/stride/v13/app/upgrades/v5" + v6 "github.com/Stride-Labs/stride/v13/app/upgrades/v6" + v7 "github.com/Stride-Labs/stride/v13/app/upgrades/v7" + v8 "github.com/Stride-Labs/stride/v13/app/upgrades/v8" + v9 "github.com/Stride-Labs/stride/v13/app/upgrades/v9" + autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icaoracletypes "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { diff --git a/app/upgrades/v10/upgrades.go b/app/upgrades/v10/upgrades.go index e763e8871a..fdcce3b6ec 100644 --- a/app/upgrades/v10/upgrades.go +++ b/app/upgrades/v10/upgrades.go @@ -25,18 +25,18 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibctmmigrations "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint/migrations" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - mintkeeper "github.com/Stride-Labs/stride/v12/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" - ratelimitkeeper "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - ratelimitgov "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper/gov" - ratelimittypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v12/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + ratelimitkeeper "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + ratelimitgov "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper/gov" + ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index 6d5ed27e57..fccb49d10b 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -16,22 +16,22 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/app/apptesting" - v10 "github.com/Stride-Labs/stride/v12/app/upgrades/v10" - "github.com/Stride-Labs/stride/v12/utils" - - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - ratelimittypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v12/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + v10 "github.com/Stride-Labs/stride/v13/app/upgrades/v10" + "github.com/Stride-Labs/stride/v13/utils" + + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) var initialRateLimitChannelValue = sdk.NewInt(1_000_000) diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go index ef4b882111..c72a9fb954 100644 --- a/app/upgrades/v3/upgrades.go +++ b/app/upgrades/v3/upgrades.go @@ -7,9 +7,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v3/upgrades_test.go b/app/upgrades/v3/upgrades_test.go index e1a75bf500..ac014a2582 100644 --- a/app/upgrades/v3/upgrades_test.go +++ b/app/upgrades/v3/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v13/app/apptesting" ) var ( diff --git a/app/upgrades/v4/upgrades_test.go b/app/upgrades/v4/upgrades_test.go index 0f3b958d3a..f8df2252b9 100644 --- a/app/upgrades/v4/upgrades_test.go +++ b/app/upgrades/v4/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" + "github.com/Stride-Labs/stride/v13/app/apptesting" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 08e788cd8b..383008eb8e 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -12,16 +12,16 @@ import ( authz "github.com/cosmos/cosmos-sdk/x/authz" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimmigration "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - icacallbacksmigration "github.com/Stride-Labs/stride/v12/x/icacallbacks/migrations/v2" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - interchainquerykeeper "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - recordsmigration "github.com/Stride-Labs/stride/v12/x/records/migrations/v2" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + claimmigration "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + icacallbacksmigration "github.com/Stride-Labs/stride/v13/x/icacallbacks/migrations/v2" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + interchainquerykeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + recordsmigration "github.com/Stride-Labs/stride/v13/x/records/migrations/v2" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index bb92cce1b8..78e3f4eb40 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -11,20 +11,20 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" - - "github.com/Stride-Labs/stride/v12/app/apptesting" - upgradev5 "github.com/Stride-Labs/stride/v12/app/upgrades/v5" - oldclaimtypes "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - recordkeeper "github.com/Stride-Labs/stride/v12/x/records/keeper" - oldrecordtypes "github.com/Stride-Labs/stride/v12/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/app" + + "github.com/Stride-Labs/stride/v13/app/apptesting" + upgradev5 "github.com/Stride-Labs/stride/v13/app/upgrades/v5" + oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + recordkeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" + oldrecordtypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v6/upgrades.go b/app/upgrades/v6/upgrades.go index c79f05374d..0839644a3d 100644 --- a/app/upgrades/v6/upgrades.go +++ b/app/upgrades/v6/upgrades.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v6/upgrades_test.go b/app/upgrades/v6/upgrades_test.go index 6a1f6f0ca3..a6586ba05d 100644 --- a/app/upgrades/v6/upgrades_test.go +++ b/app/upgrades/v6/upgrades_test.go @@ -10,11 +10,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" + "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index 1f3fa76858..42bac6f914 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -21,13 +21,13 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v12/utils" - epochskeeper "github.com/Stride-Labs/stride/v12/x/epochs/keeper" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - mintkeeper "github.com/Stride-Labs/stride/v12/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochskeeper "github.com/Stride-Labs/stride/v13/x/epochs/keeper" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v7 diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index 0041d962da..332a770e35 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -9,16 +9,16 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/app/apptesting" - v7 "github.com/Stride-Labs/stride/v12/app/upgrades/v7" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/app/apptesting" + v7 "github.com/Stride-Labs/stride/v13/app/upgrades/v7" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" ) var ( diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 60687f55ee..f9cda7e072 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/Stride-Labs/stride/v12/utils" - autopilotkeeper "github.com/Stride-Labs/stride/v12/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/utils" + autopilotkeeper "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) var ( diff --git a/app/upgrades/v8/upgrades_test.go b/app/upgrades/v8/upgrades_test.go index a6a9df00f9..939dfbf062 100644 --- a/app/upgrades/v8/upgrades_test.go +++ b/app/upgrades/v8/upgrades_test.go @@ -9,11 +9,11 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - v8 "github.com/Stride-Labs/stride/v12/app/upgrades/v8" - autopilottypes "github.com/Stride-Labs/stride/v12/x/autopilot/types" - "github.com/Stride-Labs/stride/v12/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + v8 "github.com/Stride-Labs/stride/v13/app/upgrades/v8" + autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) var ( diff --git a/app/upgrades/v9/upgrades.go b/app/upgrades/v9/upgrades.go index e42ccf7a4a..0b37f66bf1 100644 --- a/app/upgrades/v9/upgrades.go +++ b/app/upgrades/v9/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" ) // CreateUpgradeHandler creates an SDK upgrade handler for v29 diff --git a/app/upgrades/v9/upgrades_test.go b/app/upgrades/v9/upgrades_test.go index f7926e9f02..e529abf752 100644 --- a/app/upgrades/v9/upgrades_test.go +++ b/app/upgrades/v9/upgrades_test.go @@ -6,18 +6,18 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/app/apptesting" - v9 "github.com/Stride-Labs/stride/v12/app/upgrades/v9" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/app/apptesting" + v9 "github.com/Stride-Labs/stride/v13/app/upgrades/v9" + "github.com/Stride-Labs/stride/v13/utils" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2/types" - oldclaimtypes "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2/types" + "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" + oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" ) type UpgradeTestSuite struct { diff --git a/cmd/consumer.go b/cmd/consumer.go index ecfa10d52d..4c282ff3c9 100644 --- a/cmd/consumer.go +++ b/cmd/consumer.go @@ -18,7 +18,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/testutil" + "github.com/Stride-Labs/stride/v13/testutil" ) func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { diff --git a/cmd/strided/main.go b/cmd/strided/main.go index 467ee38288..cd0301872a 100644 --- a/cmd/strided/main.go +++ b/cmd/strided/main.go @@ -5,10 +5,10 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/cmd" + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/cmd" - cmdcfg "github.com/Stride-Labs/stride/v12/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" ) func main() { diff --git a/cmd/strided/root.go b/cmd/strided/root.go index 5baa171483..346d506091 100644 --- a/cmd/strided/root.go +++ b/cmd/strided/root.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/snapshots" "gopkg.in/yaml.v2" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" cometbftdb "github.com/cometbft/cometbft-db" "github.com/cometbft/cometbft/libs/cli" @@ -47,7 +47,7 @@ import ( genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/Stride-Labs/stride/v12/app" + "github.com/Stride-Labs/stride/v13/app" ) var ChainID string diff --git a/go.mod b/go.mod index 8a353fdaf6..6bfb2dd093 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Stride-Labs/stride/v12 +module github.com/Stride-Labs/stride/v13 go 1.19 diff --git a/proto/cosmwasm/wasm/v1/cosmwasm.proto b/proto/cosmwasm/wasm/v1/cosmwasm.proto index 56da875691..4f33841f7f 100644 --- a/proto/cosmwasm/wasm/v1/cosmwasm.proto +++ b/proto/cosmwasm/wasm/v1/cosmwasm.proto @@ -4,7 +4,7 @@ package cosmwasm.wasm.v1; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // MsgExecuteContract submits the given message data to a smart contract message MsgExecuteContract { diff --git a/proto/stride/autopilot/genesis.proto b/proto/stride/autopilot/genesis.proto index b865f6c279..69b7ab39fb 100644 --- a/proto/stride/autopilot/genesis.proto +++ b/proto/stride/autopilot/genesis.proto @@ -4,7 +4,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/autopilot/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/autopilot/params.proto b/proto/stride/autopilot/params.proto index f0df9a360d..7ca29d1850 100644 --- a/proto/stride/autopilot/params.proto +++ b/proto/stride/autopilot/params.proto @@ -3,7 +3,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/autopilot/types"; // Params defines the parameters for the module. // next id: 1 diff --git a/proto/stride/autopilot/query.proto b/proto/stride/autopilot/query.proto index 04354051f4..8e6a41474c 100644 --- a/proto/stride/autopilot/query.proto +++ b/proto/stride/autopilot/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/autopilot/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/claim.proto b/proto/stride/claim/claim.proto index 58c8f8a650..a604e9375e 100644 --- a/proto/stride/claim/claim.proto +++ b/proto/stride/claim/claim.proto @@ -3,7 +3,7 @@ package stride.claim; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; enum Action { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/claim/genesis.proto b/proto/stride/claim/genesis.proto index 8f41d650fd..7a905ee4d0 100644 --- a/proto/stride/claim/genesis.proto +++ b/proto/stride/claim/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/claim/claim.proto"; import "stride/claim/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/claim/params.proto b/proto/stride/claim/params.proto index 4643d44a8d..45654bea5e 100644 --- a/proto/stride/claim/params.proto +++ b/proto/stride/claim/params.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; // Params defines the claim module's parameters. message Params { repeated Airdrop airdrops = 1; } diff --git a/proto/stride/claim/query.proto b/proto/stride/claim/query.proto index f923d86028..8c5a10e26e 100644 --- a/proto/stride/claim/query.proto +++ b/proto/stride/claim/query.proto @@ -9,7 +9,7 @@ import "stride/claim/params.proto"; import "stride/vesting/vesting.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/tx.proto b/proto/stride/claim/tx.proto index 8008257568..2dff99bb8b 100644 --- a/proto/stride/claim/tx.proto +++ b/proto/stride/claim/tx.proto @@ -4,7 +4,7 @@ package stride.claim; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/epochs/genesis.proto b/proto/stride/epochs/genesis.proto index 72917847d3..5d97665214 100755 --- a/proto/stride/epochs/genesis.proto +++ b/proto/stride/epochs/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/epochs/types"; message EpochInfo { string identifier = 1; diff --git a/proto/stride/epochs/query.proto b/proto/stride/epochs/query.proto index 98893945f3..01fe42f902 100644 --- a/proto/stride/epochs/query.proto +++ b/proto/stride/epochs/query.proto @@ -6,7 +6,7 @@ import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "stride/epochs/genesis.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/epochs/types"; // Query defines the gRPC querier service. service Query { @@ -51,7 +51,7 @@ message QueryEpochInfoResponse { // import "epochs/params.proto"; // // this line is used by starport scaffolding # 1 -// option go_package = "github.com/Stride-Labs/stride/v12/x/epochs/types"; +// option go_package = "github.com/Stride-Labs/stride/v13/x/epochs/types"; // // Query defines the gRPC querier service. // service Query { diff --git a/proto/stride/icacallbacks/callback_data.proto b/proto/stride/icacallbacks/callback_data.proto index 0e5db32bcc..b4925f91e6 100755 --- a/proto/stride/icacallbacks/callback_data.proto +++ b/proto/stride/icacallbacks/callback_data.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icacallbacks; -option go_package = "github.com/Stride-Labs/stride/v12/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; message CallbackData { string callback_key = 1; diff --git a/proto/stride/icacallbacks/genesis.proto b/proto/stride/icacallbacks/genesis.proto index 5ab220f8b4..1495664e4f 100755 --- a/proto/stride/icacallbacks/genesis.proto +++ b/proto/stride/icacallbacks/genesis.proto @@ -6,7 +6,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v12/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; // GenesisState defines the icacallbacks module's genesis state. message GenesisState { diff --git a/proto/stride/icacallbacks/packet.proto b/proto/stride/icacallbacks/packet.proto index 9a3f9e8f8c..4210959642 100755 --- a/proto/stride/icacallbacks/packet.proto +++ b/proto/stride/icacallbacks/packet.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v12/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; message IcacallbacksPacketData { oneof packet { diff --git a/proto/stride/icacallbacks/params.proto b/proto/stride/icacallbacks/params.proto index 5d796435b6..b247fd1854 100755 --- a/proto/stride/icacallbacks/params.proto +++ b/proto/stride/icacallbacks/params.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; // Params defines the parameters for the module. message Params { option (gogoproto.goproto_stringer) = false; } diff --git a/proto/stride/icacallbacks/query.proto b/proto/stride/icacallbacks/query.proto index af9b38ead9..776d3017d6 100644 --- a/proto/stride/icacallbacks/query.proto +++ b/proto/stride/icacallbacks/query.proto @@ -8,7 +8,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v12/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icacallbacks/tx.proto b/proto/stride/icacallbacks/tx.proto index b12c5874a0..9f162ad81b 100755 --- a/proto/stride/icacallbacks/tx.proto +++ b/proto/stride/icacallbacks/tx.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/tx/import -option go_package = "github.com/Stride-Labs/stride/v12/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/icaoracle/callbacks.proto b/proto/stride/icaoracle/callbacks.proto index 417f431497..024ae6952c 100644 --- a/proto/stride/icaoracle/callbacks.proto +++ b/proto/stride/icaoracle/callbacks.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // Callback data for instantiating an oracle message InstantiateOracleCallback { string oracle_chain_id = 1; } diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto index fafe09e418..5755ed6377 100644 --- a/proto/stride/icaoracle/contract.proto +++ b/proto/stride/icaoracle/contract.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icaoracle; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // InstanitateOracleContract is the contract-specific instantiate message message MsgInstantiateOracleContract { string admin_address = 1; } diff --git a/proto/stride/icaoracle/genesis.proto b/proto/stride/icaoracle/genesis.proto index 6bc2a76437..ffeb32f5b1 100644 --- a/proto/stride/icaoracle/genesis.proto +++ b/proto/stride/icaoracle/genesis.proto @@ -4,7 +4,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // Params defines the icaoracle module parameters. message Params {} diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto index 372de3e198..c19b4f5935 100644 --- a/proto/stride/icaoracle/icaoracle.proto +++ b/proto/stride/icaoracle/icaoracle.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // Oracle structure stores context about the CW oracle sitting a different chain message Oracle { diff --git a/proto/stride/icaoracle/query.proto b/proto/stride/icaoracle/query.proto index 5f102aab65..5a8d21a4d0 100644 --- a/proto/stride/icaoracle/query.proto +++ b/proto/stride/icaoracle/query.proto @@ -5,7 +5,7 @@ import "stride/icaoracle/icaoracle.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto index a47b774e6e..9ad126fd6b 100644 --- a/proto/stride/icaoracle/tx.proto +++ b/proto/stride/icaoracle/tx.proto @@ -5,7 +5,7 @@ import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/genesis.proto b/proto/stride/interchainquery/v1/genesis.proto index 275a2083d0..c5fe2a70b7 100644 --- a/proto/stride/interchainquery/v1/genesis.proto +++ b/proto/stride/interchainquery/v1/genesis.proto @@ -4,7 +4,7 @@ package stride.interchainquery.v1; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; message Query { string id = 1; diff --git a/proto/stride/interchainquery/v1/messages.proto b/proto/stride/interchainquery/v1/messages.proto index 67ff9915ed..0d4461c85f 100755 --- a/proto/stride/interchainquery/v1/messages.proto +++ b/proto/stride/interchainquery/v1/messages.proto @@ -6,7 +6,7 @@ import "cosmos_proto/cosmos.proto"; import "google/api/annotations.proto"; import "tendermint/crypto/proof.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; // Msg defines the interchainquery Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/query.proto b/proto/stride/interchainquery/v1/query.proto index f4f6799e91..47f36057d5 100644 --- a/proto/stride/interchainquery/v1/query.proto +++ b/proto/stride/interchainquery/v1/query.proto @@ -5,7 +5,7 @@ import "stride/interchainquery/v1/genesis.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; service QueryService { rpc PendingQueries(QueryPendingQueriesRequest) diff --git a/proto/stride/mint/v1beta1/genesis.proto b/proto/stride/mint/v1beta1/genesis.proto index 898113f70d..d6859d3b79 100755 --- a/proto/stride/mint/v1beta1/genesis.proto +++ b/proto/stride/mint/v1beta1/genesis.proto @@ -4,7 +4,7 @@ package stride.mint.v1beta1; import "gogoproto/gogo.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/mint/types"; // GenesisState defines the mint module's genesis state. message GenesisState { diff --git a/proto/stride/mint/v1beta1/mint.proto b/proto/stride/mint/v1beta1/mint.proto index d4240a85d1..deea92eebb 100755 --- a/proto/stride/mint/v1beta1/mint.proto +++ b/proto/stride/mint/v1beta1/mint.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.mint.v1beta1; -option go_package = "github.com/Stride-Labs/stride/v12/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/mint/types"; import "gogoproto/gogo.proto"; diff --git a/proto/stride/mint/v1beta1/query.proto b/proto/stride/mint/v1beta1/query.proto index 58b033030e..3b3f9efe64 100755 --- a/proto/stride/mint/v1beta1/query.proto +++ b/proto/stride/mint/v1beta1/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/mint/types"; // Query provides defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/genesis.proto b/proto/stride/ratelimit/genesis.proto index c482b90976..a5191bb812 100644 --- a/proto/stride/ratelimit/genesis.proto +++ b/proto/stride/ratelimit/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/ratelimit/params.proto"; import "stride/ratelimit/ratelimit.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; // GenesisState defines the ratelimit module's genesis state. message GenesisState { diff --git a/proto/stride/ratelimit/gov.proto b/proto/stride/ratelimit/gov.proto index 9b20cb51d9..67192df01f 100644 --- a/proto/stride/ratelimit/gov.proto +++ b/proto/stride/ratelimit/gov.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; message AddRateLimitProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/ratelimit/params.proto b/proto/stride/ratelimit/params.proto index 71b0f679fa..20d7ac6e2a 100644 --- a/proto/stride/ratelimit/params.proto +++ b/proto/stride/ratelimit/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.ratelimit; -option go_package = "github.com/Stride-Labs/stride/v12/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; // Params defines the ratelimit module's parameters. message Params {} diff --git a/proto/stride/ratelimit/query.proto b/proto/stride/ratelimit/query.proto index 64af3e4a07..f550ca2606 100644 --- a/proto/stride/ratelimit/query.proto +++ b/proto/stride/ratelimit/query.proto @@ -5,7 +5,7 @@ import "stride/ratelimit/ratelimit.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/ratelimit.proto b/proto/stride/ratelimit/ratelimit.proto index c3373b002f..97d1a97657 100644 --- a/proto/stride/ratelimit/ratelimit.proto +++ b/proto/stride/ratelimit/ratelimit.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; enum PacketDirection { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/records/callbacks.proto b/proto/stride/records/callbacks.proto index 5bdf0873da..f8ad67c552 100755 --- a/proto/stride/records/callbacks.proto +++ b/proto/stride/records/callbacks.proto @@ -1,6 +1,6 @@ syntax = "proto3"; package stride.records; -option go_package = "github.com/Stride-Labs/stride/v12/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; // ---------------------- Transfer Callback ---------------------- // message TransferCallback { uint64 deposit_record_id = 1; } diff --git a/proto/stride/records/genesis.proto b/proto/stride/records/genesis.proto index d8b60b8913..de38309f3f 100644 --- a/proto/stride/records/genesis.proto +++ b/proto/stride/records/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v12/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; message UserRedemptionRecord { string id = 1; // {chain_id}.{epoch}.{sender} diff --git a/proto/stride/records/query.proto b/proto/stride/records/query.proto index 6c16ce15a3..91815f266d 100644 --- a/proto/stride/records/query.proto +++ b/proto/stride/records/query.proto @@ -7,7 +7,7 @@ import "cosmos/base/query/v1beta1/pagination.proto"; import "stride/records/genesis.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v12/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakeibc/address_unbonding.proto b/proto/stride/stakeibc/address_unbonding.proto index 73d1e494e9..b327a02709 100644 --- a/proto/stride/stakeibc/address_unbonding.proto +++ b/proto/stride/stakeibc/address_unbonding.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; message AddressUnbonding { string address = 1; diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 446f4d1d70..9fcfa9a4ed 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -1,6 +1,6 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; diff --git a/proto/stride/stakeibc/epoch_tracker.proto b/proto/stride/stakeibc/epoch_tracker.proto index a6845c4c32..f7e1957a36 100755 --- a/proto/stride/stakeibc/epoch_tracker.proto +++ b/proto/stride/stakeibc/epoch_tracker.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; message EpochTracker { string epoch_identifier = 1; diff --git a/proto/stride/stakeibc/genesis.proto b/proto/stride/stakeibc/genesis.proto index fc07571735..ed9cdbf243 100644 --- a/proto/stride/stakeibc/genesis.proto +++ b/proto/stride/stakeibc/genesis.proto @@ -7,7 +7,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; // GenesisState defines the stakeibc module's genesis state. message GenesisState { diff --git a/proto/stride/stakeibc/gov.proto b/proto/stride/stakeibc/gov.proto index 6bb16bcab9..377d2efc12 100644 --- a/proto/stride/stakeibc/gov.proto +++ b/proto/stride/stakeibc/gov.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "gogoproto/gogo.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; message AddValidatorsProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index 3f5fa0acc9..b1871bb952 100755 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -6,7 +6,7 @@ import "stride/stakeibc/ica_account.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; // next id: 22 message HostZone { diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto index 0f066adadb..d6b8150d6f 100755 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; enum ICAAccountType { DELEGATION = 0; diff --git a/proto/stride/stakeibc/packet.proto b/proto/stride/stakeibc/packet.proto index abf4336ab1..478cd2b46d 100755 --- a/proto/stride/stakeibc/packet.proto +++ b/proto/stride/stakeibc/packet.proto @@ -3,7 +3,7 @@ package stride.stakeibc; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; message StakeibcPacketData { oneof packet { diff --git a/proto/stride/stakeibc/params.proto b/proto/stride/stakeibc/params.proto index aa29eeceff..8e6ee6bbb1 100755 --- a/proto/stride/stakeibc/params.proto +++ b/proto/stride/stakeibc/params.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; // Params defines the parameters for the module. // next id: 18 diff --git a/proto/stride/stakeibc/query.proto b/proto/stride/stakeibc/query.proto index edfec98389..1d3906451d 100644 --- a/proto/stride/stakeibc/query.proto +++ b/proto/stride/stakeibc/query.proto @@ -11,7 +11,7 @@ import "stride/stakeibc/epoch_tracker.proto"; import "stride/stakeibc/address_unbonding.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index 1ebe2324f2..b7f580d359 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -4,7 +4,7 @@ package stride.stakeibc; import "stride/stakeibc/ica_account.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/stride/stakeibc/validator.proto b/proto/stride/stakeibc/validator.proto index 61b847f83f..3ff12adb73 100755 --- a/proto/stride/stakeibc/validator.proto +++ b/proto/stride/stakeibc/validator.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; message ValidatorExchangeRate { string internal_tokens_to_shares_rate = 1 [ diff --git a/proto/stride/vesting/tx.proto b/proto/stride/vesting/tx.proto index 59605ec415..02fc80c276 100644 --- a/proto/stride/vesting/tx.proto +++ b/proto/stride/vesting/tx.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.vesting; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/vesting/types"; // Msg defines the bank Msg service. service Msg {} diff --git a/proto/stride/vesting/vesting.proto b/proto/stride/vesting/vesting.proto index 2037d1d94a..ee04ebec56 100644 --- a/proto/stride/vesting/vesting.proto +++ b/proto/stride/vesting/vesting.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/auth/v1beta1/auth.proto"; -option go_package = "github.com/Stride-Labs/stride/v12/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v13/x/claim/vesting/types"; // BaseVestingAccount implements the VestingAccount interface. It contains all // the necessary fields needed for any vesting account implementation. diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index fcc126ba36..319937ca9a 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -30,5 +30,5 @@ cd .. # move proto files to the right places # # Note: Proto files are suffixed with the current binary version. -cp -r github.com/Stride-Labs/stride/v12/* ./ +cp -r github.com/Stride-Labs/stride/v13/* ./ rm -rf github.com diff --git a/testutil/keeper/claim.go b/testutil/keeper/claim.go index 91a09931b1..2a8d055b85 100644 --- a/testutil/keeper/claim.go +++ b/testutil/keeper/claim.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/claim/keeper" + strideapp "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/claim/keeper" ) func ClaimKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/epochs.go b/testutil/keeper/epochs.go index 4779efc08f..1726ffca0a 100644 --- a/testutil/keeper/epochs.go +++ b/testutil/keeper/epochs.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/epochs/keeper" + strideapp "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/epochs/keeper" ) func EpochsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/icacallbacks.go b/testutil/keeper/icacallbacks.go index 17a78b5813..8061be572f 100644 --- a/testutil/keeper/icacallbacks.go +++ b/testutil/keeper/icacallbacks.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" + strideapp "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" ) func IcacallbacksKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/interchainquery.go b/testutil/keeper/interchainquery.go index 79734d8640..4d79592829 100644 --- a/testutil/keeper/interchainquery.go +++ b/testutil/keeper/interchainquery.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" + strideapp "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" ) func InterchainqueryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/records.go b/testutil/keeper/records.go index 98cc041507..a52c43b41a 100644 --- a/testutil/keeper/records.go +++ b/testutil/keeper/records.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/records/keeper" + strideapp "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/records/keeper" ) func RecordsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/stakeibc.go b/testutil/keeper/stakeibc.go index 3e3903eff3..17ae2aa427 100644 --- a/testutil/keeper/stakeibc.go +++ b/testutil/keeper/stakeibc.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" + strideapp "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" ) func StakeibcKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/network/network.go b/testutil/network/network.go index 838bef5fa4..bd39e0bb48 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -25,8 +25,8 @@ import ( genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - "github.com/Stride-Labs/stride/v12/app" - testutil "github.com/Stride-Labs/stride/v12/testutil" + "github.com/Stride-Labs/stride/v13/app" + testutil "github.com/Stride-Labs/stride/v13/testutil" ) type ( diff --git a/utils/utils.go b/utils/utils.go index 3d46a1354f..4194916e2a 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -16,9 +16,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - config "github.com/Stride-Labs/stride/v12/cmd/strided/config" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" + config "github.com/Stride-Labs/stride/v13/cmd/strided/config" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" ) func FilterDepositRecords(arr []recordstypes.DepositRecord, condition func(recordstypes.DepositRecord) bool) (ret []recordstypes.DepositRecord) { diff --git a/x/autopilot/client/cli/query.go b/x/autopilot/client/cli/query.go index b979929796..dea0acf6ee 100644 --- a/x/autopilot/client/cli/query.go +++ b/x/autopilot/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" "github.com/cosmos/cosmos-sdk/client/flags" ) diff --git a/x/autopilot/genesis.go b/x/autopilot/genesis.go index 6e08df8734..bf979e517f 100644 --- a/x/autopilot/genesis.go +++ b/x/autopilot/genesis.go @@ -3,8 +3,8 @@ package autopilot import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/autopilot/genesis_test.go b/x/autopilot/genesis_test.go index 56384a04a0..c39f328c1d 100644 --- a/x/autopilot/genesis_test.go +++ b/x/autopilot/genesis_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/autopilot" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/autopilot" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) func TestGenesis(t *testing.T) { diff --git a/x/autopilot/handler.go b/x/autopilot/handler.go index 7599c52dfc..d48c1ca4ca 100644 --- a/x/autopilot/handler.go +++ b/x/autopilot/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) // NewHandler returns autopilot module messages diff --git a/x/autopilot/keeper/airdrop.go b/x/autopilot/keeper/airdrop.go index dfe7362af4..161d88f92a 100644 --- a/x/autopilot/keeper/airdrop.go +++ b/x/autopilot/keeper/airdrop.go @@ -11,10 +11,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) TryUpdateAirdropClaim( diff --git a/x/autopilot/keeper/airdrop_test.go b/x/autopilot/keeper/airdrop_test.go index a80dbcc32c..b981a1fb60 100644 --- a/x/autopilot/keeper/airdrop_test.go +++ b/x/autopilot/keeper/airdrop_test.go @@ -12,11 +12,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/autopilot" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/autopilot" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // TODO: Separate out tests cases that are not necessarily Claim or Stakeibc related, diff --git a/x/autopilot/keeper/grpc_query_params.go b/x/autopilot/keeper/grpc_query_params.go index 55a0502a49..0199e6e070 100644 --- a/x/autopilot/keeper/grpc_query_params.go +++ b/x/autopilot/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/autopilot/keeper/grpc_query_params_test.go b/x/autopilot/keeper/grpc_query_params_test.go index c84ca06664..ea8d79b57a 100644 --- a/x/autopilot/keeper/grpc_query_params_test.go +++ b/x/autopilot/keeper/grpc_query_params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "context" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) func (s *KeeperTestSuite) TestParamsQuery() { diff --git a/x/autopilot/keeper/keeper.go b/x/autopilot/keeper/keeper.go index 417d724c80..4ff8d275ea 100644 --- a/x/autopilot/keeper/keeper.go +++ b/x/autopilot/keeper/keeper.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" ) type ( diff --git a/x/autopilot/keeper/keeper_test.go b/x/autopilot/keeper/keeper_test.go index 6220ef27bc..56cd2a6b27 100644 --- a/x/autopilot/keeper/keeper_test.go +++ b/x/autopilot/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) type KeeperTestSuite struct { diff --git a/x/autopilot/keeper/liquidstake.go b/x/autopilot/keeper/liquidstake.go index d5c485212d..18acf8e738 100644 --- a/x/autopilot/keeper/liquidstake.go +++ b/x/autopilot/keeper/liquidstake.go @@ -11,9 +11,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) TryLiquidStaking( diff --git a/x/autopilot/keeper/liquidstake_test.go b/x/autopilot/keeper/liquidstake_test.go index 344814c0c9..2b27e8f53d 100644 --- a/x/autopilot/keeper/liquidstake_test.go +++ b/x/autopilot/keeper/liquidstake_test.go @@ -10,16 +10,16 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordsmodule "github.com/Stride-Labs/stride/v12/x/records" + recordsmodule "github.com/Stride-Labs/stride/v13/x/records" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/autopilot" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/autopilot" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func getStakeibcPacketMetadata(address, action string) string { diff --git a/x/autopilot/keeper/params.go b/x/autopilot/keeper/params.go index 697bfbdc31..2b0e504efa 100644 --- a/x/autopilot/keeper/params.go +++ b/x/autopilot/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) // GetParams get all parameters as types.Params diff --git a/x/autopilot/keeper/params_test.go b/x/autopilot/keeper/params_test.go index 35962aa4c2..9ddac8e487 100644 --- a/x/autopilot/keeper/params_test.go +++ b/x/autopilot/keeper/params_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) func (s *KeeperTestSuite) TestGetParams() { diff --git a/x/autopilot/module.go b/x/autopilot/module.go index ac734ebc01..06ddc6b52e 100644 --- a/x/autopilot/module.go +++ b/x/autopilot/module.go @@ -18,9 +18,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/autopilot/client/cli" - "github.com/Stride-Labs/stride/v12/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/client/cli" + "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) var ( diff --git a/x/autopilot/module_ibc.go b/x/autopilot/module_ibc.go index 222c503ca8..e3b3e58c08 100644 --- a/x/autopilot/module_ibc.go +++ b/x/autopilot/module_ibc.go @@ -12,8 +12,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/Stride-Labs/stride/v12/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" ) diff --git a/x/autopilot/types/genesis.pb.go b/x/autopilot/types/genesis.pb.go index 9c643067be..3dd273128c 100644 --- a/x/autopilot/types/genesis.pb.go +++ b/x/autopilot/types/genesis.pb.go @@ -88,8 +88,8 @@ var fileDescriptor_a7e087b21fd12e65 = []byte{ 0xbb, 0x93, 0xef, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x0d, 0xd7, 0xf5, 0x49, 0x4c, - 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x48, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x76, 0x33, 0xbf, 0x1b, + 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, + 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x37, 0x28, 0x33, 0x75, 0x17, 0x01, 0x00, 0x00, } diff --git a/x/autopilot/types/genesis_test.go b/x/autopilot/types/genesis_test.go index e53970940e..c9ad962c08 100644 --- a/x/autopilot/types/genesis_test.go +++ b/x/autopilot/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/autopilot/types/params.pb.go b/x/autopilot/types/params.pb.go index 21bee189ef..e2d8895e39 100644 --- a/x/autopilot/types/params.pb.go +++ b/x/autopilot/types/params.pb.go @@ -96,8 +96,8 @@ var fileDescriptor_b0b993e9f5195319 = []byte{ 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x0e, 0xd5, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xfa, - 0xa9, 0xcc, 0xd0, 0x48, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, - 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x59, 0x0c, 0x9e, 0xfa, 0x00, 0x00, 0x00, + 0xa9, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, + 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x42, 0x80, 0xf0, 0xfa, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/autopilot/types/parser_test.go b/x/autopilot/types/parser_test.go index d069a4198c..592d42cd4d 100644 --- a/x/autopilot/types/parser_test.go +++ b/x/autopilot/types/parser_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/autopilot/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/autopilot/types" ) func init() { diff --git a/x/autopilot/types/query.pb.go b/x/autopilot/types/query.pb.go index 389e950c61..94a554c057 100644 --- a/x/autopilot/types/query.pb.go +++ b/x/autopilot/types/query.pb.go @@ -136,9 +136,9 @@ var fileDescriptor_1dd160550c308365 = []byte{ 0xfd, 0x60, 0xb0, 0x72, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0x1c, 0x5e, 0x77, 0xf2, 0x3d, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xe3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, - 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x1a, 0xe9, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x91, - 0x4e, 0xf5, 0xcf, 0x01, 0x00, 0x00, + 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x1a, 0xeb, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x8a, + 0xc2, 0x9b, 0xcf, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/client/cli/cli_test.go b/x/claim/client/cli/cli_test.go index 5cc86c8039..563de46a51 100644 --- a/x/claim/client/cli/cli_test.go +++ b/x/claim/client/cli/cli_test.go @@ -14,23 +14,23 @@ import ( clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - strideclitestutil "github.com/Stride-Labs/stride/v12/testutil/cli" + strideclitestutil "github.com/Stride-Labs/stride/v13/testutil/cli" - "github.com/Stride-Labs/stride/v12/testutil/network" + "github.com/Stride-Labs/stride/v13/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/Stride-Labs/stride/v12/x/claim/client/cli" + "github.com/Stride-Labs/stride/v13/x/claim/client/cli" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/app" - cmdcfg "github.com/Stride-Labs/stride/v12/cmd/strided/config" - "github.com/Stride-Labs/stride/v12/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/app" + cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" + "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) var addr1 sdk.AccAddress diff --git a/x/claim/client/cli/query.go b/x/claim/client/cli/query.go index 561aef6c2c..106e78d6c8 100644 --- a/x/claim/client/cli/query.go +++ b/x/claim/client/cli/query.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/claim/client/cli/tx.go b/x/claim/client/cli/tx.go index 59d2486635..6ddbe5c8b0 100644 --- a/x/claim/client/cli/tx.go +++ b/x/claim/client/cli/tx.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/claim/client/cli/tx_claim_free_amount.go b/x/claim/client/cli/tx_claim_free_amount.go index 92d5138765..627e2da066 100644 --- a/x/claim/client/cli/tx_claim_free_amount.go +++ b/x/claim/client/cli/tx_claim_free_amount.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func CmdClaimFreeAmount() *cobra.Command { diff --git a/x/claim/client/cli/tx_create_airdrop.go b/x/claim/client/cli/tx_create_airdrop.go index 2922b2bbad..6255cfdbb0 100644 --- a/x/claim/client/cli/tx_create_airdrop.go +++ b/x/claim/client/cli/tx_create_airdrop.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func CmdCreateAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_delete_airdrop.go b/x/claim/client/cli/tx_delete_airdrop.go index f84c060cec..75abd63a9f 100644 --- a/x/claim/client/cli/tx_delete_airdrop.go +++ b/x/claim/client/cli/tx_delete_airdrop.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func CmdDeleteAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_set_airdrop_allocations.go b/x/claim/client/cli/tx_set_airdrop_allocations.go index 7bce57f1e3..2fc7c45988 100644 --- a/x/claim/client/cli/tx_set_airdrop_allocations.go +++ b/x/claim/client/cli/tx_set_airdrop_allocations.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func CmdSetAirdropAllocations() *cobra.Command { diff --git a/x/claim/genesis_test.go b/x/claim/genesis_test.go index cff5780e7d..ed3cf05cc9 100644 --- a/x/claim/genesis_test.go +++ b/x/claim/genesis_test.go @@ -9,9 +9,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/claim/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func TestGenesis(t *testing.T) { diff --git a/x/claim/handler.go b/x/claim/handler.go index 527198b6e4..84496a6490 100644 --- a/x/claim/handler.go +++ b/x/claim/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/claim/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/keeper" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) // NewHandler returns claim module messages diff --git a/x/claim/keeper/claim.go b/x/claim/keeper/claim.go index 8ab2172b30..adf0afc99d 100644 --- a/x/claim/keeper/claim.go +++ b/x/claim/keeper/claim.go @@ -14,10 +14,10 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/claim/types" - vestingtypes "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/claim/types" + vestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" ) func (k Keeper) LoadAllocationData(ctx sdk.Context, allocationData string) bool { diff --git a/x/claim/keeper/claim_test.go b/x/claim/keeper/claim_test.go index 61714c5a83..5fcc036121 100644 --- a/x/claim/keeper/claim_test.go +++ b/x/claim/keeper/claim_test.go @@ -11,12 +11,12 @@ import ( vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/utils" - claimkeeper "github.com/Stride-Labs/stride/v12/x/claim/keeper" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/utils" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/types" - stridevestingtypes "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" + stridevestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" ) // Test functionality for loading allocation data(csv) diff --git a/x/claim/keeper/genesis.go b/x/claim/keeper/genesis.go index e67f7fcb50..ba94a8473a 100644 --- a/x/claim/keeper/genesis.go +++ b/x/claim/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/claim/keeper/grpc_query.go b/x/claim/keeper/grpc_query.go index 71833c74c8..6539cd6a51 100644 --- a/x/claim/keeper/grpc_query.go +++ b/x/claim/keeper/grpc_query.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/claim/keeper/hooks.go b/x/claim/keeper/hooks.go index e8bd9fc7c6..820e4045ec 100644 --- a/x/claim/keeper/hooks.go +++ b/x/claim/keeper/hooks.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - stakingibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + stakingibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func (k Keeper) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { diff --git a/x/claim/keeper/hooks_test.go b/x/claim/keeper/hooks_test.go index 50098a92da..272116361a 100644 --- a/x/claim/keeper/hooks_test.go +++ b/x/claim/keeper/hooks_test.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/claim/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/claim/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" ) func (s *KeeperTestSuite) TestAfterEpochEnd() { diff --git a/x/claim/keeper/keeper.go b/x/claim/keeper/keeper.go index 7b69823fbe..87dc2d67f9 100644 --- a/x/claim/keeper/keeper.go +++ b/x/claim/keeper/keeper.go @@ -9,7 +9,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) // Keeper struct diff --git a/x/claim/keeper/keeper_test.go b/x/claim/keeper/keeper_test.go index 4be2f2fed8..6542d73d6e 100644 --- a/x/claim/keeper/keeper_test.go +++ b/x/claim/keeper/keeper_test.go @@ -12,9 +12,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/claim/types" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/claim/types" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" ) type KeeperTestSuite struct { diff --git a/x/claim/keeper/msg_server.go b/x/claim/keeper/msg_server.go index f04c37fa67..24203b695b 100644 --- a/x/claim/keeper/msg_server.go +++ b/x/claim/keeper/msg_server.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) type msgServer struct { diff --git a/x/claim/keeper/msg_server_test.go b/x/claim/keeper/msg_server_test.go index 20217640ef..9f415f14e5 100644 --- a/x/claim/keeper/msg_server_test.go +++ b/x/claim/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/claim/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/keeper" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) func (suite *KeeperTestSuite) TestSetAirdropAllocationsForMultiAirdrops() { diff --git a/x/claim/keeper/params.go b/x/claim/keeper/params.go index 98238c9f64..b6fced202c 100644 --- a/x/claim/keeper/params.go +++ b/x/claim/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) // GetParams get params diff --git a/x/claim/migrations/v2/convert.go b/x/claim/migrations/v2/convert.go index ffedc72681..8eeb2827c7 100644 --- a/x/claim/migrations/v2/convert.go +++ b/x/claim/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldclaimtypes "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) func convertToNewAirdrop(oldAirdrop oldclaimtypes.Airdrop) claimtypes.Airdrop { diff --git a/x/claim/migrations/v2/convert_test.go b/x/claim/migrations/v2/convert_test.go index f55f11c569..94d6a74796 100644 --- a/x/claim/migrations/v2/convert_test.go +++ b/x/claim/migrations/v2/convert_test.go @@ -10,8 +10,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - oldclaimtypes "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) func TestConvertToNewAirdrop(t *testing.T) { diff --git a/x/claim/migrations/v2/migrations.go b/x/claim/migrations/v2/migrations.go index a9f2548085..0d925ea19d 100644 --- a/x/claim/migrations/v2/migrations.go +++ b/x/claim/migrations/v2/migrations.go @@ -7,8 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldclaimtypes "github.com/Stride-Labs/stride/v12/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v12/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" ) func migrateClaimParams(store sdk.KVStore, cdc codec.Codec) error { diff --git a/x/claim/module.go b/x/claim/module.go index e6daafa942..e44a6ed4f9 100644 --- a/x/claim/module.go +++ b/x/claim/module.go @@ -16,9 +16,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/claim/client/cli" - "github.com/Stride-Labs/stride/v12/x/claim/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/types" + "github.com/Stride-Labs/stride/v13/x/claim/client/cli" + "github.com/Stride-Labs/stride/v13/x/claim/keeper" + "github.com/Stride-Labs/stride/v13/x/claim/types" ) var ( diff --git a/x/claim/types/claim.pb.go b/x/claim/types/claim.pb.go index 1b611aee3c..bc4799dba4 100644 --- a/x/claim/types/claim.pb.go +++ b/x/claim/types/claim.pb.go @@ -127,32 +127,32 @@ func init() { func init() { proto.RegisterFile("stride/claim/claim.proto", fileDescriptor_b4747d999b9dc0da) } var fileDescriptor_b4747d999b9dc0da = []byte{ - // 394 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0xce, 0xd2, 0x40, - 0x00, 0xc5, 0x5b, 0x20, 0xa8, 0x83, 0x0a, 0x8e, 0x1a, 0x0a, 0xc6, 0x96, 0x74, 0x61, 0x88, 0x91, - 0x36, 0xea, 0xce, 0x8d, 0x29, 0x50, 0x4c, 0x63, 0xa3, 0xb1, 0x60, 0x4c, 0xdc, 0x34, 0xa5, 0x33, - 0x96, 0x89, 0x94, 0x69, 0x3a, 0xe3, 0x1f, 0x6e, 0xe0, 0xd2, 0x3b, 0xb8, 0xf3, 0x24, 0x2c, 0x59, - 0x1a, 0x17, 0x8d, 0x81, 0x1b, 0xf4, 0x04, 0x86, 0xe9, 0x60, 0xcc, 0xf7, 0x6d, 0xda, 0xe6, 0xf7, - 0x7b, 0x79, 0xe9, 0xcc, 0x03, 0x1a, 0xe3, 0x39, 0x41, 0xd8, 0x8e, 0xd7, 0x11, 0x49, 0xab, 0xa7, - 0x95, 0xe5, 0x94, 0x53, 0x78, 0xbd, 0x32, 0x96, 0x60, 0xfd, 0x3b, 0x09, 0x4d, 0xa8, 0x10, 0xf6, - 0xe9, 0xab, 0xca, 0x98, 0x3f, 0x6b, 0xa0, 0x35, 0x39, 0xf9, 0x00, 0xc7, 0x34, 0x47, 0xd0, 0x07, - 0x30, 0x22, 0x39, 0xca, 0x69, 0x16, 0x12, 0x84, 0x37, 0x9c, 0x7c, 0x20, 0x38, 0xd7, 0xd4, 0x81, - 0x3a, 0xbc, 0x36, 0xbe, 0x5f, 0x16, 0x46, 0x6f, 0x1b, 0xa5, 0xeb, 0x67, 0xe6, 0xe5, 0x8c, 0x19, - 0xdc, 0x92, 0xd0, 0xfb, 0xc7, 0xe0, 0x23, 0x70, 0x25, 0x42, 0x28, 0xc7, 0x8c, 0x69, 0x35, 0x51, - 0x01, 0xcb, 0xc2, 0xb8, 0x29, 0x2b, 0x2a, 0x61, 0x06, 0xe7, 0x08, 0x7c, 0x07, 0x9a, 0x5f, 0x30, - 0x49, 0x56, 0x5c, 0xab, 0x8b, 0xf0, 0xf3, 0x5d, 0x61, 0x28, 0xbf, 0x0b, 0xe3, 0x41, 0x42, 0xf8, - 0xea, 0xd3, 0xd2, 0x8a, 0x69, 0x6a, 0xc7, 0x94, 0xa5, 0x94, 0xc9, 0xd7, 0x88, 0xa1, 0x8f, 0x36, - 0xdf, 0x66, 0x98, 0x59, 0x53, 0x1c, 0x97, 0x85, 0x71, 0xa3, 0xaa, 0xae, 0x5a, 0xcc, 0x40, 0xd6, - 0xc1, 0x19, 0xe8, 0x44, 0x31, 0x27, 0x74, 0x13, 0xc6, 0x34, 0xcd, 0xd6, 0x98, 0x63, 0xa4, 0x35, - 0x06, 0xf5, 0xe1, 0xd5, 0xf1, 0xbd, 0xb2, 0x30, 0xba, 0xf2, 0x7f, 0x2e, 0x24, 0xcc, 0xa0, 0x5d, - 0xa1, 0xc9, 0x99, 0x3c, 0x9c, 0x83, 0xa6, 0x23, 0x10, 0x6c, 0x83, 0x96, 0x33, 0x59, 0x78, 0xaf, - 0x5f, 0x85, 0xb3, 0xc0, 0x75, 0x3b, 0x0a, 0xec, 0x82, 0xdb, 0x12, 0xf8, 0xde, 0x9b, 0xb7, 0xde, - 0x34, 0x9c, 0x2f, 0x9c, 0x97, 0x6e, 0x47, 0x85, 0x3d, 0x70, 0x57, 0x8a, 0xa9, 0xeb, 0xbb, 0x2f, - 0x9c, 0x85, 0x2b, 0x55, 0xad, 0xdf, 0xf8, 0xf6, 0x43, 0x57, 0xc6, 0xde, 0xee, 0xa0, 0xab, 0xfb, - 0x83, 0xae, 0xfe, 0x39, 0xe8, 0xea, 0xf7, 0xa3, 0xae, 0xec, 0x8f, 0xba, 0xf2, 0xeb, 0xa8, 0x2b, - 0xef, 0xed, 0xff, 0xce, 0x3d, 0x17, 0x53, 0x8e, 0xfc, 0x68, 0xc9, 0x6c, 0x39, 0xf8, 0xe7, 0xc7, - 0x4f, 0xec, 0xaf, 0x72, 0x76, 0x71, 0x09, 0xcb, 0xa6, 0xd8, 0xf4, 0xe9, 0xdf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x37, 0xd9, 0x4a, 0x65, 0x13, 0x02, 0x00, 0x00, + // 392 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x0e, 0xd2, 0x30, + 0x00, 0xc6, 0x37, 0x20, 0xa8, 0x45, 0x05, 0xab, 0x86, 0x81, 0x71, 0x23, 0x3b, 0x18, 0x62, 0x64, + 0x8b, 0xe1, 0xe6, 0xc5, 0x0c, 0x18, 0x66, 0x71, 0xd1, 0x38, 0x30, 0x26, 0x5e, 0x96, 0xb1, 0xd6, + 0xd1, 0xc8, 0xe8, 0xb2, 0xd6, 0x3f, 0xbc, 0x81, 0x47, 0xdf, 0xc1, 0x9b, 0x4f, 0xc2, 0x91, 0xa3, + 0xf1, 0xb0, 0x18, 0x78, 0x83, 0x3d, 0x81, 0xa1, 0x2b, 0xc6, 0xe8, 0x65, 0x5b, 0x7e, 0xbf, 0x2f, + 0x5f, 0xd6, 0x7e, 0x40, 0x63, 0x3c, 0x27, 0x08, 0xdb, 0xf1, 0x26, 0x22, 0x69, 0xf5, 0xb4, 0xb2, + 0x9c, 0x72, 0x0a, 0xaf, 0x57, 0xc6, 0x12, 0xac, 0x7f, 0x27, 0xa1, 0x09, 0x15, 0xc2, 0x3e, 0x7f, + 0x55, 0x19, 0xf3, 0x7b, 0x0d, 0xb4, 0xa6, 0x67, 0x1f, 0xe0, 0x98, 0xe6, 0x08, 0xfa, 0x00, 0x46, + 0x24, 0x47, 0x39, 0xcd, 0x42, 0x82, 0xf0, 0x96, 0x93, 0x77, 0x04, 0xe7, 0x9a, 0x3a, 0x50, 0x87, + 0xd7, 0x26, 0xf7, 0xcb, 0xc2, 0xe8, 0xed, 0xa2, 0x74, 0xf3, 0xc4, 0xfc, 0x3f, 0x63, 0x06, 0xb7, + 0x24, 0xf4, 0xfe, 0x30, 0xf8, 0x08, 0x5c, 0x89, 0x10, 0xca, 0x31, 0x63, 0x5a, 0x4d, 0x54, 0xc0, + 0xb2, 0x30, 0x6e, 0xca, 0x8a, 0x4a, 0x98, 0xc1, 0x25, 0x02, 0xdf, 0x80, 0xe6, 0x27, 0x4c, 0x92, + 0x35, 0xd7, 0xea, 0x22, 0xfc, 0x74, 0x5f, 0x18, 0xca, 0xcf, 0xc2, 0x78, 0x90, 0x10, 0xbe, 0xfe, + 0xb0, 0xb2, 0x62, 0x9a, 0xda, 0x31, 0x65, 0x29, 0x65, 0xf2, 0x35, 0x62, 0xe8, 0xbd, 0xcd, 0x77, + 0x19, 0x66, 0xd6, 0x0c, 0xc7, 0x65, 0x61, 0xdc, 0xa8, 0xaa, 0xab, 0x16, 0x33, 0x90, 0x75, 0x70, + 0x0e, 0x3a, 0x51, 0xcc, 0x09, 0xdd, 0x86, 0x31, 0x4d, 0xb3, 0x0d, 0xe6, 0x18, 0x69, 0x8d, 0x41, + 0x7d, 0x78, 0x75, 0x72, 0xaf, 0x2c, 0x8c, 0xae, 0xfc, 0x9f, 0x7f, 0x12, 0x66, 0xd0, 0xae, 0xd0, + 0xf4, 0x42, 0x1e, 0x2e, 0x40, 0xd3, 0x11, 0x08, 0xb6, 0x41, 0xcb, 0x99, 0x2e, 0xbd, 0x97, 0x2f, + 0xc2, 0x79, 0xe0, 0xba, 0x1d, 0x05, 0x76, 0xc1, 0x6d, 0x09, 0x7c, 0xef, 0xd5, 0x6b, 0x6f, 0x16, + 0x2e, 0x96, 0xce, 0x73, 0xb7, 0xa3, 0xc2, 0x1e, 0xb8, 0x2b, 0xc5, 0xcc, 0xf5, 0xdd, 0x67, 0xce, + 0xd2, 0x95, 0xaa, 0xd6, 0x6f, 0x7c, 0xf9, 0xa6, 0x2b, 0x13, 0x6f, 0x7f, 0xd4, 0xd5, 0xc3, 0x51, + 0x57, 0x7f, 0x1d, 0x75, 0xf5, 0xeb, 0x49, 0x57, 0x0e, 0x27, 0x5d, 0xf9, 0x71, 0xd2, 0x95, 0xb7, + 0xf6, 0x5f, 0xe7, 0x5e, 0x88, 0x29, 0x47, 0x7e, 0xb4, 0x62, 0xb6, 0x1c, 0xfc, 0xe3, 0xe3, 0xb1, + 0xfd, 0x59, 0xce, 0x2e, 0x2e, 0x61, 0xd5, 0x14, 0x9b, 0x8e, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, + 0xe3, 0x33, 0x39, 0xfe, 0x13, 0x02, 0x00, 0x00, } func (m *ClaimRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/expected_keepers.go b/x/claim/types/expected_keepers.go index d6514fe2ec..cfd727cf20 100644 --- a/x/claim/types/expected_keepers.go +++ b/x/claim/types/expected_keepers.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // BankKeeper defines the banking contract that must be fulfilled when diff --git a/x/claim/types/genesis.pb.go b/x/claim/types/genesis.pb.go index 045b8a70ba..31e44b4221 100644 --- a/x/claim/types/genesis.pb.go +++ b/x/claim/types/genesis.pb.go @@ -100,9 +100,9 @@ var fileDescriptor_ecf5648202726596 = []byte{ 0xa1, 0xb4, 0xd8, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x56, 0xe9, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xa4, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x3d, - 0xce, 0x91, 0x7c, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xac, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xce, 0xd7, + 0xbd, 0x0a, 0x7c, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/msgs.go b/x/claim/types/msgs.go index 9cf221111d..197a8d543b 100644 --- a/x/claim/types/msgs.go +++ b/x/claim/types/msgs.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) // Msg type for MsgSetAirdropAllocations diff --git a/x/claim/types/params.pb.go b/x/claim/types/params.pb.go index b5511df0e3..fa276af671 100644 --- a/x/claim/types/params.pb.go +++ b/x/claim/types/params.pb.go @@ -180,40 +180,40 @@ func init() { func init() { proto.RegisterFile("stride/claim/params.proto", fileDescriptor_dd7ac871d3875dc3) } var fileDescriptor_dd7ac871d3875dc3 = []byte{ - // 515 bytes of a gzipped FileDescriptorProto + // 516 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x6d, 0xd8, 0x68, 0x8b, 0x3b, 0xc1, 0x66, 0x40, 0xa4, 0x95, 0x48, 0xaa, 0x48, 0xa0, 0x4a, - 0xb0, 0x58, 0x2b, 0x37, 0x38, 0xb5, 0x1a, 0x48, 0x95, 0x76, 0x40, 0xe9, 0x4e, 0x5c, 0x22, 0xa7, - 0x76, 0x3b, 0x8b, 0x26, 0x8e, 0x6c, 0x17, 0xd1, 0x5f, 0xc0, 0x75, 0x47, 0x7e, 0x0f, 0xa7, 0x1d, - 0x77, 0x44, 0x1c, 0x02, 0x6a, 0x6f, 0x1c, 0xf7, 0x0b, 0x90, 0x1d, 0xa7, 0x2b, 0xeb, 0xa9, 0xf5, - 0x7b, 0xef, 0xfb, 0xde, 0xfb, 0xfc, 0xc5, 0xa0, 0x2d, 0x95, 0x60, 0x84, 0xa2, 0xc9, 0x1c, 0xb3, - 0x14, 0xe5, 0x58, 0xe0, 0x54, 0x86, 0xb9, 0xe0, 0x8a, 0xc3, 0x83, 0x92, 0x0a, 0x0d, 0xd5, 0x79, - 0x32, 0xe3, 0x33, 0x6e, 0x08, 0xa4, 0xff, 0x95, 0x9a, 0x8e, 0x37, 0xe3, 0x7c, 0x36, 0xa7, 0xc8, - 0x9c, 0x92, 0xc5, 0x14, 0x91, 0x85, 0xc0, 0x8a, 0xf1, 0xcc, 0xf2, 0xfe, 0x5d, 0x5e, 0xb1, 0x94, - 0x4a, 0x85, 0xd3, 0xbc, 0x14, 0x04, 0xef, 0x40, 0xfd, 0xa3, 0x31, 0x85, 0x27, 0xa0, 0x89, 0x99, - 0x20, 0x82, 0xe7, 0xd2, 0x75, 0xba, 0x7b, 0xbd, 0x56, 0xff, 0x69, 0xb8, 0x9d, 0x20, 0x1c, 0x94, - 0x6c, 0xb4, 0x91, 0x05, 0x3f, 0xf6, 0x41, 0xc3, 0xa2, 0xf0, 0x0c, 0x40, 0x8b, 0xc7, 0x8c, 0xd0, - 0x4c, 0xb1, 0x29, 0xa3, 0xc2, 0x75, 0xba, 0x4e, 0xef, 0xc1, 0xf0, 0xf9, 0x4d, 0xe1, 0xb7, 0x97, - 0x38, 0x9d, 0xbf, 0x0d, 0x76, 0x35, 0x41, 0x74, 0x64, 0xc1, 0xd1, 0x06, 0x83, 0x6d, 0xd0, 0x9c, - 0x5c, 0x60, 0x96, 0xc5, 0x8c, 0xb8, 0x0d, 0xdd, 0x23, 0x6a, 0x98, 0xf3, 0x88, 0x40, 0x7e, 0x6b, - 0x24, 0x15, 0x16, 0x2a, 0xd6, 0x23, 0xb9, 0xf7, 0xba, 0x4e, 0xaf, 0xd5, 0xef, 0x84, 0xe5, 0xbc, - 0x61, 0x35, 0x6f, 0x78, 0x5e, 0xcd, 0x3b, 0x7c, 0x71, 0x55, 0xf8, 0xb5, 0xdd, 0x20, 0xb7, 0x3d, - 0x82, 0xcb, 0xdf, 0xbe, 0x13, 0x1d, 0x5a, 0x62, 0xac, 0x71, 0x5d, 0x0d, 0xbf, 0x39, 0xa0, 0x02, - 0xe3, 0xea, 0x7a, 0xdd, 0x3d, 0xe3, 0xd7, 0xde, 0xf1, 0x3b, 0xb5, 0x82, 0xe1, 0x40, 0xdb, 0xfd, - 0x2d, 0xfc, 0xce, 0xdd, 0xd2, 0xd7, 0x3c, 0x65, 0x8a, 0xa6, 0xb9, 0x5a, 0xde, 0x14, 0xfe, 0xb3, - 0xff, 0xc3, 0x54, 0x9a, 0xe0, 0xbb, 0x8e, 0xf2, 0xc8, 0xc2, 0x55, 0x4f, 0xe8, 0x83, 0x96, 0x59, - 0x45, 0x4c, 0x68, 0xc6, 0x53, 0x77, 0xdf, 0x5c, 0x0c, 0x30, 0xd0, 0xa9, 0x46, 0x20, 0x02, 0x8f, - 0x09, 0xd3, 0x4b, 0x4b, 0x16, 0x8a, 0x8b, 0x18, 0x13, 0x22, 0xa8, 0x94, 0xee, 0x7d, 0x23, 0x84, - 0x5b, 0xd4, 0xa0, 0x64, 0xe0, 0x39, 0x78, 0x68, 0xca, 0x29, 0x89, 0x25, 0x8f, 0xa7, 0x58, 0xb8, - 0x75, 0xb3, 0xb1, 0x50, 0xa7, 0xff, 0x55, 0xf8, 0x2f, 0x67, 0x4c, 0x5d, 0x2c, 0x92, 0x70, 0xc2, - 0x53, 0x34, 0xe1, 0x32, 0xe5, 0xd2, 0xfe, 0x1c, 0x4b, 0xf2, 0x19, 0xa9, 0x65, 0x4e, 0x65, 0x38, - 0xca, 0x54, 0x74, 0x60, 0xbb, 0x8c, 0xf9, 0x07, 0x2c, 0xe0, 0x2b, 0x70, 0x84, 0x17, 0x8a, 0xe7, - 0x6c, 0xce, 0x55, 0x4c, 0x33, 0x9c, 0xcc, 0x29, 0x71, 0x9b, 0x5d, 0xa7, 0xd7, 0x8c, 0x0e, 0x37, - 0xc4, 0xfb, 0x12, 0x1f, 0x8e, 0xae, 0x56, 0x9e, 0x73, 0xbd, 0xf2, 0x9c, 0x3f, 0x2b, 0xcf, 0xb9, - 0x5c, 0x7b, 0xb5, 0xeb, 0xb5, 0x57, 0xfb, 0xb9, 0xf6, 0x6a, 0x9f, 0xd0, 0x96, 0xf9, 0xd8, 0x7c, - 0x89, 0xc7, 0x67, 0x38, 0x91, 0xc8, 0x3e, 0x99, 0x2f, 0x27, 0x7d, 0xf4, 0xd5, 0x3e, 0x1c, 0x93, - 0x24, 0xa9, 0x9b, 0x35, 0xbc, 0xf9, 0x17, 0x00, 0x00, 0xff, 0xff, 0x60, 0x4b, 0xab, 0x47, 0x55, - 0x03, 0x00, 0x00, + 0xb0, 0x58, 0xdb, 0x6e, 0x70, 0x6a, 0x35, 0x90, 0x2a, 0xed, 0x80, 0xd2, 0x9d, 0xb8, 0x44, 0x4e, + 0xed, 0x76, 0x16, 0x4d, 0x1c, 0xd9, 0x2e, 0xa2, 0xbf, 0x80, 0xeb, 0x8e, 0xfc, 0x1e, 0x4e, 0x3b, + 0xee, 0x88, 0x38, 0x04, 0xd4, 0xde, 0x38, 0xee, 0x17, 0x20, 0x3b, 0x4e, 0xd7, 0xad, 0xa7, 0xd6, + 0xef, 0xbd, 0xef, 0x7b, 0xef, 0xf3, 0x17, 0x83, 0xb6, 0x54, 0x82, 0x11, 0x8a, 0xc6, 0x33, 0xcc, + 0x52, 0x94, 0x63, 0x81, 0x53, 0x19, 0xe6, 0x82, 0x2b, 0x0e, 0xf7, 0x4a, 0x2a, 0x34, 0x54, 0xe7, + 0xd9, 0x94, 0x4f, 0xb9, 0x21, 0x90, 0xfe, 0x57, 0x6a, 0x3a, 0xde, 0x94, 0xf3, 0xe9, 0x8c, 0x22, + 0x73, 0x4a, 0xe6, 0x13, 0x44, 0xe6, 0x02, 0x2b, 0xc6, 0x33, 0xcb, 0xfb, 0xf7, 0x79, 0xc5, 0x52, + 0x2a, 0x15, 0x4e, 0xf3, 0x52, 0x10, 0xbc, 0x07, 0xf5, 0x4f, 0xc6, 0x14, 0x1e, 0x81, 0x26, 0x66, + 0x82, 0x08, 0x9e, 0x4b, 0xd7, 0xe9, 0xee, 0xf4, 0x5a, 0xc7, 0xcf, 0xc3, 0xcd, 0x04, 0x61, 0xbf, + 0x64, 0xa3, 0xb5, 0x2c, 0xf8, 0xb9, 0x0b, 0x1a, 0x16, 0x85, 0x67, 0x00, 0x5a, 0x3c, 0x66, 0x84, + 0x66, 0x8a, 0x4d, 0x18, 0x15, 0xae, 0xd3, 0x75, 0x7a, 0x8f, 0x06, 0x2f, 0x6f, 0x0a, 0xbf, 0xbd, + 0xc0, 0xe9, 0xec, 0x5d, 0xb0, 0xad, 0x09, 0xa2, 0x03, 0x0b, 0x0e, 0xd7, 0x18, 0x6c, 0x83, 0xe6, + 0xf8, 0x02, 0xb3, 0x2c, 0x66, 0xc4, 0x6d, 0xe8, 0x1e, 0x51, 0xc3, 0x9c, 0x87, 0x04, 0xf2, 0x5b, + 0x23, 0xa9, 0xb0, 0x50, 0xb1, 0x1e, 0xc9, 0x7d, 0xd0, 0x75, 0x7a, 0xad, 0xe3, 0x4e, 0x58, 0xce, + 0x1b, 0x56, 0xf3, 0x86, 0xe7, 0xd5, 0xbc, 0x83, 0x57, 0x57, 0x85, 0x5f, 0xdb, 0x0e, 0x72, 0xdb, + 0x23, 0xb8, 0xfc, 0xe3, 0x3b, 0xd1, 0xbe, 0x25, 0x46, 0x1a, 0xd7, 0xd5, 0xf0, 0xbb, 0x03, 0x2a, + 0x30, 0xae, 0xae, 0xd7, 0xdd, 0x31, 0x7e, 0xed, 0x2d, 0xbf, 0x53, 0x2b, 0x18, 0xf4, 0xb5, 0xdd, + 0xbf, 0xc2, 0xef, 0xdc, 0x2f, 0x7d, 0xcb, 0x53, 0xa6, 0x68, 0x9a, 0xab, 0xc5, 0x4d, 0xe1, 0xbf, + 0xb8, 0x1b, 0xa6, 0xd2, 0x04, 0x3f, 0x74, 0x94, 0x27, 0x16, 0xae, 0x7a, 0x42, 0x1f, 0xb4, 0xcc, + 0x2a, 0x62, 0x42, 0x33, 0x9e, 0xba, 0xbb, 0xe6, 0x62, 0x80, 0x81, 0x4e, 0x35, 0x02, 0x11, 0x78, + 0x4a, 0x98, 0x5e, 0x5a, 0x32, 0x57, 0x5c, 0xc4, 0x98, 0x10, 0x41, 0xa5, 0x74, 0x1f, 0x1a, 0x21, + 0xdc, 0xa0, 0xfa, 0x25, 0x03, 0xcf, 0xc1, 0x63, 0x53, 0x4e, 0x49, 0x2c, 0x79, 0x3c, 0xc1, 0xc2, + 0xad, 0x9b, 0x8d, 0x85, 0x3a, 0xfd, 0xef, 0xc2, 0x7f, 0x3d, 0x65, 0xea, 0x62, 0x9e, 0x84, 0x63, + 0x9e, 0xa2, 0x31, 0x97, 0x29, 0x97, 0xf6, 0xe7, 0x50, 0x92, 0x2f, 0x48, 0x2d, 0x72, 0x2a, 0xc3, + 0x61, 0xa6, 0xa2, 0x3d, 0xdb, 0x65, 0xc4, 0x3f, 0x62, 0x01, 0xdf, 0x80, 0x03, 0x3c, 0x57, 0x3c, + 0x67, 0x33, 0xae, 0x62, 0x9a, 0xe1, 0x64, 0x46, 0x89, 0xdb, 0xec, 0x3a, 0xbd, 0x66, 0xb4, 0xbf, + 0x26, 0x3e, 0x94, 0xf8, 0x60, 0x78, 0xb5, 0xf4, 0x9c, 0xeb, 0xa5, 0xe7, 0xfc, 0x5d, 0x7a, 0xce, + 0xe5, 0xca, 0xab, 0x5d, 0xaf, 0xbc, 0xda, 0xaf, 0x95, 0x57, 0xfb, 0x8c, 0x36, 0xcc, 0x47, 0xe6, + 0x4b, 0x3c, 0x3c, 0xc3, 0x89, 0x44, 0xf6, 0xc9, 0x7c, 0x3d, 0x3a, 0x41, 0xdf, 0xec, 0xc3, 0x31, + 0x49, 0x92, 0xba, 0x59, 0xc3, 0xc9, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xa1, 0xd8, 0xdc, + 0x55, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index 358218194b..af59e53a34 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - types2 "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + types2 "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -926,82 +926,82 @@ func init() { proto.RegisterFile("stride/claim/query.proto", fileDescriptor_baa8 var fileDescriptor_baa87682a02846df = []byte{ // 1225 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0x24, 0x6d, 0xd2, 0x4e, 0x12, 0x47, 0x99, 0x7c, 0xd4, 0xde, 0x34, 0xb6, 0x19, 0x48, - 0x62, 0xa4, 0x66, 0x97, 0xb8, 0x88, 0x03, 0x17, 0x60, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, - 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xdd, 0x8a, 0xa8, 0xaa, 0x10, + 0x18, 0xce, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x36, 0xa9, 0xbd, 0x69, 0x6c, 0x33, 0x90, + 0xc4, 0x48, 0xcd, 0x2e, 0x49, 0x10, 0x07, 0x2e, 0x80, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, + 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xd9, 0x8a, 0xa8, 0xaa, 0x10, 0x70, 0xe0, 0x06, 0x91, 0x80, 0x1f, 0x01, 0x12, 0x07, 0x7e, 0x02, 0x07, 0xa4, 0x1e, 0x2b, 0x71, 0xe1, 0x00, 0x29, 0x4a, 0xf8, 0x05, 0x91, 0xe0, 0x8c, 0x76, 0xe6, 0x5d, 0x67, 0xd7, 0x59, 0xd7, - 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0xc2, - 0xc0, 0x75, 0xb8, 0x61, 0xb7, 0x99, 0xdb, 0x31, 0xf6, 0x22, 0x1e, 0xec, 0xeb, 0xdd, 0xc0, 0x0f, - 0x7d, 0x32, 0xa5, 0x24, 0xba, 0x94, 0x68, 0xf3, 0x2d, 0xbf, 0xe5, 0x4b, 0x81, 0x11, 0xff, 0xa7, - 0x74, 0xb4, 0xeb, 0x2d, 0xdf, 0x6f, 0xb5, 0xb9, 0xc1, 0xba, 0xae, 0xc1, 0x3c, 0xcf, 0x0f, 0x59, - 0xe8, 0xfa, 0x9e, 0x00, 0x69, 0xd9, 0xf6, 0x45, 0xc7, 0x17, 0x46, 0x93, 0x09, 0x6e, 0xdc, 0xdb, - 0x68, 0xf2, 0x90, 0x6d, 0x18, 0xb6, 0xef, 0x7a, 0x20, 0xcf, 0xc6, 0x96, 0x7f, 0x41, 0x52, 0xca, - 0x48, 0xba, 0x2c, 0x60, 0x9d, 0xc4, 0xe9, 0x75, 0x10, 0xdd, 0xe3, 0x22, 0x74, 0xbd, 0x56, 0xf2, - 0x0b, 0xd2, 0x0a, 0x00, 0x92, 0x5f, 0xcd, 0x68, 0xd7, 0x08, 0xdd, 0x0e, 0x17, 0x21, 0xeb, 0x74, - 0x95, 0x02, 0xdd, 0xc1, 0x93, 0x9b, 0xb1, 0xd3, 0xed, 0x90, 0x85, 0x91, 0x20, 0xeb, 0x98, 0x30, - 0x37, 0x70, 0x02, 0xbf, 0xdb, 0x70, 0x1d, 0xee, 0x85, 0xee, 0xae, 0xcb, 0x83, 0x22, 0xaa, 0xa2, - 0xda, 0x55, 0x6b, 0x16, 0x24, 0x5b, 0x3d, 0x01, 0x29, 0xe2, 0x09, 0x09, 0x89, 0x3b, 0xc5, 0xd1, - 0x2a, 0xaa, 0x5d, 0xb1, 0x92, 0x4f, 0xfa, 0x16, 0xbe, 0xf6, 0x6e, 0x5c, 0xbc, 0x94, 0x73, 0x8b, - 0xef, 0x45, 0x5c, 0x84, 0xe4, 0x06, 0x9e, 0x60, 0x8e, 0x13, 0x70, 0x21, 0x94, 0x63, 0x93, 0x9c, - 0x1c, 0x56, 0x0a, 0xfb, 0xac, 0xd3, 0x7e, 0x99, 0x82, 0x80, 0x5a, 0x89, 0x0a, 0x8d, 0x70, 0xf1, - 0xac, 0x23, 0xd1, 0xf5, 0x3d, 0xc1, 0xc9, 0xfb, 0x78, 0x4a, 0xc6, 0x6b, 0x08, 0xb9, 0x5e, 0x44, - 0xd5, 0xb1, 0xda, 0x64, 0xbd, 0xa4, 0xa7, 0x3b, 0xa5, 0xa7, 0x0c, 0xcd, 0xa5, 0x87, 0x87, 0x95, - 0x91, 0x93, 0xc3, 0xca, 0x9c, 0x8a, 0x96, 0x36, 0xa6, 0xd6, 0xa4, 0x7d, 0xaa, 0x49, 0x7f, 0x1e, - 0xc5, 0xd3, 0xd2, 0xf2, 0x1d, 0x1e, 0x32, 0x87, 0x85, 0xec, 0xa2, 0xa5, 0x79, 0x16, 0x4f, 0xdb, - 0x51, 0x10, 0x70, 0x2f, 0x6c, 0x04, 0x7e, 0xe4, 0xa9, 0x02, 0x5d, 0xb5, 0xa6, 0x60, 0xd1, 0x8a, - 0xd7, 0x48, 0x80, 0xe7, 0x32, 0x4a, 0x31, 0x96, 0x20, 0x2c, 0x8e, 0x55, 0x51, 0x6d, 0xb2, 0xae, - 0xe9, 0xaa, 0x79, 0x7a, 0xd2, 0x3c, 0xfd, 0x6e, 0xd2, 0x3c, 0x73, 0x15, 0x12, 0xd1, 0x20, 0x91, - 0xb3, 0x4e, 0xe8, 0xc1, 0xe3, 0x0a, 0xb2, 0x66, 0xd3, 0xe1, 0xb6, 0xe3, 0x75, 0xd2, 0xc6, 0xb3, - 0x59, 0x75, 0xee, 0x39, 0xc5, 0x4b, 0x43, 0x23, 0x3e, 0x07, 0x11, 0x8b, 0x79, 0x11, 0xb9, 0xe7, - 0xa8, 0x78, 0x33, 0xe9, 0x78, 0x6f, 0x78, 0x0e, 0x5d, 0xc2, 0xa5, 0xd3, 0xf6, 0x25, 0xb5, 0x84, - 0x49, 0xa0, 0x9f, 0x60, 0x2d, 0x4f, 0x08, 0xdd, 0x65, 0xb8, 0xa0, 0x1a, 0xd4, 0x01, 0x09, 0xf4, - 0x77, 0x29, 0xa7, 0xbf, 0x89, 0xb1, 0xb9, 0x0c, 0x30, 0x17, 0xd2, 0x1d, 0x4e, 0x1c, 0x50, 0x6b, - 0xda, 0x4e, 0x6b, 0xd3, 0x08, 0xaf, 0x48, 0x00, 0xaf, 0xbb, 0xb1, 0xcb, 0x66, 0x14, 0xfa, 0xc1, - 0x6b, 0xb6, 0xed, 0x47, 0x5e, 0x68, 0xb2, 0x36, 0xf3, 0x6c, 0x9e, 0xcc, 0xec, 0xed, 0xc1, 0xcd, - 0x37, 0x97, 0x4f, 0x0e, 0x2b, 0x25, 0x18, 0xdf, 0x33, 0x3a, 0x34, 0x67, 0x36, 0xe8, 0x6f, 0x08, - 0xaf, 0x0e, 0x8b, 0x0b, 0x45, 0xf8, 0x11, 0xe1, 0x25, 0xe7, 0x54, 0xab, 0xc1, 0x94, 0x5a, 0xa3, - 0xa9, 0xf4, 0x7a, 0x23, 0xaf, 0xa8, 0x45, 0x8f, 0xa9, 0x45, 0x07, 0x6a, 0xd1, 0x37, 0x7d, 0xd7, - 0x33, 0x77, 0xa0, 0x20, 0x54, 0x21, 0x7c, 0x82, 0x2f, 0xfa, 0xfd, 0xe3, 0x4a, 0xad, 0xe5, 0x86, - 0x1f, 0x46, 0x4d, 0xdd, 0xf6, 0x3b, 0x06, 0xb0, 0x95, 0xfa, 0x59, 0x17, 0xce, 0x47, 0x46, 0xb8, - 0xdf, 0xe5, 0x42, 0xba, 0x15, 0x56, 0xc9, 0x19, 0x84, 0x9d, 0xce, 0x63, 0x22, 0xb3, 0xbb, 0x23, - 0x79, 0x2a, 0x69, 0xf6, 0x16, 0x9e, 0xcb, 0xac, 0x42, 0x82, 0x75, 0x3c, 0xae, 0xf8, 0x4c, 0x56, - 0x73, 0xb2, 0x3e, 0x9f, 0xed, 0xae, 0xd2, 0x36, 0x2f, 0xc5, 0x59, 0x58, 0xa0, 0x49, 0xbf, 0x45, - 0x69, 0x76, 0xb1, 0xb8, 0xed, 0x07, 0xce, 0x7f, 0xd2, 0xa9, 0x34, 0x57, 0x8d, 0x5e, 0x90, 0xab, - 0x12, 0x58, 0xfd, 0x5c, 0x15, 0xc8, 0x75, 0xc8, 0x36, 0x8f, 0xab, 0x94, 0x61, 0x3e, 0x57, 0x29, - 0xe3, 0x84, 0xab, 0x94, 0x26, 0xfd, 0x1d, 0xe1, 0xf2, 0x69, 0x5c, 0xd6, 0x6c, 0xf3, 0x37, 0xe3, - 0x9e, 0xc4, 0x47, 0xcf, 0x53, 0x50, 0x15, 0xf2, 0x0a, 0x1e, 0x67, 0x12, 0x8c, 0xe4, 0xb5, 0x42, - 0x7f, 0x87, 0x15, 0x50, 0x73, 0xf6, 0xe4, 0xb0, 0x32, 0x0d, 0x2e, 0xe4, 0x0a, 0xb5, 0xc0, 0x8c, - 0x7e, 0x83, 0x70, 0x65, 0x60, 0x7e, 0x50, 0xde, 0x3d, 0x7c, 0x39, 0x3e, 0x49, 0xc5, 0xf0, 0x0d, - 0xf1, 0x2a, 0xd4, 0x75, 0x0a, 0xea, 0x1a, 0x5b, 0x5d, 0x6c, 0xf4, 0x55, 0x24, 0xfa, 0x13, 0x02, - 0xfa, 0xba, 0xeb, 0x87, 0xac, 0xdd, 0xc3, 0xf6, 0x34, 0x94, 0x7c, 0x0d, 0xcf, 0xb8, 0x9e, 0xdd, - 0x8e, 0x1c, 0xde, 0x48, 0xce, 0xe7, 0x31, 0x79, 0x3e, 0x17, 0x60, 0x79, 0x13, 0x8e, 0xe9, 0x03, - 0x84, 0x97, 0x72, 0x73, 0xf8, 0xff, 0xca, 0x7a, 0x0b, 0x36, 0xd1, 0x7b, 0x82, 0x07, 0x3b, 0xea, + 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0x64, + 0xe8, 0xb9, 0xdc, 0x72, 0xda, 0xcc, 0xeb, 0x58, 0xbb, 0x11, 0x0f, 0xf7, 0xcc, 0x6e, 0x18, 0xc8, + 0x80, 0x4c, 0x6a, 0x89, 0xa9, 0x24, 0xc6, 0xb5, 0x56, 0xd0, 0x0a, 0x94, 0xc0, 0x8a, 0xff, 0xd3, + 0x3a, 0xc6, 0x8d, 0x56, 0x10, 0xb4, 0xda, 0xdc, 0x62, 0x5d, 0xcf, 0x62, 0xbe, 0x1f, 0x48, 0x26, + 0xbd, 0xc0, 0x17, 0x20, 0x2d, 0x3b, 0x81, 0xe8, 0x04, 0xc2, 0x6a, 0x32, 0xc1, 0xad, 0x7b, 0xab, + 0x4d, 0x2e, 0xd9, 0xaa, 0xe5, 0x04, 0x9e, 0x0f, 0xf2, 0x6c, 0x6c, 0xf5, 0x17, 0x24, 0xa5, 0x8c, + 0xa4, 0xcb, 0x42, 0xd6, 0x49, 0x9c, 0xde, 0x00, 0xd1, 0x3d, 0x2e, 0xa4, 0xe7, 0xb7, 0x92, 0x5f, + 0x90, 0x56, 0x00, 0x90, 0xfa, 0x6a, 0x46, 0x3b, 0x96, 0xf4, 0x3a, 0x5c, 0x48, 0xd6, 0xe9, 0x6a, + 0x05, 0xba, 0x8d, 0x27, 0x36, 0x62, 0xa7, 0x5b, 0x92, 0xc9, 0x48, 0x90, 0x15, 0x4c, 0x98, 0x17, + 0xba, 0x61, 0xd0, 0x6d, 0x78, 0x2e, 0xf7, 0xa5, 0xb7, 0xe3, 0xf1, 0xb0, 0x88, 0xaa, 0xa8, 0x76, + 0xc5, 0x9e, 0x01, 0xc9, 0x66, 0x4f, 0x40, 0x8a, 0xf8, 0x92, 0x82, 0xc4, 0xdd, 0xe2, 0x68, 0x15, + 0xd5, 0x2e, 0xdb, 0xc9, 0x27, 0x7d, 0x0b, 0x5f, 0x7f, 0x37, 0x2e, 0x5e, 0xca, 0xb9, 0xcd, 0x77, + 0x23, 0x2e, 0x24, 0xb9, 0x89, 0x2f, 0x31, 0xd7, 0x0d, 0xb9, 0x10, 0xda, 0x71, 0x9d, 0x1c, 0x1f, + 0x54, 0x0a, 0x7b, 0xac, 0xd3, 0x7e, 0x99, 0x82, 0x80, 0xda, 0x89, 0x0a, 0x8d, 0x70, 0xf1, 0xb4, + 0x23, 0xd1, 0x0d, 0x7c, 0xc1, 0xc9, 0xfb, 0x78, 0x52, 0xc5, 0x6b, 0x08, 0xb5, 0x5e, 0x44, 0xd5, + 0xb1, 0xda, 0xc4, 0x5a, 0xc9, 0x4c, 0x77, 0xca, 0x4c, 0x19, 0xd6, 0xe7, 0x1f, 0x1e, 0x54, 0x46, + 0x8e, 0x0f, 0x2a, 0x57, 0x75, 0xb4, 0xb4, 0x31, 0xb5, 0x27, 0x9c, 0x13, 0x4d, 0xfa, 0xf3, 0x28, + 0x9e, 0x52, 0x96, 0xef, 0x70, 0xc9, 0x5c, 0x26, 0xd9, 0x79, 0x4b, 0xf3, 0x2c, 0x9e, 0x72, 0xa2, + 0x30, 0xe4, 0xbe, 0x6c, 0x84, 0x41, 0xe4, 0xeb, 0x02, 0x5d, 0xb1, 0x27, 0x61, 0xd1, 0x8e, 0xd7, + 0x48, 0x88, 0xaf, 0x66, 0x94, 0x62, 0x2c, 0xa1, 0x2c, 0x8e, 0x55, 0x51, 0x6d, 0x62, 0xcd, 0x30, + 0x75, 0xf3, 0xcc, 0xa4, 0x79, 0xe6, 0xdd, 0xa4, 0x79, 0xf5, 0x25, 0x48, 0xc4, 0x80, 0x44, 0x4e, + 0x3b, 0xa1, 0xfb, 0x8f, 0x2b, 0xc8, 0x9e, 0x49, 0x87, 0xdb, 0x8a, 0xd7, 0x49, 0x1b, 0xcf, 0x64, + 0xd5, 0xb9, 0xef, 0x16, 0x2f, 0x0c, 0x8d, 0xf8, 0x1c, 0x44, 0x2c, 0xe6, 0x45, 0xe4, 0xbe, 0xab, + 0xe3, 0x4d, 0xa7, 0xe3, 0xbd, 0xe1, 0xbb, 0x74, 0x1e, 0x97, 0x4e, 0xda, 0x97, 0xd4, 0x12, 0x26, + 0x81, 0x7e, 0x82, 0x8d, 0x3c, 0x21, 0x74, 0x97, 0xe1, 0x82, 0x6e, 0x50, 0x07, 0x24, 0xd0, 0xdf, + 0xf9, 0x9c, 0xfe, 0x26, 0xc6, 0xf5, 0x05, 0x80, 0x39, 0x9b, 0xee, 0x70, 0xe2, 0x80, 0xda, 0x53, + 0x4e, 0x5a, 0x9b, 0x46, 0x78, 0x51, 0x01, 0x78, 0xdd, 0x8b, 0x5d, 0x36, 0x23, 0x19, 0x84, 0xaf, + 0x39, 0x4e, 0x10, 0xf9, 0xb2, 0xce, 0xda, 0xcc, 0x77, 0x78, 0x32, 0xb3, 0xb7, 0x07, 0x37, 0xbf, + 0xbe, 0x70, 0x7c, 0x50, 0x29, 0xc1, 0xf8, 0x9e, 0xd2, 0xa1, 0x39, 0xb3, 0x41, 0x7f, 0x43, 0x78, + 0x69, 0x58, 0x5c, 0x28, 0xc2, 0x8f, 0x08, 0xcf, 0xbb, 0x27, 0x5a, 0x0d, 0xa6, 0xd5, 0x1a, 0x4d, + 0xad, 0xd7, 0x1b, 0x79, 0x4d, 0x2d, 0x66, 0x4c, 0x2d, 0x26, 0x50, 0x8b, 0xb9, 0x11, 0x78, 0x7e, + 0x7d, 0x1b, 0x0a, 0x42, 0x35, 0xc2, 0x27, 0xf8, 0xa2, 0xdf, 0x3f, 0xae, 0xd4, 0x5a, 0x9e, 0xfc, + 0x30, 0x6a, 0x9a, 0x4e, 0xd0, 0xb1, 0x80, 0xad, 0xf4, 0xcf, 0x8a, 0x70, 0x3f, 0xb2, 0xe4, 0x5e, + 0x97, 0x0b, 0xe5, 0x56, 0xd8, 0x25, 0x77, 0x10, 0x76, 0x7a, 0x0d, 0x13, 0x95, 0xdd, 0x1d, 0xc5, + 0x53, 0x49, 0xb3, 0x37, 0xf1, 0xd5, 0xcc, 0x2a, 0x24, 0xb8, 0x86, 0xc7, 0x35, 0x9f, 0xa9, 0x6a, + 0x4e, 0xac, 0x5d, 0xcb, 0x76, 0x57, 0x6b, 0xd7, 0x2f, 0xc4, 0x59, 0xd8, 0xa0, 0x49, 0xbf, 0x45, + 0x69, 0x76, 0xb1, 0xb9, 0x13, 0x84, 0xee, 0x7f, 0xd2, 0xa9, 0x34, 0x57, 0x8d, 0x9e, 0x93, 0xab, + 0x12, 0x58, 0xfd, 0x5c, 0x15, 0xaa, 0x75, 0xc8, 0x36, 0x8f, 0xab, 0xb4, 0x61, 0x3e, 0x57, 0x69, + 0xe3, 0x84, 0xab, 0xb4, 0x26, 0xfd, 0x1d, 0xe1, 0xf2, 0x49, 0x5c, 0xd6, 0x6c, 0xf3, 0x37, 0xe3, + 0x9e, 0xc4, 0x47, 0xcf, 0x53, 0x50, 0x15, 0xf2, 0x0a, 0x1e, 0x67, 0x0a, 0x8c, 0xe2, 0xb5, 0x42, + 0x7f, 0x87, 0x35, 0xd0, 0xfa, 0xcc, 0xf1, 0x41, 0x65, 0x0a, 0x5c, 0xa8, 0x15, 0x6a, 0x83, 0x19, + 0xfd, 0x06, 0xe1, 0xca, 0xc0, 0xfc, 0xa0, 0xbc, 0xbb, 0xf8, 0x62, 0x7c, 0x92, 0x8a, 0xe1, 0x1b, + 0xe2, 0x55, 0xa8, 0xeb, 0x24, 0xd4, 0x35, 0xb6, 0x3a, 0xdf, 0xe8, 0xeb, 0x48, 0xf4, 0x27, 0x04, + 0xf4, 0x75, 0x37, 0x90, 0xac, 0xdd, 0xc3, 0xf6, 0x34, 0x94, 0x7c, 0x19, 0x4f, 0x7b, 0xbe, 0xd3, + 0x8e, 0x5c, 0xde, 0x48, 0xce, 0xe7, 0x31, 0x75, 0x3e, 0x17, 0x60, 0x79, 0x03, 0x8e, 0xe9, 0x7d, + 0x84, 0xe7, 0x73, 0x73, 0xf8, 0xff, 0xca, 0x7a, 0x0b, 0x36, 0xd1, 0x7b, 0x82, 0x87, 0xdb, 0xfa, 0x32, 0xf3, 0x2f, 0xaf, 0x0e, 0x7f, 0x23, 0x38, 0x7c, 0xb2, 0xae, 0x20, 0xb5, 0x2f, 0x11, 0x9e, - 0x11, 0x5d, 0xee, 0x39, 0x71, 0xc2, 0x0d, 0x95, 0xe5, 0xd8, 0xb0, 0x2c, 0xdf, 0x86, 0x2c, 0x17, - 0x55, 0xcc, 0x3e, 0xfb, 0x8b, 0xe5, 0x5b, 0xe8, 0x59, 0xcb, 0x6f, 0x72, 0x0b, 0x4f, 0x74, 0x79, - 0xe0, 0xfa, 0x4e, 0x52, 0xed, 0xc5, 0x64, 0xa3, 0x24, 0x77, 0xba, 0x3b, 0x52, 0x6c, 0x2e, 0x02, - 0x08, 0x48, 0x1c, 0x8c, 0xa8, 0x95, 0x98, 0xd7, 0xff, 0xba, 0x82, 0x2f, 0xcb, 0xc4, 0xc9, 0x0f, - 0x08, 0x97, 0x06, 0x1e, 0x32, 0xe4, 0x66, 0x76, 0x27, 0x9e, 0xeb, 0x28, 0xd4, 0x5e, 0xbc, 0x98, - 0x91, 0xaa, 0x36, 0x5d, 0xf9, 0xec, 0x97, 0x3f, 0xbf, 0x1e, 0xad, 0x90, 0x65, 0xb8, 0xc3, 0x76, - 0x7c, 0x27, 0x6a, 0xf3, 0xfe, 0x23, 0x88, 0x38, 0x78, 0x5c, 0x31, 0x3e, 0xa9, 0xe6, 0x84, 0xc9, - 0x1c, 0x28, 0xda, 0x33, 0x4f, 0xd0, 0x80, 0xa8, 0x0b, 0x32, 0xea, 0x0c, 0x99, 0xce, 0xdc, 0x9c, - 0xc9, 0xe7, 0x08, 0x6e, 0xbd, 0x8a, 0x40, 0xc9, 0x4a, 0x8e, 0xa7, 0xb3, 0x47, 0x8b, 0xb6, 0x3a, - 0x4c, 0x6d, 0x40, 0xae, 0x69, 0xea, 0x36, 0xee, 0xc3, 0x74, 0x3e, 0x20, 0xdf, 0x21, 0x4c, 0xce, - 0x32, 0x1a, 0xb9, 0x31, 0x28, 0x4a, 0x1e, 0xb1, 0x6b, 0xeb, 0xe7, 0xd4, 0x06, 0x68, 0x2f, 0x49, - 0x68, 0x2f, 0x10, 0x3d, 0x0d, 0x4d, 0x0e, 0xf0, 0xae, 0xbc, 0x10, 0xc4, 0xca, 0xa7, 0x10, 0x8d, - 0xfb, 0x6a, 0xe5, 0x01, 0xf9, 0x0a, 0xe1, 0x42, 0x96, 0x22, 0x48, 0x2d, 0x27, 0x72, 0x2e, 0x13, - 0x6a, 0xcf, 0x9f, 0x43, 0x13, 0xf0, 0xd5, 0x24, 0x3e, 0x4a, 0xaa, 0x80, 0x2f, 0x8c, 0xd5, 0x1a, - 0x3d, 0x94, 0xa9, 0xea, 0x7d, 0x81, 0xf0, 0x54, 0x7a, 0x5f, 0x93, 0xbc, 0xee, 0xe4, 0x70, 0x88, - 0xb6, 0x36, 0x54, 0x0f, 0xb0, 0xac, 0x4a, 0x2c, 0x55, 0x52, 0x06, 0x2c, 0x91, 0xe0, 0x41, 0x03, - 0xb6, 0xa2, 0x48, 0x21, 0xe9, 0x4d, 0x13, 0xbc, 0xa1, 0x06, 0x4e, 0x53, 0xe6, 0x19, 0x34, 0x78, - 0x9a, 0xb2, 0x8f, 0x9c, 0x01, 0xd3, 0xa4, 0x1e, 0x2d, 0x29, 0x14, 0x9f, 0xa2, 0xfe, 0x07, 0xcb, - 0xda, 0xa0, 0x00, 0x7d, 0xd7, 0x70, 0xad, 0x36, 0x5c, 0x11, 0xb0, 0x2c, 0x4b, 0x2c, 0xd7, 0xc8, - 0x42, 0x06, 0x4b, 0x72, 0xbd, 0x36, 0xb7, 0x1e, 0x1e, 0x95, 0xd1, 0xa3, 0xa3, 0x32, 0xfa, 0xe3, - 0xa8, 0x8c, 0x0e, 0x8e, 0xcb, 0x23, 0x8f, 0x8e, 0xcb, 0x23, 0xbf, 0x1e, 0x97, 0x47, 0x3e, 0x30, - 0x52, 0xac, 0xb8, 0x2d, 0x83, 0xad, 0xdf, 0x66, 0x4d, 0x61, 0x24, 0x8f, 0xd7, 0x8d, 0xba, 0xf1, - 0x71, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xf2, 0x09, 0x72, 0xf3, 0x9f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x6c, 0x03, 0x4a, 0x6a, 0x90, 0x0f, 0x00, 0x00, + 0x16, 0x5d, 0xee, 0xbb, 0x71, 0xc2, 0x0d, 0x9d, 0xe5, 0xd8, 0xb0, 0x2c, 0xdf, 0x86, 0x2c, 0xe7, + 0x74, 0xcc, 0x3e, 0xfb, 0xf3, 0xe5, 0x5b, 0xe8, 0x59, 0xab, 0x6f, 0x72, 0x0b, 0x5f, 0xea, 0xf2, + 0xd0, 0x0b, 0xdc, 0xa4, 0xda, 0x73, 0xc9, 0x46, 0x49, 0xee, 0x74, 0x77, 0x94, 0xb8, 0x3e, 0x07, + 0x20, 0x20, 0x71, 0x30, 0xa2, 0x76, 0x62, 0xbe, 0xf6, 0xd7, 0x65, 0x7c, 0x51, 0x25, 0x4e, 0x7e, + 0x40, 0xb8, 0x34, 0xf0, 0x90, 0x21, 0xeb, 0xd9, 0x9d, 0x78, 0xa6, 0xa3, 0xd0, 0x78, 0xf1, 0x7c, + 0x46, 0xba, 0xda, 0x74, 0xf1, 0xb3, 0x5f, 0xfe, 0xfc, 0x7a, 0xb4, 0x42, 0x16, 0xe0, 0x0e, 0xdb, + 0x09, 0xdc, 0xa8, 0xcd, 0xfb, 0x8f, 0x20, 0xe2, 0xe2, 0x71, 0xcd, 0xf8, 0xa4, 0x9a, 0x13, 0x26, + 0x73, 0xa0, 0x18, 0xcf, 0x3c, 0x41, 0x03, 0xa2, 0xce, 0xaa, 0xa8, 0xd3, 0x64, 0x2a, 0x73, 0x73, + 0x26, 0x9f, 0x23, 0xb8, 0xf5, 0x6a, 0x02, 0x25, 0x8b, 0x39, 0x9e, 0x4e, 0x1f, 0x2d, 0xc6, 0xd2, + 0x30, 0xb5, 0x01, 0xb9, 0xa6, 0xa9, 0xdb, 0xba, 0x0f, 0xd3, 0xf9, 0x80, 0x7c, 0x87, 0x30, 0x39, + 0xcd, 0x68, 0xe4, 0xe6, 0xa0, 0x28, 0x79, 0xc4, 0x6e, 0xac, 0x9c, 0x51, 0x1b, 0xa0, 0xbd, 0xa4, + 0xa0, 0xbd, 0x40, 0xcc, 0x34, 0x34, 0x35, 0xc0, 0x3b, 0xea, 0x42, 0x10, 0x2b, 0x9f, 0x40, 0xb4, + 0xee, 0xeb, 0x95, 0x07, 0xe4, 0x2b, 0x84, 0x0b, 0x59, 0x8a, 0x20, 0xb5, 0x9c, 0xc8, 0xb9, 0x4c, + 0x68, 0x3c, 0x7f, 0x06, 0x4d, 0xc0, 0x57, 0x53, 0xf8, 0x28, 0xa9, 0x02, 0x3e, 0x19, 0xab, 0x35, + 0x7a, 0x28, 0x53, 0xd5, 0xfb, 0x02, 0xe1, 0xc9, 0xf4, 0xbe, 0x26, 0x79, 0xdd, 0xc9, 0xe1, 0x10, + 0x63, 0x79, 0xa8, 0x1e, 0x60, 0x59, 0x52, 0x58, 0xaa, 0xa4, 0x0c, 0x58, 0x22, 0xc1, 0xc3, 0x06, + 0x6c, 0x45, 0x91, 0x42, 0xd2, 0x9b, 0x26, 0x78, 0x43, 0x0d, 0x9c, 0xa6, 0xcc, 0x33, 0x68, 0xf0, + 0x34, 0x65, 0x1f, 0x39, 0x03, 0xa6, 0x49, 0x3f, 0x5a, 0x52, 0x28, 0x3e, 0x45, 0xfd, 0x0f, 0x96, + 0xe5, 0x41, 0x01, 0xfa, 0xae, 0xe1, 0x46, 0x6d, 0xb8, 0x22, 0x60, 0x59, 0x50, 0x58, 0xae, 0x93, + 0xd9, 0x0c, 0x96, 0xe4, 0x7a, 0x5d, 0xdf, 0x7c, 0x78, 0x58, 0x46, 0x8f, 0x0e, 0xcb, 0xe8, 0x8f, + 0xc3, 0x32, 0xda, 0x3f, 0x2a, 0x8f, 0x3c, 0x3a, 0x2a, 0x8f, 0xfc, 0x7a, 0x54, 0x1e, 0xf9, 0xc0, + 0x4a, 0xb1, 0xe2, 0x96, 0x0a, 0xb6, 0x72, 0x9b, 0x35, 0x85, 0x95, 0x3c, 0x5e, 0x57, 0xd7, 0xad, + 0x8f, 0x93, 0x96, 0xc7, 0x14, 0xd9, 0x1c, 0x57, 0x4f, 0x90, 0xf5, 0x7f, 0x02, 0x00, 0x00, 0xff, + 0xff, 0xb8, 0xe9, 0x39, 0xf1, 0x90, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/tx.pb.go b/x/claim/types/tx.pb.go index 3a0972b54c..e97d41328f 100644 --- a/x/claim/types/tx.pb.go +++ b/x/claim/types/tx.pb.go @@ -445,48 +445,48 @@ func init() { func init() { proto.RegisterFile("stride/claim/tx.proto", fileDescriptor_9d435242bf328977) } var fileDescriptor_9d435242bf328977 = []byte{ - // 643 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xbf, 0x4f, 0xdb, 0x40, - 0x14, 0x8e, 0x9b, 0xf0, 0x23, 0x47, 0xa1, 0x70, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x3c, 0x20, 0x4b, - 0x15, 0x76, 0xa1, 0x5b, 0xa7, 0x12, 0x68, 0x25, 0x24, 0x58, 0x0c, 0x52, 0x25, 0xa4, 0x2a, 0x3a, - 0xdb, 0xaf, 0xe6, 0x54, 0xdb, 0x17, 0xf9, 0x2e, 0x14, 0xfe, 0x82, 0xae, 0xfc, 0x1d, 0xfd, 0x4b, - 0x18, 0x19, 0xab, 0x0e, 0x69, 0x05, 0x73, 0x17, 0xa6, 0x8e, 0x95, 0xef, 0x9c, 0xe0, 0x90, 0xd0, - 0x32, 0x74, 0xb2, 0xdf, 0xf7, 0xbd, 0xfb, 0xee, 0xde, 0xfb, 0xde, 0x1d, 0x5a, 0xe1, 0x22, 0xa7, - 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x33, 0xb7, 0x9b, 0x33, 0xc1, 0xf0, 0x53, 0x05, 0xbb, - 0x12, 0x36, 0x96, 0x63, 0x16, 0x33, 0x49, 0x78, 0xc5, 0x9f, 0xca, 0x31, 0xcc, 0x90, 0xf1, 0x94, - 0x71, 0x2f, 0x20, 0x1c, 0xbc, 0xd3, 0xcd, 0x00, 0x04, 0xd9, 0xf4, 0x42, 0x46, 0x33, 0xc5, 0xdb, - 0xbf, 0x35, 0xa4, 0x1f, 0xf0, 0xf8, 0x10, 0xc4, 0x36, 0xcd, 0xa3, 0x9c, 0x75, 0xb7, 0x93, 0x84, - 0x85, 0x44, 0x50, 0x96, 0x71, 0xfc, 0x1c, 0x35, 0x89, 0x0a, 0x59, 0xae, 0x6b, 0x96, 0xe6, 0x34, - 0xfd, 0x3b, 0x00, 0xef, 0x23, 0x4c, 0xd4, 0x9a, 0x0e, 0x8d, 0x20, 0x13, 0xf4, 0x23, 0x85, 0x5c, - 0x7f, 0x52, 0xa4, 0xb5, 0xd7, 0x6e, 0xfb, 0xad, 0xd5, 0x73, 0x92, 0x26, 0xaf, 0xed, 0xf1, 0x1c, - 0xdb, 0x5f, 0x2a, 0xc1, 0xbd, 0x21, 0x86, 0x97, 0xd1, 0x54, 0x8f, 0x43, 0xce, 0xf5, 0xba, 0x55, - 0x77, 0x9a, 0xbe, 0x0a, 0xf0, 0x31, 0x9a, 0xf9, 0x0c, 0x34, 0x3e, 0x11, 0x5c, 0x6f, 0x14, 0x78, - 0xfb, 0xcd, 0x65, 0xbf, 0x55, 0xfb, 0xde, 0x6f, 0xad, 0xc7, 0x54, 0x9c, 0xf4, 0x02, 0x37, 0x64, - 0xa9, 0x57, 0x96, 0xa8, 0x3e, 0x1b, 0x3c, 0xfa, 0xe4, 0x89, 0xf3, 0x2e, 0x70, 0x77, 0x17, 0xc2, - 0xdb, 0x7e, 0x6b, 0x41, 0x1d, 0xa3, 0x94, 0xb1, 0xfd, 0x81, 0xa0, 0x6d, 0x23, 0xeb, 0xa1, 0xca, - 0x7d, 0xe0, 0x5d, 0x96, 0x71, 0xb0, 0x1d, 0x84, 0x0f, 0x78, 0xbc, 0x53, 0x34, 0xf8, 0x5d, 0x0e, - 0xb0, 0x9d, 0xb2, 0x5e, 0x26, 0x30, 0x46, 0x8d, 0xe2, 0x78, 0x65, 0x4b, 0xe4, 0xbf, 0x7d, 0xa1, - 0x21, 0x63, 0x3c, 0x75, 0x20, 0x84, 0x73, 0xb4, 0x20, 0x6d, 0x82, 0xa8, 0x43, 0x24, 0x23, 0xeb, - 0x9c, 0xdb, 0x5a, 0x75, 0xd5, 0xb1, 0xdd, 0xc2, 0x20, 0xb7, 0x34, 0xc8, 0xdd, 0x61, 0x34, 0x6b, - 0xbf, 0x2c, 0x4a, 0xfd, 0xfa, 0xa3, 0xe5, 0x3c, 0xa2, 0xd4, 0x62, 0x01, 0xf7, 0xe7, 0xcb, 0x2d, - 0xd4, 0xde, 0xf6, 0x2f, 0x0d, 0x2d, 0x16, 0x47, 0xca, 0x81, 0x08, 0x28, 0x8b, 0xc4, 0x16, 0x9a, - 0x8b, 0x68, 0x31, 0x38, 0x41, 0xef, 0xce, 0xd5, 0x2a, 0x84, 0x4d, 0x84, 0xee, 0xfb, 0xe9, 0x57, - 0x10, 0xbc, 0x8a, 0x66, 0xc3, 0x13, 0x42, 0xb3, 0x0e, 0x8d, 0xf4, 0x69, 0xc9, 0xce, 0xc8, 0x78, - 0x2f, 0x2a, 0x4c, 0x8c, 0x20, 0x63, 0xa9, 0x3e, 0x25, 0x71, 0x15, 0xe0, 0x35, 0x84, 0xb8, 0x20, - 0xb9, 0xe8, 0x08, 0x9a, 0x82, 0x5e, 0xb7, 0x34, 0xa7, 0xe1, 0x37, 0x25, 0x72, 0x44, 0x53, 0xc0, - 0x06, 0x9a, 0x8d, 0x7a, 0xb9, 0x6c, 0xbc, 0xde, 0x90, 0xe4, 0x30, 0xc6, 0x2f, 0xd0, 0x12, 0xe9, - 0x09, 0xd6, 0xa5, 0x09, 0x13, 0x1d, 0xc8, 0x48, 0x90, 0x40, 0xa4, 0xcf, 0x58, 0x9a, 0x33, 0xeb, - 0x2f, 0x0e, 0x89, 0xb7, 0x0a, 0xb7, 0x0d, 0x39, 0xca, 0x23, 0xe5, 0x0e, 0x8d, 0x3c, 0x92, 0xad, - 0xd8, 0x85, 0x04, 0xfe, 0x63, 0x2b, 0xca, 0x1d, 0x47, 0x54, 0x07, 0x3b, 0x6e, 0x7d, 0xa9, 0xa3, - 0xfa, 0x01, 0x8f, 0x31, 0x43, 0x2b, 0x93, 0x6f, 0xd7, 0xba, 0x5b, 0xbd, 0xbf, 0xee, 0x43, 0xb3, - 0x68, 0xb8, 0x8f, 0xcb, 0x1b, 0x8e, 0xda, 0x07, 0xf4, 0xec, 0xfe, 0xc0, 0x5a, 0x63, 0x12, 0xf7, - 0x32, 0x0c, 0xe7, 0x5f, 0x19, 0x43, 0xf9, 0xf7, 0x68, 0x7e, 0x74, 0xa2, 0xcc, 0xf1, 0xa5, 0x55, - 0xde, 0x58, 0xff, 0x3b, 0x5f, 0x15, 0x1e, 0xf5, 0x67, 0x5c, 0x78, 0x84, 0x9f, 0x20, 0x3c, 0xd1, - 0x89, 0xf6, 0xde, 0xe5, 0xb5, 0xa9, 0x5d, 0x5d, 0x9b, 0xda, 0xcf, 0x6b, 0x53, 0xbb, 0xb8, 0x31, - 0x6b, 0x57, 0x37, 0x66, 0xed, 0xdb, 0x8d, 0x59, 0x3b, 0xf6, 0x2a, 0x57, 0xeb, 0x50, 0x6a, 0x6d, - 0xec, 0x93, 0x80, 0x7b, 0xe5, 0x7b, 0x7b, 0xba, 0xb9, 0xe5, 0x9d, 0x0d, 0x5e, 0xdd, 0xe2, 0x9e, - 0x05, 0xd3, 0xf2, 0xd5, 0x7c, 0xf5, 0x27, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xf5, 0x14, 0xc6, 0x92, - 0x05, 0x00, 0x00, + // 645 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x4e, + 0x10, 0x8d, 0x7f, 0x09, 0x7f, 0xb2, 0xfc, 0xa0, 0xb0, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x7c, 0x40, + 0x96, 0x2a, 0xec, 0x02, 0xb7, 0x9e, 0x4a, 0xa0, 0x95, 0x90, 0xe0, 0x62, 0x90, 0x2a, 0x21, 0x55, + 0xd1, 0xda, 0x9e, 0x9a, 0x55, 0x6d, 0x6f, 0xe4, 0xdd, 0x50, 0xf8, 0x04, 0xbd, 0xf2, 0x39, 0xfa, + 0x49, 0x38, 0x72, 0xac, 0x7a, 0x48, 0x2b, 0x38, 0xf7, 0xc2, 0xa9, 0xc7, 0xca, 0xbb, 0x4e, 0x70, + 0x48, 0x68, 0x39, 0xf4, 0x64, 0xcf, 0x7b, 0xb3, 0x6f, 0x77, 0xe6, 0xcd, 0x2e, 0x5a, 0xe1, 0x22, + 0xa7, 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x73, 0xb7, 0x9b, 0x33, 0xc1, 0xf0, 0xff, 0x0a, + 0x76, 0x25, 0x6c, 0x2c, 0xc7, 0x2c, 0x66, 0x92, 0xf0, 0x8a, 0x3f, 0x95, 0x63, 0x98, 0x21, 0xe3, + 0x29, 0xe3, 0x5e, 0x40, 0x38, 0x78, 0x67, 0x9b, 0x01, 0x08, 0xb2, 0xe9, 0x85, 0x8c, 0x66, 0x8a, + 0xb7, 0x7f, 0x69, 0x48, 0x3f, 0xe4, 0xf1, 0x11, 0x88, 0x1d, 0x9a, 0x47, 0x39, 0xeb, 0xee, 0x24, + 0x09, 0x0b, 0x89, 0xa0, 0x2c, 0xe3, 0xf8, 0x39, 0x6a, 0x12, 0x15, 0xb2, 0x5c, 0xd7, 0x2c, 0xcd, + 0x69, 0xfa, 0xf7, 0x00, 0x3e, 0x40, 0x98, 0xa8, 0x35, 0x1d, 0x1a, 0x41, 0x26, 0xe8, 0x07, 0x0a, + 0xb9, 0xfe, 0x5f, 0x91, 0xd6, 0x5e, 0xbb, 0xeb, 0xb7, 0x56, 0x2f, 0x48, 0x9a, 0xbc, 0xb2, 0xc7, + 0x73, 0x6c, 0x7f, 0xa9, 0x04, 0xf7, 0x87, 0x18, 0x5e, 0x46, 0x53, 0x3d, 0x0e, 0x39, 0xd7, 0xeb, + 0x56, 0xdd, 0x69, 0xfa, 0x2a, 0xc0, 0x27, 0x68, 0xe6, 0x13, 0xd0, 0xf8, 0x54, 0x70, 0xbd, 0x51, + 0xe0, 0xed, 0xd7, 0x57, 0xfd, 0x56, 0xed, 0x5b, 0xbf, 0xb5, 0x1e, 0x53, 0x71, 0xda, 0x0b, 0xdc, + 0x90, 0xa5, 0x5e, 0x59, 0xa2, 0xfa, 0x6c, 0xf0, 0xe8, 0xa3, 0x27, 0x2e, 0xba, 0xc0, 0xdd, 0x3d, + 0x08, 0xef, 0xfa, 0xad, 0x05, 0x75, 0x8c, 0x52, 0xc6, 0xf6, 0x07, 0x82, 0xb6, 0x8d, 0xac, 0xc7, + 0x2a, 0xf7, 0x81, 0x77, 0x59, 0xc6, 0xc1, 0x76, 0x10, 0x3e, 0xe4, 0xf1, 0x6e, 0xd1, 0xe0, 0xb7, + 0x39, 0xc0, 0x4e, 0xca, 0x7a, 0x99, 0xc0, 0x18, 0x35, 0x8a, 0xe3, 0x95, 0x2d, 0x91, 0xff, 0xf6, + 0xa5, 0x86, 0x8c, 0xf1, 0xd4, 0x81, 0x10, 0xce, 0xd1, 0x82, 0xb4, 0x09, 0xa2, 0x0e, 0x91, 0x8c, + 0xac, 0x73, 0x6e, 0x6b, 0xd5, 0x55, 0xc7, 0x76, 0x0b, 0x83, 0xdc, 0xd2, 0x20, 0x77, 0x97, 0xd1, + 0xac, 0xfd, 0xb2, 0x28, 0xf5, 0xcb, 0xf7, 0x96, 0xf3, 0x84, 0x52, 0x8b, 0x05, 0xdc, 0x9f, 0x2f, + 0xb7, 0x50, 0x7b, 0xdb, 0x3f, 0x35, 0xb4, 0x58, 0x1c, 0x29, 0x07, 0x22, 0xa0, 0x2c, 0x12, 0x5b, + 0x68, 0x2e, 0xa2, 0xc5, 0xe0, 0x04, 0xbd, 0x7b, 0x57, 0xab, 0x10, 0x36, 0x11, 0x7a, 0xe8, 0xa7, + 0x5f, 0x41, 0xf0, 0x2a, 0x9a, 0x0d, 0x4f, 0x09, 0xcd, 0x3a, 0x34, 0xd2, 0xa7, 0x25, 0x3b, 0x23, + 0xe3, 0xfd, 0xa8, 0x30, 0x31, 0x82, 0x8c, 0xa5, 0xfa, 0x94, 0xc4, 0x55, 0x80, 0xd7, 0x10, 0xe2, + 0x82, 0xe4, 0xa2, 0x23, 0x68, 0x0a, 0x7a, 0xdd, 0xd2, 0x9c, 0x86, 0xdf, 0x94, 0xc8, 0x31, 0x4d, + 0x01, 0x1b, 0x68, 0x36, 0xea, 0xe5, 0xb2, 0xf1, 0x7a, 0x43, 0x92, 0xc3, 0x18, 0xbf, 0x40, 0x4b, + 0xa4, 0x27, 0x58, 0x97, 0x26, 0x4c, 0x74, 0x20, 0x23, 0x41, 0x02, 0x91, 0x3e, 0x63, 0x69, 0xce, + 0xac, 0xbf, 0x38, 0x24, 0xde, 0x28, 0xdc, 0x36, 0xe4, 0x28, 0x8f, 0x94, 0x3b, 0x34, 0xf2, 0x58, + 0xb6, 0x62, 0x0f, 0x12, 0xf8, 0x87, 0xad, 0x28, 0x77, 0x1c, 0x51, 0x1d, 0xec, 0xb8, 0xf5, 0xb9, + 0x8e, 0xea, 0x87, 0x3c, 0xc6, 0x0c, 0xad, 0x4c, 0xbe, 0x5d, 0xeb, 0x6e, 0xf5, 0xfe, 0xba, 0x8f, + 0xcd, 0xa2, 0xe1, 0x3e, 0x2d, 0x6f, 0x38, 0x6a, 0xef, 0xd1, 0xb3, 0x87, 0x03, 0x6b, 0x8d, 0x49, + 0x3c, 0xc8, 0x30, 0x9c, 0xbf, 0x65, 0x0c, 0xe5, 0xdf, 0xa1, 0xf9, 0xd1, 0x89, 0x32, 0xc7, 0x97, + 0x56, 0x79, 0x63, 0xfd, 0xcf, 0x7c, 0x55, 0x78, 0xd4, 0x9f, 0x71, 0xe1, 0x11, 0x7e, 0x82, 0xf0, + 0x44, 0x27, 0xda, 0xfb, 0x57, 0x37, 0xa6, 0x76, 0x7d, 0x63, 0x6a, 0x3f, 0x6e, 0x4c, 0xed, 0xf2, + 0xd6, 0xac, 0x5d, 0xdf, 0x9a, 0xb5, 0xaf, 0xb7, 0x66, 0xed, 0xc4, 0xab, 0x5c, 0xad, 0x23, 0xa9, + 0xb5, 0x71, 0x40, 0x02, 0xee, 0x95, 0xef, 0xed, 0xd9, 0xe6, 0xb6, 0x77, 0x3e, 0x78, 0x75, 0x8b, + 0x7b, 0x16, 0x4c, 0xcb, 0x57, 0x73, 0xfb, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x1f, 0x67, + 0x5d, 0x92, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/client/cli/tx.go b/x/claim/vesting/client/cli/tx.go index a3603c81a9..f4c86be871 100644 --- a/x/claim/vesting/client/cli/tx.go +++ b/x/claim/vesting/client/cli/tx.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" ) // GetTxCmd returns stride vesting module's transaction commands. diff --git a/x/claim/vesting/client/testutil/suite.go b/x/claim/vesting/client/testutil/suite.go index 91674ba571..3b41a4e3d4 100644 --- a/x/claim/vesting/client/testutil/suite.go +++ b/x/claim/vesting/client/testutil/suite.go @@ -3,7 +3,7 @@ package testutil import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/testutil/network" + "github.com/Stride-Labs/stride/v13/testutil/network" ) type IntegrationTestSuite struct { diff --git a/x/claim/vesting/handler.go b/x/claim/vesting/handler.go index e611fe3ee2..c6b31ab87d 100644 --- a/x/claim/vesting/handler.go +++ b/x/claim/vesting/handler.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" ) // NewHandler returns a handler for x/auth message types. diff --git a/x/claim/vesting/module.go b/x/claim/vesting/module.go index 6d7f373449..a27bfd47c3 100644 --- a/x/claim/vesting/module.go +++ b/x/claim/vesting/module.go @@ -15,8 +15,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/client/cli" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/client/cli" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" ) var ( diff --git a/x/claim/vesting/msg_server.go b/x/claim/vesting/msg_server.go index 1785f1ee2b..b514adb742 100644 --- a/x/claim/vesting/msg_server.go +++ b/x/claim/vesting/msg_server.go @@ -3,7 +3,7 @@ package vesting import ( "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" ) type msgServer struct { diff --git a/x/claim/vesting/types/codec.go b/x/claim/vesting/types/codec.go index 1e9e9beddd..975988cb06 100644 --- a/x/claim/vesting/types/codec.go +++ b/x/claim/vesting/types/codec.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/msgservice" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/exported" ) // RegisterLegacyAminoCodec registers the vesting interfaces and concrete types on the diff --git a/x/claim/vesting/types/common_test.go b/x/claim/vesting/types/common_test.go index 6a6d07512b..d2160dc68a 100644 --- a/x/claim/vesting/types/common_test.go +++ b/x/claim/vesting/types/common_test.go @@ -1,7 +1,7 @@ package types_test import ( - strideApp "github.com/Stride-Labs/stride/v12/app" + strideApp "github.com/Stride-Labs/stride/v13/app" ) var ( diff --git a/x/claim/vesting/types/tx.pb.go b/x/claim/vesting/types/tx.pb.go index cf5a732fa5..fa56ef6100 100644 --- a/x/claim/vesting/types/tx.pb.go +++ b/x/claim/vesting/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_5ebed07aad5e90bd = []byte{ 0xd3, 0x9d, 0x02, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x3c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xac, 0x57, 0xd7, 0x27, 0x31, - 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0x91, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, + 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0xb1, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, 0xb2, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x85, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xf8, 0x1f, 0x51, 0x96, 0x8b, 0x00, 0x00, 0x00, + 0x29, 0xf7, 0xb6, 0x98, 0x8b, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/vesting.pb.go b/x/claim/vesting/types/vesting.pb.go index f0d0d175ba..b61e82d72d 100644 --- a/x/claim/vesting/types/vesting.pb.go +++ b/x/claim/vesting/types/vesting.pb.go @@ -184,44 +184,44 @@ func init() { func init() { proto.RegisterFile("stride/vesting/vesting.proto", fileDescriptor_41f0278a453c26b3) } var fileDescriptor_41f0278a453c26b3 = []byte{ - // 588 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x30, - 0x18, 0x8d, 0xd7, 0xae, 0x0c, 0x17, 0xb6, 0x11, 0xc6, 0x08, 0xd3, 0x48, 0xaa, 0x9c, 0x7a, 0x59, - 0x42, 0xcb, 0x01, 0xa9, 0x37, 0x82, 0x84, 0x34, 0xb1, 0x03, 0x84, 0x89, 0xc3, 0x2e, 0x91, 0x93, - 0x98, 0xd4, 0xa2, 0x89, 0xab, 0xd8, 0x9d, 0xe8, 0x3f, 0x40, 0xe2, 0x02, 0x12, 0x07, 0x8e, 0x3b, - 0xf3, 0x4b, 0x26, 0x71, 0xa9, 0x38, 0x71, 0x2a, 0xa8, 0x15, 0x7f, 0x60, 0xbf, 0x00, 0xc5, 0x76, - 0x5a, 0x96, 0x1d, 0xaa, 0x71, 0x4a, 0xec, 0xcf, 0xef, 0xf9, 0x7d, 0xcf, 0x7e, 0x86, 0xfb, 0x8c, - 0xe7, 0x24, 0xc6, 0xee, 0x29, 0x66, 0x9c, 0x64, 0x49, 0xf9, 0x75, 0x86, 0x39, 0xe5, 0x54, 0xdf, - 0x94, 0x55, 0x47, 0xcd, 0xee, 0xed, 0x24, 0x34, 0xa1, 0xa2, 0xe4, 0x16, 0x7f, 0x72, 0xd5, 0x9e, - 0x19, 0x51, 0x96, 0x52, 0xe6, 0x86, 0x88, 0x61, 0xf7, 0xb4, 0x13, 0x62, 0x8e, 0x3a, 0x6e, 0x44, - 0x49, 0x56, 0xa9, 0xa3, 0x11, 0xef, 0x2f, 0xea, 0xc5, 0x40, 0xd6, 0xed, 0x1f, 0x75, 0xa8, 0x7b, - 0x88, 0xe1, 0x37, 0x72, 0x97, 0xa7, 0x51, 0x44, 0x47, 0x19, 0xd7, 0x0f, 0xe1, 0xad, 0x82, 0x31, - 0x40, 0x72, 0x6c, 0x80, 0x16, 0x68, 0x37, 0xbb, 0x2d, 0x47, 0xb2, 0x39, 0x82, 0x40, 0xb1, 0x39, - 0x05, 0x5c, 0xe1, 0xbc, 0xfa, 0x64, 0x6a, 0x01, 0xbf, 0x19, 0x2e, 0xa7, 0xf4, 0xcf, 0x00, 0x6e, - 0xd3, 0x9c, 0x24, 0x24, 0x43, 0x83, 0x40, 0x35, 0x63, 0xac, 0xb5, 0x6a, 0xed, 0x66, 0xf7, 0x41, - 0xc9, 0x57, 0xac, 0x5f, 0xf0, 0x3d, 0xa3, 0x24, 0xf3, 0x5e, 0x9c, 0x4f, 0x2d, 0xed, 0x62, 0x6a, - 0xdd, 0x1f, 0xa3, 0x74, 0xd0, 0xb3, 0xab, 0x04, 0xf6, 0xb7, 0x5f, 0x56, 0x3b, 0x21, 0xbc, 0x3f, - 0x0a, 0x9d, 0x88, 0xa6, 0xae, 0xea, 0x52, 0x7e, 0x0e, 0x58, 0xfc, 0xce, 0xe5, 0xe3, 0x21, 0x66, - 0x82, 0x8b, 0xf9, 0x5b, 0x25, 0x5c, 0x75, 0xa9, 0x7f, 0x04, 0x70, 0x33, 0xc6, 0x03, 0x9c, 0x20, - 0x8e, 0xe3, 0xe0, 0x6d, 0x8e, 0xb1, 0x51, 0x5b, 0xa5, 0xe8, 0x50, 0x29, 0xba, 0x27, 0x15, 0x5d, - 0x86, 0x5f, 0x4f, 0xcf, 0xed, 0x05, 0xf8, 0x79, 0x8e, 0xb1, 0xfe, 0x05, 0xc0, 0x3b, 0x4b, 0xba, - 0xd2, 0xa2, 0xfa, 0x2a, 0x41, 0x47, 0x4a, 0x90, 0x51, 0x15, 0xf4, 0x5f, 0x1e, 0x6d, 0x2f, 0xf0, - 0xa5, 0x49, 0x0e, 0xdc, 0xc0, 0x59, 0x1c, 0x70, 0x92, 0x62, 0x63, 0xbd, 0x05, 0xda, 0x35, 0xef, - 0xee, 0xc5, 0xd4, 0xda, 0x92, 0xbb, 0x95, 0x15, 0xdb, 0xbf, 0x81, 0xb3, 0xf8, 0x98, 0xa4, 0xb8, - 0xb7, 0xf1, 0xe1, 0xcc, 0xd2, 0xbe, 0x9e, 0x59, 0x9a, 0xfd, 0x1d, 0xc0, 0xc6, 0x4b, 0x9c, 0x13, - 0x1a, 0xeb, 0x0f, 0x21, 0x64, 0x1c, 0xe5, 0x5c, 0xd2, 0x14, 0xd7, 0xa8, 0xe6, 0xdf, 0x14, 0x33, - 0x05, 0x46, 0xdf, 0x85, 0x8d, 0x01, 0xce, 0x12, 0xde, 0x37, 0xd6, 0x44, 0x49, 0x8d, 0xf4, 0x08, - 0x36, 0x50, 0x2a, 0x6e, 0xde, 0xca, 0x73, 0x79, 0x54, 0xd8, 0x70, 0xad, 0x56, 0x15, 0xb5, 0x6e, - 0xc1, 0x26, 0x8a, 0x38, 0xa1, 0x59, 0x50, 0x54, 0x8d, 0x7a, 0x0b, 0xb4, 0xd7, 0x7d, 0x28, 0xa7, - 0x8e, 0xc7, 0x43, 0xdc, 0xab, 0x8b, 0x6e, 0xfe, 0x00, 0xb8, 0xff, 0x5a, 0x64, 0x51, 0xf6, 0x44, - 0xa2, 0x4a, 0x58, 0x4e, 0xe0, 0x8e, 0x08, 0x8b, 0xf2, 0xbd, 0x12, 0x1a, 0xdb, 0xb9, 0x1c, 0x64, - 0xe7, 0x6a, 0xdc, 0x54, 0x6c, 0xf4, 0xf0, 0x6a, 0x10, 0x03, 0xb8, 0x55, 0xd2, 0x0e, 0xc5, 0xee, - 0x4c, 0x39, 0xb2, 0x5b, 0xa5, 0x95, 0xe2, 0x3c, 0x53, 0xdd, 0x8a, 0x5d, 0x79, 0x4e, 0x15, 0xb0, - 0xed, 0x6f, 0xaa, 0x19, 0xb9, 0x9c, 0x2d, 0x4f, 0xcd, 0x7b, 0x75, 0x3e, 0x33, 0xc1, 0x64, 0x66, - 0x82, 0xdf, 0x33, 0x13, 0x7c, 0x9a, 0x9b, 0xda, 0x64, 0x6e, 0x6a, 0x3f, 0xe7, 0xa6, 0x76, 0xf2, - 0xe4, 0x1f, 0x6b, 0xa5, 0x13, 0x07, 0x47, 0x28, 0x64, 0x6e, 0xf9, 0x7e, 0x75, 0xba, 0xee, 0x7b, - 0x37, 0x1a, 0x20, 0x92, 0x2e, 0xde, 0x32, 0xe1, 0x77, 0xd8, 0x10, 0x8f, 0xcc, 0xe3, 0xbf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0xcb, 0x9f, 0xa1, 0xea, 0x04, 0x00, 0x00, + // 590 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x3e, + 0x1c, 0x8d, 0xd7, 0xae, 0xff, 0xfd, 0x5d, 0xd8, 0x46, 0x18, 0x25, 0x4c, 0x23, 0xa9, 0x72, 0xea, + 0x65, 0x09, 0xdd, 0x0e, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, + 0x9c, 0xc4, 0xa4, 0x16, 0x4d, 0x5c, 0xc5, 0xee, 0x44, 0xbf, 0x01, 0x12, 0x17, 0x90, 0x38, 0x70, + 0xdc, 0x99, 0x4f, 0x32, 0x89, 0x4b, 0xc5, 0x89, 0x53, 0x41, 0xad, 0xf8, 0x02, 0xfb, 0x04, 0x28, + 0xb6, 0xd3, 0xb2, 0xec, 0x50, 0x8d, 0x53, 0x62, 0xff, 0xfc, 0x9e, 0xdf, 0xef, 0xd9, 0xcf, 0x70, + 0x8f, 0xf1, 0x9c, 0xc4, 0xd8, 0x3d, 0xc3, 0x8c, 0x93, 0x2c, 0x29, 0xbf, 0xce, 0x30, 0xa7, 0x9c, + 0xea, 0x9b, 0xb2, 0xea, 0xa8, 0xd9, 0xdd, 0x9d, 0x84, 0x26, 0x54, 0x94, 0xdc, 0xe2, 0x4f, 0xae, + 0xda, 0x35, 0x23, 0xca, 0x52, 0xca, 0xdc, 0x10, 0x31, 0xec, 0x9e, 0x75, 0x43, 0xcc, 0x51, 0xd7, + 0x8d, 0x28, 0xc9, 0x2a, 0x75, 0x34, 0xe2, 0xfd, 0x45, 0xbd, 0x18, 0xc8, 0xba, 0xfd, 0xbd, 0x0e, + 0x75, 0x0f, 0x31, 0xfc, 0x5a, 0xee, 0xf2, 0x24, 0x8a, 0xe8, 0x28, 0xe3, 0xfa, 0x11, 0xbc, 0x55, + 0x30, 0x06, 0x48, 0x8e, 0x0d, 0xd0, 0x06, 0x9d, 0xe6, 0x41, 0xdb, 0x91, 0x6c, 0x8e, 0x20, 0x50, + 0x6c, 0x4e, 0x01, 0x57, 0x38, 0xaf, 0x3e, 0x99, 0x5a, 0xc0, 0x6f, 0x86, 0xcb, 0x29, 0xfd, 0x13, + 0x80, 0xdb, 0x34, 0x27, 0x09, 0xc9, 0xd0, 0x20, 0x50, 0xcd, 0x18, 0x6b, 0xed, 0x5a, 0xa7, 0x79, + 0xf0, 0xa0, 0xe4, 0x2b, 0xd6, 0x2f, 0xf8, 0x9e, 0x52, 0x92, 0x79, 0xcf, 0x2f, 0xa6, 0x96, 0x76, + 0x39, 0xb5, 0xee, 0x8f, 0x51, 0x3a, 0xe8, 0xd9, 0x55, 0x02, 0xfb, 0xeb, 0x4f, 0xab, 0x93, 0x10, + 0xde, 0x1f, 0x85, 0x4e, 0x44, 0x53, 0x57, 0x75, 0x29, 0x3f, 0xfb, 0x2c, 0x7e, 0xeb, 0xf2, 0xf1, + 0x10, 0x33, 0xc1, 0xc5, 0xfc, 0xad, 0x12, 0xae, 0xba, 0xd4, 0x3f, 0x00, 0xb8, 0x19, 0xe3, 0x01, + 0x4e, 0x10, 0xc7, 0x71, 0xf0, 0x26, 0xc7, 0xd8, 0xa8, 0xad, 0x52, 0x74, 0xa4, 0x14, 0xdd, 0x93, + 0x8a, 0xae, 0xc2, 0x6f, 0xa6, 0xe7, 0xf6, 0x02, 0xfc, 0x2c, 0xc7, 0x58, 0xff, 0x0c, 0xe0, 0x9d, + 0x25, 0x5d, 0x69, 0x51, 0x7d, 0x95, 0xa0, 0x63, 0x25, 0xc8, 0xa8, 0x0a, 0xfa, 0x27, 0x8f, 0xb6, + 0x17, 0xf8, 0xd2, 0x24, 0x07, 0x6e, 0xe0, 0x2c, 0x0e, 0x38, 0x49, 0xb1, 0xb1, 0xde, 0x06, 0x9d, + 0x9a, 0x77, 0xf7, 0x72, 0x6a, 0x6d, 0xc9, 0xdd, 0xca, 0x8a, 0xed, 0xff, 0x87, 0xb3, 0xf8, 0x84, + 0xa4, 0xb8, 0xb7, 0xf1, 0xfe, 0xdc, 0xd2, 0xbe, 0x9c, 0x5b, 0x9a, 0xfd, 0x0d, 0xc0, 0xc6, 0x0b, + 0x9c, 0x13, 0x1a, 0xeb, 0x0f, 0x21, 0x64, 0x1c, 0xe5, 0x5c, 0xd2, 0x14, 0xd7, 0xa8, 0xe6, 0xff, + 0x2f, 0x66, 0x0a, 0x8c, 0xde, 0x82, 0x8d, 0x01, 0xce, 0x12, 0xde, 0x37, 0xd6, 0x44, 0x49, 0x8d, + 0xf4, 0x08, 0x36, 0x50, 0x2a, 0x6e, 0xde, 0xca, 0x73, 0x79, 0x54, 0xd8, 0x70, 0xa3, 0x56, 0x15, + 0xb5, 0x6e, 0xc1, 0x26, 0x8a, 0x38, 0xa1, 0x59, 0x50, 0x54, 0x8d, 0x7a, 0x1b, 0x74, 0xd6, 0x7d, + 0x28, 0xa7, 0x4e, 0xc6, 0x43, 0xdc, 0xab, 0x8b, 0x6e, 0x7e, 0x03, 0xb8, 0xf7, 0x4a, 0x64, 0x51, + 0xf6, 0x44, 0xa2, 0x4a, 0x58, 0x4e, 0xe1, 0x8e, 0x08, 0x8b, 0xf2, 0xbd, 0x12, 0x1a, 0xdb, 0xb9, + 0x1a, 0x64, 0xe7, 0x7a, 0xdc, 0x54, 0x6c, 0xf4, 0xf0, 0x7a, 0x10, 0x03, 0xb8, 0x55, 0xd2, 0x0e, + 0xc5, 0xee, 0x4c, 0x39, 0xd2, 0xaa, 0xd2, 0x4a, 0x71, 0x9e, 0xa9, 0x6e, 0x45, 0x4b, 0x9e, 0x53, + 0x05, 0x6c, 0xfb, 0x9b, 0x6a, 0x46, 0x2e, 0x67, 0xcb, 0x53, 0xf3, 0x5e, 0x5e, 0xcc, 0x4c, 0x30, + 0x99, 0x99, 0xe0, 0xd7, 0xcc, 0x04, 0x1f, 0xe7, 0xa6, 0x36, 0x99, 0x9b, 0xda, 0x8f, 0xb9, 0xa9, + 0x9d, 0x3e, 0xfe, 0xcb, 0x5a, 0xe9, 0xc4, 0xfe, 0x31, 0x0a, 0x99, 0x5b, 0xbe, 0x5f, 0xdd, 0x43, + 0xf7, 0x9d, 0x1b, 0x0d, 0x10, 0x49, 0x17, 0x6f, 0x99, 0xf0, 0x3b, 0x6c, 0x88, 0x47, 0xe6, 0xf0, + 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x64, 0x23, 0x78, 0xaf, 0xea, 0x04, 0x00, 0x00, } func (m *BaseVestingAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/vesting/types/vesting_account.go b/x/claim/vesting/types/vesting_account.go index b1c026370f..c4bf0de5b1 100644 --- a/x/claim/vesting/types/vesting_account.go +++ b/x/claim/vesting/types/vesting_account.go @@ -12,8 +12,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/utils" - vestexported "github.com/Stride-Labs/stride/v12/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v13/utils" + vestexported "github.com/Stride-Labs/stride/v13/x/claim/vesting/exported" ) // Compile-time type assertions diff --git a/x/claim/vesting/types/vesting_account_test.go b/x/claim/vesting/types/vesting_account_test.go index ede14e7020..c74961e0f3 100644 --- a/x/claim/vesting/types/vesting_account_test.go +++ b/x/claim/vesting/types/vesting_account_test.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v12/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" ) var ( diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go index e347a40caa..8f8cd7e3e8 100644 --- a/x/epochs/client/cli/query.go +++ b/x/epochs/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/epochs/genesis.go b/x/epochs/genesis.go index a0dfa6c1e0..96eb5a0c65 100644 --- a/x/epochs/genesis.go +++ b/x/epochs/genesis.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/epochs/keeper" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/keeper" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/epochs/genesis_test.go b/x/epochs/genesis_test.go index 9cb82b7b3c..cae5b4308e 100644 --- a/x/epochs/genesis_test.go +++ b/x/epochs/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/epochs" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/epochs" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) func TestGenesis(t *testing.T) { diff --git a/x/epochs/handler.go b/x/epochs/handler.go index 0d81269b55..d0484519ed 100644 --- a/x/epochs/handler.go +++ b/x/epochs/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/epochs/keeper" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/keeper" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // NewHandler returns a handler for epochs module messages diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index 1e0f5524c7..6ebb3a9ce6 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -9,8 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // BeginBlocker of epochs module diff --git a/x/epochs/keeper/abci_test.go b/x/epochs/keeper/abci_test.go index 9430e12703..0f0d5275e1 100644 --- a/x/epochs/keeper/abci_test.go +++ b/x/epochs/keeper/abci_test.go @@ -4,8 +4,8 @@ import ( "fmt" "time" - "github.com/Stride-Labs/stride/v12/x/epochs" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochInfoChangesBeginBlockerAndInitGenesis() { diff --git a/x/epochs/keeper/epoch.go b/x/epochs/keeper/epoch.go index effd1fdafe..d81f701083 100644 --- a/x/epochs/keeper/epoch.go +++ b/x/epochs/keeper/epoch.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // GetEpochInfo returns epoch info by identifier diff --git a/x/epochs/keeper/epoch_test.go b/x/epochs/keeper/epoch_test.go index 49200a77a8..6efe468feb 100644 --- a/x/epochs/keeper/epoch_test.go +++ b/x/epochs/keeper/epoch_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochLifeCycle() { diff --git a/x/epochs/keeper/grpc_query.go b/x/epochs/keeper/grpc_query.go index a90f2e5c2d..94e2795f73 100644 --- a/x/epochs/keeper/grpc_query.go +++ b/x/epochs/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/epochs/keeper/grpc_query_test.go b/x/epochs/keeper/grpc_query_test.go index 009de5b026..94a7ec7eed 100644 --- a/x/epochs/keeper/grpc_query_test.go +++ b/x/epochs/keeper/grpc_query_test.go @@ -6,7 +6,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) func (suite *KeeperTestSuite) TestQueryEpochInfos() { diff --git a/x/epochs/keeper/hooks.go b/x/epochs/keeper/hooks.go index ccd826a478..72d50d948c 100644 --- a/x/epochs/keeper/hooks.go +++ b/x/epochs/keeper/hooks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // AfterEpochEnd executes the indicated hook after epochs ends diff --git a/x/epochs/keeper/keeper.go b/x/epochs/keeper/keeper.go index 835648eda1..bd0791695d 100644 --- a/x/epochs/keeper/keeper.go +++ b/x/epochs/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // Keeper of this module maintains collections of epochs and hooks. diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index a04a42c76e..cc1a6b5c07 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) type KeeperTestSuite struct { diff --git a/x/epochs/module.go b/x/epochs/module.go index 1c130cc418..a8244f8aaa 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -20,10 +20,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/epochs/client/cli" - "github.com/Stride-Labs/stride/v12/x/epochs/keeper" - "github.com/Stride-Labs/stride/v12/x/epochs/simulation" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/client/cli" + "github.com/Stride-Labs/stride/v13/x/epochs/keeper" + "github.com/Stride-Labs/stride/v13/x/epochs/simulation" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) var ( diff --git a/x/epochs/simulation/genesis.go b/x/epochs/simulation/genesis.go index fe81598a0e..0f39be2d64 100644 --- a/x/epochs/simulation/genesis.go +++ b/x/epochs/simulation/genesis.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // RandomizedGenState generates a random GenesisState for mint diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 5962c9ea01..2c8f531542 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -172,37 +172,37 @@ func init() { func init() { proto.RegisterFile("stride/epochs/genesis.proto", fileDescriptor_92af8154b2eb736d) } var fileDescriptor_92af8154b2eb736d = []byte{ - // 467 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x8f, 0xd3, 0x30, - 0x14, 0xc7, 0x6b, 0x5a, 0xca, 0xd5, 0x77, 0x27, 0x84, 0x75, 0x80, 0x29, 0x22, 0x89, 0xc2, 0x12, - 0x09, 0x48, 0xb8, 0x82, 0x18, 0x60, 0x2b, 0xbf, 0x11, 0x53, 0xca, 0x80, 0x58, 0xaa, 0xb4, 0x75, - 0x1d, 0x4b, 0x97, 0x38, 0x8a, 0x5f, 0x10, 0xdd, 0x98, 0x99, 0x6e, 0xe4, 0x4f, 0xba, 0xf1, 0x46, - 0xa6, 0x80, 0xda, 0x8d, 0xf1, 0xfe, 0x02, 0x14, 0x3b, 0x29, 0x3d, 0x0a, 0x62, 0x4b, 0xfc, 0xf9, - 0xbe, 0xef, 0xd7, 0xef, 0xe9, 0x19, 0xdf, 0x54, 0x90, 0x8b, 0x19, 0x0b, 0x58, 0x26, 0xa7, 0xb1, - 0x0a, 0x38, 0x4b, 0x99, 0x12, 0xca, 0xcf, 0x72, 0x09, 0x92, 0xec, 0x1b, 0xe8, 0x1b, 0xd8, 0x3f, - 0xe0, 0x92, 0x4b, 0x4d, 0x82, 0xea, 0xcb, 0x88, 0xfa, 0x16, 0x97, 0x92, 0x1f, 0xb1, 0x40, 0xff, - 0x4d, 0x8a, 0x79, 0x30, 0x2b, 0xf2, 0x08, 0x84, 0x4c, 0x6b, 0x6e, 0xff, 0xc9, 0x41, 0x24, 0x4c, - 0x41, 0x94, 0x64, 0x46, 0xe0, 0x7e, 0xe9, 0xe0, 0xde, 0xf3, 0x2a, 0xe1, 0x75, 0x3a, 0x97, 0xc4, - 0xc2, 0x58, 0xcc, 0x58, 0x0a, 0x62, 0x2e, 0x58, 0x4e, 0x91, 0x83, 0xbc, 0x5e, 0xb8, 0x71, 0x42, - 0xde, 0x63, 0xac, 0x20, 0xca, 0x61, 0x5c, 0xd9, 0xd0, 0x0b, 0x0e, 0xf2, 0x76, 0x07, 0x7d, 0xdf, - 0x64, 0xf8, 0x4d, 0x86, 0xff, 0xae, 0xc9, 0x18, 0xde, 0x3a, 0x29, 0xed, 0xd6, 0x59, 0x69, 0x5f, - 0x59, 0x44, 0xc9, 0xd1, 0x63, 0xf7, 0x77, 0xad, 0x7b, 0xfc, 0xdd, 0x46, 0x61, 0x4f, 0x1f, 0x54, - 0x72, 0x12, 0xe3, 0x9d, 0xe6, 0xea, 0xb4, 0xad, 0x7d, 0x6f, 0x6c, 0xf9, 0x3e, 0xab, 0x05, 0xc3, - 0xc3, 0xca, 0xf6, 0x67, 0x69, 0x93, 0xa6, 0xe4, 0xae, 0x4c, 0x04, 0xb0, 0x24, 0x83, 0xc5, 0x59, - 0x69, 0x5f, 0x36, 0x61, 0x0d, 0x73, 0xbf, 0x56, 0x51, 0x6b, 0x77, 0x72, 0x1b, 0xef, 0x4f, 0x8b, - 0x3c, 0x67, 0x29, 0x8c, 0xf5, 0x68, 0x69, 0xc7, 0x41, 0x5e, 0x3b, 0xdc, 0xab, 0x0f, 0xf5, 0x30, - 0xc8, 0x67, 0x84, 0xe9, 0x39, 0xd5, 0x78, 0xa3, 0xef, 0x8b, 0xff, 0xed, 0xfb, 0x4e, 0xdd, 0xb7, - 0x6d, 0xae, 0xf2, 0x2f, 0x27, 0x33, 0x85, 0xab, 0x9b, 0xc9, 0xa3, 0xf5, 0x44, 0x1e, 0xe2, 0x6b, - 0x46, 0x3f, 0x95, 0x45, 0x0a, 0x22, 0xe5, 0xa6, 0x90, 0xcd, 0x68, 0xd7, 0x41, 0xde, 0x4e, 0x78, - 0xa0, 0xe9, 0xd3, 0x1a, 0x8e, 0x0c, 0x23, 0x4f, 0x70, 0xff, 0x6f, 0x69, 0x31, 0x13, 0x3c, 0x06, - 0x7a, 0x49, 0xb7, 0x7a, 0x7d, 0x2b, 0xf0, 0x95, 0xc6, 0xee, 0x0b, 0xbc, 0xf7, 0xd2, 0xec, 0xe0, - 0x08, 0x22, 0x60, 0xe4, 0x11, 0xee, 0x9a, 0xed, 0xa3, 0xc8, 0x69, 0x7b, 0xbb, 0x03, 0xea, 0x9f, - 0xdb, 0x49, 0x7f, 0xbd, 0x38, 0xc3, 0x4e, 0xd5, 0x70, 0x58, 0xab, 0x87, 0x6f, 0x4e, 0x96, 0x16, - 0x3a, 0x5d, 0x5a, 0xe8, 0xc7, 0xd2, 0x42, 0xc7, 0x2b, 0xab, 0x75, 0xba, 0xb2, 0x5a, 0xdf, 0x56, - 0x56, 0xeb, 0xc3, 0x7d, 0x2e, 0x20, 0x2e, 0x26, 0xfe, 0x54, 0x26, 0xc1, 0x48, 0x7b, 0xdd, 0x7b, - 0x1b, 0x4d, 0x54, 0x50, 0x3f, 0x84, 0x8f, 0x87, 0x83, 0xe0, 0x53, 0xf3, 0x1c, 0x60, 0x91, 0x31, - 0x35, 0xe9, 0xea, 0xf1, 0x3e, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xb1, 0x90, 0x2d, 0x2c, - 0x03, 0x00, 0x00, + // 468 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x6f, 0xd3, 0x40, + 0x14, 0xc7, 0x73, 0x24, 0x84, 0xe6, 0xda, 0x0a, 0x71, 0x2a, 0x70, 0x04, 0x61, 0x5b, 0x66, 0xb1, + 0x04, 0xd8, 0xb4, 0x45, 0x0c, 0xb0, 0x85, 0xdf, 0x88, 0xc9, 0x61, 0x40, 0x2c, 0x91, 0x93, 0x5c, + 0xce, 0x27, 0xd5, 0x3e, 0xcb, 0xf7, 0x8c, 0xc8, 0xc6, 0xcc, 0xd4, 0x91, 0x3f, 0xa9, 0x63, 0x47, + 0x26, 0x83, 0x92, 0x8d, 0xb1, 0x7f, 0x01, 0xf2, 0x9d, 0x1d, 0x52, 0x02, 0xea, 0x66, 0xdf, 0xe7, + 0xfb, 0xbe, 0xdf, 0x7b, 0x4f, 0xef, 0xf0, 0x6d, 0x05, 0xb9, 0x98, 0xb2, 0x80, 0x65, 0x72, 0x12, + 0xab, 0x80, 0xb3, 0x94, 0x29, 0xa1, 0xfc, 0x2c, 0x97, 0x20, 0xc9, 0xae, 0x81, 0xbe, 0x81, 0xfd, + 0x3d, 0x2e, 0xb9, 0xd4, 0x24, 0xa8, 0xbe, 0x8c, 0xa8, 0x6f, 0x71, 0x29, 0xf9, 0x11, 0x0b, 0xf4, + 0xdf, 0xb8, 0x98, 0x05, 0xd3, 0x22, 0x8f, 0x40, 0xc8, 0xb4, 0xe6, 0xf6, 0xdf, 0x1c, 0x44, 0xc2, + 0x14, 0x44, 0x49, 0x66, 0x04, 0xee, 0xd7, 0x0e, 0xee, 0xbd, 0xa8, 0x12, 0xde, 0xa4, 0x33, 0x49, + 0x2c, 0x8c, 0xc5, 0x94, 0xa5, 0x20, 0x66, 0x82, 0xe5, 0x14, 0x39, 0xc8, 0xeb, 0x85, 0x6b, 0x27, + 0xe4, 0x03, 0xc6, 0x0a, 0xa2, 0x1c, 0x46, 0x95, 0x0d, 0xbd, 0xe4, 0x20, 0x6f, 0xfb, 0xa0, 0xef, + 0x9b, 0x0c, 0xbf, 0xc9, 0xf0, 0xdf, 0x37, 0x19, 0x83, 0x3b, 0x27, 0xa5, 0xdd, 0x3a, 0x2b, 0xed, + 0x6b, 0xf3, 0x28, 0x39, 0x7a, 0xe2, 0xfe, 0xa9, 0x75, 0x8f, 0x7f, 0xd8, 0x28, 0xec, 0xe9, 0x83, + 0x4a, 0x4e, 0x62, 0xbc, 0xd5, 0x5c, 0x9d, 0xb6, 0xb5, 0xef, 0xad, 0x0d, 0xdf, 0xe7, 0xb5, 0x60, + 0xb0, 0x5f, 0xd9, 0xfe, 0x2a, 0x6d, 0xd2, 0x94, 0xdc, 0x97, 0x89, 0x00, 0x96, 0x64, 0x30, 0x3f, + 0x2b, 0xed, 0xab, 0x26, 0xac, 0x61, 0xee, 0xb7, 0x2a, 0x6a, 0xe5, 0x4e, 0xee, 0xe2, 0xdd, 0x49, + 0x91, 0xe7, 0x2c, 0x85, 0x91, 0x1e, 0x2d, 0xed, 0x38, 0xc8, 0x6b, 0x87, 0x3b, 0xf5, 0xa1, 0x1e, + 0x06, 0xf9, 0x82, 0x30, 0x3d, 0xa7, 0x1a, 0xad, 0xf5, 0x7d, 0xf9, 0xc2, 0xbe, 0xef, 0xd5, 0x7d, + 0xdb, 0xe6, 0x2a, 0xff, 0x73, 0x32, 0x53, 0xb8, 0xbe, 0x9e, 0x3c, 0x5c, 0x4d, 0xe4, 0x11, 0xbe, + 0x61, 0xf4, 0x13, 0x59, 0xa4, 0x20, 0x52, 0x6e, 0x0a, 0xd9, 0x94, 0x76, 0x1d, 0xe4, 0x6d, 0x85, + 0x7b, 0x9a, 0x3e, 0xab, 0xe1, 0xd0, 0x30, 0xf2, 0x14, 0xf7, 0xff, 0x95, 0x16, 0x33, 0xc1, 0x63, + 0xa0, 0x57, 0x74, 0xab, 0x37, 0x37, 0x02, 0x5f, 0x6b, 0xec, 0xbe, 0xc4, 0x3b, 0xaf, 0xcc, 0x0e, + 0x0e, 0x21, 0x02, 0x46, 0x1e, 0xe3, 0xae, 0xd9, 0x3e, 0x8a, 0x9c, 0xb6, 0xb7, 0x7d, 0x40, 0xfd, + 0x73, 0x3b, 0xe9, 0xaf, 0x16, 0x67, 0xd0, 0xa9, 0x1a, 0x0e, 0x6b, 0xf5, 0xe0, 0xed, 0xc9, 0xc2, + 0x42, 0xa7, 0x0b, 0x0b, 0xfd, 0x5c, 0x58, 0xe8, 0x78, 0x69, 0xb5, 0x4e, 0x97, 0x56, 0xeb, 0xfb, + 0xd2, 0x6a, 0x7d, 0x7c, 0xc8, 0x05, 0xc4, 0xc5, 0xd8, 0x9f, 0xc8, 0x24, 0x18, 0x6a, 0xaf, 0x07, + 0xef, 0xa2, 0xb1, 0x0a, 0xea, 0x87, 0xf0, 0x69, 0xff, 0x30, 0xf8, 0xdc, 0x3c, 0x07, 0x98, 0x67, + 0x4c, 0x8d, 0xbb, 0x7a, 0xbc, 0x87, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc4, 0xd4, 0xb5, 0xac, + 0x2c, 0x03, 0x00, 0x00, } func (m *EpochInfo) Marshal() (dAtA []byte, err error) { diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index b7f010862a..104ba551bc 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -317,36 +317,36 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ // 508 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x4d, 0x6f, 0xd3, 0x30, 0x18, 0xae, 0x57, 0x36, 0x69, 0xef, 0xb6, 0x8b, 0xc5, 0x47, 0xdb, 0xa1, 0x30, 0xc2, 0xd6, 0x16, - 0x04, 0x36, 0x2d, 0x08, 0x24, 0x4e, 0x08, 0x04, 0x08, 0x84, 0x10, 0x84, 0x1b, 0x97, 0x91, 0x64, - 0x5e, 0x66, 0x69, 0xb3, 0xb3, 0xd8, 0x9d, 0xd8, 0x85, 0x03, 0x07, 0xce, 0x08, 0x6e, 0xdc, 0xf9, - 0x2f, 0x3b, 0x4e, 0xe2, 0xc2, 0x09, 0xa1, 0x96, 0x1f, 0x82, 0x62, 0x7b, 0x6b, 0xc2, 0x52, 0xe5, - 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x33, 0xbe, 0xc5, 0x28, 0x4b, 0x65, - 0xbc, 0xa3, 0xe8, 0xfe, 0x88, 0x65, 0x87, 0x24, 0xcd, 0xa4, 0x96, 0x78, 0xc5, 0x8e, 0x88, 0x1d, + 0x04, 0x36, 0xed, 0x10, 0x48, 0x9c, 0x10, 0x08, 0x10, 0x08, 0x21, 0x08, 0x37, 0x2e, 0x23, 0xc9, + 0xbc, 0xcc, 0xd2, 0x66, 0x67, 0xb1, 0x3b, 0xb1, 0x0b, 0x07, 0x0e, 0x9c, 0x11, 0xdc, 0xb8, 0xf3, + 0x5f, 0x76, 0x9c, 0xc4, 0x85, 0x13, 0x42, 0x2d, 0x3f, 0x04, 0xc5, 0xf6, 0xd6, 0x04, 0x52, 0xe5, + 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x33, 0xbe, 0xcd, 0x28, 0x4b, 0x65, + 0xbc, 0xab, 0xe8, 0xc1, 0x88, 0x65, 0x47, 0x24, 0xcd, 0xa4, 0x96, 0x78, 0xc5, 0x8e, 0x88, 0x1d, 0x75, 0xce, 0x27, 0x32, 0x91, 0x66, 0x42, 0xf3, 0x7f, 0x16, 0xd4, 0xb9, 0x9c, 0x48, 0x99, 0xec, - 0x32, 0x1a, 0xa6, 0x9c, 0x86, 0x42, 0x48, 0x1d, 0x6a, 0x2e, 0x85, 0x72, 0xd3, 0x1b, 0xb1, 0x54, - 0x7b, 0x52, 0xd1, 0x28, 0x54, 0xcc, 0x6a, 0xd3, 0x83, 0x41, 0xc4, 0x74, 0x38, 0xa0, 0x69, 0x98, - 0x70, 0x61, 0xc0, 0x0e, 0xbb, 0x5a, 0x4e, 0x92, 0x30, 0xc1, 0x14, 0x77, 0x42, 0xfe, 0x7b, 0xb8, - 0xf8, 0x26, 0xa7, 0x3f, 0x31, 0xc3, 0xe7, 0x62, 0x5b, 0x06, 0x6c, 0x7f, 0xc4, 0x94, 0xc6, 0x4f, - 0x01, 0xa6, 0x52, 0x2d, 0xb4, 0x86, 0xfa, 0x4b, 0xc3, 0x2e, 0xb1, 0xbe, 0x24, 0xf7, 0x25, 0xf6, - 0x4e, 0xce, 0x97, 0xbc, 0x0e, 0x13, 0xe6, 0xb8, 0x41, 0x81, 0xe9, 0x7f, 0x47, 0x70, 0xe9, 0x8c, - 0x85, 0x4a, 0xa5, 0x50, 0x0c, 0xdf, 0x83, 0x05, 0x9b, 0xaa, 0x85, 0xd6, 0x9a, 0xfd, 0xa5, 0x61, - 0x8b, 0x94, 0xaa, 0x21, 0x86, 0x92, 0x33, 0x1e, 0x9d, 0x3b, 0xfa, 0x7d, 0xa5, 0x11, 0x38, 0x34, - 0x7e, 0x56, 0xca, 0x36, 0x67, 0xb2, 0xf5, 0x6a, 0xb3, 0x59, 0xd3, 0x52, 0xb8, 0x07, 0xd0, 0x32, - 0xd9, 0x1e, 0x8f, 0xb2, 0x8c, 0x09, 0x6d, 0xfc, 0x4e, 0x0a, 0xf0, 0x00, 0xf8, 0x16, 0x13, 0x9a, - 0x6f, 0x73, 0x96, 0x99, 0x02, 0x16, 0x83, 0xc2, 0x89, 0xff, 0x10, 0xda, 0x15, 0x5c, 0x77, 0xb3, - 0x6b, 0xb0, 0x12, 0xdb, 0xf3, 0x4d, 0x93, 0xd9, 0xf0, 0x9b, 0xc1, 0x72, 0x5c, 0x00, 0xfb, 0xf7, - 0xe1, 0xc2, 0xb4, 0x99, 0x62, 0xf7, 0x75, 0xd6, 0xaf, 0x8a, 0x5b, 0x2b, 0x35, 0x7a, 0x17, 0xe6, - 0xa7, 0x7e, 0xf5, 0x85, 0x5a, 0xf0, 0xf0, 0x47, 0x13, 0xe6, 0x8d, 0x20, 0xfe, 0x08, 0x70, 0x8a, - 0x51, 0x78, 0xe3, 0x3f, 0x7a, 0xf5, 0x53, 0xe9, 0x74, 0xeb, 0x60, 0x36, 0x9c, 0x7f, 0xf5, 0xd3, - 0xcf, 0xbf, 0xdf, 0xe6, 0x56, 0x71, 0x9b, 0xbe, 0x35, 0xf8, 0xdd, 0x30, 0x52, 0xb4, 0xf4, 0x3a, - 0xf1, 0x57, 0x04, 0xcb, 0xc5, 0x42, 0x71, 0xaf, 0x4a, 0xbb, 0x62, 0x5d, 0x9d, 0x7e, 0x3d, 0xd0, - 0xc5, 0xa0, 0x26, 0xc6, 0x75, 0xdc, 0x9b, 0x19, 0x83, 0x96, 0x76, 0x87, 0x3f, 0x23, 0x58, 0x3c, - 0x6d, 0x05, 0xaf, 0xcf, 0xbc, 0x6d, 0xb1, 0x93, 0x8d, 0x1a, 0x94, 0xcb, 0x72, 0xd3, 0x64, 0xe9, - 0xe2, 0xf5, 0xd9, 0x59, 0xcc, 0xcf, 0x26, 0xcf, 0x97, 0xf6, 0xe2, 0x68, 0xec, 0xa1, 0xe3, 0xb1, - 0x87, 0xfe, 0x8c, 0x3d, 0xf4, 0x65, 0xe2, 0x35, 0x8e, 0x27, 0x5e, 0xe3, 0xd7, 0xc4, 0x6b, 0xbc, - 0xbb, 0x9d, 0x70, 0xbd, 0x33, 0x8a, 0x48, 0x2c, 0xf7, 0x9c, 0xd2, 0xad, 0x97, 0x05, 0xa9, 0x83, - 0xc1, 0x90, 0x7e, 0x38, 0x11, 0xd4, 0x87, 0x29, 0x53, 0xd1, 0x82, 0xf9, 0x00, 0xdc, 0xf9, 0x17, - 0x00, 0x00, 0xff, 0xff, 0x7b, 0x4e, 0xd6, 0x5e, 0xa9, 0x04, 0x00, 0x00, + 0x31, 0x1a, 0xa6, 0x9c, 0x86, 0x42, 0x48, 0x1d, 0x6a, 0x2e, 0x85, 0x72, 0xd3, 0x1b, 0xb1, 0x54, + 0xfb, 0x52, 0xd1, 0x28, 0x54, 0xcc, 0x6a, 0xd3, 0xc3, 0x41, 0xc4, 0x74, 0x38, 0xa0, 0x69, 0x98, + 0x70, 0x61, 0xc0, 0x0e, 0xbb, 0x5a, 0x4e, 0x92, 0x30, 0xc1, 0x14, 0x77, 0x42, 0xfe, 0x3b, 0xb8, + 0xf8, 0x3a, 0xa7, 0x3f, 0x36, 0xc3, 0x67, 0x62, 0x47, 0x06, 0xec, 0x60, 0xc4, 0x94, 0xc6, 0x4f, + 0x00, 0xa6, 0x52, 0x2d, 0xb4, 0x86, 0xfa, 0x4b, 0xc3, 0x2e, 0xb1, 0xbe, 0x24, 0xf7, 0x25, 0xf6, + 0x4e, 0xce, 0x97, 0xbc, 0x0a, 0x13, 0xe6, 0xb8, 0x41, 0x81, 0xe9, 0x7f, 0x43, 0x70, 0xe9, 0x3f, + 0x0b, 0x95, 0x4a, 0xa1, 0x18, 0xbe, 0x0b, 0x0b, 0x36, 0x55, 0x0b, 0xad, 0x35, 0xfb, 0x4b, 0xc3, + 0x16, 0x29, 0x55, 0x43, 0x0c, 0x25, 0x67, 0x3c, 0x3c, 0x77, 0xfc, 0xeb, 0x4a, 0x23, 0x70, 0x68, + 0xfc, 0xb4, 0x94, 0x6d, 0xce, 0x64, 0xeb, 0xd5, 0x66, 0xb3, 0xa6, 0xa5, 0x70, 0xf7, 0xa1, 0x65, + 0xb2, 0x3d, 0x1a, 0x65, 0x19, 0x13, 0xda, 0xf8, 0x9d, 0x16, 0xe0, 0x01, 0xf0, 0x6d, 0x26, 0x34, + 0xdf, 0xe1, 0x2c, 0x33, 0x05, 0x2c, 0x06, 0x85, 0x13, 0xff, 0x01, 0xb4, 0x2b, 0xb8, 0xee, 0x66, + 0xd7, 0x60, 0x25, 0xb6, 0xe7, 0x5b, 0x26, 0xb3, 0xe1, 0x37, 0x83, 0xe5, 0xb8, 0x00, 0xf6, 0xef, + 0xc1, 0x85, 0x69, 0x33, 0xc5, 0xee, 0xeb, 0xac, 0x5f, 0x16, 0xb7, 0x56, 0x6a, 0xf4, 0x0e, 0xcc, + 0x4f, 0xfd, 0xea, 0x0b, 0xb5, 0xe0, 0xe1, 0xf7, 0x26, 0xcc, 0x1b, 0x41, 0xfc, 0x01, 0xe0, 0x0c, + 0xa3, 0xf0, 0xc6, 0x3f, 0xf4, 0xea, 0xa7, 0xd2, 0xe9, 0xd6, 0xc1, 0x6c, 0x38, 0xff, 0xea, 0xc7, + 0x1f, 0x7f, 0xbe, 0xce, 0xad, 0xe2, 0x36, 0x7d, 0x63, 0xf0, 0x7b, 0x61, 0xa4, 0x68, 0xe9, 0x75, + 0xe2, 0x2f, 0x08, 0x96, 0x8b, 0x85, 0xe2, 0x5e, 0x95, 0x76, 0xc5, 0xba, 0x3a, 0xfd, 0x7a, 0xa0, + 0x8b, 0x41, 0x4d, 0x8c, 0xeb, 0xb8, 0x37, 0x33, 0x06, 0x2d, 0xed, 0x0e, 0x7f, 0x42, 0xb0, 0x78, + 0xd6, 0x0a, 0x5e, 0x9f, 0x79, 0xdb, 0x62, 0x27, 0x1b, 0x35, 0x28, 0x97, 0xe5, 0xa6, 0xc9, 0xd2, + 0xc5, 0xeb, 0xb3, 0xb3, 0x98, 0x9f, 0x2d, 0x9e, 0x2f, 0xed, 0xf9, 0xf1, 0xd8, 0x43, 0x27, 0x63, + 0x0f, 0xfd, 0x1e, 0x7b, 0xe8, 0xf3, 0xc4, 0x6b, 0x9c, 0x4c, 0xbc, 0xc6, 0xcf, 0x89, 0xd7, 0x78, + 0x7b, 0x3b, 0xe1, 0x7a, 0x77, 0x14, 0x91, 0x58, 0xee, 0x3b, 0xa5, 0x5b, 0x2f, 0x0a, 0x52, 0x87, + 0x83, 0x4d, 0xfa, 0xfe, 0x54, 0x50, 0x1f, 0xa5, 0x4c, 0x45, 0x0b, 0xe6, 0x03, 0xb0, 0xf9, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x5c, 0x2b, 0xf3, 0xdf, 0xa9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/client/cli/query.go b/x/icacallbacks/client/cli/query.go index dd0b976eef..7d1ca4f016 100644 --- a/x/icacallbacks/client/cli/query.go +++ b/x/icacallbacks/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/icacallbacks/client/cli/query_callback_data.go b/x/icacallbacks/client/cli/query_callback_data.go index 12ffc4be5a..fc8780cb4c 100644 --- a/x/icacallbacks/client/cli/query_callback_data.go +++ b/x/icacallbacks/client/cli/query_callback_data.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func CmdListCallbackData() *cobra.Command { diff --git a/x/icacallbacks/client/cli/query_callback_data_test.go b/x/icacallbacks/client/cli/query_callback_data_test.go index 5d86a78884..4c3048aeef 100644 --- a/x/icacallbacks/client/cli/query_callback_data_test.go +++ b/x/icacallbacks/client/cli/query_callback_data_test.go @@ -12,10 +12,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/testutil/network" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/client/cli/query_params.go b/x/icacallbacks/client/cli/query_params.go index 969baeeae1..c22d157bd0 100644 --- a/x/icacallbacks/client/cli/query_params.go +++ b/x/icacallbacks/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/icacallbacks/client/cli/tx.go b/x/icacallbacks/client/cli/tx.go index 1dc27503e4..ec8243dc34 100644 --- a/x/icacallbacks/client/cli/tx.go +++ b/x/icacallbacks/client/cli/tx.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icacallbacks/genesis.go b/x/icacallbacks/genesis.go index 9239ade28e..273962925e 100644 --- a/x/icacallbacks/genesis.go +++ b/x/icacallbacks/genesis.go @@ -3,8 +3,8 @@ package icacallbacks import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icacallbacks/genesis_test.go b/x/icacallbacks/genesis_test.go index f7d2929775..8974563704 100644 --- a/x/icacallbacks/genesis_test.go +++ b/x/icacallbacks/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/icacallbacks" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/icacallbacks" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func TestGenesis(t *testing.T) { diff --git a/x/icacallbacks/handler.go b/x/icacallbacks/handler.go index 522cd486ee..4158df9804 100644 --- a/x/icacallbacks/handler.go +++ b/x/icacallbacks/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // NewHandler ... diff --git a/x/icacallbacks/ibc_module.go b/x/icacallbacks/ibc_module.go index bfb17cf5cd..5e2292a63e 100644 --- a/x/icacallbacks/ibc_module.go +++ b/x/icacallbacks/ibc_module.go @@ -10,8 +10,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) var _ porttypes.IBCModule = &IBCModule{} diff --git a/x/icacallbacks/icacallbacks.go b/x/icacallbacks/icacallbacks.go index 8189114076..6d3c895c92 100644 --- a/x/icacallbacks/icacallbacks.go +++ b/x/icacallbacks/icacallbacks.go @@ -11,7 +11,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // Parses ICA tx responses and returns a list of each serialized response diff --git a/x/icacallbacks/icacallbacks_test.go b/x/icacallbacks/icacallbacks_test.go index d95a010291..8fdebd0efc 100644 --- a/x/icacallbacks/icacallbacks_test.go +++ b/x/icacallbacks/icacallbacks_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func TestParseTxMsgDataCurrent(t *testing.T) { diff --git a/x/icacallbacks/keeper/callback_data.go b/x/icacallbacks/keeper/callback_data.go index 4a2d4e1e13..37ac435062 100644 --- a/x/icacallbacks/keeper/callback_data.go +++ b/x/icacallbacks/keeper/callback_data.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // SetCallbackData set a specific callbackData in the store from its index diff --git a/x/icacallbacks/keeper/callback_data_test.go b/x/icacallbacks/keeper/callback_data_test.go index 007d09b8c4..8067dd81a4 100644 --- a/x/icacallbacks/keeper/callback_data_test.go +++ b/x/icacallbacks/keeper/callback_data_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query.go b/x/icacallbacks/keeper/grpc_query.go index edaeee5477..ee837e6016 100644 --- a/x/icacallbacks/keeper/grpc_query.go +++ b/x/icacallbacks/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icacallbacks/keeper/grpc_query_callback_data.go b/x/icacallbacks/keeper/grpc_query_callback_data.go index 75dcc5bdc8..290a2ffb30 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func (k Keeper) CallbackDataAll(c context.Context, req *types.QueryAllCallbackDataRequest) (*types.QueryAllCallbackDataResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_callback_data_test.go b/x/icacallbacks/keeper/grpc_query_callback_data_test.go index 60f077b892..f809e51d5f 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data_test.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query_params.go b/x/icacallbacks/keeper/grpc_query_params.go index bc269fa1af..42dbcc9ae1 100644 --- a/x/icacallbacks/keeper/grpc_query_params.go +++ b/x/icacallbacks/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_params_test.go b/x/icacallbacks/keeper/grpc_query_params_test.go index e84d98f761..457d722c8b 100644 --- a/x/icacallbacks/keeper/grpc_query_params_test.go +++ b/x/icacallbacks/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/icacallbacks/keeper/keeper.go b/x/icacallbacks/keeper/keeper.go index f98ca1e58e..efa676ddb3 100644 --- a/x/icacallbacks/keeper/keeper.go +++ b/x/icacallbacks/keeper/keeper.go @@ -13,7 +13,7 @@ import ( ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" diff --git a/x/icacallbacks/keeper/msg_server.go b/x/icacallbacks/keeper/msg_server.go index 7f5c1c9d55..7dde2de518 100644 --- a/x/icacallbacks/keeper/msg_server.go +++ b/x/icacallbacks/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) type msgServer struct { diff --git a/x/icacallbacks/keeper/params.go b/x/icacallbacks/keeper/params.go index 8b63d1c591..1405986491 100644 --- a/x/icacallbacks/keeper/params.go +++ b/x/icacallbacks/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // GetParams get all parameters as types.Params diff --git a/x/icacallbacks/keeper/params_test.go b/x/icacallbacks/keeper/params_test.go index 79ba87290a..cdb40dc0b4 100644 --- a/x/icacallbacks/keeper/params_test.go +++ b/x/icacallbacks/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func TestGetParams(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/convert.go b/x/icacallbacks/migrations/v2/convert.go index dfb1e31ffb..aebec1f800 100644 --- a/x/icacallbacks/migrations/v2/convert.go +++ b/x/icacallbacks/migrations/v2/convert.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" "github.com/golang/protobuf/proto" //nolint:staticcheck - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) const ( diff --git a/x/icacallbacks/migrations/v2/convert_test.go b/x/icacallbacks/migrations/v2/convert_test.go index fd564b8dda..3683a6207f 100644 --- a/x/icacallbacks/migrations/v2/convert_test.go +++ b/x/icacallbacks/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/stretchr/testify/require" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" ) func TestConvertDelegateCallback(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/migrations.go b/x/icacallbacks/migrations/v2/migrations.go index 1777849a76..7ae3ea6203 100644 --- a/x/icacallbacks/migrations/v2/migrations.go +++ b/x/icacallbacks/migrations/v2/migrations.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func migrateCallbacks(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/icacallbacks/module.go b/x/icacallbacks/module.go index f451a1b988..0c8d9f2083 100644 --- a/x/icacallbacks/module.go +++ b/x/icacallbacks/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) var ( diff --git a/x/icacallbacks/module_simulation.go b/x/icacallbacks/module_simulation.go index 9404acfdc2..cd0075acec 100644 --- a/x/icacallbacks/module_simulation.go +++ b/x/icacallbacks/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v12/testutil/sample" - icacallbackssimulation "github.com/Stride-Labs/stride/v12/x/icacallbacks/simulation" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/testutil/sample" + icacallbackssimulation "github.com/Stride-Labs/stride/v13/x/icacallbacks/simulation" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // avoid unused import issue diff --git a/x/icacallbacks/types/callback_data.pb.go b/x/icacallbacks/types/callback_data.pb.go index 231c9c97b7..ce23a8cae4 100644 --- a/x/icacallbacks/types/callback_data.pb.go +++ b/x/icacallbacks/types/callback_data.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_19b6f19ce856679b = []byte{ 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0x38, 0x1c, 0x74, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x81, 0x57, 0x66, 0x68, - 0xa4, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0xef, 0x26, 0xac, 0x1a, 0x66, 0x01, 0x00, 0x00, + 0xac, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, + 0x04, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xc5, 0xcc, 0x26, 0x66, 0x01, 0x00, 0x00, } func (m *CallbackData) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis.pb.go b/x/icacallbacks/types/genesis.pb.go index 65f361c428..82c01253ab 100644 --- a/x/icacallbacks/types/genesis.pb.go +++ b/x/icacallbacks/types/genesis.pb.go @@ -107,9 +107,9 @@ var fileDescriptor_8c333baddfa20681 = []byte{ 0x32, 0x8b, 0x4b, 0x9c, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0x6c, 0xbc, 0xae, - 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x8d, 0xf4, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, - 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf2, - 0x05, 0x0b, 0xc1, 0xaf, 0x01, 0x00, 0x00, + 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x8d, 0xf5, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, + 0xe6, 0x6b, 0xfd, 0xaf, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis_test.go b/x/icacallbacks/types/genesis_test.go index 3e88cdea85..19695657f6 100644 --- a/x/icacallbacks/types/genesis_test.go +++ b/x/icacallbacks/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/icacallbacks/types/packet.pb.go b/x/icacallbacks/types/packet.pb.go index ecabc14dbe..1336299e8d 100644 --- a/x/icacallbacks/types/packet.pb.go +++ b/x/icacallbacks/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_e68b4c401320f2a0 = []byte{ 0x14, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x66, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0x60, 0xe3, 0x75, 0x7d, 0x12, 0x93, 0x8a, - 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd2, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x70, 0x51, 0x31, 0xd0, 0xf7, + 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd6, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0xb2, 0x51, 0xec, 0xf7, 0x00, 0x00, 0x00, } diff --git a/x/icacallbacks/types/params.pb.go b/x/icacallbacks/types/params.pb.go index e770b37f25..7a6aaa412b 100644 --- a/x/icacallbacks/types/params.pb.go +++ b/x/icacallbacks/types/params.pb.go @@ -75,8 +75,8 @@ var fileDescriptor_4c402599e6cfed62 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xb3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0xf9, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0xd7, 0x94, 0x19, 0x1a, 0xe9, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, - 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xa6, 0x4d, 0x66, 0xc6, 0xb7, 0x00, 0x00, 0x00, + 0xd7, 0x94, 0x19, 0x1a, 0xeb, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, + 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xae, 0xae, 0x06, 0xfa, 0xb7, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/query.pb.go b/x/icacallbacks/types/query.pb.go index a4d9ae1db0..c322256632 100644 --- a/x/icacallbacks/types/query.pb.go +++ b/x/icacallbacks/types/query.pb.go @@ -309,40 +309,40 @@ func init() { func init() { proto.RegisterFile("stride/icacallbacks/query.proto", fileDescriptor_5e73b99abb7e91c2) } var fileDescriptor_5e73b99abb7e91c2 = []byte{ - // 520 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0x13, 0x31, - 0x18, 0xc6, 0xe3, 0x52, 0x22, 0xe1, 0x16, 0x21, 0xb9, 0x1d, 0x50, 0x5a, 0x5d, 0xdb, 0x1b, 0x48, - 0x41, 0xc2, 0x6e, 0x82, 0x54, 0x89, 0x01, 0x41, 0xcb, 0x9f, 0x0e, 0x74, 0x08, 0x61, 0x63, 0x41, - 0xef, 0x5d, 0xad, 0xe3, 0x54, 0xe7, 0x7c, 0x8d, 0x9d, 0x8a, 0x08, 0xb1, 0x20, 0x46, 0x06, 0x24, - 0xbe, 0x07, 0x1b, 0x0b, 0x9f, 0xa0, 0x63, 0x25, 0x16, 0x26, 0x84, 0x12, 0x3e, 0x08, 0x8a, 0xed, - 0x94, 0x3b, 0xd5, 0xd7, 0xa8, 0x6c, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, - 0x4d, 0xe9, 0x7e, 0x7a, 0xc0, 0x59, 0x1a, 0x43, 0x0c, 0x42, 0x44, 0x10, 0x1f, 0x2a, 0x76, 0x34, - 0xe0, 0xfd, 0x21, 0xcd, 0xfb, 0x52, 0x4b, 0xb2, 0x64, 0x05, 0xb4, 0x28, 0x68, 0x2c, 0x27, 0x32, - 0x91, 0xe6, 0x9d, 0x4d, 0x4e, 0x56, 0xda, 0x58, 0x4d, 0xa4, 0x4c, 0x04, 0x67, 0x90, 0xa7, 0x0c, - 0xb2, 0x4c, 0x6a, 0xd0, 0xa9, 0xcc, 0x94, 0x7b, 0xbd, 0x13, 0x4b, 0xd5, 0x93, 0x8a, 0x45, 0xa0, - 0xb8, 0x4d, 0x60, 0xc7, 0xad, 0x88, 0x6b, 0x68, 0xb1, 0x1c, 0x92, 0x34, 0x33, 0x62, 0xa7, 0x5d, - 0xf7, 0x51, 0xe5, 0xd0, 0x87, 0xde, 0xd4, 0xad, 0xe9, 0x53, 0x4c, 0x4f, 0xaf, 0x0f, 0x40, 0x83, - 0x15, 0x86, 0xcb, 0x98, 0xbc, 0x98, 0x84, 0x75, 0x4c, 0x75, 0x97, 0x1f, 0x0d, 0xb8, 0xd2, 0x61, - 0x07, 0x2f, 0x95, 0x6e, 0x55, 0x2e, 0x33, 0xc5, 0xc9, 0x7d, 0x5c, 0xb7, 0x29, 0x37, 0xd1, 0x3a, - 0xda, 0x5c, 0x68, 0xaf, 0x50, 0x4f, 0xf7, 0xd4, 0x16, 0xed, 0xce, 0x9f, 0xfc, 0x5a, 0xab, 0x75, - 0x5d, 0x41, 0xf8, 0x08, 0xaf, 0x18, 0xc7, 0x3d, 0xae, 0x1f, 0x3b, 0xe5, 0x13, 0xd0, 0xe0, 0x02, - 0xc9, 0x06, 0x5e, 0x3c, 0xa3, 0x3b, 0xe4, 0x43, 0xe3, 0x7f, 0xad, 0xbb, 0x30, 0xbd, 0x7b, 0xce, - 0x87, 0xa1, 0xc0, 0xab, 0x7e, 0x07, 0x07, 0xb7, 0x8f, 0xaf, 0x97, 0x1a, 0x74, 0x8c, 0x1b, 0x5e, - 0xc6, 0xa2, 0x83, 0x23, 0x3d, 0x03, 0x98, 0xdc, 0x85, 0xdc, 0xf1, 0xee, 0x08, 0xe1, 0xe3, 0x7d, - 0x86, 0xf1, 0xbf, 0xa9, 0xb8, 0xa4, 0x5b, 0xd4, 0x8e, 0x90, 0x4e, 0x46, 0x48, 0xed, 0x92, 0xb8, - 0x11, 0xd2, 0x0e, 0x24, 0xdc, 0xd5, 0x76, 0x0b, 0x95, 0xe1, 0x37, 0xe4, 0xba, 0x3a, 0x97, 0x53, - 0xdd, 0xd5, 0x95, 0xff, 0xee, 0x8a, 0xec, 0x95, 0xb0, 0xe7, 0x0c, 0x76, 0x73, 0x26, 0xb6, 0x45, - 0x29, 0x72, 0xb7, 0x3f, 0xce, 0xe3, 0xab, 0x86, 0x9b, 0x7c, 0x42, 0xb8, 0x6e, 0x27, 0x4e, 0x9a, - 0x5e, 0xa8, 0xf3, 0xeb, 0xd5, 0xd8, 0x9c, 0x2d, 0xb4, 0x99, 0x21, 0xfb, 0xf0, 0xe3, 0xcf, 0x97, - 0xb9, 0xdb, 0xa4, 0xc9, 0x5e, 0x9a, 0x8a, 0xbb, 0xfb, 0x10, 0x29, 0x56, 0xbd, 0xfe, 0xe4, 0x3b, - 0xc2, 0x8b, 0xc5, 0xcf, 0x40, 0xb6, 0xaa, 0xb3, 0xfc, 0xbb, 0xd8, 0x68, 0x5d, 0xa2, 0xc2, 0x61, - 0x3e, 0x35, 0x98, 0x0f, 0xc9, 0x83, 0x99, 0x98, 0xa5, 0x61, 0xb2, 0x77, 0xc5, 0xa5, 0x7f, 0x4f, - 0xbe, 0x22, 0x7c, 0xa3, 0xe8, 0xbf, 0x23, 0xc4, 0x45, 0xfc, 0xfe, 0xdd, 0xbc, 0x88, 0xbf, 0x62, - 0xcb, 0xc2, 0x6d, 0xc3, 0xbf, 0x45, 0xe8, 0xe5, 0xf8, 0x77, 0x3b, 0x27, 0xa3, 0x00, 0x9d, 0x8e, - 0x02, 0xf4, 0x7b, 0x14, 0xa0, 0xcf, 0xe3, 0xa0, 0x76, 0x3a, 0x0e, 0x6a, 0x3f, 0xc7, 0x41, 0xed, - 0xd5, 0x76, 0x92, 0xea, 0x37, 0x83, 0x88, 0xc6, 0xb2, 0xe7, 0xf3, 0x3c, 0x6e, 0xb5, 0xd9, 0xdb, - 0xb2, 0xb3, 0x1e, 0xe6, 0x5c, 0x45, 0x75, 0xf3, 0x5b, 0xba, 0xf7, 0x37, 0x00, 0x00, 0xff, 0xff, - 0x9e, 0x1e, 0x8f, 0xea, 0x79, 0x05, 0x00, 0x00, + // 521 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x6b, 0x14, 0x31, + 0x18, 0xc6, 0x37, 0xb5, 0x2e, 0x98, 0x56, 0x84, 0xb4, 0x07, 0xd9, 0x96, 0x69, 0x3b, 0x07, 0xb7, + 0x0a, 0x26, 0xdd, 0x16, 0x0a, 0x1e, 0x44, 0x5b, 0xff, 0xf4, 0x60, 0x0f, 0xeb, 0x7a, 0xf3, 0x22, + 0xef, 0x4c, 0xc3, 0x38, 0x34, 0x3b, 0x99, 0x6e, 0xb2, 0xc5, 0x45, 0xbc, 0x88, 0x47, 0x0f, 0x82, + 0xdf, 0xc3, 0x9b, 0x17, 0x3f, 0x41, 0x8f, 0x05, 0x2f, 0x9e, 0x44, 0x76, 0xfd, 0x20, 0xb2, 0x49, + 0xb6, 0xce, 0xd0, 0x4c, 0x97, 0xf6, 0x16, 0x92, 0xe7, 0x7d, 0x9e, 0xdf, 0x3b, 0xef, 0xcb, 0xe0, + 0x15, 0xa5, 0x7b, 0xe9, 0x01, 0x67, 0x69, 0x0c, 0x31, 0x08, 0x11, 0x41, 0x7c, 0xa8, 0xd8, 0x51, + 0x9f, 0xf7, 0x06, 0x34, 0xef, 0x49, 0x2d, 0xc9, 0x82, 0x15, 0xd0, 0xa2, 0xa0, 0xb1, 0x98, 0xc8, + 0x44, 0x9a, 0x77, 0x36, 0x3e, 0x59, 0x69, 0x63, 0x39, 0x91, 0x32, 0x11, 0x9c, 0x41, 0x9e, 0x32, + 0xc8, 0x32, 0xa9, 0x41, 0xa7, 0x32, 0x53, 0xee, 0xf5, 0x5e, 0x2c, 0x55, 0x57, 0x2a, 0x16, 0x81, + 0xe2, 0x36, 0x81, 0x1d, 0xb7, 0x22, 0xae, 0xa1, 0xc5, 0x72, 0x48, 0xd2, 0xcc, 0x88, 0x9d, 0x76, + 0xd5, 0x47, 0x95, 0x43, 0x0f, 0xba, 0x13, 0xb7, 0xa6, 0x4f, 0x31, 0x39, 0xbd, 0x39, 0x00, 0x0d, + 0x56, 0x18, 0x2e, 0x62, 0xf2, 0x72, 0x1c, 0xd6, 0x36, 0xd5, 0x1d, 0x7e, 0xd4, 0xe7, 0x4a, 0x87, + 0x6d, 0xbc, 0x50, 0xba, 0x55, 0xb9, 0xcc, 0x14, 0x27, 0x0f, 0x70, 0xdd, 0xa6, 0xdc, 0x46, 0xab, + 0x68, 0x7d, 0x6e, 0x73, 0x89, 0x7a, 0xba, 0xa7, 0xb6, 0x68, 0x77, 0xf6, 0xe4, 0xf7, 0x4a, 0xad, + 0xe3, 0x0a, 0xc2, 0xc7, 0x78, 0xc9, 0x38, 0xee, 0x71, 0xfd, 0xc4, 0x29, 0x9f, 0x82, 0x06, 0x17, + 0x48, 0xd6, 0xf0, 0xfc, 0x19, 0xdd, 0x21, 0x1f, 0x18, 0xff, 0x1b, 0x9d, 0xb9, 0xc9, 0xdd, 0x0b, + 0x3e, 0x08, 0x05, 0x5e, 0xf6, 0x3b, 0x38, 0xb8, 0x7d, 0x7c, 0xb3, 0xd4, 0xa0, 0x63, 0x5c, 0xf3, + 0x32, 0x16, 0x1d, 0x1c, 0xe9, 0x19, 0xc0, 0xf8, 0x2e, 0xe4, 0x8e, 0x77, 0x47, 0x08, 0x1f, 0xef, + 0x73, 0x8c, 0xff, 0x4f, 0xc5, 0x25, 0xdd, 0xa1, 0x76, 0x84, 0x74, 0x3c, 0x42, 0x6a, 0x97, 0xc4, + 0x8d, 0x90, 0xb6, 0x21, 0xe1, 0xae, 0xb6, 0x53, 0xa8, 0x0c, 0xbf, 0x23, 0xd7, 0xd5, 0xb9, 0x9c, + 0xea, 0xae, 0xae, 0x5d, 0xb9, 0x2b, 0xb2, 0x57, 0xc2, 0x9e, 0x31, 0xd8, 0xcd, 0xa9, 0xd8, 0x16, + 0xa5, 0xc8, 0xbd, 0xf9, 0x69, 0x16, 0x5f, 0x37, 0xdc, 0xe4, 0x33, 0xc2, 0x75, 0x3b, 0x71, 0xd2, + 0xf4, 0x42, 0x9d, 0x5f, 0xaf, 0xc6, 0xfa, 0x74, 0xa1, 0xcd, 0x0c, 0xd9, 0xc7, 0x9f, 0x7f, 0xbf, + 0xce, 0xdc, 0x25, 0x4d, 0xf6, 0xca, 0x54, 0xdc, 0xdf, 0x87, 0x48, 0xb1, 0xea, 0xf5, 0x27, 0x3f, + 0x10, 0x9e, 0x2f, 0x7e, 0x06, 0xb2, 0x51, 0x9d, 0xe5, 0xdf, 0xc5, 0x46, 0xeb, 0x12, 0x15, 0x0e, + 0xf3, 0x99, 0xc1, 0x7c, 0x44, 0x1e, 0x4e, 0xc5, 0x2c, 0x0d, 0x93, 0xbd, 0x2f, 0x2e, 0xfd, 0x07, + 0xf2, 0x0d, 0xe1, 0x5b, 0x45, 0xff, 0x1d, 0x21, 0x2e, 0xe2, 0xf7, 0xef, 0xe6, 0x45, 0xfc, 0x15, + 0x5b, 0x16, 0x6e, 0x1b, 0xfe, 0x0d, 0x42, 0x2f, 0xc7, 0xbf, 0xdb, 0x3e, 0x19, 0x06, 0xe8, 0x74, + 0x18, 0xa0, 0x3f, 0xc3, 0x00, 0x7d, 0x19, 0x05, 0xb5, 0xd3, 0x51, 0x50, 0xfb, 0x35, 0x0a, 0x6a, + 0xaf, 0xb7, 0x93, 0x54, 0xbf, 0xed, 0x47, 0x34, 0x96, 0x5d, 0x9f, 0xe7, 0x71, 0x6b, 0x8b, 0xbd, + 0x2b, 0x3b, 0xeb, 0x41, 0xce, 0x55, 0x54, 0x37, 0xbf, 0xa5, 0xad, 0x7f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x96, 0xfd, 0xef, 0xd6, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/tx.pb.go b/x/icacallbacks/types/tx.pb.go index 9e0896af4d..b35a46b91c 100644 --- a/x/icacallbacks/types/tx.pb.go +++ b/x/icacallbacks/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_c4981fec5f7fee51 = []byte{ 0xb1, 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, - 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0x46, 0xfa, 0x15, 0x68, + 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0xc6, 0xfa, 0x15, 0x68, 0x16, 0x56, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x2d, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xc7, 0xd9, 0xf7, 0x48, 0x94, 0x00, 0x00, 0x00, + 0xcf, 0x3a, 0x97, 0x74, 0x94, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/client/cli/cli_test.go b/x/icaoracle/client/cli/cli_test.go index 19290c27c5..4c036a9aaf 100644 --- a/x/icaoracle/client/cli/cli_test.go +++ b/x/icaoracle/client/cli/cli_test.go @@ -11,11 +11,11 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" - cmdcfg "github.com/Stride-Labs/stride/v12/cmd/strided/config" - strideclitestutil "github.com/Stride-Labs/stride/v12/testutil/cli" - "github.com/Stride-Labs/stride/v12/testutil/network" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app" + cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" + strideclitestutil "github.com/Stride-Labs/stride/v13/testutil/cli" + "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/client/cli/query.go b/x/icaoracle/client/cli/query.go index dd244b613b..76f9b99353 100644 --- a/x/icaoracle/client/cli/query.go +++ b/x/icaoracle/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/gogo/protobuf/proto" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) const ( diff --git a/x/icaoracle/client/cli/query_test.go b/x/icaoracle/client/cli/query_test.go index 1fbcafd52d..42e2073f0e 100644 --- a/x/icaoracle/client/cli/query_test.go +++ b/x/icaoracle/client/cli/query_test.go @@ -1,6 +1,6 @@ package cli_test -import "github.com/Stride-Labs/stride/v12/x/icaoracle/client/cli" +import "github.com/Stride-Labs/stride/v13/x/icaoracle/client/cli" func (s *ClientTestSuite) TestCmdQueryOracle() { args := []string{ diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go index 3ea3a9633d..f8d51795d4 100644 --- a/x/icaoracle/client/cli/tx.go +++ b/x/icaoracle/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icaoracle/client/cli/tx_test.go b/x/icaoracle/client/cli/tx_test.go index 3e35cba976..9220937284 100644 --- a/x/icaoracle/client/cli/tx_test.go +++ b/x/icaoracle/client/cli/tx_test.go @@ -1,7 +1,7 @@ package cli_test import ( - "github.com/Stride-Labs/stride/v12/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v13/x/icaoracle/client/cli" ) func (s *ClientTestSuite) TestCmdRestoreOracleICA() { diff --git a/x/icaoracle/ibc_middleware.go b/x/icaoracle/ibc_middleware.go index 6efb8e40aa..7d9ea72b7e 100644 --- a/x/icaoracle/ibc_middleware.go +++ b/x/icaoracle/ibc_middleware.go @@ -11,7 +11,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/icaoracle/keeper/events.go b/x/icaoracle/keeper/events.go index 723c37111a..d19cf04269 100644 --- a/x/icaoracle/keeper/events.go +++ b/x/icaoracle/keeper/events.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // Emits an event for an oracle update diff --git a/x/icaoracle/keeper/genesis.go b/x/icaoracle/keeper/genesis.go index 2d4728e8d2..9a5d2a22a6 100644 --- a/x/icaoracle/keeper/genesis.go +++ b/x/icaoracle/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icaoracle/keeper/genesis_test.go b/x/icaoracle/keeper/genesis_test.go index b6f7c335b1..394ac977b2 100644 --- a/x/icaoracle/keeper/genesis_test.go +++ b/x/icaoracle/keeper/genesis_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGenesis() { diff --git a/x/icaoracle/keeper/grpc_query.go b/x/icaoracle/keeper/grpc_query.go index a2761828cc..dafe3e1f21 100644 --- a/x/icaoracle/keeper/grpc_query.go +++ b/x/icaoracle/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icaoracle/keeper/grpc_query_test.go b/x/icaoracle/keeper/grpc_query_test.go index e191013132..99cf725ca1 100644 --- a/x/icaoracle/keeper/grpc_query_test.go +++ b/x/icaoracle/keeper/grpc_query_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) TestQueryOracle() { diff --git a/x/icaoracle/keeper/ibc.go b/x/icaoracle/keeper/ibc.go index a98c19ab35..9c84d2e280 100644 --- a/x/icaoracle/keeper/ibc.go +++ b/x/icaoracle/keeper/ibc.go @@ -10,8 +10,8 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go index df1ff3b273..f5dbe99158 100644 --- a/x/icaoracle/keeper/ibc_test.go +++ b/x/icaoracle/keeper/ibc_test.go @@ -11,9 +11,9 @@ import ( proto "github.com/cosmos/gogoproto/proto" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // ------------------------------------------ diff --git a/x/icaoracle/keeper/icacallbacks.go b/x/icaoracle/keeper/icacallbacks.go index 0a3df3a9e7..5b981a882a 100644 --- a/x/icaoracle/keeper/icacallbacks.go +++ b/x/icaoracle/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) const ( diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go index 27506d0550..85e6b7e061 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go index 34d76ee1d8..6a9b3a1700 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) type InstantiateOracleCallbackTestCase struct { diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle.go b/x/icaoracle/keeper/icacallbacks_update_oracle.go index 102a2250d8..1393ebf3d1 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go index 2a7420b92d..db1c1598c1 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestUpdateOracleCallback() types.Metric { diff --git a/x/icaoracle/keeper/icaoracle.go b/x/icaoracle/keeper/icaoracle.go index 8f56d5397e..5f22e393b1 100644 --- a/x/icaoracle/keeper/icaoracle.go +++ b/x/icaoracle/keeper/icaoracle.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go index 286dfdfc25..340000e622 100644 --- a/x/icaoracle/keeper/icaoracle_test.go +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -6,9 +6,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) type SubmitMetricUpdateTestCase struct { diff --git a/x/icaoracle/keeper/keeper.go b/x/icaoracle/keeper/keeper.go index 2b2b0db50b..186ec1dfdb 100644 --- a/x/icaoracle/keeper/keeper.go +++ b/x/icaoracle/keeper/keeper.go @@ -10,7 +10,7 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) type Keeper struct { diff --git a/x/icaoracle/keeper/keeper_test.go b/x/icaoracle/keeper/keeper_test.go index fddcb2045d..6be5254c14 100644 --- a/x/icaoracle/keeper/keeper_test.go +++ b/x/icaoracle/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/metric.go b/x/icaoracle/keeper/metric.go index d0cb90ccee..2be15aeb55 100644 --- a/x/icaoracle/keeper/metric.go +++ b/x/icaoracle/keeper/metric.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // Stores a metric in the main metric store and then either diff --git a/x/icaoracle/keeper/metric_test.go b/x/icaoracle/keeper/metric_test.go index 0d30ca151e..02b9311ec8 100644 --- a/x/icaoracle/keeper/metric_test.go +++ b/x/icaoracle/keeper/metric_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "strconv" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // Helper function to create 5 metric objects with various attributes diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go index 20dbb053ca..efe9f5185a 100644 --- a/x/icaoracle/keeper/msg_server.go +++ b/x/icaoracle/keeper/msg_server.go @@ -12,7 +12,7 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) type msgServer struct { diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go index fdcc1c68c4..c75f8bd095 100644 --- a/x/icaoracle/keeper/msg_server_add_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestAddOracle() types.MsgAddOracle { diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go index a9c17696df..d8cfc34978 100644 --- a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -7,8 +7,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) type InstantiateOracleTestCase struct { diff --git a/x/icaoracle/keeper/msg_server_remove_oracle_test.go b/x/icaoracle/keeper/msg_server_remove_oracle_test.go index 793ddacb7d..e91b3af72b 100644 --- a/x/icaoracle/keeper/msg_server_remove_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_remove_oracle_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovRemoveOracle() { diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go index 169b723e60..a38523d620 100644 --- a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -9,7 +9,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) type RestoreOracleICATestCase struct { diff --git a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go index 3f6485425c..e1ea5f220e 100644 --- a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovToggleOracle() { diff --git a/x/icaoracle/keeper/oracle.go b/x/icaoracle/keeper/oracle.go index 8d410294ec..06a6541759 100644 --- a/x/icaoracle/keeper/oracle.go +++ b/x/icaoracle/keeper/oracle.go @@ -7,7 +7,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // Stores/updates an oracle object in the store diff --git a/x/icaoracle/keeper/oracle_test.go b/x/icaoracle/keeper/oracle_test.go index 9ab3332894..72f64c67b9 100644 --- a/x/icaoracle/keeper/oracle_test.go +++ b/x/icaoracle/keeper/oracle_test.go @@ -5,7 +5,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGetOracle() { diff --git a/x/icaoracle/module.go b/x/icaoracle/module.go index 1758f2fdfb..21e36f23b7 100644 --- a/x/icaoracle/module.go +++ b/x/icaoracle/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/icaoracle/client/cli" - "github.com/Stride-Labs/stride/v12/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/types/callbacks.pb.go b/x/icaoracle/types/callbacks.pb.go index 41e254f478..29cc1e2818 100644 --- a/x/icaoracle/types/callbacks.pb.go +++ b/x/icaoracle/types/callbacks.pb.go @@ -141,9 +141,9 @@ var fileDescriptor_7b4c39df2554f0a2 = []byte{ 0x08, 0xaa, 0xce, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0xa6, 0xe8, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x48, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb9, 0xcd, - 0xd9, 0x9d, 0x64, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xd6, + 0x55, 0xf3, 0x64, 0x01, 0x00, 0x00, } func (m *InstantiateOracleCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go index a6f4aebfa9..3dc75dfd90 100644 --- a/x/icaoracle/types/contract.pb.go +++ b/x/icaoracle/types/contract.pb.go @@ -206,29 +206,29 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/contract.proto", fileDescriptor_8bf036e49b48ee03) } var fileDescriptor_8bf036e49b48ee03 = []byte{ - // 346 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcf, 0x4e, 0xc2, 0x40, - 0x10, 0xc6, 0xa9, 0x08, 0x89, 0x5b, 0x48, 0xc8, 0xc6, 0x43, 0x0f, 0xa6, 0x20, 0x5e, 0xb8, 0xd8, - 0x46, 0x78, 0x01, 0x95, 0x98, 0x68, 0x62, 0xa3, 0x41, 0x4e, 0x5e, 0xea, 0x76, 0x3b, 0x29, 0x1b, - 0x68, 0xb7, 0xe9, 0x4e, 0x09, 0xbc, 0x85, 0x0f, 0xe4, 0x03, 0x78, 0xe4, 0xe8, 0xd1, 0xc0, 0x8b, - 0x18, 0x76, 0x09, 0xa8, 0xb7, 0x99, 0xdf, 0x7c, 0xf3, 0x67, 0xf7, 0x23, 0x6d, 0x85, 0x85, 0x88, - 0xc1, 0x17, 0x9c, 0xc9, 0x82, 0xf1, 0x19, 0xf8, 0x5c, 0x66, 0x58, 0x30, 0x8e, 0x5e, 0x5e, 0x48, - 0x94, 0xb4, 0x65, 0x04, 0xde, 0x5e, 0xd0, 0x1d, 0x92, 0xb3, 0x40, 0x25, 0x0f, 0x99, 0x42, 0x96, - 0xa1, 0x60, 0x08, 0x4f, 0x9a, 0x0f, 0x77, 0x7d, 0xf4, 0x82, 0x34, 0x59, 0x9c, 0x8a, 0x2c, 0x64, - 0x71, 0x5c, 0x80, 0x52, 0x8e, 0xd5, 0xb1, 0x7a, 0x27, 0xa3, 0x86, 0x86, 0x37, 0x86, 0x75, 0xdf, - 0xf4, 0x90, 0xbb, 0x05, 0xf0, 0x12, 0xf7, 0xad, 0xcf, 0x52, 0x61, 0x00, 0x58, 0x08, 0x4e, 0xaf, - 0x89, 0x9d, 0x4b, 0x85, 0x61, 0xaa, 0x53, 0x3d, 0xc2, 0xee, 0xb7, 0xbd, 0xff, 0xc7, 0x78, 0x81, - 0x4a, 0x0e, 0x5d, 0x23, 0x92, 0xef, 0xe3, 0xee, 0x87, 0x45, 0x9a, 0x7f, 0xaa, 0xb4, 0x45, 0xaa, - 0x53, 0x58, 0xee, 0xce, 0xd9, 0x86, 0xf4, 0x94, 0xd4, 0xe6, 0x6c, 0x56, 0x82, 0x73, 0xa4, 0x99, - 0x49, 0x68, 0x9b, 0xd8, 0x66, 0x6d, 0x88, 0xcb, 0x1c, 0x9c, 0xaa, 0xae, 0x11, 0x83, 0xc6, 0xcb, - 0x5c, 0x0b, 0xca, 0x3c, 0x66, 0x08, 0x21, 0x8a, 0x14, 0x9c, 0xe3, 0x8e, 0xd5, 0xab, 0x8e, 0x88, - 0x41, 0x63, 0x91, 0x02, 0x3d, 0x27, 0x8d, 0x68, 0x26, 0xf9, 0x34, 0x9c, 0x80, 0x48, 0x26, 0xe8, - 0xd4, 0xb4, 0xc2, 0xd6, 0xec, 0x5e, 0x23, 0xea, 0x12, 0xc2, 0x10, 0x0b, 0x11, 0x95, 0x08, 0xca, - 0xa9, 0x9b, 0x1d, 0x07, 0x72, 0x1b, 0x7c, 0xae, 0x5d, 0x6b, 0xb5, 0x76, 0xad, 0xef, 0xb5, 0x6b, - 0xbd, 0x6f, 0xdc, 0xca, 0x6a, 0xe3, 0x56, 0xbe, 0x36, 0x6e, 0xe5, 0x75, 0x90, 0x08, 0x9c, 0x94, - 0x91, 0xc7, 0x65, 0xea, 0xbf, 0xe8, 0xff, 0xb8, 0x7c, 0x64, 0x91, 0xf2, 0x77, 0x4e, 0xce, 0xaf, - 0xfa, 0xfe, 0xe2, 0x97, 0x9f, 0xdb, 0x37, 0xa8, 0xa8, 0xae, 0xdd, 0x1c, 0xfc, 0x04, 0x00, 0x00, - 0xff, 0xff, 0xe5, 0xeb, 0x1f, 0x12, 0xf0, 0x01, 0x00, 0x00, + // 349 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcf, 0x4e, 0xea, 0x40, + 0x14, 0xc6, 0xe9, 0xe5, 0x42, 0x72, 0x4f, 0x21, 0x21, 0x93, 0xbb, 0xe8, 0xe2, 0xa6, 0x70, 0x71, + 0xc3, 0xc6, 0x36, 0xca, 0x0b, 0xa8, 0xc4, 0x44, 0x13, 0x1b, 0x0d, 0xb2, 0x72, 0x53, 0xa7, 0xd3, + 0x93, 0x32, 0x81, 0x76, 0x9a, 0xce, 0x29, 0x81, 0xb7, 0xf0, 0x81, 0x7c, 0x00, 0x97, 0x2c, 0x5d, + 0x1a, 0x78, 0x11, 0xc3, 0x94, 0x80, 0xba, 0x3b, 0xe7, 0x77, 0xbe, 0xf3, 0x67, 0xe6, 0x83, 0xae, + 0xa6, 0x42, 0xc6, 0xe8, 0x4b, 0xc1, 0x55, 0xc1, 0xc5, 0x1c, 0x7d, 0xa1, 0x32, 0x2a, 0xb8, 0x20, + 0x2f, 0x2f, 0x14, 0x29, 0xd6, 0xa9, 0x04, 0xde, 0x41, 0xd0, 0x1f, 0xc1, 0xbf, 0x40, 0x27, 0xb7, + 0x99, 0x26, 0x9e, 0x91, 0xe4, 0x84, 0xf7, 0x86, 0x8f, 0xf6, 0x7d, 0xec, 0x04, 0xda, 0x3c, 0x4e, + 0x65, 0x16, 0xf2, 0x38, 0x2e, 0x50, 0x6b, 0xc7, 0xea, 0x59, 0x83, 0x3f, 0xe3, 0x96, 0x81, 0x97, + 0x15, 0xeb, 0x3f, 0x9b, 0x21, 0xd7, 0x4b, 0x14, 0x25, 0x1d, 0x5a, 0x1f, 0x94, 0xa6, 0x00, 0xa9, + 0x90, 0x82, 0x5d, 0x80, 0x9d, 0x2b, 0x4d, 0x61, 0x6a, 0x52, 0x33, 0xc2, 0x3e, 0xef, 0x7a, 0x3f, + 0x8f, 0xf1, 0x02, 0x9d, 0x1c, 0xbb, 0xc6, 0x90, 0x1f, 0xe2, 0xfe, 0xab, 0x05, 0xed, 0x6f, 0x55, + 0xd6, 0x81, 0xfa, 0x0c, 0x57, 0xfb, 0x73, 0x76, 0x21, 0xfb, 0x0b, 0x8d, 0x05, 0x9f, 0x97, 0xe8, + 0xfc, 0x32, 0xac, 0x4a, 0x58, 0x17, 0xec, 0x6a, 0x6d, 0x48, 0xab, 0x1c, 0x9d, 0xba, 0xa9, 0x41, + 0x85, 0x26, 0xab, 0xdc, 0x08, 0xca, 0x3c, 0xe6, 0x84, 0x21, 0xc9, 0x14, 0x9d, 0xdf, 0x3d, 0x6b, + 0x50, 0x1f, 0x43, 0x85, 0x26, 0x32, 0x45, 0xf6, 0x1f, 0x5a, 0xd1, 0x5c, 0x89, 0x59, 0x38, 0x45, + 0x99, 0x4c, 0xc9, 0x69, 0x18, 0x85, 0x6d, 0xd8, 0x8d, 0x41, 0xcc, 0x05, 0xe0, 0x44, 0x85, 0x8c, + 0x4a, 0x42, 0xed, 0x34, 0xab, 0x1d, 0x47, 0x72, 0x15, 0xbc, 0x6d, 0x5c, 0x6b, 0xbd, 0x71, 0xad, + 0x8f, 0x8d, 0x6b, 0xbd, 0x6c, 0xdd, 0xda, 0x7a, 0xeb, 0xd6, 0xde, 0xb7, 0x6e, 0xed, 0x69, 0x98, + 0x48, 0x9a, 0x96, 0x91, 0x27, 0x54, 0xea, 0x3f, 0x9a, 0xff, 0x38, 0xbd, 0xe3, 0x91, 0xf6, 0xf7, + 0x4e, 0x2e, 0xce, 0x86, 0xfe, 0xf2, 0x8b, 0x9f, 0xbb, 0x37, 0xe8, 0xa8, 0x69, 0xdc, 0x1c, 0x7e, + 0x06, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xf0, 0x93, 0x7c, 0xf0, 0x01, 0x00, 0x00, } func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/cosmwasm.pb.go b/x/icaoracle/types/cosmwasm.pb.go index 5ad44e747e..33f54c3444 100644 --- a/x/icaoracle/types/cosmwasm.pb.go +++ b/x/icaoracle/types/cosmwasm.pb.go @@ -257,31 +257,31 @@ var fileDescriptor_42aeb672f768be80 = []byte{ // 427 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xb1, 0x8e, 0xd3, 0x40, 0x10, 0x8d, 0x2f, 0x89, 0x0f, 0x96, 0x2b, 0xd0, 0xea, 0x14, 0x99, 0x14, 0x76, 0x74, 0x34, 0x6e, - 0xce, 0x4b, 0xee, 0xfe, 0x20, 0x81, 0x22, 0x12, 0xa1, 0x30, 0x1d, 0x0d, 0x1a, 0x7b, 0x07, 0x63, - 0x11, 0xef, 0x46, 0x9e, 0x4d, 0xee, 0xf8, 0x09, 0xc4, 0x77, 0xf0, 0x25, 0x57, 0x5e, 0x83, 0x44, - 0x15, 0x50, 0xf2, 0x17, 0x54, 0xc8, 0xbb, 0x76, 0x44, 0x41, 0x01, 0x05, 0xcd, 0x78, 0x9e, 0xe7, - 0xcd, 0xe8, 0xbd, 0xa7, 0x65, 0x51, 0xae, 0xa9, 0xba, 0x01, 0xaa, 0x84, 0x2d, 0xdb, 0xa9, 0xe8, - 0x7e, 0x24, 0xeb, 0x5a, 0x1b, 0xcd, 0x1f, 0x1f, 0xb1, 0x2d, 0xdb, 0xe9, 0xf8, 0xbc, 0xd0, 0x85, - 0xb6, 0x43, 0xd1, 0x74, 0x8e, 0x37, 0x0e, 0x1b, 0x9e, 0x26, 0x91, 0x01, 0xa1, 0xd8, 0x4e, 0x33, - 0x34, 0xd0, 0xdc, 0x2a, 0x95, 0x9b, 0x5f, 0x7c, 0xf5, 0x18, 0x5f, 0x52, 0xf1, 0xe2, 0x16, 0xf3, - 0x8d, 0xc1, 0xb9, 0x56, 0xa6, 0x86, 0xdc, 0xf0, 0x11, 0xf3, 0x09, 0x95, 0xc4, 0x3a, 0xf0, 0x26, - 0x5e, 0xfc, 0x30, 0x6d, 0x11, 0x1f, 0xb3, 0x07, 0x79, 0xcb, 0x09, 0x4e, 0xec, 0xe4, 0x88, 0x79, - 0xcc, 0xfa, 0x15, 0x15, 0x41, 0x7f, 0xe2, 0xc5, 0x67, 0xb3, 0xd1, 0xcf, 0x5d, 0xc4, 0x53, 0xb8, - 0xe9, 0x2e, 0x2e, 0x91, 0x08, 0x0a, 0x4c, 0x1b, 0x0a, 0x07, 0x36, 0x7c, 0xb7, 0x51, 0x92, 0x82, - 0xe1, 0xa4, 0x1f, 0x3f, 0xba, 0x7a, 0x92, 0x38, 0x91, 0x49, 0x23, 0x32, 0x69, 0x45, 0x26, 0x73, - 0x5d, 0xaa, 0xd9, 0xb3, 0xbb, 0x5d, 0xd4, 0xfb, 0xf2, 0x3d, 0x8a, 0x8b, 0xd2, 0xbc, 0xdf, 0x64, - 0x49, 0xae, 0x2b, 0xd1, 0x3a, 0x72, 0x9f, 0x4b, 0x92, 0x1f, 0x84, 0xf9, 0xb8, 0x46, 0xb2, 0x0b, - 0x94, 0xba, 0xcb, 0x17, 0x9f, 0x4e, 0xd8, 0x68, 0x49, 0xc5, 0x42, 0x91, 0x01, 0x65, 0x4a, 0xf8, - 0x0b, 0x6f, 0xe7, 0x6c, 0x08, 0xb2, 0x2a, 0x55, 0x6b, 0xcc, 0x01, 0xfe, 0x94, 0x9d, 0xe6, 0x5a, - 0xe2, 0xdb, 0x52, 0x5a, 0x67, 0x83, 0x19, 0xdb, 0xef, 0x22, 0x7f, 0xae, 0x25, 0x2e, 0x9e, 0xa7, - 0x7e, 0x33, 0x5a, 0xc8, 0x66, 0x75, 0x05, 0x19, 0xae, 0x82, 0x81, 0x5b, 0xb5, 0xa0, 0x0b, 0x64, - 0xf8, 0x0f, 0x81, 0xf8, 0xff, 0x2d, 0x90, 0x57, 0x2c, 0xfc, 0x73, 0x1e, 0x29, 0xd2, 0x5a, 0x2b, - 0x42, 0x1e, 0xb0, 0x53, 0x90, 0xb2, 0x46, 0xa2, 0x36, 0x98, 0x0e, 0x72, 0xce, 0x06, 0x12, 0x0c, - 0xd8, 0x60, 0xce, 0x52, 0xdb, 0xcf, 0x96, 0x77, 0xfb, 0xd0, 0xbb, 0xdf, 0x87, 0xde, 0x8f, 0x7d, - 0xe8, 0x7d, 0x3e, 0x84, 0xbd, 0xfb, 0x43, 0xd8, 0xfb, 0x76, 0x08, 0x7b, 0x6f, 0xae, 0x7f, 0x93, - 0xf6, 0xda, 0xd4, 0xa5, 0xc4, 0xcb, 0x97, 0x90, 0x91, 0x20, 0xdb, 0x8b, 0xed, 0xf4, 0x4a, 0xdc, - 0x8a, 0x32, 0x07, 0x5d, 0x43, 0xbe, 0x42, 0xa7, 0x35, 0xf3, 0xed, 0x73, 0xbc, 0xfe, 0x15, 0x00, - 0x00, 0xff, 0xff, 0x1a, 0x59, 0xb5, 0x49, 0xf9, 0x02, 0x00, 0x00, + 0xce, 0x4b, 0xc8, 0x1f, 0x24, 0x50, 0x44, 0x22, 0x14, 0xa6, 0xa3, 0x41, 0x63, 0xef, 0x60, 0x2c, + 0xe2, 0xdd, 0xc8, 0xb3, 0xc9, 0x1d, 0x3f, 0x81, 0xf8, 0x0e, 0xbe, 0xe4, 0xca, 0x6b, 0x90, 0xa8, + 0x02, 0x4a, 0xfe, 0x82, 0x0a, 0x79, 0xd7, 0x3e, 0x51, 0x50, 0x40, 0x71, 0xcd, 0x78, 0x9e, 0xe7, + 0xcd, 0xe8, 0xbd, 0xa7, 0x65, 0x51, 0xae, 0xa9, 0xba, 0x02, 0xaa, 0x84, 0x2d, 0xbb, 0xa9, 0xe8, + 0x7e, 0x24, 0x9b, 0x5a, 0x1b, 0xcd, 0x1f, 0xdf, 0x61, 0x5b, 0x76, 0xd3, 0xf1, 0x79, 0xa1, 0x0b, + 0x6d, 0x87, 0xa2, 0xe9, 0x1c, 0x6f, 0x1c, 0x36, 0x3c, 0x4d, 0x22, 0x03, 0x42, 0xb1, 0x9b, 0x66, + 0x68, 0xa0, 0xb9, 0x55, 0x2a, 0x37, 0xbf, 0xf8, 0xe6, 0x31, 0xbe, 0xa2, 0xe2, 0xe5, 0x35, 0xe6, + 0x5b, 0x83, 0x0b, 0xad, 0x4c, 0x0d, 0xb9, 0xe1, 0x23, 0xe6, 0x13, 0x2a, 0x89, 0x75, 0xe0, 0x4d, + 0xbc, 0xf8, 0x61, 0xda, 0x22, 0x3e, 0x66, 0x0f, 0xf2, 0x96, 0x13, 0x9c, 0xd8, 0xc9, 0x1d, 0xe6, + 0x31, 0xeb, 0x57, 0x54, 0x04, 0xfd, 0x89, 0x17, 0x9f, 0xcd, 0x47, 0xbf, 0xf6, 0x11, 0x4f, 0xe1, + 0xaa, 0xbb, 0xb8, 0x42, 0x22, 0x28, 0x30, 0x6d, 0x28, 0x1c, 0xd8, 0xf0, 0xfd, 0x56, 0x49, 0x0a, + 0x86, 0x93, 0x7e, 0xfc, 0xe8, 0xf9, 0x93, 0xc4, 0x89, 0x4c, 0x1a, 0x91, 0x49, 0x2b, 0x32, 0x59, + 0xe8, 0x52, 0xcd, 0x9f, 0xdd, 0xec, 0xa3, 0xde, 0xd7, 0x1f, 0x51, 0x5c, 0x94, 0xe6, 0xc3, 0x36, + 0x4b, 0x72, 0x5d, 0x89, 0xd6, 0x91, 0xfb, 0x5c, 0x92, 0xfc, 0x28, 0xcc, 0xa7, 0x0d, 0x92, 0x5d, + 0xa0, 0xd4, 0x5d, 0xbe, 0xf8, 0x7c, 0xc2, 0x46, 0x2b, 0x2a, 0x96, 0x8a, 0x0c, 0x28, 0x53, 0xc2, + 0x3f, 0x78, 0x3b, 0x67, 0x43, 0x90, 0x55, 0xa9, 0x5a, 0x63, 0x0e, 0xf0, 0xa7, 0xec, 0x34, 0xd7, + 0x12, 0xdf, 0x95, 0xd2, 0x3a, 0x1b, 0xcc, 0xd9, 0x61, 0x1f, 0xf9, 0x0b, 0x2d, 0x71, 0xf9, 0x22, + 0xf5, 0x9b, 0xd1, 0x52, 0x36, 0xab, 0x6b, 0xc8, 0x70, 0x1d, 0x0c, 0xdc, 0xaa, 0x05, 0x5d, 0x20, + 0xc3, 0xff, 0x08, 0xc4, 0xbf, 0xb7, 0x40, 0x5e, 0xb3, 0xf0, 0xef, 0x79, 0xa4, 0x48, 0x1b, 0xad, + 0x08, 0x79, 0xc0, 0x4e, 0x41, 0xca, 0x1a, 0x89, 0xda, 0x60, 0x3a, 0xc8, 0x39, 0x1b, 0x48, 0x30, + 0x60, 0x83, 0x39, 0x4b, 0x6d, 0x3f, 0x5f, 0xdd, 0x1c, 0x42, 0xef, 0xf6, 0x10, 0x7a, 0x3f, 0x0f, + 0xa1, 0xf7, 0xe5, 0x18, 0xf6, 0x6e, 0x8f, 0x61, 0xef, 0xfb, 0x31, 0xec, 0xbd, 0x9d, 0xfd, 0x21, + 0xed, 0x8d, 0xa9, 0x4b, 0x89, 0x97, 0xaf, 0x20, 0x23, 0x41, 0xb6, 0x17, 0xbb, 0xe9, 0x4c, 0x5c, + 0x8b, 0x32, 0x07, 0x5d, 0x43, 0xbe, 0x46, 0xa7, 0x35, 0xf3, 0xed, 0x73, 0x9c, 0xfd, 0x0e, 0x00, + 0x00, 0xff, 0xff, 0x5b, 0x42, 0x39, 0x27, 0xf9, 0x02, 0x00, 0x00, } func (m *MsgExecuteContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/expected_keepers.go b/x/icaoracle/types/expected_keepers.go index 0ca123995e..30788590f6 100644 --- a/x/icaoracle/types/expected_keepers.go +++ b/x/icaoracle/types/expected_keepers.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) // ClientKeeper defines the expected IBC client keeper diff --git a/x/icaoracle/types/genesis.pb.go b/x/icaoracle/types/genesis.pb.go index ce2b6793a4..a9463e34e7 100644 --- a/x/icaoracle/types/genesis.pb.go +++ b/x/icaoracle/types/genesis.pb.go @@ -145,8 +145,8 @@ var fileDescriptor_89fd81957c6adfb8 = []byte{ 0xdf, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x1b, 0xaf, 0xeb, 0x93, 0x98, 0x54, 0xac, - 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x23, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, - 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x9e, 0x88, 0x09, 0xbd, 0x01, + 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x63, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, + 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x85, 0x04, 0x67, 0xbd, 0x01, 0x00, 0x00, } diff --git a/x/icaoracle/types/genesis_test.go b/x/icaoracle/types/genesis_test.go index 2c4bfbf199..4621f262fe 100644 --- a/x/icaoracle/types/genesis_test.go +++ b/x/icaoracle/types/genesis_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestValidateGenesis(t *testing.T) { diff --git a/x/icaoracle/types/ica_test.go b/x/icaoracle/types/ica_test.go index 8443ee39f8..e6145d6d93 100644 --- a/x/icaoracle/types/ica_test.go +++ b/x/icaoracle/types/ica_test.go @@ -9,7 +9,7 @@ import ( proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestValidateICATx(t *testing.T) { diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go index 04fd6ae391..06ef32af1c 100644 --- a/x/icaoracle/types/icaoracle.pb.go +++ b/x/icaoracle/types/icaoracle.pb.go @@ -310,42 +310,43 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/icaoracle.proto", fileDescriptor_842e38c1f0da9e66) } var fileDescriptor_842e38c1f0da9e66 = []byte{ - // 559 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0xc7, 0x9b, 0x95, 0x65, 0xeb, 0xdb, 0x60, 0xc1, 0xaa, 0xa0, 0x9b, 0x44, 0x08, 0x83, 0xc3, - 0x40, 0x5a, 0x2a, 0x36, 0x89, 0xfb, 0xd8, 0x02, 0x44, 0xa2, 0xeb, 0x48, 0xda, 0x0b, 0x97, 0xc8, - 0xb1, 0xad, 0xd6, 0x5a, 0x13, 0x47, 0x89, 0x5b, 0xd1, 0xaf, 0xb0, 0x13, 0x07, 0x8e, 0xec, 0xfb, - 0x70, 0xdc, 0x91, 0x23, 0x6a, 0xf9, 0x20, 0x28, 0x76, 0xba, 0x05, 0xb8, 0xf9, 0xfd, 0xfe, 0xff, - 0x38, 0xfe, 0x3f, 0xfb, 0x81, 0x53, 0xc8, 0x9c, 0x53, 0xd6, 0xe5, 0x04, 0x8b, 0x1c, 0x93, 0x49, - 0x6d, 0xe5, 0x66, 0xb9, 0x90, 0x02, 0x59, 0xda, 0xe1, 0xde, 0xf2, 0xbd, 0xf6, 0x48, 0x8c, 0x84, - 0x12, 0xbb, 0xe5, 0x4a, 0xfb, 0xf6, 0x7f, 0x1b, 0x60, 0xf6, 0x95, 0x01, 0xed, 0xc2, 0x26, 0x19, - 0x63, 0x9e, 0x46, 0x9c, 0x76, 0x0c, 0xc7, 0x38, 0x68, 0x05, 0x1b, 0xaa, 0xf6, 0x29, 0x7a, 0x0e, - 0xf7, 0x89, 0x48, 0x53, 0x46, 0x24, 0x17, 0x4a, 0x5f, 0x53, 0xfa, 0xf6, 0x1d, 0xf4, 0x29, 0x7a, - 0x02, 0x40, 0xc6, 0x38, 0x4d, 0xd9, 0xa4, 0x74, 0x34, 0x95, 0xa3, 0x55, 0x11, 0x9f, 0xa2, 0xc7, - 0xb0, 0x91, 0x89, 0x5c, 0x96, 0xda, 0x3d, 0xa5, 0x99, 0x65, 0xe9, 0x53, 0xf4, 0x14, 0xb6, 0x38, - 0xc1, 0x11, 0xa6, 0x34, 0x67, 0x45, 0xd1, 0x59, 0x57, 0x22, 0x70, 0x82, 0x4f, 0x34, 0x41, 0x2f, - 0xc1, 0x22, 0x22, 0x95, 0x39, 0x26, 0xf2, 0xd6, 0x65, 0x2a, 0xd7, 0xce, 0x8a, 0xaf, 0xac, 0x8f, - 0xc0, 0xc4, 0x44, 0xf2, 0x19, 0xeb, 0x6c, 0x38, 0xc6, 0xc1, 0x66, 0x50, 0x55, 0xfb, 0xdf, 0xd7, - 0xc0, 0xec, 0x31, 0x99, 0x73, 0x82, 0x2c, 0x68, 0x5e, 0xb2, 0x79, 0x95, 0xb0, 0x5c, 0xa2, 0x36, - 0xac, 0xcf, 0xf0, 0x64, 0xca, 0xaa, 0x54, 0xba, 0x28, 0x8f, 0x95, 0xa8, 0x2f, 0x22, 0x39, 0xcf, - 0x58, 0x95, 0x07, 0x34, 0x1a, 0xcc, 0x33, 0x65, 0x98, 0x66, 0x14, 0x4b, 0x16, 0x49, 0x9e, 0x30, - 0x15, 0xaa, 0x19, 0x80, 0x46, 0x03, 0x9e, 0x30, 0xf4, 0x0c, 0xb6, 0xe3, 0x89, 0x20, 0x97, 0xd1, - 0x98, 0xf1, 0xd1, 0x58, 0xaa, 0x64, 0xcd, 0x60, 0x4b, 0xb1, 0x0f, 0x0a, 0x21, 0x1b, 0x00, 0x4b, - 0x99, 0xf3, 0x78, 0x2a, 0xd9, 0x2a, 0x54, 0x8d, 0xa0, 0x43, 0x40, 0x94, 0x15, 0x92, 0xa7, 0x58, - 0x75, 0x5e, 0x5f, 0xa5, 0xca, 0xd6, 0x0a, 0x1e, 0xd6, 0x94, 0xea, 0x0a, 0xdf, 0x80, 0x59, 0x48, - 0x2c, 0xa7, 0x45, 0x67, 0xd3, 0x31, 0x0e, 0x1e, 0x1c, 0xd9, 0xee, 0xbf, 0xcf, 0xc0, 0xd5, 0x5d, - 0x08, 0x95, 0x2b, 0xa8, 0xdc, 0xfb, 0x7d, 0xe8, 0x04, 0x8c, 0xb2, 0x24, 0x2b, 0xf7, 0x0a, 0xb0, - 0x64, 0x27, 0x77, 0x47, 0x68, 0xc3, 0x3a, 0x65, 0xa9, 0x48, 0xaa, 0x8e, 0xe9, 0xa2, 0xbc, 0xec, - 0x18, 0x17, 0x2c, 0xd2, 0x92, 0x6e, 0x5c, 0xab, 0x24, 0x67, 0x25, 0x78, 0xf5, 0xcd, 0x80, 0xed, - 0xfa, 0x9f, 0x90, 0x0b, 0xbb, 0x3d, 0x6f, 0x10, 0xf8, 0xa7, 0x51, 0x38, 0x38, 0x19, 0x0c, 0xc3, - 0x68, 0x78, 0x1e, 0x5e, 0x78, 0xa7, 0xfe, 0x3b, 0xdf, 0x3b, 0xb3, 0x1a, 0x7b, 0x3b, 0x57, 0xd7, - 0xce, 0x56, 0x0d, 0xa1, 0x17, 0xd0, 0xfe, 0xdb, 0xff, 0x69, 0xe8, 0x0d, 0xbd, 0x33, 0xcb, 0xd8, - 0x83, 0xab, 0x6b, 0xc7, 0xd4, 0xd5, 0xff, 0xbb, 0xfa, 0xe7, 0xd1, 0x45, 0xd0, 0x7f, 0x1f, 0x78, - 0x61, 0x68, 0xad, 0xe9, 0x5d, 0x6b, 0xe8, 0x6d, 0xef, 0xc7, 0xc2, 0x36, 0x6e, 0x16, 0xb6, 0xf1, - 0x6b, 0x61, 0x1b, 0x5f, 0x97, 0x76, 0xe3, 0x66, 0x69, 0x37, 0x7e, 0x2e, 0xed, 0xc6, 0xe7, 0xe3, - 0x11, 0x97, 0xe3, 0x69, 0xec, 0x12, 0x91, 0x74, 0x43, 0xd5, 0xb3, 0xc3, 0x8f, 0x38, 0x2e, 0xba, - 0xd5, 0xa0, 0xcd, 0x5e, 0x1f, 0x75, 0xbf, 0xd4, 0xc6, 0xad, 0x7c, 0x12, 0x45, 0x6c, 0xaa, 0x19, - 0x3a, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0xc9, 0xe7, 0xe9, 0x8c, 0x8f, 0x03, 0x00, 0x00, + // 561 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x3e, + 0x18, 0xc6, 0x9b, 0xf5, 0xbf, 0x6c, 0x7d, 0xb7, 0x3f, 0x0b, 0x56, 0x05, 0xdd, 0x24, 0x42, 0x18, + 0x1c, 0x06, 0xd2, 0x52, 0xc1, 0x24, 0xee, 0x63, 0x0d, 0x10, 0x89, 0xae, 0x23, 0x69, 0x2f, 0x5c, + 0x22, 0xc7, 0xb6, 0x5a, 0x6b, 0x4d, 0x1c, 0x25, 0x6e, 0x45, 0xbf, 0xc2, 0x4e, 0x1c, 0x38, 0xb2, + 0xef, 0xc3, 0x71, 0x47, 0x8e, 0xa8, 0xe5, 0x83, 0xa0, 0xd8, 0xe9, 0x16, 0xe0, 0xe6, 0xf7, 0xf7, + 0x3c, 0x71, 0xfc, 0xbc, 0xf6, 0x0b, 0x4e, 0x21, 0x73, 0x4e, 0x59, 0x97, 0x13, 0x2c, 0x72, 0x4c, + 0xa6, 0xb5, 0x95, 0x9b, 0xe5, 0x42, 0x0a, 0x64, 0x69, 0x87, 0x7b, 0xcb, 0x0f, 0xda, 0x63, 0x31, + 0x16, 0x4a, 0xec, 0x96, 0x2b, 0xed, 0x3b, 0xfc, 0x65, 0x80, 0x39, 0x50, 0x06, 0xb4, 0x0f, 0xdb, + 0x64, 0x82, 0x79, 0x1a, 0x71, 0xda, 0x31, 0x1c, 0xe3, 0xa8, 0x15, 0x6c, 0xa9, 0xda, 0xa7, 0xe8, + 0x29, 0xfc, 0x4f, 0x44, 0x9a, 0x32, 0x22, 0xb9, 0x50, 0xfa, 0x86, 0xd2, 0x77, 0xef, 0xa0, 0x4f, + 0xd1, 0x23, 0x00, 0x32, 0xc1, 0x69, 0xca, 0xa6, 0xa5, 0xa3, 0xa9, 0x1c, 0xad, 0x8a, 0xf8, 0x14, + 0x3d, 0x84, 0xad, 0x4c, 0xe4, 0xb2, 0xd4, 0xfe, 0x53, 0x9a, 0x59, 0x96, 0x3e, 0x45, 0x8f, 0x61, + 0x87, 0x13, 0x1c, 0x61, 0x4a, 0x73, 0x56, 0x14, 0x9d, 0x4d, 0x25, 0x02, 0x27, 0xf8, 0x54, 0x13, + 0xf4, 0x1c, 0x2c, 0x22, 0x52, 0x99, 0x63, 0x22, 0x6f, 0x5d, 0xa6, 0x72, 0xed, 0xad, 0xf9, 0xda, + 0xfa, 0x00, 0x4c, 0x4c, 0x24, 0x9f, 0xb3, 0xce, 0x96, 0x63, 0x1c, 0x6d, 0x07, 0x55, 0x75, 0xf8, + 0x6d, 0x03, 0xcc, 0x3e, 0x93, 0x39, 0x27, 0xc8, 0x82, 0xe6, 0x25, 0x5b, 0x54, 0x09, 0xcb, 0x25, + 0x6a, 0xc3, 0xe6, 0x1c, 0x4f, 0x67, 0xac, 0x4a, 0xa5, 0x8b, 0xf2, 0x58, 0x89, 0xfa, 0x22, 0x92, + 0x8b, 0x8c, 0x55, 0x79, 0x40, 0xa3, 0xe1, 0x22, 0x53, 0x86, 0x59, 0x46, 0xb1, 0x64, 0x91, 0xe4, + 0x09, 0x53, 0xa1, 0x9a, 0x01, 0x68, 0x34, 0xe4, 0x09, 0x43, 0x4f, 0x60, 0x37, 0x9e, 0x0a, 0x72, + 0x19, 0x4d, 0x18, 0x1f, 0x4f, 0xa4, 0x4a, 0xd6, 0x0c, 0x76, 0x14, 0x7b, 0xaf, 0x10, 0xb2, 0x01, + 0xb0, 0x94, 0x39, 0x8f, 0x67, 0x92, 0xad, 0x43, 0xd5, 0x08, 0x3a, 0x06, 0x44, 0x59, 0x21, 0x79, + 0x8a, 0x55, 0xe7, 0xf5, 0x55, 0xaa, 0x6c, 0xad, 0xe0, 0x7e, 0x4d, 0xa9, 0xae, 0xf0, 0x35, 0x98, + 0x85, 0xc4, 0x72, 0x56, 0x74, 0xb6, 0x1d, 0xe3, 0xe8, 0xde, 0x2b, 0xdb, 0xfd, 0xfb, 0x19, 0xb8, + 0xba, 0x0b, 0xa1, 0x72, 0x05, 0x95, 0xfb, 0x70, 0x00, 0x9d, 0x80, 0x51, 0x96, 0x64, 0xe5, 0x5e, + 0x01, 0x96, 0xec, 0xf4, 0xee, 0x08, 0x6d, 0xd8, 0xa4, 0x2c, 0x15, 0x49, 0xd5, 0x31, 0x5d, 0x94, + 0x97, 0x1d, 0xe3, 0x82, 0x45, 0x5a, 0xd2, 0x8d, 0x6b, 0x95, 0xa4, 0x57, 0x82, 0x17, 0x5f, 0x0d, + 0xd8, 0xad, 0xff, 0x09, 0xb9, 0xb0, 0xdf, 0xf7, 0x86, 0x81, 0x7f, 0x16, 0x85, 0xc3, 0xd3, 0xe1, + 0x28, 0x8c, 0x46, 0xe7, 0xe1, 0x85, 0x77, 0xe6, 0xbf, 0xf5, 0xbd, 0x9e, 0xd5, 0x38, 0xd8, 0xbb, + 0xba, 0x76, 0x76, 0x6a, 0x08, 0x3d, 0x83, 0xf6, 0x9f, 0xfe, 0x8f, 0x23, 0x6f, 0xe4, 0xf5, 0x2c, + 0xe3, 0x00, 0xae, 0xae, 0x1d, 0x53, 0x57, 0xff, 0xee, 0xea, 0x9f, 0x47, 0x17, 0xc1, 0xe0, 0x5d, + 0xe0, 0x85, 0xa1, 0xb5, 0xa1, 0x77, 0xad, 0xa1, 0x37, 0xfd, 0xef, 0x4b, 0xdb, 0xb8, 0x59, 0xda, + 0xc6, 0xcf, 0xa5, 0x6d, 0x7c, 0x59, 0xd9, 0x8d, 0x9b, 0x95, 0xdd, 0xf8, 0xb1, 0xb2, 0x1b, 0x9f, + 0x4e, 0xc6, 0x5c, 0x4e, 0x66, 0xb1, 0x4b, 0x44, 0xd2, 0x0d, 0x55, 0xcf, 0x8e, 0x3f, 0xe0, 0xb8, + 0xe8, 0x56, 0x83, 0x36, 0x7f, 0x79, 0xd2, 0xfd, 0x5c, 0x1b, 0xb7, 0xf2, 0x49, 0x14, 0xb1, 0xa9, + 0x66, 0xe8, 0xe4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x88, 0xfc, 0x65, 0xe2, 0x8f, 0x03, 0x00, + 0x00, } func (m *Oracle) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index 26415ae37c..f6ec21ed65 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) var _ sdk.Msg = &MsgAddOracle{} diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go index 0941fa8cbc..e853e840c6 100644 --- a/x/icaoracle/types/message_add_oracle_test.go +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestMsgAddOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index c31a78130e..4e6ed9e73d 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) var _ sdk.Msg = &MsgInstantiateOracle{} diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go index 2644d941cd..3a4b3d0ff0 100644 --- a/x/icaoracle/types/message_instantiate_oracle_test.go +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestMsgInstantiateOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go index cd7ecff8fd..b07fd7295d 100644 --- a/x/icaoracle/types/message_remove_oracle_test.go +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestMsgRemoveOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go index f89627b7fc..5dac1b46a7 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestMsgRestoreOracleICA(t *testing.T) { diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go index 5f1633225a..e57dc5a202 100644 --- a/x/icaoracle/types/message_toggle_oracle_test.go +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestMsgMsgToggleOracle(t *testing.T) { diff --git a/x/icaoracle/types/metric_test.go b/x/icaoracle/types/metric_test.go index badc45a765..b7ade46b7d 100644 --- a/x/icaoracle/types/metric_test.go +++ b/x/icaoracle/types/metric_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) // Tests NewMetric and GetMetricID diff --git a/x/icaoracle/types/oracle_test.go b/x/icaoracle/types/oracle_test.go index 3e2b0ffb47..be53cfdc8f 100644 --- a/x/icaoracle/types/oracle_test.go +++ b/x/icaoracle/types/oracle_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/icaoracle/types" + "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) func TestValidateICASetup(t *testing.T) { diff --git a/x/icaoracle/types/query.pb.go b/x/icaoracle/types/query.pb.go index c4e13e9562..34f6cdd786 100644 --- a/x/icaoracle/types/query.pb.go +++ b/x/icaoracle/types/query.pb.go @@ -402,37 +402,37 @@ var fileDescriptor_d4d4563f64cd9510 = []byte{ // 518 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xce, 0xd4, 0x9a, 0xb4, 0x4f, 0x8a, 0xf2, 0x2c, 0x35, 0x5d, 0xea, 0x1a, 0x16, 0x5b, 0x2b, - 0xda, 0x1d, 0x9b, 0x1c, 0xf4, 0x6a, 0x3d, 0x88, 0x68, 0x51, 0x53, 0xf0, 0x20, 0x42, 0xd8, 0x6c, + 0xda, 0x1d, 0xdb, 0x1c, 0xf4, 0x6a, 0x3d, 0x88, 0x68, 0x51, 0x53, 0xf0, 0x20, 0x42, 0xd8, 0x6c, 0x86, 0xed, 0x60, 0xba, 0x93, 0xee, 0x4c, 0x8a, 0x8b, 0x78, 0xf1, 0xe2, 0x4d, 0x0a, 0xfe, 0x04, - 0xff, 0x4c, 0x8f, 0x05, 0x2f, 0x82, 0x20, 0x92, 0xf8, 0x43, 0xa4, 0x33, 0x93, 0xd4, 0x75, 0x93, - 0x26, 0xea, 0x29, 0xb3, 0xef, 0x7d, 0xef, 0xfb, 0xbe, 0x79, 0xf3, 0x11, 0x58, 0x91, 0x2a, 0xe1, - 0x2d, 0x46, 0x79, 0x18, 0x88, 0x24, 0x08, 0xdb, 0x8c, 0xee, 0x77, 0x59, 0x92, 0xfa, 0x9d, 0x44, - 0x28, 0x81, 0x97, 0x4c, 0xd7, 0x1f, 0x76, 0x9d, 0x4a, 0x0e, 0x3f, 0x3c, 0x99, 0x19, 0x67, 0x25, - 0x12, 0x22, 0x6a, 0x33, 0x1a, 0x74, 0x38, 0x0d, 0xe2, 0x58, 0xa8, 0x40, 0x71, 0x11, 0x4b, 0xdb, - 0x5d, 0x8c, 0x44, 0x24, 0xf4, 0x91, 0x9e, 0x9c, 0x4c, 0xd5, 0xa3, 0x80, 0xcf, 0x4f, 0x64, 0x9f, - 0x6a, 0xa2, 0x3a, 0xdb, 0xef, 0x32, 0xa9, 0x70, 0x19, 0xe6, 0xc2, 0xdd, 0x80, 0xc7, 0x0d, 0xde, - 0x2a, 0x93, 0x0a, 0x59, 0x9f, 0xaf, 0x97, 0xf4, 0xf7, 0xa3, 0x96, 0xf7, 0x10, 0x2e, 0x67, 0x06, - 0x64, 0x47, 0xc4, 0x92, 0xe1, 0x1d, 0x28, 0x1a, 0x2f, 0x1a, 0x7f, 0xa1, 0x5a, 0xf6, 0xff, 0xbc, - 0x80, 0x6f, 0x27, 0x2c, 0xce, 0x2b, 0xc3, 0x92, 0x26, 0xba, 0xdf, 0x6e, 0x9b, 0x8e, 0xb4, 0xea, - 0xde, 0x0e, 0x5c, 0xc9, 0x75, 0xac, 0xcc, 0x3d, 0x28, 0x99, 0x71, 0x59, 0x26, 0x95, 0x73, 0x67, - 0xe9, 0x6c, 0xcd, 0x1e, 0x7d, 0xbf, 0x56, 0xa8, 0x0f, 0xe0, 0x5e, 0x0d, 0x96, 0x0d, 0x69, 0xa8, - 0xf8, 0x01, 0xcb, 0x2a, 0xe2, 0x12, 0x14, 0x03, 0x5d, 0xd7, 0xee, 0xe7, 0xea, 0xf6, 0xcb, 0x7b, - 0x01, 0xce, 0xa8, 0xa1, 0xff, 0x36, 0xf3, 0xca, 0x2e, 0x71, 0x9b, 0xa9, 0x84, 0x87, 0x43, 0x1b, - 0x57, 0x01, 0xf6, 0x74, 0xa5, 0xf1, 0x9a, 0xa5, 0x76, 0xf1, 0xf3, 0xa6, 0xf2, 0x98, 0xa5, 0xb8, - 0x06, 0x17, 0x0d, 0x41, 0x63, 0xf8, 0x38, 0x33, 0x1a, 0xb3, 0x60, 0xca, 0x0f, 0xec, 0x13, 0x3d, - 0x83, 0xc5, 0x2c, 0xfb, 0xa9, 0x5f, 0x43, 0x76, 0x86, 0x5f, 0x33, 0x33, 0xf0, 0x6b, 0xe1, 0xd5, - 0x6f, 0xb3, 0x70, 0x5e, 0x53, 0xe2, 0x47, 0x02, 0x45, 0x73, 0x27, 0xbc, 0x9e, 0x9f, 0xce, 0x47, - 0xc9, 0x59, 0x9d, 0x80, 0x32, 0xde, 0xbc, 0xbb, 0xef, 0xbf, 0xfc, 0xfc, 0x34, 0xb3, 0x89, 0x94, - 0xee, 0x68, 0xf8, 0xc6, 0x93, 0xa0, 0x29, 0x69, 0x2e, 0xf2, 0xf6, 0xe7, 0xed, 0x60, 0x01, 0xef, - 0xf0, 0x90, 0x00, 0x9c, 0x06, 0x05, 0xd7, 0xc7, 0xc8, 0xe5, 0x52, 0xe6, 0xdc, 0x9c, 0x02, 0x69, - 0xcd, 0x6d, 0x68, 0x73, 0x37, 0x70, 0x75, 0x1a, 0x73, 0x12, 0x3f, 0x13, 0x58, 0xc8, 0x24, 0x06, - 0x6f, 0x8d, 0xd3, 0x1a, 0x11, 0x46, 0xe7, 0xf6, 0x74, 0xe0, 0x7f, 0x59, 0x9c, 0xa4, 0xcd, 0xb4, - 0x61, 0xb2, 0x8d, 0x1f, 0x08, 0x94, 0x6c, 0x42, 0x70, 0xdc, 0x23, 0x65, 0xf3, 0xe9, 0xac, 0x4d, - 0x82, 0xfd, 0xdd, 0xbe, 0x6c, 0xba, 0xb6, 0xb6, 0x8f, 0x7a, 0x2e, 0x39, 0xee, 0xb9, 0xe4, 0x47, - 0xcf, 0x25, 0x87, 0x7d, 0xb7, 0x70, 0xdc, 0x77, 0x0b, 0x5f, 0xfb, 0x6e, 0xe1, 0x65, 0x2d, 0xe2, - 0x6a, 0xb7, 0xdb, 0xf4, 0x43, 0xb1, 0x37, 0x8a, 0xea, 0x60, 0xb3, 0x4a, 0xdf, 0xfc, 0x46, 0xa8, - 0xd2, 0x0e, 0x93, 0xcd, 0xa2, 0xfe, 0x67, 0xab, 0xfd, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x45, - 0xd1, 0x48, 0x61, 0x05, 0x00, 0x00, + 0xff, 0x4c, 0x8f, 0x05, 0x2f, 0x82, 0x20, 0x92, 0xf8, 0x43, 0xa4, 0x33, 0x93, 0xad, 0xeb, 0x26, + 0x6d, 0xd4, 0x53, 0x66, 0xdf, 0xfb, 0xde, 0xf7, 0x7d, 0xf3, 0xe6, 0x23, 0xb0, 0x24, 0x55, 0xc2, + 0xdb, 0x8c, 0xf2, 0x30, 0x10, 0x49, 0x10, 0x76, 0x18, 0xdd, 0xeb, 0xb1, 0x24, 0xf5, 0xbb, 0x89, + 0x50, 0x02, 0x2f, 0x99, 0xae, 0x9f, 0x75, 0x9d, 0x5a, 0x01, 0x9f, 0x9d, 0xcc, 0x8c, 0xb3, 0x14, + 0x09, 0x11, 0x75, 0x18, 0x0d, 0xba, 0x9c, 0x06, 0x71, 0x2c, 0x54, 0xa0, 0xb8, 0x88, 0xa5, 0xed, + 0xce, 0x47, 0x22, 0x12, 0xfa, 0x48, 0x8f, 0x4f, 0xa6, 0xea, 0x51, 0xc0, 0xe7, 0xc7, 0xb2, 0x4f, + 0x35, 0x51, 0x83, 0xed, 0xf5, 0x98, 0x54, 0xb8, 0x08, 0x33, 0xe1, 0x4e, 0xc0, 0xe3, 0x26, 0x6f, + 0x57, 0x49, 0x8d, 0xac, 0xce, 0x36, 0x2a, 0xfa, 0xfb, 0x51, 0xdb, 0x7b, 0x08, 0x97, 0x73, 0x03, + 0xb2, 0x2b, 0x62, 0xc9, 0xf0, 0x0e, 0x94, 0x8d, 0x17, 0x8d, 0xbf, 0xb0, 0x51, 0xf5, 0xff, 0xbc, + 0x80, 0x6f, 0x27, 0x2c, 0xce, 0xab, 0xc2, 0x82, 0x26, 0xba, 0xdf, 0xe9, 0x98, 0x8e, 0xb4, 0xea, + 0xde, 0x36, 0x5c, 0x29, 0x74, 0xac, 0xcc, 0x3d, 0xa8, 0x98, 0x71, 0x59, 0x25, 0xb5, 0x73, 0xa7, + 0xe9, 0x6c, 0x4e, 0x1f, 0x7e, 0xbf, 0x56, 0x6a, 0x0c, 0xe1, 0x5e, 0x1d, 0x16, 0x0d, 0x69, 0xa8, + 0xf8, 0x3e, 0xcb, 0x2b, 0xe2, 0x02, 0x94, 0x03, 0x5d, 0xd7, 0xee, 0x67, 0x1a, 0xf6, 0xcb, 0x7b, + 0x01, 0xce, 0xa8, 0xa1, 0xff, 0x36, 0xf3, 0xca, 0x2e, 0x71, 0x8b, 0xa9, 0x84, 0x87, 0x99, 0x8d, + 0xab, 0x00, 0xbb, 0xba, 0xd2, 0x7c, 0xcd, 0x52, 0xbb, 0xf8, 0x59, 0x53, 0x79, 0xcc, 0x52, 0x5c, + 0x81, 0x8b, 0x86, 0xa0, 0x99, 0x3d, 0xce, 0x94, 0xc6, 0xcc, 0x99, 0xf2, 0x03, 0xfb, 0x44, 0xcf, + 0x60, 0x3e, 0xcf, 0x7e, 0xe2, 0xd7, 0x90, 0x9d, 0xe2, 0xd7, 0xcc, 0x0c, 0xfd, 0x5a, 0xf8, 0xc6, + 0xb7, 0x69, 0x38, 0xaf, 0x29, 0xf1, 0x23, 0x81, 0xb2, 0xb9, 0x13, 0x5e, 0x2f, 0x4e, 0x17, 0xa3, + 0xe4, 0x2c, 0x9f, 0x81, 0x32, 0xde, 0xbc, 0xbb, 0xef, 0xbf, 0xfc, 0xfc, 0x34, 0xb5, 0x8e, 0x94, + 0x6e, 0x6b, 0xf8, 0xda, 0x93, 0xa0, 0x25, 0x69, 0x21, 0xf2, 0xf6, 0xe7, 0xed, 0x70, 0x01, 0xef, + 0xf0, 0x80, 0x00, 0x9c, 0x04, 0x05, 0x57, 0xc7, 0xc8, 0x15, 0x52, 0xe6, 0xdc, 0x9c, 0x00, 0x69, + 0xcd, 0xad, 0x69, 0x73, 0x37, 0x70, 0x79, 0x12, 0x73, 0x12, 0x3f, 0x13, 0x98, 0xcb, 0x25, 0x06, + 0x6f, 0x8d, 0xd3, 0x1a, 0x11, 0x46, 0xe7, 0xf6, 0x64, 0xe0, 0x7f, 0x59, 0x9c, 0xa4, 0xad, 0xb4, + 0x69, 0xb2, 0x8d, 0x1f, 0x08, 0x54, 0x6c, 0x42, 0x70, 0xdc, 0x23, 0xe5, 0xf3, 0xe9, 0xac, 0x9c, + 0x05, 0xfb, 0xbb, 0x7d, 0xd9, 0x74, 0x6d, 0x6e, 0x1d, 0xf6, 0x5d, 0x72, 0xd4, 0x77, 0xc9, 0x8f, + 0xbe, 0x4b, 0x0e, 0x06, 0x6e, 0xe9, 0x68, 0xe0, 0x96, 0xbe, 0x0e, 0xdc, 0xd2, 0xcb, 0x7a, 0xc4, + 0xd5, 0x4e, 0xaf, 0xe5, 0x87, 0x62, 0x77, 0x14, 0xd5, 0xfe, 0x7a, 0x9d, 0xbe, 0xf9, 0x8d, 0x50, + 0xa5, 0x5d, 0x26, 0x5b, 0x65, 0xfd, 0xcf, 0x56, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x5e, + 0x5d, 0x26, 0x61, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go index f408a862de..680c2006bc 100644 --- a/x/icaoracle/types/tx.pb.go +++ b/x/icaoracle/types/tx.pb.go @@ -514,7 +514,7 @@ var fileDescriptor_6e58a377bb8520d3 = []byte{ // 592 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3d, 0x6f, 0xd3, 0x4e, 0x1c, 0xc7, 0xe3, 0x7f, 0xfe, 0x2a, 0xe4, 0x94, 0xd2, 0xd4, 0x54, 0x6d, 0x62, 0xc0, 0xb4, 0x46, - 0x84, 0x50, 0x29, 0x36, 0x4d, 0xc5, 0x83, 0xb2, 0xa5, 0x99, 0x22, 0x11, 0x21, 0x39, 0x4c, 0x08, + 0x84, 0x50, 0x29, 0x36, 0x6d, 0xc4, 0x83, 0xb2, 0xa5, 0x99, 0x22, 0x11, 0x21, 0x39, 0x4c, 0x08, 0x29, 0xba, 0xdc, 0x9d, 0x9c, 0x13, 0x8d, 0x2f, 0xf2, 0x5d, 0xa3, 0x76, 0x65, 0x64, 0x62, 0xe5, 0x1d, 0x20, 0xa6, 0x0e, 0xbc, 0x00, 0x46, 0xc6, 0x8a, 0x01, 0x31, 0xa2, 0x64, 0xe8, 0xc4, 0x7b, 0x40, 0x7e, 0x76, 0x1c, 0x97, 0x06, 0x21, 0x58, 0x12, 0xdd, 0xf7, 0xf7, 0xbd, 0xdf, 0x7d, 0x3f, @@ -522,33 +522,33 @@ var fileDescriptor_6e58a377bb8520d3 = []byte{ 0x63, 0x7d, 0xec, 0x30, 0xc1, 0xe4, 0x92, 0x5f, 0xd2, 0xa3, 0x92, 0x52, 0x41, 0x8c, 0x8f, 0x18, 0xef, 0x7b, 0x75, 0xc3, 0x1f, 0xf8, 0x66, 0x65, 0xcb, 0x1f, 0x19, 0x23, 0x6e, 0x19, 0x93, 0x3d, 0xf7, 0x2f, 0x28, 0xac, 0xc3, 0x11, 0xb5, 0x99, 0xe1, 0xfd, 0xfa, 0x92, 0xf6, 0x4e, 0x02, 0xc5, - 0x2e, 0xb7, 0x5a, 0x18, 0x3f, 0xf3, 0xfa, 0xca, 0x0d, 0x70, 0x05, 0x39, 0x04, 0x0a, 0xe6, 0x94, - 0xa5, 0x6d, 0xa9, 0x56, 0x38, 0x28, 0x7f, 0xf9, 0x58, 0xdf, 0x08, 0xfa, 0xb7, 0x30, 0x76, 0x08, - 0xe7, 0x3d, 0xe1, 0x50, 0xdb, 0x32, 0x43, 0xa3, 0x7c, 0x07, 0xac, 0x22, 0x66, 0xdb, 0x04, 0x09, - 0xca, 0xec, 0x3e, 0xc5, 0xe5, 0xff, 0xdc, 0x99, 0x66, 0x31, 0x16, 0x3b, 0xb8, 0xf9, 0xe0, 0xf5, - 0xf9, 0xe9, 0x6e, 0x38, 0xe5, 0xcd, 0xf9, 0xe9, 0xee, 0xed, 0x00, 0xf7, 0x38, 0x01, 0x9c, 0x8c, - 0xa2, 0x6d, 0x82, 0x8d, 0xe4, 0xd8, 0x24, 0x7c, 0xcc, 0x6c, 0x4e, 0xb4, 0xaf, 0x92, 0x57, 0xe8, - 0xd8, 0x5c, 0x40, 0x5b, 0x50, 0x28, 0xc8, 0x1f, 0x64, 0xaf, 0x82, 0x35, 0x7f, 0xed, 0x3e, 0x1a, - 0x42, 0x9a, 0x48, 0xbf, 0xea, 0xcb, 0x6d, 0x57, 0xed, 0x60, 0xb9, 0x06, 0x4a, 0x88, 0xd9, 0xc2, - 0x81, 0x48, 0xf4, 0x11, 0xc3, 0xc4, 0x35, 0xe6, 0xb7, 0xa5, 0xda, 0xff, 0xe6, 0xb5, 0x50, 0x6f, - 0x33, 0x4c, 0x3a, 0xb8, 0xf9, 0x24, 0x0d, 0x7a, 0x2f, 0x1b, 0x74, 0x21, 0xbf, 0xa6, 0x82, 0x9b, - 0x59, 0x7a, 0x04, 0xfe, 0x41, 0x02, 0xd7, 0xbb, 0xdc, 0x32, 0x09, 0x17, 0xcc, 0x09, 0x8a, 0x9d, - 0x76, 0xeb, 0x6f, 0x72, 0x37, 0x1f, 0xa7, 0x69, 0xaa, 0xd9, 0x34, 0xe9, 0x50, 0xda, 0x2d, 0x70, - 0x23, 0x43, 0x8e, 0x58, 0x3e, 0x49, 0x60, 0xad, 0xcb, 0xad, 0xe7, 0xcc, 0xb2, 0x0e, 0xc3, 0xfd, - 0x7b, 0x04, 0x0a, 0xf0, 0x48, 0x0c, 0x99, 0x43, 0xc5, 0xc9, 0xa5, 0x24, 0xb1, 0x75, 0xe9, 0x3d, - 0xdc, 0x04, 0x2b, 0x10, 0x09, 0x3a, 0x21, 0xde, 0xce, 0x5d, 0x35, 0x83, 0x51, 0xf3, 0xa1, 0xcb, - 0x18, 0xf7, 0x73, 0x29, 0xb5, 0x6c, 0xca, 0x64, 0x5c, 0xad, 0x02, 0xb6, 0x52, 0x52, 0x44, 0xf7, - 0xde, 0xa7, 0x33, 0xc9, 0x88, 0x4d, 0xfe, 0x11, 0xdd, 0x6f, 0x50, 0x24, 0x63, 0x05, 0x14, 0x49, - 0x29, 0xa4, 0x68, 0xfc, 0xc8, 0x83, 0x7c, 0x97, 0x5b, 0x72, 0x0f, 0x14, 0xe2, 0x07, 0x42, 0xd5, - 0xd3, 0x6f, 0x91, 0x9e, 0xbc, 0xa5, 0x4a, 0xf5, 0xd7, 0xf5, 0xb0, 0xb9, 0xfc, 0x0a, 0xac, 0x2f, - 0xde, 0xe0, 0xec, 0xc9, 0x0b, 0x3e, 0x45, 0x5f, 0xce, 0x17, 0x2d, 0x36, 0x04, 0xa5, 0x85, 0x5b, - 0x73, 0x37, 0xb3, 0x47, 0xda, 0xa6, 0xd4, 0x97, 0xb2, 0x45, 0x2b, 0xbd, 0x04, 0xc5, 0xb9, 0x33, - 0xbd, 0x93, 0x39, 0x3d, 0x69, 0x51, 0xee, 0x5f, 0x6a, 0x49, 0x76, 0x9f, 0x3b, 0x53, 0x3b, 0x17, - 0x84, 0x8b, 0x2d, 0x17, 0x74, 0xcf, 0xda, 0xef, 0x83, 0xee, 0xe7, 0xa9, 0x2a, 0x9d, 0x4d, 0x55, - 0xe9, 0xfb, 0x54, 0x95, 0xde, 0xce, 0xd4, 0xdc, 0xd9, 0x4c, 0xcd, 0x7d, 0x9b, 0xa9, 0xb9, 0x17, - 0xfb, 0x16, 0x15, 0xc3, 0xa3, 0x81, 0x8e, 0xd8, 0xc8, 0xe8, 0x79, 0xed, 0xea, 0x4f, 0xe1, 0x80, - 0x1b, 0xc1, 0xf9, 0x9a, 0xec, 0x35, 0xe6, 0xce, 0x98, 0x38, 0x19, 0x13, 0x3e, 0x58, 0xf1, 0x3e, - 0x31, 0xfb, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x73, 0x79, 0x08, 0xd8, 0x06, 0x00, 0x00, + 0x2e, 0xb7, 0x5a, 0x18, 0x3f, 0xf3, 0xfa, 0xca, 0xfb, 0xe0, 0x0a, 0x72, 0x08, 0x14, 0xcc, 0x29, + 0x4b, 0xdb, 0x52, 0xad, 0x70, 0x50, 0xfe, 0xf2, 0xb1, 0xbe, 0x11, 0xf4, 0x6f, 0x61, 0xec, 0x10, + 0xce, 0x7b, 0xc2, 0xa1, 0xb6, 0x65, 0x86, 0x46, 0xf9, 0x0e, 0x58, 0x45, 0xcc, 0xb6, 0x09, 0x12, + 0x94, 0xd9, 0x7d, 0x8a, 0xcb, 0xff, 0xb9, 0x33, 0xcd, 0x62, 0x2c, 0x76, 0x70, 0xf3, 0xc1, 0xeb, + 0xf3, 0xd3, 0xdd, 0x70, 0xca, 0x9b, 0xf3, 0xd3, 0xdd, 0xdb, 0x01, 0xee, 0x71, 0x02, 0x38, 0x19, + 0x45, 0xdb, 0x04, 0x1b, 0xc9, 0xb1, 0x49, 0xf8, 0x98, 0xd9, 0x9c, 0x68, 0x5f, 0x25, 0xaf, 0xd0, + 0xb1, 0xb9, 0x80, 0xb6, 0xa0, 0x50, 0x90, 0x3f, 0xc8, 0x5e, 0x05, 0x6b, 0xfe, 0xda, 0x7d, 0x34, + 0x84, 0x34, 0x91, 0x7e, 0xd5, 0x97, 0xdb, 0xae, 0xda, 0xc1, 0x72, 0x0d, 0x94, 0x10, 0xb3, 0x85, + 0x03, 0x91, 0xe8, 0x23, 0x86, 0x89, 0x6b, 0xcc, 0x6f, 0x4b, 0xb5, 0xff, 0xcd, 0x6b, 0xa1, 0xde, + 0x66, 0x98, 0x74, 0x70, 0xf3, 0x49, 0x1a, 0xf4, 0x5e, 0x36, 0xe8, 0x42, 0x7e, 0x4d, 0x05, 0x37, + 0xb3, 0xf4, 0x08, 0xfc, 0x83, 0x04, 0xae, 0x77, 0xb9, 0x65, 0x12, 0x2e, 0x98, 0x13, 0x14, 0x3b, + 0xed, 0xd6, 0xdf, 0xe4, 0x6e, 0x3e, 0x4e, 0xd3, 0x54, 0xb3, 0x69, 0xd2, 0xa1, 0xb4, 0x5b, 0xe0, + 0x46, 0x86, 0x1c, 0xb1, 0x7c, 0x92, 0xc0, 0x5a, 0x97, 0x5b, 0xcf, 0x99, 0x65, 0x1d, 0x86, 0xfb, + 0xf7, 0x08, 0x14, 0xe0, 0x91, 0x18, 0x32, 0x87, 0x8a, 0x93, 0x4b, 0x49, 0x62, 0xeb, 0xd2, 0x7b, + 0xb8, 0x09, 0x56, 0x20, 0x12, 0x74, 0x42, 0xbc, 0x9d, 0xbb, 0x6a, 0x06, 0xa3, 0xe6, 0x43, 0x97, + 0x31, 0xee, 0xe7, 0x52, 0x6a, 0xd9, 0x94, 0xc9, 0xb8, 0x5a, 0x05, 0x6c, 0xa5, 0xa4, 0x88, 0xee, + 0xbd, 0x4f, 0x67, 0x92, 0x11, 0x9b, 0xfc, 0x23, 0xba, 0xdf, 0xa0, 0x48, 0xc6, 0x0a, 0x28, 0x92, + 0x52, 0x48, 0xb1, 0xff, 0x23, 0x0f, 0xf2, 0x5d, 0x6e, 0xc9, 0x3d, 0x50, 0x88, 0x1f, 0x08, 0x55, + 0x4f, 0xbf, 0x45, 0x7a, 0xf2, 0x96, 0x2a, 0xd5, 0x5f, 0xd7, 0xc3, 0xe6, 0xf2, 0x2b, 0xb0, 0xbe, + 0x78, 0x83, 0xb3, 0x27, 0x2f, 0xf8, 0x14, 0x7d, 0x39, 0x5f, 0xb4, 0xd8, 0x10, 0x94, 0x16, 0x6e, + 0xcd, 0xdd, 0xcc, 0x1e, 0x69, 0x9b, 0x52, 0x5f, 0xca, 0x16, 0xad, 0xf4, 0x12, 0x14, 0xe7, 0xce, + 0xf4, 0x4e, 0xe6, 0xf4, 0xa4, 0x45, 0xb9, 0x7f, 0xa9, 0x25, 0xd9, 0x7d, 0xee, 0x4c, 0xed, 0x5c, + 0x10, 0x2e, 0xb6, 0x5c, 0xd0, 0x3d, 0x6b, 0xbf, 0x0f, 0xba, 0x9f, 0xa7, 0xaa, 0x74, 0x36, 0x55, + 0xa5, 0xef, 0x53, 0x55, 0x7a, 0x3b, 0x53, 0x73, 0x67, 0x33, 0x35, 0xf7, 0x6d, 0xa6, 0xe6, 0x5e, + 0x34, 0x2c, 0x2a, 0x86, 0x47, 0x03, 0x1d, 0xb1, 0x91, 0xd1, 0xf3, 0xda, 0xd5, 0x9f, 0xc2, 0x01, + 0x37, 0x82, 0xf3, 0x35, 0xd9, 0x6b, 0xcc, 0x9d, 0x31, 0x71, 0x32, 0x26, 0x7c, 0xb0, 0xe2, 0x7d, + 0x62, 0x1a, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x68, 0xf5, 0x66, 0xd8, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/client/cli/query.go b/x/interchainquery/client/cli/query.go index f87e59b611..782ac08678 100644 --- a/x/interchainquery/client/cli/query.go +++ b/x/interchainquery/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) // GetQueryCmd returns the cli query commands for this module. diff --git a/x/interchainquery/genesis.go b/x/interchainquery/genesis.go index a008848454..5fe7121727 100644 --- a/x/interchainquery/genesis.go +++ b/x/interchainquery/genesis.go @@ -3,8 +3,8 @@ package interchainquery import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/interchainquery/handler.go b/x/interchainquery/handler.go index 300eb1aef6..3d72e3cbd3 100644 --- a/x/interchainquery/handler.go +++ b/x/interchainquery/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) // NewHandler returns a handler for interchainquery module messages diff --git a/x/interchainquery/keeper/abci.go b/x/interchainquery/keeper/abci.go index 0da0e5e714..c7602d3c3f 100644 --- a/x/interchainquery/keeper/abci.go +++ b/x/interchainquery/keeper/abci.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) // EndBlocker of interchainquery module diff --git a/x/interchainquery/keeper/grpc_query.go b/x/interchainquery/keeper/grpc_query.go index f29c0c4f23..7909a1369d 100644 --- a/x/interchainquery/keeper/grpc_query.go +++ b/x/interchainquery/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) var _ types.QueryServiceServer = Keeper{} diff --git a/x/interchainquery/keeper/keeper.go b/x/interchainquery/keeper/keeper.go index cbf075f8f5..bec56f6293 100644 --- a/x/interchainquery/keeper/keeper.go +++ b/x/interchainquery/keeper/keeper.go @@ -14,8 +14,8 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) // Keeper of this module maintains collections of registered zones. diff --git a/x/interchainquery/keeper/keeper_test.go b/x/interchainquery/keeper/keeper_test.go index d502431395..791712e032 100644 --- a/x/interchainquery/keeper/keeper_test.go +++ b/x/interchainquery/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) type KeeperTestSuite struct { diff --git a/x/interchainquery/keeper/msg_server.go b/x/interchainquery/keeper/msg_server.go index c1cd022706..02e0cb850b 100644 --- a/x/interchainquery/keeper/msg_server.go +++ b/x/interchainquery/keeper/msg_server.go @@ -15,8 +15,8 @@ import ( ics23 "github.com/cosmos/ics23/go" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) type msgServer struct { diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index 69f40b714e..f55c8ae93f 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -10,7 +10,7 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) const ( diff --git a/x/interchainquery/keeper/new_query_test.go b/x/interchainquery/keeper/new_query_test.go index 45aa1e4b9b..71315f6850 100644 --- a/x/interchainquery/keeper/new_query_test.go +++ b/x/interchainquery/keeper/new_query_test.go @@ -3,7 +3,7 @@ package keeper_test import ( _ "github.com/stretchr/testify/suite" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) type NewQueryTestCase struct { diff --git a/x/interchainquery/keeper/queries.go b/x/interchainquery/keeper/queries.go index 1399306026..99082b6bb2 100644 --- a/x/interchainquery/keeper/queries.go +++ b/x/interchainquery/keeper/queries.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store/prefix" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) func GenerateQueryHash(connectionId string, chainId string, queryType string, request []byte, module string, callbackId string) string { diff --git a/x/interchainquery/keeper/queries_test.go b/x/interchainquery/keeper/queries_test.go index 29eb662fc7..5a62c99dce 100644 --- a/x/interchainquery/keeper/queries_test.go +++ b/x/interchainquery/keeper/queries_test.go @@ -8,8 +8,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) func TestUnmarshalAmountFromBalanceQuery(t *testing.T) { diff --git a/x/interchainquery/module.go b/x/interchainquery/module.go index 349e1ee26c..0286650d6c 100644 --- a/x/interchainquery/module.go +++ b/x/interchainquery/module.go @@ -19,10 +19,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/x/interchainquery/client/cli" - "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/interchainquery/client/cli" + "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) var ( diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index ebdb203f63..5d3333949d 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -238,7 +238,7 @@ var fileDescriptor_74cd646eb05658fd = []byte{ // 492 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x52, 0x41, 0x8b, 0xd3, 0x40, 0x14, 0xee, 0xb4, 0x5b, 0xdb, 0x4e, 0xb3, 0xb2, 0x0c, 0x7b, 0x48, 0x17, 0x4c, 0x63, 0x05, 0x2d, - 0x62, 0x13, 0xba, 0x9e, 0x04, 0x0f, 0x52, 0x04, 0x0d, 0x78, 0x58, 0x53, 0x4f, 0x5e, 0xc2, 0x34, + 0x62, 0x13, 0xea, 0x9e, 0x04, 0x0f, 0x52, 0x04, 0x0d, 0x78, 0x58, 0x53, 0x4f, 0x5e, 0xc2, 0x34, 0x19, 0xd2, 0x61, 0x93, 0x99, 0x6e, 0xe6, 0xa5, 0xd8, 0xdf, 0xe0, 0xc5, 0x1f, 0xe3, 0x8f, 0xd8, 0xe3, 0xe2, 0x49, 0x3c, 0x14, 0x69, 0xc1, 0x83, 0xbf, 0x42, 0x32, 0x93, 0xa2, 0xb8, 0x78, 0xf3, 0x94, 0x79, 0xef, 0x7b, 0xef, 0x7b, 0xef, 0x7b, 0xf9, 0xf0, 0x23, 0x05, 0x05, 0x4f, 0x98, 0xcf, @@ -261,12 +261,12 @@ var fileDescriptor_74cd646eb05658fd = []byte{ 0x98, 0x66, 0x87, 0x09, 0xad, 0xff, 0x30, 0xa1, 0xaf, 0x19, 0xeb, 0x01, 0x8f, 0x71, 0x7b, 0x4d, 0xb3, 0xd2, 0xdc, 0xda, 0x9a, 0x9d, 0xfe, 0xdc, 0x0e, 0x4f, 0x0a, 0xa6, 0xca, 0x0c, 0x9e, 0xc8, 0x9c, 0x03, 0xcb, 0x57, 0xb0, 0x09, 0x4d, 0xc9, 0xe8, 0x02, 0x5b, 0xaf, 0x8c, 0xa7, 0xe6, 0x40, - 0x81, 0x91, 0x17, 0xb8, 0x53, 0xfd, 0x1a, 0xce, 0x94, 0x8d, 0xdc, 0xd6, 0xb8, 0x7f, 0xee, 0x7a, - 0xff, 0x34, 0x99, 0xa7, 0xfd, 0x32, 0x3b, 0xaa, 0x36, 0x0f, 0x0f, 0x6d, 0xb3, 0xf9, 0xf5, 0xce, - 0x41, 0x37, 0x3b, 0x07, 0x7d, 0xdf, 0x39, 0xe8, 0xd3, 0xde, 0x69, 0xdc, 0xec, 0x9d, 0xc6, 0xd7, - 0xbd, 0xd3, 0x78, 0xff, 0xec, 0x0f, 0x69, 0x73, 0x4d, 0x3a, 0x79, 0x43, 0x17, 0xca, 0xaf, 0xed, - 0xbe, 0x9e, 0x9e, 0xfb, 0x1f, 0x6e, 0x99, 0x5e, 0x2b, 0x5e, 0xdc, 0xd1, 0x26, 0x7d, 0xfa, 0x2b, - 0x00, 0x00, 0xff, 0xff, 0x89, 0x76, 0x91, 0x6c, 0x1b, 0x03, 0x00, 0x00, + 0x81, 0x91, 0x17, 0xb8, 0x53, 0xfd, 0x1a, 0xce, 0x94, 0x8d, 0xdc, 0xd6, 0xb8, 0xff, 0xd4, 0xf5, + 0xfe, 0x69, 0x32, 0x4f, 0xfb, 0x65, 0x76, 0x54, 0x6d, 0x1e, 0x1e, 0xda, 0x66, 0xf3, 0xeb, 0x9d, + 0x83, 0x6e, 0x76, 0x0e, 0xfa, 0xbe, 0x73, 0xd0, 0xa7, 0xbd, 0xd3, 0xb8, 0xd9, 0x3b, 0x8d, 0xaf, + 0x7b, 0xa7, 0xf1, 0xfe, 0xd9, 0x1f, 0xd2, 0xe6, 0x9a, 0x74, 0xf2, 0x86, 0x2e, 0x94, 0x5f, 0xdb, + 0x7d, 0x3d, 0x3d, 0xf7, 0x3f, 0xdc, 0x32, 0xbd, 0x56, 0xbc, 0xb8, 0xa3, 0x4d, 0x7a, 0xfe, 0x2b, + 0x00, 0x00, 0xff, 0xff, 0x7a, 0xe6, 0x63, 0x5a, 0x1b, 0x03, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { diff --git a/x/interchainquery/types/messages.pb.go b/x/interchainquery/types/messages.pb.go index b861ddd50d..53952d4dc5 100644 --- a/x/interchainquery/types/messages.pb.go +++ b/x/interchainquery/types/messages.pb.go @@ -122,39 +122,39 @@ func init() { } var fileDescriptor_25adad4f8ed32400 = []byte{ - // 510 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xbf, 0x8f, 0xd3, 0x30, - 0x14, 0xc7, 0xeb, 0x16, 0x7a, 0x77, 0xb9, 0x22, 0x20, 0x57, 0xa1, 0x5c, 0x81, 0xa4, 0xf2, 0x42, - 0x41, 0x9c, 0xad, 0x94, 0xe9, 0xca, 0x44, 0xb7, 0x93, 0x38, 0x7e, 0xa4, 0x1b, 0x4b, 0x95, 0x36, - 0x3e, 0xd7, 0x52, 0x13, 0x07, 0xdb, 0xad, 0xae, 0x2b, 0x13, 0x23, 0x12, 0x0b, 0x63, 0xff, 0x08, - 0x24, 0x46, 0x56, 0xc6, 0x13, 0x2c, 0x4c, 0x15, 0x6a, 0x19, 0x60, 0xed, 0x5f, 0x80, 0x62, 0x27, - 0x80, 0xee, 0xca, 0xc0, 0xe4, 0x97, 0xf7, 0xfd, 0xbc, 0x5f, 0xf1, 0xb3, 0xd5, 0x92, 0x4a, 0xb0, - 0x88, 0x60, 0x96, 0x28, 0x22, 0x86, 0xa3, 0x90, 0x25, 0x2f, 0x27, 0x44, 0xcc, 0xf0, 0xd4, 0xc7, - 0x31, 0x91, 0x32, 0xa4, 0x44, 0xa2, 0x54, 0x70, 0xc5, 0xed, 0x7d, 0x43, 0xa2, 0x73, 0x24, 0x9a, - 0xfa, 0x8d, 0x3a, 0xe5, 0x94, 0x6b, 0x0a, 0x67, 0x96, 0x09, 0x68, 0xec, 0x0f, 0xb9, 0x8c, 0xb9, - 0xec, 0x1b, 0xc1, 0x7c, 0xe4, 0xd2, 0x2d, 0xca, 0x39, 0x1d, 0x13, 0x1c, 0xa6, 0x0c, 0x87, 0x49, - 0xc2, 0x55, 0xa8, 0x18, 0x4f, 0x0a, 0xf5, 0xb6, 0x22, 0x49, 0x44, 0x44, 0xcc, 0x12, 0x85, 0x87, - 0x62, 0x96, 0x2a, 0x8e, 0x53, 0xc1, 0xf9, 0x89, 0x91, 0xe1, 0xcf, 0xb2, 0x75, 0xe3, 0x58, 0xd2, - 0xde, 0x64, 0x10, 0x33, 0xf5, 0x3c, 0xeb, 0x21, 0x20, 0x32, 0xe5, 0x89, 0x24, 0x36, 0xb2, 0xb6, - 0x75, 0x67, 0x7d, 0x16, 0x39, 0xa0, 0x09, 0x5a, 0x3b, 0xdd, 0xbd, 0xf5, 0xc2, 0xbb, 0x3a, 0x0b, - 0xe3, 0x71, 0x07, 0x16, 0x0a, 0x0c, 0xb6, 0xb4, 0x79, 0x14, 0x65, 0xbc, 0x1e, 0x22, 0xe3, 0xcb, - 0xe7, 0xf9, 0x42, 0x81, 0xc1, 0x96, 0x36, 0x8f, 0x22, 0xfb, 0xae, 0x55, 0x15, 0x44, 0x4e, 0xc6, - 0xca, 0xa9, 0x34, 0x41, 0xab, 0xd6, 0xbd, 0xbe, 0x5e, 0x78, 0x57, 0x0c, 0x6d, 0xfc, 0x30, 0xc8, - 0x01, 0xfb, 0x89, 0xb5, 0xa3, 0x9b, 0xee, 0xf3, 0x54, 0x3a, 0x97, 0x9a, 0xa0, 0xb5, 0xdb, 0xbe, - 0x89, 0xfe, 0x0c, 0x86, 0xcc, 0x60, 0xe8, 0x59, 0xc6, 0x3c, 0x4d, 0x65, 0xb7, 0xbe, 0x5e, 0x78, - 0xd7, 0x4c, 0xaa, 0xdf, 0x71, 0x30, 0xd8, 0x4e, 0x73, 0x3d, 0x2b, 0x3d, 0x22, 0x8c, 0x8e, 0x94, - 0x73, 0xb9, 0x09, 0x5a, 0x95, 0xbf, 0x4b, 0x1b, 0x3f, 0x0c, 0x72, 0xc0, 0x7e, 0x68, 0xd5, 0x4e, - 0x04, 0x8f, 0xfb, 0x61, 0x14, 0x09, 0x22, 0xa5, 0x53, 0xd5, 0x93, 0x39, 0x9f, 0xdf, 0x1f, 0xd4, - 0xf3, 0x5b, 0x78, 0x64, 0x94, 0x9e, 0x12, 0x2c, 0xa1, 0xc1, 0x6e, 0x46, 0xe7, 0xae, 0x4e, 0xed, - 0xf5, 0xdc, 0x2b, 0xbd, 0x9b, 0x7b, 0xe0, 0xc7, 0xdc, 0x2b, 0xc1, 0xa6, 0xe5, 0x6e, 0xfe, 0xd5, - 0xc5, 0xd9, 0xfe, 0x08, 0xac, 0xca, 0xb1, 0xa4, 0xf6, 0x07, 0x60, 0xed, 0x6d, 0xba, 0x12, 0x1f, - 0xfd, 0x73, 0x6f, 0xd0, 0xe6, 0xd4, 0x8d, 0xc3, 0xff, 0x0e, 0x29, 0x4e, 0xd8, 0x7e, 0xf5, 0xe5, - 0xfb, 0xdb, 0xf2, 0xfd, 0x0e, 0xb8, 0x07, 0xef, 0x5c, 0xd8, 0x69, 0x75, 0x8a, 0xa7, 0xfe, 0x80, - 0xa8, 0xd0, 0xc7, 0x52, 0xe7, 0xd0, 0xee, 0x6e, 0xef, 0xd3, 0xd2, 0x05, 0x67, 0x4b, 0x17, 0x7c, - 0x5b, 0xba, 0xe0, 0xcd, 0xca, 0x2d, 0x9d, 0xad, 0xdc, 0xd2, 0xd7, 0x95, 0x5b, 0x7a, 0x71, 0x48, - 0x99, 0x1a, 0x4d, 0x06, 0x68, 0xc8, 0x63, 0xdc, 0xd3, 0x2d, 0x1d, 0x3c, 0x0e, 0x07, 0x12, 0xe7, - 0x6f, 0x66, 0xea, 0xb7, 0xf1, 0xe9, 0xc5, 0x2a, 0xb3, 0x94, 0xc8, 0x41, 0x55, 0xef, 0xea, 0x83, - 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x01, 0xf9, 0xf8, 0x60, 0x03, 0x00, 0x00, + // 512 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x6f, 0xd3, 0x4e, + 0x18, 0xc7, 0x73, 0xc9, 0xef, 0x97, 0xb6, 0x6e, 0x10, 0xe0, 0x46, 0xc8, 0x0d, 0x60, 0x47, 0xb7, + 0x10, 0x10, 0xbd, 0x93, 0xd3, 0xa9, 0x61, 0x22, 0x5b, 0x25, 0xca, 0x1f, 0x67, 0x63, 0x89, 0x9c, + 0xf8, 0x7a, 0x39, 0x29, 0xf6, 0x99, 0xbb, 0x4b, 0xd4, 0xac, 0x4c, 0x8c, 0x48, 0x2c, 0x8c, 0x79, + 0x11, 0x48, 0x8c, 0xac, 0x8c, 0x15, 0x2c, 0x4c, 0x11, 0x4a, 0x18, 0x60, 0xcd, 0x2b, 0x40, 0xbe, + 0xb3, 0x01, 0xb5, 0x61, 0x60, 0xba, 0xc7, 0xcf, 0xf7, 0xf3, 0xfc, 0xf3, 0x3d, 0x67, 0xb5, 0xa4, + 0x12, 0x2c, 0x22, 0x98, 0x25, 0x8a, 0x88, 0xe1, 0x28, 0x64, 0xc9, 0x8b, 0x09, 0x11, 0x33, 0x3c, + 0xf5, 0x71, 0x4c, 0xa4, 0x0c, 0x29, 0x91, 0x28, 0x15, 0x5c, 0x71, 0x7b, 0xdf, 0x90, 0xe8, 0x02, + 0x89, 0xa6, 0x7e, 0xa3, 0x4e, 0x39, 0xe5, 0x9a, 0xc2, 0x99, 0x65, 0x02, 0x1a, 0xfb, 0x43, 0x2e, + 0x63, 0x2e, 0xfb, 0x46, 0x30, 0x1f, 0xb9, 0x74, 0x8b, 0x72, 0x4e, 0xc7, 0x04, 0x87, 0x29, 0xc3, + 0x61, 0x92, 0x70, 0x15, 0x2a, 0xc6, 0x93, 0x42, 0xbd, 0xad, 0x48, 0x12, 0x11, 0x11, 0xb3, 0x44, + 0xe1, 0xa1, 0x98, 0xa5, 0x8a, 0xe3, 0x54, 0x70, 0x7e, 0x6a, 0x64, 0xf8, 0xa3, 0x6c, 0xdd, 0x38, + 0x91, 0xb4, 0x37, 0x19, 0xc4, 0x4c, 0x3d, 0xcb, 0x7a, 0x08, 0x88, 0x4c, 0x79, 0x22, 0x89, 0x8d, + 0xac, 0x6d, 0xdd, 0x59, 0x9f, 0x45, 0x0e, 0x68, 0x82, 0xd6, 0x4e, 0x77, 0x6f, 0xbd, 0xf0, 0xae, + 0xce, 0xc2, 0x78, 0xdc, 0x81, 0x85, 0x02, 0x83, 0x2d, 0x6d, 0x1e, 0x47, 0x19, 0xaf, 0x87, 0xc8, + 0xf8, 0xf2, 0x45, 0xbe, 0x50, 0x60, 0xb0, 0xa5, 0xcd, 0xe3, 0xc8, 0xbe, 0x6b, 0x55, 0x05, 0x91, + 0x93, 0xb1, 0x72, 0x2a, 0x4d, 0xd0, 0xaa, 0x75, 0xaf, 0xaf, 0x17, 0xde, 0x15, 0x43, 0x1b, 0x3f, + 0x0c, 0x72, 0xc0, 0x7e, 0x6c, 0xed, 0xe8, 0xa6, 0xfb, 0x3c, 0x95, 0xce, 0x7f, 0x4d, 0xd0, 0xda, + 0x6d, 0xdf, 0x44, 0xbf, 0x07, 0x43, 0x66, 0x30, 0xf4, 0x34, 0x63, 0x9e, 0xa4, 0xb2, 0x5b, 0x5f, + 0x2f, 0xbc, 0x6b, 0x26, 0xd5, 0xaf, 0x38, 0x18, 0x6c, 0xa7, 0xb9, 0x9e, 0x95, 0x1e, 0x11, 0x46, + 0x47, 0xca, 0xf9, 0xbf, 0x09, 0x5a, 0x95, 0x3f, 0x4b, 0x1b, 0x3f, 0x0c, 0x72, 0xc0, 0x7e, 0x60, + 0xd5, 0x4e, 0x05, 0x8f, 0xfb, 0x61, 0x14, 0x09, 0x22, 0xa5, 0x53, 0xd5, 0x93, 0x39, 0x9f, 0xde, + 0x1d, 0xd4, 0xf3, 0x5b, 0x78, 0x68, 0x94, 0x9e, 0x12, 0x2c, 0xa1, 0xc1, 0x6e, 0x46, 0xe7, 0xae, + 0x4e, 0xed, 0xd5, 0xdc, 0x2b, 0xbd, 0x9d, 0x7b, 0xe0, 0xfb, 0xdc, 0x2b, 0xc1, 0xa6, 0xe5, 0x6e, + 0xfe, 0xd5, 0xc5, 0xd9, 0xfe, 0x00, 0xac, 0xca, 0x89, 0xa4, 0xf6, 0x7b, 0x60, 0xed, 0x6d, 0xba, + 0x12, 0x1f, 0xfd, 0x75, 0x6f, 0xd0, 0xe6, 0xd4, 0x8d, 0xa3, 0x7f, 0x0e, 0x29, 0x4e, 0xd8, 0x7e, + 0xf9, 0xf9, 0xdb, 0x9b, 0xf2, 0xfd, 0x0e, 0xb8, 0x07, 0xef, 0x5c, 0xda, 0x69, 0x75, 0x86, 0xa7, + 0xfe, 0x80, 0xa8, 0xd0, 0xc7, 0x52, 0xe7, 0xd0, 0xee, 0x6e, 0xef, 0xe3, 0xd2, 0x05, 0xe7, 0x4b, + 0x17, 0x7c, 0x5d, 0xba, 0xe0, 0xf5, 0xca, 0x2d, 0x9d, 0xaf, 0xdc, 0xd2, 0x97, 0x95, 0x5b, 0x7a, + 0x7e, 0x44, 0x99, 0x1a, 0x4d, 0x06, 0x68, 0xc8, 0x63, 0xdc, 0xd3, 0x2d, 0x1d, 0x3c, 0x0a, 0x07, + 0x12, 0xe7, 0x6f, 0x66, 0xea, 0x1f, 0xe2, 0xb3, 0xcb, 0x55, 0x66, 0x29, 0x91, 0x83, 0xaa, 0xde, + 0xd5, 0xc3, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x78, 0x91, 0x0b, 0xce, 0x60, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/types/query.pb.go b/x/interchainquery/types/query.pb.go index 91d9b4806e..8e7948c0e3 100644 --- a/x/interchainquery/types/query.pb.go +++ b/x/interchainquery/types/query.pb.go @@ -137,9 +137,9 @@ var fileDescriptor_b720c147b9144d5b = []byte{ 0x85, 0x8c, 0xf5, 0x83, 0xc1, 0xfa, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0x71, 0x44, 0x09, 0x5a, 0x68, 0x38, 0x05, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x65, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x8d, 0xf4, 0x2b, + 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x8d, 0xf5, 0x2b, 0x30, 0x8c, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xc7, 0x9c, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0xf2, 0x2e, 0xe0, 0x29, 0x5a, 0x02, 0x00, 0x00, + 0xff, 0xff, 0x01, 0xbe, 0x12, 0x1f, 0x5a, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index 35e18eaa54..3f3cd646de 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -11,8 +11,8 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" - "github.com/Stride-Labs/stride/v12/x/mint/client/cli" + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/x/mint/client/cli" "github.com/cosmos/cosmos-sdk/client/flags" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go index 255158ec51..e9824bd6a8 100644 --- a/x/mint/client/cli/query.go +++ b/x/mint/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/mint/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index 5b1ea762c5..807ef60fda 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -14,8 +14,8 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/app" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" "github.com/cosmos/cosmos-sdk/testutil/network" ) diff --git a/x/mint/genesis.go b/x/mint/genesis.go index 2cd45da162..85234ea2da 100644 --- a/x/mint/genesis.go +++ b/x/mint/genesis.go @@ -3,8 +3,8 @@ package mint import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/mint/keeper" - "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/mint/keeper" + "github.com/Stride-Labs/stride/v13/x/mint/types" ) // InitGenesis new mint genesis. diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go index 79cb1ac549..b86ec98da4 100644 --- a/x/mint/keeper/grpc_query.go +++ b/x/mint/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/mint/types" ) var _ types.QueryServer = Querier{} diff --git a/x/mint/keeper/hooks.go b/x/mint/keeper/hooks.go index 0c5ebc40e2..a4e6ccd8ef 100644 --- a/x/mint/keeper/hooks.go +++ b/x/mint/keeper/hooks.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - "github.com/Stride-Labs/stride/v12/x/mint/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/mint/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go index f777a72160..0077a599f5 100644 --- a/x/mint/keeper/keeper.go +++ b/x/mint/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v12/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/mint/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/x/mint/module.go b/x/mint/module.go index 5d6cca028c..0805741e6a 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -17,11 +17,11 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/mint/client/cli" - "github.com/Stride-Labs/stride/v12/x/mint/keeper" + "github.com/Stride-Labs/stride/v13/x/mint/client/cli" + "github.com/Stride-Labs/stride/v13/x/mint/keeper" - //"github.com/Stride-Labs/stride/v12/x/mint/simulation" - "github.com/Stride-Labs/stride/v12/x/mint/types" + //"github.com/Stride-Labs/stride/v13/x/mint/simulation" + "github.com/Stride-Labs/stride/v13/x/mint/types" ) var ( diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index 3a5d4271e1..69daf937fd 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -1,7 +1,7 @@ package types // noalias import ( - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/x/mint/types/genesis.pb.go b/x/mint/types/genesis.pb.go index fd5e9e1de8..7b93a093b3 100644 --- a/x/mint/types/genesis.pb.go +++ b/x/mint/types/genesis.pb.go @@ -97,22 +97,22 @@ var fileDescriptor_f4521d63f51851f3 = []byte{ // 283 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x31, 0x4e, 0xc3, 0x30, 0x14, 0x40, 0x63, 0x8a, 0x3a, 0x04, 0xa6, 0x00, 0x22, 0x2a, 0x92, 0x5b, 0x32, 0x75, 0xc1, 0x56, - 0xca, 0x04, 0x63, 0x24, 0x04, 0x03, 0x48, 0xa8, 0xd9, 0xba, 0x54, 0x4e, 0x62, 0xa5, 0x91, 0x48, + 0xe8, 0x04, 0x63, 0x24, 0x04, 0x03, 0x48, 0xa8, 0xd9, 0xba, 0x54, 0x4e, 0x62, 0xa5, 0x91, 0x48, 0x1c, 0xd9, 0xbf, 0x15, 0xbd, 0x05, 0xc7, 0xea, 0xd8, 0x91, 0xa9, 0xaa, 0x92, 0x1b, 0x70, 0x02, 0x64, 0x3b, 0x30, 0x15, 0x36, 0xcb, 0xef, 0xbd, 0x6f, 0xeb, 0xbb, 0xd7, 0x0a, 0x64, 0x91, 0x71, 0x5a, 0x16, 0x15, 0xd0, 0x55, 0x98, 0x70, 0x60, 0x21, 0xcd, 0x79, 0xc5, 0x55, 0xa1, 0x48, 0x2d, 0x05, 0x08, 0xef, 0xcc, 0x2a, 0x44, 0x2b, 0xa4, 0x53, 0x06, 0xe7, 0xb9, 0xc8, 0x85, 0xe1, 0x54, 0x9f, 0xac, 0x3a, 0xc0, 0x87, 0xa6, 0x99, 0xce, 0xf0, 0x60, 0x8f, 0xdc, 0xd3, 0x47, 0x3b, 0x3c, - 0x06, 0x06, 0xdc, 0xbb, 0x73, 0xfb, 0x1a, 0x73, 0xe9, 0xa3, 0x11, 0x1a, 0x9f, 0x4c, 0xae, 0xc8, - 0x81, 0xc7, 0xc8, 0x8b, 0x51, 0xa2, 0xe3, 0xcd, 0x6e, 0xe8, 0x4c, 0xbb, 0x40, 0xa7, 0x35, 0x93, - 0xac, 0x54, 0xfe, 0xd1, 0x3f, 0xe9, 0xab, 0x51, 0x7e, 0x52, 0x1b, 0x78, 0x33, 0xf7, 0x52, 0xf2, - 0x6c, 0x99, 0x42, 0x21, 0xaa, 0xb9, 0x02, 0x26, 0x81, 0x67, 0x73, 0x5e, 0x8b, 0x74, 0xe1, 0xf7, - 0x46, 0x68, 0xdc, 0x8b, 0x82, 0xaf, 0xdd, 0x10, 0xaf, 0x59, 0xf9, 0x76, 0x1f, 0xfc, 0x21, 0x06, - 0xd3, 0x8b, 0x5f, 0x12, 0x5b, 0xf0, 0xa0, 0xef, 0xa3, 0xa7, 0x4d, 0x83, 0xd1, 0xb6, 0xc1, 0x68, - 0xdf, 0x60, 0xf4, 0xd1, 0x62, 0x67, 0xdb, 0x62, 0xe7, 0xb3, 0xc5, 0xce, 0x8c, 0xe4, 0x05, 0x2c, - 0x96, 0x09, 0x49, 0x45, 0x49, 0x63, 0xf3, 0xd5, 0x9b, 0x67, 0x96, 0x28, 0xda, 0xed, 0x6c, 0x15, - 0x4e, 0xe8, 0xbb, 0xdd, 0x1c, 0xac, 0x6b, 0xae, 0x92, 0xbe, 0xd9, 0xd9, 0xed, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x98, 0x69, 0xcc, 0xad, 0xa3, 0x01, 0x00, 0x00, + 0x06, 0x06, 0xdc, 0xbb, 0x73, 0xfb, 0x1a, 0x73, 0xe9, 0xa3, 0x11, 0x1a, 0x9f, 0xdc, 0x5e, 0x91, + 0x03, 0x8f, 0x91, 0x17, 0xa3, 0x44, 0xc7, 0x9b, 0xdd, 0xd0, 0x99, 0x76, 0x81, 0x4e, 0x6b, 0x26, + 0x59, 0xa9, 0xfc, 0xa3, 0x7f, 0xd2, 0x57, 0xa3, 0xfc, 0xa4, 0x36, 0xf0, 0x66, 0xee, 0xa5, 0xe4, + 0xd9, 0x32, 0x85, 0x42, 0x54, 0x73, 0x05, 0x4c, 0x02, 0xcf, 0xe6, 0xbc, 0x16, 0xe9, 0xc2, 0xef, + 0x8d, 0xd0, 0xb8, 0x17, 0x05, 0x5f, 0xbb, 0x21, 0x5e, 0xb3, 0xf2, 0xed, 0x3e, 0xf8, 0x43, 0x0c, + 0xa6, 0x17, 0xbf, 0x24, 0xb6, 0xe0, 0x41, 0xdf, 0x47, 0x4f, 0x9b, 0x06, 0xa3, 0x6d, 0x83, 0xd1, + 0xbe, 0xc1, 0xe8, 0xa3, 0xc5, 0xce, 0xb6, 0xc5, 0xce, 0x67, 0x8b, 0x9d, 0x19, 0xc9, 0x0b, 0x58, + 0x2c, 0x13, 0x92, 0x8a, 0x92, 0xc6, 0xe6, 0xab, 0x37, 0xcf, 0x2c, 0x51, 0xb4, 0xdb, 0xd9, 0x2a, + 0x9c, 0xd0, 0x77, 0xbb, 0x39, 0x58, 0xd7, 0x5c, 0x25, 0x7d, 0xb3, 0xb3, 0xc9, 0x77, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x58, 0x0d, 0xe4, 0xba, 0xa3, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index e96aa174af..8039561cb8 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -206,47 +206,47 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/mint.proto", fileDescriptor_5ad5fa4b1fdb702f) } var fileDescriptor_5ad5fa4b1fdb702f = []byte{ - // 634 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, - 0x14, 0x8d, 0xbf, 0xb6, 0xa9, 0x3a, 0x9f, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, - 0xba, 0xa0, 0xb6, 0xda, 0xee, 0xba, 0x42, 0x51, 0x69, 0x89, 0x04, 0x52, 0x70, 0x76, 0xdd, 0x58, - 0xfe, 0x99, 0x3a, 0xa3, 0xc6, 0x33, 0xd6, 0xcc, 0x38, 0x25, 0x42, 0xe2, 0x05, 0xca, 0x82, 0x25, - 0x4b, 0x1e, 0xa7, 0xcb, 0x2e, 0x51, 0x17, 0x11, 0x4a, 0xde, 0x20, 0x1b, 0xb6, 0x68, 0x66, 0x9c, - 0x5f, 0x88, 0x44, 0x44, 0x57, 0xf1, 0x9c, 0x7b, 0xe7, 0x9e, 0x93, 0x33, 0xf7, 0x5e, 0x60, 0x32, - 0x4e, 0x51, 0x0c, 0xdd, 0x14, 0x61, 0xee, 0xb6, 0x0f, 0x42, 0xc8, 0x83, 0x03, 0x79, 0x70, 0x32, - 0x4a, 0x38, 0xd1, 0x37, 0x55, 0xdc, 0x91, 0x50, 0x11, 0xdf, 0x7e, 0x94, 0x90, 0x84, 0xc8, 0xb8, - 0x2b, 0xbe, 0x54, 0xaa, 0xfd, 0x09, 0x94, 0xdf, 0x21, 0xcc, 0x21, 0xd5, 0x39, 0xd8, 0x80, 0x19, - 0x89, 0x9a, 0x7e, 0x46, 0x49, 0x1b, 0x31, 0x44, 0x30, 0x33, 0xb4, 0x5d, 0x6d, 0x6f, 0xad, 0x5a, - 0xbb, 0xe9, 0x5a, 0xa5, 0xbb, 0xae, 0xf5, 0x22, 0x41, 0xbc, 0x99, 0x87, 0x4e, 0x44, 0x52, 0x37, - 0x22, 0x2c, 0x25, 0xac, 0xf8, 0xd9, 0x67, 0xf1, 0xa5, 0xcb, 0x3b, 0x19, 0x64, 0xce, 0x09, 0x8c, - 0x06, 0x5d, 0xab, 0xd2, 0x09, 0xd2, 0xd6, 0xb1, 0x3d, 0x5b, 0xcf, 0xf6, 0xd6, 0x25, 0x54, 0x1f, - 0x23, 0x3f, 0x97, 0x40, 0xe5, 0x04, 0x09, 0xbd, 0x61, 0xce, 0x11, 0xc1, 0x75, 0x4a, 0x32, 0x42, - 0xc5, 0x17, 0xd3, 0xcf, 0xc1, 0x2a, 0xe3, 0xc1, 0x25, 0xc2, 0x49, 0x21, 0xe4, 0xd5, 0xc2, 0x42, - 0x1e, 0x28, 0x21, 0x45, 0x19, 0xdb, 0x1b, 0x16, 0xd4, 0x3f, 0x82, 0xad, 0x88, 0xa4, 0x69, 0x8e, - 0x11, 0xef, 0xf8, 0x19, 0x21, 0x2d, 0x3f, 0xa1, 0xe4, 0x8a, 0x37, 0x8d, 0xff, 0x24, 0xd3, 0xd9, - 0xc2, 0x4c, 0x5b, 0x8a, 0x69, 0xba, 0xa8, 0xed, 0x6d, 0x8e, 0x80, 0x3a, 0x21, 0xad, 0x33, 0xc9, - 0xa1, 0x7f, 0xd6, 0x80, 0x39, 0xc3, 0xce, 0x60, 0x94, 0x53, 0x71, 0x0a, 0xf3, 0x38, 0x81, 0xdc, - 0x58, 0xba, 0x5f, 0x19, 0x3b, 0x53, 0x32, 0x1a, 0x05, 0x59, 0x55, 0x72, 0xe9, 0x1c, 0x3c, 0x64, - 0x9c, 0x06, 0x1c, 0x26, 0x28, 0xf2, 0x29, 0x64, 0x90, 0xb6, 0xa1, 0xb1, 0x7c, 0xbf, 0x02, 0x36, - 0x46, 0x0c, 0x9e, 0x22, 0xb0, 0xef, 0x56, 0x40, 0xb9, 0x1e, 0xd0, 0x20, 0x65, 0xfa, 0x13, 0x00, - 0x44, 0xab, 0xfa, 0x31, 0xc4, 0x24, 0x55, 0x6f, 0xed, 0xad, 0x09, 0xe4, 0x44, 0x00, 0xfa, 0xb5, - 0x06, 0x8c, 0x04, 0x62, 0xc8, 0x10, 0xf3, 0x7f, 0x6b, 0x51, 0xf5, 0x5e, 0xef, 0x17, 0xd6, 0x69, - 0x29, 0x9d, 0xf3, 0xea, 0xda, 0xde, 0xe3, 0x22, 0xf4, 0x7a, 0xba, 0x63, 0xf5, 0xd3, 0xe1, 0x9c, - 0xa0, 0x18, 0x62, 0x8e, 0x2e, 0x10, 0xa4, 0xc5, 0x6b, 0xed, 0xcc, 0x76, 0xfe, 0x38, 0x63, 0xd8, - 0xf9, 0xb5, 0x11, 0xa2, 0x87, 0x60, 0x9b, 0xc2, 0x38, 0x8f, 0x44, 0xaf, 0xfb, 0x19, 0xa4, 0x88, - 0xc4, 0x3e, 0xc2, 0x4a, 0x08, 0x93, 0xf6, 0x2f, 0x55, 0x9f, 0x0f, 0xba, 0xd6, 0x53, 0x55, 0x71, - 0x7e, 0xae, 0xed, 0x55, 0x46, 0xc1, 0xba, 0x8c, 0xd5, 0xb0, 0x14, 0xcd, 0xc4, 0x4c, 0x8f, 0xef, - 0x5d, 0x04, 0x11, 0x27, 0xd4, 0x58, 0xf9, 0xb7, 0x99, 0x9e, 0xad, 0x67, 0x7b, 0xeb, 0x23, 0xe8, - 0x54, 0x22, 0x7a, 0x0a, 0x8c, 0x78, 0x62, 0xa4, 0x85, 0xab, 0xc3, 0x99, 0x36, 0xca, 0xbb, 0xda, - 0xde, 0xff, 0x87, 0x2f, 0x9d, 0x3f, 0x6c, 0x28, 0x67, 0xce, 0x1e, 0xa8, 0x2e, 0x0b, 0xad, 0x5e, - 0x25, 0x9e, 0xb3, 0x26, 0xae, 0x35, 0xb0, 0x27, 0xea, 0x20, 0x9c, 0xf8, 0x14, 0x5e, 0x05, 0x34, - 0x66, 0xfe, 0x14, 0x3f, 0xe3, 0x01, 0xe5, 0xca, 0x2c, 0x63, 0x55, 0xfa, 0x7a, 0x34, 0xe8, 0x5a, - 0xae, 0xfa, 0x3f, 0x7f, 0x7b, 0xd3, 0xf6, 0x9e, 0x15, 0xa9, 0x9e, 0xca, 0x9c, 0x54, 0xdb, 0x10, - 0x79, 0xd2, 0xf3, 0xe3, 0xe5, 0xaf, 0xdf, 0xac, 0x52, 0xf5, 0xcd, 0x4d, 0xcf, 0xd4, 0x6e, 0x7b, - 0xa6, 0xf6, 0xa3, 0x67, 0x6a, 0x5f, 0xfa, 0x66, 0xe9, 0xb6, 0x6f, 0x96, 0xbe, 0xf7, 0xcd, 0xd2, - 0xb9, 0x33, 0x61, 0x78, 0x43, 0x9a, 0xb0, 0xff, 0x36, 0x08, 0x99, 0x5b, 0xac, 0xf4, 0xf6, 0xc1, - 0xa1, 0xfb, 0x41, 0x2d, 0x76, 0x69, 0x7e, 0x58, 0x96, 0x7b, 0xfa, 0xe8, 0x57, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x51, 0x1f, 0xb9, 0x28, 0xf4, 0x05, 0x00, 0x00, + // 632 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4d, 0x6f, 0xd3, 0x40, + 0x10, 0x8d, 0x69, 0x9b, 0xaa, 0x8b, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, 0x7a, + 0xa0, 0xb6, 0x4a, 0x6f, 0x3d, 0xa1, 0xa8, 0xb4, 0x44, 0x02, 0x29, 0x38, 0xb7, 0x5e, 0x2c, 0x7f, + 0x6c, 0x9d, 0x55, 0xe3, 0x5d, 0x6b, 0x77, 0x9d, 0x12, 0x21, 0xf1, 0x07, 0xca, 0x81, 0x23, 0x47, + 0x7e, 0x4e, 0x8f, 0x3d, 0xa2, 0x1e, 0x22, 0x94, 0xfc, 0x83, 0x5c, 0xb8, 0xa2, 0xdd, 0x75, 0x3e, + 0x21, 0x12, 0x11, 0x3d, 0xc5, 0xfb, 0x66, 0x76, 0xde, 0xcb, 0xdb, 0x99, 0x01, 0x26, 0xe3, 0x14, + 0xc5, 0xd0, 0x4d, 0x11, 0xe6, 0x6e, 0xfb, 0x20, 0x84, 0x3c, 0x38, 0x90, 0x07, 0x27, 0xa3, 0x84, + 0x13, 0x7d, 0x53, 0xc5, 0x1d, 0x09, 0x15, 0xf1, 0xed, 0x47, 0x09, 0x49, 0x88, 0x8c, 0xbb, 0xe2, + 0x4b, 0xa5, 0xda, 0x9f, 0x41, 0xf9, 0x3d, 0xc2, 0x1c, 0x52, 0x9d, 0x83, 0x0d, 0x98, 0x91, 0xa8, + 0xe9, 0x67, 0x94, 0xb4, 0x11, 0x43, 0x04, 0x33, 0x43, 0xdb, 0xd5, 0xf6, 0xd6, 0xaa, 0xb5, 0xeb, + 0xae, 0x55, 0xba, 0xed, 0x5a, 0x2f, 0x12, 0xc4, 0x9b, 0x79, 0xe8, 0x44, 0x24, 0x75, 0x23, 0xc2, + 0x52, 0xc2, 0x8a, 0x9f, 0x7d, 0x16, 0x5f, 0xb8, 0xbc, 0x93, 0x41, 0xe6, 0x1c, 0xc3, 0x68, 0xd0, + 0xb5, 0x2a, 0x9d, 0x20, 0x6d, 0x1d, 0xd9, 0xb3, 0xf5, 0x6c, 0x6f, 0x5d, 0x42, 0xf5, 0x31, 0xf2, + 0x6b, 0x09, 0x54, 0x8e, 0x91, 0xd0, 0x1b, 0xe6, 0x1c, 0x11, 0x5c, 0xa7, 0x24, 0x23, 0x54, 0x7c, + 0x31, 0xfd, 0x0c, 0xac, 0x32, 0x1e, 0x5c, 0x20, 0x9c, 0x14, 0x42, 0x5e, 0x2f, 0x2c, 0xe4, 0x81, + 0x12, 0x52, 0x94, 0xb1, 0xbd, 0x61, 0x41, 0xfd, 0x13, 0xd8, 0x8a, 0x48, 0x9a, 0xe6, 0x18, 0xf1, + 0x8e, 0x9f, 0x11, 0xd2, 0xf2, 0x13, 0x4a, 0x2e, 0x79, 0xd3, 0xb8, 0x27, 0x99, 0x4e, 0x17, 0x66, + 0xda, 0x52, 0x4c, 0xd3, 0x45, 0x6d, 0x6f, 0x73, 0x04, 0xd4, 0x09, 0x69, 0x9d, 0x4a, 0x0e, 0xfd, + 0x8b, 0x06, 0xcc, 0x19, 0x76, 0x06, 0xa3, 0x9c, 0x8a, 0x53, 0x98, 0xc7, 0x09, 0xe4, 0xc6, 0xd2, + 0xdd, 0xca, 0xd8, 0x99, 0x92, 0xd1, 0x28, 0xc8, 0xaa, 0x92, 0x4b, 0xe7, 0xe0, 0x21, 0xe3, 0x34, + 0xe0, 0x30, 0x41, 0x91, 0x4f, 0x21, 0x83, 0xb4, 0x0d, 0x8d, 0xe5, 0xbb, 0x15, 0xb0, 0x31, 0x62, + 0xf0, 0x14, 0x81, 0x7d, 0xbb, 0x02, 0xca, 0xf5, 0x80, 0x06, 0x29, 0xd3, 0x9f, 0x00, 0x20, 0x5a, + 0xd5, 0x8f, 0x21, 0x26, 0xa9, 0x7a, 0x6b, 0x6f, 0x4d, 0x20, 0xc7, 0x02, 0xd0, 0xaf, 0x34, 0x60, + 0x24, 0x10, 0x43, 0x86, 0x98, 0xff, 0x47, 0x8b, 0xaa, 0xf7, 0xfa, 0xb0, 0xb0, 0x4e, 0x4b, 0xe9, + 0x9c, 0x57, 0xd7, 0xf6, 0x1e, 0x17, 0xa1, 0x37, 0xd3, 0x1d, 0xab, 0x9f, 0x0c, 0xe7, 0x04, 0xc5, + 0x10, 0x73, 0x74, 0x8e, 0x20, 0x2d, 0x5e, 0x6b, 0x67, 0xb6, 0xf3, 0xc7, 0x19, 0xc3, 0xce, 0xaf, + 0x8d, 0x10, 0x3d, 0x04, 0xdb, 0x14, 0xc6, 0x79, 0x24, 0x7a, 0xdd, 0xcf, 0x20, 0x45, 0x24, 0xf6, + 0x11, 0x56, 0x42, 0x98, 0xb4, 0x7f, 0xa9, 0xfa, 0x7c, 0xd0, 0xb5, 0x9e, 0xaa, 0x8a, 0xf3, 0x73, + 0x6d, 0xaf, 0x32, 0x0a, 0xd6, 0x65, 0xac, 0x86, 0xa5, 0x68, 0x26, 0x66, 0x7a, 0x7c, 0xef, 0x3c, + 0x88, 0x38, 0xa1, 0xc6, 0xca, 0xff, 0xcd, 0xf4, 0x6c, 0x3d, 0xdb, 0x5b, 0x1f, 0x41, 0x27, 0x12, + 0xd1, 0x53, 0x60, 0xc4, 0x13, 0x23, 0x2d, 0x5c, 0x1d, 0xce, 0xb4, 0x51, 0xde, 0xd5, 0xf6, 0xee, + 0xbf, 0x7a, 0xe9, 0xfc, 0x65, 0x43, 0x39, 0x73, 0xf6, 0x40, 0x75, 0x59, 0x68, 0xf5, 0x2a, 0xf1, + 0x9c, 0x35, 0x71, 0xa5, 0x81, 0x3d, 0x51, 0x07, 0xe1, 0xc4, 0xa7, 0xf0, 0x32, 0xa0, 0x31, 0xf3, + 0xa7, 0xf8, 0x19, 0x0f, 0x28, 0x57, 0x66, 0x19, 0xab, 0xd2, 0xd7, 0xc3, 0x41, 0xd7, 0x72, 0xd5, + 0xff, 0xf9, 0xd7, 0x9b, 0xb6, 0xf7, 0xac, 0x48, 0xf5, 0x54, 0xe6, 0xa4, 0xda, 0x86, 0xc8, 0x93, + 0x9e, 0x1f, 0x2d, 0x7f, 0xfb, 0x6e, 0x95, 0xaa, 0x6f, 0xaf, 0x7b, 0xa6, 0x76, 0xd3, 0x33, 0xb5, + 0x9f, 0x3d, 0x53, 0xfb, 0xda, 0x37, 0x4b, 0x37, 0x7d, 0xb3, 0xf4, 0xa3, 0x6f, 0x96, 0xce, 0x9c, + 0x09, 0xc3, 0x1b, 0xd2, 0x84, 0xfd, 0x77, 0x41, 0xc8, 0xdc, 0x62, 0xa5, 0xb7, 0x0f, 0x0e, 0xdd, + 0x8f, 0x6a, 0xb1, 0x4b, 0xf3, 0xc3, 0xb2, 0xdc, 0xd3, 0x87, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, + 0x91, 0x7b, 0x91, 0x3f, 0xf4, 0x05, 0x00, 0x00, } func (m *Minter) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/params.go b/x/mint/types/params.go index 4f0125c72a..11cc830599 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -7,7 +7,7 @@ import ( yaml "gopkg.in/yaml.v2" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index 63cb5640a7..39289cccf2 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -201,32 +201,32 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/query.proto", fileDescriptor_b5a371e09ad2a41a) } var fileDescriptor_b5a371e09ad2a41a = []byte{ - // 390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xc2, 0x40, - 0x18, 0x6d, 0x89, 0x32, 0x9c, 0x26, 0x98, 0x83, 0x18, 0x53, 0xf0, 0x20, 0x1d, 0x90, 0x85, 0x3b, - 0x8b, 0x93, 0x2b, 0xd1, 0xc4, 0xc1, 0x01, 0x71, 0xd2, 0xc5, 0xb4, 0xe5, 0x52, 0x1a, 0x6d, 0xaf, - 0xf4, 0x0e, 0x62, 0x57, 0x7f, 0x81, 0x89, 0xbb, 0x8b, 0x7f, 0x86, 0x91, 0xc4, 0xc5, 0x38, 0x10, - 0x03, 0xfe, 0x10, 0xd3, 0x6b, 0x35, 0x16, 0x6b, 0x8c, 0x53, 0x9b, 0x7b, 0xef, 0x7b, 0xef, 0x7d, - 0xef, 0x0e, 0xd4, 0xb9, 0x08, 0xdd, 0x01, 0x25, 0x9e, 0xeb, 0x0b, 0x32, 0x31, 0x2c, 0x2a, 0x4c, - 0x83, 0x8c, 0xc6, 0x34, 0x8c, 0x70, 0x10, 0x32, 0xc1, 0x60, 0x39, 0x21, 0xe0, 0x98, 0x80, 0x53, - 0x82, 0x56, 0x71, 0x98, 0xc3, 0x24, 0x4e, 0xe2, 0xbf, 0x84, 0xaa, 0xd5, 0x1c, 0xc6, 0x9c, 0x1b, - 0x4a, 0xcc, 0xc0, 0x25, 0xa6, 0xef, 0x33, 0x61, 0x0a, 0x97, 0xf9, 0x3c, 0x45, 0x51, 0x9e, 0x93, - 0x54, 0x95, 0xb8, 0x5e, 0x01, 0xf0, 0x2c, 0xf6, 0xed, 0x99, 0xa1, 0xe9, 0xf1, 0x3e, 0x1d, 0x8d, - 0x29, 0x17, 0x7a, 0x0f, 0x94, 0x33, 0xa7, 0x3c, 0x60, 0x3e, 0xa7, 0xf0, 0x10, 0x14, 0x03, 0x79, - 0xb2, 0xa3, 0x36, 0xd4, 0xd6, 0x46, 0xa7, 0x8a, 0x73, 0x62, 0xe2, 0x64, 0xa8, 0xbb, 0x36, 0x9d, - 0xd7, 0x95, 0x7e, 0x3a, 0xa0, 0xef, 0x82, 0xaa, 0x54, 0x3c, 0x0e, 0x98, 0x3d, 0xec, 0x85, 0x6c, - 0xe2, 0xf2, 0x38, 0xe5, 0xa7, 0x61, 0x04, 0x6a, 0xf9, 0x70, 0xea, 0x7c, 0x01, 0xb6, 0x68, 0x0c, - 0x5d, 0x05, 0x5f, 0x98, 0xcc, 0xb0, 0xd9, 0xc5, 0xb1, 0xcd, 0xeb, 0xbc, 0xde, 0x74, 0x5c, 0x31, - 0x1c, 0x5b, 0xd8, 0x66, 0x1e, 0xb1, 0x19, 0xf7, 0x18, 0x4f, 0x3f, 0x6d, 0x3e, 0xb8, 0x26, 0x22, - 0x0a, 0x28, 0xc7, 0x47, 0xd4, 0xee, 0x97, 0x68, 0xd6, 0xa2, 0xf3, 0x54, 0x00, 0xeb, 0xd2, 0x1b, - 0x46, 0xa0, 0x98, 0x64, 0x87, 0x7b, 0xb9, 0x8b, 0xfd, 0x2c, 0x4a, 0x6b, 0xfd, 0x4d, 0x4c, 0x36, - 0xd0, 0x6b, 0x77, 0xcf, 0xef, 0x0f, 0x85, 0x6d, 0x58, 0xc9, 0x5e, 0x45, 0x52, 0x0f, 0x7c, 0x54, - 0x41, 0x69, 0x65, 0x77, 0xb8, 0xff, 0xbb, 0x76, 0x7e, 0x8b, 0x9a, 0xf1, 0x8f, 0x89, 0x34, 0x56, - 0x53, 0xc6, 0x6a, 0x40, 0x94, 0x8d, 0xb5, 0x5a, 0x76, 0xf7, 0x64, 0xba, 0x40, 0xea, 0x6c, 0x81, - 0xd4, 0xb7, 0x05, 0x52, 0xef, 0x97, 0x48, 0x99, 0x2d, 0x91, 0xf2, 0xb2, 0x44, 0xca, 0x25, 0xfe, - 0x56, 0xfc, 0xb9, 0xb4, 0x6f, 0x9f, 0x9a, 0x16, 0x27, 0xe9, 0xc3, 0x9b, 0x18, 0x1d, 0x72, 0x9b, - 0x88, 0xcb, 0x4b, 0xb0, 0x8a, 0xf2, 0xe1, 0x1d, 0x7c, 0x04, 0x00, 0x00, 0xff, 0xff, 0x82, 0x79, - 0xb0, 0xc3, 0x04, 0x03, 0x00, 0x00, + // 392 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xfa, 0x40, + 0x1c, 0x6d, 0xc9, 0xff, 0xcf, 0x70, 0x9a, 0x60, 0x0e, 0x62, 0x4c, 0xc1, 0x83, 0x74, 0x40, 0x16, + 0xee, 0x2c, 0x4c, 0xae, 0x44, 0x13, 0x07, 0x07, 0xc4, 0x49, 0x17, 0xd3, 0x96, 0x4b, 0x69, 0xb4, + 0xbd, 0xd2, 0x3b, 0x88, 0x5d, 0xfd, 0x04, 0x26, 0xee, 0x2e, 0x7e, 0x19, 0x46, 0x12, 0x17, 0xe3, + 0x40, 0x0c, 0xf8, 0x41, 0x4c, 0xaf, 0xd5, 0x58, 0xac, 0x31, 0x4e, 0x6d, 0xee, 0xbd, 0xdf, 0x7b, + 0xef, 0xf7, 0xee, 0x40, 0x9d, 0x8b, 0xd0, 0x1d, 0x52, 0xe2, 0xb9, 0xbe, 0x20, 0x53, 0xc3, 0xa2, + 0xc2, 0x34, 0xc8, 0x78, 0x42, 0xc3, 0x08, 0x07, 0x21, 0x13, 0x0c, 0x96, 0x13, 0x02, 0x8e, 0x09, + 0x38, 0x25, 0x68, 0x15, 0x87, 0x39, 0x4c, 0xe2, 0x24, 0xfe, 0x4b, 0xa8, 0x5a, 0xcd, 0x61, 0xcc, + 0xb9, 0xa6, 0xc4, 0x0c, 0x5c, 0x62, 0xfa, 0x3e, 0x13, 0xa6, 0x70, 0x99, 0xcf, 0x53, 0x14, 0xe5, + 0x39, 0x49, 0x55, 0x89, 0xeb, 0x15, 0x00, 0x4f, 0x63, 0xdf, 0xbe, 0x19, 0x9a, 0x1e, 0x1f, 0xd0, + 0xf1, 0x84, 0x72, 0xa1, 0xf7, 0x41, 0x39, 0x73, 0xca, 0x03, 0xe6, 0x73, 0x0a, 0x0f, 0x40, 0x31, + 0x90, 0x27, 0x3b, 0x6a, 0x43, 0x6d, 0x6d, 0x74, 0xaa, 0x38, 0x27, 0x26, 0x4e, 0x86, 0x7a, 0xff, + 0x66, 0x8b, 0xba, 0x32, 0x48, 0x07, 0xf4, 0x5d, 0x50, 0x95, 0x8a, 0x47, 0x01, 0xb3, 0x47, 0xfd, + 0x90, 0x4d, 0x5d, 0x1e, 0xa7, 0xfc, 0x30, 0x8c, 0x40, 0x2d, 0x1f, 0x4e, 0x9d, 0xcf, 0xc1, 0x16, + 0x8d, 0xa1, 0xcb, 0xe0, 0x13, 0x93, 0x19, 0x36, 0x7b, 0x38, 0xb6, 0x79, 0x59, 0xd4, 0x9b, 0x8e, + 0x2b, 0x46, 0x13, 0x0b, 0xdb, 0xcc, 0x23, 0x36, 0xe3, 0x1e, 0xe3, 0xe9, 0xa7, 0xcd, 0x87, 0x57, + 0x44, 0x44, 0x01, 0xe5, 0xf8, 0x90, 0xda, 0x83, 0x12, 0xcd, 0x5a, 0x74, 0x1e, 0x0b, 0xe0, 0xbf, + 0xf4, 0x86, 0x11, 0x28, 0x26, 0xd9, 0xe1, 0x5e, 0xee, 0x62, 0xdf, 0x8b, 0xd2, 0x5a, 0xbf, 0x13, + 0x93, 0x0d, 0xf4, 0xda, 0xed, 0xd3, 0xdb, 0x7d, 0x61, 0x1b, 0x56, 0xb2, 0x57, 0x91, 0xd4, 0x03, + 0x1f, 0x54, 0x50, 0x5a, 0xdb, 0x1d, 0xee, 0xff, 0xac, 0x9d, 0xdf, 0xa2, 0x66, 0xfc, 0x61, 0x22, + 0x8d, 0xd5, 0x94, 0xb1, 0x1a, 0x10, 0x65, 0x63, 0xad, 0x97, 0xdd, 0x3b, 0x9e, 0x2d, 0x91, 0x3a, + 0x5f, 0x22, 0xf5, 0x75, 0x89, 0xd4, 0xbb, 0x15, 0x52, 0xe6, 0x2b, 0xa4, 0x3c, 0xaf, 0x90, 0x72, + 0x81, 0xbf, 0x14, 0x7f, 0x26, 0xed, 0xdb, 0x27, 0xa6, 0xc5, 0x49, 0xfa, 0xf0, 0xa6, 0x46, 0x97, + 0xdc, 0x24, 0xe2, 0xf2, 0x12, 0xac, 0xa2, 0x7c, 0x78, 0xdd, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x42, 0x1d, 0x98, 0xd4, 0x04, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/client/cli/query.go b/x/ratelimit/client/cli/query.go index 6e6301539b..0638a8530f 100644 --- a/x/ratelimit/client/cli/query.go +++ b/x/ratelimit/client/cli/query.go @@ -11,7 +11,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/client/cli/tx.go b/x/ratelimit/client/cli/tx.go index 6db3c46118..90124f88d4 100644 --- a/x/ratelimit/client/cli/tx.go +++ b/x/ratelimit/client/cli/tx.go @@ -19,7 +19,7 @@ import ( govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // Parse the gov proposal file into a proto message diff --git a/x/ratelimit/client/proposal_handler.go b/x/ratelimit/client/proposal_handler.go index b05f7e1d9b..e9c1472773 100644 --- a/x/ratelimit/client/proposal_handler.go +++ b/x/ratelimit/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v12/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v13/x/ratelimit/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/ratelimit/genesis.go b/x/ratelimit/genesis.go index 9ff6d38adf..3494c9ba2f 100644 --- a/x/ratelimit/genesis.go +++ b/x/ratelimit/genesis.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/ratelimit/genesis_test.go b/x/ratelimit/genesis_test.go index 3fac714e3a..2852342e53 100644 --- a/x/ratelimit/genesis_test.go +++ b/x/ratelimit/genesis_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/ratelimit" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/ratelimit" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func createRateLimits() []types.RateLimit { diff --git a/x/ratelimit/handler.go b/x/ratelimit/handler.go index 711bf1215f..c052032359 100644 --- a/x/ratelimit/handler.go +++ b/x/ratelimit/handler.go @@ -10,9 +10,9 @@ import ( channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // NewMessageHandler returns ratelimit module messages diff --git a/x/ratelimit/ibc_middleware.go b/x/ratelimit/ibc_middleware.go index a650eb5b28..29a49043d7 100644 --- a/x/ratelimit/ibc_middleware.go +++ b/x/ratelimit/ibc_middleware.go @@ -3,7 +3,7 @@ package ratelimit import ( "fmt" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" diff --git a/x/ratelimit/keeper/gov/gov.go b/x/ratelimit/keeper/gov/gov.go index e04645bfb7..e0656cceb0 100644 --- a/x/ratelimit/keeper/gov/gov.go +++ b/x/ratelimit/keeper/gov/gov.go @@ -6,8 +6,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // Adds a new rate limit. Fails if the rate limit already exists or the channel value is 0 diff --git a/x/ratelimit/keeper/gov/gov_test.go b/x/ratelimit/keeper/gov/gov_test.go index aa562c2c3a..9aadf57407 100644 --- a/x/ratelimit/keeper/gov/gov_test.go +++ b/x/ratelimit/keeper/gov/gov_test.go @@ -12,10 +12,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/app/apptesting" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/grpc_query.go b/x/ratelimit/keeper/grpc_query.go index 7d3c2605c3..0b9e59ec5b 100644 --- a/x/ratelimit/keeper/grpc_query.go +++ b/x/ratelimit/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/ratelimit/keeper/grpc_query_test.go b/x/ratelimit/keeper/grpc_query_test.go index c1b35602fa..cc4c7ac2da 100644 --- a/x/ratelimit/keeper/grpc_query_test.go +++ b/x/ratelimit/keeper/grpc_query_test.go @@ -11,7 +11,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // Add three rate limits on different channels diff --git a/x/ratelimit/keeper/hooks.go b/x/ratelimit/keeper/hooks.go index ce83788265..263c8ccde6 100644 --- a/x/ratelimit/keeper/hooks.go +++ b/x/ratelimit/keeper/hooks.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // Before each hour epoch, check if any of the rate limits have expired, diff --git a/x/ratelimit/keeper/hooks_test.go b/x/ratelimit/keeper/hooks_test.go index a82dfd2def..2742b27f02 100644 --- a/x/ratelimit/keeper/hooks_test.go +++ b/x/ratelimit/keeper/hooks_test.go @@ -5,8 +5,8 @@ import ( sdkmath "cosmossdk.io/math" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // Store a rate limit with a non-zero flow for each duration diff --git a/x/ratelimit/keeper/keeper.go b/x/ratelimit/keeper/keeper.go index e015c30ae4..1ebc5a053a 100644 --- a/x/ratelimit/keeper/keeper.go +++ b/x/ratelimit/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) type ( diff --git a/x/ratelimit/keeper/keeper_test.go b/x/ratelimit/keeper/keeper_test.go index 2039b17d24..bbed50bfbf 100644 --- a/x/ratelimit/keeper/keeper_test.go +++ b/x/ratelimit/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/packet.go b/x/ratelimit/keeper/packet.go index 4e8a3e0ba2..04d1e024b2 100644 --- a/x/ratelimit/keeper/packet.go +++ b/x/ratelimit/keeper/packet.go @@ -14,9 +14,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v12/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) type RateLimitedPacketInfo struct { diff --git a/x/ratelimit/keeper/packet_test.go b/x/ratelimit/keeper/packet_test.go index 3d369f5a14..89e49f0fad 100644 --- a/x/ratelimit/keeper/packet_test.go +++ b/x/ratelimit/keeper/packet_test.go @@ -13,8 +13,8 @@ import ( tmbytes "github.com/cometbft/cometbft/libs/bytes" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/keeper/params.go b/x/ratelimit/keeper/params.go index 4017cc3b1c..ef7cc7c3a4 100644 --- a/x/ratelimit/keeper/params.go +++ b/x/ratelimit/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // GetParams get all parameters as types.Params diff --git a/x/ratelimit/keeper/rate_limit.go b/x/ratelimit/keeper/rate_limit.go index 381b272322..1b547cabd1 100644 --- a/x/ratelimit/keeper/rate_limit.go +++ b/x/ratelimit/keeper/rate_limit.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // Get the rate limit byte key built from the denom and channelId diff --git a/x/ratelimit/keeper/rate_limit_test.go b/x/ratelimit/keeper/rate_limit_test.go index 72c322a82b..f5c82197e9 100644 --- a/x/ratelimit/keeper/rate_limit_test.go +++ b/x/ratelimit/keeper/rate_limit_test.go @@ -7,9 +7,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - minttypes "github.com/Stride-Labs/stride/v12/x/mint/types" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/module.go b/x/ratelimit/module.go index 61ed4a8339..57dfd917d3 100644 --- a/x/ratelimit/module.go +++ b/x/ratelimit/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/ratelimit/client/cli" - "github.com/Stride-Labs/stride/v12/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) var ( diff --git a/x/ratelimit/types/flow_test.go b/x/ratelimit/types/flow_test.go index dc219a6881..7c82916524 100644 --- a/x/ratelimit/types/flow_test.go +++ b/x/ratelimit/types/flow_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func TestAddInflow(t *testing.T) { diff --git a/x/ratelimit/types/genesis.pb.go b/x/ratelimit/types/genesis.pb.go index 1ad5fd7389..146242cc8c 100644 --- a/x/ratelimit/types/genesis.pb.go +++ b/x/ratelimit/types/genesis.pb.go @@ -110,29 +110,29 @@ var fileDescriptor_9e224b293959881c = []byte{ // 402 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6b, 0xd4, 0x40, 0x18, 0x86, 0x37, 0xae, 0x16, 0x9c, 0x55, 0xd0, 0x41, 0x31, 0xae, 0x98, 0x86, 0xe0, 0x21, 0x97, - 0x26, 0xb8, 0xbd, 0x79, 0x33, 0x08, 0xbd, 0xd4, 0xb2, 0x24, 0x07, 0xc5, 0x4b, 0x98, 0x64, 0x3e, + 0x26, 0xd8, 0xbd, 0x79, 0x33, 0x08, 0xbd, 0xd4, 0xb2, 0x24, 0x07, 0xc5, 0x4b, 0x98, 0x64, 0x3e, 0xd2, 0xa1, 0x9b, 0x49, 0x9c, 0x6f, 0xd6, 0xda, 0x3f, 0x21, 0xfe, 0x25, 0x6f, 0x3d, 0xf6, 0xe8, 0xa9, 0xc8, 0xee, 0x3f, 0xf0, 0x17, 0x48, 0x66, 0xc6, 0xba, 0x18, 0xbd, 0x0d, 0xbc, 0xef, 0xf3, 0xbc, 0x21, 0x7c, 0x24, 0x40, 0xad, 0x04, 0x87, 0x54, 0x31, 0x0d, 0x2b, 0xd1, 0x0a, 0x9d, 0x36, 0x20, 0x01, 0x05, 0x26, 0xbd, 0xea, 0x74, 0x47, 0x1f, 0xd8, 0x3c, 0xb9, 0xc9, 0xe7, 0x8f, 0x9a, 0xae, 0xe9, 0x4c, 0x98, 0x0e, 0x2f, 0xdb, 0x9b, 0x3f, 0x1f, 0x79, 0x7a, 0xa6, 0x58, 0xeb, 0x34, 0xf3, 0x70, 0x14, 0xdf, 0xbc, 0x6c, 0x23, 0xfa, 0x36, 0x25, 0xf7, 0x8e, 0xec, 0x74, 0xa1, 0x99, - 0x06, 0x7a, 0x44, 0xf6, 0xac, 0xc2, 0xf7, 0x42, 0x2f, 0x9e, 0x2d, 0xfc, 0xe4, 0xef, 0x4f, 0x49, - 0x96, 0x26, 0xcf, 0x1e, 0x5f, 0x5e, 0xef, 0x4f, 0x7e, 0x5e, 0xef, 0xdf, 0xbf, 0x60, 0xed, 0xea, - 0x55, 0x64, 0xa9, 0x28, 0x77, 0x38, 0x7d, 0x4f, 0x66, 0x03, 0x52, 0x1a, 0x06, 0xfd, 0x5b, 0xe1, - 0x34, 0x9e, 0x2d, 0x9e, 0x8d, 0x6d, 0x39, 0xd3, 0x70, 0x3c, 0xbc, 0xb2, 0xb9, 0x13, 0x52, 0x2b, - 0xdc, 0xa1, 0xa3, 0x9c, 0xa8, 0xdf, 0x35, 0xa4, 0x5f, 0x3c, 0xf2, 0xf4, 0xfc, 0x54, 0x0c, 0x02, - 0xd4, 0xc0, 0x4b, 0xc6, 0xb9, 0x02, 0xc4, 0xb2, 0x67, 0x42, 0xa1, 0x3f, 0x35, 0x43, 0xf1, 0x78, - 0xe8, 0xdd, 0x1f, 0xe4, 0xb5, 0x25, 0x96, 0x4c, 0xa8, 0x2c, 0x76, 0xab, 0xa1, 0x5d, 0xfd, 0xaf, - 0x38, 0xca, 0x9f, 0x9c, 0xff, 0xd3, 0x80, 0xf4, 0x80, 0xd0, 0x6a, 0xc5, 0xea, 0x33, 0x87, 0x71, - 0x90, 0x5d, 0x8b, 0xfe, 0xed, 0x70, 0x1a, 0xdf, 0xcd, 0x1f, 0xee, 0x24, 0x6f, 0x4c, 0x40, 0x4f, - 0xc8, 0x8b, 0x1e, 0x24, 0x17, 0xb2, 0x29, 0x11, 0x24, 0x2f, 0x7b, 0x56, 0x9f, 0x81, 0x2e, 0x11, - 0x3e, 0xae, 0x41, 0xd6, 0x50, 0xca, 0x75, 0x5b, 0x81, 0x42, 0xff, 0x8e, 0x11, 0x84, 0xae, 0x5b, - 0x80, 0xe4, 0x4b, 0xd3, 0x2c, 0x5c, 0xf1, 0xc4, 0xf6, 0xb2, 0xb7, 0x97, 0x9b, 0xc0, 0xbb, 0xda, - 0x04, 0xde, 0x8f, 0x4d, 0xe0, 0x7d, 0xdd, 0x06, 0x93, 0xab, 0x6d, 0x30, 0xf9, 0xbe, 0x0d, 0x26, - 0x1f, 0x0e, 0x1b, 0xa1, 0x4f, 0xd7, 0x55, 0x52, 0x77, 0x6d, 0x5a, 0x98, 0xff, 0x71, 0x70, 0xcc, - 0x2a, 0x4c, 0xdd, 0x59, 0x7c, 0x7a, 0xb9, 0x48, 0x3f, 0xef, 0x1c, 0x87, 0xbe, 0xe8, 0x01, 0xab, - 0x3d, 0x73, 0x19, 0x87, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x9b, 0x59, 0x22, 0xa4, 0x02, + 0x06, 0x7a, 0x44, 0xf6, 0xac, 0xc2, 0xf7, 0x42, 0x2f, 0x9e, 0x1d, 0xfa, 0xc9, 0xdf, 0x9f, 0x92, + 0x2c, 0x4d, 0x9e, 0x3d, 0xbe, 0xbc, 0xde, 0x9f, 0xfc, 0xbc, 0xde, 0xbf, 0x7f, 0xc1, 0xda, 0xd5, + 0xab, 0xc8, 0x52, 0x51, 0xee, 0x70, 0xfa, 0x9e, 0xcc, 0x06, 0xa4, 0x34, 0x0c, 0xfa, 0xb7, 0xc2, + 0x69, 0x3c, 0x3b, 0x7c, 0x36, 0xb6, 0xe5, 0x4c, 0xc3, 0xf1, 0xf0, 0xca, 0xe6, 0x4e, 0x48, 0xad, + 0x70, 0x87, 0x8e, 0x72, 0xa2, 0x7e, 0xd7, 0x90, 0x7e, 0xf1, 0xc8, 0xd3, 0xf3, 0x53, 0x31, 0x08, + 0x50, 0x03, 0x2f, 0x19, 0xe7, 0x0a, 0x10, 0xcb, 0x9e, 0x09, 0x85, 0xfe, 0xd4, 0x0c, 0xc5, 0xe3, + 0xa1, 0x77, 0x7f, 0x90, 0xd7, 0x96, 0x58, 0x32, 0xa1, 0xb2, 0xd8, 0xad, 0x86, 0x76, 0xf5, 0xbf, + 0xe2, 0x28, 0x7f, 0x72, 0xfe, 0x4f, 0x03, 0xd2, 0x03, 0x42, 0xab, 0x15, 0xab, 0xcf, 0x1c, 0xc6, + 0x41, 0x76, 0x2d, 0xfa, 0xb7, 0xc3, 0x69, 0x7c, 0x37, 0x7f, 0xb8, 0x93, 0xbc, 0x31, 0x01, 0x3d, + 0x21, 0x2f, 0x7a, 0x90, 0x5c, 0xc8, 0xa6, 0x44, 0x90, 0xbc, 0xec, 0x59, 0x7d, 0x06, 0xba, 0x44, + 0xf8, 0xb8, 0x06, 0x59, 0x43, 0x29, 0xd7, 0x6d, 0x05, 0x0a, 0xfd, 0x3b, 0x46, 0x10, 0xba, 0x6e, + 0x01, 0x92, 0x2f, 0x4d, 0xb3, 0x70, 0xc5, 0x13, 0xdb, 0xcb, 0xde, 0x5e, 0x6e, 0x02, 0xef, 0x6a, + 0x13, 0x78, 0x3f, 0x36, 0x81, 0xf7, 0x75, 0x1b, 0x4c, 0xae, 0xb6, 0xc1, 0xe4, 0xfb, 0x36, 0x98, + 0x7c, 0x58, 0x34, 0x42, 0x9f, 0xae, 0xab, 0xa4, 0xee, 0xda, 0xb4, 0x30, 0xff, 0xe3, 0xe0, 0x98, + 0x55, 0x98, 0xba, 0xb3, 0xf8, 0xf4, 0x72, 0x91, 0x7e, 0xde, 0x39, 0x0e, 0x7d, 0xd1, 0x03, 0x56, + 0x7b, 0xe6, 0x32, 0x16, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x80, 0xd5, 0x4c, 0xa4, 0x02, 0x00, 0x00, } diff --git a/x/ratelimit/types/gov.pb.go b/x/ratelimit/types/gov.pb.go index 339bae1133..3c22fc62a1 100644 --- a/x/ratelimit/types/gov.pb.go +++ b/x/ratelimit/types/gov.pb.go @@ -202,33 +202,33 @@ func init() { proto.RegisterFile("stride/ratelimit/gov.proto", fileDescriptor_3a var fileDescriptor_3ad7ef7cb59a1c37 = []byte{ // 437 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x41, 0x6b, 0x13, 0x41, - 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x08, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, - 0x76, 0x17, 0xed, 0xad, 0x37, 0x7b, 0xb2, 0x50, 0xa1, 0x4c, 0x11, 0xc4, 0x4b, 0x98, 0xec, 0x3c, + 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x09, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, + 0x76, 0x17, 0xc9, 0xad, 0x37, 0x7b, 0xb2, 0x50, 0xa1, 0x4c, 0x11, 0xc4, 0x4b, 0x98, 0xec, 0x3c, 0x92, 0xc1, 0x9d, 0x99, 0x65, 0x66, 0xb2, 0xa4, 0xff, 0xc0, 0xa3, 0x47, 0x11, 0x84, 0xfc, 0x15, - 0x3d, 0xf5, 0xd8, 0xa3, 0x78, 0x08, 0x92, 0x5c, 0x3c, 0xfb, 0x0b, 0x64, 0x67, 0x53, 0x09, 0x78, - 0x12, 0x0f, 0x2a, 0x78, 0xda, 0x7d, 0xdf, 0xf7, 0xbd, 0x37, 0x7c, 0xbc, 0xc7, 0x87, 0xf7, 0x9c, - 0xb7, 0x52, 0x40, 0x66, 0xb9, 0x87, 0x42, 0x2a, 0xe9, 0xb3, 0x91, 0xa9, 0xd2, 0xd2, 0x1a, 0x6f, - 0xc8, 0x4e, 0xc3, 0xa5, 0x3f, 0xb8, 0xbd, 0xee, 0xc8, 0x8c, 0x4c, 0x20, 0xb3, 0xfa, 0xaf, 0xd1, - 0xf5, 0xdf, 0xb5, 0x70, 0xf7, 0x89, 0x10, 0x8c, 0x7b, 0x38, 0xad, 0x65, 0x67, 0xd6, 0x94, 0xc6, - 0xf1, 0x82, 0x74, 0x71, 0xdb, 0x4b, 0x5f, 0x00, 0x45, 0x3d, 0xb4, 0xbf, 0xcd, 0x9a, 0x82, 0xf4, - 0xf0, 0x2d, 0x01, 0x2e, 0xb7, 0xb2, 0xf4, 0xd2, 0x68, 0x7a, 0x23, 0x70, 0xeb, 0x50, 0xdd, 0x27, - 0x40, 0x1b, 0x45, 0x5b, 0x4d, 0x5f, 0x28, 0xc8, 0x3d, 0x8c, 0xf3, 0x31, 0xd7, 0x1a, 0x8a, 0x81, - 0x14, 0x74, 0x23, 0x50, 0xdb, 0x2b, 0xe4, 0x44, 0x90, 0x17, 0x78, 0x47, 0xf1, 0xe9, 0xa0, 0x04, - 0x9b, 0x83, 0xf6, 0x03, 0x07, 0x5a, 0xd0, 0x76, 0x2d, 0x3a, 0x4e, 0x2f, 0xe7, 0x49, 0xf4, 0x79, - 0x9e, 0x3c, 0x18, 0x49, 0x3f, 0x9e, 0x0c, 0xd3, 0xdc, 0xa8, 0x2c, 0x37, 0x4e, 0x19, 0xb7, 0xfa, - 0x1c, 0x38, 0xf1, 0x2a, 0xf3, 0x17, 0x25, 0xb8, 0xf4, 0x44, 0x7b, 0xd6, 0x51, 0x7c, 0x7a, 0xd6, - 0x8c, 0x39, 0x07, 0xfd, 0xd3, 0x64, 0x0b, 0x79, 0x45, 0x37, 0x7f, 0x77, 0x32, 0x83, 0xbc, 0x22, - 0xf7, 0x71, 0x47, 0x4c, 0x2c, 0xaf, 0x4d, 0x0f, 0xc6, 0x66, 0x62, 0x1d, 0xdd, 0xea, 0xa1, 0xfd, - 0x0d, 0x76, 0xe7, 0x1a, 0x7d, 0x5a, 0x83, 0xe4, 0x21, 0xde, 0x12, 0x50, 0x1a, 0x27, 0x3d, 0xbd, - 0x19, 0xde, 0x25, 0xdf, 0xe6, 0x49, 0xe7, 0x82, 0xab, 0xe2, 0xa8, 0xbf, 0x22, 0xfa, 0xec, 0x5a, - 0x72, 0x74, 0xfb, 0xf5, 0x2c, 0x89, 0xde, 0xce, 0x92, 0xe8, 0xeb, 0x2c, 0x41, 0xfd, 0xf7, 0x2d, - 0xbc, 0xfb, 0xbc, 0x14, 0xdc, 0xc3, 0xff, 0xfd, 0xfc, 0x8d, 0xfb, 0xf9, 0x88, 0xf0, 0x2e, 0x03, - 0x65, 0xaa, 0x3f, 0xbd, 0x9f, 0x35, 0x13, 0xed, 0x5f, 0x35, 0xf1, 0x01, 0xe1, 0xbb, 0x0c, 0x1c, - 0xf8, 0x7f, 0xd7, 0xc3, 0xf1, 0xb3, 0xcb, 0x45, 0x8c, 0xae, 0x16, 0x31, 0xfa, 0xb2, 0x88, 0xd1, - 0x9b, 0x65, 0x1c, 0x5d, 0x2d, 0xe3, 0xe8, 0xd3, 0x32, 0x8e, 0x5e, 0x1e, 0xae, 0x5d, 0xcf, 0x79, - 0x88, 0xc4, 0x83, 0x53, 0x3e, 0x74, 0xd9, 0x2a, 0x3a, 0xab, 0x47, 0x8f, 0xb3, 0xe9, 0x5a, 0x80, - 0x86, 0x73, 0x1a, 0x6e, 0x86, 0x6c, 0x3c, 0xfc, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x15, 0xe6, 0x7e, - 0x90, 0x61, 0x05, 0x00, 0x00, + 0x3d, 0xf5, 0xd8, 0xa3, 0x78, 0x08, 0x92, 0x5c, 0x3c, 0xfb, 0x0b, 0x64, 0x67, 0x13, 0x59, 0xf0, + 0x24, 0x1e, 0x54, 0xe8, 0x69, 0xf7, 0x7d, 0xdf, 0xf7, 0xde, 0xf0, 0xf1, 0x1e, 0x1f, 0x3e, 0xb0, + 0xce, 0x08, 0x0e, 0xa9, 0x61, 0x0e, 0x72, 0x21, 0x85, 0x4b, 0xc7, 0xba, 0x4c, 0x0a, 0xa3, 0x9d, + 0x0e, 0xf7, 0x6a, 0x2e, 0xf9, 0xc9, 0x1d, 0x74, 0xc7, 0x7a, 0xac, 0x3d, 0x99, 0x56, 0x7f, 0xb5, + 0xae, 0xff, 0xbe, 0x85, 0xbb, 0x4f, 0x39, 0xa7, 0xcc, 0xc1, 0x59, 0x25, 0x3b, 0x37, 0xba, 0xd0, + 0x96, 0xe5, 0x61, 0x17, 0xb7, 0x9d, 0x70, 0x39, 0x10, 0xd4, 0x43, 0x87, 0xbb, 0xb4, 0x2e, 0xc2, + 0x1e, 0xbe, 0xc3, 0xc1, 0x66, 0x46, 0x14, 0x4e, 0x68, 0x45, 0x6e, 0x79, 0xae, 0x09, 0x55, 0x7d, + 0x1c, 0x94, 0x96, 0xa4, 0x55, 0xf7, 0xf9, 0x22, 0x7c, 0x80, 0x71, 0x36, 0x61, 0x4a, 0x41, 0x3e, + 0x14, 0x9c, 0x6c, 0x79, 0x6a, 0x77, 0x8d, 0x9c, 0xf2, 0xf0, 0x25, 0xde, 0x93, 0x6c, 0x36, 0x2c, + 0xc0, 0x64, 0xa0, 0xdc, 0xd0, 0x82, 0xe2, 0xa4, 0x5d, 0x89, 0x4e, 0x92, 0xab, 0x45, 0x1c, 0x7c, + 0x59, 0xc4, 0x8f, 0xc6, 0xc2, 0x4d, 0xa6, 0xa3, 0x24, 0xd3, 0x32, 0xcd, 0xb4, 0x95, 0xda, 0xae, + 0x3f, 0x47, 0x96, 0xbf, 0x4e, 0xdd, 0x65, 0x01, 0x36, 0x39, 0x55, 0x8e, 0x76, 0x24, 0x9b, 0x9d, + 0xd7, 0x63, 0x2e, 0x40, 0xfd, 0x32, 0xd9, 0x40, 0x56, 0x92, 0xed, 0x3f, 0x9d, 0x4c, 0x21, 0x2b, + 0xc3, 0x87, 0xb8, 0xc3, 0xa7, 0x86, 0x55, 0xa6, 0x87, 0x13, 0x3d, 0x35, 0x96, 0xec, 0xf4, 0xd0, + 0xe1, 0x16, 0xbd, 0xb7, 0x41, 0x9f, 0x55, 0x60, 0xf8, 0x18, 0xef, 0x70, 0x28, 0xb4, 0x15, 0x8e, + 0xdc, 0xf6, 0xef, 0x86, 0xdf, 0x17, 0x71, 0xe7, 0x92, 0xc9, 0xfc, 0xb8, 0xbf, 0x26, 0xfa, 0x74, + 0x23, 0x39, 0xbe, 0xfb, 0x66, 0x1e, 0x07, 0xef, 0xe6, 0x71, 0xf0, 0x6d, 0x1e, 0xa3, 0xfe, 0x87, + 0x16, 0xde, 0x7f, 0x51, 0x70, 0xe6, 0xe0, 0x66, 0x3f, 0xff, 0xe2, 0x7e, 0x3e, 0x21, 0xbc, 0x4f, + 0x41, 0xea, 0xf2, 0x6f, 0xef, 0xa7, 0x61, 0xa2, 0xfd, 0xbb, 0x26, 0x3e, 0x22, 0x7c, 0x9f, 0x82, + 0x05, 0xf7, 0xff, 0x7a, 0x38, 0x79, 0x7e, 0xb5, 0x8c, 0xd0, 0xf5, 0x32, 0x42, 0x5f, 0x97, 0x11, + 0x7a, 0xbb, 0x8a, 0x82, 0xeb, 0x55, 0x14, 0x7c, 0x5e, 0x45, 0xc1, 0xab, 0x41, 0xe3, 0x7a, 0x2e, + 0x7c, 0x24, 0x1e, 0x9d, 0xb1, 0x91, 0x4d, 0xd7, 0xd1, 0x59, 0x3e, 0x19, 0xa4, 0xb3, 0x46, 0x80, + 0xfa, 0x73, 0x1a, 0x6d, 0xfb, 0x6c, 0x1c, 0xfc, 0x08, 0x00, 0x00, 0xff, 0xff, 0x54, 0xfd, 0xf2, + 0xfe, 0x61, 0x05, 0x00, 0x00, } func (this *AddRateLimitProposal) Equal(that interface{}) bool { diff --git a/x/ratelimit/types/gov_add_rate_limit_test.go b/x/ratelimit/types/gov_add_rate_limit_test.go index 933534dce0..a85adb07fe 100644 --- a/x/ratelimit/types/gov_add_rate_limit_test.go +++ b/x/ratelimit/types/gov_add_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func TestGovAddRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_remove_rate_limit_test.go b/x/ratelimit/types/gov_remove_rate_limit_test.go index abdca67451..b7a3f9c887 100644 --- a/x/ratelimit/types/gov_remove_rate_limit_test.go +++ b/x/ratelimit/types/gov_remove_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func TestGovRemoveRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_reset_rate_limit_test.go b/x/ratelimit/types/gov_reset_rate_limit_test.go index b48cc9be41..b37f888abb 100644 --- a/x/ratelimit/types/gov_reset_rate_limit_test.go +++ b/x/ratelimit/types/gov_reset_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func TestGovResetRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_update_rate_limit_test.go b/x/ratelimit/types/gov_update_rate_limit_test.go index 41411832e5..c6c00973b2 100644 --- a/x/ratelimit/types/gov_update_rate_limit_test.go +++ b/x/ratelimit/types/gov_update_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func TestGovUpdateRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/params.pb.go b/x/ratelimit/types/params.pb.go index b0d3980c23..2990b808c7 100644 --- a/x/ratelimit/types/params.pb.go +++ b/x/ratelimit/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_7af4964ecd08f136 = []byte{ 0x95, 0x38, 0xb8, 0xd8, 0x02, 0xc0, 0x2a, 0x9c, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, - 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x23, 0xfd, 0x0a, + 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x63, 0xfd, 0x0a, 0x24, 0x1b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x36, 0x1a, 0x03, 0x02, 0x00, 0x00, - 0xff, 0xff, 0x37, 0xc8, 0xc0, 0x8a, 0x92, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x76, 0xd3, 0x4c, 0xe4, 0x92, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/query.pb.go b/x/ratelimit/types/query.pb.go index e309035b4d..17610188eb 100644 --- a/x/ratelimit/types/query.pb.go +++ b/x/ratelimit/types/query.pb.go @@ -601,8 +601,8 @@ var fileDescriptor_97a373ef8fcef03b = []byte{ 0xa3, 0x0c, 0x78, 0x5c, 0xb4, 0x5b, 0x49, 0xd3, 0x92, 0xdd, 0xa3, 0xb7, 0x1d, 0x8d, 0x0a, 0x09, 0x44, 0x4a, 0x8f, 0x0f, 0x8e, 0x32, 0xe8, 0xf0, 0x28, 0x83, 0x7e, 0x1f, 0x65, 0xd0, 0x87, 0x76, 0x26, 0x75, 0xd8, 0xce, 0xa4, 0x7e, 0xb6, 0x33, 0xa9, 0x17, 0xc5, 0x3a, 0xf3, 0x1a, 0xbb, 0xd5, - 0x7c, 0xcd, 0xd9, 0x8e, 0x12, 0x7e, 0xb3, 0x5c, 0x30, 0xde, 0xfd, 0x23, 0xef, 0xb5, 0x9a, 0x94, - 0x57, 0xc7, 0xc4, 0xdf, 0x84, 0xe2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2c, 0xe0, 0xc5, 0x7a, + 0x7c, 0xcd, 0xd9, 0x8e, 0x12, 0x7e, 0xb3, 0x5c, 0x34, 0xde, 0xfd, 0x23, 0xef, 0xb5, 0x9a, 0x94, + 0x57, 0xc7, 0xc4, 0xdf, 0x84, 0xe2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6d, 0xfb, 0x49, 0x14, 0xae, 0x08, 0x00, 0x00, } diff --git a/x/ratelimit/types/quota_test.go b/x/ratelimit/types/quota_test.go index 2f8ff3c017..41fda7c2c8 100644 --- a/x/ratelimit/types/quota_test.go +++ b/x/ratelimit/types/quota_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) func TestCheckExceedsQuota(t *testing.T) { diff --git a/x/ratelimit/types/ratelimit.pb.go b/x/ratelimit/types/ratelimit.pb.go index b240b7d5cd..9996cccab8 100644 --- a/x/ratelimit/types/ratelimit.pb.go +++ b/x/ratelimit/types/ratelimit.pb.go @@ -313,7 +313,7 @@ var fileDescriptor_a3e00ee2c967d747 = []byte{ // 519 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x4d, 0x6f, 0xd3, 0x40, 0x10, 0xb5, 0x69, 0x1a, 0xc8, 0x86, 0xb6, 0xd1, 0xaa, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, 0xa8, - 0xaa, 0x14, 0x5b, 0xa4, 0x27, 0xc4, 0xa9, 0x1f, 0xa9, 0x5a, 0x11, 0x50, 0x70, 0x50, 0x41, 0x5c, + 0xaa, 0x14, 0x5b, 0x34, 0x27, 0xc4, 0xa9, 0x1f, 0xa9, 0x5a, 0x11, 0x50, 0x70, 0x50, 0x41, 0x5c, 0xa2, 0x8d, 0x77, 0x88, 0x57, 0x8d, 0xbd, 0x61, 0x77, 0xed, 0x86, 0x7f, 0xc0, 0x11, 0xf1, 0x17, 0xf8, 0x33, 0x3d, 0xf6, 0x88, 0x38, 0x54, 0x28, 0x39, 0xf3, 0x1f, 0xd0, 0xae, 0x9d, 0x12, 0x15, 0x71, 0xa0, 0x9c, 0xbc, 0xf3, 0xe6, 0xed, 0x93, 0xdf, 0xec, 0x1b, 0xd4, 0x90, 0x4a, 0x30, 0x0a, @@ -331,19 +331,19 @@ var fileDescriptor_a3e00ee2c967d747 = []byte{ 0xcc, 0xcf, 0xf1, 0x11, 0x2a, 0xb2, 0xf8, 0xfd, 0x98, 0x9f, 0xdf, 0xd2, 0x59, 0x7e, 0x1b, 0x1f, 0xa3, 0xbb, 0x3c, 0x51, 0x46, 0xe8, 0x76, 0x46, 0x16, 0xd7, 0x71, 0x1f, 0xad, 0x2d, 0x9e, 0x27, 0x25, 0xe3, 0x04, 0x8c, 0x81, 0x7f, 0xd7, 0xbb, 0x9f, 0x8b, 0x9c, 0x6a, 0x8d, 0xe6, 0x17, 0x1b, - 0x95, 0x7c, 0xa2, 0xa0, 0xab, 0x53, 0x83, 0x77, 0x50, 0x61, 0x42, 0x54, 0x68, 0x2c, 0x97, 0xdb, - 0x55, 0xf7, 0x66, 0xac, 0x5c, 0x9d, 0x1e, 0xdf, 0x70, 0x70, 0x0b, 0xad, 0x7e, 0xd0, 0x69, 0x30, - 0xb6, 0xca, 0xed, 0x07, 0x7f, 0x92, 0x4d, 0x58, 0xfc, 0x8c, 0xa5, 0xa5, 0xcd, 0x10, 0x56, 0xfe, - 0x26, 0xad, 0xa7, 0xee, 0x1b, 0x4e, 0xb3, 0x8b, 0xaa, 0x6f, 0x42, 0xa6, 0x1b, 0x52, 0x01, 0xdd, - 0xa3, 0x54, 0x80, 0x94, 0x3d, 0xc2, 0x04, 0xae, 0xa2, 0xa2, 0x4e, 0x1b, 0x88, 0x3c, 0xb9, 0x79, - 0x85, 0xeb, 0xe8, 0x9e, 0x80, 0x00, 0x58, 0x0a, 0x22, 0x0f, 0xee, 0x75, 0xbd, 0xf3, 0x14, 0x6d, - 0xf4, 0x48, 0x70, 0x06, 0xea, 0x90, 0x09, 0x08, 0xf4, 0x53, 0xe3, 0x0d, 0x54, 0xee, 0xed, 0x1d, - 0x3c, 0xef, 0xbc, 0x1e, 0xf4, 0x3b, 0x2f, 0x0f, 0x2b, 0xd6, 0x12, 0xe0, 0x77, 0x0e, 0x4e, 0x2b, - 0x76, 0xbd, 0xf0, 0xe9, 0xab, 0x63, 0xed, 0xbf, 0xb8, 0x98, 0x39, 0xf6, 0xe5, 0xcc, 0xb1, 0x7f, - 0xcc, 0x1c, 0xfb, 0xf3, 0xdc, 0xb1, 0x2e, 0xe7, 0x8e, 0xf5, 0x6d, 0xee, 0x58, 0xef, 0x76, 0x97, - 0xa6, 0xdd, 0x37, 0x56, 0x5a, 0x5d, 0x32, 0x94, 0x5e, 0xbe, 0xaa, 0xe9, 0x93, 0xb6, 0x37, 0x5d, - 0x5a, 0x58, 0x33, 0xfe, 0x61, 0xd1, 0x6c, 0xe1, 0xee, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xec, - 0x53, 0xf7, 0x0c, 0xd1, 0x03, 0x00, 0x00, + 0x95, 0x7c, 0xa2, 0xa0, 0xab, 0x53, 0x83, 0x77, 0x50, 0x61, 0x42, 0x54, 0x68, 0x2c, 0x97, 0x77, + 0xab, 0xee, 0xcd, 0x58, 0xb9, 0x3a, 0x3d, 0xbe, 0xe1, 0xe0, 0x16, 0x5a, 0xfd, 0xa0, 0xd3, 0x60, + 0x6c, 0x95, 0x77, 0x1f, 0xfc, 0x49, 0x36, 0x61, 0xf1, 0x33, 0x96, 0x96, 0x36, 0x43, 0x58, 0xf9, + 0x9b, 0xb4, 0x9e, 0xba, 0x6f, 0x38, 0xcd, 0x2e, 0xaa, 0xbe, 0x09, 0x99, 0x6e, 0x48, 0x05, 0x74, + 0x8f, 0x52, 0x01, 0x52, 0xf6, 0x08, 0x13, 0xb8, 0x8a, 0x8a, 0x3a, 0x6d, 0x20, 0xf2, 0xe4, 0xe6, + 0x15, 0xae, 0xa3, 0x7b, 0x02, 0x02, 0x60, 0x29, 0x88, 0x3c, 0xb8, 0xd7, 0xf5, 0xce, 0x53, 0xb4, + 0xd1, 0x23, 0xc1, 0x19, 0xa8, 0x43, 0x26, 0x20, 0xd0, 0x4f, 0x8d, 0x37, 0x50, 0xb9, 0xb7, 0x77, + 0xf0, 0xbc, 0xf3, 0x7a, 0xd0, 0xef, 0xbc, 0x3c, 0xac, 0x58, 0x4b, 0x80, 0xdf, 0x39, 0x38, 0xad, + 0xd8, 0xf5, 0xc2, 0xa7, 0xaf, 0x8e, 0xb5, 0xff, 0xe2, 0x62, 0xe6, 0xd8, 0x97, 0x33, 0xc7, 0xfe, + 0x31, 0x73, 0xec, 0xcf, 0x73, 0xc7, 0xba, 0x9c, 0x3b, 0xd6, 0xb7, 0xb9, 0x63, 0xbd, 0x6b, 0x2f, + 0x4d, 0xbb, 0x6f, 0xac, 0xb4, 0xba, 0x64, 0x28, 0xbd, 0x7c, 0x55, 0xd3, 0x27, 0x6d, 0x6f, 0xba, + 0xb4, 0xb0, 0x66, 0xfc, 0xc3, 0xa2, 0xd9, 0xc2, 0xf6, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, + 0x48, 0x7b, 0x62, 0xd1, 0x03, 0x00, 0x00, } func (m *Path) Marshal() (dAtA []byte, err error) { diff --git a/x/records/client/cli/query.go b/x/records/client/cli/query.go index be139fecef..798b8bdfc5 100644 --- a/x/records/client/cli/query.go +++ b/x/records/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/records/client/cli/query_deposit_record.go b/x/records/client/cli/query_deposit_record.go index 9d052dff55..25ea372a48 100644 --- a/x/records/client/cli/query_deposit_record.go +++ b/x/records/client/cli/query_deposit_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func CmdListDepositRecord() *cobra.Command { diff --git a/x/records/client/cli/query_deposit_record_test.go b/x/records/client/cli/query_deposit_record_test.go index ecfaf98643..17edd30b73 100644 --- a/x/records/client/cli/query_deposit_record_test.go +++ b/x/records/client/cli/query_deposit_record_test.go @@ -11,10 +11,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/testutil/network" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records/client/cli" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records/client/cli" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func networkWithDepositRecordObjects(t *testing.T, n int) (*network.Network, []types.DepositRecord) { diff --git a/x/records/client/cli/query_epoch_unbonding_record.go b/x/records/client/cli/query_epoch_unbonding_record.go index 3f920f7027..b455e353c8 100644 --- a/x/records/client/cli/query_epoch_unbonding_record.go +++ b/x/records/client/cli/query_epoch_unbonding_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func CmdListEpochUnbondingRecord() *cobra.Command { diff --git a/x/records/client/cli/query_params.go b/x/records/client/cli/query_params.go index 2fc21a6299..f93a51f15b 100644 --- a/x/records/client/cli/query_params.go +++ b/x/records/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record.go b/x/records/client/cli/query_user_redemption_record.go index 5c87615d62..02f4129680 100644 --- a/x/records/client/cli/query_user_redemption_record.go +++ b/x/records/client/cli/query_user_redemption_record.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func CmdListUserRedemptionRecord() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record_test.go b/x/records/client/cli/query_user_redemption_record_test.go index b8e635af64..eb5f2167f5 100644 --- a/x/records/client/cli/query_user_redemption_record_test.go +++ b/x/records/client/cli/query_user_redemption_record_test.go @@ -14,10 +14,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/testutil/network" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records/client/cli" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records/client/cli" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func networkWithUserRedemptionRecordObjects(t *testing.T, n int) (*network.Network, []types.UserRedemptionRecord) { diff --git a/x/records/client/cli/tx.go b/x/records/client/cli/tx.go index 12beb27229..a019910b38 100644 --- a/x/records/client/cli/tx.go +++ b/x/records/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/records/genesis.go b/x/records/genesis.go index 513d662773..72a543a30b 100644 --- a/x/records/genesis.go +++ b/x/records/genesis.go @@ -3,8 +3,8 @@ package records import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/records/genesis_test.go b/x/records/genesis_test.go index d368b28b84..0e7e0910b1 100644 --- a/x/records/genesis_test.go +++ b/x/records/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records" - "github.com/Stride-Labs/stride/v12/x/records/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestGenesis(t *testing.T) { diff --git a/x/records/handler.go b/x/records/handler.go index 9f39040857..8f8ab8ec3e 100644 --- a/x/records/handler.go +++ b/x/records/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // NewHandler ... diff --git a/x/records/keeper/callback_transfer.go b/x/records/keeper/callback_transfer.go index 7ad0a33c6c..dd11fdb68c 100644 --- a/x/records/keeper/callback_transfer.go +++ b/x/records/keeper/callback_transfer.go @@ -5,8 +5,8 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_transfer_test.go b/x/records/keeper/callback_transfer_test.go index 9e6ee14bd0..22d70056e5 100644 --- a/x/records/keeper/callback_transfer_test.go +++ b/x/records/keeper/callback_transfer_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" ) const chainId = "GAIA" diff --git a/x/records/keeper/callbacks.go b/x/records/keeper/callbacks.go index 7437f3b740..d7c23b7495 100644 --- a/x/records/keeper/callbacks.go +++ b/x/records/keeper/callbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) const TRANSFER = "transfer" diff --git a/x/records/keeper/deposit_record.go b/x/records/keeper/deposit_record.go index 407503eeb1..dea497d711 100644 --- a/x/records/keeper/deposit_record.go +++ b/x/records/keeper/deposit_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // GetDepositRecordCount get the total number of depositRecord diff --git a/x/records/keeper/epoch_unbonding_record.go b/x/records/keeper/epoch_unbonding_record.go index 634d9953da..d3eb4f851e 100644 --- a/x/records/keeper/epoch_unbonding_record.go +++ b/x/records/keeper/epoch_unbonding_record.go @@ -9,9 +9,9 @@ import ( errorsmod "cosmossdk.io/errors" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // SetEpochUnbondingRecord set a specific epochUnbondingRecord in the store diff --git a/x/records/keeper/epoch_unbonding_record_test.go b/x/records/keeper/epoch_unbonding_record_test.go index ce167ae430..a7cd34dd59 100644 --- a/x/records/keeper/epoch_unbonding_record_test.go +++ b/x/records/keeper/epoch_unbonding_record_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func createNEpochUnbondingRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) ([]types.EpochUnbondingRecord, map[string]types.HostZoneUnbonding) { diff --git a/x/records/keeper/grpc_query.go b/x/records/keeper/grpc_query.go index 4b8dd0072c..b856da035a 100644 --- a/x/records/keeper/grpc_query.go +++ b/x/records/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/records/keeper/grpc_query_deposit_record.go b/x/records/keeper/grpc_query_deposit_record.go index 3ab782e000..395237ee11 100644 --- a/x/records/keeper/grpc_query_deposit_record.go +++ b/x/records/keeper/grpc_query_deposit_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func (k Keeper) DepositRecordAll(c context.Context, req *types.QueryAllDepositRecordRequest) (*types.QueryAllDepositRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_deposit_record_test.go b/x/records/keeper/grpc_query_deposit_record_test.go index 30851ac8cc..22e48ead00 100644 --- a/x/records/keeper/grpc_query_deposit_record_test.go +++ b/x/records/keeper/grpc_query_deposit_record_test.go @@ -10,13 +10,13 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func createNDepositRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.DepositRecord { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record.go b/x/records/keeper/grpc_query_epoch_unbonding_record.go index a95d27c556..e7f8444ab1 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func (k Keeper) EpochUnbondingRecordAll(c context.Context, req *types.QueryAllEpochUnbondingRecordRequest) (*types.QueryAllEpochUnbondingRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go index c951ca226e..7962664560 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestEpochUnbondingRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/grpc_query_params.go b/x/records/keeper/grpc_query_params.go index 5a563f4385..6d70488319 100644 --- a/x/records/keeper/grpc_query_params.go +++ b/x/records/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/records/keeper/grpc_query_params_test.go b/x/records/keeper/grpc_query_params_test.go index f5e6bc2004..83bb0b37ee 100644 --- a/x/records/keeper/grpc_query_params_test.go +++ b/x/records/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/records/keeper/grpc_query_user_redemption_record.go b/x/records/keeper/grpc_query_user_redemption_record.go index 374d51a74c..1d6efb49be 100644 --- a/x/records/keeper/grpc_query_user_redemption_record.go +++ b/x/records/keeper/grpc_query_user_redemption_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func (k Keeper) UserRedemptionRecordAll(c context.Context, req *types.QueryAllUserRedemptionRecordRequest) (*types.QueryAllUserRedemptionRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_for_user.go b/x/records/keeper/grpc_query_user_redemption_record_for_user.go index aee42feef2..48acee38cb 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_for_user.go +++ b/x/records/keeper/grpc_query_user_redemption_record_for_user.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func (k Keeper) UserRedemptionRecordForUser(c context.Context, req *types.QueryAllUserRedemptionRecordForUserRequest) (*types.QueryAllUserRedemptionRecordForUserResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_test.go b/x/records/keeper/grpc_query_user_redemption_record_test.go index 6c64e46f2e..40470f2749 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_test.go +++ b/x/records/keeper/grpc_query_user_redemption_record_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestUserRedemptionRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/keeper.go b/x/records/keeper/keeper.go index 7937c34025..3bc1d067f4 100644 --- a/x/records/keeper/keeper.go +++ b/x/records/keeper/keeper.go @@ -12,13 +12,13 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" ibctypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v12/utils" - icacallbackskeeper "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/utils" + icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" storetypes "github.com/cosmos/cosmos-sdk/store/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) type ( diff --git a/x/records/keeper/keeper_test.go b/x/records/keeper/keeper_test.go index d876d840ae..c57bad8253 100644 --- a/x/records/keeper/keeper_test.go +++ b/x/records/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) type KeeperTestSuite struct { diff --git a/x/records/keeper/msg_server.go b/x/records/keeper/msg_server.go index d31d491ecc..d2e063618e 100644 --- a/x/records/keeper/msg_server.go +++ b/x/records/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) type msgServer struct { diff --git a/x/records/keeper/params.go b/x/records/keeper/params.go index d38d105324..7b1db292f1 100644 --- a/x/records/keeper/params.go +++ b/x/records/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // GetParams get all parameters as types.Params diff --git a/x/records/keeper/params_test.go b/x/records/keeper/params_test.go index 730aa50c88..a616c05f2f 100644 --- a/x/records/keeper/params_test.go +++ b/x/records/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestGetParams(t *testing.T) { diff --git a/x/records/keeper/transfer_test.go b/x/records/keeper/transfer_test.go index 33e57841ec..147d2ddf20 100644 --- a/x/records/keeper/transfer_test.go +++ b/x/records/keeper/transfer_test.go @@ -9,8 +9,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" ) type TransferTestCase struct { diff --git a/x/records/keeper/user_redemption_record.go b/x/records/keeper/user_redemption_record.go index 16e4bc611f..7ed5b89c41 100644 --- a/x/records/keeper/user_redemption_record.go +++ b/x/records/keeper/user_redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // SetUserRedemptionRecord set a specific userRedemptionRecord in the store diff --git a/x/records/keeper/user_redemption_record_test.go b/x/records/keeper/user_redemption_record_test.go index 18896ab078..a426678c69 100644 --- a/x/records/keeper/user_redemption_record_test.go +++ b/x/records/keeper/user_redemption_record_test.go @@ -9,10 +9,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func createNUserRedemptionRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.UserRedemptionRecord { diff --git a/x/records/migrations/v2/convert.go b/x/records/migrations/v2/convert.go index 8632b7f9a2..b7439ef546 100644 --- a/x/records/migrations/v2/convert.go +++ b/x/records/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldrecordstypes "github.com/Stride-Labs/stride/v12/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" ) func convertToNewDepositRecord(oldDepositRecord oldrecordstypes.DepositRecord) recordstypes.DepositRecord { diff --git a/x/records/migrations/v2/convert_test.go b/x/records/migrations/v2/convert_test.go index d7c5850a3e..75d916fca0 100644 --- a/x/records/migrations/v2/convert_test.go +++ b/x/records/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - oldrecordstypes "github.com/Stride-Labs/stride/v12/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestConvertDepositRecord(t *testing.T) { diff --git a/x/records/migrations/v2/migrations.go b/x/records/migrations/v2/migrations.go index f254a11df2..4eeae76865 100644 --- a/x/records/migrations/v2/migrations.go +++ b/x/records/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldrecordtypes "github.com/Stride-Labs/stride/v12/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + oldrecordtypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" ) func migrateDepositRecord(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/records/module.go b/x/records/module.go index d6b17dc261..c2adad2cd4 100644 --- a/x/records/module.go +++ b/x/records/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/records/client/cli" - "github.com/Stride-Labs/stride/v12/x/records/keeper" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/client/cli" + "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/types" ) var ( diff --git a/x/records/module_ibc.go b/x/records/module_ibc.go index a7edb49c80..a620adff32 100644 --- a/x/records/module_ibc.go +++ b/x/records/module_ibc.go @@ -11,10 +11,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - icacallbacks "github.com/Stride-Labs/stride/v12/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbacks "github.com/Stride-Labs/stride/v13/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/records/keeper" + "github.com/Stride-Labs/stride/v13/x/records/keeper" // "google.golang.org/protobuf/proto" <-- this breaks tx parsing diff --git a/x/records/module_simulation.go b/x/records/module_simulation.go index 2bed7e2d16..d34c8a4111 100644 --- a/x/records/module_simulation.go +++ b/x/records/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v12/testutil/sample" - recordssimulation "github.com/Stride-Labs/stride/v12/x/records/simulation" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/testutil/sample" + recordssimulation "github.com/Stride-Labs/stride/v13/x/records/simulation" + "github.com/Stride-Labs/stride/v13/x/records/types" ) // avoid unused import issue diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index 979f6f5881..34cc9d94e8 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -84,8 +84,8 @@ var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ 0x27, 0xef, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x5b, 0xaa, 0xeb, 0x93, 0x98, 0x54, - 0xac, 0x0f, 0x75, 0x60, 0x99, 0xa1, 0x91, 0x7e, 0x05, 0xdc, 0x99, 0x25, 0x95, 0x05, 0xa9, 0xc5, - 0x49, 0x6c, 0x60, 0x37, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x87, 0x48, 0x8d, 0x3a, 0xc5, + 0xac, 0x0f, 0x75, 0x60, 0x99, 0xa1, 0xb1, 0x7e, 0x05, 0xdc, 0x99, 0x25, 0x95, 0x05, 0xa9, 0xc5, + 0x49, 0x6c, 0x60, 0x37, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x89, 0xd8, 0x06, 0x9f, 0xc5, 0x00, 0x00, 0x00, } diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index ceda128890..d183110c80 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -690,66 +690,66 @@ func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_ var fileDescriptor_98cfd0253c8b6797 = []byte{ // 979 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x3d, 0x6f, 0xdb, 0x46, - 0x18, 0x16, 0x45, 0x9a, 0x92, 0x5f, 0xdb, 0x8a, 0x7c, 0x56, 0x6c, 0xda, 0x49, 0x64, 0x85, 0x68, - 0x0b, 0x2d, 0x91, 0x6a, 0xb5, 0xe8, 0x50, 0x14, 0x68, 0x25, 0x4b, 0xb1, 0x99, 0x2a, 0xb2, 0x7a, + 0x18, 0x16, 0x45, 0x8a, 0x92, 0x5f, 0xdb, 0x8a, 0x7c, 0x56, 0x6c, 0xda, 0x49, 0x64, 0x85, 0x68, + 0x0b, 0x2d, 0x91, 0x6a, 0xa7, 0xe8, 0x50, 0x14, 0x68, 0x25, 0x4b, 0xb1, 0x99, 0x2a, 0xb2, 0x7a, 0x92, 0x9a, 0x22, 0x43, 0x09, 0x4a, 0x3c, 0x48, 0x84, 0x43, 0x9e, 0xc0, 0x3b, 0x19, 0x6d, 0x97, 0xfe, 0x85, 0x0e, 0x1d, 0x3a, 0x76, 0x29, 0xfa, 0x57, 0x32, 0x66, 0x2c, 0x3a, 0x04, 0x85, 0x3d, - 0xf4, 0x47, 0x74, 0x29, 0x78, 0xa4, 0x69, 0xea, 0x23, 0x09, 0x60, 0x64, 0x92, 0xf8, 0x7e, 0xdf, - 0xfb, 0x3c, 0x7c, 0x8e, 0x70, 0x9f, 0x71, 0xdf, 0xb1, 0x49, 0xd5, 0x27, 0x23, 0xea, 0xdb, 0xac, - 0x3a, 0x26, 0x1e, 0x61, 0x0e, 0xab, 0x4c, 0x7d, 0xca, 0x29, 0xca, 0x85, 0xde, 0x4a, 0xe4, 0x3d, - 0x28, 0x8c, 0xe9, 0x98, 0x0a, 0x57, 0x35, 0xf8, 0x17, 0x46, 0xe9, 0x7f, 0xa6, 0xa1, 0x30, 0x60, - 0xc4, 0xc7, 0xc4, 0x26, 0xee, 0x94, 0x3b, 0xd4, 0xc3, 0x22, 0x1e, 0xe5, 0x20, 0xed, 0xd8, 0x9a, - 0x54, 0x92, 0xca, 0xeb, 0x38, 0xed, 0xd8, 0x68, 0x17, 0x54, 0x46, 0x3c, 0x9b, 0xf8, 0x5a, 0x5a, - 0xd8, 0xa2, 0x27, 0x74, 0x00, 0x59, 0x9f, 0x8c, 0x88, 0x73, 0x41, 0x7c, 0x4d, 0x16, 0x9e, 0xf8, - 0x19, 0x3d, 0x06, 0xd5, 0x72, 0xe9, 0xcc, 0xe3, 0x9a, 0x12, 0x78, 0x1a, 0x95, 0x97, 0xaf, 0x0f, - 0x53, 0x7f, 0xbf, 0x3e, 0xfc, 0x68, 0xec, 0xf0, 0xc9, 0x6c, 0x58, 0x19, 0x51, 0xb7, 0x3a, 0xa2, - 0xcc, 0xa5, 0x2c, 0xfa, 0x79, 0xc4, 0xec, 0xf3, 0x2a, 0xff, 0x71, 0x4a, 0x58, 0xc5, 0xf0, 0x38, - 0x8e, 0xb2, 0x51, 0x01, 0xd6, 0x6c, 0xe2, 0x51, 0x57, 0x5b, 0x13, 0x0d, 0xc2, 0x07, 0x54, 0x82, - 0xcd, 0x09, 0x65, 0xdc, 0xfc, 0x89, 0x7a, 0xc4, 0x74, 0x6c, 0x4d, 0x15, 0x4e, 0x08, 0x6c, 0xcf, - 0xa9, 0x47, 0x0c, 0x1b, 0x3d, 0x84, 0x4d, 0x32, 0xa5, 0xa3, 0x89, 0xe9, 0xcd, 0xdc, 0x21, 0xf1, - 0xb5, 0x4c, 0x49, 0x2a, 0x2b, 0x78, 0x43, 0xd8, 0x3a, 0xc2, 0x84, 0xca, 0x90, 0x1f, 0xbd, 0xb0, - 0x1c, 0xd7, 0x74, 0x98, 0x39, 0x25, 0x9e, 0xed, 0x78, 0x63, 0x2d, 0x5b, 0x92, 0xca, 0x59, 0x9c, - 0x13, 0x76, 0x83, 0x75, 0x43, 0xab, 0x9e, 0x03, 0xb5, 0x6b, 0xf9, 0x96, 0xcb, 0x3e, 0x57, 0x7e, - 0xfb, 0xfd, 0x30, 0xa5, 0x77, 0x61, 0x3b, 0x5c, 0x15, 0xeb, 0x5a, 0xa3, 0x73, 0xc2, 0x9b, 0x16, - 0xb7, 0xd0, 0x11, 0x64, 0x3c, 0x6a, 0xda, 0x16, 0xb7, 0xc4, 0xea, 0x36, 0x6a, 0xbb, 0x95, 0x79, - 0x18, 0x2a, 0x1d, 0x1a, 0x04, 0x9e, 0xa6, 0xb0, 0xea, 0x89, 0x7f, 0x8d, 0x2c, 0xa8, 0x53, 0x51, - 0x40, 0xcf, 0x82, 0x1a, 0x7a, 0xf5, 0x7f, 0x65, 0xd8, 0x6a, 0x92, 0x29, 0x65, 0x0e, 0x5f, 0x82, - 0x43, 0x11, 0x70, 0xdc, 0xac, 0x36, 0xfd, 0x7e, 0x56, 0x2b, 0xbf, 0x6d, 0xb5, 0xca, 0xd2, 0x6a, - 0xbf, 0x00, 0x95, 0x71, 0x8b, 0xcf, 0x98, 0x58, 0x7b, 0xae, 0xf6, 0xc1, 0xe2, 0x39, 0xe7, 0xc6, - 0xaf, 0xf4, 0x44, 0x2c, 0x8e, 0x72, 0xd0, 0xc7, 0x50, 0xb0, 0x43, 0xbf, 0xb9, 0x02, 0x20, 0x14, - 0xf9, 0x5a, 0x09, 0x9c, 0x82, 0x7e, 0x74, 0xe6, 0x8f, 0x88, 0x40, 0xe7, 0xdd, 0xfd, 0x44, 0x2c, - 0x8e, 0x72, 0xf4, 0x09, 0xa8, 0xe1, 0x04, 0x08, 0x41, 0xae, 0x8f, 0xeb, 0x9d, 0xde, 0xe3, 0x16, - 0x36, 0xbf, 0x19, 0xb4, 0x06, 0xad, 0x7c, 0x0a, 0x69, 0x50, 0x88, 0x6d, 0x46, 0xc7, 0xec, 0xe2, - 0xb3, 0x13, 0xdc, 0xea, 0xf5, 0xf2, 0x69, 0x54, 0x80, 0x7c, 0xb3, 0xd5, 0x6e, 0x9d, 0xd4, 0xfb, - 0xc6, 0x59, 0x27, 0x8a, 0x97, 0xd0, 0x01, 0xec, 0x26, 0xac, 0xc9, 0x0c, 0x59, 0x2f, 0x83, 0x1a, - 0xf6, 0x46, 0x00, 0x6a, 0xaf, 0x8f, 0x8d, 0x66, 0xd0, 0x01, 0x41, 0xee, 0x99, 0xd1, 0x3f, 0x6d, - 0xe2, 0xfa, 0xb3, 0x7a, 0xdb, 0x34, 0x8e, 0xeb, 0x79, 0xe9, 0x89, 0x92, 0x5d, 0xcb, 0xab, 0xfa, - 0x1f, 0x0a, 0x6c, 0x9f, 0x46, 0x6b, 0x1d, 0x78, 0x43, 0x2a, 0xb8, 0x86, 0xbe, 0x85, 0x3b, 0x8c, - 0x9b, 0x9c, 0x9e, 0x13, 0xcf, 0x8c, 0x60, 0x96, 0x6e, 0x05, 0xf3, 0x16, 0xe3, 0xfd, 0xa0, 0x4a, - 0x3d, 0x44, 0xfb, 0x7b, 0xd8, 0xf1, 0x2c, 0xee, 0x5c, 0x90, 0xf9, 0xda, 0xb7, 0xa3, 0xd0, 0x76, - 0x58, 0x2a, 0x59, 0xff, 0xb6, 0x6c, 0xfa, 0x10, 0x72, 0xb3, 0xeb, 0xc3, 0x9b, 0xdc, 0x71, 0x89, - 0x78, 0xd3, 0x15, 0xbc, 0x15, 0x5b, 0xfb, 0x8e, 0x4b, 0xd0, 0x57, 0x0b, 0xa4, 0x2b, 0x2f, 0x92, - 0x60, 0x69, 0x93, 0x8b, 0xc4, 0xfb, 0x0c, 0xf6, 0x66, 0x8c, 0xf8, 0xa6, 0x1f, 0xcb, 0x9d, 0x19, - 0xe5, 0x6a, 0x99, 0x92, 0x5c, 0x5e, 0xc7, 0x77, 0x67, 0x2b, 0xc4, 0x90, 0xe9, 0x3f, 0xc7, 0x04, - 0xda, 0x81, 0x3b, 0x83, 0x4e, 0xe3, 0xac, 0xd3, 0x34, 0x3a, 0x27, 0x31, 0x83, 0xf6, 0xe1, 0xee, - 0x8d, 0x71, 0x8e, 0x10, 0x68, 0x0f, 0x76, 0x5a, 0xdf, 0x19, 0x7d, 0x73, 0x81, 0x75, 0x12, 0x7a, - 0x00, 0xfb, 0xf3, 0x8e, 0x64, 0x9e, 0x82, 0xb6, 0x60, 0xfd, 0xb8, 0x5d, 0x37, 0x9e, 0xd6, 0x1b, - 0xed, 0x56, 0x3e, 0xad, 0xff, 0x2a, 0x41, 0x41, 0xbc, 0x0f, 0xf1, 0xd1, 0x22, 0x61, 0x58, 0xd4, - 0x38, 0x69, 0x59, 0xe3, 0x7a, 0x50, 0xb8, 0xd9, 0x7f, 0xbc, 0x51, 0xa6, 0xc9, 0x25, 0xb9, 0xbc, - 0x51, 0x7b, 0xf8, 0xce, 0x25, 0x62, 0x34, 0x59, 0x34, 0xb1, 0x27, 0x4a, 0x36, 0x9d, 0x97, 0xf5, - 0xff, 0x64, 0xd8, 0x3c, 0x09, 0xaf, 0x9d, 0x60, 0x3f, 0x04, 0x7d, 0x1a, 0xa8, 0x59, 0xa0, 0x92, - 0x6f, 0xd2, 0xbf, 0x50, 0x43, 0x1b, 0x4a, 0x40, 0x36, 0x1c, 0xc5, 0xa2, 0x3d, 0xc8, 0x4c, 0xa9, - 0xcf, 0x03, 0x72, 0x44, 0xb7, 0x4b, 0xf0, 0x68, 0xd8, 0xc8, 0x81, 0x7b, 0xab, 0xf1, 0x32, 0x5f, - 0x38, 0x8c, 0x47, 0x27, 0x58, 0xd2, 0x82, 0x55, 0x17, 0x5a, 0xd4, 0x51, 0x5b, 0x85, 0x6f, 0xdb, - 0x61, 0x1c, 0x7d, 0x09, 0xf7, 0xdf, 0xd0, 0x6a, 0x14, 0x5f, 0x61, 0x0a, 0xde, 0x5f, 0x95, 0x7f, - 0x2c, 0xc8, 0xef, 0xc0, 0xbd, 0x10, 0x89, 0x1b, 0x2a, 0x27, 0x67, 0x5d, 0x5b, 0x3d, 0xeb, 0x2a, - 0x50, 0xaf, 0x67, 0x25, 0x2b, 0x7c, 0x62, 0xd6, 0x1e, 0xec, 0x5c, 0xeb, 0x67, 0xb2, 0x45, 0x46, - 0xb4, 0x78, 0xf0, 0x56, 0x69, 0x8c, 0x6a, 0x6f, 0xdb, 0x49, 0xa3, 0x28, 0x9a, 0x10, 0xe5, 0xb9, - 0x83, 0x67, 0xe7, 0x44, 0x39, 0x71, 0xe2, 0xda, 0x1a, 0xc8, 0x4f, 0xd9, 0xb8, 0xf1, 0xf5, 0xcb, - 0xcb, 0xa2, 0xf4, 0xea, 0xb2, 0x28, 0xfd, 0x73, 0x59, 0x94, 0x7e, 0xb9, 0x2a, 0xa6, 0x5e, 0x5d, - 0x15, 0x53, 0x7f, 0x5d, 0x15, 0x53, 0xcf, 0x8f, 0x12, 0x52, 0xd2, 0x13, 0x43, 0x3d, 0x6a, 0x5b, - 0x43, 0x56, 0x8d, 0x3e, 0x5c, 0x2e, 0x8e, 0x6a, 0xd5, 0x1f, 0xe2, 0xcf, 0x17, 0xa1, 0x2c, 0x43, - 0x55, 0x7c, 0x97, 0x7c, 0xf2, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xcf, 0xe2, 0x70, 0xdd, + 0xf4, 0x47, 0x74, 0x29, 0x78, 0xa4, 0x69, 0xea, 0x23, 0x09, 0x60, 0x74, 0x92, 0xf8, 0x7e, 0xdf, + 0xfb, 0x3c, 0x7c, 0x8e, 0x70, 0x9f, 0x71, 0xdf, 0xb1, 0x49, 0xcd, 0x27, 0x23, 0xea, 0xdb, 0xac, + 0x36, 0x26, 0x1e, 0x61, 0x0e, 0xab, 0x4e, 0x7d, 0xca, 0x29, 0xca, 0x87, 0xde, 0x6a, 0xe4, 0xdd, + 0x2f, 0x8e, 0xe9, 0x98, 0x0a, 0x57, 0x2d, 0xf8, 0x17, 0x46, 0xe9, 0x7f, 0xa4, 0xa1, 0x38, 0x60, + 0xc4, 0xc7, 0xc4, 0x26, 0xee, 0x94, 0x3b, 0xd4, 0xc3, 0x22, 0x1e, 0xe5, 0x21, 0xed, 0xd8, 0x9a, + 0x54, 0x96, 0x2a, 0x6b, 0x38, 0xed, 0xd8, 0x68, 0x07, 0x54, 0x46, 0x3c, 0x9b, 0xf8, 0x5a, 0x5a, + 0xd8, 0xa2, 0x27, 0xb4, 0x0f, 0x39, 0x9f, 0x8c, 0x88, 0x73, 0x41, 0x7c, 0x4d, 0x16, 0x9e, 0xf8, + 0x19, 0x3d, 0x01, 0xd5, 0x72, 0xe9, 0xcc, 0xe3, 0x9a, 0x12, 0x78, 0x1a, 0xd5, 0x57, 0x6f, 0x0e, + 0x52, 0x7f, 0xbd, 0x39, 0xf8, 0x68, 0xec, 0xf0, 0xc9, 0x6c, 0x58, 0x1d, 0x51, 0xb7, 0x36, 0xa2, + 0xcc, 0xa5, 0x2c, 0xfa, 0x79, 0xc4, 0xec, 0xf3, 0x1a, 0xff, 0x61, 0x4a, 0x58, 0xd5, 0xf0, 0x38, + 0x8e, 0xb2, 0x51, 0x11, 0x32, 0x36, 0xf1, 0xa8, 0xab, 0x65, 0x44, 0x83, 0xf0, 0x01, 0x95, 0x61, + 0x63, 0x42, 0x19, 0x37, 0x7f, 0xa4, 0x1e, 0x31, 0x1d, 0x5b, 0x53, 0x85, 0x13, 0x02, 0xdb, 0x0b, + 0xea, 0x11, 0xc3, 0x46, 0x0f, 0x61, 0x83, 0x4c, 0xe9, 0x68, 0x62, 0x7a, 0x33, 0x77, 0x48, 0x7c, + 0x2d, 0x5b, 0x96, 0x2a, 0x0a, 0x5e, 0x17, 0xb6, 0x8e, 0x30, 0xa1, 0x0a, 0x14, 0x46, 0x2f, 0x2d, + 0xc7, 0x35, 0x1d, 0x66, 0x4e, 0x89, 0x67, 0x3b, 0xde, 0x58, 0xcb, 0x95, 0xa5, 0x4a, 0x0e, 0xe7, + 0x85, 0xdd, 0x60, 0xdd, 0xd0, 0xaa, 0xe7, 0x41, 0xed, 0x5a, 0xbe, 0xe5, 0xb2, 0xcf, 0x94, 0x5f, + 0x7f, 0x3b, 0x48, 0xe9, 0x5d, 0xd8, 0x0a, 0x57, 0xc5, 0xba, 0xd6, 0xe8, 0x9c, 0xf0, 0xa6, 0xc5, + 0x2d, 0x74, 0x08, 0x59, 0x8f, 0x9a, 0xb6, 0xc5, 0x2d, 0xb1, 0xba, 0xf5, 0xa3, 0x9d, 0xea, 0x3c, + 0x0c, 0xd5, 0x0e, 0x0d, 0x02, 0x4f, 0x53, 0x58, 0xf5, 0xc4, 0xbf, 0x46, 0x0e, 0xd4, 0xa9, 0x28, + 0xa0, 0xe7, 0x40, 0x0d, 0xbd, 0xfa, 0x3f, 0x32, 0x6c, 0x36, 0xc9, 0x94, 0x32, 0x87, 0x2f, 0xc1, + 0xa1, 0x08, 0x38, 0x6e, 0x56, 0x9b, 0xfe, 0x7f, 0x56, 0x2b, 0xbf, 0x6b, 0xb5, 0xca, 0xd2, 0x6a, + 0x3f, 0x07, 0x95, 0x71, 0x8b, 0xcf, 0x98, 0x58, 0x7b, 0xfe, 0xe8, 0x83, 0xc5, 0x73, 0xce, 0x8d, + 0x5f, 0xed, 0x89, 0x58, 0x1c, 0xe5, 0xa0, 0x8f, 0xa1, 0x68, 0x87, 0x7e, 0x73, 0x05, 0x40, 0x28, + 0xf2, 0xb5, 0x12, 0x38, 0x05, 0xfd, 0xe8, 0xcc, 0x1f, 0x11, 0x81, 0xce, 0xfb, 0xfb, 0x89, 0x58, + 0x1c, 0xe5, 0xe8, 0x13, 0x50, 0xc3, 0x09, 0x10, 0x82, 0x7c, 0x1f, 0xd7, 0x3b, 0xbd, 0x27, 0x2d, + 0x6c, 0x7e, 0x3d, 0x68, 0x0d, 0x5a, 0x85, 0x14, 0xd2, 0xa0, 0x18, 0xdb, 0x8c, 0x8e, 0xd9, 0xc5, + 0x67, 0x27, 0xb8, 0xd5, 0xeb, 0x15, 0xd2, 0xa8, 0x08, 0x85, 0x66, 0xab, 0xdd, 0x3a, 0xa9, 0xf7, + 0x8d, 0xb3, 0x4e, 0x14, 0x2f, 0xa1, 0x7d, 0xd8, 0x49, 0x58, 0x93, 0x19, 0xb2, 0x5e, 0x01, 0x35, + 0xec, 0x8d, 0x00, 0xd4, 0x5e, 0x1f, 0x1b, 0xcd, 0xa0, 0x03, 0x82, 0xfc, 0x73, 0xa3, 0x7f, 0xda, + 0xc4, 0xf5, 0xe7, 0xf5, 0xb6, 0x69, 0x1c, 0xd7, 0x0b, 0xd2, 0x53, 0x25, 0x97, 0x29, 0xa8, 0xfa, + 0xef, 0x0a, 0x6c, 0x9d, 0x46, 0x6b, 0x1d, 0x78, 0x43, 0x2a, 0xb8, 0x86, 0xbe, 0x81, 0x3b, 0x8c, + 0x9b, 0x9c, 0x9e, 0x13, 0xcf, 0x8c, 0x60, 0x96, 0x6e, 0x05, 0xf3, 0x26, 0xe3, 0xfd, 0xa0, 0x4a, + 0x3d, 0x44, 0xfb, 0x3b, 0xd8, 0xf6, 0x2c, 0xee, 0x5c, 0x90, 0xf9, 0xda, 0xb7, 0xa3, 0xd0, 0x56, + 0x58, 0x2a, 0x59, 0xff, 0xb6, 0x6c, 0xfa, 0x10, 0xf2, 0xb3, 0xeb, 0xc3, 0x9b, 0xdc, 0x71, 0x89, + 0x78, 0xd3, 0x15, 0xbc, 0x19, 0x5b, 0xfb, 0x8e, 0x4b, 0xd0, 0x97, 0x0b, 0xa4, 0xab, 0x2c, 0x92, + 0x60, 0x69, 0x93, 0x8b, 0xc4, 0xfb, 0x14, 0x76, 0x67, 0x8c, 0xf8, 0xa6, 0x1f, 0xcb, 0x9d, 0x19, + 0xe5, 0x6a, 0xd9, 0xb2, 0x5c, 0x59, 0xc3, 0x77, 0x67, 0x2b, 0xc4, 0x90, 0xe9, 0x3f, 0xc5, 0x04, + 0xda, 0x86, 0x3b, 0x83, 0x4e, 0xe3, 0xac, 0xd3, 0x34, 0x3a, 0x27, 0x31, 0x83, 0xf6, 0xe0, 0xee, + 0x8d, 0x71, 0x8e, 0x10, 0x68, 0x17, 0xb6, 0x5b, 0xdf, 0x1a, 0x7d, 0x73, 0x81, 0x75, 0x12, 0x7a, + 0x00, 0x7b, 0xf3, 0x8e, 0x64, 0x9e, 0x82, 0x36, 0x61, 0xed, 0xb8, 0x5d, 0x37, 0x9e, 0xd5, 0x1b, + 0xed, 0x56, 0x21, 0xad, 0xff, 0x22, 0x41, 0x51, 0xbc, 0x0f, 0xf1, 0xd1, 0x22, 0x61, 0x58, 0xd4, + 0x38, 0x69, 0x59, 0xe3, 0x7a, 0x50, 0xbc, 0xd9, 0x7f, 0xbc, 0x51, 0xa6, 0xc9, 0x65, 0xb9, 0xb2, + 0x7e, 0xf4, 0xf0, 0xbd, 0x4b, 0xc4, 0x68, 0xb2, 0x68, 0x62, 0x4f, 0x95, 0x5c, 0xba, 0x20, 0xeb, + 0xff, 0xca, 0xb0, 0x71, 0x12, 0x5e, 0x3b, 0xc1, 0x7e, 0x08, 0xfa, 0x24, 0x50, 0xb3, 0x40, 0x25, + 0xdf, 0xa6, 0x7f, 0xa1, 0x86, 0x36, 0x94, 0x80, 0x6c, 0x38, 0x8a, 0x45, 0xbb, 0x90, 0x9d, 0x52, + 0x9f, 0x07, 0xe4, 0x88, 0x6e, 0x97, 0xe0, 0xd1, 0xb0, 0x91, 0x03, 0xf7, 0x56, 0xe3, 0x65, 0xbe, + 0x74, 0x18, 0x8f, 0x4e, 0xb0, 0xa4, 0x05, 0xab, 0x2e, 0xb4, 0xa8, 0xa3, 0xb6, 0x0a, 0xdf, 0xb6, + 0xc3, 0x38, 0xfa, 0x02, 0xee, 0xbf, 0xa5, 0xd5, 0x28, 0xbe, 0xc2, 0x14, 0xbc, 0xb7, 0x2a, 0xff, + 0x58, 0x90, 0xdf, 0x81, 0x7b, 0x21, 0x12, 0x37, 0x54, 0x4e, 0xce, 0x9a, 0x59, 0x3d, 0xeb, 0x2a, + 0x50, 0xaf, 0x67, 0x25, 0x2b, 0x7c, 0x62, 0xd6, 0x1e, 0x6c, 0x5f, 0xeb, 0x67, 0xb2, 0x45, 0x56, + 0xb4, 0x78, 0xf0, 0x4e, 0x69, 0x8c, 0x6a, 0x6f, 0xd9, 0x49, 0xa3, 0x28, 0x9a, 0x10, 0xe5, 0xb9, + 0x83, 0xe7, 0xe6, 0x44, 0x39, 0x71, 0xe2, 0xa3, 0x0c, 0xc8, 0xcf, 0xd8, 0xb8, 0xf1, 0xd5, 0xab, + 0xcb, 0x92, 0xf4, 0xfa, 0xb2, 0x24, 0xfd, 0x7d, 0x59, 0x92, 0x7e, 0xbe, 0x2a, 0xa5, 0x5e, 0x5f, + 0x95, 0x52, 0x7f, 0x5e, 0x95, 0x52, 0x2f, 0x0e, 0x13, 0x52, 0xd2, 0x13, 0x43, 0x3d, 0x6a, 0x5b, + 0x43, 0x56, 0x8b, 0x3e, 0x5c, 0x2e, 0x0e, 0x1f, 0xd7, 0xbe, 0x8f, 0x3f, 0x5f, 0x84, 0xb2, 0x0c, + 0x55, 0xf1, 0x5d, 0xf2, 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xce, 0x5f, 0x69, 0xd5, 0xdd, 0x08, 0x00, 0x00, } diff --git a/x/records/types/genesis_test.go b/x/records/types/genesis_test.go index 36fd7acbdb..f3723159c0 100644 --- a/x/records/types/genesis_test.go +++ b/x/records/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/records/types" + "github.com/Stride-Labs/stride/v13/x/records/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index de86b76b28..89db54367d 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -915,69 +915,69 @@ func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25 var fileDescriptor_25e7cc311be81f7b = []byte{ // 1002 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xcf, 0xc4, 0x49, 0x4a, 0x5f, 0x9b, 0xa8, 0x9a, 0x5a, 0x25, 0x98, 0xd6, 0x4d, 0x37, 0x15, - 0x7f, 0x42, 0xba, 0x83, 0xdd, 0xa0, 0x8a, 0x72, 0x40, 0x69, 0x21, 0x4d, 0x28, 0xaa, 0x8a, 0x51, - 0x2f, 0x3d, 0xb0, 0xdd, 0xf5, 0x4e, 0x36, 0x2b, 0xd6, 0x3b, 0xdb, 0x9d, 0x75, 0x85, 0x31, 0xbe, - 0x70, 0xe2, 0x88, 0xc4, 0x47, 0x40, 0x7c, 0x03, 0x2e, 0xdc, 0x10, 0xa7, 0x1c, 0x38, 0xb4, 0xe2, - 0xd2, 0x13, 0x42, 0x09, 0x9f, 0x03, 0xa1, 0x9d, 0x19, 0x27, 0x5e, 0x67, 0x76, 0x63, 0x5b, 0xe6, - 0xc0, 0x6d, 0x77, 0xde, 0xbf, 0xdf, 0xef, 0xcd, 0x7b, 0xf3, 0x66, 0xa0, 0xc2, 0x93, 0xd8, 0x77, - 0x29, 0x89, 0x69, 0x93, 0xc5, 0x2e, 0x27, 0x4f, 0xdb, 0x34, 0xee, 0x98, 0x51, 0xcc, 0x12, 0x86, - 0x97, 0xa4, 0xcc, 0x54, 0xb2, 0x4a, 0xd9, 0x63, 0x1e, 0x13, 0x22, 0x92, 0x7e, 0x49, 0xad, 0xca, - 0x65, 0x8f, 0x31, 0x2f, 0xa0, 0xc4, 0x8e, 0x7c, 0x62, 0x87, 0x21, 0x4b, 0xec, 0xc4, 0x67, 0x21, - 0x57, 0xd2, 0xb5, 0x26, 0xe3, 0x2d, 0xc6, 0x89, 0x63, 0x73, 0x2a, 0x9d, 0x93, 0x67, 0x35, 0x87, - 0x26, 0x76, 0x8d, 0x44, 0xb6, 0xe7, 0x87, 0x42, 0xb9, 0xef, 0x69, 0x08, 0x8b, 0x47, 0x43, 0xca, - 0x7d, 0xe5, 0xc9, 0x28, 0x03, 0xfe, 0x2c, 0xb5, 0x7f, 0x68, 0xc7, 0x76, 0x8b, 0x37, 0xe8, 0xd3, - 0x36, 0xe5, 0x89, 0x71, 0x1f, 0x2e, 0x66, 0x56, 0x79, 0xc4, 0x42, 0x4e, 0xf1, 0x06, 0x2c, 0x44, - 0x62, 0x65, 0x19, 0xad, 0xa0, 0xb7, 0xce, 0xd5, 0x2f, 0x99, 0x59, 0x2e, 0xa6, 0xd4, 0xbf, 0x33, - 0xb7, 0xff, 0xe7, 0xd5, 0x99, 0x86, 0xd2, 0x35, 0x4c, 0xb8, 0x2c, 0x9c, 0xdd, 0xa3, 0xc9, 0x47, - 0x34, 0x62, 0xdc, 0x4f, 0x1a, 0x42, 0x5d, 0x05, 0xc3, 0x4b, 0x30, 0xeb, 0xbb, 0xc2, 0xe3, 0x5c, - 0x63, 0xd6, 0x77, 0x8d, 0x2f, 0xe1, 0x4a, 0x8e, 0xbe, 0x82, 0xf1, 0x09, 0x2c, 0xb9, 0x52, 0x60, - 0xc9, 0xc0, 0x0a, 0xce, 0x95, 0x61, 0x38, 0x19, 0x73, 0x85, 0x6a, 0xd1, 0x1d, 0x5c, 0x34, 0x76, - 0x15, 0xb8, 0xcd, 0x20, 0xd0, 0x82, 0xdb, 0x02, 0x38, 0xce, 0xa8, 0x8a, 0xf3, 0x86, 0x29, 0xd3, - 0x6f, 0xa6, 0xe9, 0x37, 0xe5, 0xde, 0xaa, 0xf4, 0x9b, 0x0f, 0x6d, 0x8f, 0x2a, 0xdb, 0xc6, 0x80, - 0xa5, 0xf1, 0x33, 0x52, 0xac, 0x4e, 0x06, 0x2a, 0x60, 0x55, 0x9a, 0x8c, 0x15, 0xbe, 0x97, 0x41, - 0x3d, 0x2b, 0x50, 0xbf, 0x79, 0x2a, 0x6a, 0x09, 0x24, 0x03, 0xfb, 0x2e, 0x5c, 0x15, 0xa8, 0xb3, - 0x31, 0x3b, 0xdb, 0x8c, 0x27, 0xfd, 0x0c, 0xad, 0xc0, 0xf9, 0x3d, 0xc6, 0x13, 0xeb, 0x6b, 0x16, - 0x52, 0x4b, 0x6d, 0xe4, 0xd9, 0x06, 0xa4, 0x6b, 0x8f, 0x59, 0x48, 0x77, 0x5c, 0x23, 0x84, 0x95, - 0x7c, 0x27, 0xd3, 0x67, 0x6f, 0xbc, 0x07, 0xab, 0xfd, 0x02, 0x7a, 0xc4, 0x69, 0xdc, 0xa0, 0x2e, - 0x6d, 0x45, 0x29, 0x9d, 0xbc, 0xba, 0x3b, 0x2b, 0xea, 0xee, 0x3b, 0x04, 0xd7, 0x8b, 0xed, 0x14, - 0xd6, 0x27, 0x70, 0xa9, 0xcd, 0x69, 0x6c, 0xc5, 0x47, 0x0a, 0xd9, 0x3a, 0xbc, 0x3e, 0x8c, 0x59, - 0xe7, 0x4d, 0x41, 0x2f, 0xb7, 0x35, 0x32, 0xa3, 0xa5, 0x18, 0x6c, 0x06, 0x41, 0x11, 0x83, 0x69, - 0x15, 0xe7, 0x8b, 0x3e, 0xf3, 0xdc, 0x78, 0x23, 0x30, 0x2f, 0x4d, 0x83, 0xf9, 0xf4, 0x2a, 0xf7, - 0x05, 0x82, 0xb5, 0x22, 0x4e, 0x5b, 0x2c, 0x96, 0xcb, 0x32, 0x95, 0xaf, 0xc1, 0x2b, 0xcd, 0x3d, - 0xdb, 0x0f, 0x8f, 0x2b, 0xf8, 0x8c, 0xf8, 0xdf, 0x71, 0xf1, 0x05, 0x28, 0xb9, 0x76, 0x47, 0x60, - 0x99, 0x6b, 0xa4, 0x9f, 0x78, 0x19, 0xce, 0xd8, 0xae, 0x1b, 0x53, 0xce, 0x97, 0x4b, 0x52, 0x57, - 0xfd, 0xe2, 0x32, 0xcc, 0x07, 0x7e, 0xcb, 0x4f, 0x96, 0xe7, 0x84, 0xb6, 0xfc, 0x19, 0xda, 0xa7, - 0xf9, 0x89, 0xf7, 0xe9, 0x25, 0x82, 0x77, 0x46, 0xe2, 0xf4, 0xff, 0xdb, 0xae, 0xed, 0xe3, 0x9e, - 0xfd, 0x38, 0x62, 0xcd, 0xbd, 0x47, 0xa1, 0xc3, 0x42, 0xd7, 0x0f, 0xbd, 0x6c, 0xc5, 0x5f, 0x83, - 0xf3, 0x34, 0x15, 0x5b, 0x61, 0xbb, 0xe5, 0xd0, 0x58, 0x4d, 0x8d, 0x73, 0x62, 0xed, 0x81, 0x58, - 0xca, 0xb4, 0xb1, 0xde, 0xd5, 0x71, 0x76, 0xa4, 0xaf, 0x76, 0x5f, 0xe1, 0x94, 0x36, 0xd6, 0x79, - 0xeb, 0x67, 0x87, 0x6a, 0x64, 0x83, 0x6d, 0x5c, 0x44, 0xea, 0xbf, 0x68, 0xe3, 0x89, 0x99, 0x97, - 0xa6, 0xc1, 0x7c, 0x6a, 0x75, 0x51, 0xff, 0x65, 0x11, 0xe6, 0x05, 0x27, 0xfc, 0x0d, 0x2c, 0xc8, - 0xeb, 0x05, 0x36, 0x86, 0xe1, 0x9d, 0xbc, 0xc1, 0x54, 0x56, 0x0b, 0x75, 0x64, 0x20, 0xe3, 0xed, - 0x6f, 0xff, 0xf8, 0xfb, 0x87, 0xd9, 0x55, 0x7c, 0x8d, 0x7c, 0x2e, 0x94, 0x3f, 0xb5, 0x1d, 0x4e, - 0x86, 0xae, 0x4b, 0xf2, 0x12, 0x83, 0x7f, 0x43, 0x50, 0xd6, 0x75, 0x07, 0xbe, 0xa9, 0x0d, 0x54, - 0x3c, 0x7a, 0x2a, 0x1b, 0xe3, 0x19, 0x29, 0xb8, 0x1f, 0x0a, 0xb8, 0xef, 0xe3, 0x5b, 0x0a, 0xee, - 0x0d, 0x1d, 0x5e, 0x7d, 0xc3, 0x93, 0xae, 0xef, 0xf6, 0xf0, 0xaf, 0x08, 0x5e, 0xd5, 0x45, 0xd8, - 0x0c, 0x82, 0x1c, 0x1e, 0xc5, 0x03, 0x28, 0x87, 0xc7, 0x29, 0x53, 0xc4, 0xb8, 0x2d, 0x78, 0x6c, - 0xe0, 0xfa, 0xf8, 0x3c, 0xf0, 0x3f, 0x08, 0x5e, 0x2f, 0x38, 0xfa, 0xf0, 0xed, 0x71, 0x10, 0x65, - 0x67, 0x40, 0xe5, 0x83, 0x89, 0x6c, 0x15, 0xa9, 0x5d, 0x41, 0xea, 0x09, 0xfe, 0x62, 0x7c, 0x52, - 0xd6, 0x2e, 0x8b, 0xad, 0x54, 0x44, 0xba, 0xfd, 0x19, 0xd4, 0x23, 0x5d, 0xd7, 0xee, 0xf4, 0x48, - 0x57, 0x0d, 0x96, 0x1e, 0xe9, 0x8a, 0x51, 0xd2, 0xc3, 0xbf, 0x23, 0x28, 0xeb, 0xda, 0x31, 0xbf, - 0x10, 0x0b, 0x8e, 0x9e, 0xfc, 0x42, 0x2c, 0x3a, 0x3f, 0x8c, 0x1d, 0xc1, 0xf5, 0x2e, 0xde, 0x2c, - 0xe2, 0xaa, 0x3f, 0x61, 0x48, 0x77, 0xf0, 0xfc, 0x96, 0x25, 0xa9, 0x8b, 0x55, 0x58, 0x92, 0xe3, - 0x33, 0x3a, 0xe5, 0x44, 0x1c, 0xad, 0x24, 0xf5, 0x8c, 0xf0, 0x4f, 0x08, 0x16, 0x33, 0xb7, 0x52, - 0xbc, 0x9e, 0x97, 0x55, 0xdd, 0x13, 0xa3, 0x72, 0x63, 0x44, 0x6d, 0x05, 0xf5, 0x96, 0x80, 0x5a, - 0xc3, 0xa4, 0x08, 0x6a, 0xf6, 0x2e, 0x2d, 0xbb, 0xff, 0x47, 0x04, 0x17, 0x32, 0x2e, 0xd3, 0x1c, - 0xaf, 0xe7, 0xa5, 0x6b, 0x0c, 0xa8, 0x79, 0x4f, 0x1a, 0xa3, 0x2e, 0xa0, 0xae, 0xe3, 0xb5, 0xd1, - 0xa1, 0xe2, 0x7d, 0x04, 0x17, 0x35, 0x0f, 0x05, 0x4c, 0xb4, 0xa1, 0xf3, 0xdf, 0x25, 0x95, 0x77, - 0x47, 0x37, 0x50, 0x70, 0x1f, 0x08, 0xb8, 0xdb, 0x78, 0x6b, 0x74, 0xb8, 0x96, 0xd3, 0xb1, 0x8e, - 0x5e, 0x3f, 0xa4, 0x3b, 0xf8, 0x10, 0xea, 0xdd, 0xb9, 0xbf, 0x7f, 0x50, 0x45, 0xcf, 0x0f, 0xaa, - 0xe8, 0xaf, 0x83, 0x2a, 0xfa, 0xfe, 0xb0, 0x3a, 0xf3, 0xfc, 0xb0, 0x3a, 0xf3, 0xf2, 0xb0, 0x3a, - 0xf3, 0xb8, 0xe6, 0xf9, 0xc9, 0x5e, 0xdb, 0x31, 0x9b, 0xac, 0xa5, 0x8b, 0xf5, 0xac, 0x56, 0x27, - 0x5f, 0x1d, 0x45, 0x4c, 0x3a, 0x11, 0xe5, 0xce, 0x82, 0x78, 0xaf, 0xdf, 0xfc, 0x37, 0x00, 0x00, - 0xff, 0xff, 0xa8, 0x82, 0xc1, 0x81, 0x5b, 0x10, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0xdc, 0x44, + 0x14, 0xcf, 0x64, 0x93, 0x94, 0xbe, 0x36, 0x51, 0x35, 0x5d, 0x95, 0xb0, 0xb4, 0xdb, 0xd4, 0xa9, + 0xf8, 0x13, 0x52, 0x0f, 0x9b, 0x04, 0x55, 0x94, 0x03, 0x4a, 0x0b, 0x69, 0x42, 0x51, 0x55, 0x8c, + 0x7a, 0xe9, 0x01, 0xd7, 0x5e, 0x4f, 0x1c, 0x0b, 0xaf, 0xc7, 0xf5, 0x78, 0x2b, 0x96, 0x65, 0x2f, + 0x9c, 0x38, 0x22, 0xf1, 0x11, 0x10, 0xdf, 0x80, 0x0b, 0x37, 0xc4, 0x29, 0x07, 0x0e, 0xad, 0xb8, + 0xf4, 0x84, 0x50, 0xc2, 0xe7, 0x40, 0xc8, 0x33, 0xb3, 0xc9, 0x7a, 0x3b, 0x76, 0x76, 0xa3, 0xe5, + 0xc0, 0xcd, 0x9e, 0xf7, 0xef, 0xf7, 0x7b, 0xf3, 0xde, 0xbc, 0x19, 0xa8, 0xf1, 0x34, 0x09, 0x3c, + 0x4a, 0x12, 0xda, 0x64, 0x89, 0xc7, 0xc9, 0x93, 0x36, 0x4d, 0x3a, 0x66, 0x9c, 0xb0, 0x94, 0xe1, + 0x05, 0x29, 0x33, 0x95, 0xac, 0x56, 0xf5, 0x99, 0xcf, 0x84, 0x88, 0x64, 0x5f, 0x52, 0xab, 0x76, + 0xd9, 0x67, 0xcc, 0x0f, 0x29, 0x71, 0xe2, 0x80, 0x38, 0x51, 0xc4, 0x52, 0x27, 0x0d, 0x58, 0xc4, + 0x95, 0x74, 0xa5, 0xc9, 0x78, 0x8b, 0x71, 0xe2, 0x3a, 0x9c, 0x4a, 0xe7, 0xe4, 0x69, 0xc3, 0xa5, + 0xa9, 0xd3, 0x20, 0xb1, 0xe3, 0x07, 0x91, 0x50, 0xee, 0x7b, 0x1a, 0xc2, 0xe2, 0xd3, 0x88, 0xf2, + 0x40, 0x79, 0x32, 0xaa, 0x80, 0x3f, 0xcb, 0xec, 0x1f, 0x38, 0x89, 0xd3, 0xe2, 0x16, 0x7d, 0xd2, + 0xa6, 0x3c, 0x35, 0xee, 0xc1, 0xc5, 0xdc, 0x2a, 0x8f, 0x59, 0xc4, 0x29, 0xde, 0x80, 0xb9, 0x58, + 0xac, 0x2c, 0xa2, 0x25, 0xf4, 0xd6, 0xb9, 0xb5, 0x4b, 0x66, 0x9e, 0x8b, 0x29, 0xf5, 0x6f, 0xcf, + 0xec, 0xff, 0x79, 0x75, 0xca, 0x52, 0xba, 0x86, 0x09, 0x97, 0x85, 0xb3, 0xbb, 0x34, 0xfd, 0x88, + 0xc6, 0x8c, 0x07, 0xa9, 0x25, 0xd4, 0x55, 0x30, 0xbc, 0x00, 0xd3, 0x81, 0x27, 0x3c, 0xce, 0x58, + 0xd3, 0x81, 0x67, 0x7c, 0x09, 0x57, 0x0a, 0xf4, 0x15, 0x8c, 0x4f, 0x60, 0xc1, 0x93, 0x02, 0x5b, + 0x06, 0x56, 0x70, 0xae, 0x0c, 0xc3, 0xc9, 0x99, 0x2b, 0x54, 0xf3, 0xde, 0xe0, 0xa2, 0xb1, 0xab, + 0xc0, 0x6d, 0x86, 0xa1, 0x16, 0xdc, 0x16, 0xc0, 0x71, 0x46, 0x55, 0x9c, 0x37, 0x4c, 0x99, 0x7e, + 0x33, 0x4b, 0xbf, 0x29, 0xf7, 0x56, 0xa5, 0xdf, 0x7c, 0xe0, 0xf8, 0x54, 0xd9, 0x5a, 0x03, 0x96, + 0xc6, 0xcf, 0x48, 0xb1, 0x7a, 0x39, 0x50, 0x09, 0xab, 0xca, 0xe9, 0x58, 0xe1, 0xbb, 0x39, 0xd4, + 0xd3, 0x02, 0xf5, 0x9b, 0x27, 0xa2, 0x96, 0x40, 0x72, 0xb0, 0xef, 0xc0, 0x55, 0x81, 0x3a, 0x1f, + 0xb3, 0xb3, 0xcd, 0x78, 0xda, 0xcf, 0xd0, 0x12, 0x9c, 0xdf, 0x63, 0x3c, 0xb5, 0xbf, 0x66, 0x11, + 0xb5, 0xd5, 0x46, 0x9e, 0xb5, 0x20, 0x5b, 0x7b, 0xc4, 0x22, 0xba, 0xe3, 0x19, 0x11, 0x2c, 0x15, + 0x3b, 0x99, 0x3c, 0x7b, 0xe3, 0x3d, 0x58, 0xee, 0x17, 0xd0, 0x43, 0x4e, 0x13, 0x8b, 0x7a, 0xb4, + 0x15, 0x67, 0x74, 0x8a, 0xea, 0xee, 0xac, 0xa8, 0xbb, 0xef, 0x10, 0x5c, 0x2f, 0xb7, 0x53, 0x58, + 0x1f, 0xc3, 0xa5, 0x36, 0xa7, 0x89, 0x9d, 0x1c, 0x29, 0xe4, 0xeb, 0xf0, 0xfa, 0x30, 0x66, 0x9d, + 0x37, 0x05, 0xbd, 0xda, 0xd6, 0xc8, 0x8c, 0x96, 0x62, 0xb0, 0x19, 0x86, 0x65, 0x0c, 0x26, 0x55, + 0x9c, 0xcf, 0xfb, 0xcc, 0x0b, 0xe3, 0x8d, 0xc0, 0xbc, 0x32, 0x09, 0xe6, 0x93, 0xab, 0xdc, 0xe7, + 0x08, 0x56, 0xca, 0x38, 0x6d, 0xb1, 0x44, 0x2e, 0xcb, 0x54, 0xbe, 0x06, 0xaf, 0x34, 0xf7, 0x9c, + 0x20, 0x3a, 0xae, 0xe0, 0x33, 0xe2, 0x7f, 0xc7, 0xc3, 0x17, 0xa0, 0xe2, 0x39, 0x1d, 0x81, 0x65, + 0xc6, 0xca, 0x3e, 0xf1, 0x22, 0x9c, 0x71, 0x3c, 0x2f, 0xa1, 0x9c, 0x2f, 0x56, 0xa4, 0xae, 0xfa, + 0xc5, 0x55, 0x98, 0x0d, 0x83, 0x56, 0x90, 0x2e, 0xce, 0x08, 0x6d, 0xf9, 0x33, 0xb4, 0x4f, 0xb3, + 0xa7, 0xde, 0xa7, 0x17, 0x08, 0xde, 0x19, 0x89, 0xd3, 0xff, 0x6f, 0xbb, 0xb6, 0x8f, 0x7b, 0xf6, + 0xe3, 0x98, 0x35, 0xf7, 0x1e, 0x46, 0x2e, 0x8b, 0xbc, 0x20, 0xf2, 0xf3, 0x15, 0x7f, 0x0d, 0xce, + 0xd3, 0x4c, 0x6c, 0x47, 0xed, 0x96, 0x4b, 0x13, 0x35, 0x35, 0xce, 0x89, 0xb5, 0xfb, 0x62, 0x29, + 0xd7, 0xc6, 0x7a, 0x57, 0xc7, 0xd9, 0x91, 0xbe, 0xda, 0x7d, 0x85, 0x13, 0xda, 0x58, 0xe7, 0xad, + 0x9f, 0x1d, 0xaa, 0x91, 0x0d, 0xb6, 0x71, 0x19, 0xa9, 0xff, 0xa2, 0x8d, 0x4f, 0xcd, 0xbc, 0x32, + 0x09, 0xe6, 0x13, 0xab, 0x8b, 0xb5, 0x5f, 0xe6, 0x61, 0x56, 0x70, 0xc2, 0xdf, 0xc0, 0x9c, 0xbc, + 0x5e, 0x60, 0x63, 0x18, 0xde, 0xcb, 0x37, 0x98, 0xda, 0x72, 0xa9, 0x8e, 0x0c, 0x64, 0xbc, 0xfd, + 0xed, 0x1f, 0x7f, 0xff, 0x30, 0xbd, 0x8c, 0xaf, 0x91, 0xcf, 0x85, 0xf2, 0xa7, 0x8e, 0xcb, 0xc9, + 0xd0, 0x75, 0x49, 0x5e, 0x62, 0xf0, 0x6f, 0x08, 0xaa, 0xba, 0xee, 0xc0, 0xeb, 0xda, 0x40, 0xe5, + 0xa3, 0xa7, 0xb6, 0x31, 0x9e, 0x91, 0x82, 0xfb, 0xa1, 0x80, 0xfb, 0x3e, 0xbe, 0xa9, 0xe0, 0xde, + 0xd0, 0xe1, 0xd5, 0x37, 0x3c, 0xe9, 0x06, 0x5e, 0x0f, 0xff, 0x8a, 0xe0, 0x55, 0x5d, 0x84, 0xcd, + 0x30, 0x2c, 0xe0, 0x51, 0x3e, 0x80, 0x0a, 0x78, 0x9c, 0x30, 0x45, 0x8c, 0x5b, 0x82, 0xc7, 0x06, + 0x5e, 0x1b, 0x9f, 0x07, 0xfe, 0x07, 0xc1, 0xeb, 0x25, 0x47, 0x1f, 0xbe, 0x35, 0x0e, 0xa2, 0xfc, + 0x0c, 0xa8, 0x7d, 0x70, 0x2a, 0x5b, 0x45, 0x6a, 0x57, 0x90, 0x7a, 0x8c, 0xbf, 0x18, 0x9f, 0x94, + 0xbd, 0xcb, 0x12, 0x3b, 0x13, 0x91, 0x6e, 0x7f, 0x06, 0xf5, 0x48, 0xd7, 0x73, 0x3a, 0x3d, 0xd2, + 0x55, 0x83, 0xa5, 0x47, 0xba, 0x62, 0x94, 0xf4, 0xf0, 0xef, 0x08, 0xaa, 0xba, 0x76, 0x2c, 0x2e, + 0xc4, 0x92, 0xa3, 0xa7, 0xb8, 0x10, 0xcb, 0xce, 0x0f, 0x63, 0x47, 0x70, 0xbd, 0x83, 0x37, 0xcb, + 0xb8, 0xea, 0x4f, 0x18, 0xd2, 0x1d, 0x3c, 0xbf, 0x65, 0x49, 0xea, 0x62, 0x95, 0x96, 0xe4, 0xf8, + 0x8c, 0x4e, 0x38, 0x11, 0x47, 0x2b, 0x49, 0x3d, 0x23, 0xfc, 0x13, 0x82, 0xf9, 0xdc, 0xad, 0x14, + 0xaf, 0x16, 0x65, 0x55, 0xf7, 0xc4, 0xa8, 0xdd, 0x18, 0x51, 0x5b, 0x41, 0xbd, 0x29, 0xa0, 0x36, + 0x30, 0x29, 0x83, 0x9a, 0xbf, 0x4b, 0xcb, 0xee, 0xff, 0x11, 0xc1, 0x85, 0x9c, 0xcb, 0x2c, 0xc7, + 0xab, 0x45, 0xe9, 0x1a, 0x03, 0x6a, 0xd1, 0x93, 0xc6, 0x58, 0x13, 0x50, 0x57, 0xf1, 0xca, 0xe8, + 0x50, 0xf1, 0x3e, 0x82, 0x8b, 0x9a, 0x87, 0x02, 0x26, 0xda, 0xd0, 0xc5, 0xef, 0x92, 0xda, 0xbb, + 0xa3, 0x1b, 0x28, 0xb8, 0xf7, 0x05, 0xdc, 0x6d, 0xbc, 0x35, 0x3a, 0x5c, 0xdb, 0xed, 0xd8, 0x47, + 0xaf, 0x1f, 0xd2, 0x1d, 0x7c, 0x08, 0xf5, 0x6e, 0xdf, 0xdb, 0x3f, 0xa8, 0xa3, 0x67, 0x07, 0x75, + 0xf4, 0xd7, 0x41, 0x1d, 0x7d, 0x7f, 0x58, 0x9f, 0x7a, 0x76, 0x58, 0x9f, 0x7a, 0x71, 0x58, 0x9f, + 0x7a, 0xd4, 0xf0, 0x83, 0x74, 0xaf, 0xed, 0x9a, 0x4d, 0xd6, 0xd2, 0xc5, 0x7a, 0xda, 0x58, 0x27, + 0x5f, 0x1d, 0x45, 0x4c, 0x3b, 0x31, 0xe5, 0xee, 0x9c, 0x78, 0xaf, 0xaf, 0xff, 0x1b, 0x00, 0x00, + 0xff, 0xff, 0xa6, 0x12, 0x4a, 0x24, 0x5b, 0x10, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/abci.go b/x/stakeibc/abci.go index e6c32782c6..1a36ef98cf 100644 --- a/x/stakeibc/abci.go +++ b/x/stakeibc/abci.go @@ -6,8 +6,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/stakeibc/client/cli/query.go b/x/stakeibc/client/cli/query.go index 8b9c9d1277..92590c9714 100644 --- a/x/stakeibc/client/cli/query.go +++ b/x/stakeibc/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/stakeibc/client/cli/query_epoch_tracker.go b/x/stakeibc/client/cli/query_epoch_tracker.go index 6d5b237394..a4eed93d2e 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker.go +++ b/x/stakeibc/client/cli/query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdListEpochTracker() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_epoch_tracker_test.go b/x/stakeibc/client/cli/query_epoch_tracker_test.go index 74f674696e..91787f3055 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker_test.go +++ b/x/stakeibc/client/cli/query_epoch_tracker_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/testutil/network" - "github.com/Stride-Labs/stride/v12/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v13/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/client/cli/query_host_zone.go b/x/stakeibc/client/cli/query_host_zone.go index dba2c61d24..8bf2b8be57 100644 --- a/x/stakeibc/client/cli/query_host_zone.go +++ b/x/stakeibc/client/cli/query_host_zone.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdListHostZone() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_module_address.go b/x/stakeibc/client/cli/query_module_address.go index 688ab4ce48..0d6133a523 100644 --- a/x/stakeibc/client/cli/query_module_address.go +++ b/x/stakeibc/client/cli/query_module_address.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/query_next_packet_sequence.go b/x/stakeibc/client/cli/query_next_packet_sequence.go index b30c8bd85b..1df7473b10 100644 --- a/x/stakeibc/client/cli/query_next_packet_sequence.go +++ b/x/stakeibc/client/cli/query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdNextPacketSequence() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_params.go b/x/stakeibc/client/cli/query_params.go index d4609aab27..8e6dc62eb5 100644 --- a/x/stakeibc/client/cli/query_params.go +++ b/x/stakeibc/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_register_ica.go b/x/stakeibc/client/cli/query_register_ica.go index 51e0d58eb8..7aeb6eb03c 100644 --- a/x/stakeibc/client/cli/query_register_ica.go +++ b/x/stakeibc/client/cli/query_register_ica.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdShowInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_validator.go b/x/stakeibc/client/cli/query_validator.go index 35a03402ec..5cbaa03595 100644 --- a/x/stakeibc/client/cli/query_validator.go +++ b/x/stakeibc/client/cli/query_validator.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdShowValidators() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index d0702873c5..e7b3dfdf4b 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/stakeibc/client/cli/tx_add_validators.go b/x/stakeibc/client/cli/tx_add_validators.go index f179a99e5d..f57489495a 100644 --- a/x/stakeibc/client/cli/tx_add_validators.go +++ b/x/stakeibc/client/cli/tx_add_validators.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ValidatorsList struct { diff --git a/x/stakeibc/client/cli/tx_add_validators_proposal.go b/x/stakeibc/client/cli/tx_add_validators_proposal.go index 44179fa228..bdd596fe5b 100644 --- a/x/stakeibc/client/cli/tx_add_validators_proposal.go +++ b/x/stakeibc/client/cli/tx_add_validators_proposal.go @@ -18,7 +18,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func parseAddValidatorsProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.AddValidatorsProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_change_validator_weight.go b/x/stakeibc/client/cli/tx_change_validator_weight.go index 07df7b8f90..9d7f3cc240 100644 --- a/x/stakeibc/client/cli/tx_change_validator_weight.go +++ b/x/stakeibc/client/cli/tx_change_validator_weight.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go index f54e6a2fbb..1486181a15 100644 --- a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go +++ b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_clear_balance.go b/x/stakeibc/client/cli/tx_clear_balance.go index b728038113..530da9569b 100644 --- a/x/stakeibc/client/cli/tx_clear_balance.go +++ b/x/stakeibc/client/cli/tx_clear_balance.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_delete_validator.go b/x/stakeibc/client/cli/tx_delete_validator.go index 582f794c39..af004ebe40 100644 --- a/x/stakeibc/client/cli/tx_delete_validator.go +++ b/x/stakeibc/client/cli/tx_delete_validator.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func CmdDeleteValidator() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_liquid_stake.go b/x/stakeibc/client/cli/tx_liquid_stake.go index 22bfd601a0..65cfbfa313 100644 --- a/x/stakeibc/client/cli/tx_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_liquid_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_rebalance_validators.go b/x/stakeibc/client/cli/tx_rebalance_validators.go index cf7b1f4c98..89b394f9ba 100644 --- a/x/stakeibc/client/cli/tx_rebalance_validators.go +++ b/x/stakeibc/client/cli/tx_rebalance_validators.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_redeem_stake.go b/x/stakeibc/client/cli/tx_redeem_stake.go index c75a619d13..513c9fa204 100644 --- a/x/stakeibc/client/cli/tx_redeem_stake.go +++ b/x/stakeibc/client/cli/tx_redeem_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_register_host_zone.go b/x/stakeibc/client/cli/tx_register_host_zone.go index 0a91181411..89d4c695d9 100644 --- a/x/stakeibc/client/cli/tx_register_host_zone.go +++ b/x/stakeibc/client/cli/tx_register_host_zone.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/client/cli/tx_restore_interchain_account.go b/x/stakeibc/client/cli/tx_restore_interchain_account.go index d276965325..a06bd57010 100644 --- a/x/stakeibc/client/cli/tx_restore_interchain_account.go +++ b/x/stakeibc/client/cli/tx_restore_interchain_account.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_update_delegation.go b/x/stakeibc/client/cli/tx_update_delegation.go index e25301d998..98c84013d2 100644 --- a/x/stakeibc/client/cli/tx_update_delegation.go +++ b/x/stakeibc/client/cli/tx_update_delegation.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/proposal_handler.go b/x/stakeibc/client/proposal_handler.go index 0312385db4..ee8c76edb1 100644 --- a/x/stakeibc/client/proposal_handler.go +++ b/x/stakeibc/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v12/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v13/x/stakeibc/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/stakeibc/genesis.go b/x/stakeibc/genesis.go index 05763bf6e2..7effacd469 100644 --- a/x/stakeibc/genesis.go +++ b/x/stakeibc/genesis.go @@ -3,8 +3,8 @@ package stakeibc import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/stakeibc/genesis_test.go b/x/stakeibc/genesis_test.go index 8413a1fc0a..2a2f451e92 100644 --- a/x/stakeibc/genesis_test.go +++ b/x/stakeibc/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/stakeibc" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/stakeibc" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestGenesis(t *testing.T) { diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index fe12c548fd..3cc25ff2d3 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // NewHandler ... diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index b6c17114cb..8c2b86d403 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -11,8 +11,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go index dfce9aee62..90794cea63 100644 --- a/x/stakeibc/keeper/consumer.go +++ b/x/stakeibc/keeper/consumer.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Register new stTokens to the consumer reward denom whitelist diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index 9d8b0adc03..e1c51fbb76 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { diff --git a/x/stakeibc/keeper/deposit_records.go b/x/stakeibc/keeper/deposit_records.go index 02adcc0f93..42f3229261 100644 --- a/x/stakeibc/keeper/deposit_records.go +++ b/x/stakeibc/keeper/deposit_records.go @@ -11,9 +11,9 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/utils" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Create a new deposit record for each host zone for the given epoch diff --git a/x/stakeibc/keeper/deposit_records_test.go b/x/stakeibc/keeper/deposit_records_test.go index ee92809973..22f266ad17 100644 --- a/x/stakeibc/keeper/deposit_records_test.go +++ b/x/stakeibc/keeper/deposit_records_test.go @@ -12,10 +12,10 @@ import ( sdkmath "cosmossdk.io/math" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type TestDepositRecords struct { diff --git a/x/stakeibc/keeper/epoch_elapsed_shares_test.go b/x/stakeibc/keeper/epoch_elapsed_shares_test.go index eb5f234510..f0da082d40 100644 --- a/x/stakeibc/keeper/epoch_elapsed_shares_test.go +++ b/x/stakeibc/keeper/epoch_elapsed_shares_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // These are used to indicate that the value does not matter for the sake of the test diff --git a/x/stakeibc/keeper/epoch_tracker.go b/x/stakeibc/keeper/epoch_tracker.go index 37d4f0ce0f..9a9e5b093a 100644 --- a/x/stakeibc/keeper/epoch_tracker.go +++ b/x/stakeibc/keeper/epoch_tracker.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // SetEpochTracker set a specific epochTracker in the store from its index diff --git a/x/stakeibc/keeper/epoch_tracker_test.go b/x/stakeibc/keeper/epoch_tracker_test.go index d127334e05..afeeb855cf 100644 --- a/x/stakeibc/keeper/epoch_tracker_test.go +++ b/x/stakeibc/keeper/epoch_tracker_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/gov.go b/x/stakeibc/keeper/gov.go index 7e14faa36c..8c276d50c5 100644 --- a/x/stakeibc/keeper/gov.go +++ b/x/stakeibc/keeper/gov.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) AddValidatorsProposal(ctx sdk.Context, msg *types.AddValidatorsProposal) error { diff --git a/x/stakeibc/keeper/grpc_query.go b/x/stakeibc/keeper/grpc_query.go index eef97f7ee2..e08fa58582 100644 --- a/x/stakeibc/keeper/grpc_query.go +++ b/x/stakeibc/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/stakeibc/keeper/grpc_query_address_unbondings.go b/x/stakeibc/keeper/grpc_query_address_unbondings.go index c0bbd8c5f9..6a93b5e7d1 100644 --- a/x/stakeibc/keeper/grpc_query_address_unbondings.go +++ b/x/stakeibc/keeper/grpc_query_address_unbondings.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) const nanosecondsInDay = 86400000000000 diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker.go b/x/stakeibc/keeper/grpc_query_epoch_tracker.go index 09642970f9..a1d6216da6 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) EpochTrackerAll(c context.Context, req *types.QueryAllEpochTrackerRequest) (*types.QueryAllEpochTrackerResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go index 0a5044236e..f85c3c6b85 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go @@ -9,9 +9,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/grpc_query_host_zone.go b/x/stakeibc/keeper/grpc_query_host_zone.go index d4675011ec..5f712a179a 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone.go +++ b/x/stakeibc/keeper/grpc_query_host_zone.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) HostZoneAll(c context.Context, req *types.QueryAllHostZoneRequest) (*types.QueryAllHostZoneResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_host_zone_test.go b/x/stakeibc/keeper/grpc_query_host_zone_test.go index e95f750964..4a0bdc8697 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone_test.go +++ b/x/stakeibc/keeper/grpc_query_host_zone_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestHostZoneQuerySingle(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_module_address.go b/x/stakeibc/keeper/grpc_query_module_address.go index b59ed92206..683c02b01a 100644 --- a/x/stakeibc/keeper/grpc_query_module_address.go +++ b/x/stakeibc/keeper/grpc_query_module_address.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) ModuleAddress(goCtx context.Context, req *types.QueryModuleAddressRequest) (*types.QueryModuleAddressResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go index 871f53fa93..c012feafad 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) NextPacketSequence(c context.Context, req *types.QueryGetNextPacketSequenceRequest) (*types.QueryGetNextPacketSequenceResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go index 518f2dea71..5872015518 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (s *KeeperTestSuite) TestNextPacketSequenceQuery() { diff --git a/x/stakeibc/keeper/grpc_query_params.go b/x/stakeibc/keeper/grpc_query_params.go index 944f935726..11a97d2e69 100644 --- a/x/stakeibc/keeper/grpc_query_params.go +++ b/x/stakeibc/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_params_test.go b/x/stakeibc/keeper/grpc_query_params_test.go index ccf25a5bf6..dbe39124ff 100644 --- a/x/stakeibc/keeper/grpc_query_params_test.go +++ b/x/stakeibc/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_register_ica.go b/x/stakeibc/keeper/grpc_query_register_ica.go index 2ef52a59ee..e49b1c65c5 100644 --- a/x/stakeibc/keeper/grpc_query_register_ica.go +++ b/x/stakeibc/keeper/grpc_query_register_ica.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // InterchainAccountFromAddress implements the Query/InterchainAccountFromAddress gRPC method diff --git a/x/stakeibc/keeper/grpc_query_validator.go b/x/stakeibc/keeper/grpc_query_validator.go index 2d80f4895b..0f09e2b60b 100644 --- a/x/stakeibc/keeper/grpc_query_validator.go +++ b/x/stakeibc/keeper/grpc_query_validator.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) Validators(c context.Context, req *types.QueryGetValidatorsRequest) (*types.QueryGetValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_validator_test.go b/x/stakeibc/keeper/grpc_query_validator_test.go index ce4470ed2b..e80bab24ce 100644 --- a/x/stakeibc/keeper/grpc_query_validator_test.go +++ b/x/stakeibc/keeper/grpc_query_validator_test.go @@ -8,9 +8,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestValidatorQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index 3cf0554137..c6bf23f936 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/utils" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icaoracletypes "github.com/Stride-Labs/stride/v12/x/icaoracle/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icaoracletypes "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInfo) { diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index 20f8236441..f94434bb02 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -13,8 +13,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // SetHostZone set a specific hostZone in the store diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index 0803bbbbcb..f75298164e 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -9,10 +9,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/testutil/nullify" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/testutil/nullify" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.HostZone { diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index a023510b80..773e5674aa 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) const ( diff --git a/x/stakeibc/keeper/icacallbacks_claim.go b/x/stakeibc/keeper/icacallbacks_claim.go index 80f541ea22..54682c82bb 100644 --- a/x/stakeibc/keeper/icacallbacks_claim.go +++ b/x/stakeibc/keeper/icacallbacks_claim.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v12/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_claim_test.go b/x/stakeibc/keeper/icacallbacks_claim_test.go index 44a4fb2269..7f007f93eb 100644 --- a/x/stakeibc/keeper/icacallbacks_claim_test.go +++ b/x/stakeibc/keeper/icacallbacks_claim_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ClaimCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index 6945ddd8d1..34a9a46fa7 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -5,11 +5,11 @@ import ( "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/utils" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index a45bc87c53..65af67b5fa 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -6,10 +6,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type DelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_rebalance.go b/x/stakeibc/keeper/icacallbacks_rebalance.go index 8872e17063..1a8975fd92 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance.go @@ -3,9 +3,9 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v12/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_rebalance_test.go b/x/stakeibc/keeper/icacallbacks_rebalance_test.go index fa5eb5f034..1f1cb052d9 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance_test.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance_test.go @@ -5,8 +5,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type RebalanceCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_redemption.go b/x/stakeibc/keeper/icacallbacks_redemption.go index bcd70f6b54..cfc579a318 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption.go +++ b/x/stakeibc/keeper/icacallbacks_redemption.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v12/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_redemption_test.go b/x/stakeibc/keeper/icacallbacks_redemption_test.go index 16387d731f..9fc080ff7f 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption_test.go +++ b/x/stakeibc/keeper/icacallbacks_redemption_test.go @@ -7,10 +7,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type RedemptionCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_reinvest.go b/x/stakeibc/keeper/icacallbacks_reinvest.go index f8b09e86aa..8af9eed793 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest.go @@ -7,13 +7,13 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v12/utils" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_reinvest_test.go b/x/stakeibc/keeper/icacallbacks_reinvest_test.go index 0c46098118..127b3b6fbc 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest_test.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest_test.go @@ -7,16 +7,16 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ReinvestCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index cd43b884b1..ca20649086 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index 697a660fcc..cd878e4f4c 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -11,9 +11,9 @@ import ( sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type UndelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index dee0ab2df1..6d66411aa2 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) const ( diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index 91eb4819cb..cbb75738e4 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -10,10 +10,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v12/utils" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index 1fc316493f..cd1c0ff8d5 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -8,10 +8,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type DelegatorSharesICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance.go b/x/stakeibc/keeper/icqcallbacks_fee_balance.go index f02c3d5ae1..fe0e176d26 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance.go @@ -11,11 +11,11 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/utils" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqkeeper "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // FeeBalanceCallback is a callback handler for FeeBalnce queries. diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go index 4f1cb2427d..8302721b8e 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go @@ -8,10 +8,10 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type FeeBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index 5097128256..81b33fa2a0 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -7,10 +7,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v12/utils" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // ValidatorCallback is a callback handler for validator queries. diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index afe39c79e3..67c88338b9 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -9,10 +9,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ValidatorICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go index 8186b213d5..c4d6224d05 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go @@ -12,11 +12,11 @@ import ( proto "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - icqkeeper "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/utils" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // WithdrawalBalanceCallback is a callback handler for WithdrawalBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go index 5e817bd9d5..2841db4a94 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go @@ -9,11 +9,11 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type WithdrawalBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index 99b643274e..789a48bc60 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - icqkeeper "github.com/Stride-Labs/stride/v12/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -23,9 +23,9 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v12/x/icacallbacks/keeper" - recordsmodulekeeper "github.com/Stride-Labs/stride/v12/x/records/keeper" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + recordsmodulekeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" ) type ( diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index d9e05a9924..431d23b3b9 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index 95b8975c8c..88e36b71a9 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type msgServer struct { diff --git a/x/stakeibc/keeper/msg_server_add_validators.go b/x/stakeibc/keeper/msg_server_add_validators.go index 53ab57b393..60c2f3f879 100644 --- a/x/stakeibc/keeper/msg_server_add_validators.go +++ b/x/stakeibc/keeper/msg_server_add_validators.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k msgServer) AddValidators(goCtx context.Context, msg *types.MsgAddValidators) (*types.MsgAddValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_add_validators_test.go b/x/stakeibc/keeper/msg_server_add_validators_test.go index da1124ccb2..cf9ec4cd98 100644 --- a/x/stakeibc/keeper/msg_server_add_validators_test.go +++ b/x/stakeibc/keeper/msg_server_add_validators_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type AddValidatorsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_change_validator_weight.go b/x/stakeibc/keeper/msg_server_change_validator_weight.go index 7724bed069..d5ca9768ae 100644 --- a/x/stakeibc/keeper/msg_server_change_validator_weight.go +++ b/x/stakeibc/keeper/msg_server_change_validator_weight.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k msgServer) ChangeValidatorWeight(goCtx context.Context, msg *types.MsgChangeValidatorWeight) (*types.MsgChangeValidatorWeightResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go index ddbf089cd5..b893578b3d 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go @@ -4,15 +4,15 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" proto "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type IcaTx struct { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go index 765f311302..92762c6620 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go @@ -11,10 +11,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ClaimUndelegatedState struct { diff --git a/x/stakeibc/keeper/msg_server_clear_balance.go b/x/stakeibc/keeper/msg_server_clear_balance.go index d15de75f9e..603fac2ef9 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance.go +++ b/x/stakeibc/keeper/msg_server_clear_balance.go @@ -10,7 +10,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalance) (*types.MsgClearBalanceResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_clear_balance_test.go b/x/stakeibc/keeper/msg_server_clear_balance_test.go index 1bb25a7e8b..05479a3ea4 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance_test.go +++ b/x/stakeibc/keeper/msg_server_clear_balance_test.go @@ -9,8 +9,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ClearBalanceState struct { diff --git a/x/stakeibc/keeper/msg_server_delete_validator.go b/x/stakeibc/keeper/msg_server_delete_validator.go index 048fbb4ae3..9b19a68b49 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator.go +++ b/x/stakeibc/keeper/msg_server_delete_validator.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k msgServer) DeleteValidator(goCtx context.Context, msg *types.MsgDeleteValidator) (*types.MsgDeleteValidatorResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_delete_validator_test.go b/x/stakeibc/keeper/msg_server_delete_validator_test.go index db93c9af94..05cc896915 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator_test.go +++ b/x/stakeibc/keeper/msg_server_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type DeleteValidatorTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_liquid_stake.go b/x/stakeibc/keeper/msg_server_liquid_stake.go index d0326648bc..a4119760e2 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Exchanges a user's native tokens for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_liquid_stake_test.go index 7ff91a204e..3f5d9aa051 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type Account struct { diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators.go b/x/stakeibc/keeper/msg_server_rebalance_validators.go index 84402fbb3d..c542e9e5f7 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators.go @@ -13,8 +13,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k msgServer) RebalanceValidators(goCtx context.Context, msg *types.MsgRebalanceValidators) (*types.MsgRebalanceValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators_test.go b/x/stakeibc/keeper/msg_server_rebalance_validators_test.go index 6ddb74ef7a..0d3e019c92 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators_test.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators_test.go @@ -8,9 +8,9 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type RebalanceValidatorsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake.go b/x/stakeibc/keeper/msg_server_redeem_stake.go index 57d3eea072..1a028875e6 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake.go @@ -4,14 +4,14 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake_test.go b/x/stakeibc/keeper/msg_server_redeem_stake_test.go index bbaeb75689..3f2e97efaf 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake_test.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type RedeemStakeState struct { diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index ee2fb09477..d8050f8780 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v12/utils" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/msg_server_register_host_zone_test.go b/x/stakeibc/keeper/msg_server_register_host_zone_test.go index 748c9054a2..e83e014e27 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone_test.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone_test.go @@ -12,10 +12,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type RegisterHostZoneTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account.go b/x/stakeibc/keeper/msg_server_restore_interchain_account.go index c70f1542de..4967586f1a 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.MsgRestoreInterchainAccount) (*types.MsgRestoreInterchainAccountResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go index 5d185dda97..5d4cdead2f 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go @@ -10,8 +10,8 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type DepositRecordStatusUpdate struct { diff --git a/x/stakeibc/keeper/msg_server_submit_tx.go b/x/stakeibc/keeper/msg_server_submit_tx.go index f7fd029ef6..945d7f3ff7 100644 --- a/x/stakeibc/keeper/msg_server_submit_tx.go +++ b/x/stakeibc/keeper/msg_server_submit_tx.go @@ -10,11 +10,11 @@ import ( proto "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v12/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v12/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" @@ -22,8 +22,8 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v12/x/interchainquery/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" sdk "github.com/cosmos/cosmos-sdk/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" diff --git a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go index 8ff367510d..99d01bdd1d 100644 --- a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go +++ b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // This kicks off two ICQs, each with a callback, that will update the number of tokens on a validator diff --git a/x/stakeibc/keeper/params.go b/x/stakeibc/keeper/params.go index 7b1b186756..6605349bab 100644 --- a/x/stakeibc/keeper/params.go +++ b/x/stakeibc/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // GetParams get all parameters as types.Params diff --git a/x/stakeibc/keeper/params_test.go b/x/stakeibc/keeper/params_test.go index dddc9fb26f..93d1484f38 100644 --- a/x/stakeibc/keeper/params_test.go +++ b/x/stakeibc/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v12/testutil/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestGetParams(t *testing.T) { diff --git a/x/stakeibc/keeper/reward_allocation.go b/x/stakeibc/keeper/reward_allocation.go index 50c74e978e..d664bef6f4 100644 --- a/x/stakeibc/keeper/reward_allocation.go +++ b/x/stakeibc/keeper/reward_allocation.go @@ -8,7 +8,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // Liquid Stake Reward Collector Balance diff --git a/x/stakeibc/keeper/reward_allocation_test.go b/x/stakeibc/keeper/reward_allocation_test.go index 8edc6d33b7..6fc90beceb 100644 --- a/x/stakeibc/keeper/reward_allocation_test.go +++ b/x/stakeibc/keeper/reward_allocation_test.go @@ -15,9 +15,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (s *KeeperTestSuite) SetupTestRewardAllocation() { diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index a791352b27..0782c52c68 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -14,9 +14,9 @@ import ( proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v12/utils" - recordstypes "github.com/Stride-Labs/stride/v12/x/records/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func (k Keeper) CreateEpochUnbondingRecord(ctx sdk.Context, epochNumber uint64) bool { diff --git a/x/stakeibc/keeper/unbonding_records_cleanup_test.go b/x/stakeibc/keeper/unbonding_records_cleanup_test.go index d475676371..e69382272d 100644 --- a/x/stakeibc/keeper/unbonding_records_cleanup_test.go +++ b/x/stakeibc/keeper/unbonding_records_cleanup_test.go @@ -4,9 +4,9 @@ import ( sdkmath "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type CleanupEpochUnbondingRecordsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go index c73a40edc1..f2fcddc224 100644 --- a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go +++ b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go @@ -8,9 +8,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type GetHostZoneUnbondingMsgsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go index 6edfde9d2a..88c6604aeb 100644 --- a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go +++ b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go @@ -5,9 +5,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type InitiateAllHostZoneUnbondingsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go index 3733e0de89..a8272604c5 100644 --- a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go +++ b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go @@ -5,10 +5,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - stakeibc "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type SweepUnbondedTokensTestCase struct { diff --git a/x/stakeibc/keeper/update_redemption_rates_test.go b/x/stakeibc/keeper/update_redemption_rates_test.go index 0c9f634171..5222dd0d6f 100644 --- a/x/stakeibc/keeper/update_redemption_rates_test.go +++ b/x/stakeibc/keeper/update_redemption_rates_test.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v12/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type UpdateRedemptionRatesTestCase struct { diff --git a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go index 409cc2ee7f..0fbf5fede3 100644 --- a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go +++ b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go @@ -6,9 +6,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v12/x/epochs/types" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // ================================ 1: QueryValidatorExchangeRate ============================================= diff --git a/x/stakeibc/keeper/validator_selection.go b/x/stakeibc/keeper/validator_selection.go index 67dc25de90..3365730b75 100644 --- a/x/stakeibc/keeper/validator_selection.go +++ b/x/stakeibc/keeper/validator_selection.go @@ -7,8 +7,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v12/utils" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // This function returns a map from Validator Address to how many extra tokens need to be given to that validator diff --git a/x/stakeibc/migrations/v2/convert.go b/x/stakeibc/migrations/v2/convert.go index a8167ae743..ef09ccd7b6 100644 --- a/x/stakeibc/migrations/v2/convert.go +++ b/x/stakeibc/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func convertToNewValidator(oldValidator oldstakeibctypes.Validator) stakeibctypes.Validator { diff --git a/x/stakeibc/migrations/v2/convert_test.go b/x/stakeibc/migrations/v2/convert_test.go index 456f3c6d00..37a79858f3 100644 --- a/x/stakeibc/migrations/v2/convert_test.go +++ b/x/stakeibc/migrations/v2/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v2/migrations.go b/x/stakeibc/migrations/v2/migrations.go index fe95c198c4..edc04c5a6b 100644 --- a/x/stakeibc/migrations/v2/migrations.go +++ b/x/stakeibc/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index 915b9b7209..a3fe8ccbf2 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -19,9 +19,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v12/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/module_simulation.go b/x/stakeibc/module_simulation.go index a8f72ffbf9..f734073dc5 100644 --- a/x/stakeibc/module_simulation.go +++ b/x/stakeibc/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v12/testutil/sample" - stakeibcsimulation "github.com/Stride-Labs/stride/v12/x/stakeibc/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/testutil/sample" + stakeibcsimulation "github.com/Stride-Labs/stride/v13/x/stakeibc/simulation" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) // avoid unused import issue diff --git a/x/stakeibc/proposal_handler.go b/x/stakeibc/proposal_handler.go index 6423054b8d..9ba9425425 100644 --- a/x/stakeibc/proposal_handler.go +++ b/x/stakeibc/proposal_handler.go @@ -6,9 +6,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func NewStakeibcProposalHandler(k keeper.Keeper) govtypes.Handler { diff --git a/x/stakeibc/simulation/add_validator.go b/x/stakeibc/simulation/add_validator.go index c2ae4affae..d72ba6b456 100644 --- a/x/stakeibc/simulation/add_validator.go +++ b/x/stakeibc/simulation/add_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgAddValidator( diff --git a/x/stakeibc/simulation/change_validator_weight.go b/x/stakeibc/simulation/change_validator_weight.go index b102016a3b..023fb23556 100644 --- a/x/stakeibc/simulation/change_validator_weight.go +++ b/x/stakeibc/simulation/change_validator_weight.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgChangeValidatorWeight( diff --git a/x/stakeibc/simulation/claim_undelegated_tokens.go b/x/stakeibc/simulation/claim_undelegated_tokens.go index 2d87d5af74..1cb1ffe294 100644 --- a/x/stakeibc/simulation/claim_undelegated_tokens.go +++ b/x/stakeibc/simulation/claim_undelegated_tokens.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgClaimUndelegatedTokens( diff --git a/x/stakeibc/simulation/delete_validator.go b/x/stakeibc/simulation/delete_validator.go index ecc2a88aaf..ca4a43214d 100644 --- a/x/stakeibc/simulation/delete_validator.go +++ b/x/stakeibc/simulation/delete_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgDeleteValidator( diff --git a/x/stakeibc/simulation/liquid_stake.go b/x/stakeibc/simulation/liquid_stake.go index ca65622f81..15d4485ff2 100644 --- a/x/stakeibc/simulation/liquid_stake.go +++ b/x/stakeibc/simulation/liquid_stake.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgLiquidStake( diff --git a/x/stakeibc/simulation/rebalance_validators.go b/x/stakeibc/simulation/rebalance_validators.go index 74c4d7aa9a..f6e4a1192b 100644 --- a/x/stakeibc/simulation/rebalance_validators.go +++ b/x/stakeibc/simulation/rebalance_validators.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgRebalanceValidators( diff --git a/x/stakeibc/simulation/restore_interchain_account.go b/x/stakeibc/simulation/restore_interchain_account.go index b6c7a68feb..17e5a90a6b 100644 --- a/x/stakeibc/simulation/restore_interchain_account.go +++ b/x/stakeibc/simulation/restore_interchain_account.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgRestoreInterchainAccount( diff --git a/x/stakeibc/simulation/update_delegation.go b/x/stakeibc/simulation/update_delegation.go index 019ca5090d..071f619056 100644 --- a/x/stakeibc/simulation/update_delegation.go +++ b/x/stakeibc/simulation/update_delegation.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v12/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func SimulateMsgUpdateValidatorSharesExchRate( diff --git a/x/stakeibc/types/address_unbonding.pb.go b/x/stakeibc/types/address_unbonding.pb.go index be372f962d..428f8f173c 100644 --- a/x/stakeibc/types/address_unbonding.pb.go +++ b/x/stakeibc/types/address_unbonding.pb.go @@ -121,7 +121,7 @@ var fileDescriptor_6491082275bcb473 = []byte{ // 348 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4e, 0xea, 0x40, 0x18, 0x6d, 0xb9, 0xc0, 0x85, 0xb9, 0x37, 0x4a, 0x26, 0xc4, 0x4c, 0x58, 0x14, 0x74, 0xa1, 0xdd, - 0xd0, 0x46, 0xdc, 0xb8, 0x95, 0x44, 0x13, 0x12, 0x62, 0x4c, 0xd5, 0x8d, 0x9b, 0xa6, 0x3f, 0x5f, + 0xd0, 0x46, 0xd9, 0xb8, 0x95, 0x44, 0x13, 0x12, 0x62, 0x4c, 0xd5, 0x8d, 0x9b, 0xa6, 0x3f, 0x5f, 0xca, 0x04, 0x67, 0xa6, 0xe9, 0x4c, 0x89, 0xbe, 0x85, 0x2f, 0xe2, 0x7b, 0xb0, 0x64, 0x69, 0x5c, 0x10, 0x03, 0x2f, 0x62, 0x98, 0xb6, 0xe8, 0x6a, 0xe6, 0x3b, 0xe7, 0xcc, 0xf9, 0x4e, 0xe6, 0xa0, 0x33, 0xa9, 0x32, 0x1a, 0x83, 0x2b, 0x55, 0x30, 0x07, 0x1a, 0x46, 0x6e, 0x10, 0xc7, 0x19, 0x48, @@ -138,9 +138,9 @@ var fileDescriptor_6491082275bcb473 = []byte{ 0xbc, 0x03, 0x8d, 0x4f, 0xe4, 0x5d, 0x81, 0xe2, 0x63, 0xf4, 0x1f, 0x52, 0x11, 0xcd, 0x7c, 0x9e, 0xb3, 0x10, 0x32, 0xd2, 0x1e, 0x98, 0x76, 0xdd, 0xfb, 0xa7, 0xb1, 0x5b, 0x0d, 0x8d, 0xa7, 0xcb, 0x8d, 0x65, 0xae, 0x36, 0x96, 0xf9, 0xb5, 0xb1, 0xcc, 0xb7, 0xad, 0x65, 0xac, 0xb6, 0x96, 0xf1, - 0xb1, 0xb5, 0x8c, 0xa7, 0xd1, 0xaf, 0xb0, 0xf7, 0xfa, 0xef, 0x87, 0xd3, 0x20, 0x94, 0x6e, 0x59, - 0xd8, 0xe2, 0x7c, 0xe4, 0xbe, 0xfc, 0xd4, 0xa6, 0xc3, 0x87, 0x4d, 0x5d, 0xc2, 0xc5, 0x77, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xb1, 0x91, 0x8d, 0x19, 0xd6, 0x01, 0x00, 0x00, + 0xb1, 0xb5, 0x8c, 0xa7, 0x8b, 0x5f, 0x61, 0xef, 0xf5, 0xdf, 0x0f, 0xa7, 0x41, 0x28, 0xdd, 0xb2, + 0xb0, 0xc5, 0xf9, 0xc8, 0x7d, 0xf9, 0xa9, 0x4d, 0x87, 0x0f, 0x9b, 0xba, 0x84, 0xd1, 0x77, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x26, 0x37, 0x90, 0xfe, 0xd6, 0x01, 0x00, 0x00, } func (m *AddressUnbonding) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index 9d4ec667b4..fced01cddb 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -477,47 +477,47 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 631 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xcf, 0x6e, 0xd3, 0x4c, - 0x14, 0xc5, 0xe3, 0xa6, 0xea, 0xf7, 0xf5, 0x26, 0x25, 0xad, 0x85, 0x20, 0xad, 0x2a, 0x27, 0xb8, - 0x12, 0x54, 0x48, 0xb5, 0xd5, 0xb0, 0x42, 0x6c, 0x4a, 0x8b, 0x90, 0x22, 0x15, 0x16, 0xae, 0xca, - 0xa2, 0x1b, 0x6b, 0xec, 0x19, 0x25, 0xa3, 0xda, 0x33, 0x91, 0xef, 0x24, 0x05, 0x9e, 0x80, 0x25, - 0x5b, 0x1e, 0x01, 0x36, 0xbc, 0x03, 0xab, 0x2e, 0xbb, 0x44, 0x2c, 0x0a, 0x6a, 0x5e, 0x04, 0x8d, - 0xff, 0xc4, 0x69, 0x8a, 0x2a, 0xc2, 0x2a, 0xc9, 0xbd, 0x67, 0x72, 0xcf, 0x99, 0xdf, 0xcc, 0x40, - 0x0b, 0x55, 0xc2, 0x29, 0x73, 0x51, 0x91, 0x53, 0xc6, 0x83, 0xd0, 0x0d, 0x49, 0x14, 0x05, 0x24, - 0x3c, 0x45, 0x67, 0x90, 0x48, 0x25, 0xcd, 0x46, 0x26, 0x70, 0x0a, 0xc1, 0xc6, 0xdd, 0x9e, 0xec, - 0xc9, 0xb4, 0xe7, 0xea, 0x6f, 0x99, 0x6c, 0xc3, 0x0a, 0x25, 0xc6, 0x12, 0xdd, 0x80, 0x20, 0x73, - 0x47, 0xbb, 0x01, 0x53, 0x64, 0xd7, 0x0d, 0x25, 0x17, 0x59, 0xdf, 0x3e, 0x83, 0xc6, 0xd1, 0x20, - 0xe2, 0xea, 0x05, 0x8b, 0x58, 0x8f, 0x28, 0x2e, 0x85, 0xb9, 0x09, 0xcb, 0x23, 0x12, 0x71, 0x4a, - 0x94, 0x4c, 0x9a, 0x46, 0xdb, 0xd8, 0x5e, 0xf6, 0xca, 0x82, 0xf9, 0x12, 0x96, 0x48, 0x2c, 0x87, - 0x42, 0x35, 0x17, 0x74, 0x6b, 0xdf, 0x39, 0xbf, 0x6c, 0x55, 0x7e, 0x5c, 0xb6, 0x1e, 0xf6, 0xb8, - 0xea, 0x0f, 0x03, 0x27, 0x94, 0xb1, 0x9b, 0xcf, 0xcc, 0x3e, 0x76, 0x90, 0x9e, 0xba, 0xea, 0xdd, - 0x80, 0xa1, 0xd3, 0x15, 0xca, 0xcb, 0x57, 0xdb, 0x5f, 0x0d, 0x58, 0xcd, 0x87, 0xb2, 0x83, 0x3c, - 0x9b, 0xd9, 0x86, 0x7a, 0x5f, 0xa2, 0xf2, 0xdf, 0x4b, 0xc1, 0x7c, 0x4e, 0xf3, 0xe9, 0xa0, 0x6b, - 0x27, 0x52, 0xb0, 0x2e, 0x35, 0x1f, 0xc3, 0x1a, 0x65, 0x03, 0x89, 0x5c, 0xf9, 0x09, 0x0b, 0x65, - 0x42, 0xb5, 0x4c, 0x3b, 0x59, 0xf4, 0x1a, 0x79, 0xc3, 0x4b, 0xeb, 0x5d, 0x6a, 0xbe, 0x82, 0x35, - 0xd4, 0xd9, 0x7c, 0x3a, 0x09, 0x87, 0xcd, 0x6a, 0xbb, 0xba, 0x5d, 0xeb, 0xb4, 0x9d, 0x99, 0xed, - 0x73, 0x66, 0x76, 0xc1, 0x5b, 0xc5, 0xeb, 0x05, 0xb4, 0x3f, 0x18, 0xb0, 0x72, 0x10, 0x11, 0x1e, - 0x4f, 0xec, 0x3e, 0x85, 0xf5, 0x21, 0xb2, 0xc4, 0x4f, 0x18, 0x65, 0xf1, 0x40, 0xab, 0xa6, 0x4c, - 0x65, 0xde, 0xef, 0x69, 0x81, 0x37, 0xe9, 0x4f, 0xbc, 0xad, 0xc3, 0xff, 0x61, 0x9f, 0x70, 0x51, - 0xd8, 0x5f, 0xf6, 0xfe, 0x4b, 0x7f, 0x77, 0xa9, 0xf9, 0x00, 0xea, 0x6c, 0x20, 0xc3, 0xbe, 0x2f, - 0x86, 0x71, 0xc0, 0x92, 0x66, 0x35, 0x4d, 0x57, 0x4b, 0x6b, 0xaf, 0xd3, 0x92, 0xfd, 0xd9, 0x80, - 0x55, 0x8f, 0x71, 0x31, 0x62, 0xa8, 0x26, 0x6e, 0x10, 0x1a, 0x49, 0x5e, 0xf3, 0x73, 0x44, 0xda, - 0x43, 0xad, 0xb3, 0xee, 0x64, 0x24, 0x1c, 0x7d, 0x08, 0x9c, 0xfc, 0x10, 0x38, 0x07, 0x92, 0x8b, - 0x7d, 0x57, 0xd3, 0xfb, 0xf2, 0xb3, 0xf5, 0xe8, 0x2f, 0xe8, 0xe9, 0x05, 0xde, 0x9d, 0x62, 0xc4, - 0xf3, 0x74, 0xc2, 0x0d, 0x62, 0xd5, 0x59, 0x62, 0xf6, 0x37, 0x03, 0xcc, 0x63, 0x41, 0xe7, 0x47, - 0xfd, 0x47, 0x7c, 0x0b, 0xff, 0x8a, 0xcf, 0x7c, 0x06, 0x1b, 0xd9, 0xb6, 0x0e, 0x45, 0x20, 0x05, - 0xe5, 0xa2, 0x57, 0xc2, 0xca, 0x8e, 0xc5, 0xa2, 0x77, 0x3f, 0x55, 0x1c, 0x17, 0x82, 0x82, 0x16, - 0xda, 0x08, 0x66, 0x09, 0x71, 0x8e, 0x0c, 0xb7, 0x0f, 0x5d, 0xb8, 0x7d, 0xe8, 0x27, 0x03, 0x6a, - 0x1e, 0x0b, 0x48, 0x44, 0x44, 0xc8, 0x45, 0xcf, 0xdc, 0x82, 0x15, 0x4c, 0x42, 0x7f, 0xf6, 0x72, - 0xd6, 0x31, 0x09, 0xdf, 0x4c, 0xee, 0xe7, 0x16, 0xac, 0x50, 0x54, 0x53, 0xa2, 0xec, 0x74, 0xd5, - 0x29, 0xaa, 0x52, 0xb4, 0x07, 0x55, 0x12, 0xab, 0x0c, 0xd6, 0xdc, 0x37, 0x58, 0x2f, 0xb5, 0xcf, - 0x60, 0xad, 0xb0, 0x36, 0x0f, 0xd3, 0x3d, 0xa8, 0x27, 0x65, 0xa2, 0x02, 0xe7, 0xe6, 0x0d, 0x9c, - 0x53, 0xb1, 0xbd, 0x6b, 0x2b, 0xf6, 0x0f, 0xcf, 0xaf, 0x2c, 0xe3, 0xe2, 0xca, 0x32, 0x7e, 0x5d, - 0x59, 0xc6, 0xc7, 0xb1, 0x55, 0xb9, 0x18, 0x5b, 0x95, 0xef, 0x63, 0xab, 0x72, 0xd2, 0x99, 0xf2, - 0x7f, 0x94, 0xfe, 0xdf, 0xce, 0x21, 0x09, 0xd0, 0xcd, 0x5f, 0xd2, 0xd1, 0x6e, 0xc7, 0x7d, 0x5b, - 0xbe, 0xa7, 0x69, 0x9e, 0x60, 0x29, 0x7d, 0x05, 0x9f, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x4c, - 0x2b, 0x94, 0x51, 0x6f, 0x05, 0x00, 0x00, + // 630 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x4f, 0x13, 0x41, + 0x18, 0xc6, 0xbb, 0x94, 0xa0, 0xbc, 0x2d, 0x16, 0x36, 0x46, 0x0b, 0x21, 0xdb, 0xba, 0x24, 0x4a, + 0x4c, 0xd8, 0x0d, 0x70, 0x32, 0x5e, 0x10, 0x8c, 0x49, 0x13, 0xf4, 0xb0, 0x04, 0x0f, 0x5c, 0x36, + 0xb3, 0x3b, 0x93, 0x76, 0xc2, 0xee, 0x4c, 0xb3, 0xef, 0xb4, 0xa8, 0x9f, 0xc0, 0xa3, 0x57, 0x3f, + 0x82, 0x5e, 0xfc, 0x0e, 0x9e, 0x38, 0x72, 0x34, 0x1e, 0xd0, 0xd0, 0x2f, 0x62, 0x66, 0xff, 0x74, + 0x4b, 0x31, 0xc4, 0x7a, 0x6a, 0xfb, 0xbe, 0xcf, 0xf4, 0x7d, 0x9e, 0xf9, 0xcd, 0x0c, 0xb4, 0x50, + 0x25, 0x9c, 0x32, 0x17, 0x15, 0x39, 0x65, 0x3c, 0x08, 0xdd, 0x90, 0x44, 0x51, 0x40, 0xc2, 0x53, + 0x74, 0xfa, 0x89, 0x54, 0xd2, 0x6c, 0x64, 0x02, 0xa7, 0x10, 0xac, 0xdd, 0xef, 0xca, 0xae, 0x4c, + 0x7b, 0xae, 0xfe, 0x96, 0xc9, 0xd6, 0xac, 0x50, 0x62, 0x2c, 0xd1, 0x0d, 0x08, 0x32, 0x77, 0xb8, + 0x1d, 0x30, 0x45, 0xb6, 0xdd, 0x50, 0x72, 0x91, 0xf5, 0xed, 0x33, 0x68, 0x1c, 0xf5, 0x23, 0xae, + 0x5e, 0xb2, 0x88, 0x75, 0x89, 0xe2, 0x52, 0x98, 0xeb, 0xb0, 0x38, 0x24, 0x11, 0xa7, 0x44, 0xc9, + 0xa4, 0x69, 0xb4, 0x8d, 0xcd, 0x45, 0xaf, 0x2c, 0x98, 0xaf, 0x60, 0x81, 0xc4, 0x72, 0x20, 0x54, + 0x73, 0x4e, 0xb7, 0xf6, 0x9d, 0xf3, 0xcb, 0x56, 0xe5, 0xe7, 0x65, 0xeb, 0x71, 0x97, 0xab, 0xde, + 0x20, 0x70, 0x42, 0x19, 0xbb, 0xf9, 0xcc, 0xec, 0x63, 0x0b, 0xe9, 0xa9, 0xab, 0xde, 0xf7, 0x19, + 0x3a, 0x1d, 0xa1, 0xbc, 0x7c, 0xb5, 0xfd, 0xcd, 0x80, 0xe5, 0x7c, 0x28, 0x3b, 0xc8, 0xb3, 0x99, + 0x6d, 0xa8, 0xf7, 0x24, 0x2a, 0xff, 0x83, 0x14, 0xcc, 0xe7, 0x34, 0x9f, 0x0e, 0xba, 0x76, 0x22, + 0x05, 0xeb, 0x50, 0xf3, 0x29, 0xac, 0x50, 0xd6, 0x97, 0xc8, 0x95, 0x9f, 0xb0, 0x50, 0x26, 0x54, + 0xcb, 0xb4, 0x93, 0x79, 0xaf, 0x91, 0x37, 0xbc, 0xb4, 0xde, 0xa1, 0xe6, 0x6b, 0x58, 0x41, 0x9d, + 0xcd, 0xa7, 0xe3, 0x70, 0xd8, 0xac, 0xb6, 0xab, 0x9b, 0xb5, 0x9d, 0xb6, 0x33, 0xb5, 0x7d, 0xce, + 0xd4, 0x2e, 0x78, 0xcb, 0x78, 0xbd, 0x80, 0xf6, 0x47, 0x03, 0x96, 0x0e, 0x22, 0xc2, 0xe3, 0xb1, + 0xdd, 0x67, 0xb0, 0x3a, 0x40, 0x96, 0xf8, 0x09, 0xa3, 0x2c, 0xee, 0x6b, 0xd5, 0x84, 0xa9, 0xcc, + 0xfb, 0x03, 0x2d, 0xf0, 0xc6, 0xfd, 0xb1, 0xb7, 0x55, 0xb8, 0x1b, 0xf6, 0x08, 0x17, 0x85, 0xfd, + 0x45, 0xef, 0x4e, 0xfa, 0xbb, 0x43, 0xcd, 0x47, 0x50, 0x67, 0x7d, 0x19, 0xf6, 0x7c, 0x31, 0x88, + 0x03, 0x96, 0x34, 0xab, 0x69, 0xba, 0x5a, 0x5a, 0x7b, 0x93, 0x96, 0xec, 0x2f, 0x06, 0x2c, 0x7b, + 0x8c, 0x8b, 0x21, 0x43, 0x35, 0x76, 0x83, 0xd0, 0x48, 0xf2, 0x9a, 0x9f, 0x23, 0xd2, 0x1e, 0x6a, + 0x3b, 0xab, 0x4e, 0x46, 0xc2, 0xd1, 0x87, 0xc0, 0xc9, 0x0f, 0x81, 0x73, 0x20, 0xb9, 0xd8, 0x77, + 0x35, 0xbd, 0xaf, 0xbf, 0x5a, 0x4f, 0xfe, 0x81, 0x9e, 0x5e, 0xe0, 0xdd, 0x2b, 0x46, 0xbc, 0x48, + 0x27, 0xdc, 0x20, 0x56, 0x9d, 0x26, 0x66, 0x7f, 0x37, 0xc0, 0x3c, 0x16, 0x74, 0x76, 0xd4, 0x7f, + 0xc5, 0x37, 0xf7, 0xbf, 0xf8, 0xcc, 0xe7, 0xb0, 0x96, 0x6d, 0xeb, 0x40, 0x04, 0x52, 0x50, 0x2e, + 0xba, 0x25, 0xac, 0xec, 0x58, 0xcc, 0x7b, 0x0f, 0x53, 0xc5, 0x71, 0x21, 0x28, 0x68, 0xa1, 0x8d, + 0x60, 0x96, 0x10, 0x67, 0xc8, 0x70, 0xfb, 0xd0, 0xb9, 0xdb, 0x87, 0x7e, 0x36, 0xa0, 0xe6, 0xb1, + 0x80, 0x44, 0x44, 0x84, 0x5c, 0x74, 0xcd, 0x0d, 0x58, 0xc2, 0x24, 0xf4, 0xa7, 0x2f, 0x67, 0x1d, + 0x93, 0xf0, 0xed, 0xf8, 0x7e, 0x6e, 0xc0, 0x12, 0x45, 0x35, 0x21, 0xca, 0x4e, 0x57, 0x9d, 0xa2, + 0x2a, 0x45, 0x7b, 0x50, 0x25, 0xb1, 0xca, 0x60, 0xcd, 0x7c, 0x83, 0xf5, 0x52, 0xfb, 0x0c, 0x56, + 0x0a, 0x6b, 0xb3, 0x30, 0xdd, 0x83, 0x7a, 0x52, 0x26, 0x2a, 0x70, 0xae, 0xdf, 0xc0, 0x39, 0x11, + 0xdb, 0xbb, 0xb6, 0x62, 0xff, 0xf0, 0xfc, 0xca, 0x32, 0x2e, 0xae, 0x2c, 0xe3, 0xf7, 0x95, 0x65, + 0x7c, 0x1a, 0x59, 0x95, 0x8b, 0x91, 0x55, 0xf9, 0x31, 0xb2, 0x2a, 0x27, 0x3b, 0x13, 0xfe, 0x8f, + 0xd2, 0xff, 0xdb, 0x3a, 0x24, 0x01, 0xba, 0xf9, 0x4b, 0x3a, 0xdc, 0xde, 0x75, 0xdf, 0x95, 0xef, + 0x69, 0x9a, 0x27, 0x58, 0x48, 0x5f, 0xc1, 0xdd, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x8d, + 0x89, 0xb6, 0x6f, 0x05, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/epoch_tracker.pb.go b/x/stakeibc/types/epoch_tracker.pb.go index dc5af455dd..f0bf5a352a 100644 --- a/x/stakeibc/types/epoch_tracker.pb.go +++ b/x/stakeibc/types/epoch_tracker.pb.go @@ -114,8 +114,8 @@ var fileDescriptor_e7c48143f24adf66 = []byte{ 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x7e, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, - 0x06, 0x4a, 0x99, 0xa1, 0x91, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, - 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x4d, 0xd8, 0xc1, 0x0b, 0x3a, 0x01, 0x00, + 0x06, 0x4a, 0x99, 0xa1, 0xb1, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, + 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xda, 0x7e, 0xdc, 0xec, 0x3a, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/expected_keepers.go b/x/stakeibc/types/expected_keepers.go index dc22aada7c..416ceb8939 100644 --- a/x/stakeibc/types/expected_keepers.go +++ b/x/stakeibc/types/expected_keepers.go @@ -7,7 +7,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - ratelimittypes "github.com/Stride-Labs/stride/v12/x/ratelimit/types" + ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" ) // AccountKeeper defines the expected account keeper used for simulations (noalias) diff --git a/x/stakeibc/types/genesis.pb.go b/x/stakeibc/types/genesis.pb.go index 328bdbda3b..156a9ccdc9 100644 --- a/x/stakeibc/types/genesis.pb.go +++ b/x/stakeibc/types/genesis.pb.go @@ -100,29 +100,29 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/genesis.proto", fileDescriptor_dea81129ed6fb77a) } var fileDescriptor_dea81129ed6fb77a = []byte{ - // 346 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcd, 0x4e, 0xc2, 0x40, - 0x14, 0x85, 0x5b, 0x18, 0x4a, 0x19, 0x88, 0x36, 0x8d, 0x09, 0x48, 0xa4, 0x10, 0xdd, 0xb0, 0xb1, - 0x8d, 0x35, 0xbe, 0x00, 0x09, 0x51, 0x1b, 0x16, 0x0a, 0xae, 0xd8, 0x34, 0x6d, 0x99, 0xb4, 0x0d, - 0xc2, 0x34, 0x9d, 0xab, 0x51, 0x9f, 0xc2, 0x95, 0xcf, 0xc4, 0x92, 0xa5, 0x2b, 0x63, 0xe0, 0x45, - 0x4c, 0x3b, 0xe3, 0x5f, 0xd9, 0xcd, 0x9d, 0xf3, 0xe5, 0xbb, 0x27, 0x17, 0x77, 0x18, 0xa4, 0xf1, - 0x8c, 0x58, 0x0c, 0xbc, 0x39, 0x89, 0xfd, 0xc0, 0x0a, 0xc9, 0x92, 0xb0, 0x98, 0x99, 0x49, 0x4a, - 0x81, 0xea, 0xfb, 0x3c, 0x36, 0xbf, 0xe3, 0xf6, 0x41, 0x48, 0x43, 0x9a, 0x67, 0x56, 0xf6, 0xe2, - 0x58, 0xfb, 0xa8, 0x68, 0x49, 0xbc, 0xd4, 0x5b, 0x08, 0x49, 0xbb, 0x5b, 0x4c, 0x23, 0xca, 0xc0, - 0x7d, 0xa1, 0x4b, 0x22, 0x80, 0x93, 0x22, 0x40, 0x12, 0x1a, 0x44, 0x2e, 0xa4, 0x5e, 0x30, 0x27, - 0x29, 0x87, 0x8e, 0xdf, 0x4a, 0xb8, 0x71, 0xc9, 0xcb, 0x4d, 0xc0, 0x03, 0xa2, 0x5f, 0x60, 0x85, - 0xaf, 0x69, 0xc9, 0x3d, 0xb9, 0x5f, 0xb7, 0x9b, 0x66, 0xa1, 0xac, 0x79, 0x93, 0xc7, 0x03, 0xb4, - 0xfa, 0xe8, 0x4a, 0x63, 0x01, 0xeb, 0x4d, 0x5c, 0x4d, 0x68, 0x0a, 0x6e, 0x3c, 0x6b, 0x95, 0x7a, - 0x72, 0xbf, 0x36, 0x56, 0xb2, 0xf1, 0x7a, 0xa6, 0x0f, 0xf1, 0xde, 0x4f, 0x31, 0xf7, 0x3e, 0x66, - 0xd0, 0xaa, 0xf4, 0xca, 0xfd, 0xba, 0x7d, 0xb8, 0xe3, 0xbd, 0xa2, 0x0c, 0xa6, 0x74, 0x49, 0x84, - 0xb9, 0x11, 0x89, 0x79, 0x14, 0x33, 0xd0, 0x6f, 0xb1, 0xfe, 0xaf, 0x3e, 0x57, 0xe1, 0x5c, 0xd5, - 0xd9, 0x51, 0x0d, 0x33, 0xf4, 0x8e, 0x93, 0x42, 0xa7, 0x91, 0x3f, 0x7f, 0x99, 0xd2, 0x41, 0x6a, - 0x59, 0x43, 0x0e, 0x52, 0x91, 0x56, 0x71, 0x90, 0xaa, 0x68, 0x55, 0x07, 0xa9, 0x35, 0x0d, 0x3b, - 0x48, 0xad, 0x6b, 0x8d, 0xc1, 0x68, 0xb5, 0x31, 0xe4, 0xf5, 0xc6, 0x90, 0x3f, 0x37, 0x86, 0xfc, - 0xba, 0x35, 0xa4, 0xf5, 0xd6, 0x90, 0xde, 0xb7, 0x86, 0x34, 0xb5, 0xc3, 0x18, 0xa2, 0x07, 0xdf, - 0x0c, 0xe8, 0xc2, 0x9a, 0xe4, 0x8b, 0x4f, 0x47, 0x9e, 0xcf, 0x2c, 0x71, 0xee, 0xc7, 0x33, 0xdb, - 0x7a, 0xfa, 0x3d, 0x3a, 0x3c, 0x27, 0x84, 0xf9, 0x4a, 0x7e, 0xed, 0xf3, 0xaf, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x09, 0x01, 0x8b, 0x2c, 0x19, 0x02, 0x00, 0x00, + // 349 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x4e, 0xea, 0x40, + 0x14, 0xc6, 0x5b, 0x18, 0x4a, 0x19, 0xc8, 0xbd, 0x4d, 0x73, 0x13, 0xb8, 0xe4, 0x52, 0xc8, 0x75, + 0xc3, 0xc6, 0x36, 0x42, 0x7c, 0x01, 0x12, 0xa2, 0x36, 0x2c, 0x14, 0x5c, 0xb1, 0x69, 0xda, 0x32, + 0x69, 0x27, 0x08, 0xd3, 0x74, 0x8e, 0x46, 0x7d, 0x0a, 0x57, 0x3e, 0x13, 0x4b, 0x96, 0xae, 0x8c, + 0x81, 0x17, 0x31, 0xed, 0x8c, 0xff, 0xca, 0x6e, 0xce, 0x7c, 0xbf, 0xfc, 0xce, 0x97, 0x83, 0x3b, + 0x1c, 0x52, 0xba, 0x20, 0x0e, 0x07, 0x7f, 0x49, 0x68, 0x10, 0x3a, 0x11, 0x59, 0x13, 0x4e, 0xb9, + 0x9d, 0xa4, 0x0c, 0x98, 0xf9, 0x5b, 0xc4, 0xf6, 0x47, 0xdc, 0xfe, 0x13, 0xb1, 0x88, 0xe5, 0x99, + 0x93, 0xbd, 0x04, 0xd6, 0xfe, 0x57, 0xb4, 0x24, 0x7e, 0xea, 0xaf, 0xa4, 0xa4, 0xdd, 0x2d, 0xa6, + 0x31, 0xe3, 0xe0, 0x3d, 0xb2, 0x35, 0x91, 0xc0, 0x51, 0x11, 0x20, 0x09, 0x0b, 0x63, 0x0f, 0x52, + 0x3f, 0x5c, 0x92, 0x54, 0x40, 0xff, 0x9f, 0x4b, 0xb8, 0x71, 0x26, 0xca, 0xcd, 0xc0, 0x07, 0x62, + 0x9e, 0x62, 0x4d, 0xac, 0x69, 0xa9, 0x3d, 0xb5, 0x5f, 0x1f, 0x34, 0xed, 0x42, 0x59, 0xfb, 0x32, + 0x8f, 0x47, 0x68, 0xf3, 0xda, 0x55, 0xa6, 0x12, 0x36, 0x9b, 0xb8, 0x9a, 0xb0, 0x14, 0x3c, 0xba, + 0x68, 0x95, 0x7a, 0x6a, 0xbf, 0x36, 0xd5, 0xb2, 0xf1, 0x62, 0x61, 0x8e, 0xf1, 0xaf, 0xcf, 0x62, + 0xde, 0x0d, 0xe5, 0xd0, 0xaa, 0xf4, 0xca, 0xfd, 0xfa, 0xe0, 0xef, 0x81, 0xf7, 0x9c, 0x71, 0x98, + 0xb3, 0x35, 0x91, 0xe6, 0x46, 0x2c, 0xe7, 0x09, 0xe5, 0x60, 0x5e, 0x61, 0xf3, 0x47, 0x7d, 0xa1, + 0xc2, 0xb9, 0xaa, 0x73, 0xa0, 0x1a, 0x67, 0xe8, 0xb5, 0x20, 0xa5, 0xce, 0x20, 0xdf, 0xfe, 0x32, + 0xa5, 0x8b, 0xf4, 0xb2, 0x81, 0x5c, 0xa4, 0x23, 0xa3, 0xe2, 0x22, 0x5d, 0x33, 0xaa, 0x2e, 0xd2, + 0x6b, 0x06, 0x76, 0x91, 0x5e, 0x37, 0x1a, 0xa3, 0xc9, 0x66, 0x67, 0xa9, 0xdb, 0x9d, 0xa5, 0xbe, + 0xed, 0x2c, 0xf5, 0x69, 0x6f, 0x29, 0xdb, 0xbd, 0xa5, 0xbc, 0xec, 0x2d, 0x65, 0x3e, 0x88, 0x28, + 0xc4, 0xb7, 0x81, 0x1d, 0xb2, 0x95, 0x33, 0xcb, 0x17, 0x1f, 0x4f, 0xfc, 0x80, 0x3b, 0xf2, 0xdc, + 0x77, 0x27, 0x43, 0xe7, 0xfe, 0xeb, 0xe8, 0xf0, 0x90, 0x10, 0x1e, 0x68, 0xf9, 0xb5, 0x87, 0xef, + 0x01, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xa7, 0x96, 0xcb, 0x19, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/genesis_test.go b/x/stakeibc/types/genesis_test.go index b84583ae71..b8ffe7d3d6 100644 --- a/x/stakeibc/types/genesis_test.go +++ b/x/stakeibc/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index 925228142c..7082388af9 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -88,9 +88,9 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x16, 0xc8, 0x33, 0x3a, 0xf9, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x51, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0xd8, 0x1d, 0xba, - 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0xd0, 0x80, 0x2b, 0x33, 0x34, 0xd2, 0xaf, 0x40, 0x04, 0x5f, 0x49, - 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0xec, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x09, - 0x07, 0x6e, 0xcf, 0xa0, 0x01, 0x00, 0x00, + 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0xd0, 0x80, 0x2b, 0x33, 0x34, 0xd6, 0xaf, 0x40, 0x04, 0x5f, 0x49, + 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0xec, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9e, + 0xa1, 0x73, 0x28, 0xa0, 0x01, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index cf24b6f367..38fc188967 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -241,8 +241,8 @@ var fileDescriptor_f81bf5b42c61245a = []byte{ 0x9e, 0x25, 0x8d, 0x0c, 0x1e, 0xa6, 0x1d, 0xcf, 0x66, 0x97, 0x57, 0x56, 0x0e, 0x4e, 0xae, 0xef, 0x4a, 0xd6, 0xcd, 0x5d, 0xc9, 0xfa, 0x7d, 0x57, 0xb2, 0xbe, 0xdd, 0x97, 0x32, 0x37, 0xf7, 0xa5, 0xcc, 0xcf, 0xfb, 0x52, 0xe6, 0xac, 0x91, 0x0a, 0xfa, 0x64, 0x7e, 0x87, 0xed, 0x13, 0xe2, 0xab, - 0x7a, 0x7c, 0x23, 0x5f, 0xbc, 0x6d, 0xd4, 0x07, 0xe3, 0x7b, 0xd9, 0x04, 0xfb, 0x73, 0xe6, 0x86, - 0xdd, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x0e, 0xe7, 0x55, 0x97, 0x0a, 0x06, 0x00, 0x00, + 0x7a, 0x7c, 0x23, 0x5f, 0xbc, 0xdd, 0xa9, 0x0f, 0xc6, 0xf7, 0xb2, 0x09, 0xf6, 0xe7, 0xcc, 0x0d, + 0xbb, 0xf3, 0x37, 0x00, 0x00, 0xff, 0xff, 0x99, 0x41, 0x48, 0x70, 0x0a, 0x06, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index 11e55f9320..ec4abd607e 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_2976ae6e7f6ce824 = []byte{ 0x9d, 0x7c, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xec, 0x3a, 0x5d, 0x9f, 0xc4, 0xa4, - 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xe9, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, - 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xbc, 0x0f, 0x13, + 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xeb, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, + 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x1a, 0x12, 0xf4, 0x71, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/message_add_validators.go b/x/stakeibc/types/message_add_validators.go index 1e36330a23..ad26d4a39e 100644 --- a/x/stakeibc/types/message_add_validators.go +++ b/x/stakeibc/types/message_add_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgAddValidators = "add_validators" diff --git a/x/stakeibc/types/message_add_validators_test.go b/x/stakeibc/types/message_add_validators_test.go index c033df44b8..3d44aadccb 100644 --- a/x/stakeibc/types/message_add_validators_test.go +++ b/x/stakeibc/types/message_add_validators_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestMsgAddValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_change_validator_weight.go b/x/stakeibc/types/message_change_validator_weight.go index 9b0998ba59..a2b4ebfa3c 100644 --- a/x/stakeibc/types/message_change_validator_weight.go +++ b/x/stakeibc/types/message_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgChangeValidatorWeight = "change_validator_weight" diff --git a/x/stakeibc/types/message_change_validator_weight_test.go b/x/stakeibc/types/message_change_validator_weight_test.go index 3cc5390552..1be67c7fef 100644 --- a/x/stakeibc/types/message_change_validator_weight_test.go +++ b/x/stakeibc/types/message_change_validator_weight_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/testutil/sample" + "github.com/Stride-Labs/stride/v13/testutil/sample" ) func TestMsgChangeValidatorWeight_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_claim_undelegated_tokens.go b/x/stakeibc/types/message_claim_undelegated_tokens.go index 84c11aec3f..8a8e01801d 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgClaimUndelegatedTokens = "claim_undelegated_tokens" diff --git a/x/stakeibc/types/message_claim_undelegated_tokens_test.go b/x/stakeibc/types/message_claim_undelegated_tokens_test.go index 1828d14d5f..8c0705568d 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens_test.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/testutil/sample" + "github.com/Stride-Labs/stride/v13/testutil/sample" ) func TestMsgClaimUndelegatedTokens_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_clear_balance.go b/x/stakeibc/types/message_clear_balance.go index d648647030..818d5a2b4d 100644 --- a/x/stakeibc/types/message_clear_balance.go +++ b/x/stakeibc/types/message_clear_balance.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgClearBalance = "clear_balance" diff --git a/x/stakeibc/types/message_delete_validator.go b/x/stakeibc/types/message_delete_validator.go index fffadee5fb..2d526358ba 100644 --- a/x/stakeibc/types/message_delete_validator.go +++ b/x/stakeibc/types/message_delete_validator.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgDeleteValidator = "delete_validator" diff --git a/x/stakeibc/types/message_delete_validator_test.go b/x/stakeibc/types/message_delete_validator_test.go index 2d37dab21f..329d05853d 100644 --- a/x/stakeibc/types/message_delete_validator_test.go +++ b/x/stakeibc/types/message_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/testutil/sample" + "github.com/Stride-Labs/stride/v13/testutil/sample" ) func TestMsgDeleteValidator_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_liquid_stake_test.go b/x/stakeibc/types/message_liquid_stake_test.go index 06d08e4a4a..e633053976 100644 --- a/x/stakeibc/types/message_liquid_stake_test.go +++ b/x/stakeibc/types/message_liquid_stake_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/testutil/sample" + "github.com/Stride-Labs/stride/v13/testutil/sample" ) func TestMsgLiquidStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_rebalance_validators.go b/x/stakeibc/types/message_rebalance_validators.go index 163636d51d..0579cdf02f 100644 --- a/x/stakeibc/types/message_rebalance_validators.go +++ b/x/stakeibc/types/message_rebalance_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const ( diff --git a/x/stakeibc/types/message_rebalance_validators_test.go b/x/stakeibc/types/message_rebalance_validators_test.go index a2b01030d4..fcee003ed1 100644 --- a/x/stakeibc/types/message_rebalance_validators_test.go +++ b/x/stakeibc/types/message_rebalance_validators_test.go @@ -6,8 +6,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/app/apptesting" - "github.com/Stride-Labs/stride/v12/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) func TestMsgRebalanceValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_redeem_stake_test.go b/x/stakeibc/types/message_redeem_stake_test.go index dd180c56db..95479d6832 100644 --- a/x/stakeibc/types/message_redeem_stake_test.go +++ b/x/stakeibc/types/message_redeem_stake_test.go @@ -8,7 +8,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v12/testutil/sample" + "github.com/Stride-Labs/stride/v13/testutil/sample" ) func TestMsgRedeemStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index bea92d7cdf..0e41c56968 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgRegisterHostZone = "register_host_zone" diff --git a/x/stakeibc/types/message_restore_interchain_account_test.go b/x/stakeibc/types/message_restore_interchain_account_test.go index 1e03dc0758..bef5a589a6 100644 --- a/x/stakeibc/types/message_restore_interchain_account_test.go +++ b/x/stakeibc/types/message_restore_interchain_account_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v12/testutil/sample" + "github.com/Stride-Labs/stride/v13/testutil/sample" ) func TestMsgRestoreInterchainAccount_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_update_delegation.go b/x/stakeibc/types/message_update_delegation.go index e224923fc8..6dd5c24662 100644 --- a/x/stakeibc/types/message_update_delegation.go +++ b/x/stakeibc/types/message_update_delegation.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v12/utils" + "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgUpdateValidatorSharesExchRate = "update_validator_shares_exch_rate" diff --git a/x/stakeibc/types/packet.pb.go b/x/stakeibc/types/packet.pb.go index b595355a57..e2e58b6b31 100644 --- a/x/stakeibc/types/packet.pb.go +++ b/x/stakeibc/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_a86fa6a12773333f = []byte{ 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x8d, 0xd6, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xba, 0xbe, 0xcc, - 0xd0, 0x48, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x21, 0xed, 0xac, 0xd6, 0xe3, 0x00, 0x00, 0x00, + 0xd0, 0x58, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x4b, 0xb1, 0x31, 0xe3, 0x00, 0x00, 0x00, } func (m *StakeibcPacketData) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index 4fab37501b..cecd6d62a3 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -196,43 +196,43 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/params.proto", fileDescriptor_5aeaab6a38c2b438) } var fileDescriptor_5aeaab6a38c2b438 = []byte{ - // 568 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0xcf, 0x6e, 0xd3, 0x4c, - 0x14, 0xc5, 0x93, 0xef, 0x8b, 0x42, 0x3b, 0x05, 0x9a, 0x98, 0x7f, 0xa3, 0x0a, 0x5c, 0x40, 0x42, - 0xa2, 0x14, 0x62, 0x11, 0x16, 0x20, 0xba, 0x40, 0x6a, 0xc5, 0xa2, 0xa8, 0xad, 0xa2, 0x24, 0x62, - 0xc1, 0x66, 0x34, 0x1e, 0x5f, 0x27, 0xa3, 0xda, 0x1e, 0x6b, 0x66, 0x1c, 0xdc, 0x3e, 0x05, 0x4b, - 0x96, 0x3c, 0x0e, 0xcb, 0x2e, 0x59, 0xa2, 0xe4, 0x0d, 0x78, 0x02, 0xe4, 0x19, 0xc7, 0xa9, 0x51, - 0x61, 0x17, 0x9d, 0xf3, 0xbb, 0xc7, 0x77, 0xce, 0x64, 0xd0, 0x7d, 0xa5, 0x25, 0x0f, 0xc0, 0x53, - 0x9a, 0x9e, 0x02, 0xf7, 0x99, 0x97, 0x52, 0x49, 0x63, 0xd5, 0x4b, 0xa5, 0xd0, 0xc2, 0xd9, 0xb4, - 0x6e, 0x6f, 0xe9, 0x6e, 0xdd, 0x9e, 0x88, 0x89, 0x30, 0x9e, 0x57, 0xfc, 0xb2, 0xd8, 0xe3, 0x5f, - 0x6d, 0xd4, 0x1e, 0x98, 0x39, 0x67, 0x07, 0x75, 0x24, 0x7c, 0xa6, 0x32, 0x50, 0x84, 0x27, 0x1a, - 0xe4, 0x8c, 0x46, 0xb8, 0xf9, 0xb0, 0xf9, 0xb4, 0x35, 0xdc, 0x2c, 0xf5, 0xc3, 0x52, 0x76, 0x76, - 0x51, 0x37, 0x80, 0x08, 0x26, 0x54, 0xc3, 0x8a, 0x6d, 0x1b, 0xb6, 0xb3, 0x34, 0x2a, 0x78, 0x07, - 0x75, 0x02, 0x48, 0x85, 0xe2, 0x7a, 0xc5, 0xfe, 0x67, 0x73, 0x4b, 0xbd, 0x42, 0xdf, 0x20, 0x2c, - 0x21, 0x80, 0x38, 0xd5, 0x5c, 0x24, 0x44, 0xd6, 0xe2, 0xff, 0x37, 0x23, 0x77, 0x57, 0xfe, 0xf0, - 0xf2, 0x47, 0x76, 0x51, 0xd7, 0x1e, 0x98, 0x30, 0x11, 0xc7, 0x5c, 0x29, 0x2e, 0x12, 0xdc, 0xb2, - 0x1b, 0x59, 0xe3, 0xa0, 0xd2, 0x0b, 0x58, 0x02, 0x4f, 0x66, 0xa0, 0x2e, 0xad, 0x74, 0xcd, 0xc2, - 0x4b, 0xa3, 0x4a, 0x7e, 0x86, 0xba, 0x9c, 0x51, 0xa2, 0x79, 0x0c, 0x22, 0xd3, 0x24, 0xa1, 0x89, - 0x50, 0x78, 0xdd, 0xee, 0xcf, 0x19, 0x1d, 0x5b, 0xfd, 0xa4, 0x90, 0x9d, 0x6d, 0xb4, 0xe1, 0x67, - 0x61, 0x08, 0x92, 0x28, 0x7e, 0x0e, 0x18, 0x19, 0x0a, 0x59, 0x69, 0xc4, 0xcf, 0xc1, 0x79, 0x8e, - 0x1c, 0xee, 0xb3, 0x2a, 0xcc, 0x8f, 0x04, 0x3b, 0x55, 0x78, 0xc3, 0x7e, 0x9a, 0xfb, 0xac, 0x4c, - 0xdb, 0x37, 0xba, 0xb3, 0x87, 0xb6, 0x42, 0x00, 0xa2, 0x25, 0x4d, 0x54, 0x11, 0x5a, 0xdf, 0xe1, - 0xba, 0x99, 0xba, 0x17, 0x02, 0x8c, 0x4b, 0xa0, 0xb6, 0xcb, 0x3b, 0xf4, 0x20, 0xa6, 0x39, 0x31, - 0xf7, 0x4f, 0x8a, 0x13, 0x30, 0x1a, 0x45, 0x8a, 0xa4, 0x20, 0x09, 0xa4, 0x82, 0x4d, 0xf1, 0x0d, - 0x33, 0x8f, 0x63, 0x9a, 0x8f, 0x0a, 0xe6, 0x90, 0xd1, 0x83, 0x82, 0x18, 0x80, 0x7c, 0x5f, 0xf8, - 0xce, 0x00, 0x3d, 0x09, 0x20, 0xa4, 0x59, 0xa4, 0x49, 0xcc, 0x13, 0xf2, 0xe7, 0xc5, 0xe8, 0xa9, - 0x04, 0x35, 0x15, 0x51, 0x80, 0x6f, 0x9a, 0xa0, 0x47, 0x25, 0x7c, 0xcc, 0x93, 0x61, 0xed, 0x8e, - 0xc6, 0x4b, 0xb0, 0x96, 0x48, 0xf3, 0x7f, 0x24, 0x6e, 0xd6, 0x13, 0x69, 0xfe, 0xb7, 0xc4, 0x3d, - 0xb4, 0x65, 0xfa, 0xbc, 0xba, 0xa1, 0x8e, 0x6d, 0xa8, 0xe8, 0xf5, 0xaa, 0x86, 0xfa, 0xe8, 0x8e, - 0xa2, 0x21, 0xe8, 0x33, 0x92, 0x64, 0x31, 0x99, 0xd1, 0x88, 0x07, 0x54, 0x0b, 0xa9, 0x70, 0xd7, - 0xcc, 0xdd, 0xb2, 0xe6, 0x49, 0x16, 0x7f, 0xac, 0x2c, 0xe7, 0x35, 0xc2, 0xe5, 0x8c, 0x29, 0x37, - 0xa2, 0x6a, 0x5a, 0x54, 0xca, 0x20, 0xd1, 0xd8, 0x31, 0x63, 0x65, 0xe6, 0x31, 0xcd, 0x47, 0x85, - 0x3b, 0xb0, 0xe6, 0xdb, 0xd6, 0xd7, 0x6f, 0xdb, 0x8d, 0x0f, 0xad, 0xb5, 0xb5, 0xce, 0xfa, 0xfe, - 0xd1, 0xf7, 0xb9, 0xdb, 0xbc, 0x98, 0xbb, 0xcd, 0x9f, 0x73, 0xb7, 0xf9, 0x65, 0xe1, 0x36, 0x2e, - 0x16, 0x6e, 0xe3, 0xc7, 0xc2, 0x6d, 0x7c, 0xea, 0x4f, 0xb8, 0x9e, 0x66, 0x7e, 0x8f, 0x89, 0xd8, - 0x1b, 0x99, 0xbf, 0xed, 0x8b, 0x23, 0xea, 0x2b, 0xaf, 0x7c, 0xea, 0xb3, 0x97, 0x7d, 0x2f, 0x5f, - 0x3d, 0x78, 0x7d, 0x96, 0x82, 0xf2, 0xdb, 0xe6, 0x25, 0xbf, 0xfa, 0x1d, 0x00, 0x00, 0xff, 0xff, - 0x38, 0x1e, 0x64, 0x27, 0x10, 0x04, 0x00, 0x00, + // 567 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x6f, 0xd3, 0x30, + 0x18, 0xc6, 0x5b, 0xa8, 0xca, 0xe6, 0x01, 0x6b, 0xc3, 0x3f, 0x6b, 0x82, 0x0c, 0x90, 0x90, 0x18, + 0x83, 0x46, 0x6c, 0x07, 0x10, 0x3b, 0x20, 0x6d, 0xe2, 0x30, 0xb4, 0x4d, 0x55, 0x5b, 0x71, 0xe0, + 0x62, 0x39, 0xce, 0x9b, 0xd6, 0x5a, 0x12, 0x47, 0xb6, 0x53, 0xb2, 0x7d, 0x0a, 0x8e, 0x1c, 0xf9, + 0x38, 0x1c, 0x77, 0xe4, 0x88, 0xda, 0x6f, 0xc0, 0x27, 0x40, 0xb1, 0xd3, 0x74, 0x41, 0x83, 0x5b, + 0xf5, 0x3c, 0xbf, 0xf7, 0xc9, 0xeb, 0xc7, 0x35, 0x7a, 0xa8, 0xb4, 0xe4, 0x01, 0x78, 0x4a, 0xd3, + 0x53, 0xe0, 0x3e, 0xf3, 0x52, 0x2a, 0x69, 0xac, 0x7a, 0xa9, 0x14, 0x5a, 0x38, 0xeb, 0xd6, 0xed, + 0x2d, 0xdc, 0x8d, 0xbb, 0x63, 0x31, 0x16, 0xc6, 0xf3, 0x8a, 0x5f, 0x16, 0x7b, 0xfa, 0xbb, 0x8d, + 0xda, 0x7d, 0x33, 0xe7, 0x6c, 0xa1, 0x8e, 0x84, 0x2f, 0x54, 0x06, 0x8a, 0xf0, 0x44, 0x83, 0x9c, + 0xd2, 0x08, 0x37, 0x1f, 0x37, 0x9f, 0xb7, 0x06, 0xeb, 0xa5, 0x7e, 0x58, 0xca, 0xce, 0x36, 0xea, + 0x06, 0x10, 0xc1, 0x98, 0x6a, 0x58, 0xb2, 0x6d, 0xc3, 0x76, 0x16, 0x46, 0x05, 0x6f, 0xa1, 0x4e, + 0x00, 0xa9, 0x50, 0x5c, 0x2f, 0xd9, 0x6b, 0x36, 0xb7, 0xd4, 0x2b, 0xf4, 0x2d, 0xc2, 0x12, 0x02, + 0x88, 0x53, 0xcd, 0x45, 0x42, 0x64, 0x2d, 0xfe, 0xba, 0x19, 0xb9, 0xbf, 0xf4, 0x07, 0x97, 0x3f, + 0xb2, 0x8d, 0xba, 0xf6, 0xc0, 0x84, 0x89, 0x38, 0xe6, 0x4a, 0x71, 0x91, 0xe0, 0x96, 0xdd, 0xc8, + 0x1a, 0x07, 0x95, 0x5e, 0xc0, 0x12, 0x78, 0x32, 0x05, 0x75, 0x69, 0xa5, 0x1b, 0x16, 0x5e, 0x18, + 0x55, 0xf2, 0x0b, 0xd4, 0xe5, 0x8c, 0x12, 0xcd, 0x63, 0x10, 0x99, 0x26, 0x09, 0x4d, 0x84, 0xc2, + 0xab, 0x76, 0x7f, 0xce, 0xe8, 0xc8, 0xea, 0x27, 0x85, 0xec, 0x6c, 0xa2, 0x35, 0x3f, 0x0b, 0x43, + 0x90, 0x44, 0xf1, 0x73, 0xc0, 0xc8, 0x50, 0xc8, 0x4a, 0x43, 0x7e, 0x0e, 0xce, 0x4b, 0xe4, 0x70, + 0x9f, 0x55, 0x61, 0x7e, 0x24, 0xd8, 0xa9, 0xc2, 0x6b, 0xf6, 0xd3, 0xdc, 0x67, 0x65, 0xda, 0xbe, + 0xd1, 0x9d, 0x3d, 0xb4, 0x11, 0x02, 0x10, 0x2d, 0x69, 0xa2, 0x8a, 0xd0, 0xfa, 0x0e, 0x37, 0xcd, + 0xd4, 0x83, 0x10, 0x60, 0x54, 0x02, 0xb5, 0x5d, 0xde, 0xa3, 0x47, 0x31, 0xcd, 0x89, 0xb9, 0x7f, + 0x52, 0x9c, 0x80, 0xd1, 0x28, 0x52, 0x24, 0x05, 0x49, 0x20, 0x15, 0x6c, 0x82, 0x6f, 0x99, 0x79, + 0x1c, 0xd3, 0x7c, 0x58, 0x30, 0x87, 0x8c, 0x1e, 0x14, 0x44, 0x1f, 0xe4, 0x87, 0xc2, 0x77, 0xfa, + 0xe8, 0x59, 0x00, 0x21, 0xcd, 0x22, 0x4d, 0x62, 0x9e, 0x90, 0xbf, 0x2f, 0x46, 0x4f, 0x24, 0xa8, + 0x89, 0x88, 0x02, 0x7c, 0xdb, 0x04, 0x3d, 0x29, 0xe1, 0x63, 0x9e, 0x0c, 0x6a, 0x77, 0x34, 0x5a, + 0x80, 0xb5, 0x44, 0x9a, 0xff, 0x27, 0x71, 0xbd, 0x9e, 0x48, 0xf3, 0x7f, 0x25, 0xee, 0xa1, 0x0d, + 0xd3, 0xe7, 0xd5, 0x0d, 0x75, 0x6c, 0x43, 0x45, 0xaf, 0x57, 0x35, 0xb4, 0x83, 0xee, 0x29, 0x1a, + 0x82, 0x3e, 0x23, 0x49, 0x16, 0x93, 0x29, 0x8d, 0x78, 0x40, 0xb5, 0x90, 0x0a, 0x77, 0xcd, 0xdc, + 0x1d, 0x6b, 0x9e, 0x64, 0xf1, 0xa7, 0xca, 0x72, 0xde, 0x20, 0x5c, 0xce, 0x98, 0x72, 0x23, 0xaa, + 0x26, 0x45, 0xa5, 0x0c, 0x12, 0x8d, 0x1d, 0x33, 0x56, 0x66, 0x1e, 0xd3, 0x7c, 0x58, 0xb8, 0x7d, + 0x6b, 0xbe, 0x6b, 0x7d, 0xfb, 0xbe, 0xd9, 0xf8, 0xd8, 0x5a, 0x59, 0xe9, 0xac, 0xee, 0x1f, 0xfd, + 0x98, 0xb9, 0xcd, 0x8b, 0x99, 0xdb, 0xfc, 0x35, 0x73, 0x9b, 0x5f, 0xe7, 0x6e, 0xe3, 0x62, 0xee, + 0x36, 0x7e, 0xce, 0xdd, 0xc6, 0xe7, 0x9d, 0x31, 0xd7, 0x93, 0xcc, 0xef, 0x31, 0x11, 0x7b, 0x43, + 0xf3, 0xb7, 0x7d, 0x75, 0x44, 0x7d, 0xe5, 0x95, 0x4f, 0x7d, 0xfa, 0x7a, 0xd7, 0xcb, 0x97, 0x0f, + 0x5e, 0x9f, 0xa5, 0xa0, 0xfc, 0xb6, 0x79, 0xc9, 0xbb, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xaf, + 0xb8, 0x79, 0xc0, 0x10, 0x04, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/query.pb.go b/x/stakeibc/types/query.pb.go index a278915d9e..be83acd48f 100644 --- a/x/stakeibc/types/query.pb.go +++ b/x/stakeibc/types/query.pb.go @@ -1028,8 +1028,8 @@ var fileDescriptor_494b786fe66f2b80 = []byte{ 0xe3, 0x86, 0xba, 0x31, 0xa0, 0xe1, 0x05, 0xa5, 0xaa, 0xf3, 0x5c, 0x19, 0x27, 0xea, 0xd2, 0xb5, 0x77, 0xf7, 0x5f, 0x9c, 0xe5, 0xb5, 0x97, 0x67, 0x79, 0xed, 0xef, 0xb3, 0xbc, 0xf6, 0xec, 0x3c, 0x3f, 0xf4, 0xf2, 0x3c, 0x3f, 0xf4, 0xd7, 0x79, 0x7e, 0xe8, 0x51, 0xb1, 0x66, 0xfb, 0xf5, 0x56, - 0xb5, 0x60, 0xf2, 0x46, 0x5a, 0xd8, 0xc3, 0xcd, 0xa2, 0x71, 0xd4, 0x09, 0xee, 0x1f, 0x37, 0xa9, - 0x57, 0x1d, 0x15, 0xff, 0xac, 0xb6, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x36, 0x26, 0xb3, 0x1e, + 0xb5, 0x60, 0xf2, 0x46, 0x5a, 0xd8, 0xc3, 0xcd, 0x2d, 0xe3, 0xa8, 0x13, 0xdc, 0x3f, 0x6e, 0x52, + 0xaf, 0x3a, 0x2a, 0xfe, 0x59, 0x6d, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x80, 0xae, 0xf9, 0x97, 0x0e, 0x00, 0x00, } diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index 1a5248c6dd..e85434ff53 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1189,8 +1189,8 @@ var fileDescriptor_9b7e09c9ad51cd54 = []byte{ 0xfa, 0xef, 0x22, 0xe4, 0xb5, 0xab, 0x10, 0xa1, 0xef, 0xf2, 0xde, 0x8b, 0xf3, 0xac, 0xf0, 0xf2, 0x3c, 0x2b, 0xfc, 0x7d, 0x9e, 0x15, 0x7e, 0xba, 0xc8, 0xa6, 0x5e, 0x5e, 0x64, 0x53, 0x7f, 0x5e, 0x64, 0x53, 0x87, 0xa5, 0xc8, 0x6d, 0xef, 0x80, 0x79, 0x5b, 0xdf, 0x43, 0x35, 0x5a, 0x0c, 0x3e, - 0x62, 0x4f, 0x37, 0x4a, 0xc5, 0x76, 0xe4, 0xc3, 0xd8, 0xbb, 0xfd, 0xd5, 0xc6, 0xd8, 0x67, 0xe9, - 0xe6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xbc, 0xcd, 0x7a, 0x38, 0x0f, 0x00, 0x00, + 0x62, 0x4f, 0x37, 0x36, 0x8b, 0xed, 0xc8, 0x87, 0xb1, 0x77, 0xfb, 0xab, 0x8d, 0xb1, 0xcf, 0xd2, + 0xcd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x52, 0x1a, 0xd0, 0x9d, 0x38, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index b5aec1a94a..28f96c0708 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -148,34 +148,34 @@ func init() { proto.RegisterFile("stride/stakeibc/validator.proto", fileDescript var fileDescriptor_5d2f32e16bd6ab8f = []byte{ // 439 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0xbf, 0x6f, 0x13, 0x31, - 0x14, 0x8e, 0xcb, 0x35, 0x6d, 0x5c, 0x7e, 0x54, 0x56, 0xa8, 0x8e, 0x0c, 0x97, 0xd0, 0xa1, 0xca, - 0x92, 0x3b, 0x11, 0x56, 0x96, 0x46, 0x65, 0xa0, 0xaa, 0x18, 0x2e, 0x85, 0x01, 0x21, 0x9d, 0x7c, - 0x77, 0x4f, 0x77, 0x56, 0x72, 0x76, 0x64, 0xbf, 0x96, 0xb2, 0xf1, 0x27, 0xf0, 0x87, 0x30, 0x76, - 0x65, 0xef, 0x58, 0x75, 0x42, 0x0c, 0x15, 0x4a, 0xfe, 0x11, 0x84, 0xcf, 0xd7, 0x46, 0x88, 0x85, - 0xc9, 0xf6, 0xe7, 0xcf, 0xef, 0xfb, 0x3e, 0xbf, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, - 0x67, 0x20, 0xd2, 0x2c, 0x3a, 0xe7, 0x73, 0x91, 0x73, 0x54, 0x3a, 0x5c, 0x68, 0x85, 0x8a, 0x3d, - 0xa9, 0x09, 0x61, 0x43, 0xe8, 0x3d, 0xcb, 0x94, 0xa9, 0x94, 0x49, 0xec, 0x75, 0x54, 0x1f, 0x6a, - 0x6e, 0xaf, 0x5b, 0xa8, 0x42, 0xd5, 0xf8, 0x9f, 0x5d, 0x8d, 0xee, 0x7f, 0x27, 0xf4, 0xe9, 0xfb, - 0xa6, 0xea, 0xeb, 0x8b, 0xac, 0xe4, 0xb2, 0x80, 0x98, 0x23, 0xb0, 0x2f, 0x84, 0x06, 0x42, 0x22, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x3d, 0x6f, 0xdb, 0x30, + 0x10, 0x35, 0x53, 0xc5, 0x89, 0x99, 0x7e, 0x04, 0x84, 0x1b, 0xa8, 0x1e, 0x64, 0x37, 0x43, 0xe0, + 0xc5, 0x12, 0xea, 0xac, 0x5d, 0x62, 0xa4, 0x43, 0x83, 0xa0, 0x83, 0x9c, 0x76, 0x28, 0x0a, 0x08, + 0x94, 0x74, 0x90, 0x08, 0x5b, 0xa4, 0x41, 0x5e, 0xd2, 0x74, 0xeb, 0x4f, 0xe8, 0x0f, 0xe9, 0x98, + 0xb5, 0x7b, 0xc6, 0x20, 0x53, 0xd1, 0x21, 0x28, 0xec, 0x3f, 0x52, 0x94, 0xa2, 0x92, 0xa0, 0xe8, + 0x92, 0x89, 0xe4, 0xe3, 0xe3, 0xbd, 0xf7, 0x78, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, + 0x67, 0x20, 0xd2, 0x2c, 0x3a, 0xe3, 0x73, 0x91, 0x73, 0x54, 0x3a, 0x5c, 0x68, 0x85, 0x8a, 0x3d, + 0xab, 0x09, 0x61, 0x43, 0xe8, 0xbd, 0xc8, 0x94, 0xa9, 0x94, 0x49, 0xec, 0x75, 0x54, 0x1f, 0x6a, + 0x6e, 0xaf, 0x5b, 0xa8, 0x42, 0xd5, 0xf8, 0xdf, 0x5d, 0x8d, 0xee, 0xfe, 0x20, 0xf4, 0xf9, 0x87, + 0xa6, 0xea, 0x9b, 0xf3, 0xac, 0xe4, 0xb2, 0x80, 0x98, 0x23, 0xb0, 0xaf, 0x84, 0x06, 0x42, 0x22, 0x68, 0xc9, 0xe7, 0x09, 0xaa, 0x19, 0x48, 0x93, 0xa0, 0x4a, 0x4c, 0xc9, 0x35, 0x98, 0x44, 0x73, - 0x04, 0x9f, 0x0c, 0xc8, 0xb0, 0x33, 0x79, 0x75, 0x75, 0xdb, 0x6f, 0xfd, 0xbc, 0xed, 0x1f, 0x14, - 0x02, 0xcb, 0xb3, 0x34, 0xcc, 0x54, 0xe5, 0x94, 0xdd, 0x32, 0x32, 0xf9, 0x2c, 0xc2, 0xcf, 0x0b, - 0x30, 0xe1, 0x11, 0x64, 0x37, 0x97, 0x23, 0xea, 0x8c, 0x1d, 0x41, 0x16, 0xf7, 0x1a, 0x8d, 0x53, - 0x2b, 0x71, 0xaa, 0xa6, 0x56, 0xc0, 0x5a, 0x78, 0x4e, 0x1f, 0xc2, 0x42, 0x65, 0x65, 0x22, 0xcf, - 0xaa, 0x14, 0xb4, 0xbf, 0x31, 0x20, 0x43, 0x2f, 0xde, 0xb1, 0xd8, 0x5b, 0x0b, 0xed, 0x7f, 0xdb, - 0xa0, 0x9d, 0x3b, 0xff, 0x8c, 0x51, 0x4f, 0xf2, 0xca, 0x19, 0x8b, 0xed, 0x9e, 0x8d, 0xe9, 0x16, - 0xcf, 0x73, 0x0d, 0xc6, 0xd8, 0xf7, 0x9d, 0x89, 0x7f, 0x73, 0x39, 0xea, 0x3a, 0x07, 0x87, 0xf5, - 0xcd, 0x14, 0xb5, 0x90, 0x45, 0xdc, 0x10, 0xd9, 0x3b, 0xfa, 0x38, 0x87, 0x39, 0x14, 0x1c, 0x85, - 0x92, 0x09, 0xaf, 0xd0, 0xdf, 0xb4, 0x4f, 0xc3, 0xff, 0x88, 0xfa, 0x46, 0x62, 0xfc, 0xe8, 0xbe, - 0xca, 0x61, 0x85, 0x6c, 0x8f, 0xb6, 0x3f, 0x81, 0x28, 0x4a, 0xf4, 0xdb, 0x36, 0x89, 0x3b, 0xb1, - 0x8f, 0x74, 0xef, 0xee, 0xa7, 0xc1, 0xf5, 0xa0, 0xfe, 0xe1, 0xad, 0x01, 0x19, 0xee, 0x8c, 0x0f, - 0xc2, 0xbf, 0xfa, 0x1c, 0xfe, 0xb3, 0x65, 0x71, 0xb7, 0xa9, 0xb2, 0x8e, 0x1e, 0x7b, 0xdb, 0x0f, - 0x76, 0xbd, 0x63, 0x6f, 0xdb, 0xdb, 0xdd, 0x9c, 0x9c, 0x5c, 0x2d, 0x03, 0x72, 0xbd, 0x0c, 0xc8, - 0xaf, 0x65, 0x40, 0xbe, 0xae, 0x82, 0xd6, 0xf5, 0x2a, 0x68, 0xfd, 0x58, 0x05, 0xad, 0x0f, 0xe3, - 0xb5, 0x48, 0x53, 0xab, 0x36, 0x3a, 0xe1, 0xa9, 0x89, 0xdc, 0x08, 0x9e, 0xbf, 0x18, 0x47, 0x17, - 0xf7, 0x83, 0x68, 0x23, 0xa6, 0x6d, 0x3b, 0x43, 0x2f, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0x69, - 0x8f, 0x67, 0x59, 0xa8, 0x02, 0x00, 0x00, + 0x04, 0x9f, 0x0c, 0xc8, 0xb0, 0x33, 0x79, 0x7d, 0x79, 0xd3, 0x6f, 0xfd, 0xba, 0xe9, 0xef, 0x15, + 0x02, 0xcb, 0xd3, 0x34, 0xcc, 0x54, 0xe5, 0x94, 0xdd, 0x32, 0x32, 0xf9, 0x2c, 0xc2, 0x2f, 0x0b, + 0x30, 0xe1, 0x21, 0x64, 0xd7, 0x17, 0x23, 0xea, 0x8c, 0x1d, 0x42, 0x16, 0xf7, 0x1a, 0x8d, 0x13, + 0x2b, 0x71, 0xa2, 0xa6, 0x56, 0xc0, 0x5a, 0x78, 0x49, 0x1f, 0xc3, 0x42, 0x65, 0x65, 0x22, 0x4f, + 0xab, 0x14, 0xb4, 0xbf, 0x36, 0x20, 0x43, 0x2f, 0xde, 0xb2, 0xd8, 0x3b, 0x0b, 0xed, 0x7e, 0x5f, + 0xa3, 0x9d, 0x5b, 0xff, 0x8c, 0x51, 0x4f, 0xf2, 0xca, 0x19, 0x8b, 0xed, 0x9e, 0x8d, 0xe9, 0x06, + 0xcf, 0x73, 0x0d, 0xc6, 0xd8, 0xf7, 0x9d, 0x89, 0x7f, 0x7d, 0x31, 0xea, 0x3a, 0x07, 0x07, 0xf5, + 0xcd, 0x14, 0xb5, 0x90, 0x45, 0xdc, 0x10, 0xd9, 0x7b, 0xfa, 0x34, 0x87, 0x39, 0x14, 0x1c, 0x85, + 0x92, 0x09, 0xaf, 0xd0, 0x5f, 0xb7, 0x4f, 0xc3, 0x07, 0x44, 0x7d, 0x2b, 0x31, 0x7e, 0x72, 0x57, + 0xe5, 0xa0, 0x42, 0xb6, 0x43, 0xdb, 0x9f, 0x41, 0x14, 0x25, 0xfa, 0x6d, 0x9b, 0xc4, 0x9d, 0xd8, + 0x27, 0xba, 0x73, 0xfb, 0xd3, 0xe0, 0x7a, 0x50, 0xff, 0xf0, 0xc6, 0x80, 0x0c, 0xb7, 0xc6, 0x7b, + 0xe1, 0x3f, 0x7d, 0x0e, 0xff, 0xdb, 0xb2, 0xb8, 0xdb, 0x54, 0xb9, 0x8f, 0x1e, 0x79, 0x9b, 0x8f, + 0xb6, 0xbd, 0x23, 0x6f, 0xd3, 0xdb, 0x5e, 0x9f, 0x1c, 0x5f, 0x2e, 0x03, 0x72, 0xb5, 0x0c, 0xc8, + 0xef, 0x65, 0x40, 0xbe, 0xad, 0x82, 0xd6, 0xd5, 0x2a, 0x68, 0xfd, 0x5c, 0x05, 0xad, 0x8f, 0xe3, + 0x7b, 0x91, 0xa6, 0x56, 0x6d, 0x74, 0xcc, 0x53, 0x13, 0xb9, 0x11, 0x3c, 0x7b, 0xb5, 0x1f, 0x9d, + 0xdf, 0x0d, 0xa2, 0x8d, 0x98, 0xb6, 0xed, 0x0c, 0xed, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xfe, + 0x29, 0x7a, 0xbe, 0xa8, 0x02, 0x00, 0x00, } func (m *ValidatorExchangeRate) Marshal() (dAtA []byte, err error) { From 058f58ae3d92c3f1c83feb5bbf028f6f0f4ebc18 Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Thu, 10 Aug 2023 13:16:43 -0400 Subject: [PATCH 17/44] Switch to SDK Fork to Address Distribution Bug (#885) Co-authored-by: sampocs Co-authored-by: sampocs --- go.mod | 6 +++++- go.sum | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6bfb2dd093..15ed4dde9f 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/cosmos/ibc-go/v7 v7.2.0 github.com/cosmos/ics23/go v0.10.0 github.com/cosmos/interchain-security/v3 v3.1.0 + github.com/gogo/protobuf v1.3.2 github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 @@ -34,7 +35,6 @@ require ( github.com/gin-gonic/gin v1.8.1 // indirect github.com/go-playground/validator/v10 v10.11.1 // indirect github.com/goccy/go-json v0.9.11 // indirect - github.com/gogo/protobuf v1.3.2 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/oxyno-zeta/gomock-extra-matcher v1.1.0 // indirect @@ -181,6 +181,10 @@ replace ( // Use the keyring specified by the cosmos-sdk github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.2 //indirect + + // fork SDK to fix SDKv0.47 Distribution Bug + // TODO - Remove this patch and update Tokens in a subsequent upgrade handler + github.com/cosmos/cosmos-sdk => github.com/Stride-Labs/cosmos-sdk v0.47.4-stride-distribution-fix-1 github.com/cosmos/interchain-security/v3 => github.com/Stride-Labs/interchain-security/v3 v3.1.1-0.20230713175550-227e13e60bac // fork cast to add additional error checking diff --git a/go.sum b/go.sum index a41ee8b302..de30573a34 100644 --- a/go.sum +++ b/go.sum @@ -221,6 +221,8 @@ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWX github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Stride-Labs/cast v0.0.3 h1:eM3n/t3hSxb+iw9LDo3r/uGBp3w4U7wPv40GKMtJ1dI= github.com/Stride-Labs/cast v0.0.3/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/Stride-Labs/cosmos-sdk v0.47.4-stride-distribution-fix-1 h1:AFXHtq6Zb4aTwYhU+DiBGiHGi0kxYA/8hTD+Hcm5U/E= +github.com/Stride-Labs/cosmos-sdk v0.47.4-stride-distribution-fix-1/go.mod h1:R5n+uM7vguVPFap4pgkdvQCT1nVo/OtPwrlAU40rvok= github.com/Stride-Labs/interchain-security/v3 v3.1.1-0.20230713175550-227e13e60bac h1:k1ef68RNRHMtekRusOh9bu5DmHEdvxPyKwotzFu9giU= github.com/Stride-Labs/interchain-security/v3 v3.1.1-0.20230713175550-227e13e60bac/go.mod h1:2fILBgypEZcwR3BSzKDw+EsYtMKv9Z6cYXfouh4xTYU= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= @@ -322,8 +324,6 @@ github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cosmos/cosmos-proto v1.0.0-beta.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= -github.com/cosmos/cosmos-sdk v0.47.4 h1:FVUpEprm58nMmBX4xkRdMDaIG5Nr4yy92HZAfGAw9bg= -github.com/cosmos/cosmos-sdk v0.47.4/go.mod h1:R5n+uM7vguVPFap4pgkdvQCT1nVo/OtPwrlAU40rvok= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= From 54358c34cb31d2363c0af24ded9b809f000a8835 Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Thu, 10 Aug 2023 13:24:20 -0400 Subject: [PATCH 18/44] V13 changelog (#887) Co-authored-by: sampocs Co-authored-by: sampocs --- CHANGELOG.md | 15 +++++++++++++++ app/upgrades/v13/README.md | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 app/upgrades/v13/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md index c55f1b7f7f..4acbbef83a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changelog +## [v13.0.0](https://github.com/Stride-Labs/stride/releases/tag/v13.0.0) - 2023-08-08 + +### On-Chain changes +1. Adds ICA-Based Oracle for Cosmwasm-based Chains ([#884](https://github.com/Stride-Labs/stride/pull/884)) +2. Switch to SDK Fork to address SDKv0.47 Distribution Bug ([#885](https://github.com/Stride-Labs/stride/pull/885)) +3. Add Redundant IBC Relay Decorator ([#882](https://github.com/Stride-Labs/stride/pull/882)) +4. Whitelist missing param keys and register stTokens as consumer fees ([#881](https://github.com/Stride-Labs/stride/pull/881)) +5. Add v13 Upgrade Handler ([#886](https://github.com/Stride-Labs/stride/pull/886)) +6. Change paths to point towards v13 ([#891](https://github.com/Stride-Labs/stride/pull/888)) + +### Off-Chain changes +1. Add `build-linux` command ([#859](https://github.com/Stride-Labs/stride/pull/859)) +2. Remove `provider` dependency for Dockernet ([#860](https://github.com/Stride-Labs/stride/pull/860)) +3. Update Dockernet host zone versions ([#883](https://github.com/Stride-Labs/stride/pull/883)) + ## [v12.0.0](https://github.com/Stride-Labs/stride/releases/tag/v12.0.0) - 2023-07-15 ### On-Chain changes diff --git a/app/upgrades/v13/README.md b/app/upgrades/v13/README.md new file mode 100644 index 0000000000..b64dc61708 --- /dev/null +++ b/app/upgrades/v13/README.md @@ -0,0 +1,7 @@ +# Upgrade v13 Changelog +1. Adds ICA-Based Oracle for Cosmwasm-based Chains ([#884](https://github.com/Stride-Labs/stride/pull/884)) +2. Switch to SDK Fork to address SDKv0.47 Distribution Bug ([#885](https://github.com/Stride-Labs/stride/pull/885)) +3. Add Redundant IBC Relay Decorator ([#882](https://github.com/Stride-Labs/stride/pull/882)) +4. Whitelist missing param keys and register stTokens as consumer fees ([#881](https://github.com/Stride-Labs/stride/pull/881)) +5. Add v13 Upgrade Handler ([#886](https://github.com/Stride-Labs/stride/pull/886)) +6. Change paths to point towards v13 ([#891](https://github.com/Stride-Labs/stride/pull/888)) From 65a10d6dea3a95833c0df6d894a889219cd10d66 Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Thu, 10 Aug 2023 14:38:56 -0400 Subject: [PATCH 19/44] Add v13 Upgrade Handler (#886) Co-authored-by: strbrian Co-authored-by: strbrian <136667271+strbrian@users.noreply.github.com> Co-authored-by: sampocs --- Makefile | 2 +- app/upgrades.go | 18 ++++++++---- app/upgrades/README.md | 4 +-- app/upgrades/v13/upgrades.go | 43 +++++++++++++++++++++++++++ app/upgrades/v13/upgrades_test.go | 49 +++++++++++++++++++++++++++++++ go.mod | 3 -- go.sum | 16 ++-------- 7 files changed, 110 insertions(+), 25 deletions(-) create mode 100644 app/upgrades/v13/upgrades.go create mode 100644 app/upgrades/v13/upgrades_test.go diff --git a/Makefile b/Makefile index 71dacb1828..1e82948a15 100644 --- a/Makefile +++ b/Makefile @@ -138,7 +138,7 @@ submit-upgrade-immediately: UPGRADE_HEIGHT=150 bash $(DOCKERNET_HOME)/upgrades/submit_upgrade.sh submit-upgrade-after-tests: - UPGRADE_HEIGHT=400 bash $(DOCKERNET_HOME)/upgrades/submit_upgrade.sh + UPGRADE_HEIGHT=700 bash $(DOCKERNET_HOME)/upgrades/submit_upgrade.sh start-upgrade-integration-tests: PART=1 bash $(DOCKERNET_HOME)/tests/run_tests_upgrade.sh diff --git a/app/upgrades.go b/app/upgrades.go index a06d87dd5e..6e1a5a417d 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -5,19 +5,17 @@ import ( servertypes "github.com/cosmos/cosmos-sdk/server/types" storetypes "github.com/cosmos/cosmos-sdk/store/types" + authz "github.com/cosmos/cosmos-sdk/x/authz" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - - authz "github.com/cosmos/cosmos-sdk/x/authz" - consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - v10 "github.com/Stride-Labs/stride/v13/app/upgrades/v10" v11 "github.com/Stride-Labs/stride/v13/app/upgrades/v11" v12 "github.com/Stride-Labs/stride/v13/app/upgrades/v12" + v13 "github.com/Stride-Labs/stride/v13/app/upgrades/v13" v2 "github.com/Stride-Labs/stride/v13/app/upgrades/v2" v3 "github.com/Stride-Labs/stride/v13/app/upgrades/v3" v4 "github.com/Stride-Labs/stride/v13/app/upgrades/v4" @@ -162,6 +160,16 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { ), ) + // v13 upgrade handler + app.UpgradeKeeper.SetUpgradeHandler( + v13.UpgradeName, + v13.CreateUpgradeHandler( + app.mm, + app.configurator, + app.StakeibcKeeper, + ), + ) + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { panic(fmt.Errorf("Failed to read upgrade info from disk: %w", err)) diff --git a/app/upgrades/README.md b/app/upgrades/README.md index 9045834492..ec0d5a36ed 100644 --- a/app/upgrades/README.md +++ b/app/upgrades/README.md @@ -83,7 +83,7 @@ package {upgradeVersion} import ( sdk "github.com/cosmos/cosmos-sdk/types" - {new-consensus-version} "github.com/Stride-Labs/stride/v12/x/records/migrations/{new-consensus-version}" + {new-consensus-version} "github.com/Stride-Labs/stride/v13/x/records/migrations/{new-consensus-version}" ) // TODO: Add migration logic to deserialize with old protos and re-serialize with new ones @@ -98,7 +98,7 @@ func MigrateStore(ctx sdk.Context) error { // app/upgrades/{upgradeVersion}/upgrades.go import ( - {module}migration "github.com/Stride-Labs/stride/v12/x/{module}/migrations/{new-consensus-version}" + {module}migration "github.com/Stride-Labs/stride/v13/x/{module}/migrations/{new-consensus-version}" ) // CreateUpgradeHandler creates an SDK upgrade handler for {upgradeVersion} diff --git a/app/upgrades/v13/upgrades.go b/app/upgrades/v13/upgrades.go new file mode 100644 index 0000000000..84f10305df --- /dev/null +++ b/app/upgrades/v13/upgrades.go @@ -0,0 +1,43 @@ +package v13 + +import ( + errorsmod "cosmossdk.io/errors" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +var ( + UpgradeName = "v13" +) + +// CreateUpgradeHandler creates an SDK upgrade handler for v13 +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + stakeibcKeeper stakeibckeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + ctx.Logger().Info("Starting upgrade v13...") + + ctx.Logger().Info("Registering stTokens to consumer reward denom whitelist...") + hostZones := stakeibcKeeper.GetAllHostZone(ctx) + allDenoms := []string{} + + // get all stToken denoms + for _, zone := range hostZones { + allDenoms = append(allDenoms, stakeibctypes.StAssetDenomFromHostZoneDenom(zone.HostDenom)) + } + + err := stakeibcKeeper.RegisterStTokenDenomsToWhitelist(ctx, allDenoms) + if err != nil { + return nil, errorsmod.Wrapf(err, "unable to register stTokens to whitelist") + } + + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/app/upgrades/v13/upgrades_test.go b/app/upgrades/v13/upgrades_test.go new file mode 100644 index 0000000000..ba394369a3 --- /dev/null +++ b/app/upgrades/v13/upgrades_test.go @@ -0,0 +1,49 @@ +package v13_test + +import ( + "testing" + + "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v13/app/apptesting" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +type UpgradeTestSuite struct { + apptesting.AppTestHelper +} + +func (s *UpgradeTestSuite) SetupTest() { + s.Setup() +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +func (s *UpgradeTestSuite) TestUpgrade() { + dummyUpgradeHeight := int64(5) + + // Clear the reward denoms in the consumer keeper + consumerParams := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + consumerParams.RewardDenoms = []string{"denomA", "denomB"} + s.App.ConsumerKeeper.SetParams(s.Ctx, consumerParams) + + // Add host zones + hostZones := []stakeibctypes.HostZone{ + {ChainId: "cosmoshub-4", HostDenom: "uatom"}, + {ChainId: "osmosis-1", HostDenom: "uosmo"}, + {ChainId: "juno-1", HostDenom: "ujuno"}, + } + for _, hostZone := range hostZones { + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + } + + // Submit the upgrade which should register the new host denoms + s.ConfirmUpgradeSucceededs("v13", dummyUpgradeHeight) + + // Confirm the new reward denoms were registered + expectedRewardDenoms := []string{"denomA", "denomB", "stuatom", "stuosmo", "stujuno"} + consumerParams = s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + s.Require().ElementsMatch(expectedRewardDenoms, consumerParams.RewardDenoms) +} diff --git a/go.mod b/go.mod index 15ed4dde9f..bf405852a4 100644 --- a/go.mod +++ b/go.mod @@ -32,9 +32,6 @@ require github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect require ( cosmossdk.io/log v1.1.1-0.20230704160919-88f2c830b0ca // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/gin-gonic/gin v1.8.1 // indirect - github.com/go-playground/validator/v10 v10.11.1 // indirect - github.com/goccy/go-json v0.9.11 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/oxyno-zeta/gomock-extra-matcher v1.1.0 // indirect diff --git a/go.sum b/go.sum index de30573a34..660d505e7f 100644 --- a/go.sum +++ b/go.sum @@ -411,9 +411,8 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= -github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -432,13 +431,10 @@ github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KE github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= -github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= @@ -447,8 +443,6 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -693,7 +687,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -702,7 +695,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= -github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= @@ -815,7 +807,6 @@ github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6 github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -867,7 +858,6 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= @@ -1002,7 +992,6 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= @@ -1588,7 +1577,6 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= From 4b1c63332452b2772dc1b26b47547975b8cbd8e0 Mon Sep 17 00:00:00 2001 From: sampocs Date: Thu, 10 Aug 2023 17:58:29 -0500 Subject: [PATCH 20/44] Removed consumer param store updates (#892) --- CHANGELOG.md | 1 + app/upgrades/v13/README.md | 1 + app/upgrades/v13/upgrades.go | 18 --------------- app/upgrades/v13/upgrades_test.go | 23 ------------------- x/stakeibc/keeper/consumer_test.go | 7 +++++- .../keeper/msg_server_register_host_zone.go | 9 -------- 6 files changed, 8 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4acbbef83a..97ae48caf2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 4. Whitelist missing param keys and register stTokens as consumer fees ([#881](https://github.com/Stride-Labs/stride/pull/881)) 5. Add v13 Upgrade Handler ([#886](https://github.com/Stride-Labs/stride/pull/886)) 6. Change paths to point towards v13 ([#891](https://github.com/Stride-Labs/stride/pull/888)) +7. Removed consumer param store updates ([#892](https://github.com/Stride-Labs/stride/pull/892)) ### Off-Chain changes 1. Add `build-linux` command ([#859](https://github.com/Stride-Labs/stride/pull/859)) diff --git a/app/upgrades/v13/README.md b/app/upgrades/v13/README.md index b64dc61708..4666b85268 100644 --- a/app/upgrades/v13/README.md +++ b/app/upgrades/v13/README.md @@ -5,3 +5,4 @@ 4. Whitelist missing param keys and register stTokens as consumer fees ([#881](https://github.com/Stride-Labs/stride/pull/881)) 5. Add v13 Upgrade Handler ([#886](https://github.com/Stride-Labs/stride/pull/886)) 6. Change paths to point towards v13 ([#891](https://github.com/Stride-Labs/stride/pull/888)) +7. Removed consumer param store updates ([#892](https://github.com/Stride-Labs/stride/pull/892)) diff --git a/app/upgrades/v13/upgrades.go b/app/upgrades/v13/upgrades.go index 84f10305df..7ac6af306e 100644 --- a/app/upgrades/v13/upgrades.go +++ b/app/upgrades/v13/upgrades.go @@ -1,14 +1,11 @@ package v13 import ( - errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) var ( @@ -23,21 +20,6 @@ func CreateUpgradeHandler( ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { ctx.Logger().Info("Starting upgrade v13...") - - ctx.Logger().Info("Registering stTokens to consumer reward denom whitelist...") - hostZones := stakeibcKeeper.GetAllHostZone(ctx) - allDenoms := []string{} - - // get all stToken denoms - for _, zone := range hostZones { - allDenoms = append(allDenoms, stakeibctypes.StAssetDenomFromHostZoneDenom(zone.HostDenom)) - } - - err := stakeibcKeeper.RegisterStTokenDenomsToWhitelist(ctx, allDenoms) - if err != nil { - return nil, errorsmod.Wrapf(err, "unable to register stTokens to whitelist") - } - return mm.RunMigrations(ctx, configurator, vm) } } diff --git a/app/upgrades/v13/upgrades_test.go b/app/upgrades/v13/upgrades_test.go index ba394369a3..9dc889375f 100644 --- a/app/upgrades/v13/upgrades_test.go +++ b/app/upgrades/v13/upgrades_test.go @@ -6,7 +6,6 @@ import ( "github.com/stretchr/testify/suite" "github.com/Stride-Labs/stride/v13/app/apptesting" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type UpgradeTestSuite struct { @@ -23,27 +22,5 @@ func TestKeeperTestSuite(t *testing.T) { func (s *UpgradeTestSuite) TestUpgrade() { dummyUpgradeHeight := int64(5) - - // Clear the reward denoms in the consumer keeper - consumerParams := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) - consumerParams.RewardDenoms = []string{"denomA", "denomB"} - s.App.ConsumerKeeper.SetParams(s.Ctx, consumerParams) - - // Add host zones - hostZones := []stakeibctypes.HostZone{ - {ChainId: "cosmoshub-4", HostDenom: "uatom"}, - {ChainId: "osmosis-1", HostDenom: "uosmo"}, - {ChainId: "juno-1", HostDenom: "ujuno"}, - } - for _, hostZone := range hostZones { - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - } - - // Submit the upgrade which should register the new host denoms s.ConfirmUpgradeSucceededs("v13", dummyUpgradeHeight) - - // Confirm the new reward denoms were registered - expectedRewardDenoms := []string{"denomA", "denomB", "stuatom", "stuosmo", "stujuno"} - consumerParams = s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) - s.Require().ElementsMatch(expectedRewardDenoms, consumerParams.RewardDenoms) } diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index e1c51fbb76..1c5ed0c0b8 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -12,8 +12,13 @@ func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) s.Require().NoError(err, "able to successfully register host zone") - // RegisterHostZone should have already registered stToken to consumer reward denom whitelist + // TODO: Remove this change after ICS consumer keeper validation is fixed params := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + params.RewardDenoms = []string{"stuatom"} + s.App.ConsumerKeeper.SetParams(s.Ctx, params) + + // RegisterHostZone should have already registered stToken to consumer reward denom whitelist + params = s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) stDenom := stakeibctypes.StAssetDenomFromHostZoneDenom(tc.validMsg.HostDenom) expectedWhitelist := []string{stDenom} s.Require().Equal([]string{stDenom}, params.RewardDenoms) diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index d8050f8780..2f8c115e6d 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -186,15 +186,6 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste } k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) - // register stToken to consumer reward denom whitelist so that - // stToken rewards can be distributed to provider validators - err = k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) - if err != nil { - errMsg := fmt.Sprintf("unable to register reward denom, err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) - } - // emit events ctx.EventManager().EmitEvent( sdk.NewEvent( From 533bb921e8add98bd110d658aa42f920dec5b5be Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 25 Aug 2023 14:59:13 -0500 Subject: [PATCH 21/44] LSM (#708) Co-authored-by: ethan Co-authored-by: ethan-stride <126913021+ethan-stride@users.noreply.github.com> Co-authored-by: riley-stride <104941670+riley-stride@users.noreply.github.com> --- .gitmodules | 9 +- README.md | 2 +- app/app.go | 1 + app/apptesting/test_helpers.go | 124 +- app/proposals_whitelisting.go | 2 - app/upgrades.go | 1 + app/upgrades/v10/upgrades.go | 12 +- app/upgrades/v10/upgrades_test.go | 20 +- app/upgrades/v5/upgrades.go | 1 + app/upgrades/v5/upgrades_test.go | 30 +- app/upgrades/v7/upgrades.go | 59 +- app/upgrades/v7/upgrades_test.go | 32 +- deps/gaia | 2 +- deps/relayer | 2 +- dockernet/config.sh | 64 +- dockernet/config/ica_controller.json | 2 +- dockernet/config/ica_host.json | 2 +- dockernet/dockerfiles/Dockerfile.gaia | 10 +- dockernet/dockerfiles/Dockerfile.relayer | 10 +- dockernet/scripts/lsm/scratch.sh | 69 + dockernet/scripts/lsm/setup.sh | 71 + dockernet/scripts/lsm/stake.sh | 7 + dockernet/src/create_logs.sh | 2 + dockernet/src/init_chain.sh | 36 +- dockernet/src/register_host.sh | 21 +- dockernet/tests/integration_tests.bats | 127 +- proto/cosmos/staking/v1beta1/lsm_tx.proto | 30 + proto/stride/interchainquery/v1/genesis.proto | 17 +- proto/stride/records/callbacks.proto | 6 +- proto/stride/records/genesis.proto | 106 +- proto/stride/records/params.proto | 7 + proto/stride/records/query.proto | 41 +- proto/stride/records/records.proto | 107 + proto/stride/stakeibc/callbacks.proto | 34 +- proto/stride/stakeibc/gov.proto | 14 +- proto/stride/stakeibc/host_zone.proto | 41 +- proto/stride/stakeibc/ica_account.proto | 8 - proto/stride/stakeibc/params.proto | 7 +- proto/stride/stakeibc/query.proto | 1 - proto/stride/stakeibc/tx.proto | 21 +- proto/stride/stakeibc/validator.proto | 31 +- readme-docs/md/stakeibc_README.md | 1 - scripts/protocgen.sh | 34 +- utils/cache_ctx.go | 84 + utils/cache_ctx_test.go | 60 + utils/module_account_test.go | 72 + utils/utils_test.go | 21 + x/autopilot/keeper/liquidstake_test.go | 22 +- x/claim/migrations/v2/types/params.pb.go | 6 +- x/claim/vesting/types/vesting_account.go | 2 +- x/icacallbacks/icacallbacks.go | 1 + x/icaoracle/keeper/ibc_test.go | 17 +- x/icaoracle/keeper/icaoracle_test.go | 5 +- .../keeper/msg_server_add_oracle_test.go | 4 +- .../msg_server_instantiate_oracle_test.go | 6 +- .../msg_server_restore_oracle_ica_test.go | 5 +- x/interchainquery/README.md | 22 +- x/interchainquery/keeper/abci.go | 52 +- x/interchainquery/keeper/keeper.go | 82 +- x/interchainquery/keeper/msg_server.go | 72 +- .../keeper/msg_submit_query_response_test.go | 116 +- x/interchainquery/keeper/new_query_test.go | 80 - x/interchainquery/keeper/queries.go | 82 +- x/interchainquery/keeper/queries_test.go | 215 ++ x/interchainquery/types/error.go | 2 + x/interchainquery/types/genesis.pb.go | 394 ++- x/interchainquery/types/keys.go | 10 +- x/interchainquery/types/query.go | 18 + x/records/client/cli/query.go | 3 +- x/records/client/cli/query_lsm_deposits.go | 93 + x/records/genesis.go | 7 +- x/records/genesis_test.go | 13 + x/records/keeper/callback_lsm_transfer.go | 55 + .../keeper/callback_lsm_transfer_test.go | 102 + ...ransfer.go => callback_native_transfer.go} | 0 ...st.go => callback_native_transfer_test.go} | 0 x/records/keeper/callbacks.go | 6 +- x/records/keeper/grpc_query_lsm_deposits.go | 62 + .../keeper/grpc_query_lsm_deposits_test.go | 117 + x/records/keeper/ibc.go | 46 + x/records/keeper/keeper.go | 44 +- x/records/keeper/keeper_test.go | 15 +- x/records/keeper/lsm_token_deposit.go | 80 + x/records/keeper/lsm_token_deposit_test.go | 167 ++ x/records/keeper/msg_server.go | 17 - x/records/keeper/transfer.go | 107 + x/records/keeper/transfer_test.go | 2 +- x/records/migrations/v2/types/genesis.pb.go | 2 +- x/records/module.go | 4 +- x/records/module_ibc.go | 59 +- x/records/types/callbacks.pb.go | 202 +- x/records/types/codec.go | 5 - x/records/types/genesis.go | 19 +- x/records/types/genesis.pb.go | 2657 ++--------------- x/records/types/genesis_test.go | 50 +- x/records/types/keys.go | 6 + x/records/types/params.go | 7 - x/records/types/params.pb.go | 263 ++ x/records/types/query.pb.go | 1170 +++++++- x/records/types/query.pb.gw.go | 206 ++ x/records/types/records.pb.go | 2462 +++++++++++++++ x/stakeibc/README.md | 6 +- x/stakeibc/client/cli/query.go | 7 +- x/stakeibc/client/cli/tx.go | 1 + x/stakeibc/client/cli/tx_lsm_liquid_stake.go | 48 + .../client/cli/tx_register_host_zone.go | 14 +- .../cli/tx_restore_interchain_account.go | 14 +- .../client/cli/tx_toggle_lsm_proposal.go | 112 + x/stakeibc/client/proposal_handler.go | 1 + x/stakeibc/handler.go | 24 +- x/stakeibc/ibc_middleware.go | 11 +- x/stakeibc/{ => keeper}/abci.go | 13 +- x/stakeibc/keeper/deposit_records.go | 19 +- x/stakeibc/keeper/deposit_records_test.go | 58 +- x/stakeibc/keeper/events.go | 140 + x/stakeibc/keeper/gov.go | 12 + .../keeper/grpc_query_address_unbondings.go | 5 +- x/stakeibc/keeper/hooks.go | 184 +- x/stakeibc/keeper/host_zone.go | 164 +- x/stakeibc/keeper/host_zone_test.go | 191 +- x/stakeibc/keeper/icacallbacks.go | 2 + x/stakeibc/keeper/icacallbacks_delegate.go | 17 +- .../keeper/icacallbacks_delegate_test.go | 94 +- x/stakeibc/keeper/icacallbacks_detokenize.go | 72 + .../keeper/icacallbacks_detokenize_test.go | 159 + x/stakeibc/keeper/icacallbacks_rebalance.go | 47 +- .../keeper/icacallbacks_rebalance_test.go | 116 +- x/stakeibc/keeper/icacallbacks_reinvest.go | 50 +- .../keeper/icacallbacks_reinvest_test.go | 56 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 78 +- .../keeper/icacallbacks_undelegate_test.go | 96 +- x/stakeibc/keeper/icqcallbacks.go | 2 +- .../keeper/icqcallbacks_delegator_shares.go | 229 +- .../icqcallbacks_delegator_shares_test.go | 328 +- x/stakeibc/keeper/icqcallbacks_fee_balance.go | 9 +- .../keeper/icqcallbacks_fee_balance_test.go | 48 +- .../icqcallbacks_validator_exchange_rate.go | 176 +- ...qcallbacks_validator_exchange_rate_test.go | 558 +++- .../keeper/icqcallbacks_withdrawal_balance.go | 21 +- .../icqcallbacks_withdrawal_balance_test.go | 63 +- x/stakeibc/keeper/invariants.go | 18 + x/stakeibc/keeper/keeper.go | 32 - x/stakeibc/keeper/keeper_test.go | 4 + x/stakeibc/keeper/lsm.go | 371 +++ x/stakeibc/keeper/lsm_test.go | 714 +++++ .../keeper/msg_server_add_validators.go | 5 + .../keeper/msg_server_add_validators_test.go | 119 +- .../msg_server_change_validator_weight.go | 15 +- .../msg_server_claim_undelegated_tokens.go | 31 +- ...sg_server_claim_undelegated_tokens_test.go | 38 +- x/stakeibc/keeper/msg_server_clear_balance.go | 12 +- .../keeper/msg_server_clear_balance_test.go | 15 +- .../msg_server_delete_validator_test.go | 20 +- x/stakeibc/keeper/msg_server_liquid_stake.go | 17 +- .../keeper/msg_server_liquid_stake_test.go | 10 +- .../keeper/msg_server_lsm_liquid_stake.go | 187 ++ .../msg_server_lsm_liquid_stake_test.go | 336 +++ .../keeper/msg_server_rebalance_validators.go | 136 +- .../msg_server_rebalance_validators_test.go | 194 -- x/stakeibc/keeper/msg_server_redeem_stake.go | 10 +- .../keeper/msg_server_redeem_stake_test.go | 20 +- .../keeper/msg_server_register_host_zone.go | 19 +- .../msg_server_register_host_zone_test.go | 28 +- .../msg_server_restore_interchain_account.go | 7 + ..._server_restore_interchain_account_test.go | 199 +- x/stakeibc/keeper/msg_server_submit_tx.go | 259 +- ...erver_update_validator_shares_exch_rate.go | 11 +- x/stakeibc/keeper/reward_allocation_test.go | 4 +- x/stakeibc/keeper/unbonding_records.go | 459 +-- ...ords_get_host_zone_unbondings_msgs_test.go | 970 ++++-- ...ng_records_initiate_all_unbondings_test.go | 134 +- ...ding_records_sweep_unbonded_tokens_test.go | 70 +- .../keeper/update_redemption_rates_test.go | 485 +-- .../update_validator_shares_exch_rate_test.go | 227 +- x/stakeibc/keeper/validator_selection.go | 323 +- x/stakeibc/keeper/validator_selection_test.go | 432 +++ x/stakeibc/migrations/v2/convert.go | 2 +- x/stakeibc/migrations/v2/convert_test.go | 2 +- .../migrations/v2/types/callbacks.pb.go | 2 +- .../migrations/v2/types/host_zone.pb.go | 2 +- .../migrations/v2/types/ica_account.pb.go | 2 +- .../migrations/v2/types/validator.pb.go | 2 +- .../migrations/v3/types/host_zone.pb.go | 1349 +++++++++ .../migrations/v3/types/ica_account.pb.go | 391 +++ x/stakeibc/migrations/v3/types/params.go | 6 + .../migrations/v3/types/validator.pb.go | 729 +++++ x/stakeibc/module.go | 3 +- x/stakeibc/proposal_handler.go | 24 - x/stakeibc/types/callbacks.pb.go | 937 +++++- x/stakeibc/types/codec.go | 3 + x/stakeibc/types/errors.go | 94 +- x/stakeibc/types/events.go | 42 +- x/stakeibc/types/gov.go | 56 + x/stakeibc/types/gov.pb.go | 388 ++- x/stakeibc/types/host_zone.go | 15 + x/stakeibc/types/host_zone.pb.go | 636 ++-- x/stakeibc/types/host_zone_test.go | 60 + x/stakeibc/types/ica_account.pb.go | 338 +-- x/stakeibc/types/lsm_msgs.go | 65 + x/stakeibc/types/lsm_tx.pb.go | 544 ++++ x/stakeibc/types/message_lsm_liquid_stake.go | 63 + .../types/message_lsm_liquid_stake_test.go | 85 + .../types/message_register_host_zone.go | 37 +- x/stakeibc/types/message_update_delegation.go | 6 +- x/stakeibc/types/params.go | 54 +- x/stakeibc/types/params.pb.go | 136 +- x/stakeibc/types/tx.pb.go | 731 ++++- x/stakeibc/types/validator.pb.go | 406 ++- 208 files changed, 20068 insertions(+), 7040 deletions(-) create mode 100644 dockernet/scripts/lsm/scratch.sh create mode 100644 dockernet/scripts/lsm/setup.sh create mode 100644 dockernet/scripts/lsm/stake.sh create mode 100644 proto/cosmos/staking/v1beta1/lsm_tx.proto mode change 100755 => 100644 proto/stride/records/callbacks.proto create mode 100644 proto/stride/records/params.proto create mode 100644 proto/stride/records/records.proto mode change 100755 => 100644 proto/stride/stakeibc/host_zone.proto mode change 100755 => 100644 proto/stride/stakeibc/validator.proto create mode 100644 utils/cache_ctx.go create mode 100644 utils/cache_ctx_test.go create mode 100644 utils/module_account_test.go create mode 100644 utils/utils_test.go delete mode 100644 x/interchainquery/keeper/new_query_test.go create mode 100644 x/interchainquery/types/query.go create mode 100644 x/records/client/cli/query_lsm_deposits.go create mode 100644 x/records/keeper/callback_lsm_transfer.go create mode 100644 x/records/keeper/callback_lsm_transfer_test.go rename x/records/keeper/{callback_transfer.go => callback_native_transfer.go} (100%) rename x/records/keeper/{callback_transfer_test.go => callback_native_transfer_test.go} (100%) create mode 100644 x/records/keeper/grpc_query_lsm_deposits.go create mode 100644 x/records/keeper/grpc_query_lsm_deposits_test.go create mode 100644 x/records/keeper/ibc.go create mode 100644 x/records/keeper/lsm_token_deposit.go create mode 100644 x/records/keeper/lsm_token_deposit_test.go delete mode 100644 x/records/keeper/msg_server.go create mode 100644 x/records/keeper/transfer.go create mode 100644 x/records/types/params.pb.go create mode 100644 x/records/types/records.pb.go create mode 100644 x/stakeibc/client/cli/tx_lsm_liquid_stake.go create mode 100644 x/stakeibc/client/cli/tx_toggle_lsm_proposal.go rename x/stakeibc/{ => keeper}/abci.go (77%) create mode 100644 x/stakeibc/keeper/events.go create mode 100644 x/stakeibc/keeper/icacallbacks_detokenize.go create mode 100644 x/stakeibc/keeper/icacallbacks_detokenize_test.go create mode 100644 x/stakeibc/keeper/lsm.go create mode 100644 x/stakeibc/keeper/lsm_test.go create mode 100644 x/stakeibc/keeper/msg_server_lsm_liquid_stake.go create mode 100644 x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go delete mode 100644 x/stakeibc/keeper/msg_server_rebalance_validators_test.go create mode 100644 x/stakeibc/keeper/validator_selection_test.go create mode 100644 x/stakeibc/migrations/v3/types/host_zone.pb.go create mode 100644 x/stakeibc/migrations/v3/types/ica_account.pb.go create mode 100644 x/stakeibc/migrations/v3/types/params.go create mode 100644 x/stakeibc/migrations/v3/types/validator.pb.go delete mode 100644 x/stakeibc/proposal_handler.go create mode 100644 x/stakeibc/types/host_zone.go create mode 100644 x/stakeibc/types/host_zone_test.go create mode 100644 x/stakeibc/types/lsm_msgs.go create mode 100644 x/stakeibc/types/lsm_tx.pb.go create mode 100644 x/stakeibc/types/message_lsm_liquid_stake.go create mode 100644 x/stakeibc/types/message_lsm_liquid_stake_test.go diff --git a/.gitmodules b/.gitmodules index 02b9873c98..38b71aed30 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,12 +2,15 @@ # Commit: v1.5.1 path = deps/hermes url = https://github.com/informalsystems/ibc-rs.git +# TODO [LSM]: Revert to cosmos relayer once they've merged +# the fix for the unbonding time query [submodule "deps/relayer"] - # Commit: e95dd80608536c31d37354bdd7f7ec46a2172009 + # Branch: sam/lsm-poc + # Commit: 0136134766142f133f263f3bba72d7077e7bc2c1 path = deps/relayer - url = https://github.com/cosmos/relayer.git + url = https://github.com/Stride-Labs/relayer.git [submodule "deps/gaia"] - # Commit: v9.1.0 + # Commit: v12.0.0-rc0 path = deps/gaia url = https://github.com/cosmos/gaia.git [submodule "deps/juno"] diff --git a/README.md b/README.md index 5295b6418f..175067eaf5 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ You can optionally pass build arguments to specify which binary to rebuild 3. `j` This will re-build the Juno binary 4. `o` This will re-build the Osmo binary 5. `t` This will re-build the Stargaze binary -6. `t` This will re-build the Evmos binary +6. `e` This will re-build the Evmos binary 7. `r` This will re-build the Go Relayer binary 8. `h` This will re-build the Hermes binary diff --git a/app/app.go b/app/app.go index 28a0ca1263..b94e661b71 100644 --- a/app/app.go +++ b/app/app.go @@ -170,6 +170,7 @@ func getGovProposalHandlers() []govclient.ProposalHandler { ibcclientclient.UpdateClientProposalHandler, ibcclientclient.UpgradeProposalHandler, stakeibcclient.AddValidatorsProposalHandler, + stakeibcclient.ToggleLSMProposalHandler, ratelimitclient.AddRateLimitProposalHandler, ratelimitclient.UpdateRateLimitProposalHandler, ratelimitclient.RemoveRateLimitProposalHandler, diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 324d8ae07d..70fbe992f9 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -6,10 +6,6 @@ import ( "time" abci "github.com/cometbft/cometbft/abci/types" - ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - ccvprovidertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types" - ccvtypes "github.com/cosmos/interchain-security/v3/x/ccv/types" - "github.com/cometbft/cometbft/crypto/ed25519" tmtypesproto "github.com/cometbft/cometbft/proto/tendermint/types" tmtypes "github.com/cometbft/cometbft/types" @@ -20,15 +16,19 @@ import ( upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/cosmos/gogoproto/proto" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - + tendermint "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" "github.com/cosmos/ibc-go/v7/testing/simapp" appProvider "github.com/cosmos/interchain-security/v3/app/provider" ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing" icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing" e2e "github.com/cosmos/interchain-security/v3/testutil/integration" + ccvprovidertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types" + ccvtypes "github.com/cosmos/interchain-security/v3/x/ccv/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" @@ -39,6 +39,7 @@ import ( var ( StrideChainID = "STRIDE" ProviderChainID = "PROVIDER" + FirstClientId = "07-tendermint-0" TestIcaVersion = string(icatypes.ModuleCdc.MustMarshalJSON(&icatypes.Metadata{ Version: icatypes.Version, @@ -225,7 +226,7 @@ func (s *AppTestHelper) CreateTransferChannel(hostChainID string) { // Creates an ICA channel through ibctesting // Also creates a transfer channel is if hasn't been done yet -func (s *AppTestHelper) CreateICAChannel(owner string) string { +func (s *AppTestHelper) CreateICAChannel(owner string) (channelID, portID string) { // If we have yet to create a client/connection (through creating a transfer channel), do that here _, transferChannelExists := s.App.IBCKeeper.ChannelKeeper.GetChannel(s.Ctx, ibctesting.TransferPort, ibctesting.FirstChannelID) if !transferChannelExists { @@ -249,17 +250,14 @@ func (s *AppTestHelper) CreateICAChannel(owner string) string { err = icaPath.EndpointA.ChanOpenAck() s.Require().NoError(err, "ChanOpenAck error") - // err = s.App.ICAControllerKeeper.RegisterInterchainAccount(s.Ctx, icaPath.EndpointA.ConnectionID, owner, TestIcaVersion) - // s.Require().NoError(err, "register interchain account error") - err = icaPath.EndpointB.ChanOpenConfirm() s.Require().NoError(err, "ChanOpenConfirm error") s.Ctx = s.StrideChain.GetContext() // Confirm the ICA channel was created properly - portID := icaPath.EndpointA.ChannelConfig.PortID - channelID := icaPath.EndpointA.ChannelID + portID = icaPath.EndpointA.ChannelConfig.PortID + channelID = icaPath.EndpointA.ChannelID _, found := s.App.IBCKeeper.ChannelKeeper.GetChannel(s.Ctx, portID, channelID) s.Require().True(found, "Channel not found after creation, PortID: %s, ChannelID: %s", portID, channelID) @@ -271,7 +269,7 @@ func (s *AppTestHelper) CreateICAChannel(owner string) string { // Finally set the active channel s.App.ICAControllerKeeper.SetActiveChannelID(s.Ctx, ibctesting.FirstConnectionID, portID, channelID) - return channelID + return channelID, portID } // Register's a new ICA account on the next channel available @@ -411,11 +409,34 @@ func (s *AppTestHelper) GetIBCDenomTrace(denom string) transfertypes.DenomTrace return transfertypes.ParseDenomTrace(prefixedDenom) } +// Creates and stores an IBC denom from a base denom on transfer channel-0 +// This is only required for tests that use the transfer keeper and require that the IBC +// denom is present in the store +// +// Returns the IBC hash +func (s *AppTestHelper) CreateAndStoreIBCDenom(baseDenom string) (ibcDenom string) { + denomTrace := s.GetIBCDenomTrace(baseDenom) + s.App.TransferKeeper.SetDenomTrace(s.Ctx, denomTrace) + return denomTrace.IBCDenom() +} + func (s *AppTestHelper) MarshalledICS20PacketData() sdk.AccAddress { data := ibctransfertypes.FungibleTokenPacketData{} return data.GetBytes() } +// Helper function to mock out a connection, client, and revision height +func (s *AppTestHelper) MockClientLatestHeight(height uint64) { + clientState := tendermint.ClientState{ + LatestHeight: clienttypes.NewHeight(1, height), + } + connection := connectiontypes.ConnectionEnd{ + ClientId: FirstClientId, + } + s.App.IBCKeeper.ConnectionKeeper.SetConnection(s.Ctx, ibctesting.FirstConnectionID, connection) + s.App.IBCKeeper.ClientKeeper.SetClientState(s.Ctx, FirstClientId, &clientState) +} + func (s *AppTestHelper) ConfirmUpgradeSucceededs(upgradeName string, upgradeHeight int64) { s.Ctx = s.Ctx.WithBlockHeight(upgradeHeight - 1) plan := upgradetypes.Plan{Name: upgradeName, Height: upgradeHeight} @@ -451,3 +472,82 @@ func GetAdminAddress() (address string, ok bool) { func SetupConfig() { app.SetupConfig() } + +// Searches for an event using the current context +func (s *AppTestHelper) getEventsFromEventType(eventType string) (events []sdk.Event) { + for _, event := range s.Ctx.EventManager().Events() { + if event.Type == eventType { + events = append(events, event) + } + } + return events +} + +// Searches for an event attribute, given an event +// Returns the value if found +func (s *AppTestHelper) getEventValuesFromAttribute(event sdk.Event, attributeKey string) (values []string) { + for _, attribute := range event.Attributes { + if string(attribute.Key) == attributeKey { + values = append(values, string(attribute.Value)) + } + } + return values +} + +// Searches for an event that has an attribute value matching the expected value +// Returns whether there was a match, as well as a list for all the values found +// for that attribute (for the error message) +func (s *AppTestHelper) checkEventAttributeValueMatch( + events []sdk.Event, + attributeKey, + expectedValue string, +) (allValues []string, found bool) { + for _, event := range events { + allValues = append(allValues, s.getEventValuesFromAttribute(event, attributeKey)...) + for _, actualValue := range allValues { + if actualValue == expectedValue { + found = true + } + } + } + return allValues, found +} + +// Checks if an event was emitted +func (s *AppTestHelper) CheckEventTypeEmitted(eventType string) []sdk.Event { + events := s.getEventsFromEventType(eventType) + eventEmitted := len(events) > 0 + s.Require().True(eventEmitted, "%s event should have been emitted", eventType) + return events +} + +// Checks that an event was not emitted +func (s *AppTestHelper) CheckEventTypeNotEmitted(eventType string) { + events := s.getEventsFromEventType(eventType) + eventNotEmitted := len(events) == 0 + s.Require().True(eventNotEmitted, "%s event should not have been emitted", eventType) +} + +// Checks that an event was emitted and that the value matches expectations +func (s *AppTestHelper) CheckEventValueEmitted(eventType, attributeKey, expectedValue string) { + events := s.CheckEventTypeEmitted(eventType) + + // Check all events and attributes for a match + allValues, valueFound := s.checkEventAttributeValueMatch(events, attributeKey, expectedValue) + s.Require().True(valueFound, "attribute %s with value %s should have been found in event %s. Values emitted for attribute: %+v", + attributeKey, expectedValue, eventType, allValues) +} + +// Checks that there was no event emitted that matches the event type, attribute, and value +func (s *AppTestHelper) CheckEventValueNotEmitted(eventType, attributeKey, expectedValue string) { + // Check that either the event or attribute were not emitted + events := s.getEventsFromEventType(eventType) + if len(events) == 0 { + return + } + + // Check all events and attributes to make sure there's no match + allValues, valueFound := s.checkEventAttributeValueMatch(events, attributeKey, expectedValue) + s.Require().False(valueFound, "attribute %s with value %s should not have been found in event %s. Values emitted for attribute: %+v", + attributeKey, expectedValue, eventType, allValues) +} diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index b7ec0045ba..4caea2ef98 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -137,8 +137,6 @@ var WhitelistedParams = map[ccvgov.ParamChangeKey]struct{}{ {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyDefaultMinRedemptionRateThreshold)}: {}, {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyDefaultMaxRedemptionRateThreshold)}: {}, {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyIBCTransferTimeoutNanos)}: {}, - {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeySafetyNumValidators)}: {}, - {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeySafetyMaxSlashPercent)}: {}, {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyMaxRedemptionRates)}: {}, {MsgType: stakeibctypes.ModuleName, Key: string(stakeibctypes.KeyMinRedemptionRates)}: {}, //ica diff --git a/app/upgrades.go b/app/upgrades.go index 6e1a5a417d..c9fff66b44 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -92,6 +92,7 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { app.ICAHostKeeper, app.MintKeeper, app.StakeibcKeeper, + app.keys[stakeibctypes.StoreKey], ), ) diff --git a/app/upgrades/v10/upgrades.go b/app/upgrades/v10/upgrades.go index fdcce3b6ec..8fc6769627 100644 --- a/app/upgrades/v10/upgrades.go +++ b/app/upgrades/v10/upgrades.go @@ -246,7 +246,7 @@ func MigrateCallbackData(ctx sdk.Context, k icacallbackskeeper.Keeper) error { newCallbackArgsBz, err = reserializeCallback(oldCallbackArgsBz, &stakeibctypes.ReinvestCallback{}) case stakeibckeeper.ICACallbackID_Undelegate: newCallbackArgsBz, err = reserializeCallback(oldCallbackArgsBz, &stakeibctypes.UndelegateCallback{}) - case recordskeeper.TRANSFER: + case recordskeeper.IBCCallbacksID_NativeTransfer: newCallbackArgsBz, err = reserializeCallback(oldCallbackArgsBz, &recordstypes.TransferCallback{}) } if err != nil { @@ -343,21 +343,21 @@ func EnableRateLimits( return errorsmod.Wrapf(err, "unable to add rate limit for %s", denom) } - if hostZone.DelegationAccount == nil || hostZone.DelegationAccount.Address == "" { + if hostZone.DelegationIcaAddress == "" { return stakeibctypes.ErrICAAccountNotFound } - if hostZone.FeeAccount == nil || hostZone.FeeAccount.Address == "" { + if hostZone.FeeIcaAddress == "" { return stakeibctypes.ErrICAAccountNotFound } ratelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ - Sender: hostZone.Address, - Receiver: hostZone.DelegationAccount.Address, + Sender: hostZone.DepositAddress, + Receiver: hostZone.DelegationIcaAddress, }) rewardCollectorAddress := accountKeeper.GetModuleAccount(ctx, stakeibctypes.RewardCollectorName).GetAddress() ratelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ - Sender: hostZone.FeeAccount.Address, + Sender: hostZone.FeeIcaAddress, Receiver: rewardCollectorAddress.String(), }) } diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index fccb49d10b..da1630ae64 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -181,7 +181,7 @@ func (s *UpgradeTestSuite) TestMigrateCallbackData() { s.createCallbackData(stakeibckeeper.ICACallbackID_Redemption, &initialRedemptionCallbackArgs), s.createCallbackData(stakeibckeeper.ICACallbackID_Reinvest, &initialReinvestCallbackArgs), s.createCallbackData(stakeibckeeper.ICACallbackID_Undelegate, &initialUndelegateCallbackArgs), - s.createCallbackData(recordskeeper.TRANSFER, &initialTransferCallbackArgs), + s.createCallbackData(recordskeeper.IBCCallbacksID_NativeTransfer, &initialTransferCallbackArgs), } for i := range initialCallbackData { initialCallbackData[i].CallbackKey = fmt.Sprintf("key-%d", i) @@ -238,7 +238,7 @@ func (s *UpgradeTestSuite) TestMigrateCallbackData() { s.mustUnmarshalCallback(finalCallback.CallbackArgs, &finalCallbackArgs) s.Require().Equal(initialUndelegateCallbackArgs, finalCallbackArgs, "undelegate callback") - case recordskeeper.TRANSFER: + case recordskeeper.IBCCallbacksID_NativeTransfer: var finalCallbackArgs recordstypes.TransferCallback s.mustUnmarshalCallback(finalCallback.CallbackArgs, &finalCallbackArgs) s.Require().Equal(initialTransferCallbackArgs, finalCallbackArgs, "transfer callback") @@ -349,16 +349,12 @@ func (s *UpgradeTestSuite) createRewardCollectorModuleAccount() string { func (s *UpgradeTestSuite) setupRateLimitedHostZone(chainId, stDenom, channelId string) { // Store host zone in stakeibc s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibctypes.HostZone{ - ChainId: chainId, - HostDenom: strings.ReplaceAll(stDenom, "st", ""), - TransferChannelId: channelId, - Address: chainId + ".STAKEIBC", - FeeAccount: &stakeibctypes.ICAAccount{ - Address: chainId + ".FEE", - }, - DelegationAccount: &stakeibctypes.ICAAccount{ - Address: chainId + ".DELEGATION", - }, + ChainId: chainId, + HostDenom: strings.ReplaceAll(stDenom, "st", ""), + TransferChannelId: channelId, + DepositAddress: chainId + ".STAKEIBC", + FeeIcaAddress: chainId + ".FEE", + DelegationIcaAddress: chainId + ".DELEGATION", }) // Create the transfer channel diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 383008eb8e..7e6ed84054 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -29,6 +29,7 @@ var ( UpgradeName = "v5" // This query used an old query ID format and got stuck after the format was updated + // #nosec G101 StaleQueryId = "60b8e09dc7a65938cd6e6e5728b8aa0ca3726ffbe5511946a4f08ced316174ab" ) diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index 78e3f4eb40..dcd5489e34 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -9,6 +9,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/suite" "github.com/Stride-Labs/stride/v13/app" @@ -24,6 +25,7 @@ import ( recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -42,6 +44,8 @@ func TestKeeperTestSuite(t *testing.T) { } func (s *UpgradeTestSuite) TestUpgrade() { + // Note: The max slash safety threshold was deprecated in v14 and was later removed from this unit test + // Setup stores for migrated modules codec := app.MakeEncodingConfig().Marshaler checkClaimStoreAfterMigration := s.SetupOldClaimStore(codec) @@ -51,7 +55,7 @@ func (s *UpgradeTestSuite) TestUpgrade() { // Setup store for stale query and max slash percent param checkStaleQueryRemoval := s.SetupRemoveStaleQuery() - checkMaxSlashParamAdded := s.SetupAddMaxSlashPercentParam() + // checkMaxSlashParamAdded := s.SetupAddMaxSlashPercentParam() // Run upgrade s.ConfirmUpgradeSucceededs("v5", dummyUpgradeHeight) @@ -64,7 +68,7 @@ func (s *UpgradeTestSuite) TestUpgrade() { // Confirm query was removed and max slash percent parameter was added checkStaleQueryRemoval() - checkMaxSlashParamAdded() + // checkMaxSlashParamAdded() } // Sets up the old claim store and returns a callback function that can be used to verify @@ -369,15 +373,17 @@ func (s *UpgradeTestSuite) SetupOldStakeibcStore(codec codec.Codec) func() { // Callback to check stakeibc store after migration return func() { - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, hostZoneId) - s.Require().True(found, "host zone found") + hostZoneBz := hostzoneStore.Get([]byte(hostZone.ChainId)) + var hostZone newstakeibctypes.HostZone + codec.MustUnmarshal(hostZoneBz, &hostZone) + s.Require().Equal(hostZone.ChainId, hostZoneId, "host zone chain id") s.Require().Equal(hostZone.DelegationAccount.Address, delegationAddress, "delegation address") s.Require().Equal(hostZone.RedemptionAccount.Address, redemptionAddress, "redemption address") - s.Require().Equal(hostZone.DelegationAccount.Target, stakeibctypes.ICAAccountType_DELEGATION, "delegation target") - s.Require().Equal(hostZone.RedemptionAccount.Target, stakeibctypes.ICAAccountType_REDEMPTION, "redemption target") + s.Require().Equal(hostZone.DelegationAccount.Target, newstakeibctypes.ICAAccountType_DELEGATION, "delegation target") + s.Require().Equal(hostZone.RedemptionAccount.Target, newstakeibctypes.ICAAccountType_REDEMPTION, "redemption target") s.Require().Nil(hostZone.FeeAccount, "fee account") s.Require().Nil(hostZone.WithdrawalAccount, "withdrawal account") @@ -410,17 +416,19 @@ func (s *UpgradeTestSuite) SetupRemoveStaleQuery() func() { // the the parameter was successfully updated back to it's default value after the upgrade func (s *UpgradeTestSuite) SetupAddMaxSlashPercentParam() func() { // Set the max slash percent to 0 - stakeibcParamStore := s.App.GetSubspace(stakeibctypes.ModuleName) - stakeibcParamStore.Set(s.Ctx, stakeibctypes.KeySafetyMaxSlashPercent, uint64(0)) + paramSet := paramtypes.NewParamSetPair(newstakeibctypes.KeySafetyMaxSlashPercent, uint64(0), func(value interface{}) error { return nil }) + keyTable := paramtypes.NewKeyTable(paramSet) + stakeibcParamStore := s.App.GetSubspace(stakeibctypes.ModuleName).WithKeyTable(keyTable) + stakeibcParamStore.Set(s.Ctx, newstakeibctypes.KeySafetyMaxSlashPercent, uint64(0)) // Confirm it was updated - maxSlashPercent := s.App.StakeibcKeeper.GetParam(s.Ctx, stakeibctypes.KeySafetyMaxSlashPercent) + maxSlashPercent := s.App.StakeibcKeeper.GetParam(s.Ctx, newstakeibctypes.KeySafetyMaxSlashPercent) s.Require().Equal(uint64(0), maxSlashPercent, "max slash percent should be 0") // Callback to check that the parameter was added to the store return func() { // Confirm MaxSlashPercent was added with the default value - maxSlashPercent := s.App.StakeibcKeeper.GetParam(s.Ctx, stakeibctypes.KeySafetyMaxSlashPercent) - s.Require().Equal(stakeibctypes.DefaultSafetyMaxSlashPercent, maxSlashPercent, "max slash percent should be default") + maxSlashPercent := s.App.StakeibcKeeper.GetParam(s.Ctx, newstakeibctypes.KeySafetyMaxSlashPercent) + s.Require().Equal(newstakeibctypes.DefaultSafetyMaxSlashPercent, maxSlashPercent, "max slash percent should be default") } } diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index 42bac6f914..06ad914b5b 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -6,6 +6,8 @@ import ( errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/store/prefix" + storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" @@ -27,6 +29,7 @@ import ( mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -41,6 +44,7 @@ func CreateUpgradeHandler( icahostKeeper icahostkeeper.Keeper, mintKeeper mintkeeper.Keeper, stakeibcKeeper stakeibckeeper.Keeper, + stakeibcStoreKey storetypes.StoreKey, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { ctx.Logger().Info("Starting upgrade v7...") @@ -55,10 +59,10 @@ func CreateUpgradeHandler( AddICAHostAllowMessages(ctx, icahostKeeper) // Add min/max redemption rate threshold and a `Halted`` boolean to each host zone - AddRedemptionRateSafetyChecks(ctx, stakeibcKeeper) + AddRedemptionRateSafetyChecks(cdc, stakeibcStoreKey, ctx, stakeibcKeeper) // Change the juno unbonding frequency to 5 - if err := ModifyJunoUnbondingFrequency(ctx, stakeibcKeeper); err != nil { + if err := ModifyJunoUnbondingFrequency(cdc, stakeibcStoreKey, ctx, stakeibcKeeper); err != nil { return vm, errorsmod.Wrapf(err, "unable to modify juno unbonding frequency") } @@ -77,6 +81,45 @@ func CreateUpgradeHandler( } } +// GetHostZone but with fixed historical stakeibc types +func GetHostZone( + cdc codec.Codec, + stakeibcStoreKey storetypes.StoreKey, + ctx sdk.Context, + chainId string, +) (val newstakeibctypes.HostZone, found bool) { + store := prefix.NewStore(ctx.KVStore(stakeibcStoreKey), stakeibctypes.KeyPrefix(stakeibctypes.HostZoneKey)) + b := store.Get([]byte(chainId)) + if b == nil { + return val, false + } + cdc.MustUnmarshal(b, &val) + return val, true +} + +// SetHostZone but with fixed historical stakeibc types +func SetHostZone(cdc codec.Codec, stakeibcStoreKey storetypes.StoreKey, ctx sdk.Context, hostZone newstakeibctypes.HostZone) { + store := prefix.NewStore(ctx.KVStore(stakeibcStoreKey), stakeibctypes.KeyPrefix(stakeibctypes.HostZoneKey)) + b := cdc.MustMarshal(&hostZone) + store.Set([]byte(hostZone.ChainId), b) +} + +// GetAllHostZone but with fixed historical stakeibc types +func GetAllHostZone(cdc codec.Codec, stakeibcStoreKey storetypes.StoreKey, ctx sdk.Context) (list []newstakeibctypes.HostZone) { + store := prefix.NewStore(ctx.KVStore(stakeibcStoreKey), stakeibctypes.KeyPrefix(stakeibctypes.HostZoneKey)) + iterator := sdk.KVStorePrefixIterator(store, []byte{}) + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var val newstakeibctypes.HostZone + cdc.MustUnmarshal(iterator.Value(), &val) + list = append(list, val) + } + + return +} + // Add a new hourly epoch that will be used by the rate limit module func AddHourEpoch(ctx sdk.Context, k epochskeeper.Keeper) { ctx.Logger().Info("Adding hour epoch") @@ -131,7 +174,7 @@ func AddICAHostAllowMessages(ctx sdk.Context, k icahostkeeper.Keeper) { // Add the min/max redemption rate to each host zone as safety bounds, using the default for each // Also set the Halted boolean to false -func AddRedemptionRateSafetyChecks(ctx sdk.Context, k stakeibckeeper.Keeper) { +func AddRedemptionRateSafetyChecks(cdc codec.Codec, storeKey storetypes.StoreKey, ctx sdk.Context, k stakeibckeeper.Keeper) { ctx.Logger().Info("Setting min/max redemption rate safety bounds on each host zone") // Set new stakeibc params @@ -147,29 +190,29 @@ func AddRedemptionRateSafetyChecks(ctx sdk.Context, k stakeibckeeper.Keeper) { defaultMinRedemptionRate := sdk.NewDecWithPrec(int64(params.DefaultMinRedemptionRateThreshold), 2) defaultMaxRedemptionRate := sdk.NewDecWithPrec(int64(params.DefaultMaxRedemptionRateThreshold), 2) - for _, hostZone := range k.GetAllHostZone(ctx) { + for _, hostZone := range GetAllHostZone(cdc, storeKey, ctx) { hostZone.MinRedemptionRate = defaultMinRedemptionRate hostZone.MaxRedemptionRate = defaultMaxRedemptionRate hostZone.Halted = false - k.SetHostZone(ctx, hostZone) + SetHostZone(cdc, storeKey, ctx, hostZone) } } // Update the unbonding frequency of juno to 5 to align with the 28 day unbonding period -func ModifyJunoUnbondingFrequency(ctx sdk.Context, k stakeibckeeper.Keeper) error { +func ModifyJunoUnbondingFrequency(cdc codec.Codec, storeKey storetypes.StoreKey, ctx sdk.Context, k stakeibckeeper.Keeper) error { ctx.Logger().Info("Updating juno unbonding frequency") junoChainId := "juno-1" unbondingFrequency := uint64(5) - junoHostZone, found := k.GetHostZone(ctx, junoChainId) + junoHostZone, found := GetHostZone(cdc, storeKey, ctx, junoChainId) if !found { return stakeibctypes.ErrHostZoneNotFound } junoHostZone.UnbondingFrequency = unbondingFrequency - k.SetHostZone(ctx, junoHostZone) + SetHostZone(cdc, storeKey, ctx, junoHostZone) return nil } diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index 332a770e35..f35f4a2cf6 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -13,6 +13,7 @@ import ( "github.com/Stride-Labs/stride/v13/app/apptesting" v7 "github.com/Stride-Labs/stride/v13/app/upgrades/v7" epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" // This isn't the exact type host zone schema as the one that's will be in the store @@ -177,14 +178,27 @@ func (s *UpgradeTestSuite) SetupHostZones() { hostzoneStore.Set([]byte(juno.ChainId), junoBz) } +// Helper function to read in the host zone with the new stakeibc types +func (s *UpgradeTestSuite) GetNewHostZone(chainId string) newstakeibctypes.HostZone { + codec := app.MakeEncodingConfig().Marshaler + stakeibcStore := s.Ctx.KVStore(s.App.GetKey(stakeibctypes.StoreKey)) + hostzoneStore := prefix.NewStore(stakeibcStore, stakeibctypes.KeyPrefix(stakeibctypes.HostZoneKey)) + + bz := hostzoneStore.Get([]byte(chainId)) + s.Require().NotNil(bz, "host zone should have been found") + + var hostZone newstakeibctypes.HostZone + codec.MustUnmarshal(bz, &hostZone) + + return hostZone +} + // Check that the juno unbondinng frequency was changed after the upgrade func (s *UpgradeTestSuite) CheckUnbondingFrequencyAfterUpgrade() { - osmosis, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, OsmosisChainId) - s.Require().True(found, "osmosis host zone should have been found") + osmosis := s.GetNewHostZone(OsmosisChainId) s.Require().Equal(OsmosisUnbondingFrequency, osmosis.UnbondingFrequency) - juno, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, JunoChainId) - s.Require().True(found, "juno host zone should have been found") + juno := s.GetNewHostZone(JunoChainId) s.Require().Equal(ExpectedJunoUnbondingFrequency, juno.UnbondingFrequency) } @@ -262,7 +276,9 @@ func (s *UpgradeTestSuite) TestAddICAHostAllowMessages() { func (s *UpgradeTestSuite) TestModifyJunoUnbondingFrequency() { s.SetupHostZones() - err := v7.ModifyJunoUnbondingFrequency(s.Ctx, s.App.StakeibcKeeper) + codec := app.MakeEncodingConfig().Marshaler + stakeibcStoreKey := s.App.GetKey(stakeibctypes.StoreKey) + err := v7.ModifyJunoUnbondingFrequency(codec, stakeibcStoreKey, s.Ctx, s.App.StakeibcKeeper) s.Require().NoError(err) s.CheckUnbondingFrequencyAfterUpgrade() @@ -270,7 +286,11 @@ func (s *UpgradeTestSuite) TestModifyJunoUnbondingFrequency() { func (s *UpgradeTestSuite) TestAddRedemptionRateSafetyChecks() { s.SetupHostZones() - v7.AddRedemptionRateSafetyChecks(s.Ctx, s.App.StakeibcKeeper) + + codec := app.MakeEncodingConfig().Marshaler + stakeibcStoreKey := s.App.GetKey(stakeibctypes.StoreKey) + v7.AddRedemptionRateSafetyChecks(codec, stakeibcStoreKey, s.Ctx, s.App.StakeibcKeeper) + s.CheckRedemptionRateSafetyParamsAfterUpgrade() } diff --git a/deps/gaia b/deps/gaia index 321d15a574..3b9a281247 160000 --- a/deps/gaia +++ b/deps/gaia @@ -1 +1 @@ -Subproject commit 321d15a574def0f338ceacc5c060159ebba95edc +Subproject commit 3b9a281247ab9bd87483ad7fc1dcea9f26c4b8f6 diff --git a/deps/relayer b/deps/relayer index e95dd80608..0136134766 160000 --- a/deps/relayer +++ b/deps/relayer @@ -1 +1 @@ -Subproject commit e95dd80608536c31d37354bdd7f7ec46a2172009 +Subproject commit 0136134766142f133f263f3bba72d7077e7bc2c1 diff --git a/dockernet/config.sh b/dockernet/config.sh index dc127d8da9..7319159964 100755 --- a/dockernet/config.sh +++ b/dockernet/config.sh @@ -108,11 +108,17 @@ MAX_DEPOSIT_PERIOD="30s" VOTING_PERIOD="30s" INITIAL_ANNUAL_PROVISIONS="10000000000000.000000000000000000" +# LSM Params +LSM_VALIDATOR_BOND_FACTOR="250" +LSM_GLOBAL_LIQUID_STAKING_CAP="0.25" +LSM_VALIDATOR_LIQUID_STAKING_CAP="0.50" + # Tokens are denominated in the macro-unit # (e.g. 5000000STRD implies 5000000000000ustrd) VAL_TOKENS=5000000 STAKE_TOKENS=5000 ADMIN_TOKENS=1000 +USER_TOKENS=100 # CHAIN MNEMONICS VAL_MNEMONIC_1="close soup mirror crew erode defy knock trigger gather eyebrow tent farm gym gloom base lemon sleep weekend rich forget diagram hurt prize fly" @@ -128,6 +134,8 @@ VAL_MNEMONICS=( "$VAL_MNEMONIC_5" ) REV_MNEMONIC="tonight bonus finish chaos orchard plastic view nurse salad regret pause awake link bacon process core talent whale million hope luggage sauce card weasel" +USER_MNEMONIC="brief play describe burden half aim soccer carbon hope wait output play vacuum joke energy crucial output mimic cruise brother document rail anger leaf" +USER_ACCT=user # STRIDE STRIDE_CHAIN_ID=STRIDE @@ -239,8 +247,8 @@ RELAYER_GAIA_ICS_EXEC="$DOCKER_COMPOSE run --rm relayer-gaia-ics" RELAYER_JUNO_EXEC="$DOCKER_COMPOSE run --rm relayer-juno" RELAYER_OSMO_EXEC="$DOCKER_COMPOSE run --rm relayer-osmo" RELAYER_STARS_EXEC="$DOCKER_COMPOSE run --rm relayer-stars" -RELAYER_EVMOS_EXEC="$DOCKER_COMPOSE run --rm relayer-evmos" RELAYER_HOST_EXEC="$DOCKER_COMPOSE run --rm relayer-host" +RELAYER_EVMOS_EXEC="$DOCKER_COMPOSE run --rm relayer-evmos" RELAYER_STRIDE_ACCT=rly1 RELAYER_GAIA_ACCT=rly2 @@ -325,19 +333,44 @@ WAIT_FOR_STRING() { ( tail -f -n0 $1 & ) | grep -q "$2" } +# Sleep until the balance has changed +# Optionally provide a minimum amount it must change by (to ignore interest) WAIT_FOR_BALANCE_CHANGE() { chain=$1 address=$2 denom=$3 + minimum_change=${4:-1} # defaults to 1 max_blocks=30 main_cmd=$(GET_VAR_VALUE ${chain}_MAIN_CMD) - initial_balance=$($main_cmd q bank balances $address --denom $denom | grep amount) + initial_balance=$($main_cmd q bank balances $address --denom $denom | grep amount | NUMBERS_ONLY) + for i in $(seq $max_blocks); do + new_balance=$($main_cmd q bank balances $address --denom $denom | grep amount | NUMBERS_ONLY) + balance_change=$(echo "$new_balance - $initial_balance" | bc) + + if [[ $(echo "$balance_change >= $minimum_change" | bc -l) == "1" ]]; then + break + fi + + WAIT_FOR_BLOCK $STRIDE_LOGS 1 + done +} + +# Sleep until the total delegation amount has changed +# Optionally provide a minimum amount it must change by (to ignore interest) +WAIT_FOR_DELEGATION_CHANGE() { + chain_id=$1 + minimum_change=${2:-1} # defaults to 1 + + max_blocks=30 + + initial_delegation=$($STRIDE_MAIN_CMD q stakeibc show-host-zone $chain_id | grep "total_delegations" | NUMBERS_ONLY) for i in $(seq $max_blocks); do - new_balance=$($main_cmd q bank balances $address --denom $denom | grep amount) + new_delegation=$($STRIDE_MAIN_CMD q stakeibc show-host-zone $chain_id | grep "total_delegations" | NUMBERS_ONLY) + delegation_change=$(echo "$new_delegation - $initial_delegation" | bc) - if [[ "$new_balance" != "$initial_balance" ]]; then + if [[ $(echo "$delegation_change >= $minimum_change" | bc -l) == "1" ]]; then break fi @@ -350,16 +383,35 @@ GET_VAL_ADDR() { val_index=$2 MAIN_CMD=$(GET_VAR_VALUE ${chain}_MAIN_CMD) - $MAIN_CMD q staking validators | grep ${chain}_${val_index} -A 5 | grep operator | awk '{print $2}' + $MAIN_CMD q staking validators | grep ${chain}_${val_index} -A 6 | grep operator | awk '{print $2}' } GET_ICA_ADDR() { chain_id="$1" ica_type="$2" #delegation, fee, redemption, or withdrawal - $STRIDE_MAIN_CMD q stakeibc show-host-zone $chain_id | grep ${ica_type}_account -A 1 | grep address | awk '{print $2}' + $STRIDE_MAIN_CMD q stakeibc show-host-zone $chain_id | grep ${ica_type}_ica_address | awk '{print $2}' +} + +GET_IBC_DENOM() { + transfer_channel_id="$1" + base_denom="$2" + + echo "ibc/$($STRIDE_MAIN_CMD q ibc-transfer denom-hash transfer/${transfer_channel_id}/${base_denom} | awk '{print $2}')" } TRIM_TX() { grep -E "code:|txhash:" | sed 's/^/ /' } + +NUMBERS_ONLY() { + tr -cd '[:digit:]' +} + +GETBAL() { + head -n 1 | grep -o -E '[0-9]+' || "0" +} + +GETSTAKE() { + tail -n 2 | head -n 1 | grep -o -E '[0-9]+' | head -n 1 +} diff --git a/dockernet/config/ica_controller.json b/dockernet/config/ica_controller.json index 28e0783972..490910a09f 100644 --- a/dockernet/config/ica_controller.json +++ b/dockernet/config/ica_controller.json @@ -20,8 +20,8 @@ "/cosmos.staking.v1beta1.MsgDelegate", "/cosmos.staking.v1beta1.MsgUndelegate", "/cosmos.staking.v1beta1.MsgBeginRedelegate", - "/cosmos.staking.v1beta1.MsgRedeemTokensforShares", "/cosmos.staking.v1beta1.MsgTokenizeShares", + "/cosmos.staking.v1beta1.MsgRedeemTokensforShares", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", "/ibc.applications.transfer.v1.MsgTransfer" diff --git a/dockernet/config/ica_host.json b/dockernet/config/ica_host.json index e061651d19..c3407db959 100644 --- a/dockernet/config/ica_host.json +++ b/dockernet/config/ica_host.json @@ -12,7 +12,7 @@ "/cosmos.staking.v1beta1.MsgDelegate", "/cosmos.staking.v1beta1.MsgUndelegate", "/cosmos.staking.v1beta1.MsgBeginRedelegate", - "/cosmos.staking.v1beta1.MsgRedeemTokensforShares", + "/cosmos.staking.v1beta1.MsgRedeemTokensForShares", "/cosmos.staking.v1beta1.MsgTokenizeShares", "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", diff --git a/dockernet/dockerfiles/Dockerfile.gaia b/dockernet/dockerfiles/Dockerfile.gaia index 509922a8f3..7b09562a30 100644 --- a/dockernet/dockerfiles/Dockerfile.gaia +++ b/dockernet/dockerfiles/Dockerfile.gaia @@ -1,17 +1,17 @@ -FROM golang:1.18-alpine3.15 AS builder +FROM golang:1.20-alpine3.16 AS builder WORKDIR /opt RUN apk add --update curl make git libc-dev bash gcc linux-headers eudev-dev python3 -ENV COMMIT_HASH=v9.1.0 +ENV COMMIT_HASH=v12.0.0-rc0 -RUN git clone https://github.com/cosmos/gaia gaia-install \ - && cd gaia-install \ +RUN git clone https://github.com/cosmos/gaia \ + && cd gaia \ && git checkout $COMMIT_HASH \ && CGO_ENABLED=0 make install -FROM alpine:3.15 +FROM alpine:3.16 COPY --from=builder /go/bin/gaiad /usr/local/bin/ RUN apk add bash vim \ && addgroup -g 1000 gaia \ diff --git a/dockernet/dockerfiles/Dockerfile.relayer b/dockernet/dockerfiles/Dockerfile.relayer index c4f63c010a..c410458a37 100644 --- a/dockernet/dockerfiles/Dockerfile.relayer +++ b/dockernet/dockerfiles/Dockerfile.relayer @@ -1,17 +1,19 @@ # syntax = docker/dockerfile:1 -FROM golang:1.19-alpine3.15 AS builder +FROM golang:1.20-alpine3.16 AS builder WORKDIR /src/ -ENV COMMIT_HASH=e95dd80608536c31d37354bdd7f7ec46a2172009 +# TODO [LSM]: Revert +# ENV COMMIT_HASH=v2.4.1 +ENV COMMIT_HASH=0136134766142f133f263f3bba72d7077e7bc2c1 RUN apk add --update git make gcc linux-headers libc-dev eudev-dev -RUN git clone https://github.com/cosmos/relayer.git \ +RUN git clone https://github.com/Stride-Labs/relayer.git \ && cd relayer \ && git checkout $COMMIT_HASH \ && make install -FROM alpine:3.15 +FROM alpine:3.16 COPY --from=builder /go/bin/rly /usr/local/bin/ RUN apk add bash vim \ && addgroup -g 1000 relayer \ diff --git a/dockernet/scripts/lsm/scratch.sh b/dockernet/scripts/lsm/scratch.sh new file mode 100644 index 0000000000..fa7fb07a2f --- /dev/null +++ b/dockernet/scripts/lsm/scratch.sh @@ -0,0 +1,69 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +liquid_staked_address="cosmos1x92tnm6pfkl3gsfy0rfaez5myq5zh99aek2jmd" +validator_address="cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p" +delegation_account="cosmos1wdplq6qjh2xruc7qqagma9ya665q6qhcwju3ng" +stride_address="stride1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrt52vv7" + +###### Transactions +# echo "Delegate" +# $GAIA_MAIN_CMD tx staking delegate $validator_address 5000000uatom --from staker -y | TRIM_TX && echo "" +# sleep 5 + +# echo "Tokenize to liquid staker:" +# $GAIA_MAIN_CMD tx staking tokenize-share $validator_address 3000000uatom $liquid_staked_address --from staker -y --gas auto | TRIM_TX && echo "" +# sleep 5 + +# echo "Tokenize to delegation account:" +# $GAIA_MAIN_CMD tx staking tokenize-share $validator_address 1000000uatom $delegation_account --from staker -y --gas auto | TRIM_TX && echo "" +# sleep 5 + +# echo "Withdraw Rewards from record:" +# $GAIA_MAIN_CMD tx distribution withdraw-tokenize-share-rewards 2 --from staker -y | TRIM_TX +# sleep 5 + +# echo "Redeem Tokens from User:" +# $GAIA_MAIN_CMD tx staking redeem-tokens 1000000cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p/1 --from staker -y --gas auto | TRIM_TX +# sleep 5 + +# echo "Redeem Tokens from Delegation Account:" +# $GAIA_MAIN_CMD tx staking redeem-tokens 1000000cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p/1 --from grev1 -y --gas auto | TRIM_TX +# sleep 5 + +# echo "Send Token:" +# $GAIA_MAIN_CMD tx bank send $liquid_staked_address $delegation_account 1000000cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p/1 --from staker -y | TRIM_TX +# sleep 5 + +# echo "IBC Transfer:" +# $GAIA_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $stride_address 3000000cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p/1 --from staker -y | TRIM_TX +# sleep 5 + +# echo "Transfer Rewards:" +# $GAIA_MAIN_CMD tx staking transfer-tokenize-share-record 1 $delegation_account --from staker -y --gas auto | TRIM_TX +# sleep 5 + + +######## Queries +# echo "Validator Shares:" +# $GAIA_MAIN_CMD q staking validators && echo "" + +# echo "Delegations:" +# $GAIA_MAIN_CMD q staking delegations $liquid_staked_address && echo "" + +# echo "Rewards:" +# $GAIA_MAIN_CMD q distribution rewards $liquid_staked_address $validator_address && echo "" + +# echo "User Bank balance:" +# $GAIA_MAIN_CMD q bank balances $liquid_staked_address && echo "" + +# echo "User Tokenized shares:" +# $GAIA_MAIN_CMD q distribution tokenize-share-record-rewards $liquid_staked_address && echo "" + +# echo "Delegation Account Bank balance:" +# $GAIA_MAIN_CMD q bank balances $delegation_account && echo "" + +# echo "Delegation Account Tokenized shares:" +# $GAIA_MAIN_CMD q distribution tokenize-share-record-rewards $delegation_account && echo "" \ No newline at end of file diff --git a/dockernet/scripts/lsm/setup.sh b/dockernet/scripts/lsm/setup.sh new file mode 100644 index 0000000000..99f4ac9a2c --- /dev/null +++ b/dockernet/scripts/lsm/setup.sh @@ -0,0 +1,71 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +## Create Accounts +echo ">>> Registering Accounts:" +mnemonic="match blade slide sort seven width degree february garden hospital valve odor scan exhaust bird chuckle age ozone timber claim office hurdle dance roast" +echo $mnemonic | $STRIDE_MAIN_CMD keys add staker --recover --keyring-backend test +sleep 5 +echo $mnemonic | $GAIA_MAIN_CMD keys add staker --recover --keyring-backend test +sleep 5 + +# Staker Address on Stride: stride1x92tnm6pfkl3gsfy0rfaez5myq5zh99a6a2w0p +# Staker Address on GAIA: cosmos1x92tnm6pfkl3gsfy0rfaez5myq5zh99aek2jmd +# Validator Address: cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p +staker_gaia_address=$($GAIA_MAIN_CMD keys show staker -a) +staker_stride_address=$($STRIDE_MAIN_CMD keys show staker -a) +validator_address_1=$(GET_VAL_ADDR GAIA 1) +validator_address_2=$(GET_VAL_ADDR GAIA 2) +validator_address_3=$(GET_VAL_ADDR GAIA 3) +validator_address_4=$(GET_VAL_ADDR GAIA 4) + +## Fund accounts +echo ">>> Fund staking accounts:" +$GAIA_MAIN_CMD tx bank send $($GAIA_MAIN_CMD keys show gval1 -a) $staker_gaia_address 2000000000000uatom --from rly8 -y | TRIM_TX +sleep 5 && echo "" +$STRIDE_MAIN_CMD tx bank send $($STRIDE_MAIN_CMD keys show val1 -a) $staker_stride_address 10000000ustrd --from val1 -y | TRIM_TX +sleep 5 && echo "" + +echo "Bank balance:" +$GAIA_MAIN_CMD q bank balances $staker_gaia_address + +## Delegate, Tokenize and Transfer +echo ">>> Delegate to Val 1:" +$GAIA_MAIN_CMD tx staking delegate $validator_address_1 10000000uatom --from staker -y | TRIM_TX && echo "" +sleep 5 +echo ">>> Delegate to Val 2:" +$GAIA_MAIN_CMD tx staking delegate $validator_address_2 10000000uatom --from staker -y | TRIM_TX && echo "" +sleep 5 +echo ">>> Delegate to Val 3:" +$GAIA_MAIN_CMD tx staking delegate $validator_address_3 10000000uatom --from staker -y | TRIM_TX && echo "" +sleep 5 +echo ">>> Delegate to Val 4:" +$GAIA_MAIN_CMD tx staking delegate $validator_address_4 10000000uatom --from staker -y | TRIM_TX && echo "" +sleep 5 + +echo "Delegations:" +$GAIA_MAIN_CMD q staking delegations $staker_gaia_address && echo "" +sleep 2 + +echo ">>> Tokenize to liquid staker:" +$GAIA_MAIN_CMD tx staking tokenize-share $validator_address_2 10000000uatom $staker_gaia_address --from staker -y \ + --gas auto --gas-adjustment 1.3 | TRIM_TX && echo "" +sleep 5 + +echo "Balance on GAIA:" +$GAIA_MAIN_CMD q bank balances $staker_gaia_address && echo "" +sleep 2 + +echo "Tokenized shares:" +$GAIA_MAIN_CMD q distribution tokenize-share-record-rewards $staker_gaia_address && echo "" +sleep 2 + +echo ">>> Transfer to Stride:" +$GAIA_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $staker_stride_address 10000000${validator_address_2}/1 --from staker -y | TRIM_TX && echo "" +sleep 10 + +echo "Balance on STRIDE:" +$STRIDE_MAIN_CMD q bank balances $staker_stride_address && echo "" +sleep 2 diff --git a/dockernet/scripts/lsm/stake.sh b/dockernet/scripts/lsm/stake.sh new file mode 100644 index 0000000000..5b8efebc0d --- /dev/null +++ b/dockernet/scripts/lsm/stake.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +LSM_TOKEN_DENOM=ibc/19825915130745DAC8CBC51A6DBE4FC7644463CF4254CD46D49B15AABEE73FB8 +$STRIDE_MAIN_CMD tx stakeibc lsm-liquid-stake 1000000 $LSM_TOKEN_DENOM --from staker --gas auto -y \ No newline at end of file diff --git a/dockernet/src/create_logs.sh b/dockernet/src/create_logs.sh index 3e1a8a98b4..66cd367a24 100755 --- a/dockernet/src/create_logs.sh +++ b/dockernet/src/create_logs.sh @@ -35,6 +35,8 @@ while true; do $STRIDE_MAIN_CMD q records list-epoch-unbonding-record >> $TEMP_LOGS_DIR/$STATE_LOG printf '\n%s\n' "LIST-USER-REDEMPTION-RECORDS" >>$TEMP_LOGS_DIR/$STATE_LOG $STRIDE_MAIN_CMD q records list-user-redemption-record >> $TEMP_LOGS_DIR/$STATE_LOG + printf '\n%s\n' "LIST-LSM-TOKEN-DEPOSIT-RECORDS" >>$TEMP_LOGS_DIR/$STATE_LOG + $STRIDE_MAIN_CMD q records lsm-deposits >> $TEMP_LOGS_DIR/$STATE_LOG printf '\n%s\n' "BALANCES STRIDE" >>$TEMP_LOGS_DIR/$BALANCES_LOG $STRIDE_MAIN_CMD q bank balances $(STRIDE_ADDRESS) >>$TEMP_LOGS_DIR/$BALANCES_LOG diff --git a/dockernet/src/init_chain.sh b/dockernet/src/init_chain.sh index c7e4f3a45a..0e4c6a51e8 100644 --- a/dockernet/src/init_chain.sh +++ b/dockernet/src/init_chain.sh @@ -26,15 +26,25 @@ MICRO_DENOM_UNITS="${!MICRO_DENOM_UNITS_VAR_NAME:-000000}" VAL_TOKENS=${VAL_TOKENS}${MICRO_DENOM_UNITS} STAKE_TOKENS=${STAKE_TOKENS}${MICRO_DENOM_UNITS} ADMIN_TOKENS=${ADMIN_TOKENS}${MICRO_DENOM_UNITS} +USER_TOKENS=${USER_TOKENS}${MICRO_DENOM_UNITS} -set_stride_genesis() { +set_stride_epochs() { genesis_config=$1 - # update params + # set epochs jq '(.app_state.epochs.epochs[] | select(.identifier=="day") ).duration = $epochLen' --arg epochLen $STRIDE_DAY_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '(.app_state.epochs.epochs[] | select(.identifier=="hour") ).duration = $epochLen' --arg epochLen $STRIDE_HOUR_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '(.app_state.epochs.epochs[] | select(.identifier=="stride_epoch") ).duration = $epochLen' --arg epochLen $STRIDE_EPOCH_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '(.app_state.epochs.epochs[] | select(.identifier=="mint") ).duration = $epochLen' --arg epochLen $STRIDE_MINT_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config +} + +set_stride_genesis() { + genesis_config=$1 + + # set epochs + set_stride_epochs $genesis_config + + # set params jq '.app_state.staking.params.unbonding_time = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.max_deposit_period = $newVal' --arg newVal "$MAX_DEPOSIT_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.gov.params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config @@ -72,6 +82,13 @@ set_host_genesis() { sed -i -E 's|"signed_blocks_window": "100"|"signed_blocks_window": "10"|g' $genesis_config sed -i -E 's|"downtime_jail_duration": "600s"|"downtime_jail_duration": "10s"|g' $genesis_config sed -i -E 's|"slash_fraction_downtime": "0.010000000000000000"|"slash_fraction_downtime": "0.050000000000000000"|g' $genesis_config + + # LSM params + if [[ "$CHAIN" == "GAIA" ]]; then + jq '.app_state.staking.params.validator_bond_factor = $newVal' --arg newVal "$LSM_VALIDATOR_BOND_FACTOR" $genesis_config > json.tmp && mv json.tmp $genesis_config + jq '.app_state.staking.params.validator_liquid_staking_cap = $newVal' --arg newVal "$LSM_VALIDATOR_LIQUID_STAKING_CAP" $genesis_config > json.tmp && mv json.tmp $genesis_config + jq '.app_state.staking.params.global_liquid_staking_cap = $newVal' --arg newVal "$LSM_GLOBAL_LIQUID_STAKING_CAP" $genesis_config > json.tmp && mv json.tmp $genesis_config + fi } set_consumer_genesis() { @@ -143,7 +160,7 @@ for (( i=1; i <= $NUM_NODES; i++ )); do # Copy over the provider stride validator keys to the provider (in the event # that we are testing ICS) - if [[ $CHAIN == "GAIA" ]]; then + if [[ $CHAIN == "GAIA" && -d $DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}${i} ]]; then stride_config=$DOCKERNET_HOME/state/${STRIDE_NODE_PREFIX}${i}/config host_config=$DOCKERNET_HOME/state/${NODE_PREFIX}${i}/config cp ${stride_config}/priv_validator_key.json ${host_config}/priv_validator_key.json @@ -186,6 +203,7 @@ if [ "$CHAIN" == "STRIDE" ]; then echo "$STRIDE_ADMIN_MNEMONIC" | $MAIN_CMD keys add $STRIDE_ADMIN_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 STRIDE_ADMIN_ADDRESS=$($MAIN_CMD keys show $STRIDE_ADMIN_ACCT --keyring-backend test -a) $MAIN_CMD add-genesis-account ${STRIDE_ADMIN_ADDRESS} ${ADMIN_TOKENS}${DENOM} + # add relayer accounts for i in "${!RELAYER_ACCTS[@]}"; do RELAYER_ACCT="${RELAYER_ACCTS[i]}" @@ -217,6 +235,12 @@ else fi fi +# add a staker account for integration tests +# the account should live on both stride and the host chain +echo "$USER_MNEMONIC" | $MAIN_CMD keys add $USER_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 +USER_ADDRESS=$($MAIN_CMD keys show $USER_ACCT --keyring-backend test -a) +$MAIN_CMD add-genesis-account ${USER_ADDRESS} ${USER_TOKENS}${DENOM} + # Only collect the validator genesis txs for host chains if [[ "$CHAIN" != "STRIDE" && "$CHAIN" != "HOST" ]]; then # now we process gentx txs on the main node @@ -238,6 +262,12 @@ if [[ "$CHAIN" == "STRIDE" || "$CHAIN" == "HOST" ]]; then set_consumer_genesis $MAIN_GENESIS fi +# the HOST chain must set the epochs to fulfill the invariant that the stride epoch +# is 1/4th the day epoch +if [[ "$CHAIN" == "HOST" ]]; then + set_stride_epochs $MAIN_GENESIS +fi + # for all peer nodes.... for (( i=2; i <= $NUM_NODES; i++ )); do node_name="${NODE_PREFIX}${i}" diff --git a/dockernet/src/register_host.sh b/dockernet/src/register_host.sh index c24735efa2..6ca8dd8ce4 100644 --- a/dockernet/src/register_host.sh +++ b/dockernet/src/register_host.sh @@ -18,13 +18,17 @@ HOST_DENOM=$(GET_VAR_VALUE ${CHAIN}_DENOM) ADDRESS_PREFIX=$(GET_VAR_VALUE ${CHAIN}_ADDRESS_PREFIX) NUM_VALS=$(GET_VAR_VALUE ${CHAIN}_NUM_NODES) +LSM_ENABLED="false" +if [[ "$CHAIN" == "GAIA" ]]; then + LSM_ENABLED="true" +fi + echo "$CHAIN - Registering host zone..." $STRIDE_MAIN_CMD tx stakeibc register-host-zone \ - $CONNECTION $HOST_DENOM $ADDRESS_PREFIX $IBC_DENOM $CHANNEL 1 \ + $CONNECTION $HOST_DENOM $ADDRESS_PREFIX $IBC_DENOM $CHANNEL 1 $LSM_ENABLED \ --gas 1000000 --from $STRIDE_ADMIN_ACCT --home $DOCKERNET_HOME/state/stride1 -y | TRIM_TX sleep 10 -echo "$CHAIN - Registering validators..." # Build array of validators of the form: # {"name": "...", "address": "...", "weight": "..."} validators=() @@ -38,6 +42,14 @@ for (( i=1; i <= $NUM_VALS; i++ )); do validator="${validator}," fi validators+=("$validator") + + # For LSM-enabled hosts, submit validator-bond txs to allow liquid staking delegations + if [[ "$CHAIN" == "GAIA" ]]; then + if [[ "$i" == "1" ]]; then + echo "$CHAIN - Submitting validator bonds..." + fi + $GAIA_MAIN_CMD tx staking validator-bond $delegate_val --from ${VAL_PREFIX}${i} -y | TRIM_TX + fi done # Write validators list to json file of the form: @@ -46,14 +58,15 @@ validator_json=$DOCKERNET_HOME/state/${NODE_PREFIX}1/validators.json echo "{\"validators\": [${validators[*]}]}" > $validator_json # Add host zone validators to Stride's host zone struct -$STRIDE_MAIN_CMD tx stakeibc add-validators $CHAIN_ID $validator_json \ +echo "$CHAIN - Registering validators..." +$STRIDE_MAIN_CMD tx stakeibc add-validators $CHAIN_ID $validator_json --gas 1000000 \ --from $STRIDE_ADMIN_ACCT -y | TRIM_TX sleep 5 # Confirm the ICA accounts have been registered before continuing timeout=100 while true; do - if ! $STRIDE_MAIN_CMD q stakeibc show-host-zone $CHAIN_ID | grep Account | grep -q null; then + if ! $STRIDE_MAIN_CMD q stakeibc show-host-zone $CHAIN_ID | grep -q 'address: ""'; then break else if [[ "$timeout" == "0" ]]; then diff --git a/dockernet/tests/integration_tests.bats b/dockernet/tests/integration_tests.bats index 349f1ecbc6..11d295a278 100644 --- a/dockernet/tests/integration_tests.bats +++ b/dockernet/tests/integration_tests.bats @@ -30,7 +30,7 @@ setup_file() { HOST_VAL="$(GET_VAR_VALUE ${CHAIN_NAME}_VAL_PREFIX)1" STRIDE_VAL=${STRIDE_VAL_PREFIX}1 - STRIDE_TRANFER_CHANNEL="channel-${TRANSFER_CHANNEL_NUMBER}" + STRIDE_TRANSFER_CHANNEL="channel-${TRANSFER_CHANNEL_NUMBER}" HOST_TRANSFER_CHANNEL="channel-0" TRANSFER_AMOUNT=50000000 @@ -38,12 +38,6 @@ setup_file() { REDEEM_AMOUNT=10000 PACKET_FORWARD_STAKE_AMOUNT=300000 - GETBAL() { - head -n 1 | grep -o -E '[0-9]+' || "0" - } - GETSTAKE() { - tail -n 2 | head -n 1 | grep -o -E '[0-9]+' | head -n 1 - } # HELPER FUNCTIONS DECADD () { echo "scale=2; $1+$2" | bc @@ -80,11 +74,11 @@ setup_file() { assert_line " host_denom: $HOST_DENOM" assert_line " chain_id: $HOST_CHAIN_ID" assert_line " transfer_channel_id: channel-$TRANSFER_CHANNEL_NUMBER" - refute_line ' delegation_account: null' - refute_line ' fee_account: null' - refute_line ' redemption_account: null' - refute_line ' withdrawal_account: null' - assert_line ' unbonding_frequency: "1"' + refute_line ' delegation_ica_address: ""' + refute_line ' fee_ica_address: ""' + refute_line ' redemption_ica_address: "' + refute_line ' withdrawal_ica_address: ""' + assert_line ' unbonding_period: "1"' } ############################################################################################## @@ -100,7 +94,7 @@ setup_file() { hval_token_balance_start=$($HOST_MAIN_CMD q bank balances $HOST_VAL_ADDRESS --denom $HOST_DENOM | GETBAL) # do IBC transfer - $STRIDE_MAIN_CMD tx ibc-transfer transfer transfer $STRIDE_TRANFER_CHANNEL $HOST_VAL_ADDRESS ${TRANSFER_AMOUNT}${STRIDE_DENOM} --from $STRIDE_VAL -y + $STRIDE_MAIN_CMD tx ibc-transfer transfer transfer $STRIDE_TRANSFER_CHANNEL $HOST_VAL_ADDRESS ${TRANSFER_AMOUNT}${STRIDE_DENOM} --from $STRIDE_VAL -y $HOST_MAIN_CMD tx ibc-transfer transfer transfer $HOST_TRANSFER_CHANNEL $(STRIDE_ADDRESS) ${TRANSFER_AMOUNT}${HOST_DENOM} --from $HOST_VAL -y WAIT_FOR_BLOCK $STRIDE_LOGS 8 @@ -158,6 +152,101 @@ setup_file() { assert_equal "$diff" $STAKE_AMOUNT } +# check that tokens on the host are staked +@test "[INTEGRATION-BASIC-$CHAIN_NAME] tokens on $CHAIN_NAME were staked" { + # wait for another epoch to pass so that tokens are staked + WAIT_FOR_STRING $STRIDE_LOGS "\[DELEGATION\] success on $HOST_CHAIN_ID" + WAIT_FOR_BLOCK $STRIDE_LOGS 4 + + # check staked tokens + NEW_STAKE=$($HOST_MAIN_CMD q staking delegation $(GET_ICA_ADDR $HOST_CHAIN_ID delegation) $(GET_VAL_ADDR $CHAIN_NAME 1) | GETSTAKE) + stake_diff=$(($NEW_STAKE > 0)) + assert_equal "$stake_diff" "1" +} + +@test "[INTEGRATION-BASIC-$CHAIN_NAME] LSM liquid stake" { + if [[ "$CHAIN_NAME" != "GAIA" ]]; then + skip "Skipping LSM liquid stake for chains without LSM support" + fi + + staker_address_on_host=$($HOST_MAIN_CMD keys show $USER_ACCT -a) + staker_address_on_stride=$($STRIDE_MAIN_CMD keys show $USER_ACCT -a) + validator_address=$(GET_VAL_ADDR $CHAIN_NAME 1) + + # delegate on the host chain + $HOST_MAIN_CMD tx staking delegate $validator_address ${TRANSFER_AMOUNT}${HOST_DENOM} --from $USER_ACCT -y + WAIT_FOR_BLOCK $STRIDE_LOGS 2 + + # tokenize shares + $HOST_MAIN_CMD tx staking tokenize-share $validator_address ${TRANSFER_AMOUNT}${HOST_DENOM} $staker_address_on_host --from $USER_ACCT -y --gas 1000000 + WAIT_FOR_BLOCK $STRIDE_LOGS 2 + + # get the record id from the tokenized share record + record_id=$($HOST_MAIN_CMD q staking last-tokenize-share-record-id | awk '{print $2}' | tr -d '"') + + # transfer LSM tokens to stride + lsm_token_denom=${validator_address}/${record_id} + $HOST_MAIN_CMD tx ibc-transfer transfer transfer $HOST_TRANSFER_CHANNEL \ + $staker_address_on_stride ${TRANSFER_AMOUNT}${lsm_token_denom} --from $USER_ACCT -y + + WAIT_FOR_BLOCK $STRIDE_LOGS 8 + + lsm_token_ibc_denom=$(GET_IBC_DENOM $STRIDE_TRANSFER_CHANNEL ${validator_address}/${record_id}) + + # get initial balances + sttoken_balance_start=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom st$HOST_DENOM | GETBAL) + lsm_token_balance_start=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom $lsm_token_ibc_denom | GETBAL) + + # LSM-liquid stake + $STRIDE_MAIN_CMD tx stakeibc lsm-liquid-stake $STAKE_AMOUNT $lsm_token_ibc_denom --from $USER_ACCT -y + WAIT_FOR_BALANCE_CHANGE STRIDE $staker_address_on_stride st$HOST_DENOM + + # make sure stToken went up + sttoken_balance_end=$($STRIDE_MAIN_CMD q bank balances $(STRIDE_ADDRESS) --denom st$HOST_DENOM | GETBAL) + sttoken_balance_diff=$(($sttoken_balance_end-$sttoken_balance_start)) + assert_equal "$sttoken_balance_diff" "$STAKE_AMOUNT" + + # make sure LSM IBC Token balance went down + lsm_token_balance_end=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom $lsm_token_ibc_denom | GETBAL) + lsm_token_balance_diff=$(($lsm_token_balance_start - $lsm_token_balance_end)) + assert_equal "$lsm_token_balance_diff" $STAKE_AMOUNT + + # wait for LSM token to get transferred and converted to native stake + delegation_start=$($STRIDE_MAIN_CMD q stakeibc show-host-zone $HOST_CHAIN_ID | grep "total_delegations" | NUMBERS_ONLY) + WAIT_FOR_DELEGATION_CHANGE $HOST_CHAIN_ID $STAKE_AMOUNT + + # confirm delegation increased + delegation_end=$($STRIDE_MAIN_CMD q stakeibc show-host-zone $HOST_CHAIN_ID | grep "total_delegations" | NUMBERS_ONLY) + delegation_diff=$(($delegation_end - $delegation_start)) + assert_equal $(echo "$delegation_diff >= $STAKE_AMOUNT" | bc -l) "1" +} + +@test "[INTEGRATION-BASIC-$CHAIN_NAME] LSM liquid stake with slash query" { + if [[ "$CHAIN_NAME" != "GAIA" ]]; then + skip "Skipping LSM liquid stake for chains without LSM support" + fi + + # get staker and validator addresses + validator_address=$(GET_VAL_ADDR $CHAIN_NAME 1) + staker_address_on_stride=$($STRIDE_MAIN_CMD keys show $USER_ACCT -a) + + # get the LSM token denom + record_id=$($HOST_MAIN_CMD q staking last-tokenize-share-record-id | awk '{print $2}' | tr -d '"') + lsm_token_ibc_denom=$(GET_IBC_DENOM $STRIDE_TRANSFER_CHANNEL ${validator_address}/${record_id}) + + # get the stToken balance before the liquid stake + sttoken_balance_start=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom st$HOST_DENOM | GETBAL) + + # LSM-liquid stake again, this time the slash query should be invoked + $STRIDE_MAIN_CMD tx stakeibc lsm-liquid-stake $STAKE_AMOUNT $lsm_token_ibc_denom --from $USER_ACCT -y + WAIT_FOR_BALANCE_CHANGE STRIDE $staker_address_on_stride st$HOST_DENOM + + # make sure stToken went up (after the slash query query callback) + sttoken_balance_end=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom st$HOST_DENOM | GETBAL) + sttoken_balance_diff=$(($sttoken_balance_end-$sttoken_balance_start)) + assert_equal "$sttoken_balance_diff" "$STAKE_AMOUNT" +} + @test "[INTEGRATION-BASIC-$CHAIN_NAME] packet forwarding automatically liquid stakes" { memo='{ "autopilot": { "receiver": "'"$(STRIDE_ADDRESS)"'", "stakeibc": { "action": "LiquidStake" } } }' @@ -186,18 +275,6 @@ setup_file() { assert_equal "$sttoken_balance_diff" "$PACKET_FORWARD_STAKE_AMOUNT" } -# check that tokens on the host are staked -@test "[INTEGRATION-BASIC-$CHAIN_NAME] tokens on $CHAIN_NAME were staked" { - # wait for another epoch to pass so that tokens are staked - WAIT_FOR_STRING $STRIDE_LOGS "\[DELEGATION\] success on $HOST_CHAIN_ID" - WAIT_FOR_BLOCK $STRIDE_LOGS 4 - - # check staked tokens - NEW_STAKE=$($HOST_MAIN_CMD q staking delegation $(GET_ICA_ADDR $HOST_CHAIN_ID delegation) $(GET_VAL_ADDR $CHAIN_NAME 1) | GETSTAKE) - stake_diff=$(($NEW_STAKE > 0)) - assert_equal "$stake_diff" "1" -} - # check that redemptions and claims work @test "[INTEGRATION-BASIC-$CHAIN_NAME] redemption works" { # get initial balance of redemption ICA diff --git a/proto/cosmos/staking/v1beta1/lsm_tx.proto b/proto/cosmos/staking/v1beta1/lsm_tx.proto new file mode 100644 index 0000000000..d6db580e26 --- /dev/null +++ b/proto/cosmos/staking/v1beta1/lsm_tx.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; +package cosmos.staking.v1beta1; + +import "gogoproto/gogo.proto"; + +import "cosmos/base/v1beta1/coin.proto"; + +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; + +// Given SDK version conflicts between gaia with LSM and Stride, +// we can't import the RedeemTokensForShares type +// So instead we redefine it here +// Once LSM has been upstreamed to SDK 50, we can switch back to an import + +// MsgRedeemTokensForShares redeems a tokenized share back into a native +// delegation +message MsgRedeemTokensForShares { + option (gogoproto.equal) = false; + option (gogoproto.goproto_getters) = false; + + string delegator_address = 1 + [ (gogoproto.moretags) = "yaml:\"delegator_address\"" ]; + cosmos.base.v1beta1.Coin amount = 2 [ (gogoproto.nullable) = false ]; +} + +// MsgRedeemTokensForSharesResponse defines the Msg/MsgRedeemTokensForShares +// response type. +message MsgRedeemTokensForSharesResponse { + cosmos.base.v1beta1.Coin amount = 1 [ (gogoproto.nullable) = false ]; +} diff --git a/proto/stride/interchainquery/v1/genesis.proto b/proto/stride/interchainquery/v1/genesis.proto index c5fe2a70b7..cabc3ff306 100644 --- a/proto/stride/interchainquery/v1/genesis.proto +++ b/proto/stride/interchainquery/v1/genesis.proto @@ -2,19 +2,32 @@ syntax = "proto3"; package stride.interchainquery.v1; import "gogoproto/gogo.proto"; +import "google/protobuf/duration.proto"; import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; +enum TimeoutPolicy { + REJECT_QUERY_RESPONSE = 0; + RETRY_QUERY_REQUEST = 1; + EXECUTE_QUERY_CALLBACK = 2; +} + message Query { string id = 1; string connection_id = 2; string chain_id = 3; string query_type = 4; - bytes request = 5; + bytes request_data = 5; + string callback_module = 13; string callback_id = 8; - uint64 ttl = 9; + bytes callback_data = 12; + TimeoutPolicy timeout_policy = 15; + google.protobuf.Duration timeout_duration = 14 + [ (gogoproto.nullable) = false, (gogoproto.stdduration) = true ]; + uint64 timeout_timestamp = 9; bool request_sent = 11; + uint64 submission_height = 16; } message DataPoint { diff --git a/proto/stride/records/callbacks.proto b/proto/stride/records/callbacks.proto old mode 100755 new mode 100644 index f8ad67c552..f13d2e9cef --- a/proto/stride/records/callbacks.proto +++ b/proto/stride/records/callbacks.proto @@ -1,6 +1,10 @@ syntax = "proto3"; package stride.records; + +import "stride/records/records.proto"; + option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; -// ---------------------- Transfer Callback ---------------------- // message TransferCallback { uint64 deposit_record_id = 1; } + +message TransferLSMTokenCallback { LSMTokenDeposit deposit = 1; } diff --git a/proto/stride/records/genesis.proto b/proto/stride/records/genesis.proto index de38309f3f..6e17afa2db 100644 --- a/proto/stride/records/genesis.proto +++ b/proto/stride/records/genesis.proto @@ -1,110 +1,13 @@ syntax = "proto3"; package stride.records; +import "stride/records/params.proto"; +import "stride/records/records.proto"; import "gogoproto/gogo.proto"; -// this line is used by starport scaffolding # genesis/proto/import - option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; -message UserRedemptionRecord { - string id = 1; // {chain_id}.{epoch}.{sender} - string sender = 2; - string receiver = 3; - string amount = 4 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - string denom = 5; - string host_zone_id = 6; - uint64 epoch_number = 7; - bool claim_is_pending = 8; -} - -// Msg defines the Msg service. -service Msg { - // this line is used by starport scaffolding # proto/tx/rpc -} - -// this line is used by starport scaffolding # proto/tx/message - -// Params defines the parameters for the module. -message Params { option (gogoproto.goproto_stringer) = false; } - -message RecordsPacketData { - oneof packet { - NoData no_data = 1; - // this line is used by starport scaffolding # ibc/packet/proto/field - } -} - -message NoData {} - -// this line is used by starport scaffolding # ibc/packet/proto/message - -message DepositRecord { - uint64 id = 1; - string amount = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - string denom = 3; - string host_zone_id = 4; - enum Status { - // in transfer queue to be sent to the delegation ICA - TRANSFER_QUEUE = 0; - // transfer in progress (IBC packet sent, ack not received) - TRANSFER_IN_PROGRESS = 2; - // in staking queue on delegation ICA - DELEGATION_QUEUE = 1; - // staking in progress (ICA packet sent, ack not received) - DELEGATION_IN_PROGRESS = 3; - } - enum Source { - STRIDE = 0; - WITHDRAWAL_ICA = 1; - } - Status status = 6; - uint64 deposit_epoch_number = 7; - Source source = 8; - - reserved 5; -} - -message HostZoneUnbonding { - enum Status { - // tokens bonded on delegate account - UNBONDING_QUEUE = 0; - UNBONDING_IN_PROGRESS = 3; - // unbonding completed on delegate account - EXIT_TRANSFER_QUEUE = 1; - EXIT_TRANSFER_IN_PROGRESS = 4; - // transfer success - CLAIMABLE = 2; - } - string st_token_amount = 1 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - string native_token_amount = 2 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - string denom = 3; - string host_zone_id = 4; - uint64 unbonding_time = 5; - Status status = 6; - repeated string user_redemption_records = 7; -} - -message EpochUnbondingRecord { - uint64 epoch_number = 1; - repeated HostZoneUnbonding host_zone_unbondings = 3; - reserved 2; -} - -// GenesisState defines the recordπs module's genesis state. -// next id: 9 +// GenesisState defines the records module's genesis state. message GenesisState { Params params = 1 [ (gogoproto.nullable) = false ]; string port_id = 2; @@ -116,5 +19,6 @@ message GenesisState { repeated DepositRecord deposit_record_list = 7 [ (gogoproto.nullable) = false ]; uint64 deposit_record_count = 8; - // this line is used by starport scaffolding # genesis/proto/state + repeated LSMTokenDeposit lsm_token_deposit_list = 9 + [ (gogoproto.nullable) = false ]; } diff --git a/proto/stride/records/params.proto b/proto/stride/records/params.proto new file mode 100644 index 0000000000..d870958081 --- /dev/null +++ b/proto/stride/records/params.proto @@ -0,0 +1,7 @@ +syntax = "proto3"; +package stride.records; + +option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; + +// Params defines the parameters for the module. +message Params {} \ No newline at end of file diff --git a/proto/stride/records/query.proto b/proto/stride/records/query.proto index 91815f266d..2e7c0a2ea5 100644 --- a/proto/stride/records/query.proto +++ b/proto/stride/records/query.proto @@ -1,11 +1,12 @@ syntax = "proto3"; package stride.records; +import "stride/records/records.proto"; +import "stride/records/params.proto"; + import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -import "stride/records/genesis.proto"; -// this line is used by starport scaffolding # 1 option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; @@ -51,8 +52,6 @@ service Query { "/Stride-Labs/stride/records/epoch_unbonding_record"; } - // this line is used by starport scaffolding # 2 - // Queries a DepositRecord by id. rpc DepositRecord(QueryGetDepositRecordRequest) returns (QueryGetDepositRecordResponse) { @@ -72,6 +71,19 @@ service Query { option (google.api.http).get = "/Stride-Labs/stride/records/" "deposit_record_by_host_zone/{host_zone_id}"; } + + // Queries the existing LSMTokenDeposits for one specific deposit + rpc LSMDeposit(QueryLSMDepositRequest) returns (QueryLSMDepositResponse) { + option (google.api.http).get = + "/Stride-Labs/stride/stakeibc/lsm_deposit/{chain_id}/{denom}"; + } + + // Queries the existing LSMTokenDeposits for all which match filters + // intended use: + // ...stakeibc/lsm_deposits?chain_id=X&validator_address=Y&status=Z + rpc LSMDeposits(QueryLSMDepositsRequest) returns (QueryLSMDepositsResponse) { + option (google.api.http).get = "/Stride-Labs/stride/stakeibc/lsm_deposits"; + } } // QueryParamsRequest is request type for the Query/Params RPC method. @@ -151,4 +163,23 @@ message QueryAllEpochUnbondingRecordResponse { repeated EpochUnbondingRecord epoch_unbonding_record = 1 [ (gogoproto.nullable) = false ]; cosmos.base.query.v1beta1.PageResponse pagination = 2; -} \ No newline at end of file +} + +message QueryLSMDepositRequest { + string chain_id = 1; + string denom = 2; +} + +message QueryLSMDepositResponse { + LSMTokenDeposit deposit = 1 [ (gogoproto.nullable) = false ]; +} + +message QueryLSMDepositsRequest { + string chain_id = 1; + string validator_address = 2; + string status = 3; +} + +message QueryLSMDepositsResponse { + repeated LSMTokenDeposit deposits = 1 [ (gogoproto.nullable) = false ]; +} diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto new file mode 100644 index 0000000000..89965f17da --- /dev/null +++ b/proto/stride/records/records.proto @@ -0,0 +1,107 @@ +syntax = "proto3"; +package stride.records; + +import "cosmos/base/v1beta1/coin.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; + +message UserRedemptionRecord { + string id = 1; // {chain_id}.{epoch}.{sender} + string sender = 2; + string receiver = 3; + string amount = 4 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string denom = 5; + string host_zone_id = 6; + uint64 epoch_number = 7; + bool claim_is_pending = 8; +} + +message DepositRecord { + uint64 id = 1; + string amount = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string denom = 3; + string host_zone_id = 4; + enum Status { + // in transfer queue to be sent to the delegation ICA + TRANSFER_QUEUE = 0; + // transfer in progress (IBC packet sent, ack not received) + TRANSFER_IN_PROGRESS = 2; + // in staking queue on delegation ICA + DELEGATION_QUEUE = 1; + // staking in progress (ICA packet sent, ack not received) + DELEGATION_IN_PROGRESS = 3; + } + enum Source { + STRIDE = 0; + WITHDRAWAL_ICA = 1; + } + Status status = 6; + uint64 deposit_epoch_number = 7; + Source source = 8; + + reserved 5; +} + +message HostZoneUnbonding { + enum Status { + // tokens bonded on delegate account + UNBONDING_QUEUE = 0; + UNBONDING_IN_PROGRESS = 3; + // unbonding completed on delegate account + EXIT_TRANSFER_QUEUE = 1; + EXIT_TRANSFER_IN_PROGRESS = 4; + // transfer success + CLAIMABLE = 2; + } + string st_token_amount = 1 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string native_token_amount = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string denom = 3; + string host_zone_id = 4; + uint64 unbonding_time = 5; + Status status = 6; + repeated string user_redemption_records = 7; +} + +message EpochUnbondingRecord { + uint64 epoch_number = 1; + repeated HostZoneUnbonding host_zone_unbondings = 3; + reserved 2; +} + +message LSMTokenDeposit { + enum Status { + DEPOSIT_PENDING = 0; + TRANSFER_QUEUE = 1; + TRANSFER_IN_PROGRESS = 2; + TRANSFER_FAILED = 3; + DETOKENIZATION_QUEUE = 4; + DETOKENIZATION_IN_PROGRESS = 5; + DETOKENIZATION_FAILED = 6; + } + + string deposit_id = 1; + string chain_id = 2; + string denom = 3; + string ibc_denom = 4; + string staker_address = 5; + string validator_address = 6; + string amount = 7 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + cosmos.base.v1beta1.Coin st_token = 8 [ (gogoproto.nullable) = false ]; + Status status = 9; +} diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 9fcfa9a4ed..49ab8a4375 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -1,10 +1,13 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; +import "stride/records/records.proto"; +import "stride/stakeibc/host_zone.proto"; +import "stride/stakeibc/validator.proto"; + +option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; -// ---------------------- Delegation Callbacks ---------------------- // message SplitDelegation { string validator = 1; string amount = 2 [ @@ -19,15 +22,12 @@ message DelegateCallback { repeated SplitDelegation split_delegations = 3; } -// ---------------------- Claim Callbacks ---------------------- // - message ClaimCallback { string user_redemption_record_id = 1; string chain_id = 2; uint64 epoch_number = 3; } -// ---------------------- Reinvest Callback ---------------------- // message ReinvestCallback { cosmos.base.v1beta1.Coin reinvest_amount = 1 [ (gogoproto.nullable) = false, @@ -36,21 +36,17 @@ message ReinvestCallback { string host_zone_id = 3; } -// ---------------------- Undelegation Callbacks ---------------------- // message UndelegateCallback { string host_zone_id = 1; repeated SplitDelegation split_delegations = 2; repeated uint64 epoch_unbonding_record_ids = 3; } -// ---------------------- Redemption Callbacks ---------------------- // message RedemptionCallback { string host_zone_id = 1; repeated uint64 epoch_unbonding_record_ids = 2; } -// ---------------- Validator Rebalance Callbacks ---------------------- // - message Rebalancing { string src_validator = 1; string dst_validator = 2; @@ -63,4 +59,24 @@ message Rebalancing { message RebalanceCallback { string host_zone_id = 1; repeated Rebalancing rebalancings = 2; +} + +message DetokenizeSharesCallback { records.LSMTokenDeposit deposit = 1; } + +message LSMLiquidStake { + records.LSMTokenDeposit deposit = 1; + HostZone host_zone = 2; + Validator validator = 3; +} + +message ValidatorSharesToTokensQueryCallback { + LSMLiquidStake lsm_liquid_stake = 1; +} + +message DelegatorSharesQueryCallback { + // Validator delegation at the time the query is submitted + string initial_validator_delegation = 1 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; } \ No newline at end of file diff --git a/proto/stride/stakeibc/gov.proto b/proto/stride/stakeibc/gov.proto index 377d2efc12..1826ba4c71 100644 --- a/proto/stride/stakeibc/gov.proto +++ b/proto/stride/stakeibc/gov.proto @@ -13,5 +13,17 @@ message AddValidatorsProposal { string description = 2; string host_zone = 3; repeated Validator validators = 4; - string deposit = 6 [ (gogoproto.moretags) = "yaml:\"deposit\"" ]; + string deposit = 5 [ (gogoproto.moretags) = "yaml:\"deposit\"" ]; +} + +message ToggleLSMProposal { + option (gogoproto.equal) = true; + option (gogoproto.goproto_getters) = false; + option (gogoproto.goproto_stringer) = false; + + string title = 1; + string description = 2; + string host_zone = 3; + bool enabled = 4; + string deposit = 5 [ (gogoproto.moretags) = "yaml:\"deposit\"" ]; } \ No newline at end of file diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto old mode 100755 new mode 100644 index b1871bb952..06a26e3fa5 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -2,30 +2,36 @@ syntax = "proto3"; package stride.stakeibc; import "stride/stakeibc/validator.proto"; -import "stride/stakeibc/ica_account.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; -// next id: 22 message HostZone { string chain_id = 1; - string connection_id = 2; string bech32prefix = 17; + string connection_id = 2; string transfer_channel_id = 12; - repeated Validator validators = 3; - repeated Validator blacklisted_validators = 4; - ICAAccount withdrawal_account = 5; - ICAAccount fee_account = 6; - ICAAccount delegation_account = 7; - ICAAccount redemption_account = 16; // ibc denom on stride string ibc_denom = 8; // native denom on host zone string host_denom = 9; - // TODO(TEST-68): Should we make this an array and store the last n redemption - // rates then calculate a TWARR? + uint64 unbonding_period = 26; + repeated Validator validators = 3; + string deposit_address = 18 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string withdrawal_ica_address = 22 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string fee_ica_address = 23 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string delegation_ica_address = 24 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string redemption_ica_address = 25 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string total_delegations = 13 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; string last_redemption_rate = 10 [ (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", @@ -36,15 +42,6 @@ message HostZone { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; - // stores how many days we should wait before issuing unbondings - uint64 unbonding_frequency = 14; - // TODO(TEST-101) int to dec - string staked_bal = 13 [ - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - string address = 18 [ (gogoproto.moretags) = "yaml:\"address\"" ]; - bool halted = 19; string min_redemption_rate = 20 [ (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", @@ -55,5 +52,7 @@ message HostZone { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; - reserved 15; + bool lsm_liquid_stake_enabled = 27; + bool halted = 19; + reserved 4, 5, 6, 7, 14, 15, 16; } diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto index d6b8150d6f..fc260fb9dd 100755 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -1,8 +1,6 @@ syntax = "proto3"; package stride.stakeibc; -import "cosmos_proto/cosmos.proto"; - option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; enum ICAAccountType { @@ -11,9 +9,3 @@ enum ICAAccountType { WITHDRAWAL = 2; REDEMPTION = 3; } - -message ICAAccount { - string address = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - ICAAccountType target = 3; - reserved 2; -} diff --git a/proto/stride/stakeibc/params.proto b/proto/stride/stakeibc/params.proto index 8e6ee6bbb1..45605cdbd8 100755 --- a/proto/stride/stakeibc/params.proto +++ b/proto/stride/stakeibc/params.proto @@ -6,7 +6,7 @@ import "gogoproto/gogo.proto"; option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; // Params defines the parameters for the module. -// next id: 18 +// next id: 20 message Params { option (gogoproto.goproto_stringer) = false; @@ -25,8 +25,7 @@ message Params { uint64 default_min_redemption_rate_threshold = 14; uint64 default_max_redemption_rate_threshold = 15; uint64 ibc_transfer_timeout_nanos = 16; - uint64 safety_num_validators = 17; - uint64 safety_max_slash_percent = 18; + uint64 validator_slash_query_threshold = 19; - reserved 8; + reserved 8, 17, 18; } \ No newline at end of file diff --git a/proto/stride/stakeibc/query.proto b/proto/stride/stakeibc/query.proto index 1d3906451d..43c88eb5a8 100644 --- a/proto/stride/stakeibc/query.proto +++ b/proto/stride/stakeibc/query.proto @@ -9,7 +9,6 @@ import "stride/stakeibc/validator.proto"; import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; import "stride/stakeibc/address_unbonding.proto"; -// this line is used by starport scaffolding # 1 option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index b7f580d359..df49589925 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -11,6 +11,7 @@ import "cosmos_proto/cosmos.proto"; // Msg defines the Msg service. service Msg { rpc LiquidStake(MsgLiquidStake) returns (MsgLiquidStakeResponse); + rpc LSMLiquidStake(MsgLSMLiquidStake) returns (MsgLSMLiquidStakeResponse); rpc RedeemStake(MsgRedeemStake) returns (MsgRedeemStakeResponse); rpc RegisterHostZone(MsgRegisterHostZone) returns (MsgRegisterHostZoneResponse); @@ -37,9 +38,18 @@ message MsgLiquidStake { ]; string host_denom = 3; } - message MsgLiquidStakeResponse {} +message MsgLSMLiquidStake { + string creator = 1; + string amount = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string lsm_token_ibc_denom = 3; +} +message MsgLSMLiquidStakeResponse { bool transaction_complete = 1; } + message MsgClearBalance { string creator = 1; string chain_id = 2; @@ -49,7 +59,6 @@ message MsgClearBalance { ]; string channel = 4; } - message MsgClearBalanceResponse {} message MsgRedeemStake { @@ -61,7 +70,6 @@ message MsgRedeemStake { string host_zone = 3; string receiver = 4; } - message MsgRedeemStakeResponse {} // next: 15 @@ -76,8 +84,8 @@ message MsgRegisterHostZone { string creator = 6; string transfer_channel_id = 10 [ (gogoproto.moretags) = "yaml:\"transfer_channel_id\"" ]; - uint64 unbonding_frequency = 11 - [ (gogoproto.moretags) = "yaml:\"unbonding_frequency\"" ]; + uint64 unbonding_period = 11 + [ (gogoproto.moretags) = "yaml:\"unbonding_period\"" ]; string min_redemption_rate = 13 [ (cosmos_proto.scalar) = "cosmos.Dec", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", @@ -88,8 +96,8 @@ message MsgRegisterHostZone { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; + bool lsm_liquid_stake_enabled = 15; } - message MsgRegisterHostZoneResponse {} message MsgClaimUndelegatedTokens { @@ -99,7 +107,6 @@ message MsgClaimUndelegatedTokens { uint64 epoch = 3; string sender = 4; } - message MsgClaimUndelegatedTokensResponse {} message MsgRebalanceValidators { diff --git a/proto/stride/stakeibc/validator.proto b/proto/stride/stakeibc/validator.proto old mode 100755 new mode 100644 index 3ff12adb73..7fb7d6af1b --- a/proto/stride/stakeibc/validator.proto +++ b/proto/stride/stakeibc/validator.proto @@ -4,23 +4,28 @@ import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; -message ValidatorExchangeRate { - string internal_tokens_to_shares_rate = 1 [ - (cosmos_proto.scalar) = "cosmos.Dec", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - uint64 epoch_number = 2; -} - message Validator { string name = 1; string address = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; - string delegation_amt = 5 [ + uint64 weight = 6; + string delegation = 5 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; - uint64 weight = 6; - ValidatorExchangeRate internal_exchange_rate = 7; - reserved 3, 4; + string slash_query_progress_tracker = 9 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string slash_query_checkpoint = 12 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + string shares_to_tokens_rate = 10 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + int64 delegation_changes_in_progress = 11; + bool slash_query_in_progress = 13; + reserved 3, 4, 7, 8; } diff --git a/readme-docs/md/stakeibc_README.md b/readme-docs/md/stakeibc_README.md index 0f6239a1a6..7f6907df43 100644 --- a/readme-docs/md/stakeibc_README.md +++ b/readme-docs/md/stakeibc_README.md @@ -37,7 +37,6 @@ DefaultMinRedemptionRateThreshold (default uint64 = 90) DefaultMaxRedemptionRateThreshold (default uint64 = 150) MaxStakeICACallsPerEpoch (default uint64 = 100) IBCTransferTimeoutNanos (default uint64 = 1800000000000) -SafetyNumValidators (default uint64 = 35) ``` ## Keeper functions diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 319937ca9a..6181e13c46 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -2,28 +2,24 @@ set -eo pipefail +generate_protos() { + package="$1" + proto_dirs=$(find $package -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) + for dir in $proto_dirs; do + for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do + if grep go_package "$file" &>/dev/null; then + buf generate --template buf.gen.gogo.yaml "$file" + fi + done + done +} + echo "Generating gogo proto code" cd proto -# Generate stride protos -proto_dirs=$(find ./stride -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) -for dir in $proto_dirs; do - for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do - if grep go_package "$file" &>/dev/null; then - buf generate --template buf.gen.gogo.yaml "$file" - fi - done -done - -# Generate cosmwasm protos -proto_dirs=$(find ./cosmwasm -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq) -for dir in $proto_dirs; do - for file in $(find "${dir}" -maxdepth 1 -name '*.proto'); do - if grep go_package "$file" &>/dev/null; then - buf generate --template buf.gen.gogo.yaml "$file" - fi - done -done +generate_protos "./stride" +generate_protos "./cosmos" +generate_protos "./cosmwasm" cd .. diff --git a/utils/cache_ctx.go b/utils/cache_ctx.go new file mode 100644 index 0000000000..db21d03fc0 --- /dev/null +++ b/utils/cache_ctx.go @@ -0,0 +1,84 @@ +package utils + +// Borrowed from Osmosis +// https://github.com/osmosis-labs/osmosis/blob/62757d309957fa9e02e6fb0b5dc8caf1ca68e696/osmoutils/cache_ctx.go +// Wraps the execution of a function with a temporary context so that state changes can be discarded if an error occurs + +import ( + "errors" + "fmt" + "runtime" + "runtime/debug" + + "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// This function lets you run the function f, but if theres an error or panic +// drop the state machine change and log the error. +// If there is no error, proceeds as normal (but with some slowdown due to SDK store weirdness) +// Try to avoid usage of iterators in f. +// +// If its an out of gas panic, this function will also panic like in normal tx execution flow. +// This is still safe for beginblock / endblock code though, as they do not have out of gas panics. +func ApplyFuncIfNoError(ctx sdk.Context, f func(ctx sdk.Context) error) (err error) { + // Add a panic safeguard + defer func() { + if recoveryError := recover(); recoveryError != nil { + if isErr, _ := IsOutOfGasError(recoveryError); isErr { + // We panic with the same error, to replicate the normal tx execution flow. + panic(recoveryError) + } else { + PrintPanicRecoveryError(ctx, recoveryError) + err = errors.New("panic occurred during execution") + } + } + }() + // makes a new cache context, which all state changes get wrapped inside of. + cacheCtx, write := ctx.CacheContext() + err = f(cacheCtx) + if err != nil { + ctx.Logger().Error(err.Error()) + } else { + // no error, write the output of f + write() + ctx.EventManager().EmitEvents(cacheCtx.EventManager().Events()) + } + return err +} + +// Frustratingly, this has to return the error descriptor, not an actual error itself +// because the SDK errors here are not actually errors. (They don't implement error interface) +func IsOutOfGasError(err any) (bool, string) { + switch e := err.(type) { + case types.ErrorOutOfGas: + return true, e.Descriptor + case types.ErrorGasOverflow: + return true, e.Descriptor + default: + return false, "" + } +} + +// PrintPanicRecoveryError error logs the recoveryError, along with the stacktrace, if it can be parsed. +// If not emits them to stdout. +func PrintPanicRecoveryError(ctx sdk.Context, recoveryError interface{}) { + errStackTrace := string(debug.Stack()) + switch e := recoveryError.(type) { + case types.ErrorOutOfGas: + ctx.Logger().Debug("out of gas error inside panic recovery block: " + e.Descriptor) + return + case string: + ctx.Logger().Error("Recovering from (string) panic: " + e) + case runtime.Error: + ctx.Logger().Error("recovered (runtime.Error) panic: " + e.Error()) + case error: + ctx.Logger().Error("recovered (error) panic: " + e.Error()) + default: + ctx.Logger().Error("recovered (default) panic. Could not capture logs in ctx, see stdout") + fmt.Println("Recovering from panic ", recoveryError) + debug.PrintStack() + return + } + ctx.Logger().Error("stack trace: " + errStackTrace) +} diff --git a/utils/cache_ctx_test.go b/utils/cache_ctx_test.go new file mode 100644 index 0000000000..fd053b916e --- /dev/null +++ b/utils/cache_ctx_test.go @@ -0,0 +1,60 @@ +package utils_test + +import ( + "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v13/utils" +) + +var expectedOutOfGasError = types.ErrorOutOfGas{Descriptor: "my func"} + +func consumeGas(ctx sdk.Context, gas uint64, numTimes int) error { + for i := 0; i < numTimes; i++ { + ctx.GasMeter().ConsumeGas(gas, "my func") + } + return nil +} + +func (s *UtilsTestSuite) TestCacheCtxConsumeGas() { + // every test case adds 1k gas 10 times + testcases := map[string]struct { + gasLimit uint64 + gasUsedPreCtx uint64 + gasUsedPostCtx uint64 + expectPanic bool + }{ + "no gas limit hit": { + gasLimit: 15_000, + gasUsedPreCtx: 111, + gasUsedPostCtx: 111 + 10_000, + expectPanic: false, + }, + "gas limit hit": { + gasLimit: 10_000, + gasUsedPreCtx: 111, + gasUsedPostCtx: 111 + 10_000, + expectPanic: true, + }, + } + for name, tc := range testcases { + s.Run(name, func() { + ctx := s.Ctx.WithGasMeter(sdk.NewGasMeter(tc.gasLimit)) + ctx.GasMeter().ConsumeGas(tc.gasUsedPreCtx, "pre ctx") + var err error + f := func() { + // nolint:errcheck + utils.ApplyFuncIfNoError(ctx, func(c sdk.Context) error { + return consumeGas(c, 1000, 10) + }) + } + if tc.expectPanic { + s.PanicsWithValue(expectedOutOfGasError, f) + } else { + f() + s.Require().NoError(err) + } + s.Equal(tc.gasUsedPostCtx, ctx.GasMeter().GasConsumed()) + }) + } +} diff --git a/utils/module_account_test.go b/utils/module_account_test.go new file mode 100644 index 0000000000..685999a007 --- /dev/null +++ b/utils/module_account_test.go @@ -0,0 +1,72 @@ +package utils_test + +import ( + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + + "github.com/Stride-Labs/stride/v13/utils" +) + +func (s *UtilsTestSuite) TestCreateModuleAccount() { + baseWithAddr := func(addr sdk.AccAddress) authtypes.AccountI { + acc := authtypes.ProtoBaseAccount() + err := acc.SetAddress(addr) + s.Require().NoError(err) + return acc + } + userAccViaSeqnum := func(addr sdk.AccAddress) authtypes.AccountI { + base := baseWithAddr(addr) + err := base.SetSequence(2) + s.Require().NoError(err) + return base + } + userAccViaPubkey := func(addr sdk.AccAddress) authtypes.AccountI { + base := baseWithAddr(addr) + err := base.SetPubKey(secp256k1.GenPrivKey().PubKey()) + s.Require().NoError(err) + return base + } + defaultModuleAccAddr := address.Module("dummy module", []byte{1}) + testcases := map[string]struct { + priorAccounts []authtypes.AccountI + moduleAccAddr sdk.AccAddress + expErr bool + }{ + "no prior acc": { + priorAccounts: []authtypes.AccountI{}, + moduleAccAddr: defaultModuleAccAddr, + expErr: false, + }, + "prior empty acc at addr": { + priorAccounts: []authtypes.AccountI{baseWithAddr(defaultModuleAccAddr)}, + moduleAccAddr: defaultModuleAccAddr, + expErr: false, + }, + "prior user acc at addr (sequence)": { + priorAccounts: []authtypes.AccountI{userAccViaSeqnum(defaultModuleAccAddr)}, + moduleAccAddr: defaultModuleAccAddr, + expErr: true, + }, + "prior user acc at addr (pubkey)": { + priorAccounts: []authtypes.AccountI{userAccViaPubkey(defaultModuleAccAddr)}, + moduleAccAddr: defaultModuleAccAddr, + expErr: true, + }, + } + for name, tc := range testcases { + s.Run(name, func() { + s.SetupTest() + for _, priorAcc := range tc.priorAccounts { + s.App.AccountKeeper.SetAccount(s.Ctx, priorAcc) + } + err := utils.CreateModuleAccount(s.Ctx, s.App.AccountKeeper, tc.moduleAccAddr) + if tc.expErr { + s.Require().Error(err) + } else { + s.Require().NoError(err) + } + }) + } +} diff --git a/utils/utils_test.go b/utils/utils_test.go new file mode 100644 index 0000000000..488a65cae1 --- /dev/null +++ b/utils/utils_test.go @@ -0,0 +1,21 @@ +package utils_test + +import ( + "testing" + + "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v13/app/apptesting" +) + +type UtilsTestSuite struct { + apptesting.AppTestHelper +} + +func (s *UtilsTestSuite) SetupTest() { + s.Setup() +} + +func TestUtilsTestSuite(t *testing.T) { + suite.Run(t, new(UtilsTestSuite)) +} diff --git a/x/autopilot/keeper/liquidstake_test.go b/x/autopilot/keeper/liquidstake_test.go index 2b27e8f53d..1c7c8f541f 100644 --- a/x/autopilot/keeper/liquidstake_test.go +++ b/x/autopilot/keeper/liquidstake_test.go @@ -208,20 +208,14 @@ func (suite *KeeperTestSuite) TestLiquidStakeOnRecvPacket() { }) // set host zone for env suite.App.StakeibcKeeper.SetHostZone(ctx, stakeibctypes.HostZone{ - ChainId: "hub-1", - ConnectionId: "connection-0", - Bech32Prefix: "cosmos", - TransferChannelId: "channel-0", - Validators: []*stakeibctypes.Validator{}, - BlacklistedValidators: []*stakeibctypes.Validator{}, - WithdrawalAccount: nil, - FeeAccount: nil, - DelegationAccount: nil, - RedemptionAccount: nil, - IbcDenom: atomIbcDenom, - HostDenom: atomHostDenom, - RedemptionRate: sdk.NewDec(1), - Address: addr1.String(), + ChainId: "hub-1", + ConnectionId: "connection-0", + Bech32Prefix: "cosmos", + TransferChannelId: "channel-0", + IbcDenom: atomIbcDenom, + HostDenom: atomHostDenom, + RedemptionRate: sdk.NewDec(1), + DepositAddress: addr1.String(), }) // mint coins to be spent on liquid staking diff --git a/x/claim/migrations/v2/types/params.pb.go b/x/claim/migrations/v2/types/params.pb.go index 65f7aa497e..dd99dc2c06 100644 --- a/x/claim/migrations/v2/types/params.pb.go +++ b/x/claim/migrations/v2/types/params.pb.go @@ -6,9 +6,9 @@ package types import ( fmt "fmt" _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" - _ "github.com/cosmos/gogoproto/types" - github_com_gogo_protobuf_types "github.com/cosmos/gogoproto/types" + proto "github.com/gogo/protobuf/proto" + _ "github.com/gogo/protobuf/types" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" io "io" math "math" math_bits "math/bits" diff --git a/x/claim/vesting/types/vesting_account.go b/x/claim/vesting/types/vesting_account.go index c4bf0de5b1..b0a1be5cb0 100644 --- a/x/claim/vesting/types/vesting_account.go +++ b/x/claim/vesting/types/vesting_account.go @@ -92,7 +92,7 @@ func (bva *BaseVestingAccount) TrackDelegation(balance, vestingCoins, amount sdk // // NOTE: The undelegation (bond refund) amount may exceed the delegated // vesting (bond) amount due to the way undelegation truncates the bond refund, -// which can increase the validator's exchange rate (tokens/shares) slightly if +// which can increase the validator's sharesToTokens rate slightly if // the undelegated tokens are non-integral. // // CONTRACT: The account's coins and undelegation coins must be sorted. diff --git a/x/icacallbacks/icacallbacks.go b/x/icacallbacks/icacallbacks.go index 6d3c895c92..83f896149b 100644 --- a/x/icacallbacks/icacallbacks.go +++ b/x/icacallbacks/icacallbacks.go @@ -81,6 +81,7 @@ func UnpackAcknowledgementResponse(ctx sdk.Context, logger log.Logger, ack []byt case *channeltypes.Acknowledgement_Error: logger.Error(fmt.Sprintf("acknowledgement error: %s", response.Error)) return &types.AcknowledgementResponse{Status: types.AckResponseStatus_FAILURE, Error: response.Error}, nil + default: return nil, errorsmod.Wrapf(channeltypes.ErrInvalidAcknowledgement, "unsupported acknowledgement response field type %T", response) } diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go index f5dbe99158..1371377458 100644 --- a/x/icaoracle/keeper/ibc_test.go +++ b/x/icaoracle/keeper/ibc_test.go @@ -4,7 +4,6 @@ import ( "time" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" @@ -30,9 +29,7 @@ type OnChanOpenAckTestCase struct { func (s *KeeperTestSuite) SetupTestOnChanOpenAck() OnChanOpenAckTestCase { // Create clients, connections, and an oracle ICA channel owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) - channelId := s.CreateICAChannel(owner) - portId, err := icatypes.NewControllerPortID(owner) - s.Require().NoError(err, "no error expected when formatting portId") + channelId, portId := s.CreateICAChannel(owner) // Get ica address that was just created icaAddress, found := s.App.ICAControllerKeeper.GetInterchainAccountAddress(s.Ctx, ibctesting.FirstConnectionID, portId) @@ -107,12 +104,10 @@ func (s *KeeperTestSuite) TestOnChanOpenAck_NotOracleChannel() { // Create non-oracle ICA channel and use that for the callback owner := types.FormatICAAccountOwner(HostChainId, "NOT_ORACLE") - differentChannelId := s.CreateICAChannel(owner) - differentPortId, err := icatypes.NewControllerPortID(owner) - s.Require().NoError(err, "no error expected when formatting portId") + differentChannelId, differentPortId := s.CreateICAChannel(owner) // The callback should succeed but the oracle should not be updated - err = s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, differentPortId, differentChannelId) + err := s.App.ICAOracleKeeper.OnChanOpenAck(s.Ctx, differentPortId, differentChannelId) s.Require().NoError(err, "no error expected when calling OnChanOpenAck") actualOracle, found := s.App.ICAOracleKeeper.GetOracle(s.Ctx, HostChainId) @@ -149,13 +144,11 @@ func (s *KeeperTestSuite) TestOnChanOpenAck_NoICAAddress() { func (s *KeeperTestSuite) SetupTestSubmitICATx() (tx types.ICATx, callbackBz []byte) { // Create clients, connections, and an oracle ICA channel owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) - channelId := s.CreateICAChannel(owner) - portId, err := icatypes.NewControllerPortID(owner) - s.Require().NoError(err, "no error expected when formatting portId") + channelId, portId := s.CreateICAChannel(owner) // Callback args (we can use any callback type here) callback := types.InstantiateOracleCallback{OracleChainId: HostChainId} - callbackBz, err = proto.Marshal(&callback) + callbackBz, err := proto.Marshal(&callback) s.Require().NoError(err, "no error expected when serializing callback args") // Return a valid ICATx diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go index 340000e622..9b74a4534f 100644 --- a/x/icaoracle/keeper/icaoracle_test.go +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -2,7 +2,6 @@ package keeper_test import ( "github.com/cosmos/gogoproto/proto" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" @@ -21,9 +20,7 @@ type SubmitMetricUpdateTestCase struct { func (s *KeeperTestSuite) SetupTestSubmitMetricUpdate() SubmitMetricUpdateTestCase { // Create clients, connections, and an oracle ICA channel owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) - channelId := s.CreateICAChannel(owner) - portId, err := icatypes.NewControllerPortID(owner) - s.Require().NoError(err, "no error expected when formatting portId") + channelId, portId := s.CreateICAChannel(owner) // Create oracle oracle := types.Oracle{ diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go index c75f8bd095..b74a14c31a 100644 --- a/x/icaoracle/keeper/msg_server_add_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -4,7 +4,6 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" "github.com/Stride-Labs/stride/v13/x/icaoracle/types" ) @@ -44,8 +43,7 @@ func (s *KeeperTestSuite) TestAddOracle_Successful_IcaAlreadyExists() { // Create the oracle ICA channel owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) - channelID := s.CreateICAChannel(owner) - portId, _ := icatypes.NewControllerPortID(owner) + channelID, portId := s.CreateICAChannel(owner) icaAddress := s.IcaAddresses[owner] // Submit the AddOracle message diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go index d8cfc34978..cc3a6f8383 100644 --- a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -3,8 +3,6 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - ibctesting "github.com/cosmos/ibc-go/v7/testing" icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" @@ -21,9 +19,7 @@ type InstantiateOracleTestCase struct { func (s *KeeperTestSuite) SetupTestInstantiateOracle() InstantiateOracleTestCase { // Create oracle ICA channel owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) - channelId := s.CreateICAChannel(owner) - portId, err := icatypes.NewControllerPortID(owner) - s.Require().NoError(err, "no error expected when formatting portId") + channelId, portId := s.CreateICAChannel(owner) // Create oracle oracle := types.Oracle{ diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go index a38523d620..69e4e2d0c6 100644 --- a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -4,7 +4,6 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" @@ -20,9 +19,7 @@ type RestoreOracleICATestCase struct { func (s *KeeperTestSuite) SetupTestRestoreOracleICA() RestoreOracleICATestCase { // Create oracle ICA channel owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_Oracle) - channelId := s.CreateICAChannel(owner) - portId, err := icatypes.NewControllerPortID(owner) - s.Require().NoError(err, "no error expected when formatting portId") + channelId, portId := s.CreateICAChannel(owner) // Create oracle oracle := types.Oracle{ diff --git a/x/interchainquery/README.md b/x/interchainquery/README.md index baaf887c4c..44d228c349 100644 --- a/x/interchainquery/README.md +++ b/x/interchainquery/README.md @@ -34,14 +34,20 @@ The `interchainquery` module keeps `Query` objects and modifies the information `Query` has information types that pertain to the query itself. `Query` keeps the following: -1. `id` keeps the query identification string. -2. `connection_id` keeps the id of the connection between the controller and host chain. -3. `chain_id` keeps the id of the queried chain. -4. `query_type` keeps the type of interchain query (e.g. bank store query) -5. `request` keeps an bytecode encoded version of the interchain query -6. `callback_id` keeps the function that will be called by the interchain query -7. `ttl` time at which the query expires (in unix nano) -8. `request_sent` keeps a boolean indicating whether the query event has been emitted (and can be identified by a relayer) +1. `id`: query identification string. +2. `connection_id`: id of the connection between the controller and host chain. +3. `chain_id`: id of the queried chain. +4. `query_type`: type of interchain query (e.g. bank store query) +5. `request_data`: serialized request information (e.g. the address with which to query) +6. `callback_module`: name of the module that will handle the callback +7. `callback_id`: ID for the function that will be called after the response is returned +8. `callback_data`: optional serialized data associated with the callback +9. `timeout_policy`: specifies how to handle a timeout (fail the query, retry the query, or execute the callback with a timeout) +10. `timeout_duration`: the relative time from the current block with which the query should timeout +11. `timeout_timestamp`: the absolute time at which the query times out +12. `request_sent`: boolean indicating whether the query event has been emitted (and can be identified by a relayer) +13. `submission_height`: the light client hight of the queried chain at the time of query submission + `DataPoint` has information types that pertain to the data that is queried. `DataPoint` keeps the following: diff --git a/x/interchainquery/keeper/abci.go b/x/interchainquery/keeper/abci.go index c7602d3c3f..697acfaaff 100644 --- a/x/interchainquery/keeper/abci.go +++ b/x/interchainquery/keeper/abci.go @@ -14,34 +14,34 @@ import ( // EndBlocker of interchainquery module func (k Keeper) EndBlocker(ctx sdk.Context) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyEndBlocker) - _ = k.Logger(ctx) + events := sdk.Events{} - // emit events for periodic queries - k.IterateQueries(ctx, func(_ int64, query types.Query) (stop bool) { - if !query.RequestSent { - k.Logger(ctx).Info(fmt.Sprintf("Interchainquery event emitted %s", query.Id)) - // QUESTION: Do we need to emit this event twice? - event := sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), - sdk.NewAttribute(sdk.AttributeKeyAction, types.AttributeValueQuery), - sdk.NewAttribute(types.AttributeKeyQueryId, query.Id), - sdk.NewAttribute(types.AttributeKeyChainId, query.ChainId), - sdk.NewAttribute(types.AttributeKeyConnectionId, query.ConnectionId), - sdk.NewAttribute(types.AttributeKeyType, query.QueryType), - sdk.NewAttribute(types.AttributeKeyHeight, "0"), - sdk.NewAttribute(types.AttributeKeyRequest, hex.EncodeToString(query.Request)), - ) - events = append(events, event) - - event.Type = "query_request" - events = append(events, event) - - query.RequestSent = true - k.SetQuery(ctx, query) + for _, query := range k.AllQueries(ctx) { + if query.RequestSent { + continue } - return false - }) + + k.Logger(ctx).Info(fmt.Sprintf("Interchainquery event emitted %s", query.Id)) + + event := sdk.NewEvent( + sdk.EventTypeMessage, + sdk.NewAttribute(sdk.AttributeKeyModule, types.AttributeValueCategory), + sdk.NewAttribute(sdk.AttributeKeyAction, types.AttributeValueQuery), + sdk.NewAttribute(types.AttributeKeyQueryId, query.Id), + sdk.NewAttribute(types.AttributeKeyChainId, query.ChainId), + sdk.NewAttribute(types.AttributeKeyConnectionId, query.ConnectionId), + sdk.NewAttribute(types.AttributeKeyType, query.QueryType), + sdk.NewAttribute(types.AttributeKeyHeight, "0"), + sdk.NewAttribute(types.AttributeKeyRequest, hex.EncodeToString(query.RequestData)), + ) + events = append(events, event) + + event.Type = "query_request" + events = append(events, event) + + query.RequestSent = true + k.SetQuery(ctx, query) + } if len(events) > 0 { ctx.EventManager().EmitEvents(events) diff --git a/x/interchainquery/keeper/keeper.go b/x/interchainquery/keeper/keeper.go index bec56f6293..1dfc5c3b03 100644 --- a/x/interchainquery/keeper/keeper.go +++ b/x/interchainquery/keeper/keeper.go @@ -2,17 +2,16 @@ package keeper import ( "fmt" - "strings" + errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - errorsmod "cosmossdk.io/errors" "github.com/cometbft/cometbft/libs/log" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - storetypes "github.com/cosmos/cosmos-sdk/store/types" + clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" + ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" "github.com/Stride-Labs/stride/v13/utils" "github.com/Stride-Labs/stride/v13/x/interchainquery/types" @@ -50,46 +49,55 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) MakeRequest(ctx sdk.Context, module string, callbackId string, chainId string, connectionId string, queryType string, request []byte, ttl uint64) error { - k.Logger(ctx).Info(utils.LogWithHostZone(chainId, - "Submitting ICQ Request - module=%s, callbackId=%s, connectionId=%s, queryType=%s, ttl=%d", module, callbackId, connectionId, queryType, ttl)) +func (k *Keeper) SubmitICQRequest(ctx sdk.Context, query types.Query, forceUnique bool) error { + k.Logger(ctx).Info(utils.LogWithHostZone(query.ChainId, + "Submitting ICQ Request - module=%s, callbackId=%s, connectionId=%s, queryType=%s, timeout_duration=%d", + query.CallbackModule, query.CallbackId, query.ConnectionId, query.QueryType, query.TimeoutDuration)) - // Confirm the connectionId and chainId are valid - if connectionId == "" { - errMsg := "[ICQ Validation Check] Failed! connection id cannot be empty" - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, errMsg) - } - if !strings.HasPrefix(connectionId, "connection") { - errMsg := "[ICQ Validation Check] Failed! connection id must begin with 'connection'" - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, errMsg) - } - if chainId == "" { - errMsg := "[ICQ Validation Check] Failed! chain_id cannot be empty" - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, errMsg) + if err := k.ValidateQuery(ctx, query); err != nil { + return err } - // Confirm the module and callbackId exist - if module != "" { - if _, exists := k.callbacks[module]; !exists { - err := fmt.Errorf("no callback handler registered for module %s", module) - k.Logger(ctx).Error(err.Error()) - return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "no callback handler registered for module") - } - if exists := k.callbacks[module].HasICQCallback(callbackId); !exists { - err := fmt.Errorf("no callback %s registered for module %s", callbackId, module) - k.Logger(ctx).Error(err.Error()) - return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "no callback handler registered for module") - } + // Set the timeout using the block time and timeout duration + timeoutTimestamp := uint64(ctx.BlockTime().UnixNano() + query.TimeoutDuration.Nanoseconds()) + query.TimeoutTimestamp = timeoutTimestamp + + // Generate and set the query ID - optionally force it to be unique + query.Id = k.GetQueryId(ctx, query, forceUnique) + query.RequestSent = false + + // Set the submission height on the Query to the latest light client height + // In the query response, this will be used to verify that the query wasn't historical + connection, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, query.ConnectionId) + if !found { + return errorsmod.Wrapf(connectiontypes.ErrConnectionNotFound, query.ConnectionId) } + clientState, found := k.IBCKeeper.ClientKeeper.GetClientState(ctx, connection.ClientId) + if !found { + return errorsmod.Wrapf(clienttypes.ErrClientNotFound, connection.ClientId) + } + query.SubmissionHeight = clientState.GetLatestHeight().GetRevisionHeight() // Save the query to the store // If the same query is re-requested, it will get replace in the store with an updated TTL // and the RequestSent bool reset to false - query := k.NewQuery(ctx, module, callbackId, chainId, connectionId, queryType, request, ttl) - k.SetQuery(ctx, *query) + k.SetQuery(ctx, query) + + return nil +} + +// Re-submit an ICQ, generally used after a timeout +func (k *Keeper) RetryICQRequest(ctx sdk.Context, query types.Query) error { + k.Logger(ctx).Info(utils.LogWithHostZone(query.ChainId, + "Queuing ICQ Retry - Query Type: %s, Query ID: %s", query.CallbackId, query.Id)) + + // Delete old query + k.DeleteQuery(ctx, query.Id) + + // Submit a new query (with a new ID) + if err := k.SubmitICQRequest(ctx, query, true); err != nil { + return errorsmod.Wrapf(err, types.ErrFailedToRetryQuery.Error()) + } return nil } diff --git a/x/interchainquery/keeper/msg_server.go b/x/interchainquery/keeper/msg_server.go index 02e0cb850b..a5b9d8bfc6 100644 --- a/x/interchainquery/keeper/msg_server.go +++ b/x/interchainquery/keeper/msg_server.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "fmt" "net/url" "sort" "strings" @@ -46,11 +47,17 @@ func (k Keeper) VerifyKeyProof(ctx sdk.Context, msg *types.MsgSubmitQueryRespons } // Get the client consensus state at the height 1 block above the message height - msgHeight, err := cast.ToUint64E(msg.Height) + proofHeight, err := cast.ToUint64E(msg.Height) if err != nil { return err } - height := clienttypes.NewHeight(clienttypes.ParseChainID(query.ChainId), msgHeight+1) + height := clienttypes.NewHeight(clienttypes.ParseChainID(query.ChainId), proofHeight+1) + + // Confirm the query proof height occurred after the submission height + if proofHeight <= query.SubmissionHeight { + return errorsmod.Wrapf(types.ErrInvalidICQProof, + "Query proof height (%d) is older than the submission height (%d)", proofHeight, query.SubmissionHeight) + } // Get the client state and consensus state from the connection Id connection, found := k.IBCKeeper.ConnectionKeeper.GetConnection(ctx, query.ConnectionId) @@ -81,7 +88,7 @@ func (k Keeper) VerifyKeyProof(ctx sdk.Context, msg *types.MsgSubmitQueryRespons var clientStateProof []*ics23.ProofSpec = tendermintClientState.ProofSpecs // Get the merkle path and merkle proof - path := commitmenttypes.NewMerklePath([]string{pathParts[1], url.PathEscape(string(query.Request))}...) + path := commitmenttypes.NewMerklePath([]string{pathParts[1], url.PathEscape(string(query.RequestData))}...) merkleProof, err := commitmenttypes.ConvertProofs(msg.ProofOps) if err != nil { return errorsmod.Wrapf(types.ErrInvalidICQProof, "Error converting proofs: %s", err.Error()) @@ -105,6 +112,29 @@ func (k Keeper) VerifyKeyProof(ctx sdk.Context, msg *types.MsgSubmitQueryRespons return nil } +// Handles a query timeout based on the timeout policy +func (k Keeper) HandleQueryTimeout(ctx sdk.Context, msg *types.MsgSubmitQueryResponse, query types.Query) error { + k.Logger(ctx).Error(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, + "QUERY TIMEOUT - QueryId: %s, TTL: %d, BlockTime: %d", query.Id, query.TimeoutTimestamp, ctx.BlockHeader().Time.UnixNano())) + + switch query.TimeoutPolicy { + case types.TimeoutPolicy_REJECT_QUERY_RESPONSE: + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, "Rejecting query")) + return nil + + case types.TimeoutPolicy_RETRY_QUERY_REQUEST: + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, "Retrying query...")) + return k.RetryICQRequest(ctx, query) + + case types.TimeoutPolicy_EXECUTE_QUERY_CALLBACK: + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, "Executing callback...")) + return k.InvokeCallback(ctx, msg, query) + + default: + return fmt.Errorf("Unsupported query timeout policy: %s", query.TimeoutPolicy.String()) + } +} + // call the query's associated callback function func (k Keeper) InvokeCallback(ctx sdk.Context, msg *types.MsgSubmitQueryResponse, query types.Query) error { // get all the callback handlers and sort them for determinism @@ -121,7 +151,14 @@ func (k Keeper) InvokeCallback(ctx sdk.Context, msg *types.MsgSubmitQueryRespons // Once the callback is found, invoke the function if moduleCallbackHandler.HasICQCallback(query.CallbackId) { - return moduleCallbackHandler.CallICQCallback(ctx, query.CallbackId, msg.Result, query) + if err := moduleCallbackHandler.CallICQCallback(ctx, query.CallbackId, msg.Result, query); err != nil { + k.Logger(ctx).Error(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, + "Error invoking ICQ callback, error: %s, %s, Query Response: %s", + err.Error(), query.Description(), msg.Result)) + + return err + } + return nil } } @@ -165,17 +202,6 @@ func (k msgServer) SubmitQueryResponse(goCtx context.Context, msg *types.MsgSubm // Immediately delete the query so it cannot process again k.DeleteQuery(ctx, query.Id) - // Verify the query hasn't expired (if the block time is greater than the TTL timestamp, the query is expired) - currBlockTime, err := cast.ToUint64E(ctx.BlockTime().UnixNano()) - if err != nil { - return nil, err - } - if query.Ttl < currBlockTime { - k.Logger(ctx).Error(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, - "QUERY TIMEOUT - QueryId: %s, TTL: %d, BlockTime: %d", query.Id, query.Ttl, ctx.BlockHeader().Time.UnixNano())) - return &types.MsgSubmitQueryResponseResponse{}, nil - } - // If the query is contentless, end if len(msg.Result) == 0 { k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, @@ -183,12 +209,16 @@ func (k msgServer) SubmitQueryResponse(goCtx context.Context, msg *types.MsgSubm return &types.MsgSubmitQueryResponseResponse{}, nil } - // Call the query's associated callback function - err = k.InvokeCallback(ctx, msg, query) - if err != nil { - k.Logger(ctx).Error(utils.LogICQCallbackWithHostZone(query.ChainId, query.CallbackId, - "Error invoking ICQ callback, error: %s, QueryId: %s, QueryType: %s, ConnectionId: %s, QueryRequest: %v, QueryReponse: %v", - err.Error(), msg.QueryId, query.QueryType, query.ConnectionId, query.Request, msg.Result)) + // Check if the query has expired (if the block time is greater than the TTL timestamp, the query has expired) + if query.HasTimedOut(ctx.BlockTime()) { + if err := k.HandleQueryTimeout(ctx, msg, query); err != nil { + return nil, err + } + return &types.MsgSubmitQueryResponseResponse{}, nil + } + + // Invoke the query callback (if the query has not timed out) + if err := k.InvokeCallback(ctx, msg, query); err != nil { return nil, err } diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index f55c8ae93f..41db6dcfb3 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -2,7 +2,7 @@ package keeper_test import ( "context" - "strings" + "time" "github.com/cometbft/cometbft/proto/tendermint/crypto" sdk "github.com/cosmos/cosmos-sdk/types" @@ -11,6 +11,7 @@ import ( _ "github.com/stretchr/testify/suite" "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) const ( @@ -39,16 +40,25 @@ func (s *KeeperTestSuite) SetupMsgSubmitQueryResponse() MsgSubmitQueryResponseTe _, addr, _ := bech32.DecodeAndConvert(s.TestAccs[0].String()) data := banktypes.CreateAccountBalancesPrefix(addr) - // save the query to Stride state, so it can be retrieved in the response + + timeoutDuration := time.Minute query := types.Query{ - Id: expectedId, - CallbackId: "withdrawalbalance", + Id: expectedId, + CallbackId: "withdrawalbalance", + CallbackModule: "stakeibc", + ChainId: HostChainId, + ConnectionId: s.TransferPath.EndpointA.ConnectionID, + QueryType: "store/bank", // intentionally leave off key to skip proof + RequestData: append(data, []byte(HostChainId)...), + TimeoutDuration: timeoutDuration, + TimeoutTimestamp: uint64(s.Ctx.BlockTime().Add(timeoutDuration).UnixNano()), + } + + hostZone := stakeibctypes.HostZone{ ChainId: HostChainId, ConnectionId: s.TransferPath.EndpointA.ConnectionID, - QueryType: types.BANK_STORE_QUERY_WITH_PROOF, - Request: append(data, []byte(HostChainId)...), - Ttl: uint64(12545592938) * uint64(1000000000), // set ttl to August 2050, mult by nano conversion factor } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) return MsgSubmitQueryResponseTestCase{ validMsg: types.MsgSubmitQueryResponse{ @@ -67,6 +77,7 @@ func (s *KeeperTestSuite) SetupMsgSubmitQueryResponse() MsgSubmitQueryResponseTe func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_WrongProof() { tc := s.SetupMsgSubmitQueryResponse() + tc.query.QueryType = types.BANK_STORE_QUERY_WITH_PROOF s.App.InterchainqueryKeeper.SetQuery(s.Ctx, tc.query) resp, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) @@ -90,34 +101,97 @@ func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_UnknownId() { s.Require().True(found) } -func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_ExceededTtl() { +func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_ProofStale() { tc := s.SetupMsgSubmitQueryResponse() - // Remove key from the query type so to bypass the VerifyKeyProof function - tc.query.QueryType = strings.ReplaceAll(tc.query.QueryType, "key", "") + // Set the submission time in the future + tc.query.QueryType = types.BANK_STORE_QUERY_WITH_PROOF + tc.query.SubmissionHeight = 100 + s.App.InterchainqueryKeeper.SetQuery(s.Ctx, tc.query) - // set ttl to be expired - tc.query.Ttl = uint64(1) + // Attempt to submit the response, it should fail because the response is stale + _, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) + s.Require().ErrorContains(err, "Query proof height (16) is older than the submission height (100)") +} + +func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_Timeout_RejectQuery() { + tc := s.SetupMsgSubmitQueryResponse() + + // set timeout to be expired and set the policy to reject + tc.query.TimeoutTimestamp = uint64(1) + tc.query.TimeoutPolicy = types.TimeoutPolicy_REJECT_QUERY_RESPONSE s.App.InterchainqueryKeeper.SetQuery(s.Ctx, tc.query) - resp, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) + _, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) s.Require().NoError(err) - s.Require().NotNil(resp) - // check that the query was deleted (since the query timed out) + // check that the original query was deleted _, found := s.App.InterchainqueryKeeper.GetQuery(s.Ctx, tc.query.Id) - s.Require().False(found) + s.Require().False(found, "original query should be removed") +} + +func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_Timeout_RetryQuery() { + tc := s.SetupMsgSubmitQueryResponse() + + // set timeout to be expired and set the policy to retry + tc.query.TimeoutTimestamp = uint64(1) + tc.query.TimeoutPolicy = types.TimeoutPolicy_RETRY_QUERY_REQUEST + s.App.InterchainqueryKeeper.SetQuery(s.Ctx, tc.query) + + _, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) + s.Require().NoError(err) + + // check that the query original query was deleted, + // but that a new one was created for the retry + _, found := s.App.InterchainqueryKeeper.GetQuery(s.Ctx, tc.query.Id) + s.Require().False(found, "original query should be removed") + + queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) + s.Require().Len(queries, 1, "there should be one new query") + + // Confirm original query attributes have not changed + actualQuery := queries[0] + s.Require().NotEqual(tc.query.Id, actualQuery.Id, "query ID") + s.Require().Equal(tc.query.QueryType, actualQuery.QueryType, "query type") + s.Require().Equal(tc.query.ConnectionId, actualQuery.ConnectionId, "query connection ID") + s.Require().Equal(tc.query.CallbackModule, actualQuery.CallbackModule, "query callback module") + s.Require().Equal(tc.query.CallbackData, actualQuery.CallbackData, "cquery allback data") + s.Require().Equal(tc.query.TimeoutPolicy, actualQuery.TimeoutPolicy, "query timeout policy") + s.Require().Equal(tc.query.TimeoutDuration, actualQuery.TimeoutDuration, "query timeout duration") + + // Confirm timeout was reset + expectedTimeoutTimestamp := uint64(s.Ctx.BlockTime().Add(tc.query.TimeoutDuration).UnixNano()) + s.Require().Equal(expectedTimeoutTimestamp, actualQuery.TimeoutTimestamp, "timeout timestamp") + s.Require().Equal(false, actualQuery.RequestSent, "request sent") +} + +func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_Timeout_ExecuteCallback() { + tc := s.SetupMsgSubmitQueryResponse() + + // set timeout to be expired and set the policy to retry + tc.query.TimeoutTimestamp = uint64(1) + tc.query.TimeoutPolicy = types.TimeoutPolicy_EXECUTE_QUERY_CALLBACK + s.App.InterchainqueryKeeper.SetQuery(s.Ctx, tc.query) + + // Rather than testing by executing the callback in its entirety, + // check by invoking without the required mocked state and catching + // the error that's thrown at the start of the callback + _, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) + s.Require().ErrorContains(err, "unable to determine balance from query response") } -func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_FindAndInvokeCallback_WrongHostZone() { +func (s *KeeperTestSuite) TestMsgSubmitQueryResponse_FindAndInvokeCallback() { tc := s.SetupMsgSubmitQueryResponse() s.App.InterchainqueryKeeper.SetQuery(s.Ctx, tc.query) - // rather than testing by executing the callback in its entirety, - // check by invoking it without a registered host zone and catching the appropriate error - err := s.App.InterchainqueryKeeper.InvokeCallback(s.Ctx, &tc.validMsg, tc.query) - s.Require().ErrorContains(err, "no registered zone for queried chain ID", "callback was invoked") + // The withdrawal balance test is already covered in it's respective module + // For this test, we just want to check that the callback function is invoked + // To do this, we can just ignore the appropriate withdrawal balance callback + // mocked state, and catch the expected error that happens at the beginning of + // the callback + _, err := s.GetMsgServer().SubmitQueryResponse(tc.goCtx, &tc.validMsg) + s.Require().ErrorContains(err, "unable to determine balance from query response") } // To write this test, we need to write data to Gaia, then get the proof for that data and check it using the LC diff --git a/x/interchainquery/keeper/new_query_test.go b/x/interchainquery/keeper/new_query_test.go deleted file mode 100644 index 71315f6850..0000000000 --- a/x/interchainquery/keeper/new_query_test.go +++ /dev/null @@ -1,80 +0,0 @@ -package keeper_test - -import ( - _ "github.com/stretchr/testify/suite" - - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" -) - -type NewQueryTestCase struct { - module string - callbackId string - chainId string - connectionId string - queryType string - request []byte - ttl uint64 -} - -func (suite *KeeperTestSuite) SetupNewQuery() NewQueryTestCase { - // module is the name of the module invoking the query, used to find the callback upon response - module := "stakeibc" - // callbackId is a string that is used to identify the callback you'd like to execute upon receiving the result of the query - callbackId := "validator" - // chain Id of the target chain you're querying - chainId := "GAIA" - // connectionId of the target chain you're querying - connectionId := "connection-0" - // QueryType is a string that is used to identify the store you'd like to query, as well as whether you'd like a proof returned alongside the result - // use "staking" store to access validator which lives in the staking module - // use "key" suffix to retrieve a proof alongside the query result - queryType := icqtypes.STAKING_STORE_QUERY_WITH_PROOF - // request is a byte array that points to the entry in the target store you'd like to query on the host zone - // e.g. for querying a validator, `data := stakingtypes.GetValidatorKey(valAddr)` - request := []byte{0x01, 0x02, 0x03} - // ttl is the expiry time of the query, in absolute units of time, unix nanos - ttl := uint64(0) // ttl - - return NewQueryTestCase{ - module: module, - callbackId: callbackId, - chainId: chainId, - connectionId: connectionId, - queryType: queryType, - request: request, - ttl: ttl, - } -} - -func (s *KeeperTestSuite) TestNewQuerySuccessful() { - tc := s.SetupNewQuery() - - actualQuery := s.App.InterchainqueryKeeper.NewQuery( - s.Ctx, - tc.module, - tc.callbackId, - tc.chainId, - tc.connectionId, - tc.queryType, - tc.request, - tc.ttl, - ) - - // this hash is testing `GenerateQueryHash`. - // note: the module gets hashed in the `GenerateQueryHash` function, so hashes will be unique to each module - // note: the queryID is a has of (module, callbackId, chainId, connectionId, queryType, and request) - // . meaning for a given query type, the ID will be identical across each epoch - expectedId := "e97f7bdad3c4c521165321f78a8329c54f35db23ee9cec7bddf5c60703ac9ba7" - s.Require().Equal(expectedId, actualQuery.Id) - - // RequestSent should be false - s.Require().False(actualQuery.RequestSent) - - // all other arguments should be the same as the input - s.Require().Equal(tc.connectionId, actualQuery.ConnectionId) - s.Require().Equal(tc.chainId, actualQuery.ChainId) - s.Require().Equal(tc.queryType, actualQuery.QueryType) - s.Require().Equal(tc.request, actualQuery.Request) - s.Require().Equal(tc.callbackId, actualQuery.CallbackId) - s.Require().Equal(tc.ttl, actualQuery.Ttl) -} diff --git a/x/interchainquery/keeper/queries.go b/x/interchainquery/keeper/queries.go index 99082b6bb2..d54d20b63b 100644 --- a/x/interchainquery/keeper/queries.go +++ b/x/interchainquery/keeper/queries.go @@ -1,11 +1,15 @@ package keeper import ( + "encoding/binary" "fmt" + "strings" + "time" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" errorsmod "cosmossdk.io/errors" "github.com/cometbft/cometbft/crypto" @@ -15,21 +19,52 @@ import ( "github.com/Stride-Labs/stride/v13/x/interchainquery/types" ) -func GenerateQueryHash(connectionId string, chainId string, queryType string, request []byte, module string, callbackId string) string { - return fmt.Sprintf("%x", crypto.Sha256(append([]byte(module+connectionId+chainId+queryType+callbackId), request...))) +// Generates a query ID based on the request information +// If forceUnique is false, queries of the same request type will have the same query ID +// (e.g. "query the ATOM balance of address X", will always have the same query ID) +// If forceUnique is true, a unique ID will be used for the query +func (k Keeper) GetQueryId(ctx sdk.Context, query types.Query, forceUnique bool) string { + // If forceUnique is true, grab and append the unique query UID + var queryKey []byte + if forceUnique { + queryKey = k.GetQueryUID(ctx) + } else { + queryKey = append([]byte(query.CallbackModule+query.ConnectionId+query.ChainId+query.QueryType+query.CallbackId), query.RequestData...) + } + return fmt.Sprintf("%x", crypto.Sha256(queryKey)) } -func (k Keeper) NewQuery(ctx sdk.Context, module string, callbackId string, chainId string, connectionId string, queryType string, request []byte, ttl uint64) *types.Query { - return &types.Query{ - Id: GenerateQueryHash(connectionId, chainId, queryType, request, module, callbackId), - ConnectionId: connectionId, - ChainId: chainId, - QueryType: queryType, - Request: request, - CallbackId: callbackId, - Ttl: ttl, - RequestSent: false, +// ValidateQuery validates that all the required attributes of a query are supplied when submitting an ICQ +func (k Keeper) ValidateQuery(ctx sdk.Context, query types.Query) error { + if query.ChainId == "" { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "chain-id cannot be empty") + } + if query.ConnectionId == "" { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "connection-id cannot be empty") + } + if !strings.HasPrefix(query.ConnectionId, connectiontypes.ConnectionPrefix) { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "invalid connection-id (%s)", query.ConnectionId) + } + if query.QueryType == "" { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "query type cannot be empty") + } + if query.CallbackModule == "" { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "callback module must be specified") + } + if query.CallbackId == "" { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "callback-id cannot be empty") + } + if query.TimeoutDuration == time.Duration(0) { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "timeout duration must be set") + } + if _, exists := k.callbacks[query.CallbackModule]; !exists { + return errorsmod.Wrapf(types.ErrInvalidICQRequest, "no callback handler registered for module (%s)", query.CallbackModule) } + if exists := k.callbacks[query.CallbackModule].HasICQCallback(query.CallbackId); !exists { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "callback-id (%s) is not registered for module (%s)", query.CallbackId, query.CallbackModule) + } + + return nil } // GetQuery returns query @@ -57,6 +92,29 @@ func (k Keeper) DeleteQuery(ctx sdk.Context, id string) { store.Delete([]byte(id)) } +// To optionally force queries to be unique, a UID can be supplied when building the query Id +// This is implemented using a counter that increments every time a UID is retrieved +// The uid is returned as a byte array since it's appended to the serialized query key +func (k Keeper) GetQueryUID(ctx sdk.Context) []byte { + store := ctx.KVStore(k.storeKey) + uidBz := store.Get(types.KeyQueryCounter) + + // Initialize the UID if there is nothing in the store yet + if len(uidBz) == 0 { + uidBz = make([]byte, 8) + binary.BigEndian.PutUint64(uidBz, 1) + } + uid := binary.BigEndian.Uint64(uidBz) + + // Increment and store the next UID + nextUidBz := make([]byte, 8) + binary.BigEndian.PutUint64(nextUidBz, uid+1) + store.Set(types.KeyQueryCounter, nextUidBz) + + // Return the serialized uid + return uidBz +} + // IterateQueries iterate through queries func (k Keeper) IterateQueries(ctx sdk.Context, fn func(index int64, queryInfo types.Query) (stop bool)) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefixQuery) diff --git a/x/interchainquery/keeper/queries_test.go b/x/interchainquery/keeper/queries_test.go index 5a62c99dce..a6a7b37213 100644 --- a/x/interchainquery/keeper/queries_test.go +++ b/x/interchainquery/keeper/queries_test.go @@ -1,7 +1,9 @@ package keeper_test import ( + "encoding/binary" "testing" + "time" sdkmath "cosmossdk.io/math" @@ -10,8 +12,221 @@ import ( "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) +func (s *KeeperTestSuite) TestGetQueryId() { + // chain Id of the target chain you're querying + chainId := "GAIA" + // connectionId of the target chain you're querying + connectionId := "connection-0" + // QueryType is a string that is used to identify the store you'd like to query, as well as whether you'd like a proof returned alongside the result + // use "staking" store to access validator which lives in the staking module + // use "key" suffix to retrieve a proof alongside the query result + queryType := types.STAKING_STORE_QUERY_WITH_PROOF + // requestData is a byte array that points to the entry in the target store you'd like to query on the host zone + // e.g. for querying a validator, `data := stakingtypes.GetValidatorKey(valAddr)` + requestData := []byte{0x01, 0x02, 0x03} + // module is the name of the module invoking the query, used to find the callback upon response + module := "stakeibc" + // callbackId is a string that is used to identify the callback you'd like to execute upon receiving the result of the query + callbackId := "validator" + // timeout is the expiry time of the query, in absolute units of time, unix nanos + timeoutTimestamp := uint64(100) // timeout + + // note: the queryID is a has of (module, callbackId, chainId, connectionId, queryType, and request) + // . meaning for a given query type, the ID will be identical across each epoch + expectedQueryId := "e97f7bdad3c4c521165321f78a8329c54f35db23ee9cec7bddf5c60703ac9ba7" + expectedUniqueQueryId := "cd2662154e6d76b2b2b92e70c0cac3ccf534f9b74eb5b89819ec509083d00a50" + + query := types.Query{ + ChainId: chainId, + ConnectionId: connectionId, + QueryType: queryType, + RequestData: requestData, + CallbackModule: module, + CallbackId: callbackId, + TimeoutTimestamp: timeoutTimestamp, + } + + queryId := s.App.InterchainqueryKeeper.GetQueryId(s.Ctx, query, false) + uniqueQueryId := s.App.InterchainqueryKeeper.GetQueryId(s.Ctx, query, true) + + s.Require().Equal(expectedQueryId, queryId, "query ID") + s.Require().Equal(expectedUniqueQueryId, uniqueQueryId, "unique query ID") +} + +func (s *KeeperTestSuite) TestValidateQuery() { + validChainId := "chain-0" + validConnectionId := "connection-0" + validQueryType := "store/key/query" + validTimeout := time.Duration(10) + + s.Ctx = s.Ctx.WithBlockTime(time.Unix(0, 0)) // unix 0 + + // We'll borrow a callback from stakeibc since it's should be already registered in the App + validCallbackModule := stakeibctypes.ModuleName + validCallbackId := stakeibckeeper.ICQCallbackID_Delegation + + testCases := []struct { + name string + query types.Query + expectedError string + }{ + { + name: "valid query", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + }, + { + name: "missing chain id", + query: types.Query{ + ChainId: "", + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + expectedError: "chain-id cannot be empty", + }, + { + name: "missing connection id", + query: types.Query{ + ChainId: validChainId, + ConnectionId: "", + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + expectedError: "connection-id cannot be empty", + }, + { + name: "invalid connection id", + query: types.Query{ + ChainId: validChainId, + ConnectionId: "connection", + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + expectedError: "invalid connection-id (connection)", + }, + { + name: "invalid query type", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: "", + CallbackModule: validCallbackModule, + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + expectedError: "query type cannot be empty", + }, + { + name: "missing callback module", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: "", + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + expectedError: "callback module must be specified", + }, + { + name: "missing callback-id", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: "", + TimeoutDuration: validTimeout, + }, + expectedError: "callback-id cannot be empty", + }, + { + name: "invalid timeout duration", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: validCallbackId, + TimeoutDuration: time.Duration(0), + }, + expectedError: "timeout duration must be set", + }, + { + name: "module not registered", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: "fake-module", + CallbackId: validCallbackId, + TimeoutDuration: validTimeout, + }, + expectedError: "no callback handler registered for module (fake-module)", + }, + { + name: "callback not registered", + query: types.Query{ + ChainId: validChainId, + ConnectionId: validConnectionId, + QueryType: validQueryType, + CallbackModule: validCallbackModule, + CallbackId: "fake-callback", + TimeoutDuration: validTimeout, + }, + expectedError: "callback-id (fake-callback) is not registered for module (stakeibc)", + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + actualError := s.App.InterchainqueryKeeper.ValidateQuery(s.Ctx, tc.query) + if tc.expectedError == "" { + s.Require().NoError(actualError) + } else { + s.Require().ErrorContains(actualError, tc.expectedError) + } + }) + } +} + +func (s *KeeperTestSuite) GetQueryUID() { + // Helper function to get the next uid + getUniqueSuffix := func() int { + return int(binary.BigEndian.Uint64(s.App.InterchainqueryKeeper.GetQueryUID(s.Ctx))) + } + + // Grabbing the uid for the first time should return 1 + s.Require().Equal(1, getUniqueSuffix()) + + // Grabbing it a second time should return 2 + s.Require().Equal(2, getUniqueSuffix()) + + // call it 1000 more times + var suffix int + for i := 0; i < 1000; i++ { + suffix = getUniqueSuffix() + } + s.Require().Equal(1002, suffix) +} + func TestUnmarshalAmountFromBalanceQuery(t *testing.T) { type InputType int64 const ( diff --git a/x/interchainquery/types/error.go b/x/interchainquery/types/error.go index 845943b2ef..c4780f68b8 100644 --- a/x/interchainquery/types/error.go +++ b/x/interchainquery/types/error.go @@ -8,4 +8,6 @@ var ( ErrInvalidICQProof = errors.New("icq query response failed") ErrICQCallbackNotFound = errors.New("icq callback id not found") ErrInvalidConsensusState = errors.New("invalid consensus state") + ErrInvalidICQRequest = errors.New("invalid interchain query request") + ErrFailedToRetryQuery = errors.New("failed to retry query") ) diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index 5d3333949d..5174f9066e 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -9,15 +9,19 @@ import ( github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" + _ "github.com/cosmos/gogoproto/types" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" io "io" math "math" math_bits "math/bits" + time "time" ) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +var _ = time.Kitchen // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. @@ -25,15 +29,48 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type TimeoutPolicy int32 + +const ( + TimeoutPolicy_REJECT_QUERY_RESPONSE TimeoutPolicy = 0 + TimeoutPolicy_RETRY_QUERY_REQUEST TimeoutPolicy = 1 + TimeoutPolicy_EXECUTE_QUERY_CALLBACK TimeoutPolicy = 2 +) + +var TimeoutPolicy_name = map[int32]string{ + 0: "REJECT_QUERY_RESPONSE", + 1: "RETRY_QUERY_REQUEST", + 2: "EXECUTE_QUERY_CALLBACK", +} + +var TimeoutPolicy_value = map[string]int32{ + "REJECT_QUERY_RESPONSE": 0, + "RETRY_QUERY_REQUEST": 1, + "EXECUTE_QUERY_CALLBACK": 2, +} + +func (x TimeoutPolicy) String() string { + return proto.EnumName(TimeoutPolicy_name, int32(x)) +} + +func (TimeoutPolicy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_74cd646eb05658fd, []int{0} +} + type Query struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` - ChainId string `protobuf:"bytes,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - QueryType string `protobuf:"bytes,4,opt,name=query_type,json=queryType,proto3" json:"query_type,omitempty"` - Request []byte `protobuf:"bytes,5,opt,name=request,proto3" json:"request,omitempty"` - CallbackId string `protobuf:"bytes,8,opt,name=callback_id,json=callbackId,proto3" json:"callback_id,omitempty"` - Ttl uint64 `protobuf:"varint,9,opt,name=ttl,proto3" json:"ttl,omitempty"` - RequestSent bool `protobuf:"varint,11,opt,name=request_sent,json=requestSent,proto3" json:"request_sent,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + ChainId string `protobuf:"bytes,3,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + QueryType string `protobuf:"bytes,4,opt,name=query_type,json=queryType,proto3" json:"query_type,omitempty"` + RequestData []byte `protobuf:"bytes,5,opt,name=request_data,json=requestData,proto3" json:"request_data,omitempty"` + CallbackModule string `protobuf:"bytes,13,opt,name=callback_module,json=callbackModule,proto3" json:"callback_module,omitempty"` + CallbackId string `protobuf:"bytes,8,opt,name=callback_id,json=callbackId,proto3" json:"callback_id,omitempty"` + CallbackData []byte `protobuf:"bytes,12,opt,name=callback_data,json=callbackData,proto3" json:"callback_data,omitempty"` + TimeoutPolicy TimeoutPolicy `protobuf:"varint,15,opt,name=timeout_policy,json=timeoutPolicy,proto3,enum=stride.interchainquery.v1.TimeoutPolicy" json:"timeout_policy,omitempty"` + TimeoutDuration time.Duration `protobuf:"bytes,14,opt,name=timeout_duration,json=timeoutDuration,proto3,stdduration" json:"timeout_duration"` + TimeoutTimestamp uint64 `protobuf:"varint,9,opt,name=timeout_timestamp,json=timeoutTimestamp,proto3" json:"timeout_timestamp,omitempty"` + RequestSent bool `protobuf:"varint,11,opt,name=request_sent,json=requestSent,proto3" json:"request_sent,omitempty"` + SubmissionHeight uint64 `protobuf:"varint,16,opt,name=submission_height,json=submissionHeight,proto3" json:"submission_height,omitempty"` } func (m *Query) Reset() { *m = Query{} } @@ -97,13 +134,20 @@ func (m *Query) GetQueryType() string { return "" } -func (m *Query) GetRequest() []byte { +func (m *Query) GetRequestData() []byte { if m != nil { - return m.Request + return m.RequestData } return nil } +func (m *Query) GetCallbackModule() string { + if m != nil { + return m.CallbackModule + } + return "" +} + func (m *Query) GetCallbackId() string { if m != nil { return m.CallbackId @@ -111,9 +155,30 @@ func (m *Query) GetCallbackId() string { return "" } -func (m *Query) GetTtl() uint64 { +func (m *Query) GetCallbackData() []byte { + if m != nil { + return m.CallbackData + } + return nil +} + +func (m *Query) GetTimeoutPolicy() TimeoutPolicy { if m != nil { - return m.Ttl + return m.TimeoutPolicy + } + return TimeoutPolicy_REJECT_QUERY_RESPONSE +} + +func (m *Query) GetTimeoutDuration() time.Duration { + if m != nil { + return m.TimeoutDuration + } + return 0 +} + +func (m *Query) GetTimeoutTimestamp() uint64 { + if m != nil { + return m.TimeoutTimestamp } return 0 } @@ -125,6 +190,13 @@ func (m *Query) GetRequestSent() bool { return false } +func (m *Query) GetSubmissionHeight() uint64 { + if m != nil { + return m.SubmissionHeight + } + return 0 +} + type DataPoint struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` RemoteHeight github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=remote_height,json=remoteHeight,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"remote_height"` @@ -225,6 +297,7 @@ func (m *GenesisState) GetQueries() []Query { } func init() { + proto.RegisterEnum("stride.interchainquery.v1.TimeoutPolicy", TimeoutPolicy_name, TimeoutPolicy_value) proto.RegisterType((*Query)(nil), "stride.interchainquery.v1.Query") proto.RegisterType((*DataPoint)(nil), "stride.interchainquery.v1.DataPoint") proto.RegisterType((*GenesisState)(nil), "stride.interchainquery.v1.GenesisState") @@ -235,38 +308,52 @@ func init() { } var fileDescriptor_74cd646eb05658fd = []byte{ - // 492 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x52, 0x41, 0x8b, 0xd3, 0x40, - 0x14, 0xee, 0xb4, 0x5b, 0xdb, 0x4e, 0xb3, 0xb2, 0x0c, 0x7b, 0x48, 0x17, 0x4c, 0x63, 0x05, 0x2d, - 0x62, 0x13, 0xea, 0x9e, 0x04, 0x0f, 0x52, 0x04, 0x0d, 0x78, 0x58, 0x53, 0x4f, 0x5e, 0xc2, 0x34, - 0x19, 0xd2, 0x61, 0x93, 0x99, 0x6e, 0xe6, 0xa5, 0xd8, 0xdf, 0xe0, 0xc5, 0x1f, 0xe3, 0x8f, 0xd8, - 0xe3, 0xe2, 0x49, 0x3c, 0x14, 0x69, 0xc1, 0x83, 0xbf, 0x42, 0x32, 0x93, 0xa2, 0xb8, 0x78, 0xf3, - 0x94, 0x79, 0xef, 0x7b, 0xef, 0x7b, 0xef, 0x7b, 0xf9, 0xf0, 0x23, 0x05, 0x05, 0x4f, 0x98, 0xcf, - 0x05, 0xb0, 0x22, 0x5e, 0x52, 0x2e, 0xae, 0x4a, 0x56, 0x6c, 0xfc, 0xf5, 0xd4, 0x4f, 0x99, 0x60, - 0x8a, 0x2b, 0x6f, 0x55, 0x48, 0x90, 0x64, 0x60, 0x0a, 0xbd, 0xbf, 0x0a, 0xbd, 0xf5, 0xf4, 0xec, - 0x34, 0x95, 0xa9, 0xd4, 0x55, 0x7e, 0xf5, 0x32, 0x0d, 0x67, 0x83, 0x58, 0xaa, 0x5c, 0xaa, 0xc8, - 0x00, 0x26, 0x30, 0xd0, 0xe8, 0x07, 0xc2, 0xed, 0xb7, 0x55, 0x37, 0xb9, 0x8b, 0x9b, 0x3c, 0xb1, - 0x91, 0x8b, 0xc6, 0xbd, 0xb0, 0xc9, 0x13, 0xf2, 0x00, 0x1f, 0xc7, 0x52, 0x08, 0x16, 0x03, 0x97, - 0x22, 0xe2, 0x89, 0xdd, 0xd4, 0x90, 0xf5, 0x3b, 0x19, 0x24, 0x64, 0x80, 0xbb, 0x7a, 0x81, 0x0a, - 0x6f, 0x69, 0xbc, 0xa3, 0xe3, 0x20, 0x21, 0xf7, 0x30, 0xd6, 0x6b, 0x45, 0xb0, 0x59, 0x31, 0xfb, - 0x48, 0x83, 0x3d, 0x9d, 0x79, 0xb7, 0x59, 0x31, 0x62, 0xe3, 0x4e, 0xc1, 0xae, 0x4a, 0xa6, 0xc0, - 0x6e, 0xbb, 0x68, 0x6c, 0x85, 0x87, 0x90, 0x0c, 0x71, 0x3f, 0xa6, 0x59, 0xb6, 0xa0, 0xf1, 0x65, - 0x45, 0xdb, 0xd5, 0x9d, 0xf8, 0x90, 0x0a, 0x12, 0x72, 0x82, 0x5b, 0x00, 0x99, 0xdd, 0x73, 0xd1, - 0xf8, 0x28, 0xac, 0x9e, 0xe4, 0x3e, 0xb6, 0xea, 0xee, 0x48, 0x31, 0x01, 0x76, 0xdf, 0x45, 0xe3, - 0x6e, 0xd8, 0xaf, 0x73, 0x73, 0x26, 0x60, 0xf4, 0xb1, 0x89, 0x7b, 0x2f, 0x29, 0xd0, 0x0b, 0xc9, - 0x05, 0xdc, 0x12, 0x4b, 0xf1, 0x71, 0xc1, 0x72, 0x09, 0x2c, 0x5a, 0x32, 0x9e, 0x2e, 0xc1, 0x88, - 0x9d, 0x3d, 0xbf, 0xde, 0x0e, 0x1b, 0xdf, 0xb6, 0xc3, 0x87, 0x29, 0x87, 0x65, 0xb9, 0xf0, 0x62, - 0x99, 0xd7, 0xe7, 0xab, 0x3f, 0x13, 0x95, 0x5c, 0xfa, 0x95, 0x40, 0xe5, 0x05, 0x02, 0xbe, 0x7c, - 0x9e, 0xe0, 0xfa, 0xba, 0x81, 0x80, 0xd0, 0x32, 0x94, 0xaf, 0x35, 0x23, 0x89, 0xb0, 0x95, 0xc9, - 0x98, 0x66, 0x87, 0x09, 0xad, 0xff, 0x30, 0xa1, 0xaf, 0x19, 0xeb, 0x01, 0x8f, 0x71, 0x7b, 0x4d, - 0xb3, 0xd2, 0xdc, 0xda, 0x9a, 0x9d, 0xfe, 0xdc, 0x0e, 0x4f, 0x0a, 0xa6, 0xca, 0x0c, 0x9e, 0xc8, - 0x9c, 0x03, 0xcb, 0x57, 0xb0, 0x09, 0x4d, 0xc9, 0xe8, 0x02, 0x5b, 0xaf, 0x8c, 0xa7, 0xe6, 0x40, - 0x81, 0x91, 0x17, 0xb8, 0x53, 0xfd, 0x1a, 0xce, 0x94, 0x8d, 0xdc, 0xd6, 0xb8, 0xff, 0xd4, 0xf5, - 0xfe, 0x69, 0x32, 0x4f, 0xfb, 0x65, 0x76, 0x54, 0x6d, 0x1e, 0x1e, 0xda, 0x66, 0xf3, 0xeb, 0x9d, - 0x83, 0x6e, 0x76, 0x0e, 0xfa, 0xbe, 0x73, 0xd0, 0xa7, 0xbd, 0xd3, 0xb8, 0xd9, 0x3b, 0x8d, 0xaf, - 0x7b, 0xa7, 0xf1, 0xfe, 0xd9, 0x1f, 0xd2, 0xe6, 0x9a, 0x74, 0xf2, 0x86, 0x2e, 0x94, 0x5f, 0xdb, - 0x7d, 0x3d, 0x3d, 0xf7, 0x3f, 0xdc, 0x32, 0xbd, 0x56, 0xbc, 0xb8, 0xa3, 0x4d, 0x7a, 0xfe, 0x2b, - 0x00, 0x00, 0xff, 0xff, 0x7a, 0xe6, 0x63, 0x5a, 0x1b, 0x03, 0x00, 0x00, + // 716 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, + 0x10, 0x8e, 0xd3, 0xf4, 0x6f, 0xb2, 0x71, 0xd2, 0xfc, 0x4b, 0x01, 0xa7, 0x12, 0x89, 0x29, 0x12, + 0xb5, 0x0a, 0xb5, 0xd5, 0xf6, 0x84, 0xc4, 0x81, 0x26, 0xb5, 0x20, 0x50, 0xda, 0xd4, 0x49, 0x25, + 0xca, 0xc5, 0x72, 0xec, 0x25, 0x59, 0xd5, 0xf6, 0xa6, 0xde, 0x75, 0x44, 0x9e, 0x81, 0x0b, 0x47, + 0x9e, 0x80, 0x27, 0xe0, 0x21, 0x7a, 0xac, 0x38, 0x21, 0x0e, 0x05, 0xb5, 0x37, 0x9e, 0x02, 0x79, + 0xed, 0x6d, 0x0b, 0x15, 0x9c, 0x38, 0xd9, 0x3b, 0xdf, 0x37, 0xdf, 0x8c, 0x67, 0x3e, 0x2f, 0x58, + 0xa6, 0x2c, 0xc2, 0x1e, 0x32, 0x70, 0xc8, 0x50, 0xe4, 0x8e, 0x1c, 0x1c, 0x1e, 0xc5, 0x28, 0x9a, + 0x1a, 0x93, 0x35, 0x63, 0x88, 0x42, 0x44, 0x31, 0xd5, 0xc7, 0x11, 0x61, 0x04, 0xd6, 0x53, 0xa2, + 0xfe, 0x1b, 0x51, 0x9f, 0xac, 0x2d, 0x2e, 0x0c, 0xc9, 0x90, 0x70, 0x96, 0x91, 0xbc, 0xa5, 0x09, + 0x8b, 0x8d, 0x21, 0x21, 0x43, 0x1f, 0x19, 0xfc, 0x34, 0x88, 0xdf, 0x18, 0x5e, 0x1c, 0x39, 0x0c, + 0x93, 0x30, 0xc3, 0xeb, 0x2e, 0xa1, 0x01, 0xa1, 0x76, 0x9a, 0x98, 0x1e, 0x52, 0x68, 0xe9, 0x63, + 0x01, 0xcc, 0xee, 0x25, 0xea, 0xb0, 0x0a, 0xf2, 0xd8, 0x53, 0x24, 0x55, 0xd2, 0x4a, 0x56, 0x1e, + 0x7b, 0xf0, 0x1e, 0xa8, 0xb8, 0x24, 0x0c, 0x91, 0x9b, 0x08, 0xd9, 0xd8, 0x53, 0xf2, 0x1c, 0x92, + 0x2f, 0x83, 0x1d, 0x0f, 0xd6, 0x41, 0x91, 0x37, 0x98, 0xe0, 0x33, 0x1c, 0x9f, 0xe3, 0xe7, 0x8e, + 0x07, 0xef, 0x00, 0xc0, 0xdb, 0xb6, 0xd9, 0x74, 0x8c, 0x94, 0x02, 0x07, 0x4b, 0x3c, 0xd2, 0x9f, + 0x8e, 0x11, 0xbc, 0x0b, 0xe4, 0x08, 0x1d, 0xc5, 0x88, 0x32, 0xdb, 0x73, 0x98, 0xa3, 0xcc, 0xaa, + 0x92, 0x26, 0x5b, 0xe5, 0x2c, 0xb6, 0xe5, 0x30, 0x07, 0x2e, 0x83, 0x79, 0xd7, 0xf1, 0xfd, 0x81, + 0xe3, 0x1e, 0xda, 0x01, 0xf1, 0x62, 0x1f, 0x29, 0x15, 0x2e, 0x53, 0x15, 0xe1, 0x97, 0x3c, 0x0a, + 0x9b, 0xa0, 0x7c, 0x41, 0xc4, 0x9e, 0x52, 0xe4, 0x24, 0x20, 0x42, 0x9d, 0xf4, 0x5b, 0x04, 0x81, + 0x57, 0x93, 0x79, 0x35, 0x59, 0x04, 0x79, 0xb9, 0x5d, 0x50, 0x65, 0x38, 0x40, 0x24, 0x66, 0xf6, + 0x98, 0xf8, 0xd8, 0x9d, 0x2a, 0xf3, 0xaa, 0xa4, 0x55, 0xd7, 0x35, 0xfd, 0x8f, 0xfb, 0xd0, 0xfb, + 0x69, 0x42, 0x97, 0xf3, 0xad, 0x0a, 0xbb, 0x7a, 0x84, 0x3b, 0xa0, 0x26, 0x04, 0xc5, 0x42, 0x94, + 0xaa, 0x2a, 0x69, 0xe5, 0xf5, 0xba, 0x9e, 0x6e, 0x4c, 0x17, 0x1b, 0xd3, 0xb7, 0x32, 0x42, 0xab, + 0x78, 0x7c, 0xda, 0xcc, 0x7d, 0xf8, 0xd6, 0x94, 0xac, 0xf9, 0x2c, 0x59, 0x40, 0xf0, 0x01, 0xf8, + 0x5f, 0xe8, 0x25, 0x4f, 0xca, 0x9c, 0x60, 0xac, 0x94, 0x54, 0x49, 0x2b, 0x58, 0xa2, 0x50, 0x5f, + 0xc4, 0xaf, 0xce, 0x97, 0xa2, 0x90, 0x29, 0x65, 0x55, 0xd2, 0x8a, 0x17, 0xf3, 0xed, 0xa1, 0x90, + 0x25, 0x7a, 0x34, 0x1e, 0x04, 0x98, 0xd2, 0x64, 0xc3, 0x23, 0x84, 0x87, 0x23, 0xa6, 0xd4, 0x52, + 0xbd, 0x4b, 0xe0, 0x19, 0x8f, 0x2f, 0xbd, 0xcb, 0x83, 0x52, 0x32, 0xa6, 0x2e, 0xc1, 0x21, 0xbb, + 0x66, 0x16, 0x07, 0x54, 0x22, 0x14, 0x10, 0x86, 0x84, 0x0c, 0x37, 0x4b, 0xeb, 0x71, 0xf2, 0x31, + 0x5f, 0x4f, 0x9b, 0xf7, 0x87, 0x98, 0x8d, 0xe2, 0x81, 0xee, 0x92, 0x20, 0xb3, 0x5f, 0xf6, 0x58, + 0xa5, 0xde, 0xa1, 0x91, 0x18, 0x84, 0xea, 0x9d, 0x90, 0x7d, 0xfe, 0xb4, 0x0a, 0x32, 0x77, 0x76, + 0x42, 0x66, 0xc9, 0xa9, 0x64, 0xda, 0x00, 0xb4, 0x81, 0xec, 0x13, 0xd7, 0xf1, 0x45, 0x85, 0x99, + 0x7f, 0x50, 0xa1, 0xcc, 0x15, 0xb3, 0x02, 0x2b, 0x60, 0x76, 0xe2, 0xf8, 0x71, 0xea, 0x55, 0xb9, + 0xb5, 0xf0, 0xe3, 0xb4, 0x59, 0x8b, 0x10, 0x8d, 0x7d, 0xf6, 0x90, 0x04, 0x98, 0xa1, 0x60, 0xcc, + 0xa6, 0x56, 0x4a, 0x59, 0xea, 0x02, 0xf9, 0x69, 0xfa, 0xcf, 0xf6, 0x98, 0xc3, 0x10, 0x7c, 0x02, + 0xe6, 0x12, 0x4f, 0x60, 0x44, 0x15, 0x49, 0x9d, 0xd1, 0xca, 0xeb, 0xea, 0x5f, 0x4c, 0xc3, 0xff, + 0xb7, 0x56, 0x21, 0xe9, 0xdc, 0x12, 0x69, 0x2b, 0x36, 0xa8, 0xfc, 0x62, 0x26, 0x58, 0x07, 0x37, + 0x2d, 0xf3, 0xb9, 0xd9, 0xee, 0xdb, 0x7b, 0xfb, 0xa6, 0x75, 0x60, 0x5b, 0x66, 0xaf, 0xbb, 0xbb, + 0xd3, 0x33, 0x6b, 0x39, 0x78, 0x1b, 0xdc, 0xb0, 0xcc, 0xbe, 0x75, 0x70, 0x81, 0xec, 0xed, 0x9b, + 0xbd, 0x7e, 0x4d, 0x82, 0x8b, 0xe0, 0x96, 0xf9, 0xca, 0x6c, 0xef, 0xf7, 0xcd, 0x0c, 0x6a, 0x6f, + 0x6e, 0x6f, 0xb7, 0x36, 0xdb, 0x2f, 0x6a, 0xf9, 0x56, 0xef, 0xf8, 0xac, 0x21, 0x9d, 0x9c, 0x35, + 0xa4, 0xef, 0x67, 0x0d, 0xe9, 0xfd, 0x79, 0x23, 0x77, 0x72, 0xde, 0xc8, 0x7d, 0x39, 0x6f, 0xe4, + 0x5e, 0x3f, 0xba, 0x32, 0xbb, 0x1e, 0xef, 0x7a, 0x75, 0xdb, 0x19, 0x50, 0x23, 0xbb, 0xaf, 0x26, + 0x6b, 0x1b, 0xc6, 0xdb, 0x6b, 0xb7, 0x16, 0x1f, 0xe9, 0xe0, 0x3f, 0x6e, 0xe0, 0x8d, 0x9f, 0x01, + 0x00, 0x00, 0xff, 0xff, 0xf2, 0x96, 0x0c, 0x51, 0xdc, 0x04, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { @@ -289,6 +376,40 @@ func (m *Query) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.SubmissionHeight != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.SubmissionHeight)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 + } + if m.TimeoutPolicy != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.TimeoutPolicy)) + i-- + dAtA[i] = 0x78 + } + n1, err1 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(m.TimeoutDuration, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.TimeoutDuration):]) + if err1 != nil { + return 0, err1 + } + i -= n1 + i = encodeVarintGenesis(dAtA, i, uint64(n1)) + i-- + dAtA[i] = 0x72 + if len(m.CallbackModule) > 0 { + i -= len(m.CallbackModule) + copy(dAtA[i:], m.CallbackModule) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.CallbackModule))) + i-- + dAtA[i] = 0x6a + } + if len(m.CallbackData) > 0 { + i -= len(m.CallbackData) + copy(dAtA[i:], m.CallbackData) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.CallbackData))) + i-- + dAtA[i] = 0x62 + } if m.RequestSent { i-- if m.RequestSent { @@ -299,8 +420,8 @@ func (m *Query) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x58 } - if m.Ttl != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Ttl)) + if m.TimeoutTimestamp != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.TimeoutTimestamp)) i-- dAtA[i] = 0x48 } @@ -311,10 +432,10 @@ func (m *Query) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - if len(m.Request) > 0 { - i -= len(m.Request) - copy(dAtA[i:], m.Request) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Request))) + if len(m.RequestData) > 0 { + i -= len(m.RequestData) + copy(dAtA[i:], m.RequestData) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.RequestData))) i-- dAtA[i] = 0x2a } @@ -476,7 +597,7 @@ func (m *Query) Size() (n int) { if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - l = len(m.Request) + l = len(m.RequestData) if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } @@ -484,12 +605,28 @@ func (m *Query) Size() (n int) { if l > 0 { n += 1 + l + sovGenesis(uint64(l)) } - if m.Ttl != 0 { - n += 1 + sovGenesis(uint64(m.Ttl)) + if m.TimeoutTimestamp != 0 { + n += 1 + sovGenesis(uint64(m.TimeoutTimestamp)) } if m.RequestSent { n += 2 } + l = len(m.CallbackData) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = len(m.CallbackModule) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(m.TimeoutDuration) + n += 1 + l + sovGenesis(uint64(l)) + if m.TimeoutPolicy != 0 { + n += 1 + sovGenesis(uint64(m.TimeoutPolicy)) + } + if m.SubmissionHeight != 0 { + n += 2 + sovGenesis(uint64(m.SubmissionHeight)) + } return n } @@ -694,7 +831,7 @@ func (m *Query) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RequestData", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -721,9 +858,9 @@ func (m *Query) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Request = append(m.Request[:0], dAtA[iNdEx:postIndex]...) - if m.Request == nil { - m.Request = []byte{} + m.RequestData = append(m.RequestData[:0], dAtA[iNdEx:postIndex]...) + if m.RequestData == nil { + m.RequestData = []byte{} } iNdEx = postIndex case 8: @@ -760,9 +897,9 @@ func (m *Query) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 9: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Ttl", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutTimestamp", wireType) } - m.Ttl = 0 + m.TimeoutTimestamp = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenesis @@ -772,7 +909,7 @@ func (m *Query) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Ttl |= uint64(b&0x7F) << shift + m.TimeoutTimestamp |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -797,6 +934,143 @@ func (m *Query) Unmarshal(dAtA []byte) error { } } m.RequestSent = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CallbackData", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CallbackData = append(m.CallbackData[:0], dAtA[iNdEx:postIndex]...) + if m.CallbackData == nil { + m.CallbackData = []byte{} + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CallbackModule", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + 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 ErrInvalidLengthGenesis + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CallbackModule = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutDuration", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(&m.TimeoutDuration, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeoutPolicy", wireType) + } + m.TimeoutPolicy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TimeoutPolicy |= TimeoutPolicy(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SubmissionHeight", wireType) + } + m.SubmissionHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SubmissionHeight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/interchainquery/types/keys.go b/x/interchainquery/types/keys.go index 4c43e4cc26..21117a0623 100644 --- a/x/interchainquery/types/keys.go +++ b/x/interchainquery/types/keys.go @@ -16,8 +16,9 @@ const ( // prefix bytes for the interchainquery persistent store const ( - prefixData = iota + 1 - prefixQuery = iota + 1 + prefixData = iota + 1 + prefixQuery = iota + 1 + prefixQueryCounter = iota + 1 ) // keys for proof queries to various stores, note: there's an implicit assumption here that @@ -33,8 +34,9 @@ const ( ) var ( - KeyPrefixData = []byte{prefixData} - KeyPrefixQuery = []byte{prefixQuery} + KeyPrefixData = []byte{prefixData} + KeyPrefixQuery = []byte{prefixQuery} + KeyQueryCounter = []byte{prefixQueryCounter} ) func KeyPrefix(p string) []byte { diff --git a/x/interchainquery/types/query.go b/x/interchainquery/types/query.go new file mode 100644 index 0000000000..eb9e49b80f --- /dev/null +++ b/x/interchainquery/types/query.go @@ -0,0 +1,18 @@ +package types + +import ( + fmt "fmt" + time "time" +) + +// Check if a query has timed-out by checking whether the block time is after +// the timeout timestamp +func (q Query) HasTimedOut(currentBlockTime time.Time) bool { + return q.TimeoutTimestamp < uint64(currentBlockTime.UnixNano()) +} + +// Prints an abbreviated query description for logging purposes +func (q Query) Description() string { + return fmt.Sprintf("QueryId: %s, QueryType: %s, ConnectionId: %s, QueryRequest: %v", + q.Id, q.QueryType, q.ConnectionId, q.RequestData) +} diff --git a/x/records/client/cli/query.go b/x/records/client/cli/query.go index 798b8bdfc5..b9114d611e 100644 --- a/x/records/client/cli/query.go +++ b/x/records/client/cli/query.go @@ -32,7 +32,8 @@ func GetQueryCmd(queryRoute string) *cobra.Command { cmd.AddCommand(CmdListDepositRecord()) cmd.AddCommand(CmdShowDepositRecord()) cmd.AddCommand(CmdListDepositRecordByHost()) - // this line is used by starport scaffolding # 1 + cmd.AddCommand(CmdLSMDeposit()) + cmd.AddCommand(CmdLSMDeposits()) return cmd } diff --git a/x/records/client/cli/query_lsm_deposits.go b/x/records/client/cli/query_lsm_deposits.go new file mode 100644 index 0000000000..9fcd40cd6a --- /dev/null +++ b/x/records/client/cli/query_lsm_deposits.go @@ -0,0 +1,93 @@ +package cli + +import ( + "context" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +const ( + FlagHostChainId = "host-chain-id" + FlagValidatorAddress = "validator" + FlagStatus = "status" +) + +func CmdLSMDeposit() *cobra.Command { + cmd := &cobra.Command{ + Use: "lsm-deposit [chain-id] [denom]", + Short: "shows an LSM deposit matching given denom and chain-id", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + chainId := args[0] + denom := args[1] + + params := &types.QueryLSMDepositRequest{ChainId: chainId, Denom: denom} + res, err := queryClient.LSMDeposit(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} + +func CmdLSMDeposits() *cobra.Command { + cmd := &cobra.Command{ + Use: "lsm-deposits", + Short: "shows all lsm-deposits matching optional filters", + Long: `Shows all LSM deposits with optional filters +Examples: + $ lsm-deposits + $ lsm-deposits --host-chain-id=[chain-id] + $ lsm-deposits --host-chain-id=[chain-id] validator=[validator-address] + $ lsm-deposits --host-chain-id=[chain-id] --status=[status] +`, + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + chainId, err := cmd.Flags().GetString(FlagHostChainId) + if err != nil { + return err + } + validatorAddress, err := cmd.Flags().GetString(FlagValidatorAddress) + if err != nil { + return err + } + status, err := cmd.Flags().GetString(FlagStatus) + if err != nil { + return err + } + + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + params := &types.QueryLSMDepositsRequest{ChainId: chainId, ValidatorAddress: validatorAddress, Status: status} + res, err := queryClient.LSMDeposits(context.Background(), params) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + cmd.Flags().String(FlagHostChainId, "", "The chainId for host zone") + cmd.Flags().String(FlagValidatorAddress, "", "The validator address") + cmd.Flags().String(FlagStatus, "", "The status") + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/records/genesis.go b/x/records/genesis.go index 72a543a30b..eaa84469fc 100644 --- a/x/records/genesis.go +++ b/x/records/genesis.go @@ -30,6 +30,11 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) // Set depositRecord count k.SetDepositRecordCount(ctx, genState.DepositRecordCount) + + // Set all lsm deposit records + for _, elem := range genState.LsmTokenDepositList { + k.SetLSMTokenDeposit(ctx, elem) + } } // ExportGenesis returns the capability module's exported genesis. @@ -41,7 +46,7 @@ func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { genesis.UserRedemptionRecordList = k.GetAllUserRedemptionRecord(ctx) genesis.EpochUnbondingRecordList = k.GetAllEpochUnbondingRecord(ctx) - // this line is used by starport scaffolding # genesis/module/export + genesis.LsmTokenDepositList = k.GetAllLSMTokenDeposit(ctx) return genesis } diff --git a/x/records/genesis_test.go b/x/records/genesis_test.go index 0e7e0910b1..f3c8f509b5 100644 --- a/x/records/genesis_test.go +++ b/x/records/genesis_test.go @@ -42,6 +42,18 @@ func TestGenesis(t *testing.T) { }, }, DepositRecordCount: 2, + LsmTokenDepositList: []types.LSMTokenDeposit{ + { + DepositId: "ID1", + ChainId: "chain-1", + Denom: "denom1", + }, + { + DepositId: "ID2", + ChainId: "chain-2", + Denom: "denom2", + }, + }, } k, ctx := keepertest.RecordsKeeper(t) records.InitGenesis(ctx, *k, genesisState) @@ -55,5 +67,6 @@ func TestGenesis(t *testing.T) { require.ElementsMatch(t, genesisState.DepositRecordList, got.DepositRecordList) require.Equal(t, genesisState.DepositRecordCount, got.DepositRecordCount) + require.ElementsMatch(t, genesisState.LsmTokenDepositList, got.LsmTokenDepositList) // this line is used by starport scaffolding # genesis/test/assert } diff --git a/x/records/keeper/callback_lsm_transfer.go b/x/records/keeper/callback_lsm_transfer.go new file mode 100644 index 0000000000..c61d89e999 --- /dev/null +++ b/x/records/keeper/callback_lsm_transfer.go @@ -0,0 +1,55 @@ +package keeper + +import ( + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/records/types" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + "github.com/golang/protobuf/proto" //nolint:staticcheck +) + +// Callback after an LSM token is IBC tranferred to the host zone +// +// If successful: mark the LSM Token status as DETOKENIZATION_QUEUE +// If failure: mark the LSM Token status as FAILED +// If timeout: revert the LSM Token status back to TRANSFER_QUEUE so it gets resubmitted +func (k Keeper) LSMTransferCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { + // Fetch callback args + transferCallback := types.TransferLSMTokenCallback{} + if err := proto.Unmarshal(args, &transferCallback); err != nil { + return errorsmod.Wrapf(types.ErrUnmarshalFailure, "unable to unmarshal LSM transfer callback: %s", err.Error()) + } + deposit := *transferCallback.Deposit + chainId := deposit.ChainId + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, IBCCallbacksID_LSMTransfer, "Starting LSM transfer callback")) + + // If timeout, update the status to TRANSFER_QUEUE so that it gets resubmitted + if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, IBCCallbacksID_LSMTransfer, + icacallbackstypes.AckResponseStatus_TIMEOUT, packet)) + k.Logger(ctx).Error(utils.LogICACallbackWithHostZone(chainId, IBCCallbacksID_LSMTransfer, "Retrying transfer")) + + k.UpdateLSMTokenDepositStatus(ctx, deposit, types.LSMTokenDeposit_TRANSFER_QUEUE) + return nil + } + + // If the transfer failed, update the status to FAILED + if ackResponse.Status == icacallbackstypes.AckResponseStatus_FAILURE { + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, IBCCallbacksID_LSMTransfer, + icacallbackstypes.AckResponseStatus_FAILURE, packet)) + + k.UpdateLSMTokenDepositStatus(ctx, deposit, types.LSMTokenDeposit_TRANSFER_FAILED) + return nil + } + + // If the transfer was successful, update the status to DETOKENIZATION_QUEUE + k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, IBCCallbacksID_LSMTransfer, + icacallbackstypes.AckResponseStatus_SUCCESS, packet)) + + k.UpdateLSMTokenDepositStatus(ctx, deposit, types.LSMTokenDeposit_DETOKENIZATION_QUEUE) + + return nil +} diff --git a/x/records/keeper/callback_lsm_transfer_test.go b/x/records/keeper/callback_lsm_transfer_test.go new file mode 100644 index 0000000000..5172acd84f --- /dev/null +++ b/x/records/keeper/callback_lsm_transfer_test.go @@ -0,0 +1,102 @@ +package keeper_test + +import ( + _ "github.com/stretchr/testify/suite" + + "github.com/cosmos/gogoproto/proto" + + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +var ( + LSMTokenDenom = "cosmosvaloperxxx/42" +) + +func (s *KeeperTestSuite) SetupLSMTransferCallback() []byte { + // we need a valid ibc denom here or the transfer will fail + prefixedDenom := transfertypes.GetPrefixedDenom(transfertypes.PortID, ibctesting.FirstChannelID, LSMTokenDenom) + denomTrace := transfertypes.ParseDenomTrace(prefixedDenom) + ibcDenom := denomTrace.IBCDenom() + s.App.TransferKeeper.SetDenomTrace(s.Ctx, denomTrace) + + deposit := types.LSMTokenDeposit{ + ChainId: HostChainId, + Denom: LSMTokenDenom, + IbcDenom: ibcDenom, + Status: types.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + } + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, deposit) + + callbackArgs := types.TransferLSMTokenCallback{ + Deposit: &deposit, + } + callbackArgsBz, err := proto.Marshal(&callbackArgs) + s.Require().NoError(err, "no error expected when marshalling callback args") + + return callbackArgsBz +} + +func (s *KeeperTestSuite) TestLSMTransferCallback_Successful() { + callbackArgsBz := s.SetupLSMTransferCallback() + + // Call the callback with a successful response + ackSuccess := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_SUCCESS, + } + err := s.App.RecordsKeeper.LSMTransferCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, callbackArgsBz) + s.Require().NoError(err, "no error expected when executing callback") + + // Confirm deposit has been updated to DETOKENIZATION_QUEUE + record, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenDenom) + s.Require().True(found, "deposit should have been found but was not") + s.Require().Equal(types.LSMTokenDeposit_DETOKENIZATION_QUEUE.String(), record.Status.String(), "deposit status") +} + +func (s *KeeperTestSuite) TestLSMTransferCallback_InvalidCallbackArgs() { + s.SetupLSMTransferCallback() + + // Call the callback with a successful ack, but invalid callback args + invalidCallbackArgs := []byte{1, 2, 3} + ackSuccess := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_SUCCESS, + } + err := s.App.RecordsKeeper.LSMTransferCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, invalidCallbackArgs) + s.Require().ErrorContains(err, "unable to unmarshal LSM transfer callback") +} + +func (s *KeeperTestSuite) TestLSMTransferCallback_AckTimeout() { + callbackArgsBz := s.SetupLSMTransferCallback() + + // Call the callback with a timed-out response + ackTimeout := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_TIMEOUT, + } + err := s.App.RecordsKeeper.LSMTransferCallback(s.Ctx, channeltypes.Packet{}, ackTimeout, callbackArgsBz) + s.Require().NoError(err, "no error expected when executing callback") + + // Confirm deposit has been updated to status TRANSFER_QUEUE + record, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenDenom) + s.Require().True(found, "deposit should have been found but was not") + s.Require().Equal(types.LSMTokenDeposit_TRANSFER_QUEUE.String(), record.Status.String(), "deposit status") +} + +func (s *KeeperTestSuite) TestLSMTransferCallback_AckFailed() { + callbackArgsBz := s.SetupLSMTransferCallback() + + // Call the callback with an ack-failure response + ackFailure := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_FAILURE, + } + err := s.App.RecordsKeeper.LSMTransferCallback(s.Ctx, channeltypes.Packet{}, ackFailure, callbackArgsBz) + s.Require().NoError(err) + + // Confirm deposit has been updated to status FAILED + record, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenDenom) + s.Require().True(found, "deposit should have been found but was not") + s.Require().Equal(types.LSMTokenDeposit_TRANSFER_FAILED.String(), record.Status.String(), "deposit status") +} diff --git a/x/records/keeper/callback_transfer.go b/x/records/keeper/callback_native_transfer.go similarity index 100% rename from x/records/keeper/callback_transfer.go rename to x/records/keeper/callback_native_transfer.go diff --git a/x/records/keeper/callback_transfer_test.go b/x/records/keeper/callback_native_transfer_test.go similarity index 100% rename from x/records/keeper/callback_transfer_test.go rename to x/records/keeper/callback_native_transfer_test.go diff --git a/x/records/keeper/callbacks.go b/x/records/keeper/callbacks.go index d7c23b7495..8802672a1b 100644 --- a/x/records/keeper/callbacks.go +++ b/x/records/keeper/callbacks.go @@ -4,10 +4,12 @@ import ( icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" ) -const TRANSFER = "transfer" +const IBCCallbacksID_NativeTransfer = "transfer" +const IBCCallbacksID_LSMTransfer = "lsm-transfer" func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { return []icacallbackstypes.ICACallback{ - {CallbackId: TRANSFER, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.TransferCallback)}, + {CallbackId: IBCCallbacksID_NativeTransfer, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.TransferCallback)}, + {CallbackId: IBCCallbacksID_LSMTransfer, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.LSMTransferCallback)}, } } diff --git a/x/records/keeper/grpc_query_lsm_deposits.go b/x/records/keeper/grpc_query_lsm_deposits.go new file mode 100644 index 0000000000..f803e0aa4a --- /dev/null +++ b/x/records/keeper/grpc_query_lsm_deposits.go @@ -0,0 +1,62 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +func (k Keeper) LSMDeposit(c context.Context, req *types.QueryLSMDepositRequest) (*types.QueryLSMDepositResponse, error) { + if req == nil || req.ChainId == "" || req.Denom == "" { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + ctx := sdk.UnwrapSDKContext(c) + + deposit, found := k.GetLSMTokenDeposit(ctx, req.ChainId, req.Denom) + if !found { + return nil, status.Error(codes.NotFound, "LSM deposit not found") + } + + return &types.QueryLSMDepositResponse{Deposit: deposit}, nil +} + +func (k Keeper) LSMDeposits(c context.Context, req *types.QueryLSMDepositsRequest) (*types.QueryLSMDepositsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + var deposits []types.LSMTokenDeposit + ctx := sdk.UnwrapSDKContext(c) + + // Case 1: no chain_id was given, so we should load all deposits across all chains + if req.ChainId == "" { + deposits = k.GetAllLSMTokenDeposit(ctx) + } + + // Case 2: chain_id is given, load all for that chain + if req.ChainId != "" { + deposits = k.GetLSMDepositsForHostZone(ctx, req.ChainId) + } + + // Filter for matches by hand if validator_address or status optional filters are given + filtered := []types.LSMTokenDeposit{} + filterByValidator := req.ValidatorAddress != "" + filterByStatus := req.Status != "" + for _, deposit := range deposits { + validatorMatch := !filterByValidator || (deposit.ValidatorAddress == req.ValidatorAddress) + statusMatch := !filterByStatus || (deposit.Status.String() == req.Status) + if validatorMatch && statusMatch { + filtered = append(filtered, deposit) + } + } + deposits = filtered + + // Be aware this could be an empty array, there may have been no deposits matching given filters + return &types.QueryLSMDepositsResponse{Deposits: deposits}, nil +} diff --git a/x/records/keeper/grpc_query_lsm_deposits_test.go b/x/records/keeper/grpc_query_lsm_deposits_test.go new file mode 100644 index 0000000000..6ea01fb1d9 --- /dev/null +++ b/x/records/keeper/grpc_query_lsm_deposits_test.go @@ -0,0 +1,117 @@ +package keeper_test + +import ( + "fmt" + + _ "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +func (s *KeeperTestSuite) TestLSMDeposit() { + // setup expected deposit in stakeibckeeper + initToken := types.LSMTokenDeposit{ChainId: "1", Denom: "validator70027"} + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, initToken) + + // input nil, no chain-id, no denom --> error invalid input + invalidInputs := []*types.QueryLSMDepositRequest{} + noChainInput := types.QueryLSMDepositRequest{ChainId: "", Denom: "validator93740"} + noDenomInput := types.QueryLSMDepositRequest{ChainId: "42", Denom: ""} + invalidInputs = append(invalidInputs, nil, &noChainInput, &noDenomInput) + + for _, invalidInput := range invalidInputs { + _, err1 := s.App.RecordsKeeper.LSMDeposit(s.Ctx, invalidInput) + s.Require().ErrorContains(err1, "invalid request") + } + + // no matching deposit found --> error not found + missingInput := types.QueryLSMDepositRequest{ChainId: "2", Denom: "validator9374999"} + _, err2 := s.App.RecordsKeeper.LSMDeposit(s.Ctx, &missingInput) + s.Require().ErrorContains(err2, "LSM deposit not found") + + // found the deposit --> no error, deposit returned with matching chain-id and denom + expectedInput := types.QueryLSMDepositRequest{ChainId: "1", Denom: "validator70027"} + response, err3 := s.App.RecordsKeeper.LSMDeposit(s.Ctx, &expectedInput) + s.Require().NoError(err3) + s.Require().Equal("1", response.Deposit.ChainId) + s.Require().Equal("validator70027", response.Deposit.Denom) +} + +func (s *KeeperTestSuite) TestLSMDeposits() { + // setup expected desposits in stakeibckeeper + chainIds := []string{"1"} + validators := []string{"validator22313", "validator30472"} + statuses := []string{"TRANSFER_IN_PROGRESS", "TRANSFER_FAILED", "DETOKENIZATION_QUEUE"} + for _, chainId := range chainIds { + for _, validator := range validators { + for _, statusStr := range statuses { + denom := chainId + validator + statusStr // has to be present and unique for each token + status := types.LSMTokenDeposit_Status(types.LSMTokenDeposit_Status_value[statusStr]) + initToken := types.LSMTokenDeposit{ChainId: chainId, ValidatorAddress: validator, Status: status, Denom: denom} + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, initToken) + } + } + } + + // input nil --> error invalid input + _, err1 := s.App.RecordsKeeper.LSMDeposit(s.Ctx, nil) + s.Require().ErrorContains(err1, "invalid request") + + // Adding case where string is empty "" meaning match all + // Adding case where string is "missing_X" which is an example which is not found + chainIds = append(chainIds, "", "missing_chain") + validators = append(validators, "", "missing_validator") + statuses = append(statuses, "", "missing_status") + for _, chainId := range chainIds { + chainMatchNum := 1 // case: chain-id is a specific value with matching deposits + if chainId == "" { // case: chain-id filter not applied, all len-2 chain-ids match + chainMatchNum = len(chainIds) - 2 + } + if chainId == "missing_chain" { // case: chain-id is specific value matching 0 deposits + chainMatchNum = 0 + } + for _, validator := range validators { + validatorMatchNum := 1 // case: validator is a specific value with matching deposits + if validator == "" { // case: validator filter not applied, all len-2 validators match + validatorMatchNum = len(validators) - 2 + } + if validator == "missing_validator" { // case: validator is specific value matching 0 deposits + validatorMatchNum = 0 + } + for _, status := range statuses { + statusMatchNum := 1 // case: status is a specific value with matching deposits + if status == "" { // case: status filter not applied, all len-2 statuses match + statusMatchNum = len(statuses) - 2 + } + if status == "missing_status" { // case: status is specific value matching 0 deposits + statusMatchNum = 0 + } + + expectedNumDeposits := chainMatchNum * validatorMatchNum * statusMatchNum + params := types.QueryLSMDepositsRequest{ChainId: chainId, ValidatorAddress: validator, Status: status} + response, err := s.App.RecordsKeeper.LSMDeposits(s.Ctx, ¶ms) + // Verify no errors in general, it can b empty but should be no errors + s.Require().NoError(err) + // Verify that all the deposits expected were found by matching the number set in the keeper + actualDeposits := response.Deposits + s.Require().Equal(expectedNumDeposits, len(actualDeposits), "unexpected number of deposits returned") + testCaseMsg := fmt.Sprintf(" Test Case ChainId: %s, Validator: %s, Status: %s", chainId, validator, status) + for _, actualDeposit := range actualDeposits { + if chainId != "" { // Check that every returned deposit matches, if given specific chain-id value + errMsg := "chain-id on returned deposit does not match requested chain-id filter! %s" + s.Require().Equal(chainId, actualDeposit.ChainId, errMsg, testCaseMsg) + } + if validator != "" { // Check that every returned deposit matches, if given specific validator value + errMsg := "validator on returned deposit does not match requested validator filter! %s" + s.Require().Equal(validator, actualDeposit.ValidatorAddress, errMsg, testCaseMsg) + } + if status != "" { // Check that every returned deposit matches, if given specific status value + errMsg := "status on returned deposit does not match requested status filter! %s" + s.Require().Equal(status, actualDeposit.Status.String(), errMsg, testCaseMsg) + } + } + } + } + } + +} diff --git a/x/records/keeper/ibc.go b/x/records/keeper/ibc.go new file mode 100644 index 0000000000..13d8135977 --- /dev/null +++ b/x/records/keeper/ibc.go @@ -0,0 +1,46 @@ +package keeper + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + "github.com/Stride-Labs/stride/v13/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" +) + +// OnAcknowledgementPacket unmarshals the acknowledgement object to determine if the ack was successful and +// then passes that to the ICACallback +// If this packet does not have associated callback data, there will be no additional ack logic in CallRegisteredICACallback +func (k Keeper) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Packet, acknowledgement []byte) error { + packetDescription := fmt.Sprintf("Sequence %d, from %s %s, to %s %s", + packet.Sequence, packet.SourceChannel, packet.SourcePort, packet.DestinationChannel, packet.DestinationPort) + + ackResponse, err := icacallbacks.UnpackAcknowledgementResponse(ctx, k.Logger(ctx), acknowledgement, false) + if err != nil { + return errorsmod.Wrapf(err, "unable to unpack message data from acknowledgement - %s", packetDescription) + } + + // Custom ack logic only applies to ibc transfers initiated from the `stakeibc` module account + // NOTE: if the `stakeibc` module account IBC transfers tokens for some other reason in the future, + // this will need to be updated + if err := k.ICACallbacksKeeper.CallRegisteredICACallback(ctx, packet, ackResponse); err != nil { + return errorsmod.Wrapf(err, "unable to call registered callback for records OnAckPacket - %s", packetDescription) + } + + return nil +} + +// OnTimeoutPacket passes the ack timeout to the ICACallback +// If there was no callback data associated with this packet, +// there will be no additional ack logic in CallRegisteredICACallback +func (k Keeper) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet) error { + ackResponse := icacallbacktypes.AcknowledgementResponse{Status: icacallbacktypes.AckResponseStatus_TIMEOUT} + if err := k.ICACallbacksKeeper.CallRegisteredICACallback(ctx, packet, &ackResponse); err != nil { + return errorsmod.Wrapf(err, "unable to call registered callback for records OnTimeoutPacket") + } + + return nil +} diff --git a/x/records/keeper/keeper.go b/x/records/keeper/keeper.go index 3bc1d067f4..9fb615c3f5 100644 --- a/x/records/keeper/keeper.go +++ b/x/records/keeper/keeper.go @@ -4,19 +4,14 @@ import ( "fmt" "github.com/cometbft/cometbft/libs/log" - ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" - ibctypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v13/utils" icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - - storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/Stride-Labs/stride/v13/x/records/types" ) @@ -65,38 +60,3 @@ func NewKeeper( func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } - -func (k Keeper) Transfer(ctx sdk.Context, msg *ibctypes.MsgTransfer, depositRecord types.DepositRecord) error { - goCtx := sdk.WrapSDKContext(ctx) - msgTransferResponse, err := k.TransferKeeper.Transfer(goCtx, msg) - if err != nil { - return err - } - sequence := msgTransferResponse.Sequence - // add callback data - transferCallback := types.TransferCallback{ - DepositRecordId: depositRecord.Id, - } - k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Marshalling TransferCallback args: %+v", transferCallback)) - marshalledCallbackArgs, err := k.MarshalTransferCallbackArgs(ctx, transferCallback) - if err != nil { - return err - } - // Store the callback data - callback := icacallbackstypes.CallbackData{ - CallbackKey: icacallbackstypes.PacketID(msg.SourcePort, msg.SourceChannel, sequence), - PortId: msg.SourcePort, - ChannelId: msg.SourceChannel, - Sequence: sequence, - CallbackId: TRANSFER, - CallbackArgs: marshalledCallbackArgs, - } - k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Storing callback data: %+v", callback)) - k.ICACallbacksKeeper.SetCallbackData(ctx, callback) - - // update the record state to TRANSFER_IN_PROGRESS - depositRecord.Status = types.DepositRecord_TRANSFER_IN_PROGRESS - k.SetDepositRecord(ctx, depositRecord) - - return nil -} diff --git a/x/records/keeper/keeper_test.go b/x/records/keeper/keeper_test.go index c57bad8253..2926b06055 100644 --- a/x/records/keeper/keeper_test.go +++ b/x/records/keeper/keeper_test.go @@ -6,8 +6,10 @@ import ( "github.com/stretchr/testify/suite" "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" +) + +const ( + HostChainId = "GAIA" ) type KeeperTestSuite struct { @@ -18,15 +20,6 @@ func (s *KeeperTestSuite) SetupTest() { s.Setup() } -// Dynamically gets the MsgServer for this module's keeper -// this function must be used so that the MsgServer is always created with the most updated App context -// -// which can change depending on the type of test -// (e.g. tests with only one Stride chain vs tests with multiple chains and IBC support) -func (s *KeeperTestSuite) GetMsgServer() types.MsgServer { - return keeper.NewMsgServerImpl(s.App.RecordsKeeper) -} - func TestKeeperTestSuite(t *testing.T) { suite.Run(t, new(KeeperTestSuite)) } diff --git a/x/records/keeper/lsm_token_deposit.go b/x/records/keeper/lsm_token_deposit.go new file mode 100644 index 0000000000..d1da167400 --- /dev/null +++ b/x/records/keeper/lsm_token_deposit.go @@ -0,0 +1,80 @@ +package keeper + +import ( + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +func (k Keeper) SetLSMTokenDeposit(ctx sdk.Context, deposit types.LSMTokenDeposit) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LSMTokenDepositKey)) + depositKey := types.GetLSMTokenDepositKey(deposit.ChainId, deposit.Denom) + depositData := k.Cdc.MustMarshal(&deposit) + store.Set(depositKey, depositData) +} + +func (k Keeper) RemoveLSMTokenDeposit(ctx sdk.Context, chainId, denom string) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LSMTokenDepositKey)) + depositKey := types.GetLSMTokenDepositKey(chainId, denom) + store.Delete(depositKey) +} + +func (k Keeper) GetLSMTokenDeposit(ctx sdk.Context, chainId, denom string) (deposit types.LSMTokenDeposit, found bool) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LSMTokenDepositKey)) + depositKey := types.GetLSMTokenDepositKey(chainId, denom) + depositData := store.Get(depositKey) + if len(depositData) == 0 { + return deposit, false + } + k.Cdc.MustUnmarshal(depositData, &deposit) + return deposit, true +} + +func (k Keeper) GetAllLSMTokenDeposit(ctx sdk.Context) []types.LSMTokenDeposit { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LSMTokenDepositKey)) + iterator := store.Iterator(nil, nil) + allLSMTokenDeposits := []types.LSMTokenDeposit{} + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var deposit types.LSMTokenDeposit + k.Cdc.MustUnmarshal(iterator.Value(), &deposit) + allLSMTokenDeposits = append(allLSMTokenDeposits, deposit) + } + + return allLSMTokenDeposits +} + +func (k Keeper) UpdateLSMTokenDepositStatus(ctx sdk.Context, deposit types.LSMTokenDeposit, status types.LSMTokenDeposit_Status) { + deposit.Status = status + k.SetLSMTokenDeposit(ctx, deposit) +} + +func (k Keeper) GetLSMDepositsForHostZone(ctx sdk.Context, chainId string) []types.LSMTokenDeposit { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.LSMTokenDepositKey)) + iterator := sdk.KVStorePrefixIterator(store, types.KeyPrefix(chainId)) + hostZoneLSMTokenDeposits := []types.LSMTokenDeposit{} + + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + var deposit types.LSMTokenDeposit + k.Cdc.MustUnmarshal(iterator.Value(), &deposit) + hostZoneLSMTokenDeposits = append(hostZoneLSMTokenDeposits, deposit) + } + + return hostZoneLSMTokenDeposits +} + +func (k Keeper) GetLSMDepositsForHostZoneWithStatus(ctx sdk.Context, chainId string, status types.LSMTokenDeposit_Status) []types.LSMTokenDeposit { + filtered := []types.LSMTokenDeposit{} + hostZoneLSMTokenDeposits := k.GetLSMDepositsForHostZone(ctx, chainId) + for _, deposit := range hostZoneLSMTokenDeposits { + if deposit.Status == status { + filtered = append(filtered, deposit) + } + } + return filtered +} diff --git a/x/records/keeper/lsm_token_deposit_test.go b/x/records/keeper/lsm_token_deposit_test.go new file mode 100644 index 0000000000..7ce68513fe --- /dev/null +++ b/x/records/keeper/lsm_token_deposit_test.go @@ -0,0 +1,167 @@ +package keeper_test + +import ( + "strconv" + + sdkmath "cosmossdk.io/math" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +func (s *KeeperTestSuite) createNLSMTokenDeposit(n int) []types.LSMTokenDeposit { + deposits := make([]types.LSMTokenDeposit, n) + for i := range deposits { + validatorAddr := "validatorAddress" + tokenRecordId := strconv.Itoa(i) + + deposits[i].Denom = validatorAddr + tokenRecordId + deposits[i].IbcDenom = "ibc/" + validatorAddr + tokenRecordId + deposits[i].ValidatorAddress = validatorAddr + deposits[i].ChainId = strconv.Itoa(i) + deposits[i].Amount = sdkmath.NewIntFromUint64(1000) + deposits[i].Status = types.LSMTokenDeposit_DEPOSIT_PENDING + deposits[i].StToken = sdk.NewCoin("sttoken", sdk.NewInt(int64(i))) + } + return deposits +} + +func (s *KeeperTestSuite) setGivenLSMTokenDeposit(deposits []types.LSMTokenDeposit) []types.LSMTokenDeposit { + for _, deposit := range deposits { + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, deposit) + } + return deposits +} + +func (s *KeeperTestSuite) createSetNLSMTokenDeposit(n int) []types.LSMTokenDeposit { + newDeposits := s.createNLSMTokenDeposit(n) + return s.setGivenLSMTokenDeposit(newDeposits) +} + +func (s *KeeperTestSuite) TestGetLSMTokenDeposit() { + deposits := s.createSetNLSMTokenDeposit(10) + for _, expected := range deposits { + actual, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, expected.ChainId, expected.Denom) + s.Require().True(found, "deposit not found for chainID %s and denom %s", expected.ChainId, expected.Denom) + s.Require().Equal(expected, actual, "found deposit did not match expected") + } +} + +func (s *KeeperTestSuite) TestRemoveLSMTokenDeposit() { + deposits := s.createSetNLSMTokenDeposit(10) + for _, expected := range deposits { + s.App.RecordsKeeper.RemoveLSMTokenDeposit(s.Ctx, expected.ChainId, expected.Denom) + _, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, expected.ChainId, expected.Denom) + s.Require().False(found, "deposit was still found after removal %+v", expected) + } +} + +func (s *KeeperTestSuite) TestGetAllLSMTokenDeposit() { + expected := s.createSetNLSMTokenDeposit(10) + actual := s.App.RecordsKeeper.GetAllLSMTokenDeposit(s.Ctx) + s.Require().Equal(len(expected), len(actual), + "different number of deposits found %d than was expected %d", len(actual), len(expected)) + s.Require().ElementsMatch(actual, expected, "actual list did not match expected list") +} + +func (s *KeeperTestSuite) TestUpdateLSMTokenDepositStatus() { + statuses := []types.LSMTokenDeposit_Status{ + types.LSMTokenDeposit_DEPOSIT_PENDING, + types.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + types.LSMTokenDeposit_TRANSFER_FAILED, + types.LSMTokenDeposit_DETOKENIZATION_QUEUE, + types.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS, + types.LSMTokenDeposit_DETOKENIZATION_FAILED, + } + deposits := s.createSetNLSMTokenDeposit(len(statuses)) + for i, status := range statuses { + s.App.RecordsKeeper.UpdateLSMTokenDepositStatus(s.Ctx, deposits[i], status) + } + + for i, deposit := range deposits { + actual, _ := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, deposit.ChainId, deposit.Denom) + s.Require().Equal(actual.Status, statuses[i], "status did not update for example %d", i) + } +} + +func (s *KeeperTestSuite) TestGetLSMDepositsForHostZone() { + // For HostZone with id i there will be i+1 deposits created, all denom unique + // i.e. {chain-0, chain-1, chain-1, chain-2, chain-2, chain-2, ...} + deposits := s.createNLSMTokenDeposit(15) // 15 = 1 + 2 + 3 + 4 + 5 + idx := 0 + for i := 0; i < 5; i++ { + for j := 0; j < i+1; j++ { + deposits[idx].ChainId = strconv.Itoa(i) + idx++ + } + } + s.setGivenLSMTokenDeposit(deposits) + + // Check there are i+1 deposits for chainid i, all deposits returned are from right chain + for i := 0; i < 5; i++ { + hostChainId := strconv.Itoa(i) + chainDeposits := s.App.RecordsKeeper.GetLSMDepositsForHostZone(s.Ctx, hostChainId) + s.Require().Equal(i+1, len(chainDeposits), "Unexpected number of deposits found for chainId %d", i) + for _, deposit := range chainDeposits { + s.Require().Equal(hostChainId, deposit.ChainId, "Got a deposit from the wrong chain!") + } + } +} + +func (s *KeeperTestSuite) TestGetLSMDepositsForHostZoneWithStatus() { + // Necessary to check that we get every deposit for a given hostzone and status + // Necessary to also check that we *only* get deposits which match hostzone and status + // Need a predictable, different, non-zero number of deposits for each (zone, status) combo + numHostZones := 5 + statuses := []types.LSMTokenDeposit_Status{ + types.LSMTokenDeposit_DEPOSIT_PENDING, + types.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + types.LSMTokenDeposit_TRANSFER_FAILED, + types.LSMTokenDeposit_DETOKENIZATION_QUEUE, + types.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS, + types.LSMTokenDeposit_DETOKENIZATION_FAILED, + } + + // For each (zone, status) combo, create a different number of deposits + // determined by numDeposits = (hostZone index + 1) * (status index + 1) + + // For instance: + // chain-0, status-0 => 1 deposit + // chain-0, status-1 => 1 * 2 = 2 deposit + // chain-1, status-1 => 2 * 2 = 4 deposits + + deposits := s.createNLSMTokenDeposit(315) // 315 = 15 * 21 is total number across all combos + // nZones = 5 --> 15 = 1 + 2 + 3 + 4 + 5 nStatuses = 6 --> 21 = 1 + 2 + 3 + 4 + 5 + 6 + // Generally with nZones number of host zones and nStatuses number of statuses + // there will be a totalDeposits = 1/4 * nZones * (nZones + 1) * nStatuses * (nStatuses + 1) + + idx := 0 + for hzid := 0; hzid < numHostZones; hzid++ { + for sid := 0; sid < len(statuses); sid++ { + numCombo := (hzid + 1) * (sid + 1) + for i := 0; i < numCombo; i++ { + deposits[idx].ChainId = strconv.Itoa(hzid) + deposits[idx].Status = statuses[sid] + idx++ + } + } + } + s.setGivenLSMTokenDeposit(deposits) + + for hzid := 0; hzid < numHostZones; hzid++ { + for sid := 0; sid < len(statuses); sid++ { + expectedLen := (hzid + 1) * (sid + 1) + chainId := strconv.Itoa(hzid) + status := statuses[sid] + actual := s.App.RecordsKeeper.GetLSMDepositsForHostZoneWithStatus(s.Ctx, chainId, status) + // Check that we get every deposit which matches hostzone and status + s.Require().Equal(expectedLen, len(actual), "Unexpected number of deposits found for chainId %d", hzid) + // Check that we only get deposits which match hostzone and status + for _, deposit := range actual { + s.Require().Equal(chainId, deposit.ChainId, "Got back deposit from different chain!") + s.Require().Equal(status, deposit.Status, "Got back deposit with wrong status!") + } + } + } +} diff --git a/x/records/keeper/msg_server.go b/x/records/keeper/msg_server.go deleted file mode 100644 index d2e063618e..0000000000 --- a/x/records/keeper/msg_server.go +++ /dev/null @@ -1,17 +0,0 @@ -package keeper - -import ( - "github.com/Stride-Labs/stride/v13/x/records/types" -) - -type msgServer struct { - Keeper -} - -// NewMsgServerImpl returns an implementation of the MsgServer interface -// for the provided Keeper. -func NewMsgServerImpl(keeper Keeper) types.MsgServer { - return &msgServer{Keeper: keeper} -} - -var _ types.MsgServer = msgServer{} diff --git a/x/records/keeper/transfer.go b/x/records/keeper/transfer.go new file mode 100644 index 0000000000..30cfb15fb2 --- /dev/null +++ b/x/records/keeper/transfer.go @@ -0,0 +1,107 @@ +package keeper + +import ( + "time" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + + "github.com/Stride-Labs/stride/v13/x/records/types" +) + +var ( + // Timeout for the IBC transfer of the LSM Token to the host zone + LSMDepositTransferTimeout = time.Hour * 24 // 1 day +) + +// Transfers native tokens, accumulated from normal liquid stakes, to the host zone +// This is invoked epochly +func (k Keeper) IBCTransferNativeTokens(ctx sdk.Context, msg *transfertypes.MsgTransfer, depositRecord types.DepositRecord) error { + // Submit IBC transfer + msgTransferResponse, err := k.TransferKeeper.Transfer(sdk.WrapSDKContext(ctx), msg) + if err != nil { + return err + } + + // Build callback data + transferCallback := types.TransferCallback{ + DepositRecordId: depositRecord.Id, + } + k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Marshalling TransferCallback args: %+v", transferCallback)) + marshalledCallbackArgs, err := k.MarshalTransferCallbackArgs(ctx, transferCallback) + if err != nil { + return err + } + + // Store the callback data + sequence := msgTransferResponse.Sequence + callback := icacallbackstypes.CallbackData{ + CallbackKey: icacallbackstypes.PacketID(msg.SourcePort, msg.SourceChannel, sequence), + PortId: msg.SourcePort, + ChannelId: msg.SourceChannel, + Sequence: sequence, + CallbackId: IBCCallbacksID_NativeTransfer, + CallbackArgs: marshalledCallbackArgs, + } + k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Storing callback data: %+v", callback)) + k.ICACallbacksKeeper.SetCallbackData(ctx, callback) + + // update the record state to TRANSFER_IN_PROGRESS + depositRecord.Status = types.DepositRecord_TRANSFER_IN_PROGRESS + k.SetDepositRecord(ctx, depositRecord) + + return nil +} + +// Transfer's LSM Tokens to the host from LSMLiquidStakes +// This is invoked immediately after the LSMLiquidStake +func (k Keeper) IBCTransferLSMToken( + ctx sdk.Context, + lsmTokenDeposit types.LSMTokenDeposit, + transferChannelID string, + hostZoneDepositAddress string, + hostZoneDelegationICAAddress string, +) error { + // Build transfer message with a conservative timeout + timeout := uint64(ctx.BlockTime().UnixNano() + (LSMDepositTransferTimeout).Nanoseconds()) + ibcToken := sdk.NewCoin(lsmTokenDeposit.IbcDenom, lsmTokenDeposit.Amount) + transferMsg := transfertypes.MsgTransfer{ + SourcePort: transfertypes.PortID, + SourceChannel: transferChannelID, + Token: ibcToken, + Sender: hostZoneDepositAddress, + Receiver: hostZoneDelegationICAAddress, + TimeoutTimestamp: timeout, + } + + // Send LSM Token to host zone via IBC transfer + msgTransferResponse, err := k.TransferKeeper.Transfer(sdk.WrapSDKContext(ctx), &transferMsg) + if err != nil { + return err + } + + // Store transfer callback data + callbackArgs := types.TransferLSMTokenCallback{ + Deposit: &lsmTokenDeposit, + } + callbackArgsBz, err := proto.Marshal(&callbackArgs) + if err != nil { + return errorsmod.Wrapf(err, "Unable to marshal transfer callback data for %+v", callbackArgs) + } + + k.ICACallbacksKeeper.SetCallbackData(ctx, icacallbackstypes.CallbackData{ + CallbackKey: icacallbackstypes.PacketID(transferMsg.SourcePort, transferMsg.SourceChannel, msgTransferResponse.Sequence), + PortId: transferMsg.SourcePort, + ChannelId: transferMsg.SourceChannel, + Sequence: msgTransferResponse.Sequence, + CallbackId: IBCCallbacksID_LSMTransfer, + CallbackArgs: callbackArgsBz, + }) + + return nil +} diff --git a/x/records/keeper/transfer_test.go b/x/records/keeper/transfer_test.go index 147d2ddf20..4fc0a1e061 100644 --- a/x/records/keeper/transfer_test.go +++ b/x/records/keeper/transfer_test.go @@ -49,7 +49,7 @@ func (s *KeeperTestSuite) SetupTransfer() TransferTestCase { func (s *KeeperTestSuite) TestTransfer_Successful() { tc := s.SetupTransfer() - err := s.App.RecordsKeeper.Transfer(s.Ctx, &tc.transferMsg, tc.depositRecord) + err := s.App.RecordsKeeper.IBCTransferNativeTokens(s.Ctx, &tc.transferMsg, tc.depositRecord) s.Require().NoError(err) // Confirm deposit record has been updated to TRANSFER_IN_PROGRESS diff --git a/x/records/migrations/v2/types/genesis.pb.go b/x/records/migrations/v2/types/genesis.pb.go index d645502b6b..9200e6ba8d 100644 --- a/x/records/migrations/v2/types/genesis.pb.go +++ b/x/records/migrations/v2/types/genesis.pb.go @@ -8,7 +8,7 @@ import ( fmt "fmt" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" - proto "github.com/cosmos/gogoproto/proto" + proto "github.com/gogo/protobuf/proto" grpc "google.golang.org/grpc" io "io" math "math" diff --git a/x/records/module.go b/x/records/module.go index c2adad2cd4..f72d677450 100644 --- a/x/records/module.go +++ b/x/records/module.go @@ -55,9 +55,7 @@ func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { } // RegisterInterfaces registers the module's interface types -func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { - types.RegisterInterfaces(reg) -} +func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {} // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { diff --git a/x/records/module_ibc.go b/x/records/module_ibc.go index a620adff32..2971633d7c 100644 --- a/x/records/module_ibc.go +++ b/x/records/module_ibc.go @@ -10,15 +10,9 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - - icacallbacks "github.com/Stride-Labs/stride/v13/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" "github.com/Stride-Labs/stride/v13/x/records/keeper" - - // "google.golang.org/protobuf/proto" <-- this breaks tx parsing - - ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" ) // IBC MODULE IMPLEMENTATION @@ -156,24 +150,20 @@ func (im IBCModule) OnAcknowledgementPacket( acknowledgement []byte, relayer sdk.AccAddress, ) error { - im.keeper.Logger(ctx).Info(fmt.Sprintf("OnAcknowledgementPacket (Records) - packet: %+v, relayer: %v", packet, relayer)) - - ackResponse, err := icacallbacks.UnpackAcknowledgementResponse(ctx, im.keeper.Logger(ctx), acknowledgement, false) - if err != nil { - errMsg := fmt.Sprintf("Unable to unpack message data from acknowledgement, Sequence %d, from %s %s, to %s %s: %s", - packet.Sequence, packet.SourceChannel, packet.SourcePort, packet.DestinationChannel, packet.DestinationPort, err.Error()) - im.keeper.Logger(ctx).Error(errMsg) - return errorsmod.Wrapf(icacallbacktypes.ErrInvalidAcknowledgement, errMsg) - } - - // Custom ack logic only applies to ibc transfers initiated from the `stakeibc` module account - // NOTE: if the `stakeibc` module account IBC transfers tokens for some other reason in the future, - // this will need to be updated - if err := im.keeper.ICACallbacksKeeper.CallRegisteredICACallback(ctx, packet, ackResponse); err != nil { - errMsg := fmt.Sprintf("Unable to call registered callback from records OnAcknowledgePacket | Sequence %d, from %s %s, to %s %s | Error %s", - packet.Sequence, packet.SourceChannel, packet.SourcePort, packet.DestinationChannel, packet.DestinationPort, err.Error()) - im.keeper.Logger(ctx).Error(errMsg) - return errorsmod.Wrapf(icacallbacktypes.ErrCallbackFailed, errMsg) + im.keeper.Logger(ctx).Info( + fmt.Sprintf("OnAcknowledgementPacket (Records): Sequence %d, SourcePort %s, SourceChannel %s, DestinationPort %s, DestinationChannel %s", + packet.Sequence, packet.SourcePort, packet.SourceChannel, packet.DestinationPort, packet.DestinationChannel)) + + // The error here is intentionally returned immediately instead of refunding tokens + // This only errors if either: + // 1) The ack can't be parsed, in which case we don't know whether to refund tokens, or + // 2) The callback errors, in which case, it's better to not refund tokens to keep the state + // changes as consistent as possible between records and the bank module + // Transfer initiated from users will flow through this branch without an error, since the callbacks + // are only prevelant for transfer's initated by stakeibc + if err := im.keeper.OnAcknowledgementPacket(ctx, packet, acknowledgement); err != nil { + im.keeper.Logger(ctx).Error(fmt.Sprintf("Records OnAcknowledgementPacket failed: %s", err.Error())) + return errorsmod.Wrapf(err, "OnAckPacket callback failed") } return im.app.OnAcknowledgementPacket(ctx, packet, acknowledgement, relayer) @@ -185,13 +175,20 @@ func (im IBCModule) OnTimeoutPacket( packet channeltypes.Packet, relayer sdk.AccAddress, ) error { - // doCustomLogic(packet) - im.keeper.Logger(ctx).Error(fmt.Sprintf("[IBC-TRANSFER] OnTimeoutPacket %v", packet)) - ackResponse := icacallbacktypes.AcknowledgementResponse{Status: icacallbacktypes.AckResponseStatus_TIMEOUT} - err := im.keeper.ICACallbacksKeeper.CallRegisteredICACallback(ctx, packet, &ackResponse) - if err != nil { - return err + im.keeper.Logger(ctx).Error( + fmt.Sprintf("OnTimeoutPacket (Records): Sequence %d, SourcePort %s, SourceChannel %s, DestinationPort %s, DestinationChannel %s", + packet.Sequence, packet.SourcePort, packet.SourceChannel, packet.DestinationPort, packet.DestinationChannel)) + + // The error here is intentionally returned immediately instead of refunding tokens + // This only errors if the callback fails, in which case, it's better to not refund tokens to keep the state + // changes as consistent as possible between records and the bank module + // Transfer initiated from users will flow through this branch without an error, since the callbacks + // are only prevelant for transfer's initated by stakeibc + if err := im.keeper.OnTimeoutPacket(ctx, packet); err != nil { + im.keeper.Logger(ctx).Error(fmt.Sprintf("Records OnTimeoutPacket failed: %s", err.Error())) + return errorsmod.Wrapf(err, "OnTimeoutPacket callback failed") } + return im.app.OnTimeoutPacket(ctx, packet, relayer) } diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index 34cc9d94e8..d9848bf67c 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -22,7 +22,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// ---------------------- Transfer Callback ---------------------- // type TransferCallback struct { DepositRecordId uint64 `protobuf:"varint,1,opt,name=deposit_record_id,json=depositRecordId,proto3" json:"deposit_record_id,omitempty"` } @@ -67,26 +66,73 @@ func (m *TransferCallback) GetDepositRecordId() uint64 { return 0 } +type TransferLSMTokenCallback struct { + Deposit *LSMTokenDeposit `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"` +} + +func (m *TransferLSMTokenCallback) Reset() { *m = TransferLSMTokenCallback{} } +func (m *TransferLSMTokenCallback) String() string { return proto.CompactTextString(m) } +func (*TransferLSMTokenCallback) ProtoMessage() {} +func (*TransferLSMTokenCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_6f7cdd5c1d8b3a46, []int{1} +} +func (m *TransferLSMTokenCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TransferLSMTokenCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TransferLSMTokenCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TransferLSMTokenCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_TransferLSMTokenCallback.Merge(m, src) +} +func (m *TransferLSMTokenCallback) XXX_Size() int { + return m.Size() +} +func (m *TransferLSMTokenCallback) XXX_DiscardUnknown() { + xxx_messageInfo_TransferLSMTokenCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_TransferLSMTokenCallback proto.InternalMessageInfo + +func (m *TransferLSMTokenCallback) GetDeposit() *LSMTokenDeposit { + if m != nil { + return m.Deposit + } + return nil +} + func init() { proto.RegisterType((*TransferCallback)(nil), "stride.records.TransferCallback") + proto.RegisterType((*TransferLSMTokenCallback)(nil), "stride.records.TransferLSMTokenCallback") } func init() { proto.RegisterFile("stride/records/callbacks.proto", fileDescriptor_6f7cdd5c1d8b3a46) } var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ - // 179 bytes of a gzipped FileDescriptorProto + // 224 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2b, 0x2e, 0x29, 0xca, 0x4c, 0x49, 0xd5, 0x2f, 0x4a, 0x4d, 0xce, 0x2f, 0x4a, 0x29, 0xd6, 0x4f, 0x4e, 0xcc, 0xc9, 0x49, 0x4a, 0x4c, 0xce, 0x2e, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x83, 0xc8, 0xeb, 0x41, - 0xe5, 0x95, 0xec, 0xb8, 0x04, 0x42, 0x8a, 0x12, 0xf3, 0x8a, 0xd3, 0x52, 0x8b, 0x9c, 0xa1, 0x4a, - 0x85, 0xb4, 0xb8, 0x04, 0x53, 0x52, 0x0b, 0xf2, 0x8b, 0x33, 0x4b, 0xe2, 0x21, 0xca, 0xe2, 0x33, - 0x53, 0x24, 0x18, 0x15, 0x18, 0x35, 0x58, 0x82, 0xf8, 0xa1, 0x12, 0x41, 0x60, 0x71, 0xcf, 0x14, - 0x27, 0xef, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, - 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4c, 0xcf, 0x2c, - 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x5b, 0xaa, 0xeb, 0x93, 0x98, 0x54, - 0xac, 0x0f, 0x75, 0x60, 0x99, 0xa1, 0xb1, 0x7e, 0x05, 0xdc, 0x99, 0x25, 0x95, 0x05, 0xa9, 0xc5, - 0x49, 0x6c, 0x60, 0x37, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x89, 0xd8, 0x06, 0x9f, 0xc5, - 0x00, 0x00, 0x00, + 0xe5, 0xa5, 0x64, 0xd0, 0xd4, 0x43, 0x69, 0x88, 0x6a, 0x25, 0x3b, 0x2e, 0x81, 0x90, 0xa2, 0xc4, + 0xbc, 0xe2, 0xb4, 0xd4, 0x22, 0x67, 0xa8, 0x41, 0x42, 0x5a, 0x5c, 0x82, 0x29, 0xa9, 0x05, 0xf9, + 0xc5, 0x99, 0x25, 0xf1, 0x10, 0xc5, 0xf1, 0x99, 0x29, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x2c, 0x41, + 0xfc, 0x50, 0x89, 0x20, 0xb0, 0xb8, 0x67, 0x8a, 0x52, 0x28, 0x97, 0x04, 0x4c, 0xbf, 0x4f, 0xb0, + 0x6f, 0x48, 0x7e, 0x76, 0x6a, 0x1e, 0xdc, 0x1c, 0x4b, 0x2e, 0x76, 0xa8, 0x72, 0xb0, 0x6e, 0x6e, + 0x23, 0x79, 0x3d, 0x54, 0xb7, 0xe9, 0xc1, 0xb4, 0xb8, 0x40, 0x4d, 0x85, 0xa9, 0x77, 0xf2, 0x3e, + 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, + 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xc3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, + 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0x69, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, + 0x5f, 0x96, 0x19, 0x1a, 0xeb, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, + 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x5a, 0xaa, 0xa4, 0x3a, 0x01, 0x00, 0x00, } func (m *TransferCallback) Marshal() (dAtA []byte, err error) { @@ -117,6 +163,41 @@ func (m *TransferCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *TransferLSMTokenCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *TransferLSMTokenCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TransferLSMTokenCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Deposit != nil { + { + size, err := m.Deposit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintCallbacks(dAtA []byte, offset int, v uint64) int { offset -= sovCallbacks(v) base := offset @@ -140,6 +221,19 @@ func (m *TransferCallback) Size() (n int) { return n } +func (m *TransferLSMTokenCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Deposit != nil { + l = m.Deposit.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + return n +} + func sovCallbacks(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -215,6 +309,92 @@ func (m *TransferCallback) Unmarshal(dAtA []byte) error { } return nil } +func (m *TransferLSMTokenCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: TransferLSMTokenCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TransferLSMTokenCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Deposit == nil { + m.Deposit = &LSMTokenDeposit{} + } + if err := m.Deposit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipCallbacks(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/records/types/codec.go b/x/records/types/codec.go index e154a66864..673a02108b 100644 --- a/x/records/types/codec.go +++ b/x/records/types/codec.go @@ -3,15 +3,10 @@ package types import ( "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/types/msgservice" ) func RegisterCodec(cdc *codec.LegacyAmino) {} -func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { - msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) -} - var ( Amino = codec.NewLegacyAmino() ModuleCdc = codec.NewProtoCodec(cdctypes.NewInterfaceRegistry()) diff --git a/x/records/types/genesis.go b/x/records/types/genesis.go index ee191fde51..ee2b200c42 100644 --- a/x/records/types/genesis.go +++ b/x/records/types/genesis.go @@ -19,7 +19,7 @@ func DefaultGenesis() *GenesisState { EpochUnbondingRecordList: []EpochUnbondingRecord{}, DepositRecordList: []DepositRecord{}, DepositRecordCount: 0, - // this line is used by starport scaffolding # genesis/types/default + LsmTokenDepositList: []LSMTokenDeposit{}, } } @@ -58,7 +58,22 @@ func (gs GenesisState) Validate() error { depositRecordIdMap[elem.Id] = true } - // this line is used by starport scaffolding # genesis/types/validate + // Check for duplicate LSM token denoms + lsmTokenDepositIdMap := make(map[string]bool) + lsmTokenDepositChainDenomMap := make(map[string]bool) + for _, elem := range gs.LsmTokenDepositList { + if _, ok := lsmTokenDepositIdMap[elem.DepositId]; ok { + return fmt.Errorf("duplicated lsm token deposit ID") + } + lsmTokenDepositIdMap[elem.DepositId] = true + + chainDenomId := elem.ChainId + elem.Denom + if _, ok := lsmTokenDepositChainDenomMap[chainDenomId]; ok { + return fmt.Errorf("duplicated chain ID and denom") + } + + lsmTokenDepositChainDenomMap[chainDenomId] = true + } return gs.Params.Validate() } diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index d183110c80..01b9cb7c66 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -4,13 +4,9 @@ package types import ( - context "context" fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" - grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" - grpc "google.golang.org/grpc" io "io" math "math" math_bits "math/bits" @@ -27,126 +23,30 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type DepositRecord_Status int32 - -const ( - // in transfer queue to be sent to the delegation ICA - DepositRecord_TRANSFER_QUEUE DepositRecord_Status = 0 - // transfer in progress (IBC packet sent, ack not received) - DepositRecord_TRANSFER_IN_PROGRESS DepositRecord_Status = 2 - // in staking queue on delegation ICA - DepositRecord_DELEGATION_QUEUE DepositRecord_Status = 1 - // staking in progress (ICA packet sent, ack not received) - DepositRecord_DELEGATION_IN_PROGRESS DepositRecord_Status = 3 -) - -var DepositRecord_Status_name = map[int32]string{ - 0: "TRANSFER_QUEUE", - 2: "TRANSFER_IN_PROGRESS", - 1: "DELEGATION_QUEUE", - 3: "DELEGATION_IN_PROGRESS", -} - -var DepositRecord_Status_value = map[string]int32{ - "TRANSFER_QUEUE": 0, - "TRANSFER_IN_PROGRESS": 2, - "DELEGATION_QUEUE": 1, - "DELEGATION_IN_PROGRESS": 3, -} - -func (x DepositRecord_Status) String() string { - return proto.EnumName(DepositRecord_Status_name, int32(x)) -} - -func (DepositRecord_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{4, 0} -} - -type DepositRecord_Source int32 - -const ( - DepositRecord_STRIDE DepositRecord_Source = 0 - DepositRecord_WITHDRAWAL_ICA DepositRecord_Source = 1 -) - -var DepositRecord_Source_name = map[int32]string{ - 0: "STRIDE", - 1: "WITHDRAWAL_ICA", -} - -var DepositRecord_Source_value = map[string]int32{ - "STRIDE": 0, - "WITHDRAWAL_ICA": 1, -} - -func (x DepositRecord_Source) String() string { - return proto.EnumName(DepositRecord_Source_name, int32(x)) -} - -func (DepositRecord_Source) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{4, 1} -} - -type HostZoneUnbonding_Status int32 - -const ( - // tokens bonded on delegate account - HostZoneUnbonding_UNBONDING_QUEUE HostZoneUnbonding_Status = 0 - HostZoneUnbonding_UNBONDING_IN_PROGRESS HostZoneUnbonding_Status = 3 - // unbonding completed on delegate account - HostZoneUnbonding_EXIT_TRANSFER_QUEUE HostZoneUnbonding_Status = 1 - HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS HostZoneUnbonding_Status = 4 - // transfer success - HostZoneUnbonding_CLAIMABLE HostZoneUnbonding_Status = 2 -) - -var HostZoneUnbonding_Status_name = map[int32]string{ - 0: "UNBONDING_QUEUE", - 3: "UNBONDING_IN_PROGRESS", - 1: "EXIT_TRANSFER_QUEUE", - 4: "EXIT_TRANSFER_IN_PROGRESS", - 2: "CLAIMABLE", -} - -var HostZoneUnbonding_Status_value = map[string]int32{ - "UNBONDING_QUEUE": 0, - "UNBONDING_IN_PROGRESS": 3, - "EXIT_TRANSFER_QUEUE": 1, - "EXIT_TRANSFER_IN_PROGRESS": 4, - "CLAIMABLE": 2, -} - -func (x HostZoneUnbonding_Status) String() string { - return proto.EnumName(HostZoneUnbonding_Status_name, int32(x)) -} - -func (HostZoneUnbonding_Status) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{5, 0} -} - -type UserRedemptionRecord struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Sender string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` - Denom string `protobuf:"bytes,5,opt,name=denom,proto3" json:"denom,omitempty"` - HostZoneId string `protobuf:"bytes,6,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` - EpochNumber uint64 `protobuf:"varint,7,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"` - ClaimIsPending bool `protobuf:"varint,8,opt,name=claim_is_pending,json=claimIsPending,proto3" json:"claim_is_pending,omitempty"` +// GenesisState defines the records module's genesis state. +type GenesisState struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + PortId string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"` + UserRedemptionRecordList []UserRedemptionRecord `protobuf:"bytes,3,rep,name=user_redemption_record_list,json=userRedemptionRecordList,proto3" json:"user_redemption_record_list"` + UserRedemptionRecordCount uint64 `protobuf:"varint,4,opt,name=user_redemption_record_count,json=userRedemptionRecordCount,proto3" json:"user_redemption_record_count,omitempty"` + EpochUnbondingRecordList []EpochUnbondingRecord `protobuf:"bytes,5,rep,name=epoch_unbonding_record_list,json=epochUnbondingRecordList,proto3" json:"epoch_unbonding_record_list"` + DepositRecordList []DepositRecord `protobuf:"bytes,7,rep,name=deposit_record_list,json=depositRecordList,proto3" json:"deposit_record_list"` + DepositRecordCount uint64 `protobuf:"varint,8,opt,name=deposit_record_count,json=depositRecordCount,proto3" json:"deposit_record_count,omitempty"` + LsmTokenDepositList []LSMTokenDeposit `protobuf:"bytes,9,rep,name=lsm_token_deposit_list,json=lsmTokenDepositList,proto3" json:"lsm_token_deposit_list"` } -func (m *UserRedemptionRecord) Reset() { *m = UserRedemptionRecord{} } -func (m *UserRedemptionRecord) String() string { return proto.CompactTextString(m) } -func (*UserRedemptionRecord) ProtoMessage() {} -func (*UserRedemptionRecord) Descriptor() ([]byte, []int) { +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { return fileDescriptor_98cfd0253c8b6797, []int{0} } -func (m *UserRedemptionRecord) XXX_Unmarshal(b []byte) error { +func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *UserRedemptionRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_UserRedemptionRecord.Marshal(b, m, deterministic) + return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -156,2367 +56,278 @@ func (m *UserRedemptionRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *UserRedemptionRecord) XXX_Merge(src proto.Message) { - xxx_messageInfo_UserRedemptionRecord.Merge(m, src) +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) } -func (m *UserRedemptionRecord) XXX_Size() int { +func (m *GenesisState) XXX_Size() int { return m.Size() } -func (m *UserRedemptionRecord) XXX_DiscardUnknown() { - xxx_messageInfo_UserRedemptionRecord.DiscardUnknown(m) -} - -var xxx_messageInfo_UserRedemptionRecord proto.InternalMessageInfo - -func (m *UserRedemptionRecord) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *UserRedemptionRecord) GetSender() string { - if m != nil { - return m.Sender - } - return "" +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) } -func (m *UserRedemptionRecord) GetReceiver() string { - if m != nil { - return m.Receiver - } - return "" -} +var xxx_messageInfo_GenesisState proto.InternalMessageInfo -func (m *UserRedemptionRecord) GetDenom() string { +func (m *GenesisState) GetParams() Params { if m != nil { - return m.Denom + return m.Params } - return "" + return Params{} } -func (m *UserRedemptionRecord) GetHostZoneId() string { +func (m *GenesisState) GetPortId() string { if m != nil { - return m.HostZoneId + return m.PortId } return "" } -func (m *UserRedemptionRecord) GetEpochNumber() uint64 { - if m != nil { - return m.EpochNumber - } - return 0 -} - -func (m *UserRedemptionRecord) GetClaimIsPending() bool { - if m != nil { - return m.ClaimIsPending - } - return false -} - -// Params defines the parameters for the module. -type Params struct { -} - -func (m *Params) Reset() { *m = Params{} } -func (*Params) ProtoMessage() {} -func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{1} -} -func (m *Params) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Params.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Params) XXX_Merge(src proto.Message) { - xxx_messageInfo_Params.Merge(m, src) -} -func (m *Params) XXX_Size() int { - return m.Size() -} -func (m *Params) XXX_DiscardUnknown() { - xxx_messageInfo_Params.DiscardUnknown(m) -} - -var xxx_messageInfo_Params proto.InternalMessageInfo - -type RecordsPacketData struct { - // Types that are valid to be assigned to Packet: - // - // *RecordsPacketData_NoData - Packet isRecordsPacketData_Packet `protobuf_oneof:"packet"` -} - -func (m *RecordsPacketData) Reset() { *m = RecordsPacketData{} } -func (m *RecordsPacketData) String() string { return proto.CompactTextString(m) } -func (*RecordsPacketData) ProtoMessage() {} -func (*RecordsPacketData) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{2} -} -func (m *RecordsPacketData) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RecordsPacketData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_RecordsPacketData.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *RecordsPacketData) XXX_Merge(src proto.Message) { - xxx_messageInfo_RecordsPacketData.Merge(m, src) -} -func (m *RecordsPacketData) XXX_Size() int { - return m.Size() -} -func (m *RecordsPacketData) XXX_DiscardUnknown() { - xxx_messageInfo_RecordsPacketData.DiscardUnknown(m) -} - -var xxx_messageInfo_RecordsPacketData proto.InternalMessageInfo - -type isRecordsPacketData_Packet interface { - isRecordsPacketData_Packet() - MarshalTo([]byte) (int, error) - Size() int -} - -type RecordsPacketData_NoData struct { - NoData *NoData `protobuf:"bytes,1,opt,name=no_data,json=noData,proto3,oneof" json:"no_data,omitempty"` -} - -func (*RecordsPacketData_NoData) isRecordsPacketData_Packet() {} - -func (m *RecordsPacketData) GetPacket() isRecordsPacketData_Packet { +func (m *GenesisState) GetUserRedemptionRecordList() []UserRedemptionRecord { if m != nil { - return m.Packet - } - return nil -} - -func (m *RecordsPacketData) GetNoData() *NoData { - if x, ok := m.GetPacket().(*RecordsPacketData_NoData); ok { - return x.NoData + return m.UserRedemptionRecordList } return nil } -// XXX_OneofWrappers is for the internal use of the proto package. -func (*RecordsPacketData) XXX_OneofWrappers() []interface{} { - return []interface{}{ - (*RecordsPacketData_NoData)(nil), - } -} - -type NoData struct { -} - -func (m *NoData) Reset() { *m = NoData{} } -func (m *NoData) String() string { return proto.CompactTextString(m) } -func (*NoData) ProtoMessage() {} -func (*NoData) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{3} -} -func (m *NoData) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *NoData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_NoData.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *NoData) XXX_Merge(src proto.Message) { - xxx_messageInfo_NoData.Merge(m, src) -} -func (m *NoData) XXX_Size() int { - return m.Size() -} -func (m *NoData) XXX_DiscardUnknown() { - xxx_messageInfo_NoData.DiscardUnknown(m) -} - -var xxx_messageInfo_NoData proto.InternalMessageInfo - -type DepositRecord struct { - Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` - Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` - HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` - Status DepositRecord_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.DepositRecord_Status" json:"status,omitempty"` - DepositEpochNumber uint64 `protobuf:"varint,7,opt,name=deposit_epoch_number,json=depositEpochNumber,proto3" json:"deposit_epoch_number,omitempty"` - Source DepositRecord_Source `protobuf:"varint,8,opt,name=source,proto3,enum=stride.records.DepositRecord_Source" json:"source,omitempty"` -} - -func (m *DepositRecord) Reset() { *m = DepositRecord{} } -func (m *DepositRecord) String() string { return proto.CompactTextString(m) } -func (*DepositRecord) ProtoMessage() {} -func (*DepositRecord) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{4} -} -func (m *DepositRecord) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DepositRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DepositRecord.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *DepositRecord) XXX_Merge(src proto.Message) { - xxx_messageInfo_DepositRecord.Merge(m, src) -} -func (m *DepositRecord) XXX_Size() int { - return m.Size() -} -func (m *DepositRecord) XXX_DiscardUnknown() { - xxx_messageInfo_DepositRecord.DiscardUnknown(m) -} - -var xxx_messageInfo_DepositRecord proto.InternalMessageInfo - -func (m *DepositRecord) GetId() uint64 { +func (m *GenesisState) GetUserRedemptionRecordCount() uint64 { if m != nil { - return m.Id + return m.UserRedemptionRecordCount } return 0 } -func (m *DepositRecord) GetDenom() string { - if m != nil { - return m.Denom - } - return "" -} - -func (m *DepositRecord) GetHostZoneId() string { +func (m *GenesisState) GetEpochUnbondingRecordList() []EpochUnbondingRecord { if m != nil { - return m.HostZoneId + return m.EpochUnbondingRecordList } - return "" + return nil } -func (m *DepositRecord) GetStatus() DepositRecord_Status { +func (m *GenesisState) GetDepositRecordList() []DepositRecord { if m != nil { - return m.Status + return m.DepositRecordList } - return DepositRecord_TRANSFER_QUEUE + return nil } -func (m *DepositRecord) GetDepositEpochNumber() uint64 { +func (m *GenesisState) GetDepositRecordCount() uint64 { if m != nil { - return m.DepositEpochNumber + return m.DepositRecordCount } return 0 } -func (m *DepositRecord) GetSource() DepositRecord_Source { - if m != nil { - return m.Source - } - return DepositRecord_STRIDE -} - -type HostZoneUnbonding struct { - StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` - NativeTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_token_amount,json=nativeTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_token_amount"` - Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` - HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` - UnbondingTime uint64 `protobuf:"varint,5,opt,name=unbonding_time,json=unbondingTime,proto3" json:"unbonding_time,omitempty"` - Status HostZoneUnbonding_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.HostZoneUnbonding_Status" json:"status,omitempty"` - UserRedemptionRecords []string `protobuf:"bytes,7,rep,name=user_redemption_records,json=userRedemptionRecords,proto3" json:"user_redemption_records,omitempty"` -} - -func (m *HostZoneUnbonding) Reset() { *m = HostZoneUnbonding{} } -func (m *HostZoneUnbonding) String() string { return proto.CompactTextString(m) } -func (*HostZoneUnbonding) ProtoMessage() {} -func (*HostZoneUnbonding) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{5} -} -func (m *HostZoneUnbonding) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *HostZoneUnbonding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_HostZoneUnbonding.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *HostZoneUnbonding) XXX_Merge(src proto.Message) { - xxx_messageInfo_HostZoneUnbonding.Merge(m, src) -} -func (m *HostZoneUnbonding) XXX_Size() int { - return m.Size() -} -func (m *HostZoneUnbonding) XXX_DiscardUnknown() { - xxx_messageInfo_HostZoneUnbonding.DiscardUnknown(m) -} - -var xxx_messageInfo_HostZoneUnbonding proto.InternalMessageInfo - -func (m *HostZoneUnbonding) GetDenom() string { +func (m *GenesisState) GetLsmTokenDepositList() []LSMTokenDeposit { if m != nil { - return m.Denom + return m.LsmTokenDepositList } - return "" + return nil } -func (m *HostZoneUnbonding) GetHostZoneId() string { - if m != nil { - return m.HostZoneId - } - return "" +func init() { + proto.RegisterType((*GenesisState)(nil), "stride.records.GenesisState") } -func (m *HostZoneUnbonding) GetUnbondingTime() uint64 { - if m != nil { - return m.UnbondingTime - } - return 0 -} +func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_98cfd0253c8b6797) } -func (m *HostZoneUnbonding) GetStatus() HostZoneUnbonding_Status { - if m != nil { - return m.Status - } - return HostZoneUnbonding_UNBONDING_QUEUE +var fileDescriptor_98cfd0253c8b6797 = []byte{ + // 418 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x8e, 0x93, 0x40, + 0x1c, 0xc7, 0xc1, 0xc5, 0xae, 0x3b, 0x6b, 0x4c, 0x64, 0x37, 0x15, 0xdb, 0x4a, 0x89, 0xf1, 0xc0, + 0x45, 0xb0, 0xad, 0x77, 0x93, 0xaa, 0x31, 0xc6, 0x9a, 0x18, 0xb0, 0x97, 0x5e, 0x08, 0x30, 0x13, + 0x3a, 0xb1, 0x30, 0x64, 0x66, 0x30, 0xfa, 0x16, 0x3e, 0x56, 0x8f, 0xbd, 0xe9, 0xc9, 0x98, 0xf6, + 0x45, 0x0c, 0x33, 0xd3, 0xa6, 0x10, 0xf6, 0xc4, 0xf0, 0xfb, 0x7d, 0xff, 0x7c, 0x26, 0x19, 0x30, + 0x62, 0x9c, 0x62, 0x88, 0x7c, 0x8a, 0x52, 0x42, 0x21, 0xf3, 0x33, 0x54, 0x20, 0x86, 0x99, 0x57, + 0x52, 0xc2, 0x89, 0xf9, 0x48, 0x6e, 0x3d, 0xb5, 0x1d, 0x0c, 0x5b, 0xea, 0x32, 0xa6, 0x71, 0xae, + 0xc4, 0x83, 0x76, 0x94, 0xfa, 0xaa, 0xed, 0x6d, 0x46, 0x32, 0x22, 0x8e, 0x7e, 0x7d, 0x92, 0xd3, + 0xe7, 0xbf, 0x0d, 0xf0, 0xf0, 0x83, 0xac, 0x0c, 0x79, 0xcc, 0x91, 0xf9, 0x1a, 0xf4, 0x64, 0xa8, + 0xa5, 0x3b, 0xba, 0x7b, 0x3d, 0xed, 0x7b, 0x4d, 0x04, 0xef, 0x8b, 0xd8, 0xce, 0x8d, 0xed, 0xdf, + 0xb1, 0x16, 0x28, 0xad, 0xf9, 0x04, 0x5c, 0x96, 0x84, 0xf2, 0x08, 0x43, 0xeb, 0x9e, 0xa3, 0xbb, + 0x57, 0x41, 0xaf, 0xfe, 0xfd, 0x08, 0x4d, 0x0c, 0x86, 0x15, 0x43, 0x34, 0xa2, 0x08, 0xa2, 0xbc, + 0xe4, 0x98, 0x14, 0x91, 0x0c, 0x8a, 0x36, 0x98, 0x71, 0xeb, 0xc2, 0xb9, 0x70, 0xaf, 0xa7, 0x2f, + 0xda, 0x1d, 0x4b, 0x86, 0x68, 0x70, 0x72, 0x04, 0x62, 0xaa, 0x1a, 0xad, 0xaa, 0x63, 0xb7, 0xc0, + 0x8c, 0x9b, 0x6f, 0xc0, 0xe8, 0x8e, 0xaa, 0x94, 0x54, 0x05, 0xb7, 0x0c, 0x47, 0x77, 0x8d, 0xe0, + 0x69, 0x97, 0xff, 0x6d, 0x2d, 0xa8, 0x59, 0x51, 0x49, 0xd2, 0x75, 0x54, 0x15, 0x09, 0x29, 0x20, + 0x2e, 0xb2, 0x06, 0xeb, 0xfd, 0x6e, 0xd6, 0xf7, 0xb5, 0x65, 0x79, 0x74, 0x34, 0x59, 0x51, 0xc7, + 0x4e, 0xb0, 0x86, 0xe0, 0x06, 0xa2, 0x92, 0x30, 0xcc, 0x1b, 0x15, 0x97, 0xa2, 0xe2, 0x59, 0xbb, + 0xe2, 0x9d, 0x94, 0x36, 0xb2, 0x1f, 0xc3, 0xf3, 0xa1, 0x08, 0x7d, 0x05, 0x6e, 0x5b, 0xa1, 0xf2, + 0xe2, 0x0f, 0xc4, 0xc5, 0xcd, 0x86, 0x41, 0xde, 0x78, 0x05, 0xfa, 0x1b, 0x96, 0x47, 0x9c, 0x7c, + 0x43, 0x45, 0x74, 0xf4, 0x0a, 0x92, 0x2b, 0x41, 0x32, 0x6e, 0x93, 0x2c, 0xc2, 0xcf, 0x5f, 0x6b, + 0xb1, 0x22, 0x52, 0x2c, 0x37, 0x1b, 0x96, 0x9f, 0x8f, 0x6b, 0x9a, 0xf9, 0xa7, 0xed, 0xde, 0xd6, + 0x77, 0x7b, 0x5b, 0xff, 0xb7, 0xb7, 0xf5, 0x5f, 0x07, 0x5b, 0xdb, 0x1d, 0x6c, 0xed, 0xcf, 0xc1, + 0xd6, 0x56, 0x93, 0x0c, 0xf3, 0x75, 0x95, 0x78, 0x29, 0xc9, 0xfd, 0x50, 0xe4, 0xbf, 0x5c, 0xc4, + 0x09, 0xf3, 0xd5, 0xf3, 0xfd, 0x3e, 0x99, 0xf9, 0x3f, 0x4e, 0x8f, 0x98, 0xff, 0x2c, 0x11, 0x4b, + 0x7a, 0xe2, 0xb5, 0xce, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0xec, 0xd2, 0x14, 0x77, 0x2e, 0x03, + 0x00, 0x00, } -func (m *HostZoneUnbonding) GetUserRedemptionRecords() []string { - if m != nil { - return m.UserRedemptionRecords +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - return nil + return dAtA[:n], nil } -type EpochUnbondingRecord struct { - EpochNumber uint64 `protobuf:"varint,1,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"` - HostZoneUnbondings []*HostZoneUnbonding `protobuf:"bytes,3,rep,name=host_zone_unbondings,json=hostZoneUnbondings,proto3" json:"host_zone_unbondings,omitempty"` +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *EpochUnbondingRecord) Reset() { *m = EpochUnbondingRecord{} } -func (m *EpochUnbondingRecord) String() string { return proto.CompactTextString(m) } -func (*EpochUnbondingRecord) ProtoMessage() {} -func (*EpochUnbondingRecord) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{6} -} -func (m *EpochUnbondingRecord) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *EpochUnbondingRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_EpochUnbondingRecord.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *EpochUnbondingRecord) XXX_Merge(src proto.Message) { - xxx_messageInfo_EpochUnbondingRecord.Merge(m, src) -} -func (m *EpochUnbondingRecord) XXX_Size() int { - return m.Size() -} -func (m *EpochUnbondingRecord) XXX_DiscardUnknown() { - xxx_messageInfo_EpochUnbondingRecord.DiscardUnknown(m) -} - -var xxx_messageInfo_EpochUnbondingRecord proto.InternalMessageInfo - -func (m *EpochUnbondingRecord) GetEpochNumber() uint64 { - if m != nil { - return m.EpochNumber - } - return 0 -} - -func (m *EpochUnbondingRecord) GetHostZoneUnbondings() []*HostZoneUnbonding { - if m != nil { - return m.HostZoneUnbondings - } - return nil -} - -// GenesisState defines the recordπs module's genesis state. -// next id: 9 -type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` - PortId string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"` - UserRedemptionRecordList []UserRedemptionRecord `protobuf:"bytes,3,rep,name=user_redemption_record_list,json=userRedemptionRecordList,proto3" json:"user_redemption_record_list"` - UserRedemptionRecordCount uint64 `protobuf:"varint,4,opt,name=user_redemption_record_count,json=userRedemptionRecordCount,proto3" json:"user_redemption_record_count,omitempty"` - EpochUnbondingRecordList []EpochUnbondingRecord `protobuf:"bytes,5,rep,name=epoch_unbonding_record_list,json=epochUnbondingRecordList,proto3" json:"epoch_unbonding_record_list"` - DepositRecordList []DepositRecord `protobuf:"bytes,7,rep,name=deposit_record_list,json=depositRecordList,proto3" json:"deposit_record_list"` - DepositRecordCount uint64 `protobuf:"varint,8,opt,name=deposit_record_count,json=depositRecordCount,proto3" json:"deposit_record_count,omitempty"` -} - -func (m *GenesisState) Reset() { *m = GenesisState{} } -func (m *GenesisState) String() string { return proto.CompactTextString(m) } -func (*GenesisState) ProtoMessage() {} -func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_98cfd0253c8b6797, []int{7} -} -func (m *GenesisState) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GenesisState) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenesisState.Merge(m, src) -} -func (m *GenesisState) XXX_Size() int { - return m.Size() -} -func (m *GenesisState) XXX_DiscardUnknown() { - xxx_messageInfo_GenesisState.DiscardUnknown(m) -} - -var xxx_messageInfo_GenesisState proto.InternalMessageInfo - -func (m *GenesisState) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func (m *GenesisState) GetPortId() string { - if m != nil { - return m.PortId - } - return "" -} - -func (m *GenesisState) GetUserRedemptionRecordList() []UserRedemptionRecord { - if m != nil { - return m.UserRedemptionRecordList - } - return nil -} - -func (m *GenesisState) GetUserRedemptionRecordCount() uint64 { - if m != nil { - return m.UserRedemptionRecordCount - } - return 0 -} - -func (m *GenesisState) GetEpochUnbondingRecordList() []EpochUnbondingRecord { - if m != nil { - return m.EpochUnbondingRecordList - } - return nil -} - -func (m *GenesisState) GetDepositRecordList() []DepositRecord { - if m != nil { - return m.DepositRecordList - } - return nil -} - -func (m *GenesisState) GetDepositRecordCount() uint64 { - if m != nil { - return m.DepositRecordCount - } - return 0 -} - -func init() { - proto.RegisterEnum("stride.records.DepositRecord_Status", DepositRecord_Status_name, DepositRecord_Status_value) - proto.RegisterEnum("stride.records.DepositRecord_Source", DepositRecord_Source_name, DepositRecord_Source_value) - proto.RegisterEnum("stride.records.HostZoneUnbonding_Status", HostZoneUnbonding_Status_name, HostZoneUnbonding_Status_value) - proto.RegisterType((*UserRedemptionRecord)(nil), "stride.records.UserRedemptionRecord") - proto.RegisterType((*Params)(nil), "stride.records.Params") - proto.RegisterType((*RecordsPacketData)(nil), "stride.records.RecordsPacketData") - proto.RegisterType((*NoData)(nil), "stride.records.NoData") - proto.RegisterType((*DepositRecord)(nil), "stride.records.DepositRecord") - proto.RegisterType((*HostZoneUnbonding)(nil), "stride.records.HostZoneUnbonding") - proto.RegisterType((*EpochUnbondingRecord)(nil), "stride.records.EpochUnbondingRecord") - proto.RegisterType((*GenesisState)(nil), "stride.records.GenesisState") -} - -func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_98cfd0253c8b6797) } - -var fileDescriptor_98cfd0253c8b6797 = []byte{ - // 979 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x3d, 0x6f, 0xdb, 0x46, - 0x18, 0x16, 0x45, 0x8a, 0x92, 0x5f, 0xdb, 0x8a, 0x7c, 0x56, 0x6c, 0xda, 0x49, 0x64, 0x85, 0x68, - 0x0b, 0x2d, 0x91, 0x6a, 0xa7, 0xe8, 0x50, 0x14, 0x68, 0x25, 0x4b, 0xb1, 0x99, 0x2a, 0xb2, 0x7a, - 0x92, 0x9a, 0x22, 0x43, 0x09, 0x4a, 0x3c, 0x48, 0x84, 0x43, 0x9e, 0xc0, 0x3b, 0x19, 0x6d, 0x97, - 0xfe, 0x85, 0x0e, 0x1d, 0x3a, 0x76, 0x29, 0xfa, 0x57, 0x32, 0x66, 0x2c, 0x3a, 0x04, 0x85, 0x3d, - 0xf4, 0x47, 0x74, 0x29, 0x78, 0xa4, 0x69, 0xea, 0x23, 0x09, 0x60, 0x74, 0x92, 0xf8, 0x7e, 0xdf, - 0xfb, 0x3c, 0x7c, 0x8e, 0x70, 0x9f, 0x71, 0xdf, 0xb1, 0x49, 0xcd, 0x27, 0x23, 0xea, 0xdb, 0xac, - 0x36, 0x26, 0x1e, 0x61, 0x0e, 0xab, 0x4e, 0x7d, 0xca, 0x29, 0xca, 0x87, 0xde, 0x6a, 0xe4, 0xdd, - 0x2f, 0x8e, 0xe9, 0x98, 0x0a, 0x57, 0x2d, 0xf8, 0x17, 0x46, 0xe9, 0x7f, 0xa4, 0xa1, 0x38, 0x60, - 0xc4, 0xc7, 0xc4, 0x26, 0xee, 0x94, 0x3b, 0xd4, 0xc3, 0x22, 0x1e, 0xe5, 0x21, 0xed, 0xd8, 0x9a, - 0x54, 0x96, 0x2a, 0x6b, 0x38, 0xed, 0xd8, 0x68, 0x07, 0x54, 0x46, 0x3c, 0x9b, 0xf8, 0x5a, 0x5a, - 0xd8, 0xa2, 0x27, 0xb4, 0x0f, 0x39, 0x9f, 0x8c, 0x88, 0x73, 0x41, 0x7c, 0x4d, 0x16, 0x9e, 0xf8, - 0x19, 0x3d, 0x01, 0xd5, 0x72, 0xe9, 0xcc, 0xe3, 0x9a, 0x12, 0x78, 0x1a, 0xd5, 0x57, 0x6f, 0x0e, - 0x52, 0x7f, 0xbd, 0x39, 0xf8, 0x68, 0xec, 0xf0, 0xc9, 0x6c, 0x58, 0x1d, 0x51, 0xb7, 0x36, 0xa2, - 0xcc, 0xa5, 0x2c, 0xfa, 0x79, 0xc4, 0xec, 0xf3, 0x1a, 0xff, 0x61, 0x4a, 0x58, 0xd5, 0xf0, 0x38, - 0x8e, 0xb2, 0x51, 0x11, 0x32, 0x36, 0xf1, 0xa8, 0xab, 0x65, 0x44, 0x83, 0xf0, 0x01, 0x95, 0x61, - 0x63, 0x42, 0x19, 0x37, 0x7f, 0xa4, 0x1e, 0x31, 0x1d, 0x5b, 0x53, 0x85, 0x13, 0x02, 0xdb, 0x0b, - 0xea, 0x11, 0xc3, 0x46, 0x0f, 0x61, 0x83, 0x4c, 0xe9, 0x68, 0x62, 0x7a, 0x33, 0x77, 0x48, 0x7c, - 0x2d, 0x5b, 0x96, 0x2a, 0x0a, 0x5e, 0x17, 0xb6, 0x8e, 0x30, 0xa1, 0x0a, 0x14, 0x46, 0x2f, 0x2d, - 0xc7, 0x35, 0x1d, 0x66, 0x4e, 0x89, 0x67, 0x3b, 0xde, 0x58, 0xcb, 0x95, 0xa5, 0x4a, 0x0e, 0xe7, - 0x85, 0xdd, 0x60, 0xdd, 0xd0, 0xaa, 0xe7, 0x41, 0xed, 0x5a, 0xbe, 0xe5, 0xb2, 0xcf, 0x94, 0x5f, - 0x7f, 0x3b, 0x48, 0xe9, 0x5d, 0xd8, 0x0a, 0x57, 0xc5, 0xba, 0xd6, 0xe8, 0x9c, 0xf0, 0xa6, 0xc5, - 0x2d, 0x74, 0x08, 0x59, 0x8f, 0x9a, 0xb6, 0xc5, 0x2d, 0xb1, 0xba, 0xf5, 0xa3, 0x9d, 0xea, 0x3c, - 0x0c, 0xd5, 0x0e, 0x0d, 0x02, 0x4f, 0x53, 0x58, 0xf5, 0xc4, 0xbf, 0x46, 0x0e, 0xd4, 0xa9, 0x28, - 0xa0, 0xe7, 0x40, 0x0d, 0xbd, 0xfa, 0x3f, 0x32, 0x6c, 0x36, 0xc9, 0x94, 0x32, 0x87, 0x2f, 0xc1, - 0xa1, 0x08, 0x38, 0x6e, 0x56, 0x9b, 0xfe, 0x7f, 0x56, 0x2b, 0xbf, 0x6b, 0xb5, 0xca, 0xd2, 0x6a, - 0x3f, 0x07, 0x95, 0x71, 0x8b, 0xcf, 0x98, 0x58, 0x7b, 0xfe, 0xe8, 0x83, 0xc5, 0x73, 0xce, 0x8d, - 0x5f, 0xed, 0x89, 0x58, 0x1c, 0xe5, 0xa0, 0x8f, 0xa1, 0x68, 0x87, 0x7e, 0x73, 0x05, 0x40, 0x28, - 0xf2, 0xb5, 0x12, 0x38, 0x05, 0xfd, 0xe8, 0xcc, 0x1f, 0x11, 0x81, 0xce, 0xfb, 0xfb, 0x89, 0x58, - 0x1c, 0xe5, 0xe8, 0x13, 0x50, 0xc3, 0x09, 0x10, 0x82, 0x7c, 0x1f, 0xd7, 0x3b, 0xbd, 0x27, 0x2d, - 0x6c, 0x7e, 0x3d, 0x68, 0x0d, 0x5a, 0x85, 0x14, 0xd2, 0xa0, 0x18, 0xdb, 0x8c, 0x8e, 0xd9, 0xc5, - 0x67, 0x27, 0xb8, 0xd5, 0xeb, 0x15, 0xd2, 0xa8, 0x08, 0x85, 0x66, 0xab, 0xdd, 0x3a, 0xa9, 0xf7, - 0x8d, 0xb3, 0x4e, 0x14, 0x2f, 0xa1, 0x7d, 0xd8, 0x49, 0x58, 0x93, 0x19, 0xb2, 0x5e, 0x01, 0x35, - 0xec, 0x8d, 0x00, 0xd4, 0x5e, 0x1f, 0x1b, 0xcd, 0xa0, 0x03, 0x82, 0xfc, 0x73, 0xa3, 0x7f, 0xda, - 0xc4, 0xf5, 0xe7, 0xf5, 0xb6, 0x69, 0x1c, 0xd7, 0x0b, 0xd2, 0x53, 0x25, 0x97, 0x29, 0xa8, 0xfa, - 0xef, 0x0a, 0x6c, 0x9d, 0x46, 0x6b, 0x1d, 0x78, 0x43, 0x2a, 0xb8, 0x86, 0xbe, 0x81, 0x3b, 0x8c, - 0x9b, 0x9c, 0x9e, 0x13, 0xcf, 0x8c, 0x60, 0x96, 0x6e, 0x05, 0xf3, 0x26, 0xe3, 0xfd, 0xa0, 0x4a, - 0x3d, 0x44, 0xfb, 0x3b, 0xd8, 0xf6, 0x2c, 0xee, 0x5c, 0x90, 0xf9, 0xda, 0xb7, 0xa3, 0xd0, 0x56, - 0x58, 0x2a, 0x59, 0xff, 0xb6, 0x6c, 0xfa, 0x10, 0xf2, 0xb3, 0xeb, 0xc3, 0x9b, 0xdc, 0x71, 0x89, - 0x78, 0xd3, 0x15, 0xbc, 0x19, 0x5b, 0xfb, 0x8e, 0x4b, 0xd0, 0x97, 0x0b, 0xa4, 0xab, 0x2c, 0x92, - 0x60, 0x69, 0x93, 0x8b, 0xc4, 0xfb, 0x14, 0x76, 0x67, 0x8c, 0xf8, 0xa6, 0x1f, 0xcb, 0x9d, 0x19, - 0xe5, 0x6a, 0xd9, 0xb2, 0x5c, 0x59, 0xc3, 0x77, 0x67, 0x2b, 0xc4, 0x90, 0xe9, 0x3f, 0xc5, 0x04, - 0xda, 0x86, 0x3b, 0x83, 0x4e, 0xe3, 0xac, 0xd3, 0x34, 0x3a, 0x27, 0x31, 0x83, 0xf6, 0xe0, 0xee, - 0x8d, 0x71, 0x8e, 0x10, 0x68, 0x17, 0xb6, 0x5b, 0xdf, 0x1a, 0x7d, 0x73, 0x81, 0x75, 0x12, 0x7a, - 0x00, 0x7b, 0xf3, 0x8e, 0x64, 0x9e, 0x82, 0x36, 0x61, 0xed, 0xb8, 0x5d, 0x37, 0x9e, 0xd5, 0x1b, - 0xed, 0x56, 0x21, 0xad, 0xff, 0x22, 0x41, 0x51, 0xbc, 0x0f, 0xf1, 0xd1, 0x22, 0x61, 0x58, 0xd4, - 0x38, 0x69, 0x59, 0xe3, 0x7a, 0x50, 0xbc, 0xd9, 0x7f, 0xbc, 0x51, 0xa6, 0xc9, 0x65, 0xb9, 0xb2, - 0x7e, 0xf4, 0xf0, 0xbd, 0x4b, 0xc4, 0x68, 0xb2, 0x68, 0x62, 0x4f, 0x95, 0x5c, 0xba, 0x20, 0xeb, - 0xff, 0xca, 0xb0, 0x71, 0x12, 0x5e, 0x3b, 0xc1, 0x7e, 0x08, 0xfa, 0x24, 0x50, 0xb3, 0x40, 0x25, - 0xdf, 0xa6, 0x7f, 0xa1, 0x86, 0x36, 0x94, 0x80, 0x6c, 0x38, 0x8a, 0x45, 0xbb, 0x90, 0x9d, 0x52, - 0x9f, 0x07, 0xe4, 0x88, 0x6e, 0x97, 0xe0, 0xd1, 0xb0, 0x91, 0x03, 0xf7, 0x56, 0xe3, 0x65, 0xbe, - 0x74, 0x18, 0x8f, 0x4e, 0xb0, 0xa4, 0x05, 0xab, 0x2e, 0xb4, 0xa8, 0xa3, 0xb6, 0x0a, 0xdf, 0xb6, - 0xc3, 0x38, 0xfa, 0x02, 0xee, 0xbf, 0xa5, 0xd5, 0x28, 0xbe, 0xc2, 0x14, 0xbc, 0xb7, 0x2a, 0xff, - 0x58, 0x90, 0xdf, 0x81, 0x7b, 0x21, 0x12, 0x37, 0x54, 0x4e, 0xce, 0x9a, 0x59, 0x3d, 0xeb, 0x2a, - 0x50, 0xaf, 0x67, 0x25, 0x2b, 0x7c, 0x62, 0xd6, 0x1e, 0x6c, 0x5f, 0xeb, 0x67, 0xb2, 0x45, 0x56, - 0xb4, 0x78, 0xf0, 0x4e, 0x69, 0x8c, 0x6a, 0x6f, 0xd9, 0x49, 0xa3, 0x28, 0x9a, 0x10, 0xe5, 0xb9, - 0x83, 0xe7, 0xe6, 0x44, 0x39, 0x71, 0xe2, 0xa3, 0x0c, 0xc8, 0xcf, 0xd8, 0xb8, 0xf1, 0xd5, 0xab, - 0xcb, 0x92, 0xf4, 0xfa, 0xb2, 0x24, 0xfd, 0x7d, 0x59, 0x92, 0x7e, 0xbe, 0x2a, 0xa5, 0x5e, 0x5f, - 0x95, 0x52, 0x7f, 0x5e, 0x95, 0x52, 0x2f, 0x0e, 0x13, 0x52, 0xd2, 0x13, 0x43, 0x3d, 0x6a, 0x5b, - 0x43, 0x56, 0x8b, 0x3e, 0x5c, 0x2e, 0x0e, 0x1f, 0xd7, 0xbe, 0x8f, 0x3f, 0x5f, 0x84, 0xb2, 0x0c, - 0x55, 0xf1, 0x5d, 0xf2, 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xce, 0x5f, 0x69, 0xd5, 0xdd, - 0x08, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// MsgClient is the client API for Msg service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type MsgClient interface { -} - -type msgClient struct { - cc grpc1.ClientConn -} - -func NewMsgClient(cc grpc1.ClientConn) MsgClient { - return &msgClient{cc} -} - -// MsgServer is the server API for Msg service. -type MsgServer interface { -} - -// UnimplementedMsgServer can be embedded to have forward compatible implementations. -type UnimplementedMsgServer struct { -} - -func RegisterMsgServer(s grpc1.Server, srv MsgServer) { - s.RegisterService(&_Msg_serviceDesc, srv) -} - -var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "stride.records.Msg", - HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{}, - Metadata: "stride/records/genesis.proto", -} - -func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *UserRedemptionRecord) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *UserRedemptionRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.ClaimIsPending { - i-- - if m.ClaimIsPending { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x40 - } - if m.EpochNumber != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.EpochNumber)) - i-- - dAtA[i] = 0x38 - } - if len(m.HostZoneId) > 0 { - i -= len(m.HostZoneId) - copy(dAtA[i:], m.HostZoneId) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.HostZoneId))) - i-- - dAtA[i] = 0x32 - } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0x2a - } - { - size := m.Amount.Size() - i -= size - if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - if len(m.Receiver) > 0 { - i -= len(m.Receiver) - copy(dAtA[i:], m.Receiver) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Receiver))) - i-- - dAtA[i] = 0x1a - } - if len(m.Sender) > 0 { - i -= len(m.Sender) - copy(dAtA[i:], m.Sender) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Sender))) - i-- - dAtA[i] = 0x12 - } - if len(m.Id) > 0 { - i -= len(m.Id) - copy(dAtA[i:], m.Id) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Id))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *Params) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Params) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *RecordsPacketData) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *RecordsPacketData) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RecordsPacketData) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Packet != nil { - { - size := m.Packet.Size() - i -= size - if _, err := m.Packet.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - } - } - return len(dAtA) - i, nil -} - -func (m *RecordsPacketData_NoData) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RecordsPacketData_NoData) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - if m.NoData != nil { - { - size, err := m.NoData.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} -func (m *NoData) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *NoData) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *NoData) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - return len(dAtA) - i, nil -} - -func (m *DepositRecord) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DepositRecord) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DepositRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Source != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Source)) - i-- - dAtA[i] = 0x40 - } - if m.DepositEpochNumber != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.DepositEpochNumber)) - i-- - dAtA[i] = 0x38 - } - if m.Status != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Status)) - i-- - dAtA[i] = 0x30 - } - if len(m.HostZoneId) > 0 { - i -= len(m.HostZoneId) - copy(dAtA[i:], m.HostZoneId) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.HostZoneId))) - i-- - dAtA[i] = 0x22 - } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0x1a - } - { - size := m.Amount.Size() - i -= size - if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if m.Id != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Id)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *HostZoneUnbonding) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *HostZoneUnbonding) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *HostZoneUnbonding) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.UserRedemptionRecords) > 0 { - for iNdEx := len(m.UserRedemptionRecords) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.UserRedemptionRecords[iNdEx]) - copy(dAtA[i:], m.UserRedemptionRecords[iNdEx]) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.UserRedemptionRecords[iNdEx]))) - i-- - dAtA[i] = 0x3a - } - } - if m.Status != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.Status)) - i-- - dAtA[i] = 0x30 - } - if m.UnbondingTime != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.UnbondingTime)) - i-- - dAtA[i] = 0x28 - } - if len(m.HostZoneId) > 0 { - i -= len(m.HostZoneId) - copy(dAtA[i:], m.HostZoneId) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.HostZoneId))) - i-- - dAtA[i] = 0x22 - } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0x1a - } - { - size := m.NativeTokenAmount.Size() - i -= size - if _, err := m.NativeTokenAmount.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - { - size := m.StTokenAmount.Size() - i -= size - if _, err := m.StTokenAmount.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *EpochUnbondingRecord) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *EpochUnbondingRecord) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *EpochUnbondingRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.HostZoneUnbondings) > 0 { - for iNdEx := len(m.HostZoneUnbondings) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.HostZoneUnbondings[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if m.EpochNumber != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.EpochNumber)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *GenesisState) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.DepositRecordCount != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.DepositRecordCount)) - i-- - dAtA[i] = 0x40 - } - if len(m.DepositRecordList) > 0 { - for iNdEx := len(m.DepositRecordList) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.DepositRecordList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - } - if len(m.EpochUnbondingRecordList) > 0 { - for iNdEx := len(m.EpochUnbondingRecordList) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.EpochUnbondingRecordList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - } - if m.UserRedemptionRecordCount != 0 { - i = encodeVarintGenesis(dAtA, i, uint64(m.UserRedemptionRecordCount)) - i-- - dAtA[i] = 0x20 - } - if len(m.UserRedemptionRecordList) > 0 { - for iNdEx := len(m.UserRedemptionRecordList) - 1; iNdEx >= 0; iNdEx-- { + if len(m.LsmTokenDepositList) > 0 { + for iNdEx := len(m.LsmTokenDepositList) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.UserRedemptionRecordList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - } - if len(m.PortId) > 0 { - i -= len(m.PortId) - copy(dAtA[i:], m.PortId) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.PortId))) - i-- - dAtA[i] = 0x12 - } - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { - offset -= sovGenesis(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *UserRedemptionRecord) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Id) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.Sender) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.Receiver) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = m.Amount.Size() - n += 1 + l + sovGenesis(uint64(l)) - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.HostZoneId) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - if m.EpochNumber != 0 { - n += 1 + sovGenesis(uint64(m.EpochNumber)) - } - if m.ClaimIsPending { - n += 2 - } - return n -} - -func (m *Params) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *RecordsPacketData) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Packet != nil { - n += m.Packet.Size() - } - return n -} - -func (m *RecordsPacketData_NoData) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.NoData != nil { - l = m.NoData.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - return n -} -func (m *NoData) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *DepositRecord) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Id != 0 { - n += 1 + sovGenesis(uint64(m.Id)) - } - l = m.Amount.Size() - n += 1 + l + sovGenesis(uint64(l)) - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.HostZoneId) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - if m.Status != 0 { - n += 1 + sovGenesis(uint64(m.Status)) - } - if m.DepositEpochNumber != 0 { - n += 1 + sovGenesis(uint64(m.DepositEpochNumber)) - } - if m.Source != 0 { - n += 1 + sovGenesis(uint64(m.Source)) - } - return n -} - -func (m *HostZoneUnbonding) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.StTokenAmount.Size() - n += 1 + l + sovGenesis(uint64(l)) - l = m.NativeTokenAmount.Size() - n += 1 + l + sovGenesis(uint64(l)) - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - l = len(m.HostZoneId) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - if m.UnbondingTime != 0 { - n += 1 + sovGenesis(uint64(m.UnbondingTime)) - } - if m.Status != 0 { - n += 1 + sovGenesis(uint64(m.Status)) - } - if len(m.UserRedemptionRecords) > 0 { - for _, s := range m.UserRedemptionRecords { - l = len(s) - n += 1 + l + sovGenesis(uint64(l)) - } - } - return n -} - -func (m *EpochUnbondingRecord) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.EpochNumber != 0 { - n += 1 + sovGenesis(uint64(m.EpochNumber)) - } - if len(m.HostZoneUnbondings) > 0 { - for _, e := range m.HostZoneUnbondings { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - return n -} - -func (m *GenesisState) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovGenesis(uint64(l)) - l = len(m.PortId) - if l > 0 { - n += 1 + l + sovGenesis(uint64(l)) - } - if len(m.UserRedemptionRecordList) > 0 { - for _, e := range m.UserRedemptionRecordList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if m.UserRedemptionRecordCount != 0 { - n += 1 + sovGenesis(uint64(m.UserRedemptionRecordCount)) - } - if len(m.EpochUnbondingRecordList) > 0 { - for _, e := range m.EpochUnbondingRecordList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if len(m.DepositRecordList) > 0 { - for _, e := range m.DepositRecordList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if m.DepositRecordCount != 0 { - n += 1 + sovGenesis(uint64(m.DepositRecordCount)) - } - return n -} - -func sovGenesis(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGenesis(x uint64) (n int) { - return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *UserRedemptionRecord) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UserRedemptionRecord: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UserRedemptionRecord: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Id = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Sender = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Receiver = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Denom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HostZoneId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.HostZoneId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EpochNumber", wireType) - } - m.EpochNumber = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.EpochNumber |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ClaimIsPending", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ClaimIsPending = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Params) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Params: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *RecordsPacketData) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: RecordsPacketData: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RecordsPacketData: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NoData", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &NoData{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Packet = &RecordsPacketData_NoData{v} - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *NoData) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: NoData: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: NoData: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DepositRecord) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DepositRecord: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DepositRecord: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - m.Id = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Id |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Denom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HostZoneId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.HostZoneId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - m.Status = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Status |= DepositRecord_Status(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DepositEpochNumber", wireType) - } - m.DepositEpochNumber = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.DepositEpochNumber |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) - } - m.Source = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Source |= DepositRecord_Source(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *HostZoneUnbonding) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: HostZoneUnbonding: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: HostZoneUnbonding: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StTokenAmount", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.StTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NativeTokenAmount", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.NativeTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Denom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HostZoneId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.HostZoneId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field UnbondingTime", wireType) - } - m.UnbondingTime = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.UnbondingTime |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - m.Status = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Status |= HostZoneUnbonding_Status(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserRedemptionRecords", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - 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 ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF + size, err := m.LsmTokenDepositList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) } - m.UserRedemptionRecords = append(m.UserRedemptionRecords, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err + i-- + dAtA[i] = 0x4a + } + } + if m.DepositRecordCount != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.DepositRecordCount)) + i-- + dAtA[i] = 0x40 + } + if len(m.DepositRecordList) > 0 { + for iNdEx := len(m.DepositRecordList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DepositRecordList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis + i-- + dAtA[i] = 0x3a + } + } + if len(m.EpochUnbondingRecordList) > 0 { + for iNdEx := len(m.EpochUnbondingRecordList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EpochUnbondingRecordList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF + i-- + dAtA[i] = 0x2a + } + } + if m.UserRedemptionRecordCount != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.UserRedemptionRecordCount)) + i-- + dAtA[i] = 0x20 + } + if len(m.UserRedemptionRecordList) > 0 { + for iNdEx := len(m.UserRedemptionRecordList) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UserRedemptionRecordList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) } - iNdEx += skippy + i-- + dAtA[i] = 0x1a + } + } + if len(m.PortId) > 0 { + i -= len(m.PortId) + copy(dAtA[i:], m.PortId) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.PortId))) + i-- + dAtA[i] = 0x12 + } + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} - if iNdEx > l { - return io.ErrUnexpectedEOF +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ } - return nil + dAtA[offset] = uint8(v) + return base } -func (m *EpochUnbondingRecord) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + l = len(m.PortId) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + if len(m.UserRedemptionRecordList) > 0 { + for _, e := range m.UserRedemptionRecordList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: EpochUnbondingRecord: wiretype end group for non-group") + } + if m.UserRedemptionRecordCount != 0 { + n += 1 + sovGenesis(uint64(m.UserRedemptionRecordCount)) + } + if len(m.EpochUnbondingRecordList) > 0 { + for _, e := range m.EpochUnbondingRecordList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) } - if fieldNum <= 0 { - return fmt.Errorf("proto: EpochUnbondingRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + if len(m.DepositRecordList) > 0 { + for _, e := range m.DepositRecordList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EpochNumber", wireType) - } - m.EpochNumber = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.EpochNumber |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HostZoneUnbondings", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.HostZoneUnbondings = append(m.HostZoneUnbondings, &HostZoneUnbonding{}) - if err := m.HostZoneUnbondings[len(m.HostZoneUnbondings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy + } + if m.DepositRecordCount != 0 { + n += 1 + sovGenesis(uint64(m.DepositRecordCount)) + } + if len(m.LsmTokenDepositList) > 0 { + for _, e := range m.LsmTokenDepositList { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) } } + return n +} - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } func (m *GenesisState) Unmarshal(dAtA []byte) error { l := len(dAtA) @@ -2752,6 +563,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { break } } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LsmTokenDepositList", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LsmTokenDepositList = append(m.LsmTokenDepositList, LSMTokenDeposit{}) + if err := m.LsmTokenDepositList[len(m.LsmTokenDepositList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/records/types/genesis_test.go b/x/records/types/genesis_test.go index f3723159c0..4455efd114 100644 --- a/x/records/types/genesis_test.go +++ b/x/records/types/genesis_test.go @@ -50,7 +50,55 @@ func TestGenesisState_Validate(t *testing.T) { }, valid: false, }, - // this line is used by starport scaffolding # types/genesis/testcase + { + desc: "duplicated lsm token deposit id", + genState: &types.GenesisState{ + LsmTokenDepositList: []types.LSMTokenDeposit{ + { + DepositId: "1", + }, + { + DepositId: "1", + }, + }, + }, + valid: false, + }, + { + desc: "duplicated lsm token deposit id", + genState: &types.GenesisState{ + LsmTokenDepositList: []types.LSMTokenDeposit{ + { + ChainId: "chain-1", + Denom: "denom1", + }, + { + ChainId: "chain-1", + Denom: "denom1", + }, + }, + }, + valid: false, + }, + { + desc: "valid lsm token deposits", + genState: &types.GenesisState{ + PortId: "port-1", + LsmTokenDepositList: []types.LSMTokenDeposit{ + { + DepositId: "1", + ChainId: "chain-1", + Denom: "denom1", + }, + { + DepositId: "2", + ChainId: "chain-2", + Denom: "denom2", + }, + }, + }, + valid: true, + }, } { t.Run(tc.desc, func(t *testing.T) { err := tc.genState.Validate() diff --git a/x/records/types/keys.go b/x/records/types/keys.go index 6d354f89a3..9dec507da3 100644 --- a/x/records/types/keys.go +++ b/x/records/types/keys.go @@ -30,6 +30,11 @@ func KeyPrefix(p string) []byte { return []byte(p) } +// Create the LSMTokenDeposit prefix as chainId + denom +func GetLSMTokenDepositKey(chainId, denom string) []byte { + return append([]byte(chainId), []byte(denom)...) +} + const ( UserRedemptionRecordKey = "UserRedemptionRecord-value-" UserRedemptionRecordCountKey = "UserRedemptionRecord-count-" @@ -40,4 +45,5 @@ const ( EpochUnbondingRecordCountKey = "EpochUnbondingRecord-count-" DepositRecordKey = "DepositRecord-value-" DepositRecordCountKey = "DepositRecord-count-" + LSMTokenDepositKey = "LSMTokenDeposit" ) diff --git a/x/records/types/params.go b/x/records/types/params.go index 357196ad6a..4f3215e350 100644 --- a/x/records/types/params.go +++ b/x/records/types/params.go @@ -2,7 +2,6 @@ package types import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "gopkg.in/yaml.v2" ) var _ paramtypes.ParamSet = (*Params)(nil) @@ -31,9 +30,3 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { func (p Params) Validate() error { return nil } - -// String implements the Stringer interface. -func (p Params) String() string { - out, _ := yaml.Marshal(p) - return string(out) -} diff --git a/x/records/types/params.pb.go b/x/records/types/params.pb.go new file mode 100644 index 0000000000..9410ce59a6 --- /dev/null +++ b/x/records/types/params.pb.go @@ -0,0 +1,263 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/records/params.proto + +package types + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the parameters for the module. +type Params struct { +} + +func (m *Params) Reset() { *m = Params{} } +func (m *Params) String() string { return proto.CompactTextString(m) } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_5d92633ea4bee482, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +func init() { + proto.RegisterType((*Params)(nil), "stride.records.Params") +} + +func init() { proto.RegisterFile("stride/records/params.proto", fileDescriptor_5d92633ea4bee482) } + +var fileDescriptor_5d92633ea4bee482 = []byte{ + // 136 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2e, 0x2e, 0x29, 0xca, + 0x4c, 0x49, 0xd5, 0x2f, 0x4a, 0x4d, 0xce, 0x2f, 0x4a, 0x29, 0xd6, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, + 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x83, 0x48, 0xea, 0x41, 0x25, 0x95, 0x38, + 0xb8, 0xd8, 0x02, 0xc0, 0xf2, 0x4e, 0xde, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, + 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, + 0x10, 0x65, 0x98, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0xd6, + 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0x6e, 0x5b, + 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x36, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xab, 0xe6, 0x6f, 0xd2, 0x8c, 0x00, 0x00, 0x00, +} + +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintParams(dAtA []byte, offset int, v uint64) int { + offset -= sovParams(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovParams(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozParams(x uint64) (n int) { + return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipParams(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthParams + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipParams(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthParams + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupParams + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthParams + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index 89db54367d..77bca53694 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -890,6 +890,206 @@ func (m *QueryAllEpochUnbondingRecordResponse) GetPagination() *query.PageRespon return nil } +type QueryLSMDepositRequest struct { + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` +} + +func (m *QueryLSMDepositRequest) Reset() { *m = QueryLSMDepositRequest{} } +func (m *QueryLSMDepositRequest) String() string { return proto.CompactTextString(m) } +func (*QueryLSMDepositRequest) ProtoMessage() {} +func (*QueryLSMDepositRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_25e7cc311be81f7b, []int{18} +} +func (m *QueryLSMDepositRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLSMDepositRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLSMDepositRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryLSMDepositRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLSMDepositRequest.Merge(m, src) +} +func (m *QueryLSMDepositRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryLSMDepositRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLSMDepositRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryLSMDepositRequest proto.InternalMessageInfo + +func (m *QueryLSMDepositRequest) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *QueryLSMDepositRequest) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +type QueryLSMDepositResponse struct { + Deposit LSMTokenDeposit `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit"` +} + +func (m *QueryLSMDepositResponse) Reset() { *m = QueryLSMDepositResponse{} } +func (m *QueryLSMDepositResponse) String() string { return proto.CompactTextString(m) } +func (*QueryLSMDepositResponse) ProtoMessage() {} +func (*QueryLSMDepositResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_25e7cc311be81f7b, []int{19} +} +func (m *QueryLSMDepositResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLSMDepositResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLSMDepositResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryLSMDepositResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLSMDepositResponse.Merge(m, src) +} +func (m *QueryLSMDepositResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryLSMDepositResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLSMDepositResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryLSMDepositResponse proto.InternalMessageInfo + +func (m *QueryLSMDepositResponse) GetDeposit() LSMTokenDeposit { + if m != nil { + return m.Deposit + } + return LSMTokenDeposit{} +} + +type QueryLSMDepositsRequest struct { + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` +} + +func (m *QueryLSMDepositsRequest) Reset() { *m = QueryLSMDepositsRequest{} } +func (m *QueryLSMDepositsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryLSMDepositsRequest) ProtoMessage() {} +func (*QueryLSMDepositsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_25e7cc311be81f7b, []int{20} +} +func (m *QueryLSMDepositsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLSMDepositsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLSMDepositsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryLSMDepositsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLSMDepositsRequest.Merge(m, src) +} +func (m *QueryLSMDepositsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryLSMDepositsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLSMDepositsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryLSMDepositsRequest proto.InternalMessageInfo + +func (m *QueryLSMDepositsRequest) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *QueryLSMDepositsRequest) GetValidatorAddress() string { + if m != nil { + return m.ValidatorAddress + } + return "" +} + +func (m *QueryLSMDepositsRequest) GetStatus() string { + if m != nil { + return m.Status + } + return "" +} + +type QueryLSMDepositsResponse struct { + Deposits []LSMTokenDeposit `protobuf:"bytes,1,rep,name=deposits,proto3" json:"deposits"` +} + +func (m *QueryLSMDepositsResponse) Reset() { *m = QueryLSMDepositsResponse{} } +func (m *QueryLSMDepositsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryLSMDepositsResponse) ProtoMessage() {} +func (*QueryLSMDepositsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_25e7cc311be81f7b, []int{21} +} +func (m *QueryLSMDepositsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryLSMDepositsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryLSMDepositsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryLSMDepositsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryLSMDepositsResponse.Merge(m, src) +} +func (m *QueryLSMDepositsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryLSMDepositsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryLSMDepositsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryLSMDepositsResponse proto.InternalMessageInfo + +func (m *QueryLSMDepositsResponse) GetDeposits() []LSMTokenDeposit { + if m != nil { + return m.Deposits + } + return nil +} + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "stride.records.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "stride.records.QueryParamsResponse") @@ -909,75 +1109,91 @@ func init() { proto.RegisterType((*QueryGetEpochUnbondingRecordResponse)(nil), "stride.records.QueryGetEpochUnbondingRecordResponse") proto.RegisterType((*QueryAllEpochUnbondingRecordRequest)(nil), "stride.records.QueryAllEpochUnbondingRecordRequest") proto.RegisterType((*QueryAllEpochUnbondingRecordResponse)(nil), "stride.records.QueryAllEpochUnbondingRecordResponse") + proto.RegisterType((*QueryLSMDepositRequest)(nil), "stride.records.QueryLSMDepositRequest") + proto.RegisterType((*QueryLSMDepositResponse)(nil), "stride.records.QueryLSMDepositResponse") + proto.RegisterType((*QueryLSMDepositsRequest)(nil), "stride.records.QueryLSMDepositsRequest") + proto.RegisterType((*QueryLSMDepositsResponse)(nil), "stride.records.QueryLSMDepositsResponse") } func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25e7cc311be81f7b) } var fileDescriptor_25e7cc311be81f7b = []byte{ - // 1002 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0xcf, 0x64, 0x93, 0x94, 0xbe, 0x36, 0x51, 0x35, 0x5d, 0x95, 0xb0, 0xb4, 0xdb, 0xd4, 0xa9, - 0xf8, 0x13, 0x52, 0x0f, 0x9b, 0x04, 0x55, 0x94, 0x03, 0x4a, 0x0b, 0x69, 0x42, 0x51, 0x55, 0x8c, - 0x7a, 0xe9, 0x01, 0xd7, 0x5e, 0x4f, 0x1c, 0x0b, 0xaf, 0xc7, 0xf5, 0x78, 0x2b, 0x96, 0x65, 0x2f, - 0x9c, 0x38, 0x22, 0xf1, 0x11, 0x10, 0xdf, 0x80, 0x0b, 0x37, 0xc4, 0x29, 0x07, 0x0e, 0xad, 0xb8, - 0xf4, 0x84, 0x50, 0xc2, 0xe7, 0x40, 0xc8, 0x33, 0xb3, 0xc9, 0x7a, 0x3b, 0x76, 0x76, 0xa3, 0xe5, - 0xc0, 0xcd, 0x9e, 0xf7, 0xef, 0xf7, 0x7b, 0xf3, 0xde, 0xbc, 0x19, 0xa8, 0xf1, 0x34, 0x09, 0x3c, - 0x4a, 0x12, 0xda, 0x64, 0x89, 0xc7, 0xc9, 0x93, 0x36, 0x4d, 0x3a, 0x66, 0x9c, 0xb0, 0x94, 0xe1, - 0x05, 0x29, 0x33, 0x95, 0xac, 0x56, 0xf5, 0x99, 0xcf, 0x84, 0x88, 0x64, 0x5f, 0x52, 0xab, 0x76, - 0xd9, 0x67, 0xcc, 0x0f, 0x29, 0x71, 0xe2, 0x80, 0x38, 0x51, 0xc4, 0x52, 0x27, 0x0d, 0x58, 0xc4, - 0x95, 0x74, 0xa5, 0xc9, 0x78, 0x8b, 0x71, 0xe2, 0x3a, 0x9c, 0x4a, 0xe7, 0xe4, 0x69, 0xc3, 0xa5, - 0xa9, 0xd3, 0x20, 0xb1, 0xe3, 0x07, 0x91, 0x50, 0xee, 0x7b, 0x1a, 0xc2, 0xe2, 0xd3, 0x88, 0xf2, - 0x40, 0x79, 0x32, 0xaa, 0x80, 0x3f, 0xcb, 0xec, 0x1f, 0x38, 0x89, 0xd3, 0xe2, 0x16, 0x7d, 0xd2, - 0xa6, 0x3c, 0x35, 0xee, 0xc1, 0xc5, 0xdc, 0x2a, 0x8f, 0x59, 0xc4, 0x29, 0xde, 0x80, 0xb9, 0x58, - 0xac, 0x2c, 0xa2, 0x25, 0xf4, 0xd6, 0xb9, 0xb5, 0x4b, 0x66, 0x9e, 0x8b, 0x29, 0xf5, 0x6f, 0xcf, - 0xec, 0xff, 0x79, 0x75, 0xca, 0x52, 0xba, 0x86, 0x09, 0x97, 0x85, 0xb3, 0xbb, 0x34, 0xfd, 0x88, - 0xc6, 0x8c, 0x07, 0xa9, 0x25, 0xd4, 0x55, 0x30, 0xbc, 0x00, 0xd3, 0x81, 0x27, 0x3c, 0xce, 0x58, - 0xd3, 0x81, 0x67, 0x7c, 0x09, 0x57, 0x0a, 0xf4, 0x15, 0x8c, 0x4f, 0x60, 0xc1, 0x93, 0x02, 0x5b, - 0x06, 0x56, 0x70, 0xae, 0x0c, 0xc3, 0xc9, 0x99, 0x2b, 0x54, 0xf3, 0xde, 0xe0, 0xa2, 0xb1, 0xab, - 0xc0, 0x6d, 0x86, 0xa1, 0x16, 0xdc, 0x16, 0xc0, 0x71, 0x46, 0x55, 0x9c, 0x37, 0x4c, 0x99, 0x7e, - 0x33, 0x4b, 0xbf, 0x29, 0xf7, 0x56, 0xa5, 0xdf, 0x7c, 0xe0, 0xf8, 0x54, 0xd9, 0x5a, 0x03, 0x96, - 0xc6, 0xcf, 0x48, 0xb1, 0x7a, 0x39, 0x50, 0x09, 0xab, 0xca, 0xe9, 0x58, 0xe1, 0xbb, 0x39, 0xd4, - 0xd3, 0x02, 0xf5, 0x9b, 0x27, 0xa2, 0x96, 0x40, 0x72, 0xb0, 0xef, 0xc0, 0x55, 0x81, 0x3a, 0x1f, - 0xb3, 0xb3, 0xcd, 0x78, 0xda, 0xcf, 0xd0, 0x12, 0x9c, 0xdf, 0x63, 0x3c, 0xb5, 0xbf, 0x66, 0x11, - 0xb5, 0xd5, 0x46, 0x9e, 0xb5, 0x20, 0x5b, 0x7b, 0xc4, 0x22, 0xba, 0xe3, 0x19, 0x11, 0x2c, 0x15, - 0x3b, 0x99, 0x3c, 0x7b, 0xe3, 0x3d, 0x58, 0xee, 0x17, 0xd0, 0x43, 0x4e, 0x13, 0x8b, 0x7a, 0xb4, - 0x15, 0x67, 0x74, 0x8a, 0xea, 0xee, 0xac, 0xa8, 0xbb, 0xef, 0x10, 0x5c, 0x2f, 0xb7, 0x53, 0x58, - 0x1f, 0xc3, 0xa5, 0x36, 0xa7, 0x89, 0x9d, 0x1c, 0x29, 0xe4, 0xeb, 0xf0, 0xfa, 0x30, 0x66, 0x9d, - 0x37, 0x05, 0xbd, 0xda, 0xd6, 0xc8, 0x8c, 0x96, 0x62, 0xb0, 0x19, 0x86, 0x65, 0x0c, 0x26, 0x55, - 0x9c, 0xcf, 0xfb, 0xcc, 0x0b, 0xe3, 0x8d, 0xc0, 0xbc, 0x32, 0x09, 0xe6, 0x93, 0xab, 0xdc, 0xe7, - 0x08, 0x56, 0xca, 0x38, 0x6d, 0xb1, 0x44, 0x2e, 0xcb, 0x54, 0xbe, 0x06, 0xaf, 0x34, 0xf7, 0x9c, - 0x20, 0x3a, 0xae, 0xe0, 0x33, 0xe2, 0x7f, 0xc7, 0xc3, 0x17, 0xa0, 0xe2, 0x39, 0x1d, 0x81, 0x65, - 0xc6, 0xca, 0x3e, 0xf1, 0x22, 0x9c, 0x71, 0x3c, 0x2f, 0xa1, 0x9c, 0x2f, 0x56, 0xa4, 0xae, 0xfa, - 0xc5, 0x55, 0x98, 0x0d, 0x83, 0x56, 0x90, 0x2e, 0xce, 0x08, 0x6d, 0xf9, 0x33, 0xb4, 0x4f, 0xb3, - 0xa7, 0xde, 0xa7, 0x17, 0x08, 0xde, 0x19, 0x89, 0xd3, 0xff, 0x6f, 0xbb, 0xb6, 0x8f, 0x7b, 0xf6, - 0xe3, 0x98, 0x35, 0xf7, 0x1e, 0x46, 0x2e, 0x8b, 0xbc, 0x20, 0xf2, 0xf3, 0x15, 0x7f, 0x0d, 0xce, - 0xd3, 0x4c, 0x6c, 0x47, 0xed, 0x96, 0x4b, 0x13, 0x35, 0x35, 0xce, 0x89, 0xb5, 0xfb, 0x62, 0x29, - 0xd7, 0xc6, 0x7a, 0x57, 0xc7, 0xd9, 0x91, 0xbe, 0xda, 0x7d, 0x85, 0x13, 0xda, 0x58, 0xe7, 0xad, - 0x9f, 0x1d, 0xaa, 0x91, 0x0d, 0xb6, 0x71, 0x19, 0xa9, 0xff, 0xa2, 0x8d, 0x4f, 0xcd, 0xbc, 0x32, - 0x09, 0xe6, 0x13, 0xab, 0x8b, 0xb5, 0x5f, 0xe6, 0x61, 0x56, 0x70, 0xc2, 0xdf, 0xc0, 0x9c, 0xbc, - 0x5e, 0x60, 0x63, 0x18, 0xde, 0xcb, 0x37, 0x98, 0xda, 0x72, 0xa9, 0x8e, 0x0c, 0x64, 0xbc, 0xfd, - 0xed, 0x1f, 0x7f, 0xff, 0x30, 0xbd, 0x8c, 0xaf, 0x91, 0xcf, 0x85, 0xf2, 0xa7, 0x8e, 0xcb, 0xc9, - 0xd0, 0x75, 0x49, 0x5e, 0x62, 0xf0, 0x6f, 0x08, 0xaa, 0xba, 0xee, 0xc0, 0xeb, 0xda, 0x40, 0xe5, - 0xa3, 0xa7, 0xb6, 0x31, 0x9e, 0x91, 0x82, 0xfb, 0xa1, 0x80, 0xfb, 0x3e, 0xbe, 0xa9, 0xe0, 0xde, - 0xd0, 0xe1, 0xd5, 0x37, 0x3c, 0xe9, 0x06, 0x5e, 0x0f, 0xff, 0x8a, 0xe0, 0x55, 0x5d, 0x84, 0xcd, - 0x30, 0x2c, 0xe0, 0x51, 0x3e, 0x80, 0x0a, 0x78, 0x9c, 0x30, 0x45, 0x8c, 0x5b, 0x82, 0xc7, 0x06, - 0x5e, 0x1b, 0x9f, 0x07, 0xfe, 0x07, 0xc1, 0xeb, 0x25, 0x47, 0x1f, 0xbe, 0x35, 0x0e, 0xa2, 0xfc, - 0x0c, 0xa8, 0x7d, 0x70, 0x2a, 0x5b, 0x45, 0x6a, 0x57, 0x90, 0x7a, 0x8c, 0xbf, 0x18, 0x9f, 0x94, - 0xbd, 0xcb, 0x12, 0x3b, 0x13, 0x91, 0x6e, 0x7f, 0x06, 0xf5, 0x48, 0xd7, 0x73, 0x3a, 0x3d, 0xd2, - 0x55, 0x83, 0xa5, 0x47, 0xba, 0x62, 0x94, 0xf4, 0xf0, 0xef, 0x08, 0xaa, 0xba, 0x76, 0x2c, 0x2e, - 0xc4, 0x92, 0xa3, 0xa7, 0xb8, 0x10, 0xcb, 0xce, 0x0f, 0x63, 0x47, 0x70, 0xbd, 0x83, 0x37, 0xcb, - 0xb8, 0xea, 0x4f, 0x18, 0xd2, 0x1d, 0x3c, 0xbf, 0x65, 0x49, 0xea, 0x62, 0x95, 0x96, 0xe4, 0xf8, - 0x8c, 0x4e, 0x38, 0x11, 0x47, 0x2b, 0x49, 0x3d, 0x23, 0xfc, 0x13, 0x82, 0xf9, 0xdc, 0xad, 0x14, - 0xaf, 0x16, 0x65, 0x55, 0xf7, 0xc4, 0xa8, 0xdd, 0x18, 0x51, 0x5b, 0x41, 0xbd, 0x29, 0xa0, 0x36, - 0x30, 0x29, 0x83, 0x9a, 0xbf, 0x4b, 0xcb, 0xee, 0xff, 0x11, 0xc1, 0x85, 0x9c, 0xcb, 0x2c, 0xc7, - 0xab, 0x45, 0xe9, 0x1a, 0x03, 0x6a, 0xd1, 0x93, 0xc6, 0x58, 0x13, 0x50, 0x57, 0xf1, 0xca, 0xe8, - 0x50, 0xf1, 0x3e, 0x82, 0x8b, 0x9a, 0x87, 0x02, 0x26, 0xda, 0xd0, 0xc5, 0xef, 0x92, 0xda, 0xbb, - 0xa3, 0x1b, 0x28, 0xb8, 0xf7, 0x05, 0xdc, 0x6d, 0xbc, 0x35, 0x3a, 0x5c, 0xdb, 0xed, 0xd8, 0x47, - 0xaf, 0x1f, 0xd2, 0x1d, 0x7c, 0x08, 0xf5, 0x6e, 0xdf, 0xdb, 0x3f, 0xa8, 0xa3, 0x67, 0x07, 0x75, - 0xf4, 0xd7, 0x41, 0x1d, 0x7d, 0x7f, 0x58, 0x9f, 0x7a, 0x76, 0x58, 0x9f, 0x7a, 0x71, 0x58, 0x9f, - 0x7a, 0xd4, 0xf0, 0x83, 0x74, 0xaf, 0xed, 0x9a, 0x4d, 0xd6, 0xd2, 0xc5, 0x7a, 0xda, 0x58, 0x27, - 0x5f, 0x1d, 0x45, 0x4c, 0x3b, 0x31, 0xe5, 0xee, 0x9c, 0x78, 0xaf, 0xaf, 0xff, 0x1b, 0x00, 0x00, - 0xff, 0xff, 0xa6, 0x12, 0x4a, 0x24, 0x5b, 0x10, 0x00, 0x00, + // 1191 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xc7, 0xb3, 0x79, 0x6b, 0xf3, 0xa4, 0x0d, 0x61, 0x6a, 0xa5, 0xc1, 0x4d, 0x9d, 0x74, 0x53, + 0xf5, 0x25, 0x49, 0x3d, 0x38, 0x09, 0xaa, 0x68, 0x85, 0x2a, 0x37, 0x90, 0x26, 0x34, 0xad, 0x8a, + 0x43, 0x2f, 0x91, 0x60, 0xbb, 0xf6, 0x4e, 0x9c, 0x55, 0xec, 0x1d, 0x77, 0x67, 0x1d, 0x61, 0x8c, + 0x2f, 0x9c, 0x38, 0x22, 0xf5, 0x1b, 0x80, 0xf8, 0x06, 0x7c, 0x00, 0xc4, 0x29, 0x07, 0x0e, 0xad, + 0xb8, 0xf4, 0x84, 0x50, 0xc2, 0x47, 0xe0, 0x8c, 0x90, 0x67, 0x66, 0x6d, 0xaf, 0x3d, 0xbb, 0xb6, + 0x23, 0x73, 0xe0, 0x14, 0xef, 0xcc, 0x33, 0xcf, 0xf3, 0xfb, 0x3f, 0xf3, 0xcc, 0x5b, 0x20, 0xce, + 0x3c, 0xd7, 0xb6, 0x08, 0x76, 0x49, 0x8e, 0xba, 0x16, 0xc3, 0x2f, 0xcb, 0xc4, 0xad, 0x24, 0x4b, + 0x2e, 0xf5, 0x28, 0x9a, 0x12, 0x7d, 0x49, 0xd9, 0x17, 0x9f, 0x6b, 0xb3, 0x95, 0x7f, 0x85, 0x75, + 0xfc, 0x4a, 0x5b, 0x6f, 0xc9, 0x74, 0xcd, 0xa2, 0xdf, 0x19, 0xcb, 0xd3, 0x3c, 0xe5, 0x3f, 0x71, + 0xfd, 0x97, 0x6c, 0x9d, 0xcb, 0x53, 0x9a, 0x2f, 0x10, 0x6c, 0x96, 0x6c, 0x6c, 0x3a, 0x0e, 0xf5, + 0x4c, 0xcf, 0xa6, 0x8e, 0x3f, 0x66, 0x29, 0x47, 0x59, 0x91, 0x32, 0x9c, 0x35, 0x19, 0x11, 0x5c, + 0xf8, 0x28, 0x95, 0x25, 0x9e, 0x99, 0xc2, 0x25, 0x33, 0x6f, 0x3b, 0xdc, 0x58, 0xd8, 0xea, 0x31, + 0x40, 0x9f, 0xd5, 0x2d, 0x9e, 0xf1, 0xa0, 0x19, 0xf2, 0xb2, 0x4c, 0x98, 0xa7, 0x3f, 0x86, 0x4b, + 0x81, 0x56, 0x56, 0xa2, 0x0e, 0x23, 0x68, 0x1d, 0xc6, 0x05, 0xdc, 0xac, 0xb6, 0xa0, 0xdd, 0x9a, + 0x5c, 0x9d, 0x49, 0x06, 0x85, 0x26, 0x85, 0xfd, 0xc3, 0xd1, 0xe3, 0x3f, 0xe6, 0x87, 0x32, 0xd2, + 0x56, 0x4f, 0xc2, 0x1c, 0x77, 0xf6, 0x88, 0x78, 0x1f, 0x93, 0x12, 0x65, 0xb6, 0x97, 0xe1, 0xe6, + 0x32, 0x18, 0x9a, 0x82, 0x61, 0xdb, 0xe2, 0x1e, 0x47, 0x33, 0xc3, 0xb6, 0xa5, 0x1f, 0xc2, 0xd5, + 0x10, 0x7b, 0x89, 0xf1, 0x29, 0x4c, 0x59, 0xa2, 0xc3, 0x10, 0x81, 0x25, 0xce, 0xd5, 0x76, 0x9c, + 0xc0, 0x70, 0x49, 0x75, 0xd1, 0x6a, 0x6d, 0xd4, 0xf7, 0x25, 0x5c, 0xba, 0x50, 0x50, 0xc2, 0x6d, + 0x02, 0x34, 0x73, 0x26, 0xe3, 0xdc, 0x48, 0x8a, 0x04, 0x27, 0xeb, 0x09, 0x4e, 0x8a, 0x89, 0x97, + 0x09, 0x4e, 0x3e, 0x33, 0xf3, 0x44, 0x8e, 0xcd, 0xb4, 0x8c, 0xd4, 0x7f, 0xd6, 0xa4, 0xaa, 0xce, + 0x40, 0x11, 0xaa, 0x46, 0xce, 0xa6, 0x0a, 0x3d, 0x0a, 0x50, 0x0f, 0x73, 0xea, 0x9b, 0x5d, 0xa9, + 0x05, 0x48, 0x00, 0x7b, 0x03, 0xe6, 0x39, 0x75, 0x30, 0x66, 0x65, 0x8b, 0x32, 0xcf, 0xcf, 0xd0, + 0x02, 0x5c, 0x38, 0xa0, 0xcc, 0x33, 0xbe, 0xa6, 0x0e, 0x31, 0xe4, 0x44, 0x4e, 0x64, 0xa0, 0xde, + 0xb6, 0x47, 0x1d, 0xb2, 0x6d, 0xe9, 0x0e, 0x2c, 0x84, 0x3b, 0x19, 0xbc, 0x7a, 0xfd, 0x03, 0x58, + 0xf4, 0x0b, 0xe8, 0x39, 0x23, 0x6e, 0x86, 0x58, 0xa4, 0x58, 0xaa, 0xcb, 0x09, 0xab, 0xbb, 0x09, + 0x5e, 0x77, 0xdf, 0x69, 0x70, 0x3d, 0x7a, 0x9c, 0x64, 0x7d, 0x01, 0x33, 0x65, 0x46, 0x5c, 0xc3, + 0x6d, 0x18, 0x04, 0xeb, 0xf0, 0x7a, 0x3b, 0xb3, 0xca, 0x9b, 0x44, 0x8f, 0x95, 0x15, 0x7d, 0x7a, + 0x51, 0x2a, 0x48, 0x17, 0x0a, 0x51, 0x0a, 0x06, 0x55, 0x9c, 0x6f, 0x7c, 0xe5, 0xa1, 0xf1, 0x7a, + 0x50, 0x3e, 0x32, 0x08, 0xe5, 0x83, 0xab, 0xdc, 0x37, 0x1a, 0x2c, 0x45, 0x69, 0xda, 0xa4, 0xae, + 0x68, 0x16, 0xa9, 0x7c, 0x0f, 0xce, 0xe7, 0x0e, 0x4c, 0xdb, 0x69, 0x56, 0xf0, 0x39, 0xfe, 0xbd, + 0x6d, 0xa1, 0x69, 0x18, 0xb1, 0xcc, 0x0a, 0x67, 0x19, 0xcd, 0xd4, 0x7f, 0xa2, 0x59, 0x38, 0x67, + 0x5a, 0x96, 0x4b, 0x18, 0x9b, 0x1d, 0x11, 0xb6, 0xf2, 0x13, 0xc5, 0x60, 0xac, 0x60, 0x17, 0x6d, + 0x6f, 0x76, 0x94, 0x5b, 0x8b, 0x8f, 0xb6, 0x79, 0x1a, 0x3b, 0xf3, 0x3c, 0xbd, 0xd5, 0x60, 0xb9, + 0x27, 0x4d, 0xff, 0xbf, 0xe9, 0xda, 0x6a, 0xae, 0xd9, 0x4f, 0x4a, 0x34, 0x77, 0xf0, 0xdc, 0xc9, + 0x52, 0xc7, 0xb2, 0x9d, 0x7c, 0xb0, 0xe2, 0xaf, 0xc1, 0x05, 0x52, 0xef, 0x36, 0x9c, 0x72, 0x31, + 0x4b, 0x5c, 0x79, 0x6a, 0x4c, 0xf2, 0xb6, 0xa7, 0xbc, 0x29, 0xb0, 0x8c, 0xd5, 0xae, 0x9a, 0xd9, + 0x11, 0xbe, 0xca, 0xbe, 0x41, 0x97, 0x65, 0xac, 0xf2, 0xe6, 0x67, 0x87, 0x28, 0xfa, 0x5a, 0x97, + 0x71, 0x94, 0xa8, 0xff, 0x62, 0x19, 0x9f, 0x59, 0xf9, 0xc8, 0x20, 0x94, 0x0f, 0xae, 0x2e, 0xb6, + 0x61, 0x86, 0x4b, 0xda, 0xd9, 0x7d, 0xd2, 0xd8, 0xf9, 0xbb, 0xae, 0xd8, 0x18, 0x8c, 0x59, 0xc4, + 0xa1, 0x45, 0x1e, 0x78, 0x22, 0x23, 0x3e, 0xf4, 0x3d, 0xb8, 0xdc, 0xe1, 0x4a, 0x26, 0xe4, 0x01, + 0x9c, 0x93, 0x47, 0x88, 0x4c, 0xff, 0x7c, 0x7b, 0x06, 0x76, 0x76, 0x9f, 0x7c, 0x4e, 0x0f, 0x89, + 0x23, 0x47, 0x4a, 0xf1, 0xfe, 0x28, 0xbd, 0xd2, 0xe1, 0x9b, 0xf5, 0xc0, 0xb9, 0x0c, 0xef, 0x1e, + 0x99, 0x05, 0xdb, 0x32, 0x3d, 0xea, 0x1a, 0xfe, 0x8e, 0x22, 0x98, 0xa7, 0x1b, 0x1d, 0x69, 0xb9, + 0xb5, 0xcc, 0xc0, 0x38, 0xf3, 0x4c, 0xaf, 0xec, 0xef, 0x39, 0xf2, 0x4b, 0xff, 0x02, 0x66, 0x3b, + 0x43, 0x4b, 0x5d, 0x69, 0x38, 0x2f, 0x09, 0x99, 0x9c, 0xda, 0x1e, 0x85, 0x35, 0x86, 0xad, 0xfe, + 0xfd, 0x0e, 0x8c, 0x71, 0xff, 0xe8, 0x1b, 0x18, 0x17, 0xf7, 0x3b, 0xa4, 0xb7, 0x3b, 0xe9, 0xbc, + 0x42, 0xc6, 0x17, 0x23, 0x6d, 0x04, 0x9f, 0x7e, 0xfb, 0xdb, 0xdf, 0xff, 0x7a, 0x35, 0xbc, 0x88, + 0xae, 0xe1, 0x5d, 0x6e, 0xbc, 0x63, 0x66, 0x19, 0x56, 0x5e, 0x87, 0xd1, 0xaf, 0x1a, 0xc4, 0x54, + 0xdb, 0x13, 0x5a, 0x53, 0x06, 0x8a, 0x3e, 0xfb, 0xe3, 0xeb, 0xfd, 0x0d, 0x92, 0xb8, 0x0f, 0x38, + 0xee, 0x87, 0xe8, 0xae, 0xc4, 0xbd, 0xa3, 0xe2, 0x55, 0xef, 0xb8, 0xb8, 0x6a, 0x5b, 0x35, 0xf4, + 0x8b, 0x06, 0x97, 0x55, 0x11, 0xd2, 0x85, 0x42, 0x88, 0x8e, 0xe8, 0x1b, 0x40, 0x88, 0x8e, 0x2e, + 0xc7, 0xb8, 0x7e, 0x8f, 0xeb, 0x58, 0x47, 0xab, 0xfd, 0xeb, 0x40, 0xff, 0x68, 0x70, 0x25, 0xe2, + 0xec, 0x41, 0xf7, 0xfa, 0x21, 0x0a, 0x1e, 0xc2, 0xf1, 0xfb, 0x67, 0x1a, 0x2b, 0x45, 0xed, 0x73, + 0x51, 0x2f, 0xd0, 0x97, 0xfd, 0x8b, 0x32, 0xf6, 0xa9, 0x6b, 0xd4, 0xbb, 0x70, 0xd5, 0x5f, 0xaa, + 0x35, 0x5c, 0xb5, 0xcc, 0x4a, 0x0d, 0x57, 0xe5, 0xb2, 0xac, 0xe1, 0x2a, 0x3f, 0xcb, 0x6b, 0xe8, + 0x37, 0x0d, 0x62, 0xaa, 0xfd, 0x30, 0xbc, 0x10, 0x23, 0xf6, 0xfe, 0xf0, 0x42, 0x8c, 0xda, 0xc0, + 0xf5, 0x6d, 0xae, 0x75, 0x03, 0xa5, 0xa3, 0xb4, 0xaa, 0xb7, 0x78, 0x5c, 0x6d, 0x3d, 0x40, 0x45, + 0x49, 0xaa, 0x62, 0x45, 0x96, 0x64, 0xff, 0x8a, 0xba, 0x1c, 0x49, 0xbd, 0x95, 0xa4, 0x5a, 0x11, + 0xfa, 0x49, 0x83, 0x8b, 0x81, 0x67, 0x01, 0x5a, 0x09, 0xcb, 0xaa, 0xea, 0x8d, 0x17, 0xbf, 0xd3, + 0xa3, 0xb5, 0x44, 0xbd, 0xcb, 0x51, 0x53, 0x08, 0x47, 0xa1, 0x06, 0x1f, 0x33, 0x62, 0xf5, 0xff, + 0xa8, 0xc1, 0x74, 0xc0, 0x65, 0x3d, 0xc7, 0x2b, 0x61, 0xe9, 0xea, 0x03, 0x35, 0xec, 0x4d, 0xa9, + 0xaf, 0x72, 0xd4, 0x15, 0xb4, 0xd4, 0x3b, 0x2a, 0x3a, 0xd6, 0xe0, 0x92, 0xe2, 0xa5, 0x86, 0xb0, + 0x32, 0x74, 0xf8, 0xc3, 0x30, 0xfe, 0x7e, 0xef, 0x03, 0x24, 0xee, 0x53, 0x8e, 0xbb, 0x85, 0x36, + 0x7b, 0xc7, 0x35, 0xb2, 0x15, 0xa3, 0xf1, 0xfc, 0xc4, 0xd5, 0xd6, 0x97, 0x68, 0x0d, 0xfd, 0xa0, + 0x01, 0x34, 0x8f, 0x45, 0x74, 0x43, 0x09, 0xd4, 0x71, 0xb3, 0x88, 0xdf, 0xec, 0x6a, 0x27, 0x79, + 0x37, 0x38, 0xef, 0x47, 0xe8, 0xbe, 0x8a, 0x97, 0x79, 0xe6, 0x21, 0xb1, 0xb3, 0x39, 0x5c, 0x60, + 0x45, 0x43, 0x42, 0x07, 0xf7, 0x97, 0xfa, 0xad, 0xa4, 0x86, 0x5e, 0x69, 0x30, 0xd9, 0x72, 0x76, + 0xa3, 0x6e, 0xd1, 0x1b, 0x27, 0xec, 0xad, 0xee, 0x86, 0x92, 0x33, 0xc5, 0x39, 0x97, 0xd1, 0xed, + 0x5e, 0x39, 0xd9, 0xc3, 0xc7, 0xc7, 0x27, 0x09, 0xed, 0xf5, 0x49, 0x42, 0xfb, 0xf3, 0x24, 0xa1, + 0x7d, 0x7f, 0x9a, 0x18, 0x7a, 0x7d, 0x9a, 0x18, 0x7a, 0x7b, 0x9a, 0x18, 0xda, 0x4b, 0xe5, 0x6d, + 0xef, 0xa0, 0x9c, 0x4d, 0xe6, 0x68, 0x51, 0xe5, 0xee, 0x28, 0xb5, 0x86, 0xbf, 0x6a, 0x4c, 0x96, + 0x57, 0x29, 0x11, 0x96, 0x1d, 0xe7, 0xff, 0x6b, 0x5a, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x22, + 0xdb, 0x97, 0x1e, 0x34, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1010,6 +1226,13 @@ type QueryClient interface { DepositRecordAll(ctx context.Context, in *QueryAllDepositRecordRequest, opts ...grpc.CallOption) (*QueryAllDepositRecordResponse, error) // Queries a list of DepositRecord items for a given host zone DepositRecordByHost(ctx context.Context, in *QueryDepositRecordByHostRequest, opts ...grpc.CallOption) (*QueryDepositRecordByHostResponse, error) + // Queries the existing LSMTokenDeposits for one specific deposit + LSMDeposit(ctx context.Context, in *QueryLSMDepositRequest, opts ...grpc.CallOption) (*QueryLSMDepositResponse, error) + // Queries the existing LSMTokenDeposits for all which match filters + // + // intended use: + // ...stakeibc/lsm_deposits?chain_id=X&validator_address=Y&status=Z + LSMDeposits(ctx context.Context, in *QueryLSMDepositsRequest, opts ...grpc.CallOption) (*QueryLSMDepositsResponse, error) } type queryClient struct { @@ -1101,6 +1324,24 @@ func (c *queryClient) DepositRecordByHost(ctx context.Context, in *QueryDepositR return out, nil } +func (c *queryClient) LSMDeposit(ctx context.Context, in *QueryLSMDepositRequest, opts ...grpc.CallOption) (*QueryLSMDepositResponse, error) { + out := new(QueryLSMDepositResponse) + err := c.cc.Invoke(ctx, "/stride.records.Query/LSMDeposit", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) LSMDeposits(ctx context.Context, in *QueryLSMDepositsRequest, opts ...grpc.CallOption) (*QueryLSMDepositsResponse, error) { + out := new(QueryLSMDepositsResponse) + err := c.cc.Invoke(ctx, "/stride.records.Query/LSMDeposits", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { // Parameters queries the parameters of the module. @@ -1121,6 +1362,13 @@ type QueryServer interface { DepositRecordAll(context.Context, *QueryAllDepositRecordRequest) (*QueryAllDepositRecordResponse, error) // Queries a list of DepositRecord items for a given host zone DepositRecordByHost(context.Context, *QueryDepositRecordByHostRequest) (*QueryDepositRecordByHostResponse, error) + // Queries the existing LSMTokenDeposits for one specific deposit + LSMDeposit(context.Context, *QueryLSMDepositRequest) (*QueryLSMDepositResponse, error) + // Queries the existing LSMTokenDeposits for all which match filters + // + // intended use: + // ...stakeibc/lsm_deposits?chain_id=X&validator_address=Y&status=Z + LSMDeposits(context.Context, *QueryLSMDepositsRequest) (*QueryLSMDepositsResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -1154,6 +1402,12 @@ func (*UnimplementedQueryServer) DepositRecordAll(ctx context.Context, req *Quer func (*UnimplementedQueryServer) DepositRecordByHost(ctx context.Context, req *QueryDepositRecordByHostRequest) (*QueryDepositRecordByHostResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DepositRecordByHost not implemented") } +func (*UnimplementedQueryServer) LSMDeposit(ctx context.Context, req *QueryLSMDepositRequest) (*QueryLSMDepositResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LSMDeposit not implemented") +} +func (*UnimplementedQueryServer) LSMDeposits(ctx context.Context, req *QueryLSMDepositsRequest) (*QueryLSMDepositsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LSMDeposits not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -1321,6 +1575,42 @@ func _Query_DepositRecordByHost_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _Query_LSMDeposit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLSMDepositRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).LSMDeposit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.records.Query/LSMDeposit", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).LSMDeposit(ctx, req.(*QueryLSMDepositRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_LSMDeposits_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryLSMDepositsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).LSMDeposits(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.records.Query/LSMDeposits", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).LSMDeposits(ctx, req.(*QueryLSMDepositsRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "stride.records.Query", HandlerType: (*QueryServer)(nil), @@ -1361,6 +1651,14 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "DepositRecordByHost", Handler: _Query_DepositRecordByHost_Handler, }, + { + MethodName: "LSMDeposit", + Handler: _Query_LSMDeposit_Handler, + }, + { + MethodName: "LSMDeposits", + Handler: _Query_LSMDeposits_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "stride/records/query.proto", @@ -2034,75 +2332,226 @@ func (m *QueryAllEpochUnbondingRecordResponse) MarshalToSizedBuffer(dAtA []byte) return len(dAtA) - i, nil } -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 +func (m *QueryLSMDepositRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - var l int - _ = l - return n + return dAtA[:n], nil } -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n +func (m *QueryLSMDepositRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetDepositRecordRequest) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryLSMDepositRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Id != 0 { - n += 1 + sovQuery(uint64(m.Id)) + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x12 } - return n + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil } -func (m *QueryGetDepositRecordResponse) Size() (n int) { - if m == nil { - return 0 +func (m *QueryLSMDepositResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err } - var l int - _ = l - l = m.DepositRecord.Size() - n += 1 + l + sovQuery(uint64(l)) - return n + return dAtA[:n], nil } -func (m *QueryAllDepositRecordRequest) Size() (n int) { - if m == nil { - return 0 - } +func (m *QueryLSMDepositResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLSMDepositResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i var l int _ = l - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) + { + size, err := m.Deposit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) } - return n + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil } -func (m *QueryAllDepositRecordResponse) Size() (n int) { - if m == nil { +func (m *QueryLSMDepositsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryLSMDepositsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLSMDepositsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Status) > 0 { + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0x1a + } + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryLSMDepositsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryLSMDepositsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryLSMDepositsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Deposits) > 0 { + for iNdEx := len(m.Deposits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Deposits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryGetDepositRecordRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovQuery(uint64(m.Id)) + } + return n +} + +func (m *QueryGetDepositRecordResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.DepositRecord.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryAllDepositRecordRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Pagination != nil { + l = m.Pagination.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAllDepositRecordResponse) Size() (n int) { + if m == nil { return 0 } var l int @@ -2305,6 +2754,70 @@ func (m *QueryAllEpochUnbondingRecordResponse) Size() (n int) { return n } +func (m *QueryLSMDepositRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryLSMDepositResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Deposit.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func (m *QueryLSMDepositsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + l = len(m.Status) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryLSMDepositsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Deposits) > 0 { + for _, e := range m.Deposits { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -4005,6 +4518,433 @@ func (m *QueryAllEpochUnbondingRecordResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryLSMDepositRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryLSMDepositRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryLSMDepositRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryLSMDepositResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryLSMDepositResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryLSMDepositResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Deposit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryLSMDepositsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryLSMDepositsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryLSMDepositsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + 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 ErrInvalidLengthQuery + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryLSMDepositsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryLSMDepositsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryLSMDepositsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Deposits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Deposits = append(m.Deposits, LSMTokenDeposit{}) + if err := m.Deposits[len(m.Deposits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/records/types/query.pb.gw.go b/x/records/types/query.pb.gw.go index 007847313d..11571cb441 100644 --- a/x/records/types/query.pb.gw.go +++ b/x/records/types/query.pb.gw.go @@ -513,6 +513,118 @@ func local_request_Query_DepositRecordByHost_0(ctx context.Context, marshaler ru } +func request_Query_LSMDeposit_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLSMDepositRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["chain_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "chain_id") + } + + protoReq.ChainId, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "chain_id", err) + } + + val, ok = pathParams["denom"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + } + + protoReq.Denom, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + } + + msg, err := client.LSMDeposit(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_LSMDeposit_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLSMDepositRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["chain_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "chain_id") + } + + protoReq.ChainId, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "chain_id", err) + } + + val, ok = pathParams["denom"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "denom") + } + + protoReq.Denom, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "denom", err) + } + + msg, err := server.LSMDeposit(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_LSMDeposits_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_LSMDeposits_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLSMDepositsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_LSMDeposits_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.LSMDeposits(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_LSMDeposits_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryLSMDepositsRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_LSMDeposits_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.LSMDeposits(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -726,6 +838,52 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_LSMDeposit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_LSMDeposit_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_LSMDeposit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_LSMDeposits_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_LSMDeposits_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_LSMDeposits_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -947,6 +1105,46 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_LSMDeposit_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_LSMDeposit_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_LSMDeposit_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_LSMDeposits_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_LSMDeposits_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_LSMDeposits_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -968,6 +1166,10 @@ var ( pattern_Query_DepositRecordAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"Stride-Labs", "stride", "records", "deposit_record"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_DepositRecordByHost_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"Stride-Labs", "stride", "records", "deposit_record_by_host_zone", "host_zone_id"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_LSMDeposit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"Stride-Labs", "stride", "stakeibc", "lsm_deposit", "chain_id", "denom"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_LSMDeposits_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"Stride-Labs", "stride", "stakeibc", "lsm_deposits"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -988,4 +1190,8 @@ var ( forward_Query_DepositRecordAll_0 = runtime.ForwardResponseMessage forward_Query_DepositRecordByHost_0 = runtime.ForwardResponseMessage + + forward_Query_LSMDeposit_0 = runtime.ForwardResponseMessage + + forward_Query_LSMDeposits_0 = runtime.ForwardResponseMessage ) diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go new file mode 100644 index 0000000000..32457a7fcb --- /dev/null +++ b/x/records/types/records.pb.go @@ -0,0 +1,2462 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/records/records.proto + +package types + +import ( + fmt "fmt" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type DepositRecord_Status int32 + +const ( + // in transfer queue to be sent to the delegation ICA + DepositRecord_TRANSFER_QUEUE DepositRecord_Status = 0 + // transfer in progress (IBC packet sent, ack not received) + DepositRecord_TRANSFER_IN_PROGRESS DepositRecord_Status = 2 + // in staking queue on delegation ICA + DepositRecord_DELEGATION_QUEUE DepositRecord_Status = 1 + // staking in progress (ICA packet sent, ack not received) + DepositRecord_DELEGATION_IN_PROGRESS DepositRecord_Status = 3 +) + +var DepositRecord_Status_name = map[int32]string{ + 0: "TRANSFER_QUEUE", + 2: "TRANSFER_IN_PROGRESS", + 1: "DELEGATION_QUEUE", + 3: "DELEGATION_IN_PROGRESS", +} + +var DepositRecord_Status_value = map[string]int32{ + "TRANSFER_QUEUE": 0, + "TRANSFER_IN_PROGRESS": 2, + "DELEGATION_QUEUE": 1, + "DELEGATION_IN_PROGRESS": 3, +} + +func (x DepositRecord_Status) String() string { + return proto.EnumName(DepositRecord_Status_name, int32(x)) +} + +func (DepositRecord_Status) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{1, 0} +} + +type DepositRecord_Source int32 + +const ( + DepositRecord_STRIDE DepositRecord_Source = 0 + DepositRecord_WITHDRAWAL_ICA DepositRecord_Source = 1 +) + +var DepositRecord_Source_name = map[int32]string{ + 0: "STRIDE", + 1: "WITHDRAWAL_ICA", +} + +var DepositRecord_Source_value = map[string]int32{ + "STRIDE": 0, + "WITHDRAWAL_ICA": 1, +} + +func (x DepositRecord_Source) String() string { + return proto.EnumName(DepositRecord_Source_name, int32(x)) +} + +func (DepositRecord_Source) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{1, 1} +} + +type HostZoneUnbonding_Status int32 + +const ( + // tokens bonded on delegate account + HostZoneUnbonding_UNBONDING_QUEUE HostZoneUnbonding_Status = 0 + HostZoneUnbonding_UNBONDING_IN_PROGRESS HostZoneUnbonding_Status = 3 + // unbonding completed on delegate account + HostZoneUnbonding_EXIT_TRANSFER_QUEUE HostZoneUnbonding_Status = 1 + HostZoneUnbonding_EXIT_TRANSFER_IN_PROGRESS HostZoneUnbonding_Status = 4 + // transfer success + HostZoneUnbonding_CLAIMABLE HostZoneUnbonding_Status = 2 +) + +var HostZoneUnbonding_Status_name = map[int32]string{ + 0: "UNBONDING_QUEUE", + 3: "UNBONDING_IN_PROGRESS", + 1: "EXIT_TRANSFER_QUEUE", + 4: "EXIT_TRANSFER_IN_PROGRESS", + 2: "CLAIMABLE", +} + +var HostZoneUnbonding_Status_value = map[string]int32{ + "UNBONDING_QUEUE": 0, + "UNBONDING_IN_PROGRESS": 3, + "EXIT_TRANSFER_QUEUE": 1, + "EXIT_TRANSFER_IN_PROGRESS": 4, + "CLAIMABLE": 2, +} + +func (x HostZoneUnbonding_Status) String() string { + return proto.EnumName(HostZoneUnbonding_Status_name, int32(x)) +} + +func (HostZoneUnbonding_Status) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{2, 0} +} + +type LSMTokenDeposit_Status int32 + +const ( + LSMTokenDeposit_DEPOSIT_PENDING LSMTokenDeposit_Status = 0 + LSMTokenDeposit_TRANSFER_QUEUE LSMTokenDeposit_Status = 1 + LSMTokenDeposit_TRANSFER_IN_PROGRESS LSMTokenDeposit_Status = 2 + LSMTokenDeposit_TRANSFER_FAILED LSMTokenDeposit_Status = 3 + LSMTokenDeposit_DETOKENIZATION_QUEUE LSMTokenDeposit_Status = 4 + LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS LSMTokenDeposit_Status = 5 + LSMTokenDeposit_DETOKENIZATION_FAILED LSMTokenDeposit_Status = 6 +) + +var LSMTokenDeposit_Status_name = map[int32]string{ + 0: "DEPOSIT_PENDING", + 1: "TRANSFER_QUEUE", + 2: "TRANSFER_IN_PROGRESS", + 3: "TRANSFER_FAILED", + 4: "DETOKENIZATION_QUEUE", + 5: "DETOKENIZATION_IN_PROGRESS", + 6: "DETOKENIZATION_FAILED", +} + +var LSMTokenDeposit_Status_value = map[string]int32{ + "DEPOSIT_PENDING": 0, + "TRANSFER_QUEUE": 1, + "TRANSFER_IN_PROGRESS": 2, + "TRANSFER_FAILED": 3, + "DETOKENIZATION_QUEUE": 4, + "DETOKENIZATION_IN_PROGRESS": 5, + "DETOKENIZATION_FAILED": 6, +} + +func (x LSMTokenDeposit_Status) String() string { + return proto.EnumName(LSMTokenDeposit_Status_name, int32(x)) +} + +func (LSMTokenDeposit_Status) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{4, 0} +} + +type UserRedemptionRecord struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Sender string `protobuf:"bytes,2,opt,name=sender,proto3" json:"sender,omitempty"` + Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` + Denom string `protobuf:"bytes,5,opt,name=denom,proto3" json:"denom,omitempty"` + HostZoneId string `protobuf:"bytes,6,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` + EpochNumber uint64 `protobuf:"varint,7,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"` + ClaimIsPending bool `protobuf:"varint,8,opt,name=claim_is_pending,json=claimIsPending,proto3" json:"claim_is_pending,omitempty"` +} + +func (m *UserRedemptionRecord) Reset() { *m = UserRedemptionRecord{} } +func (m *UserRedemptionRecord) String() string { return proto.CompactTextString(m) } +func (*UserRedemptionRecord) ProtoMessage() {} +func (*UserRedemptionRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{0} +} +func (m *UserRedemptionRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserRedemptionRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserRedemptionRecord.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UserRedemptionRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserRedemptionRecord.Merge(m, src) +} +func (m *UserRedemptionRecord) XXX_Size() int { + return m.Size() +} +func (m *UserRedemptionRecord) XXX_DiscardUnknown() { + xxx_messageInfo_UserRedemptionRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_UserRedemptionRecord proto.InternalMessageInfo + +func (m *UserRedemptionRecord) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *UserRedemptionRecord) GetSender() string { + if m != nil { + return m.Sender + } + return "" +} + +func (m *UserRedemptionRecord) GetReceiver() string { + if m != nil { + return m.Receiver + } + return "" +} + +func (m *UserRedemptionRecord) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *UserRedemptionRecord) GetHostZoneId() string { + if m != nil { + return m.HostZoneId + } + return "" +} + +func (m *UserRedemptionRecord) GetEpochNumber() uint64 { + if m != nil { + return m.EpochNumber + } + return 0 +} + +func (m *UserRedemptionRecord) GetClaimIsPending() bool { + if m != nil { + return m.ClaimIsPending + } + return false +} + +type DepositRecord struct { + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` + Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` + HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` + Status DepositRecord_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.DepositRecord_Status" json:"status,omitempty"` + DepositEpochNumber uint64 `protobuf:"varint,7,opt,name=deposit_epoch_number,json=depositEpochNumber,proto3" json:"deposit_epoch_number,omitempty"` + Source DepositRecord_Source `protobuf:"varint,8,opt,name=source,proto3,enum=stride.records.DepositRecord_Source" json:"source,omitempty"` +} + +func (m *DepositRecord) Reset() { *m = DepositRecord{} } +func (m *DepositRecord) String() string { return proto.CompactTextString(m) } +func (*DepositRecord) ProtoMessage() {} +func (*DepositRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{1} +} +func (m *DepositRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DepositRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DepositRecord.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DepositRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_DepositRecord.Merge(m, src) +} +func (m *DepositRecord) XXX_Size() int { + return m.Size() +} +func (m *DepositRecord) XXX_DiscardUnknown() { + xxx_messageInfo_DepositRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_DepositRecord proto.InternalMessageInfo + +func (m *DepositRecord) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *DepositRecord) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *DepositRecord) GetHostZoneId() string { + if m != nil { + return m.HostZoneId + } + return "" +} + +func (m *DepositRecord) GetStatus() DepositRecord_Status { + if m != nil { + return m.Status + } + return DepositRecord_TRANSFER_QUEUE +} + +func (m *DepositRecord) GetDepositEpochNumber() uint64 { + if m != nil { + return m.DepositEpochNumber + } + return 0 +} + +func (m *DepositRecord) GetSource() DepositRecord_Source { + if m != nil { + return m.Source + } + return DepositRecord_STRIDE +} + +type HostZoneUnbonding struct { + StTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=st_token_amount,json=stTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"st_token_amount"` + NativeTokenAmount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=native_token_amount,json=nativeTokenAmount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"native_token_amount"` + Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` + HostZoneId string `protobuf:"bytes,4,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` + UnbondingTime uint64 `protobuf:"varint,5,opt,name=unbonding_time,json=unbondingTime,proto3" json:"unbonding_time,omitempty"` + Status HostZoneUnbonding_Status `protobuf:"varint,6,opt,name=status,proto3,enum=stride.records.HostZoneUnbonding_Status" json:"status,omitempty"` + UserRedemptionRecords []string `protobuf:"bytes,7,rep,name=user_redemption_records,json=userRedemptionRecords,proto3" json:"user_redemption_records,omitempty"` +} + +func (m *HostZoneUnbonding) Reset() { *m = HostZoneUnbonding{} } +func (m *HostZoneUnbonding) String() string { return proto.CompactTextString(m) } +func (*HostZoneUnbonding) ProtoMessage() {} +func (*HostZoneUnbonding) Descriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{2} +} +func (m *HostZoneUnbonding) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HostZoneUnbonding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HostZoneUnbonding.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HostZoneUnbonding) XXX_Merge(src proto.Message) { + xxx_messageInfo_HostZoneUnbonding.Merge(m, src) +} +func (m *HostZoneUnbonding) XXX_Size() int { + return m.Size() +} +func (m *HostZoneUnbonding) XXX_DiscardUnknown() { + xxx_messageInfo_HostZoneUnbonding.DiscardUnknown(m) +} + +var xxx_messageInfo_HostZoneUnbonding proto.InternalMessageInfo + +func (m *HostZoneUnbonding) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *HostZoneUnbonding) GetHostZoneId() string { + if m != nil { + return m.HostZoneId + } + return "" +} + +func (m *HostZoneUnbonding) GetUnbondingTime() uint64 { + if m != nil { + return m.UnbondingTime + } + return 0 +} + +func (m *HostZoneUnbonding) GetStatus() HostZoneUnbonding_Status { + if m != nil { + return m.Status + } + return HostZoneUnbonding_UNBONDING_QUEUE +} + +func (m *HostZoneUnbonding) GetUserRedemptionRecords() []string { + if m != nil { + return m.UserRedemptionRecords + } + return nil +} + +type EpochUnbondingRecord struct { + EpochNumber uint64 `protobuf:"varint,1,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"` + HostZoneUnbondings []*HostZoneUnbonding `protobuf:"bytes,3,rep,name=host_zone_unbondings,json=hostZoneUnbondings,proto3" json:"host_zone_unbondings,omitempty"` +} + +func (m *EpochUnbondingRecord) Reset() { *m = EpochUnbondingRecord{} } +func (m *EpochUnbondingRecord) String() string { return proto.CompactTextString(m) } +func (*EpochUnbondingRecord) ProtoMessage() {} +func (*EpochUnbondingRecord) Descriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{3} +} +func (m *EpochUnbondingRecord) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EpochUnbondingRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EpochUnbondingRecord.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EpochUnbondingRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_EpochUnbondingRecord.Merge(m, src) +} +func (m *EpochUnbondingRecord) XXX_Size() int { + return m.Size() +} +func (m *EpochUnbondingRecord) XXX_DiscardUnknown() { + xxx_messageInfo_EpochUnbondingRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_EpochUnbondingRecord proto.InternalMessageInfo + +func (m *EpochUnbondingRecord) GetEpochNumber() uint64 { + if m != nil { + return m.EpochNumber + } + return 0 +} + +func (m *EpochUnbondingRecord) GetHostZoneUnbondings() []*HostZoneUnbonding { + if m != nil { + return m.HostZoneUnbondings + } + return nil +} + +type LSMTokenDeposit struct { + DepositId string `protobuf:"bytes,1,opt,name=deposit_id,json=depositId,proto3" json:"deposit_id,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Denom string `protobuf:"bytes,3,opt,name=denom,proto3" json:"denom,omitempty"` + IbcDenom string `protobuf:"bytes,4,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty"` + StakerAddress string `protobuf:"bytes,5,opt,name=staker_address,json=stakerAddress,proto3" json:"staker_address,omitempty"` + ValidatorAddress string `protobuf:"bytes,6,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,7,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` + StToken types.Coin `protobuf:"bytes,8,opt,name=st_token,json=stToken,proto3" json:"st_token"` + Status LSMTokenDeposit_Status `protobuf:"varint,9,opt,name=status,proto3,enum=stride.records.LSMTokenDeposit_Status" json:"status,omitempty"` +} + +func (m *LSMTokenDeposit) Reset() { *m = LSMTokenDeposit{} } +func (m *LSMTokenDeposit) String() string { return proto.CompactTextString(m) } +func (*LSMTokenDeposit) ProtoMessage() {} +func (*LSMTokenDeposit) Descriptor() ([]byte, []int) { + return fileDescriptor_295ee594cc85d8ca, []int{4} +} +func (m *LSMTokenDeposit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LSMTokenDeposit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LSMTokenDeposit.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LSMTokenDeposit) XXX_Merge(src proto.Message) { + xxx_messageInfo_LSMTokenDeposit.Merge(m, src) +} +func (m *LSMTokenDeposit) XXX_Size() int { + return m.Size() +} +func (m *LSMTokenDeposit) XXX_DiscardUnknown() { + xxx_messageInfo_LSMTokenDeposit.DiscardUnknown(m) +} + +var xxx_messageInfo_LSMTokenDeposit proto.InternalMessageInfo + +func (m *LSMTokenDeposit) GetDepositId() string { + if m != nil { + return m.DepositId + } + return "" +} + +func (m *LSMTokenDeposit) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *LSMTokenDeposit) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *LSMTokenDeposit) GetIbcDenom() string { + if m != nil { + return m.IbcDenom + } + return "" +} + +func (m *LSMTokenDeposit) GetStakerAddress() string { + if m != nil { + return m.StakerAddress + } + return "" +} + +func (m *LSMTokenDeposit) GetValidatorAddress() string { + if m != nil { + return m.ValidatorAddress + } + return "" +} + +func (m *LSMTokenDeposit) GetStToken() types.Coin { + if m != nil { + return m.StToken + } + return types.Coin{} +} + +func (m *LSMTokenDeposit) GetStatus() LSMTokenDeposit_Status { + if m != nil { + return m.Status + } + return LSMTokenDeposit_DEPOSIT_PENDING +} + +func init() { + proto.RegisterEnum("stride.records.DepositRecord_Status", DepositRecord_Status_name, DepositRecord_Status_value) + proto.RegisterEnum("stride.records.DepositRecord_Source", DepositRecord_Source_name, DepositRecord_Source_value) + proto.RegisterEnum("stride.records.HostZoneUnbonding_Status", HostZoneUnbonding_Status_name, HostZoneUnbonding_Status_value) + proto.RegisterEnum("stride.records.LSMTokenDeposit_Status", LSMTokenDeposit_Status_name, LSMTokenDeposit_Status_value) + proto.RegisterType((*UserRedemptionRecord)(nil), "stride.records.UserRedemptionRecord") + proto.RegisterType((*DepositRecord)(nil), "stride.records.DepositRecord") + proto.RegisterType((*HostZoneUnbonding)(nil), "stride.records.HostZoneUnbonding") + proto.RegisterType((*EpochUnbondingRecord)(nil), "stride.records.EpochUnbondingRecord") + proto.RegisterType((*LSMTokenDeposit)(nil), "stride.records.LSMTokenDeposit") +} + +func init() { proto.RegisterFile("stride/records/records.proto", fileDescriptor_295ee594cc85d8ca) } + +var fileDescriptor_295ee594cc85d8ca = []byte{ + // 998 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc1, 0x8e, 0xda, 0x46, + 0x18, 0x5e, 0x83, 0xd7, 0xc0, 0x9f, 0xc0, 0x7a, 0x67, 0x49, 0xe2, 0xa5, 0x0d, 0x21, 0xa8, 0x89, + 0x90, 0xaa, 0x98, 0xee, 0x46, 0xea, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, + 0xa0, 0xa9, 0xf6, 0x50, 0xcb, 0xd8, 0xa3, 0x65, 0xb4, 0xc1, 0x83, 0x3c, 0x06, 0xb5, 0xbd, 0xf4, + 0x15, 0x7a, 0xe8, 0x2b, 0x54, 0x7d, 0x82, 0xbe, 0x43, 0x4e, 0x55, 0x8e, 0x55, 0x0f, 0x51, 0xb5, + 0x7b, 0xe8, 0x6b, 0x54, 0x1e, 0x1b, 0x03, 0x26, 0x69, 0xa4, 0x6d, 0x4f, 0x30, 0xdf, 0x37, 0xf3, + 0x8f, 0xe7, 0x9b, 0xef, 0xff, 0x6c, 0xf8, 0x90, 0x05, 0x3e, 0x71, 0x71, 0xd3, 0xc7, 0x0e, 0xf5, + 0x5d, 0xb6, 0xf8, 0x55, 0xa7, 0x3e, 0x0d, 0x28, 0x2a, 0x45, 0xac, 0x1a, 0xa3, 0x95, 0xaa, 0x43, + 0xd9, 0x84, 0xb2, 0xe6, 0xc8, 0x66, 0xb8, 0x39, 0x3f, 0x18, 0xe1, 0xc0, 0x3e, 0x68, 0x3a, 0x94, + 0x78, 0xd1, 0xfc, 0x4a, 0xf9, 0x9c, 0x9e, 0x53, 0xfe, 0xb7, 0x19, 0xfe, 0x8b, 0xd0, 0xfa, 0xaf, + 0x19, 0x28, 0x0f, 0x19, 0xf6, 0x4d, 0xec, 0xe2, 0xc9, 0x34, 0x20, 0xd4, 0x33, 0x79, 0x3d, 0x54, + 0x82, 0x0c, 0x71, 0x15, 0xa1, 0x26, 0x34, 0x0a, 0x66, 0x86, 0xb8, 0xe8, 0x36, 0x48, 0x0c, 0x7b, + 0x2e, 0xf6, 0x95, 0x0c, 0xc7, 0xe2, 0x11, 0xaa, 0x40, 0xde, 0xc7, 0x0e, 0x26, 0x73, 0xec, 0x2b, + 0x59, 0xce, 0x24, 0x63, 0x74, 0x0c, 0x92, 0x3d, 0xa1, 0x33, 0x2f, 0x50, 0xc4, 0x90, 0x69, 0xa9, + 0xaf, 0xde, 0xdc, 0xdb, 0xfa, 0xf3, 0xcd, 0xbd, 0x87, 0xe7, 0x24, 0x18, 0xcf, 0x46, 0xaa, 0x43, + 0x27, 0xcd, 0xf8, 0xa9, 0xa3, 0x9f, 0x47, 0xcc, 0xbd, 0x68, 0x06, 0xdf, 0x4f, 0x31, 0x53, 0x0d, + 0x2f, 0x30, 0xe3, 0xd5, 0xa8, 0x0c, 0xdb, 0x2e, 0xf6, 0xe8, 0x44, 0xd9, 0xe6, 0x1b, 0x44, 0x03, + 0x54, 0x83, 0x9b, 0x63, 0xca, 0x02, 0xeb, 0x07, 0xea, 0x61, 0x8b, 0xb8, 0x8a, 0xc4, 0x49, 0x08, + 0xb1, 0x33, 0xea, 0x61, 0xc3, 0x45, 0xf7, 0xe1, 0x26, 0x9e, 0x52, 0x67, 0x6c, 0x79, 0xb3, 0xc9, + 0x08, 0xfb, 0x4a, 0xae, 0x26, 0x34, 0x44, 0xf3, 0x06, 0xc7, 0xba, 0x1c, 0x42, 0x0d, 0x90, 0x9d, + 0x97, 0x36, 0x99, 0x58, 0x84, 0x59, 0x53, 0xec, 0xb9, 0xc4, 0x3b, 0x57, 0xf2, 0x35, 0xa1, 0x91, + 0x37, 0x4b, 0x1c, 0x37, 0xd8, 0x69, 0x84, 0xd6, 0xff, 0xce, 0x42, 0xb1, 0x8d, 0xa7, 0x94, 0x91, + 0x60, 0x43, 0x22, 0x91, 0x4b, 0xb4, 0x3c, 0x6e, 0xe6, 0xff, 0x39, 0x6e, 0xf6, 0xdf, 0x8e, 0x2b, + 0x6e, 0x1c, 0xf7, 0x73, 0x90, 0x58, 0x60, 0x07, 0x33, 0xc6, 0xa5, 0x28, 0x1d, 0x7e, 0xa4, 0xae, + 0x5b, 0x44, 0x5d, 0x7b, 0x7c, 0xb5, 0xcf, 0xe7, 0x9a, 0xf1, 0x1a, 0xf4, 0x09, 0x94, 0xdd, 0x88, + 0xb7, 0xde, 0x22, 0x1a, 0x8a, 0x39, 0x7d, 0x45, 0xbb, 0x70, 0x3f, 0x3a, 0xf3, 0x1d, 0xcc, 0x15, + 0x7b, 0xff, 0x7e, 0x7c, 0xae, 0x19, 0xaf, 0xa9, 0x8f, 0x41, 0x8a, 0x9e, 0x00, 0x21, 0x28, 0x0d, + 0x4c, 0xad, 0xdb, 0x3f, 0xd6, 0x4d, 0xeb, 0xab, 0xa1, 0x3e, 0xd4, 0xe5, 0x2d, 0xa4, 0x40, 0x39, + 0xc1, 0x8c, 0xae, 0x75, 0x6a, 0xf6, 0x4e, 0x4c, 0xbd, 0xdf, 0x97, 0x33, 0xa8, 0x0c, 0x72, 0x5b, + 0xef, 0xe8, 0x27, 0xda, 0xc0, 0xe8, 0x75, 0xe3, 0xf9, 0x02, 0xaa, 0xc0, 0xed, 0x15, 0x74, 0x75, + 0x45, 0xb6, 0xde, 0x00, 0x29, 0xda, 0x1b, 0x01, 0x48, 0xfd, 0x81, 0x69, 0xb4, 0xc3, 0x1d, 0x10, + 0x94, 0x5e, 0x18, 0x83, 0x27, 0x6d, 0x53, 0x7b, 0xa1, 0x75, 0x2c, 0xe3, 0x48, 0x93, 0x85, 0xa7, + 0x62, 0x7e, 0x5b, 0x96, 0xea, 0xbf, 0x88, 0xb0, 0xfb, 0x24, 0x96, 0x75, 0xe8, 0x8d, 0x28, 0xbf, + 0x7f, 0xf4, 0x35, 0xec, 0xb0, 0xc0, 0x0a, 0xe8, 0x05, 0xf6, 0xac, 0xf8, 0x9a, 0x85, 0x6b, 0x5d, + 0x73, 0x91, 0x05, 0x83, 0xb0, 0x8a, 0x16, 0xdd, 0xf6, 0xb7, 0xb0, 0xe7, 0xd9, 0x01, 0x99, 0xe3, + 0xf5, 0xda, 0xd7, 0xb3, 0xd0, 0x6e, 0x54, 0x6a, 0xb5, 0xfe, 0x75, 0xdd, 0xf4, 0x00, 0x4a, 0xb3, + 0xc5, 0xe1, 0xad, 0x80, 0x4c, 0x30, 0xef, 0x3e, 0xd1, 0x2c, 0x26, 0xe8, 0x80, 0x4c, 0x30, 0xfa, + 0x32, 0x65, 0xba, 0x46, 0xda, 0x04, 0x1b, 0x4a, 0xa6, 0x8d, 0xf7, 0x29, 0xdc, 0x99, 0x31, 0xec, + 0x5b, 0x7e, 0x12, 0x41, 0x56, 0xbc, 0x56, 0xc9, 0xd5, 0xb2, 0x8d, 0x82, 0x79, 0x6b, 0xf6, 0x96, + 0x80, 0x62, 0xf5, 0x1f, 0x13, 0x03, 0xed, 0xc1, 0xce, 0xb0, 0xdb, 0xea, 0x75, 0xdb, 0x46, 0xf7, + 0x24, 0x71, 0xd0, 0x3e, 0xdc, 0x5a, 0x82, 0x6b, 0x86, 0x40, 0x77, 0x60, 0x4f, 0xff, 0xc6, 0x18, + 0x58, 0x29, 0xd7, 0x09, 0xe8, 0x2e, 0xec, 0xaf, 0x13, 0xab, 0xeb, 0x44, 0x54, 0x84, 0xc2, 0x51, + 0x47, 0x33, 0x9e, 0x6b, 0xad, 0x8e, 0x2e, 0x67, 0xea, 0x3f, 0x0b, 0x50, 0xe6, 0xfd, 0x90, 0x1c, + 0x2d, 0x0e, 0x86, 0x74, 0xee, 0x08, 0x9b, 0xb9, 0xd3, 0x87, 0xf2, 0x52, 0xff, 0x44, 0x51, 0xa6, + 0x64, 0x6b, 0xd9, 0xc6, 0x8d, 0xc3, 0xfb, 0xef, 0x15, 0xd1, 0x44, 0xe3, 0x34, 0xc4, 0x9e, 0x8a, + 0xf9, 0x8c, 0x9c, 0xad, 0xff, 0x2e, 0xc2, 0x4e, 0xa7, 0xff, 0x9c, 0x7b, 0x20, 0xee, 0x40, 0x74, + 0x17, 0x60, 0xd1, 0xdc, 0x49, 0xaa, 0x17, 0x62, 0xc4, 0x70, 0xd1, 0x3e, 0xe4, 0x9d, 0xb1, 0x4d, + 0xbc, 0x90, 0x8c, 0xe2, 0x3d, 0xc7, 0xc7, 0x86, 0xfb, 0x0e, 0xfb, 0x7c, 0x00, 0x05, 0x32, 0x72, + 0xac, 0x88, 0x89, 0xbc, 0x93, 0x27, 0x23, 0xa7, 0xcd, 0xc9, 0x07, 0x50, 0x62, 0x81, 0x7d, 0x81, + 0x7d, 0xcb, 0x76, 0x5d, 0x1f, 0x33, 0x16, 0xe7, 0x76, 0x31, 0x42, 0xb5, 0x08, 0x44, 0x1f, 0xc3, + 0xee, 0xdc, 0x7e, 0x49, 0x5c, 0x3b, 0xa0, 0xcb, 0x99, 0x51, 0x88, 0xcb, 0x09, 0xb1, 0x98, 0xbc, + 0xcc, 0xd6, 0xdc, 0x7f, 0xca, 0xd6, 0xcf, 0x20, 0xbf, 0xe8, 0x62, 0x9e, 0x5a, 0x37, 0x0e, 0xf7, + 0xd5, 0x68, 0x81, 0x1a, 0xbe, 0x38, 0xd5, 0xf8, 0xc5, 0xa9, 0x1e, 0x51, 0xe2, 0xb5, 0xc4, 0x70, + 0x13, 0x33, 0x17, 0xf7, 0x2b, 0xfa, 0x22, 0xb1, 0x7a, 0x81, 0x5b, 0xfd, 0x61, 0xfa, 0x96, 0x52, + 0xaa, 0xa7, 0x8c, 0x5e, 0xff, 0x4d, 0x58, 0x75, 0x6c, 0x5b, 0x3f, 0xed, 0xf5, 0x8d, 0x81, 0x75, + 0xaa, 0x73, 0x8b, 0x46, 0x89, 0xb4, 0xe1, 0xc8, 0x77, 0xe7, 0xe0, 0x1e, 0xec, 0x24, 0xcc, 0xb1, + 0x66, 0x74, 0xf4, 0xb6, 0x9c, 0x0d, 0xa7, 0xb7, 0xf5, 0x41, 0xef, 0x99, 0xde, 0x35, 0xce, 0x56, + 0x03, 0x52, 0x44, 0x55, 0xa8, 0xa4, 0x98, 0xd5, 0x72, 0xdb, 0x61, 0xbb, 0xa4, 0xf8, 0xb8, 0xa8, + 0xd4, 0x7a, 0xf6, 0xea, 0xb2, 0x2a, 0xbc, 0xbe, 0xac, 0x0a, 0x7f, 0x5d, 0x56, 0x85, 0x9f, 0xae, + 0xaa, 0x5b, 0xaf, 0xaf, 0xaa, 0x5b, 0x7f, 0x5c, 0x55, 0xb7, 0xce, 0x0e, 0x56, 0xd4, 0xef, 0x73, + 0x2d, 0x1e, 0x75, 0xec, 0x11, 0x6b, 0xc6, 0x1f, 0x2e, 0xf3, 0x83, 0xc7, 0xcd, 0xef, 0x92, 0xcf, + 0x17, 0x7e, 0x19, 0x23, 0x89, 0x7f, 0x77, 0x3c, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x5a, + 0x2d, 0x2e, 0xdd, 0x08, 0x00, 0x00, +} + +func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UserRedemptionRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserRedemptionRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ClaimIsPending { + i-- + if m.ClaimIsPending { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } + if m.EpochNumber != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.EpochNumber)) + i-- + dAtA[i] = 0x38 + } + if len(m.HostZoneId) > 0 { + i -= len(m.HostZoneId) + copy(dAtA[i:], m.HostZoneId) + i = encodeVarintRecords(dAtA, i, uint64(len(m.HostZoneId))) + i-- + dAtA[i] = 0x32 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x2a + } + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.Receiver) > 0 { + i -= len(m.Receiver) + copy(dAtA[i:], m.Receiver) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Receiver))) + i-- + dAtA[i] = 0x1a + } + if len(m.Sender) > 0 { + i -= len(m.Sender) + copy(dAtA[i:], m.Sender) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Sender))) + i-- + dAtA[i] = 0x12 + } + if len(m.Id) > 0 { + i -= len(m.Id) + copy(dAtA[i:], m.Id) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Id))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DepositRecord) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DepositRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DepositRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Source != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.Source)) + i-- + dAtA[i] = 0x40 + } + if m.DepositEpochNumber != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.DepositEpochNumber)) + i-- + dAtA[i] = 0x38 + } + if m.Status != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x30 + } + if len(m.HostZoneId) > 0 { + i -= len(m.HostZoneId) + copy(dAtA[i:], m.HostZoneId) + i = encodeVarintRecords(dAtA, i, uint64(len(m.HostZoneId))) + i-- + dAtA[i] = 0x22 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x1a + } + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.Id != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *HostZoneUnbonding) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HostZoneUnbonding) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *HostZoneUnbonding) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UserRedemptionRecords) > 0 { + for iNdEx := len(m.UserRedemptionRecords) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.UserRedemptionRecords[iNdEx]) + copy(dAtA[i:], m.UserRedemptionRecords[iNdEx]) + i = encodeVarintRecords(dAtA, i, uint64(len(m.UserRedemptionRecords[iNdEx]))) + i-- + dAtA[i] = 0x3a + } + } + if m.Status != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x30 + } + if m.UnbondingTime != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.UnbondingTime)) + i-- + dAtA[i] = 0x28 + } + if len(m.HostZoneId) > 0 { + i -= len(m.HostZoneId) + copy(dAtA[i:], m.HostZoneId) + i = encodeVarintRecords(dAtA, i, uint64(len(m.HostZoneId))) + i-- + dAtA[i] = 0x22 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x1a + } + { + size := m.NativeTokenAmount.Size() + i -= size + if _, err := m.NativeTokenAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.StTokenAmount.Size() + i -= size + if _, err := m.StTokenAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *EpochUnbondingRecord) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EpochUnbondingRecord) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EpochUnbondingRecord) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.HostZoneUnbondings) > 0 { + for iNdEx := len(m.HostZoneUnbondings) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.HostZoneUnbondings[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.EpochNumber != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.EpochNumber)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *LSMTokenDeposit) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LSMTokenDeposit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LSMTokenDeposit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Status != 0 { + i = encodeVarintRecords(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x48 + } + { + size, err := m.StToken.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintRecords(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + if len(m.ValidatorAddress) > 0 { + i -= len(m.ValidatorAddress) + copy(dAtA[i:], m.ValidatorAddress) + i = encodeVarintRecords(dAtA, i, uint64(len(m.ValidatorAddress))) + i-- + dAtA[i] = 0x32 + } + if len(m.StakerAddress) > 0 { + i -= len(m.StakerAddress) + copy(dAtA[i:], m.StakerAddress) + i = encodeVarintRecords(dAtA, i, uint64(len(m.StakerAddress))) + i-- + dAtA[i] = 0x2a + } + if len(m.IbcDenom) > 0 { + i -= len(m.IbcDenom) + copy(dAtA[i:], m.IbcDenom) + i = encodeVarintRecords(dAtA, i, uint64(len(m.IbcDenom))) + i-- + dAtA[i] = 0x22 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintRecords(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x1a + } + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintRecords(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.DepositId) > 0 { + i -= len(m.DepositId) + copy(dAtA[i:], m.DepositId) + i = encodeVarintRecords(dAtA, i, uint64(len(m.DepositId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintRecords(dAtA []byte, offset int, v uint64) int { + offset -= sovRecords(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *UserRedemptionRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Id) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.Sender) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.Receiver) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovRecords(uint64(l)) + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.HostZoneId) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + if m.EpochNumber != 0 { + n += 1 + sovRecords(uint64(m.EpochNumber)) + } + if m.ClaimIsPending { + n += 2 + } + return n +} + +func (m *DepositRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovRecords(uint64(m.Id)) + } + l = m.Amount.Size() + n += 1 + l + sovRecords(uint64(l)) + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.HostZoneId) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + if m.Status != 0 { + n += 1 + sovRecords(uint64(m.Status)) + } + if m.DepositEpochNumber != 0 { + n += 1 + sovRecords(uint64(m.DepositEpochNumber)) + } + if m.Source != 0 { + n += 1 + sovRecords(uint64(m.Source)) + } + return n +} + +func (m *HostZoneUnbonding) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StTokenAmount.Size() + n += 1 + l + sovRecords(uint64(l)) + l = m.NativeTokenAmount.Size() + n += 1 + l + sovRecords(uint64(l)) + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.HostZoneId) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + if m.UnbondingTime != 0 { + n += 1 + sovRecords(uint64(m.UnbondingTime)) + } + if m.Status != 0 { + n += 1 + sovRecords(uint64(m.Status)) + } + if len(m.UserRedemptionRecords) > 0 { + for _, s := range m.UserRedemptionRecords { + l = len(s) + n += 1 + l + sovRecords(uint64(l)) + } + } + return n +} + +func (m *EpochUnbondingRecord) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.EpochNumber != 0 { + n += 1 + sovRecords(uint64(m.EpochNumber)) + } + if len(m.HostZoneUnbondings) > 0 { + for _, e := range m.HostZoneUnbondings { + l = e.Size() + n += 1 + l + sovRecords(uint64(l)) + } + } + return n +} + +func (m *LSMTokenDeposit) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DepositId) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.IbcDenom) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.StakerAddress) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = len(m.ValidatorAddress) + if l > 0 { + n += 1 + l + sovRecords(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovRecords(uint64(l)) + l = m.StToken.Size() + n += 1 + l + sovRecords(uint64(l)) + if m.Status != 0 { + n += 1 + sovRecords(uint64(m.Status)) + } + return n +} + +func sovRecords(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozRecords(x uint64) (n int) { + return sovRecords(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *UserRedemptionRecord) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UserRedemptionRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserRedemptionRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Receiver", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Receiver = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostZoneId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostZoneId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EpochNumber", wireType) + } + m.EpochNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EpochNumber |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimIsPending", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ClaimIsPending = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipRecords(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRecords + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DepositRecord) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DepositRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DepositRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostZoneId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostZoneId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= DepositRecord_Status(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DepositEpochNumber", wireType) + } + m.DepositEpochNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DepositEpochNumber |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) + } + m.Source = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Source |= DepositRecord_Source(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipRecords(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRecords + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *HostZoneUnbonding) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostZoneUnbonding: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostZoneUnbonding: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StTokenAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NativeTokenAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NativeTokenAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostZoneId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostZoneId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingTime", wireType) + } + m.UnbondingTime = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnbondingTime |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= HostZoneUnbonding_Status(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserRedemptionRecords", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserRedemptionRecords = append(m.UserRedemptionRecords, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRecords(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRecords + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EpochUnbondingRecord) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EpochUnbondingRecord: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EpochUnbondingRecord: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EpochNumber", wireType) + } + m.EpochNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EpochNumber |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostZoneUnbondings", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRecords + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostZoneUnbondings = append(m.HostZoneUnbondings, &HostZoneUnbonding{}) + if err := m.HostZoneUnbondings[len(m.HostZoneUnbondings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipRecords(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRecords + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LSMTokenDeposit) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LSMTokenDeposit: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LSMTokenDeposit: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DepositId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DepositId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IbcDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IbcDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StakerAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StakerAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + 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 ErrInvalidLengthRecords + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRecords + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRecords + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StToken.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRecords + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= LSMTokenDeposit_Status(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipRecords(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthRecords + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipRecords(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowRecords + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowRecords + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowRecords + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthRecords + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupRecords + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthRecords + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthRecords = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowRecords = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupRecords = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/stakeibc/README.md b/x/stakeibc/README.md index c3427e49c9..024c19012c 100644 --- a/x/stakeibc/README.md +++ b/x/stakeibc/README.md @@ -32,12 +32,14 @@ StrideCommission (default uint64 = 10) ICATimeoutNanos(default uint64 = 600000000000) BufferSize (default uint64 = 5) IbcTimeoutBlocks (default uint64 = 300) -FeeTransferTimeoutNanos (default uint64 = 1800000000000 +FeeTransferTimeoutNanos (default uint64 = 1800000000000) DefaultMinRedemptionRateThreshold (default uint64 = 90) DefaultMaxRedemptionRateThreshold (default uint64 = 150) MaxStakeICACallsPerEpoch (default uint64 = 100) IBCTransferTimeoutNanos (default uint64 = 1800000000000) -SafetyNumValidators (default uint64 = 35) +MinRedemptionRates (default uint64 = 90) +MaxRedemptionRates (default uint64 = 150) +ValidatorSlashQueryThreshold (default uint64 = 1) ``` ## Keeper functions diff --git a/x/stakeibc/client/cli/query.go b/x/stakeibc/client/cli/query.go index 92590c9714..7279462169 100644 --- a/x/stakeibc/client/cli/query.go +++ b/x/stakeibc/client/cli/query.go @@ -2,13 +2,9 @@ package cli import ( "fmt" - // "strings" - - "github.com/spf13/cobra" "github.com/cosmos/cosmos-sdk/client" - // "github.com/cosmos/cosmos-sdk/client/flags" - // sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/spf13/cobra" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -33,7 +29,6 @@ func GetQueryCmd(queryRoute string) *cobra.Command { cmd.AddCommand(CmdListEpochTracker()) cmd.AddCommand(CmdShowEpochTracker()) cmd.AddCommand(CmdNextPacketSequence()) - // this line is used by starport scaffolding # 1 return cmd } diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index e7b3dfdf4b..30dc4a83cd 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -25,6 +25,7 @@ func GetTxCmd() *cobra.Command { } cmd.AddCommand(CmdLiquidStake()) + cmd.AddCommand(CmdLSMLiquidStake()) cmd.AddCommand(CmdRegisterHostZone()) cmd.AddCommand(CmdRedeemStake()) cmd.AddCommand(CmdClaimUndelegatedTokens()) diff --git a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go new file mode 100644 index 0000000000..701dcfed4b --- /dev/null +++ b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go @@ -0,0 +1,48 @@ +package cli + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + + errorsmod "cosmossdk.io/errors" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +func CmdLSMLiquidStake() *cobra.Command { + cmd := &cobra.Command{ + Use: "lsm-liquid-stake [amount] [lsm-token-denom]", + Short: "Broadcast message lsm-liquid-stake", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) (err error) { + amount, found := sdk.NewIntFromString(args[0]) + if !found { + return errorsmod.Wrap(sdkerrors.ErrInvalidType, "can not convert string to int") + } + denom := args[1] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgLSMLiquidStake( + clientCtx.GetFromAddress().String(), + amount, + denom, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/stakeibc/client/cli/tx_register_host_zone.go b/x/stakeibc/client/cli/tx_register_host_zone.go index 89d4c695d9..6bd4a5acf1 100644 --- a/x/stakeibc/client/cli/tx_register_host_zone.go +++ b/x/stakeibc/client/cli/tx_register_host_zone.go @@ -19,12 +19,11 @@ const ( var _ = strconv.Itoa(0) -// TODO(TEST-53): Remove this pre-launch (no need for clients to create / interact with ICAs) func CmdRegisterHostZone() *cobra.Command { cmd := &cobra.Command{ - Use: "register-host-zone [connection-id] [host-denom] [bech32prefix] [ibc-denom] [channel-id] [unbonding-frequency]", + Use: "register-host-zone [connection-id] [host-denom] [bech32prefix] [ibc-denom] [channel-id] [unbonding-period] [lsm-enabled]", Short: "Broadcast message register-host-zone", - Args: cobra.ExactArgs(6), + Args: cobra.ExactArgs(7), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { @@ -36,7 +35,11 @@ func CmdRegisterHostZone() *cobra.Command { bech32prefix := args[2] ibcDenom := args[3] channelId := args[4] - unbondingFrequency, err := strconv.ParseUint(args[5], 10, 64) + unbondingPeriod, err := strconv.ParseUint(args[5], 10, 64) + if err != nil { + return err + } + lsmEnabled, err := strconv.ParseBool(args[6]) if err != nil { return err } @@ -72,9 +75,10 @@ func CmdRegisterHostZone() *cobra.Command { hostDenom, ibcDenom, channelId, - unbondingFrequency, + unbondingPeriod, minRedemptionRate, maxRedemptionRate, + lsmEnabled, ) if err := msg.ValidateBasic(); err != nil { diff --git a/x/stakeibc/client/cli/tx_restore_interchain_account.go b/x/stakeibc/client/cli/tx_restore_interchain_account.go index a06bd57010..d1af695cbc 100644 --- a/x/stakeibc/client/cli/tx_restore_interchain_account.go +++ b/x/stakeibc/client/cli/tx_restore_interchain_account.go @@ -2,7 +2,8 @@ package cli import ( "errors" - "strconv" + "fmt" + "strings" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -12,13 +13,18 @@ import ( "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -var _ = strconv.Itoa(0) - func CmdRestoreInterchainAccount() *cobra.Command { cmd := &cobra.Command{ Use: "restore-interchain-account [chain-id] [account-type]", Short: "Broadcast message restore-interchain-account", - Args: cobra.ExactArgs(2), + Long: strings.TrimSpace( + fmt.Sprintf(`Restores a closed channel associated with an interchain account. +Specify the interchain account type as either: %s, %s, %s, or %s`, + types.ICAAccountType_DELEGATION, + types.ICAAccountType_WITHDRAWAL, + types.ICAAccountType_REDEMPTION, + types.ICAAccountType_FEE)), + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) (err error) { argChainId := args[0] argAccountType := args[1] diff --git a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go new file mode 100644 index 0000000000..6abe543535 --- /dev/null +++ b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go @@ -0,0 +1,112 @@ +package cli + +import ( + "fmt" + "os" + "strings" + + errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/version" + govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +func parseToggleLSMProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.ToggleLSMProposal, err error) { + contents, err := os.ReadFile(proposalFile) + if err != nil { + return proposal, err + } + + if err = cdc.UnmarshalJSON(contents, &proposal); err != nil { + return proposal, err + } + + action := "Disable" + if proposal.Enabled { + action = "Enable" + } + proposal.Title = fmt.Sprintf("%s LSMLiquidStakes for %s", action, proposal.HostZone) + + return proposal, nil +} + +func CmdToggleLSMProposal() *cobra.Command { + cmd := &cobra.Command{ + Use: "toggle-lsm [proposal-file]", + Short: "Submit an toggle-lsm proposal", + Long: strings.TrimSpace( + fmt.Sprintf(`Submit an toggle-lsm proposal which will either enable or disable +LSMLiquidStakes for the host zone. + +Example: +$ %s tx gov submit-legacy-proposal toggle-lsm --from= + +Where proposal.json contains: +{ + "description": "Proposal to enable LSM for Osmosis", + "hostZone": "osmosis-1", + "enabled": true, + "deposit": "64000000ustrd" +} +`, version.AppName), + ), + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + proposal, err := parseToggleLSMProposalFile(clientCtx.Codec, args[0]) + if err != nil { + return err + } + + from := clientCtx.GetFromAddress() + + depositFromFlags, err := cmd.Flags().GetString(govcli.FlagDeposit) + if err != nil { + return err + } + + // if deposit from flags is not empty, it overrides the deposit from proposal + if depositFromFlags != "" { + proposal.Deposit = depositFromFlags + } + deposit, err := sdk.ParseCoinsNormalized(proposal.Deposit) + if err != nil { + return err + } + + strideDenom, err := sdk.GetBaseDenom() + if err != nil { + return err + } + + if len(deposit) != 1 || deposit.GetDenomByIndex(0) != strideDenom { + return errorsmod.Wrapf(sdkerrors.ErrInvalidCoins, "Deposit token denom must be %s", strideDenom) + } + + msg, err := govtypes.NewMsgSubmitProposal(&proposal, deposit, from) + if err != nil { + return err + } + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + cmd.Flags().String(govcli.FlagDeposit, "", "deposit of proposal") + + return cmd +} diff --git a/x/stakeibc/client/proposal_handler.go b/x/stakeibc/client/proposal_handler.go index ee8c76edb1..77019fff06 100644 --- a/x/stakeibc/client/proposal_handler.go +++ b/x/stakeibc/client/proposal_handler.go @@ -8,4 +8,5 @@ import ( var ( AddValidatorsProposalHandler = govclient.NewProposalHandler(cli.CmdAddValidatorsProposal) + ToggleLSMProposalHandler = govclient.NewProposalHandler(cli.CmdToggleLSMProposal) ) diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index 3cc25ff2d3..7349188572 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -7,12 +7,14 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -// NewHandler ... -func NewHandler(k keeper.Keeper) sdk.Handler { +// Handles stakeibc transactions +func NewMessageHandler(k keeper.Keeper) sdk.Handler { msgServer := keeper.NewMsgServerImpl(k) return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { @@ -23,6 +25,9 @@ func NewHandler(k keeper.Keeper) sdk.Handler { case *types.MsgLiquidStake: res, err := msgServer.LiquidStake(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgLSMLiquidStake: + res, err := msgServer.LSMLiquidStake(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) case *types.MsgClearBalance: res, err := msgServer.ClearBalance(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) @@ -59,3 +64,18 @@ func NewHandler(k keeper.Keeper) sdk.Handler { } } } + +// Handles stakeibc gov proposals +func NewStakeibcProposalHandler(k keeper.Keeper) govtypes.Handler { + return func(ctx sdk.Context, content govtypes.Content) error { + switch c := content.(type) { + case *types.AddValidatorsProposal: + return k.AddValidatorsProposal(ctx, c) + case *types.ToggleLSMProposal: + return k.ToggleLSMProposal(ctx, c) + + default: + return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized stakeibc proposal content type: %T", c) + } + } +} diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index 8c2b86d403..19bf30b2de 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -110,17 +110,14 @@ func (im IBCMiddleware) OnChanOpenAck( // Set ICA account addresses switch { - // withdrawal address case portID == withdrawalAddress: - zoneInfo.WithdrawalAccount = &types.ICAAccount{Address: address, Target: types.ICAAccountType_WITHDRAWAL} - // fee address + zoneInfo.WithdrawalIcaAddress = address case portID == feeAddress: - zoneInfo.FeeAccount = &types.ICAAccount{Address: address, Target: types.ICAAccountType_FEE} - // delegation address + zoneInfo.FeeIcaAddress = address case portID == delegationAddress: - zoneInfo.DelegationAccount = &types.ICAAccount{Address: address, Target: types.ICAAccountType_DELEGATION} + zoneInfo.DelegationIcaAddress = address case portID == redemptionAddress: - zoneInfo.RedemptionAccount = &types.ICAAccount{Address: address, Target: types.ICAAccountType_REDEMPTION} + zoneInfo.RedemptionIcaAddress = address default: ctx.Logger().Error(fmt.Sprintf("Missing portId: %s", portID)) } diff --git a/x/stakeibc/abci.go b/x/stakeibc/keeper/abci.go similarity index 77% rename from x/stakeibc/abci.go rename to x/stakeibc/keeper/abci.go index 1a36ef98cf..9cd784ad07 100644 --- a/x/stakeibc/abci.go +++ b/x/stakeibc/keeper/abci.go @@ -1,4 +1,4 @@ -package stakeibc +package keeper import ( "fmt" @@ -6,14 +6,13 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" sdk "github.com/cosmos/cosmos-sdk/types" ) // BeginBlocker of stakeibc module -func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bk types.BankKeeper, ak types.AccountKeeper) { +func (k Keeper) BeginBlocker(ctx sdk.Context) { defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) // Iterate over all host zones and verify redemption rate @@ -37,4 +36,12 @@ func BeginBlocker(ctx sdk.Context, k keeper.Keeper, bk types.BankKeeper, ak type ) } } + + k.AssertStrideAndDayEpochRelationship(ctx) +} + +func (k Keeper) EndBlocker(ctx sdk.Context) { + // Submit an IBC transfer or detokenization ICA for all queued LSM Deposits across each host + k.TransferAllLSMDeposits(ctx) + k.DetokenizeAllLSMDeposits(ctx) } diff --git a/x/stakeibc/keeper/deposit_records.go b/x/stakeibc/keeper/deposit_records.go index 42f3229261..5a3559c246 100644 --- a/x/stakeibc/keeper/deposit_records.go +++ b/x/stakeibc/keeper/deposit_records.go @@ -68,13 +68,10 @@ func (k Keeper) TransferExistingDepositsToHostZones(ctx sdk.Context, epochNumber continue } - hostZoneModuleAddress := hostZone.Address - delegateAccount := hostZone.DelegationAccount - if delegateAccount == nil || delegateAccount.Address == "" { + if hostZone.DelegationIcaAddress == "" { k.Logger(ctx).Error(fmt.Sprintf("[TransferExistingDepositsToHostZones] Zone %s is missing a delegation address!", hostZone.ChainId)) continue } - delegateAddress := delegateAccount.Address k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Transferring %v%s", depositRecord.Amount, hostZone.HostDenom)) transferCoin := sdk.NewCoin(hostZone.IbcDenom, depositRecord.Amount) @@ -89,8 +86,8 @@ func (k Keeper) TransferExistingDepositsToHostZones(ctx sdk.Context, epochNumber ibctransfertypes.PortID, hostZone.TransferChannelId, transferCoin, - hostZoneModuleAddress, - delegateAddress, + hostZone.DepositAddress, + hostZone.DelegationIcaAddress, clienttypes.Height{}, timeoutTimestamp, "", @@ -98,10 +95,10 @@ func (k Keeper) TransferExistingDepositsToHostZones(ctx sdk.Context, epochNumber k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Transfer Msg: %+v", msg)) // transfer the deposit record and update its status to TRANSFER_IN_PROGRESS - err := k.RecordsKeeper.Transfer(ctx, msg, depositRecord) + err := k.RecordsKeeper.IBCTransferNativeTokens(ctx, msg, depositRecord) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("[TransferExistingDepositsToHostZones] Failed to initiate IBC transfer to host zone, HostZone: %v, Channel: %v, Amount: %v, ModuleAddress: %v, DelegateAddress: %v, Timeout: %v", - hostZone.ChainId, hostZone.TransferChannelId, transferCoin, hostZoneModuleAddress, delegateAddress, timeoutTimestamp)) + hostZone.ChainId, hostZone.TransferChannelId, transferCoin, hostZone.DepositAddress, hostZone.DelegationIcaAddress, timeoutTimestamp)) k.Logger(ctx).Error(fmt.Sprintf("[TransferExistingDepositsToHostZones] err {%s}", err.Error())) continue } @@ -132,6 +129,9 @@ func (k Keeper) StakeExistingDepositsOnHostZones(ctx sdk.Context, epochNumber ui } for _, depositRecord := range stakeDepositRecords[:maxDepositRecordsToStake] { + if depositRecord.Amount.IsZero() { + continue + } k.Logger(ctx).Info(utils.LogWithHostZone(depositRecord.HostZoneId, "Processing deposit record %d: %v%s", depositRecord.Id, depositRecord.Amount, depositRecord.Denom)) @@ -146,8 +146,7 @@ func (k Keeper) StakeExistingDepositsOnHostZones(ctx sdk.Context, epochNumber ui continue } - delegateAccount := hostZone.DelegationAccount - if delegateAccount == nil || delegateAccount.Address == "" { + if hostZone.DelegationIcaAddress == "" { k.Logger(ctx).Error(fmt.Sprintf("[StakeExistingDepositsOnHostZones] Zone %s is missing a delegation address!", hostZone.ChainId)) continue } diff --git a/x/stakeibc/keeper/deposit_records_test.go b/x/stakeibc/keeper/deposit_records_test.go index 22f266ad17..4a2f9de6bf 100644 --- a/x/stakeibc/keeper/deposit_records_test.go +++ b/x/stakeibc/keeper/deposit_records_test.go @@ -8,8 +8,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - sdkmath "cosmossdk.io/math" epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" @@ -45,7 +43,7 @@ type DepositRecordsTestCase struct { initialDepositRecords TestDepositRecords initialModuleAccountBalance sdk.Coin hostZone stakeibctypes.HostZone - hostModuleAddress sdk.AccAddress + hostZoneDepositAddress sdk.AccAddress epochNumber uint64 TransferChannel Channel DelegationChannel Channel @@ -143,15 +141,15 @@ func (s *KeeperTestSuite) GetInitialDepositRecords(currentEpoch uint64) TestDepo func (s *KeeperTestSuite) SetupDepositRecords() DepositRecordsTestCase { delegationAccountOwner := fmt.Sprintf("%s.%s", HostChainId, "DELEGATION") - delegationChannelID := s.CreateICAChannel(delegationAccountOwner) + delegationChannelID, delegationPortID := s.CreateICAChannel(delegationAccountOwner) delegationAddress := s.IcaAddresses[delegationAccountOwner] ibcDenomTrace := s.GetIBCDenomTrace(Atom) // we need a true IBC denom here - hostModuleAddress := stakeibctypes.NewZoneAddress(HostChainId) + depositAddress := stakeibctypes.NewHostZoneDepositAddress(HostChainId) s.App.TransferKeeper.SetDenomTrace(s.Ctx, ibcDenomTrace) initialModuleAccountBalance := sdk.NewCoin(ibcDenomTrace.IBCDenom(), sdkmath.NewInt(15_000)) - s.FundAccount(hostModuleAddress, initialModuleAccountBalance) + s.FundAccount(depositAddress, initialModuleAccountBalance) validators := []*stakeibctypes.Validator{ { @@ -167,14 +165,14 @@ func (s *KeeperTestSuite) SetupDepositRecords() DepositRecordsTestCase { } hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - Address: hostModuleAddress.String(), - DelegationAccount: &stakeibctypes.ICAAccount{Address: delegationAddress}, - ConnectionId: ibctesting.FirstConnectionID, - TransferChannelId: ibctesting.FirstChannelID, - HostDenom: Atom, - IbcDenom: ibcDenomTrace.IBCDenom(), - Validators: validators, + ChainId: HostChainId, + DepositAddress: depositAddress.String(), + DelegationIcaAddress: delegationAddress, + ConnectionId: ibctesting.FirstConnectionID, + TransferChannelId: ibctesting.FirstChannelID, + HostDenom: Atom, + IbcDenom: ibcDenomTrace.IBCDenom(), + Validators: validators, } currentEpoch := uint64(2) @@ -196,14 +194,14 @@ func (s *KeeperTestSuite) SetupDepositRecords() DepositRecordsTestCase { initialDepositRecords: initialDepositRecords, initialModuleAccountBalance: initialModuleAccountBalance, hostZone: hostZone, - hostModuleAddress: hostModuleAddress, + hostZoneDepositAddress: depositAddress, epochNumber: currentEpoch, TransferChannel: Channel{ PortID: ibctesting.TransferPort, ChannelID: ibctesting.FirstChannelID, }, DelegationChannel: Channel{ - PortID: icatypes.ControllerPortPrefix + delegationAccountOwner, + PortID: delegationPortID, ChannelID: delegationChannelID, }, } @@ -336,7 +334,7 @@ func (s *KeeperTestSuite) CheckStateAfterTransferringDepositRecords(tc DepositRe expectedTransferAmount = expectedTransferAmount.Add(depositRecord.Amount) } expectedModuleBalance := tc.initialModuleAccountBalance.SubAmount(expectedTransferAmount) - actualModuleBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.hostModuleAddress, tc.hostZone.IbcDenom) + actualModuleBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.hostZoneDepositAddress, tc.hostZone.IbcDenom) s.CompareCoins(expectedModuleBalance, actualModuleBalance, "host module balance") // Confirm deposit records with 0 amount were removed @@ -376,18 +374,7 @@ func (s *KeeperTestSuite) TestTransferDepositRecords_NoDelegationAccount() { tc := s.SetupDepositRecords() // Remove the delegation account from the host zone badHostZone := tc.hostZone - badHostZone.DelegationAccount = nil - s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - - numFailed := len(tc.initialDepositRecords.recordsToBeTransfered) - s.CheckStateAfterTransferringDepositRecords(tc, numFailed) -} - -func (s *KeeperTestSuite) TestTransferDepositRecords_NoDelegationAddress() { - tc := s.SetupDepositRecords() - // Remove the delegation address from the host zone - badHostZone := tc.hostZone - badHostZone.DelegationAccount.Address = "" + badHostZone.DelegationIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) numFailed := len(tc.initialDepositRecords.recordsToBeTransfered) @@ -493,18 +480,7 @@ func (s *KeeperTestSuite) TestStakeDepositRecords_NoDelegationAccount() { tc := s.SetupDepositRecords() // Remove the delegation account from the host zone badHostZone := tc.hostZone - badHostZone.DelegationAccount = nil - s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - - numFailed := len(tc.initialDepositRecords.recordsToBeStaked) - s.CheckStateAfterStakingDepositRecords(tc, numFailed) -} - -func (s *KeeperTestSuite) TestStakeDepositRecords_NoDelegationAddress() { - tc := s.SetupDepositRecords() - // Remove the delegation address from the host zone - badHostZone := tc.hostZone - badHostZone.DelegationAccount.Address = "" + badHostZone.DelegationIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) numFailed := len(tc.initialDepositRecords.recordsToBeStaked) diff --git a/x/stakeibc/keeper/events.go b/x/stakeibc/keeper/events.go new file mode 100644 index 0000000000..39e941162e --- /dev/null +++ b/x/stakeibc/keeper/events.go @@ -0,0 +1,140 @@ +package keeper + +import ( + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +// Emits a successful liquid stake event, and displays metadata such as the stToken amount +func EmitSuccessfulLiquidStakeEvent(ctx sdk.Context, msg *types.MsgLiquidStake, hostZone types.HostZone, stAmount sdkmath.Int) { + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeLiquidStakeRequest, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyLiquidStaker, msg.Creator), + sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), + sdk.NewAttribute(types.AttributeKeyNativeBaseDenom, msg.HostDenom), + sdk.NewAttribute(types.AttributeKeyNativeIBCDenom, hostZone.IbcDenom), + sdk.NewAttribute(types.AttributeKeyNativeAmount, msg.Amount.String()), + sdk.NewAttribute(types.AttributeKeyStTokenAmount, stAmount.String()), + ), + ) +} + +// Builds common LSM liquid stake attribute for the event emission +func getLSMLiquidStakeEventAttributes(hostZone types.HostZone, lsmTokenDeposit recordstypes.LSMTokenDeposit) []sdk.Attribute { + return []sdk.Attribute{ + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyLiquidStaker, lsmTokenDeposit.StakerAddress), + sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), + sdk.NewAttribute(types.AttributeKeyNativeBaseDenom, hostZone.HostDenom), + sdk.NewAttribute(types.AttributeKeyValidator, lsmTokenDeposit.ValidatorAddress), + sdk.NewAttribute(types.AttributeKeyNativeIBCDenom, lsmTokenDeposit.IbcDenom), + sdk.NewAttribute(types.AttributeKeyLSMTokenBaseDenom, lsmTokenDeposit.Denom), + sdk.NewAttribute(types.AttributeKeyNativeAmount, lsmTokenDeposit.Amount.String()), + sdk.NewAttribute(types.AttributeKeyStTokenAmount, lsmTokenDeposit.StToken.Amount.String()), + sdk.NewAttribute(types.AttributeKeyLSMLiquidStakeTxId, lsmTokenDeposit.DepositId), + } +} + +// Emits a successful LSM liquid stake event, and displays metadata such as the stToken amount +func EmitSuccessfulLSMLiquidStakeEvent(ctx sdk.Context, hostZone types.HostZone, lsmTokenDeposit recordstypes.LSMTokenDeposit) { + attributes := append( + getLSMLiquidStakeEventAttributes(hostZone, lsmTokenDeposit), + sdk.NewAttribute(types.AttributeKeyTransactionStatus, types.AttributeValueTransactionSucceeded), + ) + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeLSMLiquidStakeRequest, + attributes..., + ), + ) +} + +// Emits a failed LSM liquid stake event, and displays the error +func EmitFailedLSMLiquidStakeEvent(ctx sdk.Context, hostZone types.HostZone, lsmTokenDeposit recordstypes.LSMTokenDeposit, errorMessage string) { + attributes := append( + getLSMLiquidStakeEventAttributes(hostZone, lsmTokenDeposit), + sdk.NewAttribute(types.AttributeKeyTransactionStatus, types.AttributeValueTransactionFailed), + sdk.NewAttribute(types.AttributeKeyError, errorMessage), + ) + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeLSMLiquidStakeRequest, + attributes..., + ), + ) +} + +// Emits a pending LSM liquid stake event, meaning a slash query was submitted +func EmitPendingLSMLiquidStakeEvent(ctx sdk.Context, hostZone types.HostZone, lsmTokenDeposit recordstypes.LSMTokenDeposit) { + attributes := append( + getLSMLiquidStakeEventAttributes(hostZone, lsmTokenDeposit), + sdk.NewAttribute(types.AttributeKeyTransactionStatus, types.AttributeValueTransactionPending), + ) + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeLSMLiquidStakeRequest, + attributes..., + ), + ) +} + +// Emits an event if a validator's shares to tokens rate changed +func EmitValidatorSharesToTokensRateChangeEvent( + ctx sdk.Context, + chainId string, + validatorAddress string, + previousSharesToTokensRate, + currentSharesToTokensRate sdk.Dec, +) { + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeValidatorSharesToTokensRateChange, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyHostZone, chainId), + sdk.NewAttribute(types.AttributeKeyValidator, validatorAddress), + sdk.NewAttribute(types.AttributeKeyPreviousSharesToTokensRate, previousSharesToTokensRate.String()), + sdk.NewAttribute(types.AttributeKeyCurrentSharesToTokensRate, currentSharesToTokensRate.String()), + ), + ) +} + +// Emits an event if a validator was slashed +func EmitValidatorSlashEvent( + ctx sdk.Context, + hostZone types.HostZone, + validatorAddress string, + slashPercent sdk.Dec, + slashAmount sdkmath.Int, + currentDelegation sdkmath.Int, +) { + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeValidatorSlash, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), + sdk.NewAttribute(types.AttributeKeyNativeBaseDenom, hostZone.HostDenom), + sdk.NewAttribute(types.AttributeKeyValidator, validatorAddress), + sdk.NewAttribute(types.AttributeKeySlashPercent, slashPercent.String()), + sdk.NewAttribute(types.AttributeKeySlashAmount, slashAmount.String()), + sdk.NewAttribute(types.AttributeKeyCurrentDelegation, currentDelegation.String()), + ), + ) +} + +// Emits an event if an undelegation ICA was submitted for a host zone +func EmitUndelegationEvent(ctx sdk.Context, hostZone types.HostZone, totalUnbondAmount sdkmath.Int) { + ctx.EventManager().EmitEvent( + sdk.NewEvent( + types.EventTypeUndelegation, + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), + sdk.NewAttribute(types.AttributeKeyNativeBaseDenom, hostZone.HostDenom), + sdk.NewAttribute(types.AttributeKeyTotalUnbondAmount, totalUnbondAmount.String()), + ), + ) +} diff --git a/x/stakeibc/keeper/gov.go b/x/stakeibc/keeper/gov.go index 8c276d50c5..c9178c9b3c 100644 --- a/x/stakeibc/keeper/gov.go +++ b/x/stakeibc/keeper/gov.go @@ -15,3 +15,15 @@ func (k Keeper) AddValidatorsProposal(ctx sdk.Context, msg *types.AddValidatorsP return nil } + +func (k Keeper) ToggleLSMProposal(ctx sdk.Context, msg *types.ToggleLSMProposal) error { + hostZone, found := k.GetHostZone(ctx, msg.HostZone) + if !found { + return types.ErrHostZoneNotFound.Wrap(msg.HostZone) + } + + hostZone.LsmLiquidStakeEnabled = msg.Enabled + k.SetHostZone(ctx, hostZone) + + return nil +} diff --git a/x/stakeibc/keeper/grpc_query_address_unbondings.go b/x/stakeibc/keeper/grpc_query_address_unbondings.go index 6a93b5e7d1..ffbb86b59e 100644 --- a/x/stakeibc/keeper/grpc_query_address_unbondings.go +++ b/x/stakeibc/keeper/grpc_query_address_unbondings.go @@ -60,9 +60,10 @@ func (k Keeper) AddressUnbondings(c context.Context, req *types.QueryAddressUnbo if !found { return nil, sdkerrors.ErrKeyNotFound } - daysUntilUnbonding := hostZone.UnbondingFrequency - (currentDay % hostZone.UnbondingFrequency) + unbondingFrequency := hostZone.GetUnbondingFrequency() + daysUntilUnbonding := unbondingFrequency - (currentDay % unbondingFrequency) unbondingStartTime := dayEpochTracker.NextEpochStartTime + ((daysUntilUnbonding - 1) * nanosecondsInDay) - unbondingDurationEstimate := (hostZone.UnbondingFrequency - 1) * 7 + unbondingDurationEstimate := (unbondingFrequency - 1) * 7 unbondingTime = unbondingStartTime + (unbondingDurationEstimate * nanosecondsInDay) } unbondingTime = unbondingTime + nanosecondsInDay diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index c6bf23f936..b682d8afb8 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -15,6 +15,8 @@ import ( "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) +const StrideEpochsPerDayEpoch = uint64(4) + func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInfo) { // Update the stakeibc epoch tracker epochNumber, err := k.UpdateEpochTracker(ctx, epochInfo) @@ -69,6 +71,15 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf if epochNumber%reinvestInterval == 0 { // allow a few blocks from UpdateUndelegatedBal to avoid conflicts k.ReinvestRewards(ctx) } + + // Rebalance stake according to validator weights + // This should only be run once per day, but it should not be run on a stride epoch that + // overlaps the day epoch, otherwise the unbondings could cause a redelegation to fail + // On mainnet, the stride epoch overlaps the day epoch when `epochNumber % 4 == 1`, + // so this will trigger the epoch before the unbonding + if epochNumber%StrideEpochsPerDayEpoch == 0 { + k.RebalanceAllHostZones(ctx) + } } if epochInfo.Identifier == epochstypes.MINT_EPOCH { k.AllocateHostZoneReward(ctx) @@ -138,50 +149,132 @@ func (k Keeper) SetWithdrawalAddress(ctx sdk.Context) { } // Updates the redemption rate for each host zone -// The redemption rate equation is: +// At a high level, the redemption rate is equal to the amount of native tokens locked divided by the stTokens in existence. +// The equation is broken down further into the following sub-components: +// +// Native Tokens Locked: +// 1. Deposit Account Balance: native tokens deposited from liquid stakes, that are still living on Stride +// 2. Undelegated Balance: native tokens that have been transferred to the host zone, but have not been delegated yet +// 3. Tokenized Delegations: Delegations inherent in LSM Tokens that have not yet been converted to native stake +// 4. Native Delegations: Delegations either from native tokens, or LSM Tokens that have been detokenized +// StToken Amount: +// 1. Total Supply of the stToken // -// (Unbonded Balance + Staked Balance + Module Account Balance) / (stToken Supply) +// Redemption Rate = +// (Deposit Account Balance + Undelegated Balance + Tokenized Delegation + Native Delegation) / (stToken Supply) func (k Keeper) UpdateRedemptionRates(ctx sdk.Context, depositRecords []recordstypes.DepositRecord) { k.Logger(ctx).Info("Updating Redemption Rates...") // Update the redemption rate for each host zone for _, hostZone := range k.GetAllActiveHostZone(ctx) { + k.UpdateRedemptionRateForHostZone(ctx, hostZone, depositRecords) + } +} - // Gather redemption rate components - stSupply := k.bankKeeper.GetSupply(ctx, types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount - if stSupply.IsZero() { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "No st%s in circulation - redemption rate is unchanged", hostZone.HostDenom)) - continue - } - undelegatedBalance := k.GetUndelegatedBalance(hostZone, depositRecords) - stakedBalance := hostZone.StakedBal - moduleAcctBalance := k.GetModuleAccountBalance(hostZone, depositRecords) - +func (k Keeper) UpdateRedemptionRateForHostZone(ctx sdk.Context, hostZone types.HostZone, depositRecords []recordstypes.DepositRecord) { + // Gather redemption rate components + stSupply := k.bankKeeper.GetSupply(ctx, types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom)).Amount + if stSupply.IsZero() { k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "Redemption Rate Components - Undelegated Balance: %v, Staked Balance: %v, Module Account Balance: %v, stToken Supply: %v", - undelegatedBalance, stakedBalance, moduleAcctBalance, stSupply)) + "No st%s in circulation - redemption rate is unchanged", hostZone.HostDenom)) + return + } - // Calculate the redemption rate - redemptionRate := (sdk.NewDecFromInt(undelegatedBalance).Add(sdk.NewDecFromInt(stakedBalance)).Add(sdk.NewDecFromInt(moduleAcctBalance))).Quo(sdk.NewDecFromInt(stSupply)) - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "New Redemption Rate: %v (vs Prev Rate: %v)", redemptionRate, hostZone.RedemptionRate)) + depositAccountBalance := k.GetDepositAccountBalance(hostZone.ChainId, depositRecords) + undelegatedBalance := k.GetUndelegatedBalance(hostZone.ChainId, depositRecords) + tokenizedDelegation := k.GetTotalTokenizedDelegations(ctx, hostZone) + nativeDelegation := sdk.NewDecFromInt(hostZone.TotalDelegations) - // Update the host zone - hostZone.LastRedemptionRate = hostZone.RedemptionRate - hostZone.RedemptionRate = redemptionRate - k.SetHostZone(ctx, hostZone) + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Redemption Rate Components - Deposit Account Balance: %v, Undelegated Balance: %v, "+ + "LSM Delegated Balance: %v, Native Delegations: %v, stToken Supply: %v", + depositAccountBalance, undelegatedBalance, tokenizedDelegation, + nativeDelegation, stSupply)) - // If the redemption rate is outside of safety bounds, exit so the redemption rate is not pushed to the oracle - redemptionRateSafe, _ := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) - if !redemptionRateSafe { - continue + // Calculate the redemption rate + nativeTokensLocked := depositAccountBalance.Add(undelegatedBalance).Add(tokenizedDelegation).Add(nativeDelegation) + redemptionRate := nativeTokensLocked.Quo(sdk.NewDecFromInt(stSupply)) + + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "New Redemption Rate: %v (vs Prev Rate: %v)", redemptionRate, hostZone.RedemptionRate)) + + // Update the host zone + hostZone.LastRedemptionRate = hostZone.RedemptionRate + hostZone.RedemptionRate = redemptionRate + k.SetHostZone(ctx, hostZone) + + // If the redemption rate is outside of safety bounds, exit so the redemption rate is not pushed to the oracle + redemptionRateSafe, _ := k.IsRedemptionRateWithinSafetyBounds(ctx, hostZone) + if !redemptionRateSafe { + return + } + + // Otherwise, submit the redemption rate to the oracle + if err := k.PostRedemptionRateToOracles(ctx, hostZone, redemptionRate); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to send redemption rate to oracle: %s", err.Error())) + return + } +} + +// Determine the deposit account balance, representing native tokens that have been deposited +// from liquid stakes, but have not yet been transferred to the host +func (k Keeper) GetDepositAccountBalance(chainId string, depositRecords []recordstypes.DepositRecord) sdk.Dec { + // sum on deposit records with status TRANSFER_QUEUE or TRANSFER_IN_PROGRESS + totalAmount := sdkmath.ZeroInt() + for _, depositRecord := range depositRecords { + transferStatus := (depositRecord.Status == recordstypes.DepositRecord_TRANSFER_QUEUE || + depositRecord.Status == recordstypes.DepositRecord_TRANSFER_IN_PROGRESS) + + if depositRecord.HostZoneId == chainId && transferStatus { + totalAmount = totalAmount.Add(depositRecord.Amount) } + } - // Otherwise, submit the redemption rate to the oracle - if err := k.PostRedemptionRateToOracles(ctx, hostZone, redemptionRate); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Unable to send redemption rate to oracle: %s", err.Error())) - continue + return sdk.NewDecFromInt(totalAmount) +} + +// Determine the undelegated balance from the deposit records queued for staking +func (k Keeper) GetUndelegatedBalance(chainId string, depositRecords []recordstypes.DepositRecord) sdk.Dec { + // sum on deposit records with status DELEGATION_QUEUE or DELEGATION_IN_PROGRESS + totalAmount := sdkmath.ZeroInt() + for _, depositRecord := range depositRecords { + delegationStatus := (depositRecord.Status == recordstypes.DepositRecord_DELEGATION_QUEUE || + depositRecord.Status == recordstypes.DepositRecord_DELEGATION_IN_PROGRESS) + + if depositRecord.HostZoneId == chainId && delegationStatus { + totalAmount = totalAmount.Add(depositRecord.Amount) } } + + return sdk.NewDecFromInt(totalAmount) +} + +// Returns the total delegated balance that's stored in LSM tokens +// This is used for the redemption rate calculation +// +// The relevant tokens are identified by the deposit records in status "DEPOSIT_PENDING" +// "DEPOSIT_PENDING" means the liquid staker's tokens have not been sent to Stride yet +// so they should *not* be included in the redemption rate. All other statuses indicate +// the LSM tokens have been deposited and should be included in the final calculation +// +// Each LSM token represents a delegator share so the validator's shares to tokens rate +// must be used to denominate it's value in native tokens +func (k Keeper) GetTotalTokenizedDelegations(ctx sdk.Context, hostZone types.HostZone) sdk.Dec { + total := sdkmath.ZeroInt() + for _, deposit := range k.RecordsKeeper.GetLSMDepositsForHostZone(ctx, hostZone.ChainId) { + if deposit.Status != recordstypes.LSMTokenDeposit_DEPOSIT_PENDING { + validator, _, found := GetValidatorFromAddress(hostZone.Validators, deposit.ValidatorAddress) + if !found { + k.Logger(ctx).Error(fmt.Sprintf("Validator %s found in LSMTokenDeposit but no longer exists", deposit.ValidatorAddress)) + continue + } + liquidStakedShares := deposit.Amount + liquidStakedTokens := sdk.NewDecFromInt(liquidStakedShares).Mul(validator.SharesToTokensRate) + total = total.Add(liquidStakedTokens.TruncateInt()) + } + } + + return sdk.NewDecFromInt(total) } // Pushes a redemption rate update to the ICA oracle @@ -205,43 +298,12 @@ func (k Keeper) PostRedemptionRateToOracles(ctx sdk.Context, hostZone types.Host return nil } -func (k Keeper) GetUndelegatedBalance(hostZone types.HostZone, depositRecords []recordstypes.DepositRecord) sdkmath.Int { - // filter to only the deposit records for the host zone with status DELEGATION_QUEUE - UndelegatedDepositRecords := utils.FilterDepositRecords(depositRecords, func(record recordstypes.DepositRecord) (condition bool) { - return ((record.Status == recordstypes.DepositRecord_DELEGATION_QUEUE || record.Status == recordstypes.DepositRecord_DELEGATION_IN_PROGRESS) && record.HostZoneId == hostZone.ChainId) - }) - - // sum the amounts of the deposit records - totalAmount := sdkmath.ZeroInt() - for _, depositRecord := range UndelegatedDepositRecords { - totalAmount = totalAmount.Add(depositRecord.Amount) - } - - return totalAmount -} - -func (k Keeper) GetModuleAccountBalance(hostZone types.HostZone, depositRecords []recordstypes.DepositRecord) sdkmath.Int { - // filter to only the deposit records for the host zone with status DELEGATION - ModuleAccountRecords := utils.FilterDepositRecords(depositRecords, func(record recordstypes.DepositRecord) (condition bool) { - return (record.Status == recordstypes.DepositRecord_TRANSFER_QUEUE || record.Status == recordstypes.DepositRecord_TRANSFER_IN_PROGRESS) && record.HostZoneId == hostZone.ChainId - }) - - // sum the amounts of the deposit records - totalAmount := sdkmath.ZeroInt() - for _, depositRecord := range ModuleAccountRecords { - totalAmount = totalAmount.Add(depositRecord.Amount) - } - - return totalAmount -} - func (k Keeper) ReinvestRewards(ctx sdk.Context) { k.Logger(ctx).Info("Reinvesting tokens...") for _, hostZone := range k.GetAllActiveHostZone(ctx) { // only process host zones once withdrawal accounts are registered - withdrawalAccount := hostZone.WithdrawalAccount - if withdrawalAccount == nil || withdrawalAccount.Address == "" { + if hostZone.WithdrawalIcaAddress == "" { k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Withdrawal account not registered for host zone")) continue } diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index f94434bb02..230b570314 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -25,9 +25,9 @@ func (k Keeper) SetHostZone(ctx sdk.Context, hostZone types.HostZone) { } // GetHostZone returns a hostZone from its id -func (k Keeper) GetHostZone(ctx sdk.Context, chain_id string) (val types.HostZone, found bool) { +func (k Keeper) GetHostZone(ctx sdk.Context, chainId string) (val types.HostZone, found bool) { store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.HostZoneKey)) - b := store.Get([]byte(chain_id)) + b := store.Get([]byte(chainId)) if b == nil { return val, false } @@ -101,28 +101,118 @@ func (k Keeper) GetAllActiveHostZone(ctx sdk.Context) (list []types.HostZone) { return } -func (k Keeper) AddDelegationToValidator(ctx sdk.Context, hostZone types.HostZone, validatorAddress string, amount sdkmath.Int, callbackId string) (success bool) { +// Updates a validator's individual delegation, and the corresponding total delegation on the host zone +// Note: This modifies the original host zone struct. The calling function must Set this host zone +// for changes to persist +func (k Keeper) AddDelegationToValidator( + ctx sdk.Context, + hostZone *types.HostZone, + validatorAddress string, + amount sdkmath.Int, + callbackId string, +) error { for _, validator := range hostZone.Validators { if validator.Address == validatorAddress { k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(hostZone.ChainId, callbackId, - " Validator %s, Current Delegation: %v, Delegation Change: %v", validator.Address, validator.DelegationAmt, amount)) - - if amount.GTE(sdkmath.ZeroInt()) { - validator.DelegationAmt = validator.DelegationAmt.Add(amount) - return true - } - absAmt := amount.Abs() - if absAmt.GT(validator.DelegationAmt) { - k.Logger(ctx).Error(fmt.Sprintf("Delegation amount %v is greater than validator %s delegation amount %v", absAmt, validatorAddress, validator.DelegationAmt)) - return false + " Validator %s, Current Delegation: %v, Delegation Change: %v", validator.Address, validator.Delegation, amount)) + + // If the delegation change is negative, make sure it wont cause the delegation to fall below zero + if amount.IsNegative() { + if amount.Abs().GT(validator.Delegation) { + return errorsmod.Wrapf(types.ErrValidatorDelegationChg, + "Delegation change (%v) is greater than validator (%s) delegation %v", + amount.Abs(), validatorAddress, validator.Delegation) + } + if amount.Abs().GT(hostZone.TotalDelegations) { + return errorsmod.Wrapf(types.ErrValidatorDelegationChg, + "Delegation change (%v) is greater than total delegation amount on host %s (%v)", + amount.Abs(), hostZone.ChainId, hostZone.TotalDelegations) + } } - validator.DelegationAmt = validator.DelegationAmt.Sub(absAmt) - return true + + validator.Delegation = validator.Delegation.Add(amount) + hostZone.TotalDelegations = hostZone.TotalDelegations.Add(amount) + + return nil } } - k.Logger(ctx).Error(fmt.Sprintf("Could not find validator %s on host zone %s", validatorAddress, hostZone.ChainId)) - return false + return errorsmod.Wrapf(types.ErrValidatorNotFound, + "Could not find validator %s on host zone %s", validatorAddress, hostZone.ChainId) +} + +// Increments the validators slash query progress tracker +func (k Keeper) IncrementValidatorSlashQueryProgress( + ctx sdk.Context, + chainId string, + validatorAddress string, + amount sdkmath.Int, +) error { + hostZone, found := k.GetHostZone(ctx, chainId) + if !found { + return types.ErrHostZoneNotFound + } + + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, validatorAddress) + if !found { + return types.ErrValidatorNotFound + } + + // Increment the progress tracker + oldProgress := validator.SlashQueryProgressTracker + newProgress := validator.SlashQueryProgressTracker.Add(amount) + validator.SlashQueryProgressTracker = newProgress + + // If the checkpoint is zero, it implies the TVL was 0 last time it was set, and we should + // update it here + // If the checkpoint is non-zero, only update it if it was just breached + shouldUpdateCheckpoint := true + if !validator.SlashQueryCheckpoint.IsZero() { + oldInterval := oldProgress.Quo(validator.SlashQueryCheckpoint) + newInterval := newProgress.Quo(validator.SlashQueryCheckpoint) + shouldUpdateCheckpoint = oldInterval.LT(newInterval) + } + + // Optionally re-calculate the checkpoint + // Threshold of 1% means once 1% of TVL has been breached, the query is issued + if shouldUpdateCheckpoint { + validator.SlashQueryCheckpoint = k.GetUpdatedSlashQueryCheckpoint(ctx, hostZone.TotalDelegations) + } + + hostZone.Validators[valIndex] = &validator + k.SetHostZone(ctx, hostZone) + + return nil +} + +// Increments the number of validator delegation changes in progress by 1 +// Note: This modifies the original host zone struct. The calling function must Set this host zone +// for changes to persist +func (k Keeper) IncrementValidatorDelegationChangesInProgress(hostZone *types.HostZone, validatorAddress string) error { + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, validatorAddress) + if !found { + return errorsmod.Wrapf(types.ErrValidatorNotFound, "validator %s not found", validatorAddress) + } + validator.DelegationChangesInProgress += 1 + hostZone.Validators[valIndex] = &validator + return nil +} + +// Decrements the number of validator delegation changes in progress by 1 +// Note: This modifies the original host zone struct. The calling function must Set this host zone +// for changes to persist +func (k Keeper) DecrementValidatorDelegationChangesInProgress(hostZone *types.HostZone, validatorAddress string) error { + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, validatorAddress) + if !found { + return errorsmod.Wrapf(types.ErrValidatorNotFound, "validator %s not found", validatorAddress) + } + if validator.DelegationChangesInProgress == 0 { + return errorsmod.Wrapf(types.ErrInvalidValidatorDelegationUpdates, + "cannot decrement the number of delegation updates if the validator has 0 updates in progress") + } + validator.DelegationChangesInProgress -= 1 + hostZone.Validators[valIndex] = &validator + return nil } // Appends a validator to host zone (if the host zone is not already at capacity) @@ -135,12 +225,6 @@ func (k Keeper) AddValidatorToHostZone(ctx sdk.Context, chainId string, validato return errorsmod.Wrapf(types.ErrHostZoneNotFound, "Host Zone (%s) not found", chainId) } - // Get max number of validators and confirm we won't exceed it - err := k.ConfirmValSetHasSpace(ctx, hostZone.Validators) - if err != nil { - return errorsmod.Wrap(types.ErrMaxNumValidators, "cannot add validator on host zone") - } - // Check that we don't already have this validator // Grab the minimum weight in the process (to assign to validator's added through governance) var minWeight uint64 = math.MaxUint64 @@ -163,12 +247,17 @@ func (k Keeper) AddValidatorToHostZone(ctx sdk.Context, chainId string, validato valWeight = minWeight } + // Determine the slash query checkpoint for LSM liquid stakes + checkpoint := k.GetUpdatedSlashQueryCheckpoint(ctx, hostZone.TotalDelegations) + // Finally, add the validator to the host hostZone.Validators = append(hostZone.Validators, &types.Validator{ - Name: validator.Name, - Address: validator.Address, - Weight: valWeight, - DelegationAmt: sdkmath.ZeroInt(), + Name: validator.Name, + Address: validator.Address, + Weight: valWeight, + Delegation: sdkmath.ZeroInt(), + SlashQueryProgressTracker: sdkmath.ZeroInt(), + SlashQueryCheckpoint: checkpoint, }) k.SetHostZone(ctx, hostZone) @@ -178,6 +267,7 @@ func (k Keeper) AddValidatorToHostZone(ctx sdk.Context, chainId string, validato // Removes a validator from a host zone // The validator must be zero-weight and have no delegations in order to be removed +// There must also be no LSMTokenDeposits in progress since this would update the delegation on completion func (k Keeper) RemoveValidatorFromHostZone(ctx sdk.Context, chainId string, validatorAddress string) error { hostZone, found := k.GetHostZone(ctx, chainId) if !found { @@ -185,14 +275,23 @@ func (k Keeper) RemoveValidatorFromHostZone(ctx sdk.Context, chainId string, val k.Logger(ctx).Error(errMsg) return errorsmod.Wrapf(types.ErrHostZoneNotFound, errMsg) } + + // Check for LSMTokenDeposit records with this specific validator address + lsmTokenDeposits := k.RecordsKeeper.GetAllLSMTokenDeposit(ctx) + for _, lsmTokenDeposit := range lsmTokenDeposits { + if lsmTokenDeposit.ValidatorAddress == validatorAddress { + return errorsmod.Wrapf(types.ErrUnableToRemoveValidator, "Validator (%s) still has at least one LSMTokenDeposit (%+v)", validatorAddress, lsmTokenDeposit) + } + } + for i, val := range hostZone.Validators { if val.GetAddress() == validatorAddress { - if val.DelegationAmt.IsZero() && val.Weight == 0 { + if val.Delegation.IsZero() && val.Weight == 0 { hostZone.Validators = append(hostZone.Validators[:i], hostZone.Validators[i+1:]...) k.SetHostZone(ctx, hostZone) return nil } - errMsg := fmt.Sprintf("Validator (%s) has non-zero delegation (%v) or weight (%d)", validatorAddress, val.DelegationAmt, val.Weight) + errMsg := fmt.Sprintf("Validator (%s) has non-zero delegation (%v) or weight (%d)", validatorAddress, val.Delegation, val.Weight) k.Logger(ctx).Error(errMsg) return errors.New(errMsg) } @@ -260,10 +359,3 @@ func (k Keeper) IterateHostZones(ctx sdk.Context, fn func(ctx sdk.Context, index i++ } } - -func (k Keeper) GetRedemptionAccount(ctx sdk.Context, hostZone types.HostZone) (*types.ICAAccount, bool) { - if hostZone.RedemptionAccount == nil { - return nil, false - } - return hostZone.RedemptionAccount, true -} diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index f75298164e..a03493b63d 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -23,7 +23,7 @@ func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.Host items[i].LastRedemptionRate = sdk.NewDec(1) items[i].MinRedemptionRate = sdk.NewDecWithPrec(5, 1) items[i].MaxRedemptionRate = sdk.NewDecWithPrec(15, 1) - items[i].StakedBal = sdkmath.ZeroInt() + items[i].TotalDelegations = sdkmath.ZeroInt() keeper.SetHostZone(ctx, items[i]) } return items @@ -179,3 +179,192 @@ func (s *KeeperTestSuite) TestGetHostZoneFromTransferChannelID() { _, found := s.App.StakeibcKeeper.GetHostZoneFromTransferChannelID(s.Ctx, "fake_channel") s.Require().False(found, "fake channel should not be found") } + +// Helper function to check the validator's slash query progress and checkpoint after it was incremented +func (s *KeeperTestSuite) checkValidatorSlashQueryProgress(address string, expectedProgress, expectedCheckpoint sdkmath.Int) { + actualHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + s.Require().Len(actualHostZone.Validators, 3, "host zone should still have 3 validators") + + actualValidator := types.Validator{} + for _, validator := range actualHostZone.Validators { + if validator.Address == address { + actualValidator = *validator + } + } + s.Require().NotEmpty(actualValidator.Address, "validator address not found") + s.Require().Equal(expectedProgress.Int64(), actualValidator.SlashQueryProgressTracker.Int64(), "slash query progress") + s.Require().Equal(expectedCheckpoint.Int64(), actualValidator.SlashQueryCheckpoint.Int64(), "slash query checkpoint") +} + +func (s *KeeperTestSuite) TestIncrementValidatorSlashQueryProgress() { + // Slash query progress for validator B is as follows: + // Initial Checkpoint: 1000 (from previous TVL) + // Current TVL: 10k, Threshold: 11% => New Checkpoint of 1100 + // Old Progress: 7800 => Old Interval: 7800 / 1000 = Interval #7 + // New Stake #1: 180 => New Interval: 8001 / 1000 = Interval #8 + incrementedValidator := "valB" + threshold := uint64(11) + totalStakeAmount := sdkmath.NewInt(10_000) + + initialCheckpoint := sdkmath.NewInt(1000) + expectedCheckpoint := sdkmath.NewInt(1100) + + initialProgress := sdkmath.NewInt(7800) + firstStakeAmount := sdkmath.NewInt(180) + progressAfterFirstStake := sdkmath.NewInt(7980) + secondStakeAmount := sdkmath.NewInt(100) + progressAfterSecondStake := sdkmath.NewInt(8080) + + // Store a host zone with 3 validators and 1 in progress + initialHostZone := types.HostZone{ + ChainId: HostChainId, + Validators: []*types.Validator{ + {Address: "valA"}, + {Address: incrementedValidator, SlashQueryProgressTracker: initialProgress, SlashQueryCheckpoint: initialCheckpoint}, + {Address: "valC"}, + }, + TotalDelegations: totalStakeAmount, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, initialHostZone) + + // Set params with 10% threshold + params := types.DefaultParams() + params.ValidatorSlashQueryThreshold = threshold + s.App.StakeibcKeeper.SetParams(s.Ctx, params) + + // Increment the progress for valB by an amount that falls short of the checkpoint + err := s.App.StakeibcKeeper.IncrementValidatorSlashQueryProgress( + s.Ctx, + HostChainId, + incrementedValidator, + firstStakeAmount, + ) + s.Require().NoError(err, "no error expected when incrementing slash query progress") + + // Check progress was updated and checkpoint was not + s.checkValidatorSlashQueryProgress(incrementedValidator, progressAfterFirstStake, initialCheckpoint) + + // Increment the progress again - this time it should increment the checkpoint + err = s.App.StakeibcKeeper.IncrementValidatorSlashQueryProgress( + s.Ctx, + HostChainId, + incrementedValidator, + secondStakeAmount, + ) + s.Require().NoError(err, "no error expected when incrementing slash query progress") + + // Check progress and checkpoint were updated + s.checkValidatorSlashQueryProgress(incrementedValidator, progressAfterSecondStake, expectedCheckpoint) + + // Try to increment from a non-existed host chain - it should fail + err = s.App.StakeibcKeeper.IncrementValidatorSlashQueryProgress(s.Ctx, "fake_host", incrementedValidator, firstStakeAmount) + s.Require().ErrorContains(err, "host zone not found") + + // Try to increment from a non-existed validator - it should fail + err = s.App.StakeibcKeeper.IncrementValidatorSlashQueryProgress(s.Ctx, HostChainId, "fake_val", firstStakeAmount) + s.Require().ErrorContains(err, "validator not found") +} + +// Tests Increment/DecrementValidatorDelegationsChangesInProgress +func (s *KeeperTestSuite) TestUpdateValidatorDelegationChangesInProgress() { + hostZone := &types.HostZone{ + Validators: []*types.Validator{ + {Address: "other_val1", DelegationChangesInProgress: 1}, + {Address: ValAddress, DelegationChangesInProgress: 2}, + {Address: "other_val3", DelegationChangesInProgress: 3}, + }, + TotalDelegations: sdkmath.NewInt(6000), + } + updatedIndex := 1 + start := int(2) + + // Increment once - should end at 3 + err := s.App.StakeibcKeeper.IncrementValidatorDelegationChangesInProgress(hostZone, ValAddress) + s.Require().NoError(err, "no error expected when incremented ") + s.Require().Equal(start+1, int(hostZone.Validators[updatedIndex].DelegationChangesInProgress), + "delegation change after increment") + + // Increment 10 more times - should end at 13 + for i := 0; i < 10; i++ { + err := s.App.StakeibcKeeper.IncrementValidatorDelegationChangesInProgress(hostZone, ValAddress) + s.Require().NoError(err, "no error expected when incrementing loop %d", i) + } + s.Require().Equal(start+11, int(hostZone.Validators[updatedIndex].DelegationChangesInProgress), + "delegation change after increment loop") + + // Confirm the other validators did not change + s.Require().Equal(1, int(hostZone.Validators[0].DelegationChangesInProgress), + "delegation change val1 after increment") + s.Require().Equal(3, int(hostZone.Validators[2].DelegationChangesInProgress), + "delegation change val3 after increment") + + // Decrement - should end at 12 + err = s.App.StakeibcKeeper.DecrementValidatorDelegationChangesInProgress(hostZone, ValAddress) + s.Require().NoError(err, "no error expected when decrementing") + s.Require().Equal(start+10, int(hostZone.Validators[updatedIndex].DelegationChangesInProgress), + "delegation change after decrement") + + // Decrement 12 more times - it should end at 0 + for i := 0; i < 12; i++ { + err := s.App.StakeibcKeeper.DecrementValidatorDelegationChangesInProgress(hostZone, ValAddress) + s.Require().NoError(err, "no error expected when decrementing loop %d", i) + } + s.Require().Equal(0, int(hostZone.Validators[updatedIndex].DelegationChangesInProgress), + "delegation change after decrement loop") + + // Attempt to decrement again, it should fail + err = s.App.StakeibcKeeper.DecrementValidatorDelegationChangesInProgress(hostZone, ValAddress) + s.Require().ErrorContains(err, "cannot decrement the number of delegation updates") + + // Attempt to increment a non-existent validator - it should fail + err = s.App.StakeibcKeeper.IncrementValidatorDelegationChangesInProgress(hostZone, "fake_val") + s.Require().ErrorContains(err, "validator not found") + + // Attempt to decrement a non-existent validator - it should fail + err = s.App.StakeibcKeeper.DecrementValidatorDelegationChangesInProgress(hostZone, "fake_val") + s.Require().ErrorContains(err, "validator not found") +} + +func (s *KeeperTestSuite) TestAddDelegationToValidator() { + hostZone := &types.HostZone{ + Validators: []*types.Validator{ + {Address: "other_val1", Delegation: sdkmath.NewInt(1000)}, + {Address: ValAddress, Delegation: sdkmath.NewInt(2000)}, + {Address: "other_val2", Delegation: sdkmath.NewInt(3000)}, + }, + TotalDelegations: sdkmath.NewInt(6000), + } + updatedIndex := 1 + + // Add 500 to the validator + err := s.App.StakeibcKeeper.AddDelegationToValidator(s.Ctx, hostZone, ValAddress, sdkmath.NewInt(500), "") + s.Require().NoError(err, "no error expected when adding delegation to validator") + s.Require().Equal(int64(2500), hostZone.Validators[updatedIndex].Delegation.Int64(), "delegation after addition") + s.Require().Equal(int64(6500), hostZone.TotalDelegations.Int64(), "total delegations after addition") + + // Subtract 250 from the validator + err = s.App.StakeibcKeeper.AddDelegationToValidator(s.Ctx, hostZone, ValAddress, sdkmath.NewInt(-250), "") + s.Require().NoError(err, "no error expected when subtracting delegation from validator") + s.Require().Equal(int64(2250), hostZone.Validators[updatedIndex].Delegation.Int64(), "delegation after subtraction") + s.Require().Equal(int64(6250), hostZone.TotalDelegations.Int64(), "total delegations after subtraction") + + // Confirm other validators were not modified + s.Require().Equal(int64(1000), hostZone.Validators[0].Delegation.Int64(), "validator at index 0 should not have changed") + s.Require().Equal(int64(3000), hostZone.Validators[2].Delegation.Int64(), "validator at index 2 should not have changed") + + // Attempt to subtract more than the validator has - it should fail + err = s.App.StakeibcKeeper.AddDelegationToValidator(s.Ctx, hostZone, ValAddress, sdkmath.NewInt(-3000), "") + s.Require().ErrorContains(err, "Delegation change (3000) is greater than validator") + + // Attempt to modify a validator that doesn't exist - it should fail + err = s.App.StakeibcKeeper.AddDelegationToValidator(s.Ctx, hostZone, "does_not_exist", sdkmath.NewInt(1000), "") + s.Require().ErrorContains(err, "validator not found") + + // Attempt to subtract more than the total delegations on the host - it should fail + // Here, w set the validator's delegation to be much higher than the TotalDelegation + // (which should not be possible in practice) + hostZone.Validators[updatedIndex].Delegation = sdkmath.NewInt(10000) + err = s.App.StakeibcKeeper.AddDelegationToValidator(s.Ctx, hostZone, ValAddress, sdkmath.NewInt(-7000), "") + s.Require().ErrorContains(err, "Delegation change (7000) is greater than total delegation amount on host") +} diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index 773e5674aa..9b4212f640 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -11,6 +11,7 @@ const ( ICACallbackID_Reinvest = "reinvest" ICACallbackID_Redemption = "redemption" ICACallbackID_Rebalance = "rebalance" + ICACallbackID_Detokenize = "detokenize" ) func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { @@ -21,5 +22,6 @@ func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { {CallbackId: ICACallbackID_Reinvest, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.ReinvestCallback)}, {CallbackId: ICACallbackID_Redemption, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.RedemptionCallback)}, {CallbackId: ICACallbackID_Rebalance, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.RebalanceCallback)}, + {CallbackId: ICACallbackID_Detokenize, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.DetokenizeCallback)}, } } diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index 34a9a46fa7..1d878812b0 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -63,6 +63,14 @@ func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ac return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "deposit record not found %d", recordId) } + // Regardless of failure/success/timeout, indicate that this ICA has completed + for _, splitDelegation := range delegateCallback.SplitDelegations { + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + // Check for timeout (ack nil) // No need to reset the deposit record status since it will get reverted when the channel is restored if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { @@ -88,13 +96,12 @@ func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ac // Update delegations on the host zone for _, splitDelegation := range delegateCallback.SplitDelegations { - hostZone.StakedBal = hostZone.StakedBal.Add(splitDelegation.Amount) - success := k.AddDelegationToValidator(ctx, hostZone, splitDelegation.Validator, splitDelegation.Amount, ICACallbackID_Delegate) - if !success { - return errorsmod.Wrapf(types.ErrValidatorDelegationChg, "Failed to add delegation to validator") + err := k.AddDelegationToValidator(ctx, &hostZone, splitDelegation.Validator, splitDelegation.Amount, ICACallbackID_Delegate) + if err != nil { + return errorsmod.Wrapf(err, "Failed to add delegation to validator") } - k.SetHostZone(ctx, hostZone) } + k.SetHostZone(ctx, hostZone) k.RecordsKeeper.RemoveDepositRecord(ctx, cast.ToUint64(recordId)) k.Logger(ctx).Info(fmt.Sprintf("[DELEGATION] success on %s", chainId)) diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index 65af67b5fa..78fbd03337 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -13,14 +13,14 @@ import ( ) type DelegateCallbackState struct { - stakedBal sdkmath.Int - val1Bal sdkmath.Int - val2Bal sdkmath.Int - val1RelAmt sdkmath.Int - val2RelAmt sdkmath.Int - balanceToStake sdkmath.Int - depositRecord recordtypes.DepositRecord - callbackArgs types.DelegateCallback + totalDelegation sdkmath.Int + val1Bal sdkmath.Int + val2Bal sdkmath.Int + val1RelAmt sdkmath.Int + val2RelAmt sdkmath.Int + balanceToStake sdkmath.Int + depositRecord recordtypes.DepositRecord + callbackArgs types.DelegateCallback } type DelegateCallbackArgs struct { @@ -35,30 +35,32 @@ type DelegateCallbackTestCase struct { } func (s *KeeperTestSuite) SetupDelegateCallback() DelegateCallbackTestCase { - stakedBal := sdkmath.NewInt(1_000_000) + totalDelegation := sdkmath.NewInt(1_000_000) val1Bal := sdkmath.NewInt(400_000) - val2Bal := stakedBal.Sub(val1Bal) + val2Bal := totalDelegation.Sub(val1Bal) balanceToStake := sdkmath.NewInt(300_000) val1RelAmt := sdkmath.NewInt(120_000) val2RelAmt := sdkmath.NewInt(180_000) val1 := types.Validator{ - Name: "val1", - Address: "val1_address", - DelegationAmt: val1Bal, + Name: "val1", + Address: "val1_address", + Delegation: val1Bal, + DelegationChangesInProgress: 1, } val2 := types.Validator{ - Name: "val2", - Address: "val2_address", - DelegationAmt: val2Bal, + Name: "val2", + Address: "val2_address", + Delegation: val2Bal, + DelegationChangesInProgress: 1, } hostZone := types.HostZone{ - ChainId: HostChainId, - HostDenom: Atom, - IbcDenom: IbcAtom, - RedemptionRate: sdk.NewDec(1.0), - Validators: []*types.Validator{&val1, &val2}, - StakedBal: stakedBal, + ChainId: HostChainId, + HostDenom: Atom, + IbcDenom: IbcAtom, + RedemptionRate: sdk.NewDec(1.0), + Validators: []*types.Validator{&val1, &val2}, + TotalDelegations: totalDelegation, } depositRecord := recordtypes.DepositRecord{ Id: 1, @@ -93,14 +95,14 @@ func (s *KeeperTestSuite) SetupDelegateCallback() DelegateCallbackTestCase { return DelegateCallbackTestCase{ initialState: DelegateCallbackState{ - stakedBal: stakedBal, - balanceToStake: balanceToStake, - depositRecord: depositRecord, - callbackArgs: callbackArgs, - val1Bal: val1Bal, - val2Bal: val2Bal, - val1RelAmt: val1RelAmt, - val2RelAmt: val2RelAmt, + totalDelegation: totalDelegation, + balanceToStake: balanceToStake, + depositRecord: depositRecord, + callbackArgs: callbackArgs, + val1Bal: val1Bal, + val2Bal: val2Bal, + val1RelAmt: val1RelAmt, + val2RelAmt: val2RelAmt, }, validArgs: DelegateCallbackArgs{ packet: packet, @@ -118,16 +120,20 @@ func (s *KeeperTestSuite) TestDelegateCallback_Successful() { err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, validArgs.packet, validArgs.ackResponse, validArgs.args) s.Require().NoError(err) - // Confirm stakedBal has increased + // Confirm total delegation has increased hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found) - s.Require().Equal(initialState.stakedBal.Add(initialState.balanceToStake), hostZone.StakedBal, "stakedBal should have increased") + s.Require().Equal(initialState.totalDelegation.Add(initialState.balanceToStake), hostZone.TotalDelegations, "total delegation should have increased") - // Confirm delegations have been added to validators + // Confirm delegations have been added to validators and number delegation changes in progress was reduced val1 := hostZone.Validators[0] val2 := hostZone.Validators[1] - s.Require().Equal(initialState.val1Bal.Add(initialState.val1RelAmt), val1.DelegationAmt, "val1 balance should have increased") - s.Require().Equal(initialState.val2Bal.Add(initialState.val2RelAmt), val2.DelegationAmt, "val2 balance should have increased") + s.Require().Equal(val1.Delegation, initialState.val1Bal.Add(initialState.val1RelAmt), "val1 balance should have increased") + s.Require().Equal(val2.Delegation, initialState.val2Bal.Add(initialState.val2RelAmt), "val2 balance should have increased") + + // Confirm the number of delegations in progress has decreased + s.Require().Equal(0, int(val1.DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") // Confirm deposit record has been removed records := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) @@ -135,10 +141,14 @@ func (s *KeeperTestSuite) TestDelegateCallback_Successful() { } func (s *KeeperTestSuite) checkDelegateStateIfCallbackFailed(tc DelegateCallbackTestCase) { - // Confirm stakedBal has not increased + // Confirm total delegation has not increased hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found) - s.Require().Equal(tc.initialState.stakedBal, hostZone.StakedBal, "stakedBal should not have increased") + s.Require().Equal(tc.initialState.totalDelegation, hostZone.TotalDelegations, "total delegation should not have increased") + + // Confirm the number of delegations in progress has decreased + s.Require().Equal(0, int(hostZone.Validators[0].DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(0, int(hostZone.Validators[1].DelegationChangesInProgress), "val2 delegation changes in progress") // Confirm deposit record has NOT been removed records := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) @@ -179,7 +189,6 @@ func (s *KeeperTestSuite) TestDelegateCallback_WrongCallbackArgs() { err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) s.Require().EqualError(err, "Unable to unmarshal delegate callback args: unexpected EOF: unable to unmarshal data structure") - s.checkDelegateStateIfCallbackFailed(tc) } func (s *KeeperTestSuite) TestDelegateCallback_HostNotFound() { @@ -190,12 +199,6 @@ func (s *KeeperTestSuite) TestDelegateCallback_HostNotFound() { err := s.App.StakeibcKeeper.DelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, tc.validArgs.args) s.Require().EqualError(err, "host zone not found GAIA: invalid request") - - // Confirm deposit record has NOT been removed - records := s.App.RecordsKeeper.GetAllDepositRecord(s.Ctx) - s.Require().Len(records, 1, "number of deposit records") - record := records[0] - s.Require().Equal(recordtypes.DepositRecord_DELEGATION_QUEUE, record.Status, "deposit record status should not have changed") } func (s *KeeperTestSuite) TestDelegateCallback_MissingValidator() { @@ -215,6 +218,5 @@ func (s *KeeperTestSuite) TestDelegateCallback_MissingValidator() { s.Require().NoError(err) err = s.App.StakeibcKeeper.DelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) - s.Require().EqualError(err, "Failed to add delegation to validator: can't change delegation on validator") - s.checkDelegateStateIfCallbackFailed(tc) + s.Require().ErrorContains(err, "validator not found") } diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go new file mode 100644 index 0000000000..397682d05e --- /dev/null +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -0,0 +1,72 @@ +package keeper + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + "github.com/golang/protobuf/proto" //nolint:staticcheck + + "github.com/Stride-Labs/stride/v13/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +// ICACallback after an LSM token is detokenized into native stake +// +// If successful: Remove the token deposit from the store and incremenet the validator delegation +// If failure: flag the deposit as DETOKENIZATION_FAILED +// If timeout: do nothing +// - A timeout will force the channel closed, and once the channel is restored, +// the ICA will get resubmitted +func (k Keeper) DetokenizeCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { + // Fetch callback args + detokenizeCallback := types.DetokenizeSharesCallback{} + if err := proto.Unmarshal(args, &detokenizeCallback); err != nil { + return errorsmod.Wrapf(types.ErrUnmarshalFailure, "unable to unmarshal detokenize callback: %s", err.Error()) + } + chainId := detokenizeCallback.Deposit.ChainId + deposit := detokenizeCallback.Deposit + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Detokenize, "Starting detokenize callback")) + + // Regardless of failure/success/timeout, indicate that this ICA has completed + hostZone, found := k.GetHostZone(ctx, chainId) + if !found { + return errorsmod.Wrapf(types.ErrHostZoneNotFound, "Host zone not found: %s", chainId) + } + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, deposit.ValidatorAddress); err != nil { + return err + } + k.SetHostZone(ctx, hostZone) + + // No action is necessary on a timeout + if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Detokenize, + icacallbackstypes.AckResponseStatus_TIMEOUT, packet)) + return nil + } + + // If the ICA failed, update the deposit status + if ackResponse.Status == icacallbackstypes.AckResponseStatus_FAILURE { + k.Logger(ctx).Error(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Detokenize, + icacallbackstypes.AckResponseStatus_FAILURE, packet)) + + k.RecordsKeeper.UpdateLSMTokenDepositStatus(ctx, *deposit, recordstypes.LSMTokenDeposit_DETOKENIZATION_FAILED) + return nil + } + + k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Detokenize, + icacallbackstypes.AckResponseStatus_SUCCESS, packet)) + + // If the ICA succeeded, remove the token deposit + k.RecordsKeeper.RemoveLSMTokenDeposit(ctx, deposit.ChainId, deposit.Denom) + + // Update delegation on the host zone and validator + err := k.AddDelegationToValidator(ctx, &hostZone, deposit.ValidatorAddress, deposit.Amount, ICACallbackID_Detokenize) + if err != nil { + return err + } + k.SetHostZone(ctx, hostZone) + + return nil +} diff --git a/x/stakeibc/keeper/icacallbacks_detokenize_test.go b/x/stakeibc/keeper/icacallbacks_detokenize_test.go new file mode 100644 index 0000000000..586db9d3dd --- /dev/null +++ b/x/stakeibc/keeper/icacallbacks_detokenize_test.go @@ -0,0 +1,159 @@ +package keeper_test + +import ( + sdkmath "cosmossdk.io/math" + "github.com/cosmos/gogoproto/proto" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +type DetokenizeCallbackTestCase struct { + callbackBz []byte + expectedValidatorDelegation int64 + expectedTotalDelegation int64 +} + +// Helper function to setup the detokenize ICA callback test +// Returns the serialized callback args which will be an input parameter +// to the callback +func (s *KeeperTestSuite) SetupTestDetokenizeCallback() DetokenizeCallbackTestCase { + stakeAmount := sdkmath.NewInt(1000) + initialValidatorDelegation := sdkmath.NewInt(5000) + initialTotalDelegation := sdkmath.NewInt(10000) + + expectedValidatorDelegation := int64(6000) + expectedTotalDelegation := int64(11000) + + // Store host zone with validator + hostZone := types.HostZone{ + ChainId: HostChainId, + TotalDelegations: initialTotalDelegation, + Validators: []*types.Validator{{ + Address: ValAddress, + Delegation: initialValidatorDelegation, + DelegationChangesInProgress: 1, + }}, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Store the LSMDeposit record with status DETOKENIZATION_IN_PROGRESS + deposit := recordstypes.LSMTokenDeposit{ + ChainId: HostChainId, + Denom: LSMTokenBaseDenom, + Status: recordstypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS, + ValidatorAddress: ValAddress, + Amount: stakeAmount, + } + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, deposit) + + // Return the deposit as callback args + callbackBz, err := proto.Marshal(&types.DetokenizeSharesCallback{ + Deposit: &deposit, + }) + s.Require().NoError(err, "no error expected when marshalling callback args") + + return DetokenizeCallbackTestCase{ + callbackBz: callbackBz, + expectedValidatorDelegation: expectedValidatorDelegation, + expectedTotalDelegation: expectedTotalDelegation, + } +} + +func (s *KeeperTestSuite) TestDetokenizeCallback_Successful() { + tc := s.SetupTestDetokenizeCallback() + + // Call the callback with a successful response + ackSuccess := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_SUCCESS, + } + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, tc.callbackBz) + s.Require().NoError(err, "no error expected during callback") + + // Check that the deposit was removed + _, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenBaseDenom) + s.Require().False(found, "deposit should have been removed") + + // Check that the delegation was updated + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + s.Require().Equal(tc.expectedTotalDelegation, hostZone.TotalDelegations.Int64(), "host zone total delegation") + s.Require().Equal(tc.expectedValidatorDelegation, hostZone.Validators[0].Delegation.Int64(), "validator delegation") + + // Check that the number of delegations in progress was decremented + s.Require().Equal(0, int(hostZone.Validators[0].DelegationChangesInProgress), "delegation change in progress") +} + +func (s *KeeperTestSuite) TestDetokenizeCallback_InvalidCallbackArgs() { + s.SetupTestDetokenizeCallback() + + // Call the callback with a successful ack, but invalid callback args + invalidCallbackArgs := []byte{1, 2, 3} + ackSuccess := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_SUCCESS, + } + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, invalidCallbackArgs) + s.Require().ErrorContains(err, "unable to unmarshal detokenize callback") +} + +func (s *KeeperTestSuite) TestDetokenizeCallback_HostNotFound() { + s.SetupTestDetokenizeCallback() + + // Call the callback with a host zone that does not exist - it should fail + invalidCallbackArgs, err := proto.Marshal(&types.DetokenizeSharesCallback{ + Deposit: &recordstypes.LSMTokenDeposit{ + ChainId: "fake_chain", + }, + }) + s.Require().NoError(err, "no error expected when marshalling callback data") + + ackSuccess := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_SUCCESS, + } + err = s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, invalidCallbackArgs) + s.Require().ErrorContains(err, "Host zone not found") +} + +func (s *KeeperTestSuite) TestDetokenizeCallback_AckTimeout() { + tc := s.SetupTestDetokenizeCallback() + + // Call the callback with a timed-out response + ackTimeout := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_TIMEOUT, + } + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackTimeout, tc.callbackBz) + s.Require().NoError(err, "no error expected during callback") + + // The deposit should still be there in status IN_PROGRESS + deposit, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenBaseDenom) + s.Require().True(found, "deposit should not have been removed") + s.Require().Equal(recordstypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS.String(), deposit.Status.String(), "deposit status") + + // Check that the number of delegations in progress was decremented + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + s.Require().Equal(0, int(hostZone.Validators[0].DelegationChangesInProgress), "delegation change in progress") +} + +func (s *KeeperTestSuite) TestDetokenizeCallback_AckFailure() { + tc := s.SetupTestDetokenizeCallback() + + // Call the callback with an ack-failure response + ackFailure := &icacallbackstypes.AcknowledgementResponse{ + Status: icacallbackstypes.AckResponseStatus_FAILURE, + } + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackFailure, tc.callbackBz) + s.Require().NoError(err, "no error expected during callback") + + // The deposit status should be FAILED + deposit, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenBaseDenom) + s.Require().True(found, "deposit should not have been removed") + s.Require().Equal(recordstypes.LSMTokenDeposit_DETOKENIZATION_FAILED.String(), deposit.Status.String(), "deposit status") + + // Check that the number of delegations in progress was decremented + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + s.Require().Equal(0, int(hostZone.Validators[0].DelegationChangesInProgress), "delegation change in progress") +} diff --git a/x/stakeibc/keeper/icacallbacks_rebalance.go b/x/stakeibc/keeper/icacallbacks_rebalance.go index 1a8975fd92..e6f2e72423 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance.go @@ -46,6 +46,21 @@ func (k Keeper) RebalanceCallback(ctx sdk.Context, packet channeltypes.Packet, a chainId := rebalanceCallback.HostZoneId k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Rebalance, "Starting rebalance callback")) + // Regardless of failure/success/timeout, indicate that this ICA has completed + hostZone, found := k.GetHostZone(ctx, rebalanceCallback.HostZoneId) + if !found { + return errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, "Host zone not found: %s", rebalanceCallback.HostZoneId) + } + for _, rebalancing := range rebalanceCallback.Rebalancings { + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, rebalancing.SrcValidator); err != nil { + return err + } + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, rebalancing.DstValidator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + // Check for timeout (ack nil) // No action is necessary on a timeout if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { @@ -65,12 +80,6 @@ func (k Keeper) RebalanceCallback(ctx sdk.Context, packet channeltypes.Packet, a k.Logger(ctx).Info(utils.LogICACallbackStatusWithHostZone(chainId, ICACallbackID_Rebalance, icacallbackstypes.AckResponseStatus_SUCCESS, packet)) - // Confirm the host zone exists - hostZone, found := k.GetHostZone(ctx, chainId) - if !found { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "host zone not found %s", chainId) - } - // Assemble a map from validatorAddress -> validator valAddrMap := make(map[string]*types.Validator) for _, val := range hostZone.Validators { @@ -82,20 +91,24 @@ func (k Keeper) RebalanceCallback(ctx sdk.Context, packet channeltypes.Packet, a srcValidator := rebalancing.SrcValidator dstValidator := rebalancing.DstValidator - // Decrement the total delegation from the source validator - if _, valFound := valAddrMap[srcValidator]; valFound { - valAddrMap[srcValidator].DelegationAmt = valAddrMap[srcValidator].DelegationAmt.Sub(rebalancing.Amt) - } else { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "validator not found %s", srcValidator) + if _, valFound := valAddrMap[srcValidator]; !valFound { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "source validator not found %s", srcValidator) } - - // Increment the total delegation for the destination validator - if _, valFound := valAddrMap[dstValidator]; valFound { - valAddrMap[dstValidator].DelegationAmt = valAddrMap[dstValidator].DelegationAmt.Add(rebalancing.Amt) - } else { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "validator not found %s", dstValidator) + if _, valFound := valAddrMap[dstValidator]; !valFound { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "destination validator not found %s", dstValidator) } + + // Decrement the delegation from the source validator and increment the delegation + // for the destination validator + valAddrMap[srcValidator].Delegation = valAddrMap[srcValidator].Delegation.Sub(rebalancing.Amt) + valAddrMap[dstValidator].Delegation = valAddrMap[dstValidator].Delegation.Add(rebalancing.Amt) + + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Rebalance, + " Decrementing delegation on %s by %v", srcValidator, rebalancing.Amt)) + k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Rebalance, + " Incrementing delegation on %s by %v", dstValidator, rebalancing.Amt)) } + k.SetHostZone(ctx, hostZone) return nil diff --git a/x/stakeibc/keeper/icacallbacks_rebalance_test.go b/x/stakeibc/keeper/icacallbacks_rebalance_test.go index 1f1cb052d9..d93a4502f1 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance_test.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance_test.go @@ -3,8 +3,10 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -26,7 +28,72 @@ type RebalanceCallbackTestCase struct { } func (s *KeeperTestSuite) SetupRebalanceCallback() RebalanceCallbackTestCase { - rebalanceValidatorsTestCase := s.SetupRebalanceValidators() + // Setup IBC + delegationIcaOwner := "GAIA.DELEGATION" + s.CreateICAChannel(delegationIcaOwner) + delegationAddr := s.IcaAddresses[delegationIcaOwner] + + // setup epochs + epochNumber := uint64(1) + epochTracker := types.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + EpochNumber: epochNumber, + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + + // define validators for host zone + initialValidators := []*types.Validator{ + { + // Delegation changes in progress is 2 because it will receive 2 redelegations + Name: "val1", + Address: "stride_VAL1", + Weight: 100, + Delegation: sdkmath.NewInt(100), + DelegationChangesInProgress: 2, + }, + { + Name: "val2", + Address: "stride_VAL2", + Weight: 500, + Delegation: sdkmath.NewInt(500), + DelegationChangesInProgress: 0, + }, + { + // Delegation changes in progress is 2 because it will give 1 redelegation + Name: "val3", + Address: "stride_VAL3", + Weight: 200, + Delegation: sdkmath.NewInt(200), + DelegationChangesInProgress: 1, + }, + { + // Delegation changes in progress is 2 because it will give 1 redelegation + Name: "val4", + Address: "stride_VAL4", + Weight: 400, + Delegation: sdkmath.NewInt(400), + DelegationChangesInProgress: 1, + }, + { + Name: "val5", + Address: "stride_VAL5", + Weight: 400, + Delegation: sdkmath.NewInt(400), + DelegationChangesInProgress: 0, + }, + } + + // setup host zone + hostZone := types.HostZone{ + ChainId: "GAIA", + Validators: initialValidators, + TotalDelegations: sdkmath.NewInt(1000), + ConnectionId: ibctesting.FirstConnectionID, + DelegationIcaAddress: delegationAddr, + HostDenom: "uatom", + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) packet := channeltypes.Packet{} ackResponse := icacallbacktypes.AcknowledgementResponse{Status: icacallbacktypes.AckResponseStatus_SUCCESS} @@ -50,8 +117,8 @@ func (s *KeeperTestSuite) SetupRebalanceCallback() RebalanceCallbackTestCase { return RebalanceCallbackTestCase{ initialState: RebalanceCallbackState{ - hostZone: rebalanceValidatorsTestCase.hostZone, - initialValidators: rebalanceValidatorsTestCase.initialValidators, + hostZone: hostZone, + initialValidators: initialValidators, }, validArgs: RebalanceCallbackArgs{ packet: packet, @@ -70,28 +137,40 @@ func (s *KeeperTestSuite) TestRebalanceCallback_Successful() { hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") s.Require().True(found, "host zone found") - validators := hz.GetValidators() + validators := hz.Validators s.Require().Len(validators, 5, "host zone has 5 validators") - s.Require().Equal(sdkmath.NewInt(217), validators[0].DelegationAmt, "validator 1 stake") - s.Require().Equal(sdkmath.NewInt(500), validators[1].DelegationAmt, "validator 2 stake") - s.Require().Equal(sdkmath.NewInt(96), validators[2].DelegationAmt, "validator 3 stake") - s.Require().Equal(sdkmath.NewInt(387), validators[3].DelegationAmt, "validator 4 stake") - s.Require().Equal(sdkmath.NewInt(400), validators[4].DelegationAmt, "validator 5 stake") + // TODO: Improve these tests + // These expected values are hard coded - and you have to reference a separate file to see where they come from + s.Require().Equal(int64(217), validators[0].Delegation.Int64(), "validator 1 stake") + s.Require().Equal(int64(500), validators[1].Delegation.Int64(), "validator 2 stake") + s.Require().Equal(int64(96), validators[2].Delegation.Int64(), "validator 3 stake") + s.Require().Equal(int64(387), validators[3].Delegation.Int64(), "validator 4 stake") + s.Require().Equal(int64(400), validators[4].Delegation.Int64(), "validator 5 stake") + + // The delegation changes in progress should have reset to 0 + for i, validator := range validators { + s.Require().Equal(0, int(validator.DelegationChangesInProgress), "validator %d delegation changes in progress", i+1) + } } func (s *KeeperTestSuite) checkDelegationStateIfCallbackFailed() { hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") s.Require().True(found, "host zone found") - validators := hz.GetValidators() + validators := hz.Validators s.Require().Len(validators, 5, "host zone has 5 validators") - s.Require().Equal(sdkmath.NewInt(100), validators[0].DelegationAmt, "validator 1 stake") - s.Require().Equal(sdkmath.NewInt(500), validators[1].DelegationAmt, "validator 2 stake") - s.Require().Equal(sdkmath.NewInt(200), validators[2].DelegationAmt, "validator 3 stake") - s.Require().Equal(sdkmath.NewInt(400), validators[3].DelegationAmt, "validator 4 stake") - s.Require().Equal(sdkmath.NewInt(400), validators[4].DelegationAmt, "validator 5 stake") + s.Require().Equal(int64(100), validators[0].Delegation.Int64(), "validator 1 stake") + s.Require().Equal(int64(500), validators[1].Delegation.Int64(), "validator 2 stake") + s.Require().Equal(int64(200), validators[2].Delegation.Int64(), "validator 3 stake") + s.Require().Equal(int64(400), validators[3].Delegation.Int64(), "validator 4 stake") + s.Require().Equal(int64(400), validators[4].Delegation.Int64(), "validator 5 stake") + + // The delegation changes in progress should have reset to 0 + for i, validator := range validators { + s.Require().Equal(0, int(validator.DelegationChangesInProgress), "validator %d delegation changes in progress", i+1) + } } func (s *KeeperTestSuite) TestRebalanceCallback_Timeout() { @@ -127,7 +206,6 @@ func (s *KeeperTestSuite) TestRebalanceCallback_WrongCallbackArgs() { err := s.App.StakeibcKeeper.RebalanceCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidCallbackArgs) s.Require().EqualError(err, "Unable to unmarshal rebalance callback args: unexpected EOF: unable to unmarshal data structure") - s.checkDelegationStateIfCallbackFailed() } func (s *KeeperTestSuite) TestRebalanceCallback_WrongValidator() { @@ -170,10 +248,8 @@ func (s *KeeperTestSuite) TestRebalanceCallback_WrongValidator() { s.Require().NoError(err) err = s.App.StakeibcKeeper.RebalanceCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidArgsOne) - s.Require().EqualError(err, "validator not found stride_VAL4_WRONG: invalid request") - s.checkDelegationStateIfCallbackFailed() + s.Require().ErrorContains(err, "validator not found") err = s.App.StakeibcKeeper.RebalanceCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidArgsTwo) - s.Require().EqualError(err, "validator not found stride_VAL1_WRONG: invalid request") - s.checkDelegationStateIfCallbackFailed() + s.Require().ErrorContains(err, "validator not found") } diff --git a/x/stakeibc/keeper/icacallbacks_reinvest.go b/x/stakeibc/keeper/icacallbacks_reinvest.go index 8af9eed793..3a1c3d76d4 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest.go @@ -2,6 +2,7 @@ package keeper import ( "fmt" + "time" "github.com/cosmos/cosmos-sdk/types/bech32" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -42,8 +43,12 @@ func (k Keeper) UnmarshalReinvestCallbackArgs(ctx sdk.Context, reinvestCallback } // ICA Callback after reinvestment -// * If successful: Creates a new DepositRecord with the reinvestment amount and issues an ICQ to query the rewards balance -// * If timeout/failure: Does nothing +// +// If successful: +// * Creates a new DepositRecord with the reinvestment amount +// * Issues an ICQ to query the rewards balance +// If timeout/failure: +// * Does nothing func (k Keeper) ReinvestCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { // Fetch callback args reinvestCallback, err := k.UnmarshalReinvestCallbackArgs(ctx, args) @@ -98,32 +103,35 @@ func (k Keeper) ReinvestCallback(ctx sdk.Context, packet channeltypes.Packet, ac // Encode the fee account address for the query request // The query request consists of the fee account address and denom - feeAccount := hostZone.FeeAccount - if feeAccount == nil || feeAccount.Address == "" { + if hostZone.FeeIcaAddress == "" { return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no fee account found for %s", chainId) } - _, feeAddressBz, err := bech32.DecodeAndConvert(feeAccount.Address) + _, feeAddressBz, err := bech32.DecodeAndConvert(hostZone.FeeIcaAddress) if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid fee account address, could not decode (%s)", err.Error()) } queryData := append(banktypes.CreateAccountBalancesPrefix(feeAddressBz), []byte(hostZone.HostDenom)...) - // The query should timeout before the next epoch - timeout, err := k.GetICATimeoutNanos(ctx, epochtypes.STRIDE_EPOCH) - if err != nil { - return errorsmod.Wrapf(err, "Failed to get ICATimeout from %s epoch", epochtypes.STRIDE_EPOCH) - } - // Submit an ICQ for the rewards balance in the fee account k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Reinvest, "Submitting ICQ for fee account balance")) - return k.InterchainQueryKeeper.MakeRequest( - ctx, - types.ModuleName, - ICQCallbackID_FeeBalance, - chainId, - hostZone.ConnectionId, - icqtypes.BANK_STORE_QUERY_WITH_PROOF, - queryData, - timeout, - ) + + timeout := time.Unix(0, int64(strideEpochTracker.NextEpochStartTime)) + timeoutDuration := timeout.Sub(ctx.BlockTime()) + + query := icqtypes.Query{ + ChainId: chainId, + ConnectionId: hostZone.ConnectionId, + QueryType: icqtypes.BANK_STORE_QUERY_WITH_PROOF, + RequestData: queryData, + CallbackModule: types.ModuleName, + CallbackId: ICQCallbackID_FeeBalance, + TimeoutDuration: timeoutDuration, + TimeoutPolicy: icqtypes.TimeoutPolicy_REJECT_QUERY_RESPONSE, + } + if err := k.InterchainQueryKeeper.SubmitICQRequest(ctx, query, false); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Error submitting ICQ for fee balance, error %s", err.Error())) + return err + } + + return nil } diff --git a/x/stakeibc/keeper/icacallbacks_reinvest_test.go b/x/stakeibc/keeper/icacallbacks_reinvest_test.go index 127b3b6fbc..5040db4689 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest_test.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest_test.go @@ -1,6 +1,8 @@ package keeper_test import ( + "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" @@ -20,11 +22,11 @@ import ( ) type ReinvestCallbackState struct { - hostZone stakeibctypes.HostZone - reinvestAmt sdkmath.Int - callbackArgs types.ReinvestCallback - depositRecord recordtypes.DepositRecord - icaTimeoutTime int64 + hostZone stakeibctypes.HostZone + reinvestAmt sdkmath.Int + callbackArgs types.ReinvestCallback + depositRecord recordtypes.DepositRecord + durationUntilNextEpoch time.Duration } type ReinvestCallbackArgs struct { @@ -42,20 +44,16 @@ func (s *KeeperTestSuite) SetupReinvestCallback() ReinvestCallbackTestCase { reinvestAmt := sdkmath.NewInt(1_000) feeAddress := apptesting.CreateRandomAccounts(1)[0].String() // must be valid bech32 address - epochEndTime := uint64(100) - buffer := uint64(10) - icaTimeoutTime := int64(90) - hostZone := stakeibctypes.HostZone{ ChainId: HostChainId, HostDenom: Atom, IbcDenom: IbcAtom, RedemptionRate: sdk.NewDec(1.0), ConnectionId: ibctesting.FirstConnectionID, - FeeAccount: &stakeibctypes.ICAAccount{ - Address: feeAddress, - }, + FeeIcaAddress: feeAddress, } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + expectedNewDepositRecord := recordtypes.DepositRecord{ Id: 0, DepositEpochNumber: 1, @@ -64,19 +62,18 @@ func (s *KeeperTestSuite) SetupReinvestCallback() ReinvestCallbackTestCase { Status: recordtypes.DepositRecord_DELEGATION_QUEUE, Source: recordtypes.DepositRecord_WITHDRAWAL_ICA, } + + durationUntilNextEpoch := time.Minute + blockTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + s.Ctx = s.Ctx.WithBlockTime(blockTime) + epochTracker := stakeibctypes.EpochTracker{ EpochIdentifier: epochtypes.STRIDE_EPOCH, EpochNumber: 1, - NextEpochStartTime: epochEndTime, - Duration: epochEndTime, + NextEpochStartTime: uint64(blockTime.Add(durationUntilNextEpoch).UnixNano()), } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) - params := s.App.StakeibcKeeper.GetParams(s.Ctx) - params.BufferSize = buffer - s.App.StakeibcKeeper.SetParams(s.Ctx, params) - packet := channeltypes.Packet{} ackResponse := icacallbacktypes.AcknowledgementResponse{Status: icacallbacktypes.AckResponseStatus_SUCCESS} callbackArgs := types.ReinvestCallback{ @@ -86,13 +83,16 @@ func (s *KeeperTestSuite) SetupReinvestCallback() ReinvestCallbackTestCase { args, err := s.App.StakeibcKeeper.MarshalReinvestCallbackArgs(s.Ctx, callbackArgs) s.Require().NoError(err) + // Mock the latest client height for the ICQ submission + s.MockClientLatestHeight(1) + return ReinvestCallbackTestCase{ initialState: ReinvestCallbackState{ - hostZone: hostZone, - reinvestAmt: reinvestAmt, - callbackArgs: callbackArgs, - depositRecord: expectedNewDepositRecord, - icaTimeoutTime: icaTimeoutTime, + hostZone: hostZone, + reinvestAmt: reinvestAmt, + callbackArgs: callbackArgs, + depositRecord: expectedNewDepositRecord, + durationUntilNextEpoch: durationUntilNextEpoch, }, validArgs: ReinvestCallbackArgs{ packet: packet, @@ -133,7 +133,7 @@ func (s *KeeperTestSuite) TestReinvestCallback_Successful() { s.Require().Equal(HostChainId, query.ChainId, "query chain ID") s.Require().Equal(ibctesting.FirstConnectionID, query.ConnectionId, "query connection ID") s.Require().Equal(icqtypes.BANK_STORE_QUERY_WITH_PROOF, query.QueryType, "query type") - s.Require().Equal(tc.initialState.icaTimeoutTime, int64(query.Ttl), "query timeout") + s.Require().Equal(tc.initialState.durationUntilNextEpoch, query.TimeoutDuration, "query timeout duration") } func (s *KeeperTestSuite) checkReinvestStateIfCallbackFailed(tc ReinvestCallbackTestCase) { @@ -192,7 +192,7 @@ func (s *KeeperTestSuite) TestReinvestCallback_NoFeeAccount() { // Remove the fee account badHostZone := tc.initialState.hostZone - badHostZone.FeeAccount = nil + badHostZone.FeeIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) err := s.App.StakeibcKeeper.ReinvestCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, tc.validArgs.args) @@ -204,7 +204,7 @@ func (s *KeeperTestSuite) TestReinvestCallback_InvalidFeeAccountAddress() { // Remove the fee account badHostZone := tc.initialState.hostZone - badHostZone.FeeAccount.Address = "invalid_fee_account" + badHostZone.FeeIcaAddress = "invalid_fee_account" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) err := s.App.StakeibcKeeper.ReinvestCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, tc.validArgs.args) @@ -232,5 +232,5 @@ func (s *KeeperTestSuite) TestReinvestCallback_FailedToSubmitQuery() { s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) err := s.App.StakeibcKeeper.ReinvestCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) - s.Require().EqualError(err, "[ICQ Validation Check] Failed! connection id cannot be empty: invalid request") + s.Require().EqualError(err, "connection-id cannot be empty: invalid interchain query request") } diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index ca20649086..37ebb79415 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -20,26 +20,6 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ) -// Marshal undelegate callback args -func (k Keeper) MarshalUndelegateCallbackArgs(ctx sdk.Context, undelegateCallback types.UndelegateCallback) ([]byte, error) { - out, err := proto.Marshal(&undelegateCallback) - if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("MarshalUndelegateCallbackArgs | %s", err.Error())) - return nil, err - } - return out, nil -} - -// Unmarshalls undelegate callback arguments into a UndelegateCallback struct -func (k Keeper) UnmarshalUndelegateCallbackArgs(ctx sdk.Context, undelegateCallback []byte) (types.UndelegateCallback, error) { - unmarshalledUndelegateCallback := types.UndelegateCallback{} - if err := proto.Unmarshal(undelegateCallback, &unmarshalledUndelegateCallback); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("UnmarshalUndelegateCallbackArgs | %s", err.Error())) - return unmarshalledUndelegateCallback, err - } - return unmarshalledUndelegateCallback, nil -} - // ICA Callback after undelegating // // If successful: @@ -52,14 +32,26 @@ func (k Keeper) UnmarshalUndelegateCallbackArgs(ctx sdk.Context, undelegateCallb // * Reverts epoch unbonding record status func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { // Fetch callback args - undelegateCallback, err := k.UnmarshalUndelegateCallbackArgs(ctx, args) - if err != nil { + var undelegateCallback types.UndelegateCallback + if err := proto.Unmarshal(args, &undelegateCallback); err != nil { return errorsmod.Wrapf(types.ErrUnmarshalFailure, fmt.Sprintf("Unable to unmarshal undelegate callback args: %s", err.Error())) } chainId := undelegateCallback.HostZoneId k.Logger(ctx).Info(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Undelegate, "Starting undelegate callback for Epoch Unbonding Records: %+v", undelegateCallback.EpochUnbondingRecordIds)) + // Regardless of failure/success/timeout, indicate that this ICA has completed + hostZone, found := k.GetHostZone(ctx, undelegateCallback.HostZoneId) + if !found { + return errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, "Host zone not found: %s", undelegateCallback.HostZoneId) + } + for _, splitDelegation := range undelegateCallback.SplitDelegations { + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + // Check for timeout (ack nil) // No need to reset the unbonding record status since it will get reverted when the channel is restored if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { @@ -75,8 +67,12 @@ func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, icacallbackstypes.AckResponseStatus_FAILURE, packet)) // Reset unbondings record status - err = k.RecordsKeeper.SetHostZoneUnbondings(ctx, chainId, undelegateCallback.EpochUnbondingRecordIds, recordstypes.HostZoneUnbonding_UNBONDING_QUEUE) - if err != nil { + if err := k.RecordsKeeper.SetHostZoneUnbondings( + ctx, + chainId, + undelegateCallback.EpochUnbondingRecordIds, + recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, + ); err != nil { return err } return nil @@ -86,11 +82,7 @@ func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, icacallbackstypes.AckResponseStatus_SUCCESS, packet)) // Update delegation balances - hostZone, found := k.GetHostZone(ctx, undelegateCallback.HostZoneId) - if !found { - return errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, "Host zone not found: %s", undelegateCallback.HostZoneId) - } - err = k.UpdateDelegationBalances(ctx, hostZone, undelegateCallback) + err := k.UpdateDelegationBalances(ctx, hostZone, undelegateCallback) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("UndelegateCallback | %s", err.Error())) return err @@ -124,24 +116,16 @@ func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, return nil } -// Decrement the stakedBal field on the host zone and each validator's delegations after a successful unbonding ICA -func (k Keeper) UpdateDelegationBalances(ctx sdk.Context, zone types.HostZone, undelegateCallback types.UndelegateCallback) error { +// Decrement the delegation field on the host zone and each validator's delegations after a successful unbonding ICA +func (k Keeper) UpdateDelegationBalances(ctx sdk.Context, hostZone types.HostZone, undelegateCallback types.UndelegateCallback) error { // Undelegate from each validator and update host zone staked balance, if successful for _, undelegation := range undelegateCallback.SplitDelegations { - if undelegation.Amount.GT(zone.StakedBal) { - // handle incoming underflow - // Once we add a killswitch, we should also stop liquid staking on the zone here - return errorsmod.Wrapf(types.ErrUndelegationAmount, "undelegation.Amount > zone.StakedBal, undelegation.Amount: %v, zone.StakedBal %v", undelegation.Amount, zone.StakedBal) - } else { - zone.StakedBal = zone.StakedBal.Sub(undelegation.Amount) - } - - success := k.AddDelegationToValidator(ctx, zone, undelegation.Validator, undelegation.Amount.Neg(), ICACallbackID_Undelegate) - if !success { - return errorsmod.Wrapf(types.ErrValidatorDelegationChg, "Failed to remove delegation to validator") + err := k.AddDelegationToValidator(ctx, &hostZone, undelegation.Validator, undelegation.Amount.Neg(), ICACallbackID_Undelegate) + if err != nil { + return err } } - k.SetHostZone(ctx, zone) + k.SetHostZone(ctx, hostZone) return nil } @@ -224,13 +208,13 @@ func (k Keeper) BurnTokens(ctx sdk.Context, hostZone types.HostZone, stTokenBurn } // Send the stTokens from the host zone module account to the stakeibc module account - bech32ZoneAddress, err := sdk.AccAddressFromBech32(hostZone.Address) + depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) if err != nil { - return fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.Address, hostZone.ChainId) + return fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.DepositAddress, hostZone.ChainId) } - err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, bech32ZoneAddress, types.ModuleName, sdk.NewCoins(stCoin)) + err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, depositAddress, types.ModuleName, sdk.NewCoins(stCoin)) if err != nil { - return fmt.Errorf("could not send coins from account %s to module %s. err: %s", hostZone.Address, types.ModuleName, err.Error()) + return fmt.Errorf("could not send coins from account %s to module %s. err: %s", hostZone.DepositAddress, types.ModuleName, err.Error()) } // Finally burn the stTokens diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index cd878e4f4c..9cc584607d 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -3,21 +3,20 @@ package keeper_test import ( "time" + sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type UndelegateCallbackState struct { - stakedBal sdkmath.Int + totalDelegations sdkmath.Int val1Bal sdkmath.Int val2Bal sdkmath.Int epochNumber uint64 @@ -42,37 +41,39 @@ type UndelegateCallbackTestCase struct { func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { // Set up host zone and validator state - stakedBal := sdkmath.NewInt(1_000_000) + totalDelegations := sdkmath.NewInt(1_000_000) val1Bal := sdkmath.NewInt(400_000) - val2Bal := stakedBal.Sub(val1Bal) + val2Bal := totalDelegations.Sub(val1Bal) balanceToUnstake := sdkmath.NewInt(300_000) val1UndelegationAmount := sdkmath.NewInt(120_000) val2UndelegationAmount := balanceToUnstake.Sub(val1UndelegationAmount) epochNumber := uint64(1) val1 := types.Validator{ - Name: "val1", - Address: "val1_address", - DelegationAmt: val1Bal, + Name: "val1", + Address: "val1_address", + Delegation: val1Bal, + DelegationChangesInProgress: 1, } val2 := types.Validator{ - Name: "val2", - Address: "val2_address", - DelegationAmt: val2Bal, + Name: "val2", + Address: "val2_address", + Delegation: val2Bal, + DelegationChangesInProgress: 1, } - zoneAddress := types.NewZoneAddress(HostChainId) + depositAddress := types.NewHostZoneDepositAddress(HostChainId) zoneAccountBalance := balanceToUnstake.Add(sdkmath.NewInt(10)) zoneAccount := Account{ - acc: zoneAddress, + acc: depositAddress, stAtomBalance: sdk.NewCoin(StAtom, zoneAccountBalance), // Add a few extra tokens to make the test more robust } hostZone := types.HostZone{ - ChainId: HostChainId, - HostDenom: Atom, - IbcDenom: IbcAtom, - RedemptionRate: sdk.NewDec(1.0), - Validators: []*types.Validator{&val1, &val2}, - StakedBal: stakedBal, - Address: zoneAddress.String(), + ChainId: HostChainId, + HostDenom: Atom, + IbcDenom: IbcAtom, + RedemptionRate: sdk.NewDec(1.0), + Validators: []*types.Validator{&val1, &val2}, + TotalDelegations: totalDelegations, + DepositAddress: depositAddress.String(), } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) @@ -94,7 +95,7 @@ func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { // Mock ack response packet := channeltypes.Packet{} completionTime := time.Now() - msgsUndelegateResponse := &stakingTypes.MsgUndelegateResponse{CompletionTime: completionTime} + msgsUndelegateResponse := &stakingtypes.MsgUndelegateResponse{CompletionTime: completionTime} msgsUndelegateResponseBz, err := proto.Marshal(msgsUndelegateResponse) s.Require().NoError(err, "no error expected when marshalling undelegate response") @@ -117,7 +118,7 @@ func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { SplitDelegations: []*types.SplitDelegation{&val1SplitDelegation, &val2SplitDelegation}, EpochUnbondingRecordIds: []uint64{epochNumber}, } - callbackArgsBz, err := s.App.StakeibcKeeper.MarshalUndelegateCallbackArgs(s.Ctx, callbackArgs) + callbackArgsBz, err := proto.Marshal(&callbackArgs) s.Require().NoError(err, "callback args unmarshalled") return UndelegateCallbackTestCase{ @@ -126,7 +127,7 @@ func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { balanceToUnstake: balanceToUnstake, initialState: UndelegateCallbackState{ callbackArgs: callbackArgs, - stakedBal: stakedBal, + totalDelegations: totalDelegations, val1Bal: val1Bal, val2Bal: val2Bal, epochNumber: epochNumber, @@ -150,26 +151,30 @@ func (s *KeeperTestSuite) TestUndelegateCallback_Successful() { err := s.App.StakeibcKeeper.UndelegateCallback(s.Ctx, validArgs.packet, validArgs.ackResponse, validArgs.args) s.Require().NoError(err, "undelegate callback succeeds") - // Check that stakedBal has decreased on the host zone + // Check that total delegation has decreased on the host zone hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found) - s.Require().Equal(hostZone.StakedBal, initialState.stakedBal.Sub(tc.balanceToUnstake), "stakedBal has decreased on the host zone") + s.Require().Equal(hostZone.TotalDelegations, initialState.totalDelegations.Sub(tc.balanceToUnstake), "total delegation has decreased on the host zone") // Check that Delegations on validators have decreased s.Require().True(len(hostZone.Validators) == 2, "Expected 2 validators") val1 := hostZone.Validators[0] - s.Require().Equal(val1.DelegationAmt, initialState.val1Bal.Sub(tc.val1UndelegationAmount), "val1 delegation has decreased") val2 := hostZone.Validators[1] - // Check that the host zone unbonding records have been updated - s.Require().Equal(val2.DelegationAmt, initialState.val2Bal.Sub(tc.val2UndelegationAmount), "val2 delegation has decreased") + s.Require().Equal(initialState.val1Bal.Sub(tc.val1UndelegationAmount), val1.Delegation, "val1 delegation has decreased") + s.Require().Equal(initialState.val2Bal.Sub(tc.val2UndelegationAmount), val2.Delegation, "val2 delegation has decreased") + + // Check that the number of delegation changes in progress was reset to 0 + s.Require().Equal(0, int(val1.DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") + // Check that the host zone unbonding records have been updated epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, initialState.epochNumber) s.Require().True(found, "epoch unbonding record found") s.Require().Equal(len(epochUnbondingRecord.HostZoneUnbondings), 1, "1 host zone unbonding found") hzu := epochUnbondingRecord.HostZoneUnbondings[0] s.Require().Equal(int64(hzu.UnbondingTime), initialState.completionTime.UnixNano(), "completion time is set on the hzu") s.Require().Equal(hzu.Status, recordtypes.HostZoneUnbonding_EXIT_TRANSFER_QUEUE, "hzu status is set to EXIT_TRANSFER_QUEUE") - zoneAccount, err := sdk.AccAddressFromBech32(hostZone.Address) + zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) s.Require().NoError(err, "zone account address is valid") s.Require().Equal(tc.balanceToUnstake, initialState.zoneAccountBalance.Sub(s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount), "tokens are burned") } @@ -177,26 +182,30 @@ func (s *KeeperTestSuite) TestUndelegateCallback_Successful() { func (s *KeeperTestSuite) checkStateIfUndelegateCallbackFailed(tc UndelegateCallbackTestCase) { initialState := tc.initialState - // Check that stakedBal has NOT decreased on the host zone + // Check that total delegation has NOT decreased on the host zone hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found, "host zone found") - s.Require().Equal(hostZone.StakedBal, initialState.stakedBal, "stakedBal has NOT decreased on the host zone") + s.Require().Equal(initialState.totalDelegations, hostZone.TotalDelegations, "total delegation has NOT decreased on the host zone") // Check that Delegations on validators have NOT decreased s.Require().True(len(hostZone.Validators) == 2, "Expected 2 validators") val1 := hostZone.Validators[0] - s.Require().Equal(val1.DelegationAmt, initialState.val1Bal, "val1 delegation has NOT decreased") val2 := hostZone.Validators[1] - // Check that the host zone unbonding records have not been updated - s.Require().Equal(val2.DelegationAmt, initialState.val2Bal, "val2 delegation has NOT decreased") + s.Require().Equal(initialState.val1Bal, val1.Delegation, "val1 delegation has NOT decreased") + s.Require().Equal(initialState.val2Bal, val2.Delegation, "val2 delegation has NOT decreased") + + // Check that the number of delegation changes in progress was reset + s.Require().Equal(0, int(val1.DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") + // Check that the host zone unbonding records have not been updated epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, initialState.epochNumber) s.Require().True(found, "epoch unbonding record found") s.Require().Equal(len(epochUnbondingRecord.HostZoneUnbondings), 1, "1 host zone unbonding found") hzu := epochUnbondingRecord.HostZoneUnbondings[0] s.Require().Equal(int64(hzu.UnbondingTime), int64(0), "completion time is NOT set on the hzu") s.Require().Equal(hzu.Status, recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, "hzu status is set to UNBONDING_QUEUE") - zoneAccount, err := sdk.AccAddressFromBech32(hostZone.Address) + zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) s.Require().NoError(err, "zone account address is valid") s.Require().Equal(initialState.zoneAccountBalance, s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount, "tokens are NOT burned") } @@ -233,7 +242,6 @@ func (s *KeeperTestSuite) TestUndelegateCallback_WrongCallbackArgs() { err := s.App.StakeibcKeeper.UndelegateCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) s.Require().EqualError(err, "Unable to unmarshal undelegate callback args: unexpected EOF: unable to unmarshal data structure") - s.checkStateIfUndelegateCallbackFailed(tc) } func (s *KeeperTestSuite) TestUndelegateCallback_HostNotFound() { @@ -249,7 +257,7 @@ func (s *KeeperTestSuite) TestUndelegateCallback_HostNotFound() { // UpdateDelegationBalances tests func (s *KeeperTestSuite) TestUpdateDelegationBalances_Success() { tc := s.SetupUndelegateCallback() - // Check that stakedBal has NOT decreased on the host zone + // Check that total delegation has NOT decreased on the host zone hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found, "host zone found") err := s.App.StakeibcKeeper.UpdateDelegationBalances(s.Ctx, hostZone, tc.initialState.callbackArgs) @@ -261,9 +269,9 @@ func (s *KeeperTestSuite) TestUpdateDelegationBalances_Success() { // Check that Delegations on validators have decreased s.Require().True(len(updatedHostZone.Validators) == 2, "Expected 2 validators") val1 := updatedHostZone.Validators[0] - s.Require().Equal(val1.DelegationAmt, tc.initialState.val1Bal.Sub(tc.val1UndelegationAmount), "val1 delegation has decreased") + s.Require().Equal(val1.Delegation, tc.initialState.val1Bal.Sub(tc.val1UndelegationAmount), "val1 delegation has decreased") val2 := updatedHostZone.Validators[1] - s.Require().Equal(val2.DelegationAmt, tc.initialState.val2Bal.Sub(tc.val2UndelegationAmount), "val2 delegation has decreased") + s.Require().Equal(val2.Delegation, tc.initialState.val2Bal.Sub(tc.val2UndelegationAmount), "val2 delegation has decreased") } // GetLatestCompletionTime tests @@ -276,9 +284,9 @@ func (s *KeeperTestSuite) TestGetLatestCompletionTime_Success() { var err error msgResponses := make([][]byte, 2) - msgResponses[0], err = proto.Marshal(&stakingTypes.MsgUndelegateResponse{CompletionTime: firstCompletionTime}) + msgResponses[0], err = proto.Marshal(&stakingtypes.MsgUndelegateResponse{CompletionTime: firstCompletionTime}) s.Require().NoError(err, "marshal error") - msgResponses[1], err = proto.Marshal(&stakingTypes.MsgUndelegateResponse{CompletionTime: secondCompletionTime}) + msgResponses[1], err = proto.Marshal(&stakingtypes.MsgUndelegateResponse{CompletionTime: secondCompletionTime}) s.Require().NoError(err, "marshal error") // Check that the second completion time (the later of the two) is returned @@ -402,7 +410,7 @@ func (s *KeeperTestSuite) TestBurnTokens_Success() { hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found, "host zone found") - zoneAccount, err := sdk.AccAddressFromBech32(hostZone.Address) + zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) s.Require().NoError(err, "zoneAccount is valid") s.Require().Equal(tc.initialState.zoneAccountBalance, s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount, "initial token balance is 300_010") @@ -432,7 +440,7 @@ func (s *KeeperTestSuite) TestBurnTokens_CouldNotParseAddress() { hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found, "host zone found") - hostZone.Address = "invalid" + hostZone.DepositAddress = "invalid" err := s.App.StakeibcKeeper.BurnTokens(s.Ctx, hostZone, sdkmath.NewInt(123456)) s.Require().EqualError(err, "could not bech32 decode address invalid of zone with id: GAIA") diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index 6d66411aa2..287891c384 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -46,5 +46,5 @@ func (c ICQCallbacks) RegisterICQCallbacks() icqtypes.QueryCallbacks { AddICQCallback(ICQCallbackID_WithdrawalBalance, ICQCallback(WithdrawalBalanceCallback)). AddICQCallback(ICQCallbackID_FeeBalance, ICQCallback(FeeBalanceCallback)). AddICQCallback(ICQCallbackID_Delegation, ICQCallback(DelegatorSharesCallback)). - AddICQCallback(ICQCallbackID_Validator, ICQCallback(ValidatorExchangeRateCallback)) + AddICQCallback(ICQCallbackID_Validator, ICQCallback(ValidatorSharesToTokensRateCallback)) } diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index cbb75738e4..4788c259e2 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -1,17 +1,18 @@ package keeper import ( + "fmt" + sdkmath "cosmossdk.io/math" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/spf13/cast" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/spf13/cast" "github.com/Stride-Labs/stride/v13/utils" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -19,10 +20,10 @@ import ( // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. // // In an attempt to get the ICA's delegation amount on a given validator, we have to query: -// 1. the validator's internal exchange rate +// 1. the validator's internal shares to tokens rate // 2. the Delegation ICA's delegated shares // And apply the following equation: -// num_tokens = exchange_rate * num_shares +// numTokens = numShares * sharesToTokensRate // // This is the callback from query #2 // @@ -39,113 +40,221 @@ func DelegatorSharesCallback(k Keeper, ctx sdk.Context, args []byte, query icqty } // Unmarshal the query response which returns a delegation object for the delegator/validator pair - queriedDelgation := stakingtypes.Delegation{} - err := k.cdc.Unmarshal(args, &queriedDelgation) + queriedDelegation := stakingtypes.Delegation{} + err := k.cdc.Unmarshal(args, &queriedDelegation) if err != nil { - return errorsmod.Wrapf(types.ErrMarshalFailure, "unable to unmarshal query response into Delegation type, err: %s", err.Error()) + return errorsmod.Wrapf(err, "unable to unmarshal delegator shares query response into Delegation type") } k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Delegation, "Query response - Delegator: %s, Validator: %s, Shares: %v", - queriedDelgation.DelegatorAddress, queriedDelgation.ValidatorAddress, queriedDelgation.Shares)) + queriedDelegation.DelegatorAddress, queriedDelegation.ValidatorAddress, queriedDelegation.Shares)) - // Ensure ICQ can be issued now, else fail the callback - withinBufferWindow, err := k.IsWithinBufferWindow(ctx) - if err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to determine if ICQ callback is inside buffer window, err: %s", err.Error()) - } - if !withinBufferWindow { - return errorsmod.Wrapf(types.ErrOutsideIcqWindow, "callback is outside ICQ window") + // Unmarshal the callback data containing the previous delegation to the validator (from the time the query was submitted) + var callbackData types.DelegatorSharesQueryCallback + if err := proto.Unmarshal(query.CallbackData, &callbackData); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal delegator shares callback data") } // Grab the validator object from the hostZone using the address returned from the query - validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, queriedDelgation.ValidatorAddress) + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, queriedDelegation.ValidatorAddress) if !found { - return errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", queriedDelgation.ValidatorAddress) + return errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", queriedDelegation.ValidatorAddress) } - // Get the validator's internal exchange rate, aborting if it hasn't been updated this epoch - strideEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.STRIDE_EPOCH) - if !found { - return errorsmod.Wrapf(sdkerrors.ErrNotFound, "unable to get epoch tracker for epoch (%s)", epochtypes.STRIDE_EPOCH) + // Check if delegation is zero since this will affect measuring the slash amount + if validator.Delegation.IsZero() { + return errorsmod.Wrapf(types.ErrNoValidatorAmts, "Current delegation to validator is zero, unable to check slash magnitude %+v", validator) + } + + // Check if the ICQ overlapped a delegation, undelegation, or detokenization ICA + // that would have modfied the number of delegated tokens + prevInternalDelegation := callbackData.InitialValidatorDelegation + currInternalDelegation := validator.Delegation + icaOverlappedIcq, err := k.CheckDelegationChangedDuringQuery(ctx, validator, prevInternalDelegation, currInternalDelegation) + if err != nil { + return err + } + + // If the ICA/ICQ overlapped, submit a new query + if icaOverlappedIcq { + // Store the updated validator delegation amount + callbackDataBz, err := proto.Marshal(&types.DelegatorSharesQueryCallback{ + InitialValidatorDelegation: currInternalDelegation, + }) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal delegator shares callback data") + } + query.CallbackData = callbackDataBz + + if err := k.InterchainQueryKeeper.RetryICQRequest(ctx, query); err != nil { + return errorsmod.Wrapf(err, "unable to resubmit delegator shares query") + } + return nil + } + + // If there was no ICA/ICQ overlap, update the validator to indicate that the query + // is no longer in progress (which will unblock LSM liquid stakes to that validator) + validator.SlashQueryInProgress = false + hostZone.Validators[valIndex] = &validator + k.SetHostZone(ctx, hostZone) + + // Confirm the validator was slashed by looking at the number of tokens associated with the delegation + validatorWasSlashed, delegatedTokens, err := k.CheckForSlash(ctx, hostZone, valIndex, queriedDelegation) + if err != nil { + return err + } + // If the validator was not slashed, exit now + if !validatorWasSlashed { + return nil + } + + // If the validator was slashed and the query did not overlap any ICAs, update the internal record keeping + if err := k.SlashValidatorOnHostZone(ctx, hostZone, valIndex, delegatedTokens); err != nil { + return err + } + + return nil +} + +// The number of tokens returned from the query must be consistent with the tokens +// stored in our internal record keeping during this callback, otherwise the comparision +// between the two is invalidated +// +// As a result, we must avoid a race condition between the ICQ and a delegate, undelegate, +// redelegate, or detokenization ICA +// +// More specifically, we must avoid the following cases: +// +// Case 1) +// ICQ Lands on Host ICQ Ack on Stride +// ICA Lands on Host ICA Ack on Stride +// Case 2) +// ICA Lands on Host ICA Ack on Stride +// ICQ Lands on Host ICQ Ack on Stride +// +// We can prevent Case #1 by checking if the delegation total on the validator has changed +// while the query was in flight +// +// We can prevent Case #2 by checking if the validator has a delegation change in progress +func (k Keeper) CheckDelegationChangedDuringQuery( + ctx sdk.Context, + validator types.Validator, + previousInternalDelegation sdkmath.Int, + currentInternalDelegation sdkmath.Int, +) (overlapped bool, err error) { + // Confirm the delegation total in the internal record keeping has not changed while the query was inflight + // If it has changed, exit this callback (to prevent any accounting errors) and resubmit the query + if !currentInternalDelegation.Equal(previousInternalDelegation) { + k.Logger(ctx).Error(fmt.Sprintf( + "Validator (%s) delegation changed while delegator shares query was in flight. Resubmitting query", validator.Address)) + return true, nil } - if validator.InternalExchangeRate.EpochNumber != strideEpochTracker.EpochNumber { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, - "validator (%s) internal exchange rate has not been updated this epoch (epoch #%d)", validator.Address, strideEpochTracker.EpochNumber) + + // Confirm there isn't currently an active delegation change ICA for this validator + if validator.DelegationChangesInProgress > 0 { + k.Logger(ctx).Error(fmt.Sprintf( + "Validator (%s) has %d delegation changing ICAs in progress. Resubmitting query ", + validator.Address, validator.DelegationChangesInProgress)) + return true, nil } - // Calculate the number of tokens delegated (using the internal exchange rate) + return false, nil +} + +// Check if a slash occured by comparing the validator's sharesToTokens rate and delegator shares +// from the query responses (tokens = shares * sharesToTokensRate) +// +// If the change in delegation only differs by a small precision error, it was likely +// due to an decimal -> int truncation that occurs during unbonding. In this case, still update the validator +// +// If the change in delegation was an increase, the response can't be trusted so an error is thrown +func (k Keeper) CheckForSlash( + ctx sdk.Context, + hostZone types.HostZone, + valIndex int64, + queriedDelegation stakingtypes.Delegation, +) (validatorWasSlashed bool, delegatedTokens sdkmath.Int, err error) { + chainId := hostZone.ChainId + validator := hostZone.Validators[valIndex] + + // Calculate the number of tokens delegated (using the internal sharesToTokensRate) // note: truncateInt per https://github.com/cosmos/cosmos-sdk/blob/cb31043d35bad90c4daa923bb109f38fd092feda/x/staking/types/validator.go#L431 - delegatedTokens := queriedDelgation.Shares.Mul(validator.InternalExchangeRate.InternalTokensToSharesRate).TruncateInt() + delegatedTokens = queriedDelegation.Shares.Mul(validator.SharesToTokensRate).TruncateInt() k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Delegation, - "Previous Delegation: %v, Current Delegation: %v", validator.DelegationAmt, delegatedTokens)) + "Previous Delegation: %v, Current Delegation: %v", validator.Delegation, delegatedTokens)) // Confirm the validator has actually been slashed - if delegatedTokens.Equal(validator.DelegationAmt) { + if delegatedTokens.Equal(validator.Delegation) { k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Delegation, "Validator was not slashed")) - return nil + return false, delegatedTokens, nil } // If the true delegation is slightly higher than our record keeping, this could be due to float imprecision // Correct record keeping accordingly precisionErrorThreshold := sdkmath.NewInt(25) - precisionError := delegatedTokens.Sub(validator.DelegationAmt) + precisionError := delegatedTokens.Sub(validator.Delegation) if precisionError.IsPositive() && precisionError.LTE(precisionErrorThreshold) { // Update the validator on the host zone - validator.DelegationAmt = validator.DelegationAmt.Add(precisionError) - hostZone.StakedBal = hostZone.StakedBal.Add(precisionError) + validator.Delegation = validator.Delegation.Add(precisionError) + hostZone.TotalDelegations = hostZone.TotalDelegations.Add(precisionError) - hostZone.Validators[valIndex] = &validator + hostZone.Validators[valIndex] = validator k.SetHostZone(ctx, hostZone) k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Delegation, - "Delegation updated to %v", validator.DelegationAmt)) + "Delegation updated to %v", validator.Delegation)) - return nil + return false, delegatedTokens, nil } // If the delegation returned from the query is much higher than our record keeping, exit with an error - if delegatedTokens.GT(validator.DelegationAmt) { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "Validator (%s) tokens returned from query is greater than the DelegationAmt", validator.Address) + if delegatedTokens.GT(validator.Delegation) { + return false, delegatedTokens, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, + "Validator (%s) tokens returned from query is greater than the Delegation", validator.Address) } - // TODO(TESTS-171) add some safety checks here (e.g. we could query the slashing module to confirm the decr in tokens was due to slash) - // update our records of the total stakedbal and of the validator's delegation amt - // NOTE: we assume any decrease in delegation amt that's not tracked via records is a slash + return true, delegatedTokens, nil +} + +// Update the accounting on the host zone and validator to record the slash +// NOTE: we assume any decrease in delegation amt that's not tracked via records is a slash +func (k Keeper) SlashValidatorOnHostZone(ctx sdk.Context, hostZone types.HostZone, valIndex int64, delegatedTokens sdkmath.Int) error { + chainId := hostZone.ChainId + validator := hostZone.Validators[valIndex] + + // There is a check upstream to verify that validator.Delegation is not 0 + // This check is to explicitly avoid a division by zero error + if validator.Delegation.IsZero() { + return errorsmod.Wrapf(types.ErrDivisionByZero, "Zero Delegation has caused division by zero from validator, %+v", validator) + } // Get slash percentage - slashAmount := validator.DelegationAmt.Sub(delegatedTokens) - slashPct := sdk.NewDecFromInt(slashAmount).Quo(sdk.NewDecFromInt(validator.DelegationAmt)) + slashAmount := validator.Delegation.Sub(delegatedTokens) + slashPct := sdk.NewDecFromInt(slashAmount).Quo(sdk.NewDecFromInt(validator.Delegation)) k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Delegation, "Validator was slashed! Validator: %s, Delegator: %s, Delegation in State: %v, Delegation from ICQ %v, Slash Amount: %v, Slash Pct: %v", - validator.Address, queriedDelgation.DelegatorAddress, validator.DelegationAmt, delegatedTokens, slashAmount, slashPct)) - - // Abort if the slash was greater than the safety threshold - slashThreshold, err := cast.ToInt64E(k.GetParam(ctx, types.KeySafetyMaxSlashPercent)) - if err != nil { - return err - } - slashThresholdDecimal := sdk.NewDec(slashThreshold).Quo(sdk.NewDec(100)) - if slashPct.GT(slashThresholdDecimal) { - return errorsmod.Wrapf(types.ErrSlashExceedsSafetyThreshold, - "Validator slashed but ABORTING update, slash (%v) is greater than safety threshold (%v)", slashPct, slashThresholdDecimal) - } + validator.Address, hostZone.DelegationIcaAddress, validator.Delegation, delegatedTokens, slashAmount, slashPct)) // Update the validator weight and delegation reflect to reflect the slash weight, err := cast.ToInt64E(validator.Weight) if err != nil { return errorsmod.Wrapf(types.ErrIntCast, "unable to convert validator weight to int64, err: %s", err.Error()) } - weightAdjustment := sdk.NewDecFromInt(delegatedTokens).Quo(sdk.NewDecFromInt(validator.DelegationAmt)) + weightAdjustment := sdk.NewDecFromInt(delegatedTokens).Quo(sdk.NewDecFromInt(validator.Delegation)) validator.Weight = sdk.NewDec(weight).Mul(weightAdjustment).TruncateInt().Uint64() - validator.DelegationAmt = validator.DelegationAmt.Sub(slashAmount) + validator.Delegation = validator.Delegation.Sub(slashAmount) // Update the validator on the host zone - hostZone.StakedBal = hostZone.StakedBal.Sub(slashAmount) - hostZone.Validators[valIndex] = &validator + hostZone.TotalDelegations = hostZone.TotalDelegations.Sub(slashAmount) + hostZone.Validators[valIndex] = validator k.SetHostZone(ctx, hostZone) k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Delegation, - "Delegation updated to: %v, Weight updated to: %v", validator.DelegationAmt, validator.Weight)) + "Delegation updated to: %v, Weight updated to: %v", validator.Delegation, validator.Weight)) + + // Update the redemption rate + depositRecords := k.RecordsKeeper.GetAllDepositRecord(ctx) + k.UpdateRedemptionRateForHostZone(ctx, hostZone, depositRecords) return nil } diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index cd1c0ff8d5..f0f506040f 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -2,23 +2,20 @@ package keeper_test import ( "math" + "time" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + "github.com/gogo/protobuf/proto" //nolint:staticcheck - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -type DelegatorSharesICQCallbackState struct { - hostZone stakeibctypes.HostZone - strideEpochTracker stakeibctypes.EpochTracker -} - type DelegatorSharesICQCallbackArgs struct { query icqtypes.Query callbackArgs []byte @@ -26,14 +23,15 @@ type DelegatorSharesICQCallbackArgs struct { type DelegatorSharesICQCallbackTestCase struct { valIndexQueried int - initialState DelegatorSharesICQCallbackState + hostZone types.HostZone validArgs DelegatorSharesICQCallbackArgs numShares sdk.Dec slashPercentage sdk.Dec expectedDelegationAmount sdkmath.Int expectedSlashAmount sdkmath.Int expectedWeight uint64 - exchangeRate sdk.Dec + sharesToTokensRate sdk.Dec + retryTimeoutDuration time.Duration } // Mocks the query response that's returned from an ICQ for the number of shares for a given validator/delegator pair @@ -51,13 +49,12 @@ func (s *KeeperTestSuite) SetupDelegatorSharesICQCallback() DelegatorSharesICQCa // Setting this up to initialize the coordinator for the block time s.CreateTransferChannel(HostChainId) - valAddress := "valoper2" valIndexQueried := 1 tokensBeforeSlash := sdkmath.NewInt(1000) - internalExchangeRate := sdk.NewDec(1).Quo(sdk.NewDec(2)) // 0.5 + sharesToTokensRate := sdk.NewDec(1).Quo(sdk.NewDec(2)) // 0.5 numShares := sdk.NewDec(1900) - // 1900 shares * 0.5 exchange rate = 950 tokens + // 1900 shares * 0.5 sharesToTokens rate = 950 tokens // 1000 tokens - 950 token = 50 tokens slashed // 50 slash tokens / 1000 initial tokens = 5% slash expectedTokensAfterSlash := sdkmath.NewInt(950) @@ -65,155 +62,233 @@ func (s *KeeperTestSuite) SetupDelegatorSharesICQCallback() DelegatorSharesICQCa slashPercentage := sdk.MustNewDecFromStr("0.05") weightBeforeSlash := uint64(20) expectedWeightAfterSlash := uint64(19) - stakedBal := sdkmath.NewInt(10_000) + totalDelegation := sdkmath.NewInt(10_000) - s.Require().Equal(numShares, sdk.NewDecFromInt(expectedTokensAfterSlash.Mul(sdkmath.NewInt(2))), "tokens, shares, and exchange rate aligned") + s.Require().Equal(numShares, sdk.NewDecFromInt(expectedTokensAfterSlash.Mul(sdkmath.NewInt(2))), "tokens, shares, and sharesToTokens rate aligned") s.Require().Equal(slashPercentage, sdk.NewDecFromInt(expectedSlashAmount).Quo(sdk.NewDecFromInt(tokensBeforeSlash)), "expected slash percentage") s.Require().Equal(slashPercentage, sdk.NewDec(int64(weightBeforeSlash-expectedWeightAfterSlash)).Quo(sdk.NewDec(int64(weightBeforeSlash))), "weight reduction") - currentEpoch := uint64(1) - hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - StakedBal: stakedBal, - Validators: []*stakeibctypes.Validator{ + hostZone := types.HostZone{ + ChainId: HostChainId, + TotalDelegations: totalDelegation, + Validators: []*types.Validator{ // This validator isn't being queried { - Name: "val1", - Address: "valoper1", - Weight: 1, - DelegationAmt: sdkmath.ZeroInt(), + Name: "val1", + Address: "valoper1", + Weight: 1, + Delegation: sdkmath.ZeroInt(), }, // This is the validator in question { - Name: "val2", - Address: valAddress, - InternalExchangeRate: &stakeibctypes.ValidatorExchangeRate{ - InternalTokensToSharesRate: internalExchangeRate, - EpochNumber: currentEpoch, - }, - DelegationAmt: tokensBeforeSlash, - Weight: weightBeforeSlash, + Name: "val2", + Address: ValAddress, + SharesToTokensRate: sharesToTokensRate, + Delegation: tokensBeforeSlash, + Weight: weightBeforeSlash, + SlashQueryInProgress: true, + DelegationChangesInProgress: 0, }, }, } - - // This will make the current time 90% through the epoch - strideEpochTracker := stakeibctypes.EpochTracker{ - EpochIdentifier: epochtypes.STRIDE_EPOCH, - EpochNumber: currentEpoch, - Duration: 10_000_000_000, // 10 second epochs - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 1_000_000_000), // epoch ends in 1 second - } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) - queryResponse := s.CreateDelegatorSharesQueryResponse(valAddress, numShares) + queryResponse := s.CreateDelegatorSharesQueryResponse(ValAddress, numShares) + + // Create callback data + callbackDataBz, err := proto.Marshal(&types.DelegatorSharesQueryCallback{ + InitialValidatorDelegation: tokensBeforeSlash, + }) + s.Require().NoError(err, "no error expected when marshalling callback data") + + // Set the timeout timestamp to be 1 minute after the block time, and + // the timeout duration to be 5 minutes + blockTime := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC) + s.Ctx = s.Ctx.WithBlockTime(blockTime) + timeoutDuration := time.Minute + timeoutTimestamp := uint64(blockTime.Add(timeoutDuration).UnixNano()) + + // Create the query that represents the ICQ in flight + query := icqtypes.Query{ + Id: "query-1", + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + QueryType: icqtypes.STAKING_STORE_QUERY_WITH_PROOF, + CallbackData: callbackDataBz, + CallbackId: keeper.ICQCallbackID_Delegation, + CallbackModule: types.ModuleName, + TimeoutDuration: timeoutDuration, + TimeoutTimestamp: timeoutTimestamp, + RequestSent: true, + TimeoutPolicy: icqtypes.TimeoutPolicy_RETRY_QUERY_REQUEST, + } + s.App.InterchainqueryKeeper.SetQuery(s.Ctx, query) return DelegatorSharesICQCallbackTestCase{ valIndexQueried: valIndexQueried, - initialState: DelegatorSharesICQCallbackState{ - hostZone: hostZone, - strideEpochTracker: strideEpochTracker, - }, validArgs: DelegatorSharesICQCallbackArgs{ - query: icqtypes.Query{ - ChainId: HostChainId, - }, + query: query, callbackArgs: queryResponse, }, + hostZone: hostZone, numShares: numShares, slashPercentage: slashPercentage, expectedDelegationAmount: expectedTokensAfterSlash, expectedSlashAmount: expectedSlashAmount, expectedWeight: expectedWeightAfterSlash, - exchangeRate: internalExchangeRate, + sharesToTokensRate: sharesToTokensRate, + retryTimeoutDuration: timeoutDuration, } } +// Helper function to check if the query was resubmitted in the event that it overlapped an ICA +func (s *KeeperTestSuite) CheckQueryWasResubmitted(tc DelegatorSharesICQCallbackTestCase, hostZone types.HostZone) { + // After removing the original query, there should be only one query left + s.App.InterchainqueryKeeper.DeleteQuery(s.Ctx, "query-1") + queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) + s.Require().Len(queries, 1, "one query expected after re-submission") + + actualQuery := queries[0] + expectedQuery := tc.validArgs.query + + s.Require().Equal(HostChainId, actualQuery.ChainId, "query chain id") + s.Require().Equal(ibctesting.FirstConnectionID, actualQuery.ConnectionId, "query connection-id") + s.Require().Equal(icqtypes.STAKING_STORE_QUERY_WITH_PROOF, actualQuery.QueryType, "query type") + + s.Require().Equal(expectedQuery.CallbackModule, actualQuery.CallbackModule, "query callback module") + s.Require().Equal(expectedQuery.CallbackId, actualQuery.CallbackId, "query callback id") + s.Require().Equal(expectedQuery.CallbackData, actualQuery.CallbackData, "query callback data") + + expectedTimeout := s.Ctx.BlockTime().UnixNano() + (tc.retryTimeoutDuration.Nanoseconds()) + s.Require().Equal(expectedTimeout, int64(actualQuery.TimeoutTimestamp), "query timeout timestamp") + + // Confirm the validator still has a query flagged as in progress + validator := hostZone.Validators[tc.valIndexQueried] + s.Require().True(validator.SlashQueryInProgress, "slash query is progress") +} + func (s *KeeperTestSuite) TestDelegatorSharesCallback_Successful() { tc := s.SetupDelegatorSharesICQCallback() // Callback - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err, "delegator shares callback error") // Confirm the staked balance was decreased on the host - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.initialState.hostZone.ChainId) + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found, "host zone found") - s.Require().Equal(tc.expectedSlashAmount.Int64(), tc.initialState.hostZone.StakedBal.Sub(hostZone.StakedBal).Int64(), "staked bal slash") + s.Require().Equal(tc.expectedSlashAmount.Int64(), tc.hostZone.TotalDelegations.Sub(hostZone.TotalDelegations).Int64(), "staked bal slash") // Confirm the validator's weight and delegation amount were reduced validator := hostZone.Validators[tc.valIndexQueried] s.Require().Equal(tc.expectedWeight, validator.Weight, "validator weight") - s.Require().Equal(tc.expectedDelegationAmount.Int64(), validator.DelegationAmt.Int64(), "validator delegation amount") + s.Require().Equal(tc.expectedDelegationAmount.Int64(), validator.Delegation.Int64(), "validator delegation amount") + + // Confirm the validator query is no longer in progress + s.Require().False(validator.SlashQueryInProgress, "slash query in progress") } -func (s *KeeperTestSuite) checkStateIfValidatorNotSlashed(tc DelegatorSharesICQCallbackTestCase) { - // Confirm validator on host zone did not update - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.initialState.hostZone.ChainId) +func (s *KeeperTestSuite) TestDelegatorSharesCallback_Retry_DelegationChange() { + tc := s.SetupDelegatorSharesICQCallback() + + // Change the validator's delegation in the internal record keeping + // to make it look as if a delegation ICA landed while the query was in flight + hostZone := tc.hostZone + initialDelegation := hostZone.Validators[tc.valIndexQueried].Delegation.Add(sdk.NewInt(100)) + hostZone.Validators[tc.valIndexQueried].Delegation = initialDelegation + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Callback + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "no error expected during delegator shares callback") + + // Confirm the validator's delegation was not modified + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) s.Require().True(found, "host zone found") + s.Require().Equal(initialDelegation.Int64(), hostZone.Validators[tc.valIndexQueried].Delegation.Int64(), "validator delegation") - initialValidator := tc.initialState.hostZone.Validators[tc.valIndexQueried] - finalValidator := hostZone.Validators[tc.valIndexQueried] - s.Require().Equal(initialValidator.Weight, finalValidator.Weight, "validator weight should not have updated") - s.Require().Equal(initialValidator.DelegationAmt, finalValidator.DelegationAmt, "validator delegation amount should not have updated") + // Confirm the query was resubmitted + // The new delegation amount should be stored in the callback data + callbackDataBz, err := proto.Marshal(&types.DelegatorSharesQueryCallback{ + InitialValidatorDelegation: initialDelegation, + }) + s.Require().NoError(err, "no error expected when marshalling callback data") + tc.validArgs.query.CallbackData = callbackDataBz + + s.CheckQueryWasResubmitted(tc, hostZone) } -func (s *KeeperTestSuite) TestDelegatorSharesCallback_HostZoneNotFound() { +func (s *KeeperTestSuite) TestDelegatorSharesCallback_Retry_DelegationICAInProgress() { tc := s.SetupDelegatorSharesICQCallback() - // Set an incorrect host zone in the query - badQuery := tc.validArgs.query - badQuery.ChainId = "fake_host_zone" + // Update the validator's delegation change ICA counter to show a change is in progress + initialHostZone := tc.hostZone + initialHostZone.Validators[tc.valIndexQueried].DelegationChangesInProgress = 1 + s.App.StakeibcKeeper.SetHostZone(s.Ctx, initialHostZone) - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, badQuery) - s.Require().EqualError(err, "no registered zone for queried chain ID (fake_host_zone): host zone not found") -} + // Callback + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "no error expected during delegator shares callback") -func (s *KeeperTestSuite) TestDelegatorSharesCallback_InvalidCallbackArgs() { - tc := s.SetupDelegatorSharesICQCallback() + // Confirm the validator's delegation was not modified + actualHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone found") - // Submit callback with invalid callback args (so that it can't unmarshal into a validator) - invalidArgs := []byte("random bytes") - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) + initialDelegation := initialHostZone.Validators[tc.valIndexQueried].Delegation + s.Require().Equal(initialDelegation.Int64(), actualHostZone.Validators[tc.valIndexQueried].Delegation.Int64(), "validator delegation") - expectedErrMsg := "unable to unmarshal query response into Delegation type, " - expectedErrMsg += "err: unexpected EOF: unable to marshal data structure" - s.Require().EqualError(err, expectedErrMsg) + // Confirm the query was resubmitted + s.CheckQueryWasResubmitted(tc, actualHostZone) } -func (s *KeeperTestSuite) TestDelegatorSharesCallback_BufferWindowError() { +func (s *KeeperTestSuite) TestDelegatorSharesCallback_RetryFailure() { tc := s.SetupDelegatorSharesICQCallback() - // update epoch tracker so that we're in the middle of an epoch - epochTracker := tc.initialState.strideEpochTracker - epochTracker.Duration = 0 // duration of 0 will make the epoch start time equal to the epoch end time + // Change the validator's delegation in the internal record keeping + // to make it look as if a delegation ICA landed while the query was in flight + hostZone := tc.hostZone + initialDelegation := hostZone.Validators[tc.valIndexQueried].Delegation.Add(sdk.NewInt(100)) + hostZone.Validators[tc.valIndexQueried].Delegation = initialDelegation + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + // Remove the query connection ID so the retry attempt fails + invalidQuery := tc.validArgs.query + invalidQuery.ConnectionId = "" - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + // Trigger the callback - this should attempt to retry the query + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) + s.Require().ErrorContains(err, "unable to resubmit delegator shares query: failed to retry query") +} - s.Require().ErrorContains(err, "unable to determine if ICQ callback is inside buffer window") - s.Require().ErrorContains(err, "current block time") - s.Require().ErrorContains(err, "not within current epoch") +func (s *KeeperTestSuite) checkStateIfValidatorNotSlashed(tc DelegatorSharesICQCallbackTestCase) { + // Confirm validator on host zone did not update + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone found") + + initialValidator := tc.hostZone.Validators[tc.valIndexQueried] + finalValidator := hostZone.Validators[tc.valIndexQueried] + s.Require().Equal(initialValidator.Weight, finalValidator.Weight, "validator weight should not have updated") + s.Require().Equal(initialValidator.Delegation, finalValidator.Delegation, "validator delegation amount should not have updated") } -func (s *KeeperTestSuite) TestDelegatorSharesCallback_OutsideBufferWindow() { +func (s *KeeperTestSuite) TestDelegatorSharesCallback_HostZoneNotFound() { tc := s.SetupDelegatorSharesICQCallback() - // update epoch tracker so that we're in the middle of an epoch - epochTracker := tc.initialState.strideEpochTracker - epochTracker.Duration = 10_000_000_000 // 10 second epochs - epochTracker.NextEpochStartTime = uint64(s.Coordinator.CurrentTime.UnixNano() + 5_000_000_000) // epoch ends in 5 second + // Set an incorrect host zone in the query + badQuery := tc.validArgs.query + badQuery.ChainId = "fake_host_zone" - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, badQuery) + s.Require().EqualError(err, "no registered zone for queried chain ID (fake_host_zone): host zone not found") +} - // In this case, we should return success instead of error, but we should exit early before updating the validator's state - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) - s.Require().ErrorContains(err, "callback is outside ICQ window") +func (s *KeeperTestSuite) TestDelegatorSharesCallback_InvalidCallbackArgs() { + tc := s.SetupDelegatorSharesICQCallback() - s.checkStateIfValidatorNotSlashed(tc) + // Submit callback with invalid callback args (so that it can't unmarshal into a validator) + invalidArgs := []byte("random bytes") + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) + s.Require().ErrorContains(err, "unable to unmarshal delegator shares query response into Delegation type") } func (s *KeeperTestSuite) TestDelegatorSharesCallback_ValidatorNotFound() { @@ -221,22 +296,10 @@ func (s *KeeperTestSuite) TestDelegatorSharesCallback_ValidatorNotFound() { // Update the callback args to contain a validator address that doesn't exist badCallbackArgs := s.CreateDelegatorSharesQueryResponse("fake_val", sdk.NewDec(1000)) // 1000 is aribtrary - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) s.Require().EqualError(err, "no registered validator for address (fake_val): validator not found") } -func (s *KeeperTestSuite) TestDelegatorSharesCallback_ExchangeRateNotFound() { - tc := s.SetupDelegatorSharesICQCallback() - - // Increment the epoch number so that we're in an epoch that has not queried the validator's exchange rate - epochTracker := tc.initialState.strideEpochTracker - epochTracker.EpochNumber += 1 - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) - - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) - s.Require().EqualError(err, "validator (valoper2) internal exchange rate has not been updated this epoch (epoch #2): invalid request") -} - func (s *KeeperTestSuite) TestDelegatorSharesCallback_NoSlashOccurred() { tc := s.SetupDelegatorSharesICQCallback() @@ -244,10 +307,10 @@ func (s *KeeperTestSuite) TestDelegatorSharesCallback_NoSlashOccurred() { // shares_after_slash = (100% - slash_percentage) * share_if_not_slashed // => share_if_not_slashed = shares_after_slash / (100% - slash_percentage) validatorSharesIfNotSlashed := tc.numShares.Quo(sdk.OneDec().Sub(tc.slashPercentage)) - valAddress := tc.initialState.hostZone.Validators[tc.valIndexQueried].Address + valAddress := tc.hostZone.Validators[tc.valIndexQueried].Address queryResponse := s.CreateDelegatorSharesQueryResponse(valAddress, validatorSharesIfNotSlashed) - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, queryResponse, tc.validArgs.query) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, queryResponse, tc.validArgs.query) s.Require().NoError(err, "delegator shares callback callback error") s.checkStateIfValidatorNotSlashed(tc) @@ -259,69 +322,56 @@ func (s *KeeperTestSuite) TestDelegatorSharesCallback_InvalidNumTokens() { // Update the delegator shares query response so that it shows that there are more tokens delegated // than were tracked in state (which shouldn't be possible) // Any large number of shares will work here so we'll use 10_000 - valAddress := tc.initialState.hostZone.Validators[tc.valIndexQueried].Address + valAddress := tc.hostZone.Validators[tc.valIndexQueried].Address numShares := sdk.NewDec(10_000) badCallbackArgs := s.CreateDelegatorSharesQueryResponse(valAddress, numShares) - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) - expectedErrMsg := "Validator (valoper2) tokens returned from query is greater than the DelegationAmt: invalid request" - s.Require().EqualError(err, expectedErrMsg) + expectedErrMsg := "tokens returned from query is greater than the Delegation: invalid request" + s.Require().ErrorContains(err, expectedErrMsg) } func (s *KeeperTestSuite) TestDelegatorSharesCallback_WeightOverfow() { tc := s.SetupDelegatorSharesICQCallback() // Update the validator weight to max int so it overflows when casted - hostZone := tc.initialState.hostZone + hostZone := tc.hostZone validator := hostZone.Validators[tc.valIndexQueried] validator.Weight = math.MaxUint64 hostZone.Validators[tc.valIndexQueried] = validator s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) expectedErrMsg := `unable to convert validator weight to int64, err: overflow: ` expectedErrMsg += `unable to cast \d+ of type uint64 to int64: unable to cast to safe cast int` s.Require().Regexp(expectedErrMsg, err.Error()) } -func (s *KeeperTestSuite) TestDelegatorSharesCallback_SlashGtTenPercent() { - tc := s.SetupDelegatorSharesICQCallback() - - // Update the callback args to contain a number of shares that would imply a slash greater than 10% - valAddress := tc.initialState.hostZone.Validators[tc.valIndexQueried].Address - badCallbackArgs := s.CreateDelegatorSharesQueryResponse(valAddress, sdk.NewDec(1600)) - - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) - expectedErrMsg := "Validator slashed but ABORTING update, slash (0.200000000000000000) is greater than safety threshold (0.100000000000000000): " - expectedErrMsg += "slash is greater than safety threshold" - s.Require().EqualError(err, expectedErrMsg) -} - func (s *KeeperTestSuite) TestDelegatorSharesCallback_PrecisionError() { tc := s.SetupDelegatorSharesICQCallback() - initialValidator := tc.initialState.hostZone.Validators[tc.valIndexQueried] + initialValidator := tc.hostZone.Validators[tc.valIndexQueried] // Update the delegator shares query response so that it shows that there are 5 more tokens delegated // than were tracked in state // This should be interpretted as a precision error and our record keeping should be adjusted precisionErrorTokens := sdk.NewInt(5) - precisionErrorShares := sdk.NewDecFromInt(precisionErrorTokens).Quo(tc.exchangeRate) - sharesBeforeSlash := sdk.NewDecFromInt(initialValidator.DelegationAmt).Quo(tc.exchangeRate) + precisionErrorShares := sdk.NewDecFromInt(precisionErrorTokens).Quo(tc.sharesToTokensRate) + sharesBeforeSlash := sdk.NewDecFromInt(initialValidator.Delegation).Quo(tc.sharesToTokensRate) queryShares := sharesBeforeSlash.Add(precisionErrorShares) callbackArgs := s.CreateDelegatorSharesQueryResponse(initialValidator.Address, queryShares) - err := stakeibckeeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, callbackArgs, tc.validArgs.query) + err := keeper.DelegatorSharesCallback(s.App.StakeibcKeeper, s.Ctx, callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm host zone and validator were updated - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.initialState.hostZone.ChainId) + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) s.Require().True(found, "host zone found") - expectedStakedBalance := tc.initialState.hostZone.StakedBal.Add(precisionErrorTokens) - s.Require().Equal(expectedStakedBalance.Int64(), hostZone.StakedBal.Int64(), "host zone staked balance") + expectedTotalDelegation := tc.hostZone.TotalDelegations.Add(precisionErrorTokens) + s.Require().Equal(expectedTotalDelegation.Int64(), hostZone.TotalDelegations.Int64(), "host zone staked balance") validator := hostZone.Validators[tc.valIndexQueried] - expectedDelegationAmt := tc.initialState.hostZone.Validators[tc.valIndexQueried].DelegationAmt.Add(precisionErrorTokens) - s.Require().Equal(expectedDelegationAmt.Int64(), validator.DelegationAmt.Int64(), "validator delegation amount") + expectedValDelegation := tc.hostZone.Validators[tc.valIndexQueried].Delegation.Add(precisionErrorTokens) + s.Require().Equal(expectedValDelegation.Int64(), validator.Delegation.Int64(), "validator delegation amount") } diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance.go b/x/stakeibc/keeper/icqcallbacks_fee_balance.go index fe0e176d26..db83954772 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance.go @@ -44,13 +44,12 @@ func FeeBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Q // Confirm the balance is greater than zero if feeBalanceAmount.LTE(sdkmath.ZeroInt()) { k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_FeeBalance, - "No balance to transfer for address: %v, balance: %v", hostZone.FeeAccount.GetAddress(), feeBalanceAmount)) + "No balance to transfer for address: %s, balance: %v", hostZone.FeeIcaAddress, feeBalanceAmount)) return nil } // Confirm the fee account has been initiated - feeAccount := hostZone.FeeAccount - if feeAccount == nil || feeAccount.Address == "" { + if hostZone.FeeIcaAddress == "" { return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no fee account found for %s", chainId) } @@ -74,7 +73,7 @@ func FeeBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Q transfertypes.PortID, counterpartyChannelId, rewardsCoin, - feeAccount.Address, + hostZone.FeeIcaAddress, rewardsCollectorAddress.String(), clienttypes.Height{}, timeout, @@ -86,7 +85,7 @@ func FeeBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Q "Preparing MsgTransfer of %v from the fee account to the rewards collector module account (for commission)", rewardsCoin.String())) // Send the transaction through SubmitTx - if _, err := k.SubmitTxsStrideEpoch(ctx, hostZone.ConnectionId, msgs, *feeAccount, ICACallbackID_Reinvest, nil); err != nil { + if _, err := k.SubmitTxsStrideEpoch(ctx, hostZone.ConnectionId, msgs, types.ICAAccountType_FEE, ICACallbackID_Reinvest, nil); err != nil { return errorsmod.Wrapf(types.ErrICATxFailed, "Failed to SubmitTxs, Messages: %v, err: %s", msgs, err.Error()) } diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go index 8302721b8e..e420e8e268 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go @@ -6,16 +6,14 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type FeeBalanceICQCallbackState struct { - hostZone stakeibctypes.HostZone + hostZone types.HostZone feeChannel Channel feeBalance int64 startICASequence uint64 @@ -33,21 +31,18 @@ type FeeBalanceICQCallbackTestCase struct { func (s *KeeperTestSuite) SetupFeeBalanceCallbackTest() FeeBalanceICQCallbackTestCase { feeAccountOwner := fmt.Sprintf("%s.%s", HostChainId, "FEE") - feeChannelId := s.CreateICAChannel(feeAccountOwner) + feeChannelId, feePortId := s.CreateICAChannel(feeAccountOwner) feeAddress := s.IcaAddresses[feeAccountOwner] - hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - HostDenom: Atom, - ConnectionId: ibctesting.FirstConnectionID, - FeeAccount: &stakeibctypes.ICAAccount{ - Address: feeAddress, - Target: stakeibctypes.ICAAccountType_FEE, - }, + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + ConnectionId: ibctesting.FirstConnectionID, + FeeIcaAddress: feeAddress, TransferChannelId: ibctesting.FirstChannelID, } - strideEpochTracker := stakeibctypes.EpochTracker{ + strideEpochTracker := types.EpochTracker{ EpochIdentifier: epochtypes.STRIDE_EPOCH, EpochNumber: 1, NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts @@ -57,7 +52,6 @@ func (s *KeeperTestSuite) SetupFeeBalanceCallbackTest() FeeBalanceICQCallbackTes s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) // Get the next sequence number to confirm if an ICA was sent - feePortId := icatypes.ControllerPortPrefix + feeAccountOwner startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, feePortId, feeChannelId) s.Require().True(found, "sequence number not found before ICA") @@ -106,7 +100,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_Successful() { feeChannelId := feeChannel.ChannelID // Call the ICQ callback - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm the sequence number was incremented @@ -123,7 +117,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_EmptyCallbackArgs() { emptyCallbackArgs := []byte{} // It should short circuit but not throw an error - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, emptyCallbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, emptyCallbackArgs, tc.validArgs.query) s.Require().NoError(err) // No ICA should have been submitted @@ -136,7 +130,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_ZeroBalance() { // Replace the query response with a coin that has a nil amount tc.validArgs.callbackArgs = s.CreateBalanceQueryResponse(0, Atom) - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm revinvestment callback was not created @@ -151,7 +145,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_ZeroBalanceImplied() { coinBz := s.App.RecordsKeeper.Cdc.MustMarshal(&coin) tc.validArgs.callbackArgs = coinBz - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm revinvestment callback was not created @@ -164,7 +158,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_HostZoneNotFound() { // Submit callback with incorrect host zone invalidQuery := tc.validArgs.query invalidQuery.ChainId = "fake_host_zone" - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) s.Require().EqualError(err, "no registered zone for queried chain ID (fake_host_zone): host zone not found") } @@ -173,7 +167,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_InvalidArgs() { // Submit callback with invalid callback args (so that it can't unmarshal into a coin) invalidArgs := []byte("random bytes") - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) s.Require().ErrorContains(err, "unable to determine balance from query response") } @@ -183,10 +177,10 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_NoFeeAccount() { // Remove the fee account badHostZone := tc.initialState.hostZone - badHostZone.FeeAccount = nil + badHostZone.FeeIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().EqualError(err, "no fee account found for GAIA: ICA acccount not found on host zone") } @@ -196,7 +190,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_FailedToCalculatedTimeout() { // Remove the epoch tracker so that it cannot calculate the ICA timeout s.App.StakeibcKeeper.RemoveEpochTracker(s.Ctx, epochtypes.STRIDE_EPOCH) - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().ErrorContains(err, "Failed to get ICATimeout from stride_epoch epoch:") } @@ -208,7 +202,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_NoTransferChannel() { badHostZone.TransferChannelId = "channel-X" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().EqualError(err, "transfer channel channel-X not found: channel not found") } @@ -220,7 +214,7 @@ func (s *KeeperTestSuite) TestFeeBalanceCallback_FailedSubmitTx() { badHostZone.ConnectionId = "connection-X" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.FeeBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().ErrorContains(err, "Failed to SubmitTxs") s.Require().ErrorContains(err, "invalid connection id, connection-X not found") } diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index 81b33fa2a0..46b469287c 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -1,14 +1,15 @@ package keeper import ( + "fmt" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/gogo/protobuf/proto" //nolint:staticcheck stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/Stride-Labs/stride/v13/utils" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -16,15 +17,17 @@ import ( // ValidatorCallback is a callback handler for validator queries. // // In an attempt to get the ICA's delegation amount on a given validator, we have to query: -// 1. the validator's internal exchange rate +// 1. the validator's internal sharesToTokens rate // 2. the Delegation ICA's delegated shares // And apply the following equation: -// num_tokens = exchange_rate * num_shares +// numTokens = numShares * sharesToTokensRate // // This is the callback from query #1 -func ValidatorExchangeRateCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Query) error { +// We only issue query #2 if the validator sharesToTokens rate from #1 has changed (indicating a slash) +func ValidatorSharesToTokensRateCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Query) error { k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, ICQCallbackID_Validator, - "Starting validator exchange rate balance callback, QueryId: %vs, QueryType: %s, Connection: %s", query.Id, query.QueryType, query.ConnectionId)) + "Starting validator sharesToTokens rate balance callback, QueryId: %vs, QueryType: %s, Connection: %s", + query.Id, query.QueryType, query.ConnectionId)) // Confirm host exists chainId := query.ChainId @@ -33,63 +36,160 @@ func ValidatorExchangeRateCallback(k Keeper, ctx sdk.Context, args []byte, query return errorsmod.Wrapf(types.ErrHostZoneNotFound, "no registered zone for queried chain ID (%s)", chainId) } + // Determine if we're in a callback for the LSMLiquidStake by checking if the callback data is non-empty + // If this query was triggered manually, the callback data will be empty + inLSMLiquidStakeCallback := len(query.CallbackData) != 0 + + // If the query timed out, either fail the LSM liquid stake or, if this query was submitted manually, do nothing + if query.HasTimedOut(ctx.BlockTime()) { + if inLSMLiquidStakeCallback { + return k.LSMSlashQueryTimeout(ctx, hostZone, query) + } + return nil + } + // Unmarshal the query response args into a Validator struct queriedValidator := stakingtypes.Validator{} - err := k.cdc.Unmarshal(args, &queriedValidator) - if err != nil { - return errorsmod.Wrapf(types.ErrMarshalFailure, "unable to unmarshal query response into Validator type, err: %s", err.Error()) + if err := k.cdc.Unmarshal(args, &queriedValidator); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal query response into Validator type") } - k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Validator, "Query response - Validator: %s, Jailed: %v, Tokens: %v, Shares: %v", + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Validator, + "Query response - Validator: %s, Jailed: %v, Tokens: %v, Shares: %v", queriedValidator.OperatorAddress, queriedValidator.Jailed, queriedValidator.Tokens, queriedValidator.DelegatorShares)) - // Ensure ICQ can be issued now, else fail the callback - withinBufferWindow, err := k.IsWithinBufferWindow(ctx) + // Check the query response to identify if the validator was slashed + validatorWasSlashed, err := k.CheckIfValidatorWasSlashed(ctx, hostZone, queriedValidator) if err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to determine if ICQ callback is inside buffer window, err: %s", err.Error()) + return err } - if !withinBufferWindow { - return errorsmod.Wrapf(types.ErrOutsideIcqWindow, "callback is outside ICQ window") + + // If we are in the LSMLiquidStake callback, finish the transaction + if inLSMLiquidStakeCallback { + if err := k.LSMSlashQueryCallback(ctx, hostZone, query, validatorWasSlashed); err != nil { + return errorsmod.Wrapf(err, "unable to finish LSM liquid stake") + } } - // Get the validator from the host zone - validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, queriedValidator.OperatorAddress) - if !found { - return errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", queriedValidator.OperatorAddress) + // If the validator was slashed, we'll have to issue a delegator shares query to determine + // the magnitude of the slash + if validatorWasSlashed { + if err := k.SubmitDelegationICQ(ctx, hostZone, queriedValidator.OperatorAddress); err != nil { + return errorsmod.Wrapf(err, "Failed to submit ICQ validator delegations") + } } - // Get the stride epoch number - strideEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.STRIDE_EPOCH) + return nil +} + +// Determines if the validator was slashed by comparing the validator sharesToTokens rate from the query response +// with the sharesToTokens rate stored on the validator +func (k Keeper) CheckIfValidatorWasSlashed( + ctx sdk.Context, + hostZone types.HostZone, + queriedValidator stakingtypes.Validator, +) (validatorWasSlashed bool, err error) { + // Get the validator from the host zone + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, queriedValidator.OperatorAddress) if !found { - k.Logger(ctx).Error("failed to find stride epoch") - return errorsmod.Wrapf(sdkerrors.ErrNotFound, "no epoch number for epoch (%s)", epochtypes.STRIDE_EPOCH) + return false, errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", queriedValidator.OperatorAddress) } + previousSharesToTokensRate := validator.SharesToTokensRate - // If the validator's delegation shares is 0, we'll get a division by zero error when trying to get the exchange rate + // If the validator's delegation shares is 0, we'll get a division by zero error when trying to get the sharesToTokens rate // because `validator.TokensFromShares` uses delegation shares in the denominator if queriedValidator.DelegatorShares.IsZero() { - return errorsmod.Wrapf(types.ErrDivisionByZero, - "can't calculate validator internal exchange rate because delegation amount is 0 (validator: %s)", validator.Address) + return false, errorsmod.Wrapf(types.ErrDivisionByZero, + "can't calculate validator internal sharesToTokens rate because delegation amount is 0 (validator: %s)", validator.Address) } - // We want the validator's internal exchange rate which is held internally behind `validator.TokensFromShares` + // We want the validator's internal sharesToTokens rate which is held internally + // behind the inverse of the function `validator.TokensFromShares` // Since, - // exchange_rate = num_tokens / num_shares + // sharesToTokensRate = numTokens / numShares // We can use `validator.TokensFromShares`, plug in 1.0 for the number of shares, - // and the returned number of tokens will be equal to the internal exchange rate - validator.InternalExchangeRate = &types.ValidatorExchangeRate{ - InternalTokensToSharesRate: queriedValidator.TokensFromShares(sdk.NewDec(1.0)), - EpochNumber: strideEpochTracker.GetEpochNumber(), - } + // and the returned number of tokens will be equal to the internal sharesToTokens rate + currentSharesToTokensRate := queriedValidator.TokensFromShares(sdk.NewDec(1.0)) + validator.SharesToTokensRate = currentSharesToTokensRate hostZone.Validators[valIndex] = &validator k.SetHostZone(ctx, hostZone) - k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Validator, "Validator Internal Exchange Rate: %v", - validator.InternalExchangeRate.InternalTokensToSharesRate)) + // Check if the validator was slashed by comparing the sharesToTokens rate from the query + // with the preivously stored sharesToTokens rate + previousSharesToTokensRateKnown := !previousSharesToTokensRate.IsNil() && previousSharesToTokensRate.IsPositive() + validatorWasSlashed = previousSharesToTokensRateKnown && !previousSharesToTokensRate.Equal(currentSharesToTokensRate) - // Armed with the exch rate, we can now query the (validator,delegator) delegation - if err := k.QueryDelegationsIcq(ctx, hostZone, queriedValidator.OperatorAddress); err != nil { - return errorsmod.Wrapf(types.ErrICQFailed, "Failed to query delegations, err: %s", err.Error()) + if !validatorWasSlashed { + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(hostZone.ChainId, ICQCallbackID_Validator, + "Validator was not slashed")) + return false, nil } + // Emit an event if the validator was slashed + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(hostZone.ChainId, ICQCallbackID_Validator, + "Previous Validator SharesToTokens Rate: %v, Current Validator SharesToTokens Rate: %v", + previousSharesToTokensRate, currentSharesToTokensRate)) + + EmitValidatorSharesToTokensRateChangeEvent(ctx, hostZone.ChainId, validator.Address, previousSharesToTokensRate, currentSharesToTokensRate) + + return true, nil +} + +// Fails the LSM Liquid Stake if the query timed out +func (k Keeper) LSMSlashQueryTimeout(ctx sdk.Context, hostZone types.HostZone, query icqtypes.Query) error { + var callbackData types.ValidatorSharesToTokensQueryCallback + if err := proto.Unmarshal(query.CallbackData, &callbackData); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal validator sharesToTokens rate callback data") + } + lsmLiquidStake := *callbackData.LsmLiquidStake + + k.FailLSMLiquidStake(ctx, hostZone, lsmLiquidStake, "query timed out") return nil } + +// Callback handler for if the slash query was initiated by an LSMLiquidStake transaction +// If the validator was slashed, the LSMLiquidStake should be rejected +// If the validator was not slashed, the LSMLiquidStake should finish to mint the user stTokens +func (k Keeper) LSMSlashQueryCallback( + ctx sdk.Context, + hostZone types.HostZone, + query icqtypes.Query, + validatorWasSlashed bool, +) error { + var callbackData types.ValidatorSharesToTokensQueryCallback + if err := proto.Unmarshal(query.CallbackData, &callbackData); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal validator sharesToTokens rate callback data") + } + lsmLiquidStake := *callbackData.LsmLiquidStake + + // If the validator was slashed, fail the liquid stake + if validatorWasSlashed { + k.FailLSMLiquidStake(ctx, hostZone, lsmLiquidStake, "validator was slashed, failing LSMLiquidStake") + return nil + } + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(hostZone.ChainId, ICQCallbackID_Validator, + "Validator was not slashed, finishing LSM liquid stake")) + + // Finish the LSMLiquidStake with a temporary context so that the state changes can + // be discarded if it errors + err := utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + async := true + return k.FinishLSMLiquidStake(ctx, lsmLiquidStake, async) + }) + + // If finishing the transaction failed, emit an event and remove the LSMTokenDeposit + if err != nil { + k.FailLSMLiquidStake(ctx, hostZone, lsmLiquidStake, + fmt.Sprintf("lsm liquid stake callback failed after slash query: %s", err.Error())) + } + + return nil +} + +// Fail an LSMLiquidStake transaction by emitting an event and removing the LSMTokenDeposit record +func (k Keeper) FailLSMLiquidStake(ctx sdk.Context, hostZone types.HostZone, lsmLiquidStake types.LSMLiquidStake, errorMessage string) { + EmitFailedLSMLiquidStakeEvent(ctx, hostZone, *lsmLiquidStake.Deposit, errorMessage) + k.Logger(ctx).Error(errorMessage) + + // Remove the LSMTokenDeposit + k.RecordsKeeper.RemoveLSMTokenDeposit(ctx, lsmLiquidStake.Deposit.ChainId, lsmLiquidStake.Deposit.Denom) +} diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index 67c88338b9..e531183c83 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -2,22 +2,29 @@ package keeper_test import ( "fmt" + "time" sdkmath "cosmossdk.io/math" ibctesting "github.com/cosmos/ibc-go/v7/testing" + "github.com/gogo/protobuf/proto" //nolint:staticcheck + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/bech32" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ValidatorICQCallbackState struct { - hostZone stakeibctypes.HostZone - strideEpochTracker stakeibctypes.EpochTracker + hostZone types.HostZone + validator types.Validator + delegator string + lsmTokenIBCDenom string + stakerBalance sdkmath.Int } type ValidatorICQCallbackArgs struct { @@ -26,11 +33,9 @@ type ValidatorICQCallbackArgs struct { } type ValidatorICQCallbackTestCase struct { - initialState ValidatorICQCallbackState - validArgs ValidatorICQCallbackArgs - valIndexQueried int - valIndexInvalid int - expectedExchangeRate sdk.Dec + initialState ValidatorICQCallbackState + validArgs ValidatorICQCallbackArgs + sharesToTokensRateIfSlashed sdk.Dec } func (s *KeeperTestSuite) CreateValidatorQueryResponse(address string, tokens int64, shares int64) []byte { @@ -43,196 +48,479 @@ func (s *KeeperTestSuite) CreateValidatorQueryResponse(address string, tokens in return validatorBz } -func (s *KeeperTestSuite) SetupValidatorICQCallback() ValidatorICQCallbackTestCase { - // We don't actually need a transfer channel for this test, but we do need to have IBC support for timeouts +func (s *KeeperTestSuite) SetupValidatorICQCallback(validatorSlashed, liquidStakeCallback bool) ValidatorICQCallbackTestCase { + // The transfer channel is required in the event that we're testing an LSMCallback and have to transfer the LSM Token s.CreateTransferChannel(HostChainId) - // These must be valid addresses, otherwise the bech decoding will fail - valAddress := "cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p" + // These must be valid delegation account address, otherwise the bech decoding will fail delegatorAddress := "cosmos1sy63lffevueudvvlvh2lf6s387xh9xq72n3fsy6n2gr5hm6u2szs2v0ujm" + depositAddress := types.NewHostZoneDepositAddress(HostChainId).String() // In this example, the validator has 2000 shares, originally had 2000 tokens, // and now has 1000 tokens (after being slashed) - initialExchangeRate := sdk.NewDec(1) numShares := int64(2000) - numTokens := int64(1000) - expectedExchangeRate := sdk.NewDec(1).Quo(sdk.NewDec(2)) // 0.5 - - currentEpoch := uint64(2) - hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - ConnectionId: ibctesting.FirstConnectionID, - DelegationAccount: &stakeibctypes.ICAAccount{ - Address: delegatorAddress, - Target: stakeibctypes.ICAAccountType_DELEGATION, - }, - Validators: []*stakeibctypes.Validator{ - { - Name: "val1", - Address: valAddress, - InternalExchangeRate: &stakeibctypes.ValidatorExchangeRate{ - InternalTokensToSharesRate: initialExchangeRate, - EpochNumber: currentEpoch, - }, - }, - // This validator isn't being queried - { - Name: "val2", - Address: "cosmos_invalid_address", - }, - }, + sharesToTokensRate := sdk.NewDec(1) + sharesToTokensRateIfSlashed := sdk.MustNewDecFromStr("0.5") + + // The validator we'll query the sharesToTokens rate for + queriedValidator := types.Validator{ + Name: "val1", + Address: ValAddress, + SharesToTokensRate: sharesToTokensRate, } - // index in the validators array - valIndexQueried := 0 - valIndexInvalid := 1 - - // This will make the current time 90% through the epoch - strideEpochTracker := stakeibctypes.EpochTracker{ - EpochIdentifier: epochtypes.STRIDE_EPOCH, - EpochNumber: currentEpoch, - Duration: 10_000_000_000, // 10 second epochs - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 1_000_000_000), // epoch ends in 1 second + // Mocked state is required for (optional) delegator shares ICQ submission + // and (optional) LSM Liquid Stake completion + hostZone := types.HostZone{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + TransferChannelId: ibctesting.FirstChannelID, + DelegationIcaAddress: delegatorAddress, + DepositAddress: depositAddress, + RedemptionRate: sdk.NewDec(1), + Validators: []*types.Validator{ + &queriedValidator, + {Name: "val2"}, // This validator isn't being queried + }, + LsmLiquidStakeEnabled: true, } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) - queryResponse := s.CreateValidatorQueryResponse(valAddress, numTokens, numShares) + // Mock out the query response (which will be a validator object) + // If we're testing that a slash occurred, cut the number tokens in half (to represent the slash) + // Otherwise, use the same number of tokens as shares + numTokens := numShares + if validatorSlashed { + numTokens /= 2 + } + queryResponse := s.CreateValidatorQueryResponse(ValAddress, numTokens, numShares) + + // If we're testing a liquid stake callback, mock out the callback data + var err error + lsmTokenIBCDenom := "" + callbackDataBz := []byte{} + stakeAmount := sdkmath.NewInt(1_000_000) + if liquidStakeCallback { + // Need valid IBC denom here to test parsing + lsmTokenIBCDenom = s.getLSMTokenIBCDenom() + + // Fund the user's account with the LSM token + liquidStaker := s.TestAccs[0] + s.FundAccount(liquidStaker, sdk.NewCoin(lsmTokenIBCDenom, stakeAmount)) + + // The callback data consists of the LSMTokenDeposit wrapped in additional state context + lsmTokenDeposit := recordstypes.LSMTokenDeposit{ + ChainId: HostChainId, + Denom: LSMTokenBaseDenom, + StakerAddress: liquidStaker.String(), + Amount: stakeAmount, + IbcDenom: lsmTokenIBCDenom, + StToken: sdk.NewCoin(StAtom, stakeAmount), + } + lsmLiquidStake := types.LSMLiquidStake{ + HostZone: &hostZone, + Validator: &queriedValidator, + Deposit: &lsmTokenDeposit, + } + callbackDataBz, err = proto.Marshal(&types.ValidatorSharesToTokensQueryCallback{ + LsmLiquidStake: &lsmLiquidStake, + }) + s.Require().NoError(err, "no error expected when marshalling callback data") + } return ValidatorICQCallbackTestCase{ initialState: ValidatorICQCallbackState{ - hostZone: hostZone, - strideEpochTracker: strideEpochTracker, + hostZone: hostZone, + validator: queriedValidator, + delegator: delegatorAddress, + lsmTokenIBCDenom: lsmTokenIBCDenom, + stakerBalance: stakeAmount, }, + sharesToTokensRateIfSlashed: sharesToTokensRateIfSlashed, validArgs: ValidatorICQCallbackArgs{ query: icqtypes.Query{ - ChainId: HostChainId, + ChainId: HostChainId, + CallbackData: callbackDataBz, + TimeoutTimestamp: uint64(s.Ctx.BlockTime().Add(time.Minute).UnixNano()), }, callbackArgs: queryResponse, }, - valIndexQueried: valIndexQueried, - valIndexInvalid: valIndexInvalid, - expectedExchangeRate: expectedExchangeRate, } } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_Successful() { - tc := s.SetupValidatorICQCallback() +// Helper function to check the validator's shares to tokens rate after the query +func (s *KeeperTestSuite) checkValidatorSharesToTokensRate(expectedSharesToTokensRate sdk.Dec, tc ValidatorICQCallbackTestCase) { + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone found") + s.Require().Equal(expectedSharesToTokensRate.String(), hostZone.Validators[0].SharesToTokensRate.String(), + "validator shares to tokens rate") +} - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) - s.Require().NoError(err, "validator exchange rate callback error") +// Check that the LSMLiquidStake callback succeeded by looking for a successful event emission +func (s *KeeperTestSuite) checkLSMLiquidStakeSuccess() { + s.CheckEventValueEmitted( + types.EventTypeLSMLiquidStakeRequest, + types.AttributeKeyTransactionStatus, + types.AttributeValueTransactionSucceeded, + ) +} - // Confirm validator's exchange rate was update - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.initialState.hostZone.ChainId) - s.Require().True(found, "host zone found") - s.Require().Equal(tc.expectedExchangeRate, hostZone.Validators[tc.valIndexQueried].InternalExchangeRate.InternalTokensToSharesRate, - "validator exchange rate updated") +// Check that the LSMLiquidStake callback failed by looking for a failed event emission +func (s *KeeperTestSuite) checkLSMLiquidStakeFailed() { + // Confirm failure was emitted + s.CheckEventValueEmitted( + types.EventTypeLSMLiquidStakeRequest, + types.AttributeKeyTransactionStatus, + types.AttributeValueTransactionFailed, + ) + // Confirm success was NOT emitted (to confirm short circuiting) + s.CheckEventValueNotEmitted( + types.EventTypeLSMLiquidStakeRequest, + types.AttributeKeyTransactionStatus, + types.AttributeValueTransactionSucceeded, + ) } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_HostZoneNotFound() { - tc := s.SetupValidatorICQCallback() +// Check that the liquid stake code was not called +func (s *KeeperTestSuite) checkLSMLiquidStakeNotCalled() { + s.CheckEventTypeNotEmitted(types.EventTypeLSMLiquidStakeRequest) +} - // Set an incorrect host zone in the query - badQuery := tc.validArgs.query - badQuery.ChainId = "fake_host_zone" +// Helper function to check that the delegator shares query was submitted by checking +// that the query object was stored +func (s *KeeperTestSuite) checkDelegatorSharesQuerySubmitted(liquidStakeCallback bool, tc ValidatorICQCallbackTestCase) { + // Check that this is only one query in the store + queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) + s.Require().Len(queries, 1, "there should be one new query submitted for delegator shares") + + // Confirm the query metadata matches expectations + query := queries[0] + s.Require().Equal(HostChainId, query.ChainId, "query chain-id") + s.Require().Equal(ibctesting.FirstConnectionID, query.ConnectionId, "query connnection-id") + s.Require().Equal(icqtypes.STAKING_STORE_QUERY_WITH_PROOF, query.QueryType, "query type") + s.Require().Equal(types.ModuleName, query.CallbackModule, "query callback module") + s.Require().Equal(keeper.ICQCallbackID_Delegation, query.CallbackId, "query callback-id") + s.Require().Equal(false, query.RequestSent, "query sent") + + // Confirm validator and delegator are in query data + _, validatorAddressBz, err := bech32.DecodeAndConvert(ValAddress) + s.Require().NoError(err, "no error expected when decoding validator address") + + _, delegatorAddressBz, err := bech32.DecodeAndConvert(tc.initialState.delegator) + s.Require().NoError(err, "no error expected when decoding delegation address") + + expectedQueryData := stakingtypes.GetDelegationKey(delegatorAddressBz, validatorAddressBz) + s.Require().Equal(expectedQueryData, query.RequestData, "query request-data") + + // Confirm timeout based on the type of query (LSM or manual) + timeoutDuration := time.Hour + expectedTimeout := s.Ctx.BlockTime().UnixNano() + (timeoutDuration).Nanoseconds() + s.Require().Equal(timeoutDuration, query.TimeoutDuration, "query timeout duration") + s.Require().Equal(expectedTimeout, int64(query.TimeoutTimestamp), "query timeout timestamp") + + // Confirm query callback data + var callbackData types.DelegatorSharesQueryCallback + err = proto.Unmarshal(query.CallbackData, &callbackData) + s.Require().NoError(err, "no error expected when unmarshalling callback data") + + expectedInitialDelegation := tc.initialState.validator.Delegation + s.Require().Equal(expectedInitialDelegation.Int64(), callbackData.InitialValidatorDelegation.Int64(), + "query callback-data initial delegation") + + // Confirm the validator's flagged as having a query in progress + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + s.Require().True(hostZone.Validators[0].SlashQueryInProgress, "slash query in progress") +} - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, badQuery) - s.Require().EqualError(err, "no registered zone for queried chain ID (fake_host_zone): host zone not found") +// Helper function to check that the delegator shares query was not submitted +// by confirming there are no queries in the store +func (s *KeeperTestSuite) checkDelegatorSharesQueryNotSubmitted() { + s.Require().Empty(s.App.InterchainqueryKeeper.AllQueries(s.Ctx), "the delegator shares query should not have been submitted") } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_InvalidCallbackArgs() { - tc := s.SetupValidatorICQCallback() +// Test case where the callback was successful, there was no slash, and this was not a liquid stake callback +// Here the sharesToTokens rate should not update and there should be no delegator shares query submitted +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_Successful_NoSlash_NoLiquidStake() { + validatorSlashed := false + lsmCallback := false + tc := s.SetupValidatorICQCallback(validatorSlashed, lsmCallback) - // Submit callback with invalid callback args (so that it can't unmarshal into a validator) - invalidArgs := []byte("random bytes") - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "validator sharesToTokens rate callback error") - expectedErrMsg := "unable to unmarshal query response into Validator type, " - expectedErrMsg += "err: unexpected EOF: unable to marshal data structure" - s.Require().EqualError(err, expectedErrMsg) + // Confirm validator's sharesToTokens rate DID NOT update + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) + + // Confirm the delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() + + // Confirm the liquid stake flow as not touched + s.checkLSMLiquidStakeNotCalled() } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_BufferWindowError() { - tc := s.SetupValidatorICQCallback() +// Test case where the callback was successful and there was a slash, but the query was issued manually +// Here the sharesToTokens rate should update and the delegator shares query should be submitted +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_Successful_Slash_NoLiquidStake() { + validatorSlashed := true + lsmCallback := false + tc := s.SetupValidatorICQCallback(validatorSlashed, lsmCallback) - // update epoch tracker so that we're in the middle of an epoch - epochTracker := tc.initialState.strideEpochTracker - epochTracker.Duration = 0 // duration of 0 will make the epoch start time equal to the epoch end time + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "validator sharesToTokens rate callback error") - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + // Confirm validator's sharesToTokens rate DID update + s.checkValidatorSharesToTokensRate(tc.sharesToTokensRateIfSlashed, tc) - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) - s.Require().ErrorContains(err, "unable to determine if ICQ callback is inside buffer window") - s.Require().ErrorContains(err, "current block time") - s.Require().ErrorContains(err, "not within current epoch") + // Confirm delegator shares query WAS submitted + s.checkDelegatorSharesQuerySubmitted(lsmCallback, tc) + + // Confirm the liquid stake flow as not touched + s.checkLSMLiquidStakeNotCalled() } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_OutsideBufferWindow() { - tc := s.SetupValidatorICQCallback() +// Test case where the callback was successful, there was no slash, and this query was from a liquid stake +// Here the sharesToTokens rate should not update, the delegator shares query should not be submitted, and +// the liquid stake should have succeeded +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_Successful_NoSlash_LiquidStake() { + validatorSlashed := false + lsmCallback := true + tc := s.SetupValidatorICQCallback(validatorSlashed, lsmCallback) - // update epoch tracker so that we're in the middle of an epoch - epochTracker := tc.initialState.strideEpochTracker - epochTracker.Duration = 10_000_000_000 // 10 second epochs - epochTracker.NextEpochStartTime = uint64(s.Coordinator.CurrentTime.UnixNano() + 5_000_000_000) // epoch ends in 5 second + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "validator sharesToTokens rate callback error") - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + // Confirm validator's sharesToTokens rate DID NOT update + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) - s.Require().ErrorContains(err, "callback is outside ICQ window") + // Confirm the delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() - // Confirm validator's exchange rate did not update - hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.initialState.hostZone.ChainId) - s.Require().True(found, "host zone found") + // Confirm the liquid stake was a success + s.checkLSMLiquidStakeSuccess() +} - initialExchangeRate := tc.initialState.hostZone.Validators[tc.valIndexQueried].InternalExchangeRate.InternalTokensToSharesRate - actualExchangeRate := hostZone.Validators[tc.valIndexQueried].InternalExchangeRate.InternalTokensToSharesRate - s.Require().Equal(actualExchangeRate, initialExchangeRate, "validator exchange rate should not have updated") +// Test case where the callback was successful and this query was from a liquid stake, +// but the finishing of the liquid stake failed +// Any state changes from the finish liquid stake should be discarded, including +// the transfer of LSM tokens to the deposit account +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_Successful_NoSlash_LiquidStakeFailed() { + validatorSlashed := false + lsmCallback := true + tc := s.SetupValidatorICQCallback(validatorSlashed, lsmCallback) + + // Remove the host zone's delegation account - this should cause the finishing of the LSM liquid stake to fail + var callbackData types.ValidatorSharesToTokensQueryCallback + err := proto.Unmarshal(tc.validArgs.query.CallbackData, &callbackData) + s.Require().NoError(err, "no error expected when unmarshaling query args") + + callbackData.LsmLiquidStake.HostZone.DelegationIcaAddress = "" + invalidCallbackData, err := proto.Marshal(&callbackData) + s.Require().NoError(err, "no error expected when marshaling query args") + + invalidQuery := tc.validArgs.query + invalidQuery.CallbackData = invalidCallbackData + + // When the callback runs, the finishing of the LSM liquid stake should make partial state changes, including + // the sending of LSM tokens to the module account + // However, that change should be discarded since the liquid stake failed + err = keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) + s.Require().NoError(err, "validator sharesToTokens rate callback error") + + // Confirm validator's sharesToTokens rate DID NOT update + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) + + // Confirm delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() + + // Confirm the liquid stake failed + // We'll check both that the failed event was emitted, and the success event was not emitted + // (to confirm short circuiting) + s.checkLSMLiquidStakeFailed() + + // Confirm the tokens were not sent to the module account since the state changes were discarded + stakerBalance := s.App.BankKeeper.GetBalance(s.Ctx, s.TestAccs[0], tc.initialState.lsmTokenIBCDenom) + s.Require().Equal(tc.initialState.stakerBalance.Int64(), stakerBalance.Amount.Int64(), + "staker balance after failed liquid stake") } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_ValidatorNotFound() { - tc := s.SetupValidatorICQCallback() +// Test case where the callback was successful, there was a slash, and this query was from a liquid stake +// Here the sharesToTokens rate should update, the delegator shares query should be submitted, +// and the liquid stake should be rejected +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_Successful_Slash_LiquidStake() { + validatorSlashed := true + lsmCallback := true + tc := s.SetupValidatorICQCallback(validatorSlashed, lsmCallback) - // Update the callback args to contain a validator address that doesn't exist - badCallbackArgs := s.CreateValidatorQueryResponse("fake_val", 1, 1) - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) - s.Require().EqualError(err, "no registered validator for address (fake_val): validator not found") + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "validator sharesToTokens rate callback error") + + // Confirm validator's sharesToTokens rate DID update + s.checkValidatorSharesToTokensRate(tc.sharesToTokensRateIfSlashed, tc) + + // Confirm delegator shares query WAS submitted + s.checkDelegatorSharesQuerySubmitted(lsmCallback, tc) + + // Confirm the liquid stake failed + s.checkLSMLiquidStakeFailed() +} + +// Test case where the callback was successful, but there was not previous sharesToTokens rate to determine if a slash occured +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_Successful_NoPreviousSharesToTokensRate() { + validatorSlashed := false + tc := s.SetupValidatorICQCallback(validatorSlashed, false) + + // The sharesToTokens rate should update to the initial sharesToTokens rate from the test setup + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + + // Set the sharesToTokens rate to zero + hostZone := tc.initialState.hostZone + hostZone.Validators[0].SharesToTokensRate = sdk.ZeroDec() + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "validator sharesToTokens rate callback error") + + // Confirm validator's sharesToTokens rate DID update + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) + + // Confirm delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() +} + +// Test case where the there was no slash, but the liquid stake callback failed +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_NoSlash_LiqudStakeFailed() { + validatorSlashed := false + lsmCallback := true + tc := s.SetupValidatorICQCallback(validatorSlashed, lsmCallback) + + // Remove the LSM tokens from the user account so that they have insufficient funds to finish the liquid stake + liquidStaker := s.TestAccs[0] + recipient := s.TestAccs[1] + balance := s.App.BankKeeper.GetBalance(s.Ctx, liquidStaker, tc.initialState.lsmTokenIBCDenom) + err := s.App.BankKeeper.SendCoins(s.Ctx, liquidStaker, recipient, sdk.NewCoins(balance)) + s.Require().NoError(err, "no error expected when sending liquid staker's LSM tokens") + + // Now when we call the callback, the callback itself should succeed, but the finishing of the liquid stake should fail + err = keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().NoError(err, "validator sharesToTokens rate callback error") + + // Confirm validator's sharesToTokens rate DID update + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) + + // Confirm delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() + + // Confirm the liquid stake failed + s.checkLSMLiquidStakeFailed() +} + +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_NoLiquidStake_QueryTimeout() { + lsmCallback := false + tc := s.SetupValidatorICQCallback(false, lsmCallback) + + // Update the query so that it timed out + badQuery := tc.validArgs.query + badQuery.TimeoutTimestamp = 0 + + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, badQuery) + s.Require().NoError(err, "validator shares to tokens rate callback error") + + // Confirm validator's shares to tokens rate DID NOT update + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) + + // Confirm delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_InvalidValidatorAddress() { - tc := s.SetupValidatorICQCallback() +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_LiquidStake_QueryTimeout() { + lsmCallback := true + tc := s.SetupValidatorICQCallback(false, lsmCallback) + + // Update the query so that it timed out + badQuery := tc.validArgs.query + badQuery.TimeoutTimestamp = 0 + + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, badQuery) + s.Require().NoError(err, "validator shares to tokens rate callback error") + + // Confirm validator's shares to tokens rate DID NOT update + expectedSharesToTokensRate := tc.initialState.validator.SharesToTokensRate + s.checkValidatorSharesToTokensRate(expectedSharesToTokensRate, tc) - // Update callback arsg to contain a validator address that does exist, but is invalid - invalidAddress := tc.initialState.hostZone.Validators[tc.valIndexInvalid].Address - badCallbackArgs := s.CreateValidatorQueryResponse(invalidAddress, 1, 1) - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) - s.Require().ErrorContains(err, "Failed to query delegations, err: invalid validator address, could not decode") + // Confirm delegator shares query WAS NOT submitted + s.checkDelegatorSharesQueryNotSubmitted() + + // Confirm the liquid stake failed + s.checkLSMLiquidStakeFailed() } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_DelegatorSharesZero() { - tc := s.SetupValidatorICQCallback() +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_HostZoneNotFound() { + tc := s.SetupValidatorICQCallback(false, false) + + // Set an incorrect host zone in the query + badQuery := tc.validArgs.query + badQuery.ChainId = "fake_host_zone" + + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, badQuery) + s.Require().EqualError(err, "no registered zone for queried chain ID (fake_host_zone): host zone not found") +} + +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_InvalidCallbackArgs() { + tc := s.SetupValidatorICQCallback(false, false) + + // Submit callback with invalid callback args (so that it can't unmarshal into a validator) + invalidArgs := []byte("random bytes") + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) + s.Require().ErrorContains(err, "unable to unmarshal query response into Validator type") +} + +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_InvalidCallbackData() { + tc := s.SetupValidatorICQCallback(false, false) + + // Submit callback with invalid callback args (so that it can't unmarshal into a validator) + invalidQuery := tc.validArgs.query + invalidQuery.CallbackData = []byte("random bytes") + + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) + s.Require().ErrorContains(err, "unable to unmarshal validator sharesToTokens rate callback data") +} + +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_ValidatorNotFound() { + tc := s.SetupValidatorICQCallback(false, false) + + // Update the callback args to contain a validator address that doesn't exist + badCallbackArgs := s.CreateValidatorQueryResponse("fake_val", 1, 1) + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) + s.Require().EqualError(err, "no registered validator for address (fake_val): validator not found") +} + +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_DelegatorSharesZero() { + tc := s.SetupValidatorICQCallback(false, false) // Set the delegator shares to 0, which cause division by zero in `validator.TokensFromShares` - valAddress := tc.initialState.hostZone.Validators[tc.valIndexQueried].Address + valAddress := tc.initialState.validator.Address badCallbackArgs := s.CreateValidatorQueryResponse(valAddress, 1000, 0) // the 1000 is arbitrary, the zero here is what matters - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, badCallbackArgs, tc.validArgs.query) - expectedErrMsg := "can't calculate validator internal exchange rate because delegation amount is 0 " + expectedErrMsg := "can't calculate validator internal sharesToTokens rate because delegation amount is 0 " expectedErrMsg += fmt.Sprintf("(validator: %s): division by zero", valAddress) s.Require().EqualError(err, expectedErrMsg) } -func (s *KeeperTestSuite) TestValidatorExchangeRateCallback_DelegationQueryFailed() { - tc := s.SetupValidatorICQCallback() +func (s *KeeperTestSuite) TestValidatorSharesToTokensRateCallback_DelegationQueryFailed() { + tc := s.SetupValidatorICQCallback(true, false) // Remove host zone delegation address so delegation query fails badHostZone := tc.initialState.hostZone - badHostZone.DelegationAccount = nil + badHostZone.DelegationIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.ValidatorExchangeRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) - - expectedErr := "Failed to query delegations, err: no delegation address found for GAIA: " - expectedErr += "ICA acccount not found on host zone: failed to submit ICQ" - s.Require().EqualError(err, expectedErr) + err := keeper.ValidatorSharesToTokensRateCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + s.Require().ErrorContains(err, "Failed to submit ICQ validator delegations") } diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go index c4d6224d05..a3926de0f3 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go @@ -47,21 +47,18 @@ func WithdrawalBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icq // Confirm the balance is greater than zero if withdrawalBalanceAmount.LTE(sdkmath.ZeroInt()) { k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_WithdrawalBalance, - "No balance to transfer for address: %v, balance: %v", hostZone.WithdrawalAccount.GetAddress(), withdrawalBalanceAmount)) + "No balance to transfer for address: %s, balance: %v", hostZone.WithdrawalIcaAddress, withdrawalBalanceAmount)) return nil } // Get the host zone's ICA accounts - withdrawalAccount := hostZone.WithdrawalAccount - if withdrawalAccount == nil || withdrawalAccount.Address == "" { + if hostZone.WithdrawalIcaAddress == "" { return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no withdrawal account found for %s", chainId) } - delegationAccount := hostZone.DelegationAccount - if delegationAccount == nil || delegationAccount.Address == "" { + if hostZone.DelegationIcaAddress == "" { return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", chainId) } - feeAccount := hostZone.FeeAccount - if feeAccount == nil || feeAccount.Address == "" { + if hostZone.FeeIcaAddress == "" { return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no fee account found for %s", chainId) } @@ -95,8 +92,8 @@ func WithdrawalBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icq var msgs []proto.Message if feeCoin.Amount.GT(sdk.ZeroInt()) { msgs = append(msgs, &banktypes.MsgSend{ - FromAddress: withdrawalAccount.Address, - ToAddress: feeAccount.Address, + FromAddress: hostZone.WithdrawalIcaAddress, + ToAddress: hostZone.FeeIcaAddress, Amount: sdk.NewCoins(feeCoin), }) k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_WithdrawalBalance, @@ -104,8 +101,8 @@ func WithdrawalBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icq } if reinvestCoin.Amount.GT(sdk.ZeroInt()) { msgs = append(msgs, &banktypes.MsgSend{ - FromAddress: withdrawalAccount.Address, - ToAddress: delegationAccount.Address, + FromAddress: hostZone.WithdrawalIcaAddress, + ToAddress: hostZone.DelegationIcaAddress, Amount: sdk.NewCoins(reinvestCoin), }) k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_WithdrawalBalance, @@ -124,7 +121,7 @@ func WithdrawalBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icq } // Send the transaction through SubmitTx - _, err = k.SubmitTxsStrideEpoch(ctx, hostZone.ConnectionId, msgs, *withdrawalAccount, ICACallbackID_Reinvest, marshalledCallbackArgs) + _, err = k.SubmitTxsStrideEpoch(ctx, hostZone.ConnectionId, msgs, types.ICAAccountType_WITHDRAWAL, ICACallbackID_Reinvest, marshalledCallbackArgs) if err != nil { return errorsmod.Wrapf(types.ErrICATxFailed, "Failed to SubmitTxs, Messages: %v, err: %s", msgs, err.Error()) } diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go index 2841db4a94..1b80de3898 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go @@ -7,17 +7,15 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type WithdrawalBalanceICQCallbackState struct { - hostZone stakeibctypes.HostZone + hostZone types.HostZone withdrawalChannel Channel withdrawalBalance int64 } @@ -47,30 +45,21 @@ func (s *KeeperTestSuite) SetupWithdrawalBalanceCallbackTest() WithdrawalBalance delegationAddress := s.IcaAddresses[delegationAccountOwner] withdrawalAccountOwner := fmt.Sprintf("%s.%s", HostChainId, "WITHDRAWAL") - withdrawalChannelId := s.CreateICAChannel(withdrawalAccountOwner) + withdrawalChannelId, withdrawalPortId := s.CreateICAChannel(withdrawalAccountOwner) withdrawalAddress := s.IcaAddresses[withdrawalAccountOwner] feeAddress := "cosmos_FEE" - hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - HostDenom: Atom, - ConnectionId: ibctesting.FirstConnectionID, - DelegationAccount: &stakeibctypes.ICAAccount{ - Address: delegationAddress, - Target: stakeibctypes.ICAAccountType_DELEGATION, - }, - WithdrawalAccount: &stakeibctypes.ICAAccount{ - Address: withdrawalAddress, - Target: stakeibctypes.ICAAccountType_WITHDRAWAL, - }, - FeeAccount: &stakeibctypes.ICAAccount{ - Address: feeAddress, - Target: stakeibctypes.ICAAccountType_FEE, - }, + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + ConnectionId: ibctesting.FirstConnectionID, + DelegationIcaAddress: delegationAddress, + WithdrawalIcaAddress: withdrawalAddress, + FeeIcaAddress: feeAddress, } - strideEpochTracker := stakeibctypes.EpochTracker{ + strideEpochTracker := types.EpochTracker{ EpochIdentifier: epochtypes.STRIDE_EPOCH, EpochNumber: 1, NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts @@ -92,7 +81,7 @@ func (s *KeeperTestSuite) SetupWithdrawalBalanceCallbackTest() WithdrawalBalance initialState: WithdrawalBalanceICQCallbackState{ hostZone: hostZone, withdrawalChannel: Channel{ - PortID: icatypes.ControllerPortPrefix + withdrawalAccountOwner, + PortID: withdrawalPortId, ChannelID: withdrawalChannelId, }, withdrawalBalance: withdrawalBalance, @@ -120,7 +109,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_Successful() { s.Require().True(found, "sequence number not found before reinvestment") // Call the ICQ callback - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm ICA reinvestment callback data was stored @@ -148,7 +137,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_EmptyCallbackArgs() { // Replace the query response an empty byte array (this happens when the account has not been registered yet) emptyCallbackArgs := []byte{} - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, emptyCallbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, emptyCallbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm revinvestment callback was not created @@ -161,7 +150,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_ZeroBalance() { // Replace the query response with a coin that has a nil amount tc.validArgs.callbackArgs = s.CreateBalanceQueryResponse(0, Atom) - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm revinvestment callback was not created @@ -176,7 +165,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_ZeroBalanceImplied() { coinBz := s.App.RecordsKeeper.Cdc.MustMarshal(&coin) tc.validArgs.callbackArgs = coinBz - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().NoError(err) // Confirm revinvestment callback was not created @@ -189,7 +178,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_HostZoneNotFound() { // Submit callback with incorrect host zone invalidQuery := tc.validArgs.query invalidQuery.ChainId = "fake_host_zone" - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, invalidQuery) s.Require().EqualError(err, "no registered zone for queried chain ID (fake_host_zone): host zone not found") } @@ -198,7 +187,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_InvalidArgs() { // Submit callback with invalid callback args (so that it can't unmarshal into a coin) invalidArgs := []byte("random bytes") - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, invalidArgs, tc.validArgs.query) s.Require().ErrorContains(err, "unable to determine balance from query response") } @@ -208,10 +197,10 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_NoWithdrawalAccount() { // Remove the withdrawal account badHostZone := tc.initialState.hostZone - badHostZone.WithdrawalAccount = nil + badHostZone.WithdrawalIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().EqualError(err, "no withdrawal account found for GAIA: ICA acccount not found on host zone") } @@ -220,10 +209,10 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_NoDelegationAccount() { // Remove the delegation account badHostZone := tc.initialState.hostZone - badHostZone.DelegationAccount = nil + badHostZone.DelegationIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().EqualError(err, "no delegation account found for GAIA: ICA acccount not found on host zone") } @@ -232,10 +221,10 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_NoFeeAccount() { // Remove the fee account badHostZone := tc.initialState.hostZone - badHostZone.FeeAccount = nil + badHostZone.FeeIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().EqualError(err, "no fee account found for GAIA: ICA acccount not found on host zone") } @@ -247,7 +236,7 @@ func (s *KeeperTestSuite) TestWithdrawalBalanceCallback_FailedSubmitTx() { badHostZone.ConnectionId = "connection-X" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) - err := stakeibckeeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) + err := keeper.WithdrawalBalanceCallback(s.App.StakeibcKeeper, s.Ctx, tc.validArgs.callbackArgs, tc.validArgs.query) s.Require().ErrorContains(err, "Failed to SubmitTxs") s.Require().ErrorContains(err, "invalid connection id, connection-X not found") } diff --git a/x/stakeibc/keeper/invariants.go b/x/stakeibc/keeper/invariants.go index 608ba9262a..8477fdb37a 100644 --- a/x/stakeibc/keeper/invariants.go +++ b/x/stakeibc/keeper/invariants.go @@ -4,6 +4,8 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" + + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" ) // RegisterInvariants registers all governance invariants. @@ -18,3 +20,19 @@ func AllInvariants(k Keeper) sdk.Invariant { return "", false } } + +// TODO: Consider removing stride and day epochs completely and using a single hourly epoch +// Confirm the number of stride epochs in 1 day epoch +func (k Keeper) AssertStrideAndDayEpochRelationship(ctx sdk.Context) { + strideEpoch, found := k.GetEpochTracker(ctx, epochtypes.STRIDE_EPOCH) + if !found || strideEpoch.Duration == 0 { + return + } + dayEpoch, found := k.GetEpochTracker(ctx, epochtypes.DAY_EPOCH) + if !found || dayEpoch.Duration == 0 { + return + } + if dayEpoch.Duration/strideEpoch.Duration != StrideEpochsPerDayEpoch { + panic("The stride epoch must be 1/4th the length of the day epoch") + } +} diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index 789a48bc60..d84f1f2575 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -277,35 +277,3 @@ func (k Keeper) IsRedemptionRateWithinSafetyBounds(ctx sdk.Context, zone types.H } return true, nil } - -// Check the max number of validators to confirm we won't exceed it when adding a new validator -// Types of additions: -// - change a weight from zero to non-zero -// - add a new validator with non-zero weight -func (k Keeper) ConfirmValSetHasSpace(ctx sdk.Context, validators []*types.Validator) error { - - // get max val parameter - maxNumVals, err := cast.ToIntE(k.GetParam(ctx, types.KeySafetyNumValidators)) - if err != nil { - errMsg := fmt.Sprintf("Error getting safety max num validators | err: %s", err.Error()) - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrap(types.ErrMaxNumValidators, errMsg) - } - - // count up the number of validators with non-zero weights - numNonzeroWgtValidators := 0 - for _, validator := range validators { - if validator.Weight > 0 { - numNonzeroWgtValidators++ - } - } - - // check if the number of validators with non-zero weights is below than the max - if numNonzeroWgtValidators >= maxNumVals { - errMsg := fmt.Sprintf("Attempting to add new validator but already reached max number of validators (%d)", maxNumVals) - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrap(types.ErrMaxNumValidators, errMsg) - } - - return nil -} diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index 431d23b3b9..bd0aca1de0 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -24,6 +24,10 @@ const ( IbcOsmo = "ibc/uosmo" OsmoPrefix = "osmo" OsmoChainId = "OSMO" + + ValAddress = "cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p" + DelegationICAAddress = "cosmos1gcx4yeplccq9nk6awzmm0gq8jf7yet80qj70tkwy0mz7pg87nepswn2dj8" + LSMTokenBaseDenom = ValAddress + "/32" ) type KeeperTestSuite struct { diff --git a/x/stakeibc/keeper/lsm.go b/x/stakeibc/keeper/lsm.go new file mode 100644 index 0000000000..367a9136bc --- /dev/null +++ b/x/stakeibc/keeper/lsm.go @@ -0,0 +1,371 @@ +package keeper + +import ( + "fmt" + "regexp" + "strings" + "time" + + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + "github.com/cometbft/cometbft/crypto" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/gogoproto/proto" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +var ( + // A valid IBC path for the LSM token must only consist of 1 channel hop along a transfer channel + // (e.g. "transfer/channel-0") + IsValidIBCPath = regexp.MustCompile(fmt.Sprintf(`^%s/(%s[0-9]{1,20})$`, transfertypes.PortID, channeltypes.ChannelPrefix)).MatchString + + // Timeout for the validator slash query that occurs at periodic deposit intervals + LSMSlashQueryTimeout = time.Minute * 5 // 5 minutes + + // Time for the detokenization ICA + DetokenizationTimeout = time.Hour * 24 // 1 day +) + +// Validates the parameters supplied with this LSMLiquidStake, including that the denom +// corresponds with a valid LSM Token and that the user has sufficient balance +// +// This is called once at the beginning of the liquid stake, and is, potentially, called +// again at the end (if the transaction was asynchronous due to an intermediate slash query) +// +// This function returns the associated host zone and validator along with the initial deposit record +func (k Keeper) ValidateLSMLiquidStake(ctx sdk.Context, msg types.MsgLSMLiquidStake) (types.LSMLiquidStake, error) { + // Get the denom trace from the IBC hash - this includes the full path and base denom + // Ex: LSMTokenIbcDenom of `ibc/XXX` might create a DenomTrace with: + // BaseDenom: cosmosvaloperXXX/42, Path: transfer/channel-0 + denomTrace, err := k.GetLSMTokenDenomTrace(ctx, msg.LsmTokenIbcDenom) + if err != nil { + return types.LSMLiquidStake{}, err + } + + // Get the host zone and validator address from the path and base denom respectively + lsmTokenBaseDenom := denomTrace.BaseDenom + hostZone, err := k.GetHostZoneFromLSMTokenPath(ctx, denomTrace.Path) + if err != nil { + return types.LSMLiquidStake{}, err + } + validator, err := k.GetValidatorFromLSMTokenDenom(lsmTokenBaseDenom, hostZone.Validators) + if err != nil { + return types.LSMLiquidStake{}, err + } + + // Confirm the staker has a sufficient balance to execute the liquid stake + liquidStakerAddress := sdk.MustAccAddressFromBech32(msg.Creator) + balance := k.bankKeeper.GetBalance(ctx, liquidStakerAddress, msg.LsmTokenIbcDenom).Amount + if balance.LT(msg.Amount) { + return types.LSMLiquidStake{}, errorsmod.Wrapf(sdkerrors.ErrInsufficientFunds, + "balance is lower than staking amount. staking amount: %v, balance: %v", msg.Amount, balance) + } + + // Build the LSMTokenDeposit record + // The stToken will be added outside of this function + depositId := GetLSMTokenDepositId(ctx.BlockHeight(), hostZone.ChainId, msg.Creator, lsmTokenBaseDenom) + lsmTokenDeposit := recordstypes.LSMTokenDeposit{ + DepositId: depositId, + ChainId: hostZone.ChainId, + Denom: lsmTokenBaseDenom, + IbcDenom: msg.LsmTokenIbcDenom, + StakerAddress: msg.Creator, + ValidatorAddress: validator.Address, + Amount: msg.Amount, + Status: recordstypes.LSMTokenDeposit_DEPOSIT_PENDING, + } + + // Return the wrapped deposit object with additional context (host zone and validator) + return types.LSMLiquidStake{ + Deposit: &lsmTokenDeposit, + HostZone: &hostZone, + Validator: &validator, + }, nil +} + +// Generates a unique ID for the LSM token deposit so that, if a slash query is issued, +// the query callback can be joined back with this tx +// The key in the store for an LSMTokenDeposit is chainId + denom (meaning, there +// can only be 1 LSMLiquidStake in progress per tokenization) +func GetLSMTokenDepositId(blockHeight int64, chainId, stakerAddress, denom string) string { + id := fmt.Sprintf("%d-%s-%s-%s", blockHeight, chainId, stakerAddress, denom) + return fmt.Sprintf("%x", crypto.Sha256([]byte(id))) +} + +// Parse the LSM Token's IBC denom hash into a DenomTrace object that contains the path and base denom +func (k Keeper) GetLSMTokenDenomTrace(ctx sdk.Context, denom string) (transfertypes.DenomTrace, error) { + ibcPrefix := transfertypes.DenomPrefix + "/" + + // Confirm the LSM Token is a valid IBC token (has "ibc/" prefix) + if !strings.HasPrefix(denom, ibcPrefix) { + return transfertypes.DenomTrace{}, errorsmod.Wrapf(types.ErrInvalidLSMToken, "lsm token is not an IBC token (%s)", denom) + } + + // Parse the hash string after the "ibc/" prefix into hex bytes + hexHash := denom[len(ibcPrefix):] + hash, err := transfertypes.ParseHexHash(hexHash) + if err != nil { + return transfertypes.DenomTrace{}, errorsmod.Wrapf(err, "unable to get ibc hex hash from denom %s", denom) + } + + // Lookup the trace from the hash + denomTrace, found := k.RecordsKeeper.TransferKeeper.GetDenomTrace(ctx, hash) + if !found { + return transfertypes.DenomTrace{}, errorsmod.Wrapf(types.ErrInvalidLSMToken, "denom trace not found for %s", denom) + } + + return denomTrace, nil +} + +// Parses the LSM token's IBC path (e.g. transfer/channel-0) and confirms the channel ID matches +// the transfer channel of a supported host zone +func (k Keeper) GetHostZoneFromLSMTokenPath(ctx sdk.Context, path string) (types.HostZone, error) { + // Validate path regex which confirms the token originated only one hop away (e.g. transfer/channel-0) + if !IsValidIBCPath(path) { + return types.HostZone{}, errorsmod.Wrapf(types.ErrInvalidLSMToken, + "ibc path of LSM token (%s) cannot be more than 1 hop away", path) + } + + // Remove the "transfer/" prefix + channelId := strings.ReplaceAll(path, transfertypes.PortID+"/", "") + + // Confirm the channel is from one of Stride's supported host zones + for _, hostZone := range k.GetAllHostZone(ctx) { + if hostZone.TransferChannelId == channelId { + if !hostZone.LsmLiquidStakeEnabled { + return hostZone, types.ErrLSMLiquidStakeDisabledForHostZone.Wrapf( + "LSM liquid stake disabled for %s", hostZone.ChainId) + } + return hostZone, nil + } + } + + return types.HostZone{}, errorsmod.Wrapf(types.ErrInvalidLSMToken, + "transfer channel-id from LSM token (%s) does not match any registered host zone", channelId) +} + +// Parses the LSM token's denom (of the form {validatorAddress}/{recordId}) and confirms that the validator +// is in the Stride validator set and does not have an active slash query +func (k Keeper) GetValidatorFromLSMTokenDenom(denom string, validators []*types.Validator) (types.Validator, error) { + // Denom is of the form {validatorAddress}/{recordId} + split := strings.Split(denom, "/") + if len(split) != 2 { + return types.Validator{}, errorsmod.Wrapf(types.ErrInvalidLSMToken, + "lsm token base denom is not of the format {val-address}/{record-id} (%s)", denom) + } + validatorAddress := split[0] + + // Confirm the validator: + // 1. Is registered on Stride + // 2. Does not have an active slash query in flight + // 3. Has a known sharesToTokens rate + for _, validator := range validators { + if validator.Address == validatorAddress { + if validator.SlashQueryInProgress { + return types.Validator{}, errorsmod.Wrapf(types.ErrValidatorWasSlashed, + "validator %s was slashed, liquid stakes from this validator are temporarily unavailable", validator.Address) + } + if validator.SharesToTokensRate.IsNil() || validator.SharesToTokensRate.IsZero() { + return types.Validator{}, errorsmod.Wrapf(types.ErrValidatorSharesToTokensRateNotKnown, + "validator %s sharesToTokens rate is not known", validator.Address) + } + return *validator, nil + } + } + + return types.Validator{}, errorsmod.Wrapf(types.ErrInvalidLSMToken, + "validator (%s) is not registered in the Stride validator set", validatorAddress) +} + +// Given an LSMToken representing a number of delegator shares, returns the stToken coin +// using the validator's sharesToTokens rate and the host zone redemption rate +// +// StTokens = LSMTokenShares * Validator SharesToTokens Rate / Redemption Rate +// +// Note: in the event of a slash query, these tokens will be minted only if the +// validator's sharesToTokens rate did not change +func (k Keeper) CalculateLSMStToken(liquidStakedShares sdkmath.Int, lsmLiquidStake types.LSMLiquidStake) sdk.Coin { + hostZone := lsmLiquidStake.HostZone + validator := lsmLiquidStake.Validator + + liquidStakedTokens := sdk.NewDecFromInt(liquidStakedShares).Mul(validator.SharesToTokensRate) + stAmount := (liquidStakedTokens.Quo(hostZone.RedemptionRate)).TruncateInt() + + stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) + stCoin := sdk.NewCoin(stDenom, stAmount) + + return stCoin +} + +// Determines the new slash query checkpoint, by mulitplying the query threshold percent by the current TVL +func (k Keeper) GetUpdatedSlashQueryCheckpoint(ctx sdk.Context, totalDelegations sdkmath.Int) sdkmath.Int { + params := k.GetParams(ctx) + queryThreshold := sdk.NewDecWithPrec(int64(params.ValidatorSlashQueryThreshold), 2) // percentage + checkpoint := queryThreshold.Mul(sdk.NewDecFromInt(totalDelegations)).TruncateInt() + return checkpoint +} + +// Checks if we need to issue an ICQ to check if a validator was slashed +// The query runs at periodic intervals defined by the ValidatorSlashQueryInterval +// The interval is represented as percent of TVL +// (e.g. 1% means every LS that causes the progress to breach 1% of TVL triggers the query) +func (k Keeper) ShouldCheckIfValidatorWasSlashed( + ctx sdk.Context, + validator types.Validator, + transactionStakeAmount sdkmath.Int, +) bool { + // If the checkpoint is zero - that means either the threshold parameter is 0 + // (which should not be possible), or that the total host zone stake is 0 + // In either case, do not submit the query + if validator.SlashQueryCheckpoint.IsZero() { + return false + } + + oldInterval := validator.SlashQueryProgressTracker.Quo(validator.SlashQueryCheckpoint) + newInterval := validator.SlashQueryProgressTracker.Add(transactionStakeAmount).Quo(validator.SlashQueryCheckpoint) + + // Submit query if the query interval checkpoint has been breached + // Ex: Query Threshold: 1%, TVL: 100k => 1k Checkpoint + // Old Progress Tracker: 900, Old Interval: 900 / 1000 => Interval 0, + // Stake: 200, New Progress Tracker: 1100, New Interval: 1100 / 1000 = 1.1 = 1 + // => OldInterval: 0, NewInterval: 1 => Issue Slash Query + return oldInterval.LT(newInterval) +} + +// Loops through all active host zones, grabs queued LSMTokenDeposits for that host +// that are in status TRANSFER_QUEUE, and submits the IBC Transfer to the host +func (k Keeper) TransferAllLSMDeposits(ctx sdk.Context) { + for _, hostZone := range k.GetAllActiveHostZone(ctx) { + // Ignore hosts that have not been successfully registered + if hostZone.DelegationIcaAddress == "" { + continue + } + + // Submit an IBC transfer for all queued deposits + queuedDeposits := k.RecordsKeeper.GetLSMDepositsForHostZoneWithStatus( + ctx, + hostZone.ChainId, + recordstypes.LSMTokenDeposit_TRANSFER_QUEUE, + ) + for _, deposit := range queuedDeposits { + + // If the IBC transfer fails to get off the ground, flag the deposit as FAILED + // This is highly unlikely and would indicate a larger problem + if err := k.RecordsKeeper.IBCTransferLSMToken( + ctx, + deposit, + hostZone.TransferChannelId, + hostZone.DepositAddress, + hostZone.DelegationIcaAddress, + ); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to submit IBC Transfer of LSMToken for %v%s on %s: %s", + deposit.Amount, deposit.Denom, hostZone.ChainId, err.Error())) + k.RecordsKeeper.UpdateLSMTokenDepositStatus(ctx, deposit, recordstypes.LSMTokenDeposit_TRANSFER_FAILED) + continue + } + k.Logger(ctx).Info(fmt.Sprintf("Submitted IBC Transfer for LSM deposit %v%s on %s", + deposit.Amount, deposit.Denom, hostZone.ChainId)) + + k.RecordsKeeper.UpdateLSMTokenDepositStatus(ctx, deposit, recordstypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS) + } + } +} + +// Submits an ICA to "Redeem" an LSM Token - meaning converting the token into native stake +// This function is called in the EndBlocker which means if the ICA submission fails, +// any modified state is not reverted +// +// The deposit Status is intentionally updated before the ICA is submitted even though it will NOT be reverted +// if the ICA fails to send. This is because a failure is likely caused by a closed ICA channel, and the status +// update will prevent the ICA from being continuously re-submitted. When the ICA channel is restored, the +// deposit status will get reset, and the ICA will be attempted again. +func (k Keeper) DetokenizeLSMDeposit(ctx sdk.Context, hostZone types.HostZone, deposit recordstypes.LSMTokenDeposit) error { + // Get the delegation account (which owns the LSM token) + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", hostZone.ChainId) + } + + // Build the detokenization ICA message + token := sdk.NewCoin(deposit.Denom, deposit.Amount) + detokenizeMsg := []proto.Message{&types.MsgRedeemTokensForShares{ + DelegatorAddress: hostZone.DelegationIcaAddress, + Amount: token, + }} + + // Store the LSMTokenDeposit for the callback + callbackArgs := types.DetokenizeSharesCallback{ + Deposit: &deposit, + } + callbackArgsBz, err := proto.Marshal(&callbackArgs) + if err != nil { + return err + } + + // Submit the ICA with a coonservative timeout + timeout := uint64(ctx.BlockTime().UnixNano() + (DetokenizationTimeout).Nanoseconds()) + if _, err := k.SubmitTxs( + ctx, + hostZone.ConnectionId, + detokenizeMsg, + types.ICAAccountType_DELEGATION, + timeout, + ICACallbackID_Detokenize, + callbackArgsBz, + ); err != nil { + return errorsmod.Wrapf(err, "unable to submit detokenization ICA for %s", deposit.Denom) + } + + // Mark the deposit as IN_PROGRESS + k.RecordsKeeper.UpdateLSMTokenDepositStatus(ctx, deposit, recordstypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS) + + // Update the validator to say that it has a delegation change in progress + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, deposit.ValidatorAddress); err != nil { + return err + } + k.SetHostZone(ctx, hostZone) + + return nil +} + +// Loops through all active host zones, grabs the queued LSMTokenDeposits for that host +// that are in status DETOKENIZATION_QUEUE, and submits the detokenization ICA for each +func (k Keeper) DetokenizeAllLSMDeposits(ctx sdk.Context) { + // Submit detokenization ICAs for each active host zone + for _, hostZone := range k.GetAllActiveHostZone(ctx) { + // Get the host zone's delegation ICA portID + delegationICAOwner := types.FormatICAAccountOwner(hostZone.ChainId, types.ICAAccountType_DELEGATION) + delegationICAPortID, err := icatypes.NewControllerPortID(delegationICAOwner) + if err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to get delegation port ID for %s: %s", hostZone.ChainId, err)) + continue + } + + // If the delegation channel is not open, skip this host zone + _, isOpen := k.ICAControllerKeeper.GetOpenActiveChannel(ctx, hostZone.ConnectionId, delegationICAPortID) + if !isOpen { + k.Logger(ctx).Error(fmt.Sprintf("Skipping detokenization ICAs for %s - Delegation ICA channel is closed", hostZone.ChainId)) + continue + } + + // If the delegation channel is open, submit the detokenize ICA + queuedDeposits := k.RecordsKeeper.GetLSMDepositsForHostZoneWithStatus( + ctx, + hostZone.ChainId, + recordstypes.LSMTokenDeposit_DETOKENIZATION_QUEUE, + ) + for _, deposit := range queuedDeposits { + if err := k.DetokenizeLSMDeposit(ctx, hostZone, deposit); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to submit detokenization ICAs for %v%s on %s: %s", + deposit.Amount, deposit.Denom, hostZone.ChainId, err.Error())) + continue + } + k.Logger(ctx).Info(fmt.Sprintf("Submitted detokenization ICA for deposit %v%s on %s", deposit.Amount, deposit.Denom, hostZone.ChainId)) + } + } +} diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go new file mode 100644 index 0000000000..0550ada5a0 --- /dev/null +++ b/x/stakeibc/keeper/lsm_test.go @@ -0,0 +1,714 @@ +package keeper_test + +import ( + "fmt" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + + "github.com/gogo/protobuf/proto" //nolint:staticcheck +) + +func (s *KeeperTestSuite) TestValidateLSMLiquidStake() { + // Create and store a valid denom trace so we can succesfully parse the LSM Token + path := "transfer/channel-0" + ibcDenom := s.CreateAndStoreIBCDenom(LSMTokenBaseDenom) + + // Store a second valid denom trace that will not be registered with the host zone + invalidPath := "transfer/channel-100" + s.App.TransferKeeper.SetDenomTrace(s.Ctx, transfertypes.DenomTrace{ + BaseDenom: LSMTokenBaseDenom, + Path: invalidPath, + }) + + // Store the corresponding validator in the host zone + hostZone := types.HostZone{ + ChainId: HostChainId, + TransferChannelId: ibctesting.FirstChannelID, + Validators: []*types.Validator{ + {Address: ValAddress, SlashQueryInProgress: false, SharesToTokensRate: sdk.OneDec()}, + }, + LsmLiquidStakeEnabled: true, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Fund the user so they have sufficient balance + liquidStaker := s.TestAccs[0] + stakeAmount := sdk.NewInt(1_000_000) + s.FundAccount(liquidStaker, sdk.NewCoin(ibcDenom, stakeAmount)) + + // Prepare a valid message and the expected associated response + validMsg := types.MsgLSMLiquidStake{ + Creator: liquidStaker.String(), + Amount: stakeAmount, + LsmTokenIbcDenom: ibcDenom, + } + expectedDepositId := keeper.GetLSMTokenDepositId(s.Ctx.BlockHeight(), HostChainId, liquidStaker.String(), LSMTokenBaseDenom) + expectedLSMTokenDeposit := recordstypes.LSMTokenDeposit{ + DepositId: expectedDepositId, + ChainId: HostChainId, + Denom: LSMTokenBaseDenom, + IbcDenom: ibcDenom, + StakerAddress: liquidStaker.String(), + ValidatorAddress: ValAddress, + Amount: stakeAmount, + Status: recordstypes.LSMTokenDeposit_DEPOSIT_PENDING, + } + + // Confirm response matches after a valid message + lsmLiquidStake, err := s.App.StakeibcKeeper.ValidateLSMLiquidStake(s.Ctx, validMsg) + s.Require().NoError(err, "no error expected when validating valid message") + + s.Require().Equal(HostChainId, lsmLiquidStake.HostZone.ChainId, "host zone after valid message") + s.Require().Equal(ValAddress, lsmLiquidStake.Validator.Address, "validator after valid message") + s.Require().Equal(expectedLSMTokenDeposit, *lsmLiquidStake.Deposit, "deposit after valid message") + + // Try with an ibc denom that's not registered - it should fail + invalidMsg := validMsg + invalidMsg.LsmTokenIbcDenom = transfertypes.ParseDenomTrace(fmt.Sprintf("%s/%s", path, "fake_denom")).IBCDenom() + _, err = s.App.StakeibcKeeper.ValidateLSMLiquidStake(s.Ctx, invalidMsg) + s.Require().ErrorContains(err, fmt.Sprintf("denom trace not found for %s", invalidMsg.LsmTokenIbcDenom)) + + // Try with a user that has insufficient balance - it should fail + invalidMsg = validMsg + invalidMsg.Creator = s.TestAccs[1].String() + _, err = s.App.StakeibcKeeper.ValidateLSMLiquidStake(s.Ctx, invalidMsg) + s.Require().ErrorContains(err, "insufficient funds") + + // Try with with a different transfer channel - it should fail + invalidMsg = validMsg + invalidMsg.LsmTokenIbcDenom = transfertypes.ParseDenomTrace(fmt.Sprintf("%s/%s", invalidPath, LSMTokenBaseDenom)).IBCDenom() + _, err = s.App.StakeibcKeeper.ValidateLSMLiquidStake(s.Ctx, invalidMsg) + s.Require().ErrorContains(err, "transfer channel-id from LSM token (channel-100) does not match any registered host zone") + + // Flag the validator as slashed - it should fail + hostZone.Validators[0].SlashQueryInProgress = true + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + _, err = s.App.StakeibcKeeper.ValidateLSMLiquidStake(s.Ctx, invalidMsg) + s.Require().ErrorContains(err, "transfer channel-id from LSM token (channel-100) does not match any registered host zone") + + // Remove the validator and try again - it should fail + hostZone.Validators = []*types.Validator{} + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + _, err = s.App.StakeibcKeeper.ValidateLSMLiquidStake(s.Ctx, validMsg) + s.Require().ErrorContains(err, fmt.Sprintf("validator (%s) is not registered in the Stride validator set", ValAddress)) +} + +func (s *KeeperTestSuite) TestGetLSMTokenDepositId() { + address1 := "stride1h8wj2e5a329ve2r472ydezc4lel4dmsdn5v5sd" + address2 := "stride15vg2f5yvrs3673zj89mpwt260cpalws5psxtdh" + + s.Require().Equal( + "87bd1d24f68162b37eb564ea17cc946d9119753f5ec2deeeed08b585f4164d30", + keeper.GetLSMTokenDepositId(1, HostChainId, address1, ValAddress+"/1"), + ) + s.Require().Equal( + "c799379d0fa078df85673cb2cd7a055c7ed1f486c22af28ed492908353398a64", + keeper.GetLSMTokenDepositId(2, HostChainId, address1, ValAddress+"/1"), + ) + s.Require().Equal( + "e16e4a9018d4a9b68bd1bcec7ddc67df7377242880173f717c2750fedb7ecf69", + keeper.GetLSMTokenDepositId(1, OsmoChainId, address1, ValAddress+"/1"), + ) + s.Require().Equal( + "05e2ae6b19b05b8be485b77899524eb018cdf65869b450b0272b67cf8aa2936a", + keeper.GetLSMTokenDepositId(1, HostChainId, address2, ValAddress+"/1"), + ) + s.Require().Equal( + "e0aa2cc10d2daeb8c5fde4cfae367ef098cfc42395eb3d23ca8be498c62717b0", + keeper.GetLSMTokenDepositId(1, HostChainId, address1, ValAddress+"/2"), + ) +} + +func (s *KeeperTestSuite) TestGetLSMTokenDenomTrace() { + baseDenom := "cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p/48" + path := "transfer/channel-0" + ibcDenom := transfertypes.ParseDenomTrace(fmt.Sprintf("%s/%s", path, baseDenom)).IBCDenom() + + // Store denom trace so the transfer keeper can look it up + expectedDenomTrace := transfertypes.DenomTrace{ + BaseDenom: baseDenom, + Path: path, + } + s.App.TransferKeeper.SetDenomTrace(s.Ctx, expectedDenomTrace) + + // Test parsing of IBC Denom + actualDenomTrace, err := s.App.StakeibcKeeper.GetLSMTokenDenomTrace(s.Ctx, ibcDenom) + s.Require().NoError(err, "no error expected with successful parse") + s.Require().Equal(expectedDenomTrace, actualDenomTrace, "denom trace") + + // Attempt to parse with a non-ibc denom - it should fail + _, err = s.App.StakeibcKeeper.GetLSMTokenDenomTrace(s.Ctx, "non-ibc-denom") + s.Require().ErrorContains(err, "lsm token is not an IBC token (non-ibc-denom)") + + // Attempt to parse with an invalid ibc-denom - it should fail + _, err = s.App.StakeibcKeeper.GetLSMTokenDenomTrace(s.Ctx, "ibc/xxx") + s.Require().ErrorContains(err, "unable to get ibc hex hash from denom ibc/xxx") + + // Attempt to parse with a valid ibc denom that is not registered - it should fail + notRegisteredIBCDenom := transfertypes.ParseDenomTrace("transfer/channel-0/cosmosXXX").IBCDenom() + _, err = s.App.StakeibcKeeper.GetLSMTokenDenomTrace(s.Ctx, notRegisteredIBCDenom) + s.Require().ErrorContains(err, "denom trace not found") +} + +func (s *KeeperTestSuite) TestIsValidIBCPath() { + validIBCPaths := []string{ + "transfer/channel-0", + "transfer/channel-10", + "transfer/channel-99999", + } + invalidIBCPaths := []string{ + "transferx/channel-0", + "transfer/channel-X", + "transfer/channel-0/transfer/channel-1", + } + + for _, validPath := range validIBCPaths { + s.Require().True(keeper.IsValidIBCPath(validPath), "should be valid") + } + for _, validPath := range invalidIBCPaths { + s.Require().False(keeper.IsValidIBCPath(validPath), "should be invalid") + } +} + +func (s *KeeperTestSuite) TestGetHostZoneFromLSMTokenPath() { + // Set a host zone in the store with channel-0 + hostZone := types.HostZone{ + ChainId: HostChainId, + TransferChannelId: ibctesting.FirstChannelID, + LsmLiquidStakeEnabled: true, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Successful lookup + validPath := fmt.Sprintf("%s/%s", transfertypes.PortID, ibctesting.FirstChannelID) + hostZone, err := s.App.StakeibcKeeper.GetHostZoneFromLSMTokenPath(s.Ctx, validPath) + s.Require().NoError(err, "no error expected from valid path") + s.Require().Equal(HostChainId, hostZone.ChainId, "host zone") + + // Invalid IBC path should fail + _, err = s.App.StakeibcKeeper.GetHostZoneFromLSMTokenPath(s.Ctx, "transfer/channel-0/transfer/channel-1") + s.Require().ErrorContains(err, "ibc path of LSM token (transfer/channel-0/transfer/channel-1) cannot be more than 1 hop away") + + // Passing an unregistered channel-id should cause it to fail + _, err = s.App.StakeibcKeeper.GetHostZoneFromLSMTokenPath(s.Ctx, "transfer/channel-1") + s.Require().ErrorContains(err, "transfer channel-id from LSM token (channel-1) does not match any registered host zone") + + // Disabling LSM for the host should cause it to fail + hostZone.LsmLiquidStakeEnabled = false + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + _, err = s.App.StakeibcKeeper.GetHostZoneFromLSMTokenPath(s.Ctx, validPath) + s.Require().ErrorContains(err, "LSM liquid stake disabled for GAIA") +} + +func (s *KeeperTestSuite) TestGetValidatorFromLSMTokenDenom() { + valAddress := "cosmosvaloperXXX" + denom := valAddress + "/42" // add record ID + validators := []*types.Validator{{ + Address: valAddress, + SlashQueryInProgress: false, + SharesToTokensRate: sdk.OneDec(), + }} + + // Successful lookup + validator, err := s.App.StakeibcKeeper.GetValidatorFromLSMTokenDenom(denom, validators) + s.Require().NoError(err, "no error expected from valid lsm denom") + s.Require().Equal(valAddress, validator.Address, "host zone") + + // Invalid LSM denoms - should fail + _, err = s.App.StakeibcKeeper.GetValidatorFromLSMTokenDenom("invalid_denom", validators) + s.Require().ErrorContains(err, "lsm token base denom is not of the format {val-address}/{record-id} (invalid_denom)") + + _, err = s.App.StakeibcKeeper.GetValidatorFromLSMTokenDenom("cosmosvaloperXXX/42/1", validators) + s.Require().ErrorContains(err, "lsm token base denom is not of the format {val-address}/{record-id} (cosmosvaloperXXX/42/1)") + + // Validator does not exist - should fail + _, err = s.App.StakeibcKeeper.GetValidatorFromLSMTokenDenom(denom, []*types.Validator{}) + s.Require().ErrorContains(err, "validator (cosmosvaloperXXX) is not registered in the Stride validator set") + + // Pass in a validator that has a slash query in flight - it should fail + validatorWithSlashQuery := []*types.Validator{{ + Address: valAddress, + SlashQueryInProgress: true, + SharesToTokensRate: sdk.OneDec(), + }} + _, err = s.App.StakeibcKeeper.GetValidatorFromLSMTokenDenom(denom, validatorWithSlashQuery) + s.Require().ErrorContains(err, "validator cosmosvaloperXXX was slashed") + + // Pass in a validator with an uninitialized sharesToTokens rate - it should fail + validatorWithoutSharesToTokensRate := []*types.Validator{{ + Address: valAddress, + SlashQueryInProgress: false, + }} + _, err = s.App.StakeibcKeeper.GetValidatorFromLSMTokenDenom(denom, validatorWithoutSharesToTokensRate) + s.Require().ErrorContains(err, "validator cosmosvaloperXXX sharesToTokens rate is not known") +} + +func (s *KeeperTestSuite) TestCalculateLSMStToken() { + testCases := []struct { + name string + liquidStakedShares sdkmath.Int + validatorSharesToTokensRate sdk.Dec + redemptionRate sdk.Dec + expectedStAmount sdkmath.Int + }{ + // stTokenAmount = liquidStakedShares * validatorSharesToTokensRate / redemptionRate + { + name: "one sharesToTokens rate and redemption rate", + liquidStakedShares: sdkmath.NewInt(1000), + validatorSharesToTokensRate: sdk.OneDec(), + redemptionRate: sdk.OneDec(), + expectedStAmount: sdkmath.NewInt(1000), + }, + { + name: "one sharesToTokens rate, non-one redemption rate", + liquidStakedShares: sdkmath.NewInt(1000), + validatorSharesToTokensRate: sdk.OneDec(), + redemptionRate: sdk.MustNewDecFromStr("1.25"), + expectedStAmount: sdkmath.NewInt(800), // 1000 * 1 / 1.25 = 800 + }, + { + name: "non-one sharesToTokens rate, one redemption rate", + liquidStakedShares: sdkmath.NewInt(1000), + validatorSharesToTokensRate: sdk.MustNewDecFromStr("0.75"), + redemptionRate: sdk.OneDec(), + expectedStAmount: sdkmath.NewInt(750), // 1000 * 0.75 / 1 + }, + { + name: "non-one sharesToTokens rate, non-one redemption rate", + liquidStakedShares: sdkmath.NewInt(1000), + validatorSharesToTokensRate: sdk.MustNewDecFromStr("0.75"), + redemptionRate: sdk.MustNewDecFromStr("1.25"), + expectedStAmount: sdkmath.NewInt(600), // 1000 * 0.75 / 1.25 = 600 + }, + { + name: "decimal to integer truncation", + liquidStakedShares: sdkmath.NewInt(3333), + validatorSharesToTokensRate: sdk.MustNewDecFromStr("0.238498282349"), + redemptionRate: sdk.MustNewDecFromStr("1.979034798243"), + expectedStAmount: sdkmath.NewInt(401), // equals 401.667 + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + lsmLiquidStake := types.LSMLiquidStake{ + HostZone: &types.HostZone{ + HostDenom: "denom", + RedemptionRate: tc.redemptionRate, + }, + Validator: &types.Validator{ + SharesToTokensRate: tc.validatorSharesToTokensRate, + }, + } + + actualStCoin := s.App.StakeibcKeeper.CalculateLSMStToken(tc.liquidStakedShares, lsmLiquidStake) + s.Require().Equal("stdenom", actualStCoin.Denom, "denom") + s.Require().Equal(tc.expectedStAmount.Int64(), actualStCoin.Amount.Int64(), "amount") + }) + } +} + +func (s *KeeperTestSuite) TestShouldCheckIfValidatorWasSlashed() { + testCases := []struct { + name string + checkpoint sdkmath.Int + progress sdkmath.Int + stakeAmount sdkmath.Int + expectedShouldQuery bool + }{ + { + // Checkpoint: 1000, Stake: 99 + // Old Progress: 900, New Progress: 900 + 99 = 999 + // Old Interval: 900 / 1000 = Interval #0 + // New Interval: 999 / 1000 = Interval #0 (no query) + name: "case #1 - short of checkpoint", + checkpoint: sdkmath.NewInt(1000), + progress: sdk.NewInt(900), + stakeAmount: sdk.NewInt(99), + expectedShouldQuery: false, + }, + { + // Checkpoint: 1000, Stake: 100 + // Old Progress: 900, New Progress: 900 + 100 = 1000 + // Old Interval: 900 / 1000 = Interval #0 + // New Interval: 1000 / 1000 = Interval #1 (query) + name: "case #1 - at checkpoint", + checkpoint: sdkmath.NewInt(1000), + progress: sdk.NewInt(900), + stakeAmount: sdk.NewInt(100), + expectedShouldQuery: true, + }, + { + // Checkpoint: 1000, Stake: 101 + // Old Progress: 900, New Progress: 900 + 101 = 1000 + // Old Interval: 900 / 1000 = Interval #0 + // New Interval: 1001 / 1000 = Interval #1 (query) + name: "case #1 - past checkpoint", + checkpoint: sdkmath.NewInt(1000), + progress: sdk.NewInt(900), + stakeAmount: sdk.NewInt(101), + expectedShouldQuery: true, + }, + { + // Checkpoint: 1000, Stake: 99 + // Old Progress: 11,900, New Progress: 11,900 + 99 = 11,999 + // Old Interval: 11,900 / 1000 = Interval #11 + // New Interval: 11,999 / 1000 = Interval #11 (query) + name: "case #2 - short of checkpoint", + checkpoint: sdkmath.NewInt(1000), + progress: sdk.NewInt(11_900), + stakeAmount: sdk.NewInt(99), + expectedShouldQuery: false, + }, + { + // Checkpoint: 1000, Stake: 100 + // Old Progress: 11,900, New Progress: 11,900 + 100 = 12,000 + // Old Interval: 11,900 / 1000 = Interval #11 + // New Interval: 12,000 / 1000 = Interval #12 (query) + name: "case #2 - at checkpoint", + checkpoint: sdkmath.NewInt(1000), + progress: sdk.NewInt(11_900), + stakeAmount: sdk.NewInt(100), + expectedShouldQuery: true, + }, + { + // Checkpoint: 1000, Stake: 101 + // Old Progress: 11,900, New Progress: 11,900 + 101 = 12,001 + // Old Interval: 11,900 / 1000 = Interval #11 + // New Interval: 12,001 / 1000 = Interval #12 (query) + name: "case #2 - past checkpoint", + checkpoint: sdkmath.NewInt(1000), + progress: sdk.NewInt(11_900), + stakeAmount: sdk.NewInt(101), + expectedShouldQuery: true, + }, + { + // Checkpoint: 6,890, Stake: 339 + // Old Progress: 41,000, New Progress: 41,000 + 339 = 41,339 + // Old Interval: 41,000 / 6,890 = Interval #5 + // New Interval: 41,339 / 6,890 = Interval #5 (no query) + name: "case #3 - short of checkpoint", + checkpoint: sdkmath.NewInt(6890), + progress: sdk.NewInt(41_000), + stakeAmount: sdk.NewInt(101), + expectedShouldQuery: false, + }, + { + // Checkpoint: 6,890, Stake: 340 + // Old Progress: 41,000, New Progress: 41,000 + 440 = 41,440 + // Old Interval: 41,000 / 6,890 = Interval #5 + // New Interval: 41,440 / 6,890 = Interval #6 (query) + name: "case #3 - at checkpoint", + checkpoint: sdkmath.NewInt(6890), + progress: sdk.NewInt(41_000), + stakeAmount: sdk.NewInt(340), + expectedShouldQuery: true, + }, + { + // Checkpoint: 6,890 + // Old Progress: 41,000, New Progress: 41,000 + 441 = 41,440 + // Old Interval: 41,000 / 6,890 = Interval #5 + // New Interval: 41,441 / 6,890 = Interval #6 (query) + name: "case #3 - past checkpoint", + checkpoint: sdkmath.NewInt(6890), + progress: sdk.NewInt(41_000), + stakeAmount: sdk.NewInt(341), + expectedShouldQuery: true, + }, + { + // Checkpoint of 0 - should not issue query + name: "threshold of 0", + checkpoint: sdkmath.ZeroInt(), + progress: sdk.NewInt(41_000), + stakeAmount: sdk.NewInt(340), + expectedShouldQuery: false, + }, + } + + for _, tc := range testCases { + // Store query interval param + validator := types.Validator{SlashQueryProgressTracker: tc.progress, SlashQueryCheckpoint: tc.checkpoint} + actualShouldQuery := s.App.StakeibcKeeper.ShouldCheckIfValidatorWasSlashed(s.Ctx, validator, tc.stakeAmount) + s.Require().Equal(tc.expectedShouldQuery, actualShouldQuery, tc.name) + } +} + +func (s *KeeperTestSuite) TestGetUpdatedSlashQueryCheckpoint() { + testCases := []struct { + name string + threshold uint64 + totalDelegations sdkmath.Int + expectedCheckpoint sdkmath.Int + }{ + { + name: "10%", + threshold: 10, + totalDelegations: sdkmath.NewInt(1_000_000), + expectedCheckpoint: sdkmath.NewInt(100_000), + }, + { + name: "25%", + threshold: 25, + totalDelegations: sdkmath.NewInt(1_000_000), + expectedCheckpoint: sdkmath.NewInt(250_000), + }, + { + name: "75%", + threshold: 75, + totalDelegations: sdkmath.NewInt(1_000_000), + expectedCheckpoint: sdkmath.NewInt(750_000), + }, + { + name: "int truncation", + threshold: 10, + totalDelegations: sdkmath.NewInt(39), + expectedCheckpoint: sdkmath.NewInt(3), + }, + { + name: "0-TVL", + threshold: 10, + totalDelegations: sdkmath.ZeroInt(), + expectedCheckpoint: sdkmath.ZeroInt(), + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + // Set the slash query threshold + params := s.App.StakeibcKeeper.GetParams(s.Ctx) + params.ValidatorSlashQueryThreshold = tc.threshold + s.App.StakeibcKeeper.SetParams(s.Ctx, params) + + // Check the new checkpoint + actualCheckpoint := s.App.StakeibcKeeper.GetUpdatedSlashQueryCheckpoint(s.Ctx, tc.totalDelegations) + s.Require().Equal(tc.expectedCheckpoint.Int64(), actualCheckpoint.Int64(), "checkpoint") + }) + } +} + +func (s *KeeperTestSuite) TestTransferAllLSMDeposits() { + s.CreateTransferChannel(HostChainId) + + // Create a valid IBC denom + ibcDenom := s.CreateAndStoreIBCDenom(LSMTokenBaseDenom) + + // Store 2 host zones - one that was registered successfully, + // and one that's missing a delegation channel + hostZones := []types.HostZone{ + { + // Valid host zone + ChainId: HostChainId, + TransferChannelId: ibctesting.FirstChannelID, + DepositAddress: s.TestAccs[1].String(), + DelegationIcaAddress: DelegationICAAddress, + }, + { + // Missing delegation ICA + ChainId: "chain-2", + TransferChannelId: "channel-2", + DepositAddress: "stride_DEPOSIT_2", + }, + } + for _, hostZone := range hostZones { + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + } + + // For each host chain store 4 deposits: + // - One ready to be transferred with a valid IBC denom + // - One ready to be transferred with an invalid IBC denom (should fail) + // - One not ready to be transferred with a valid IBC denom + // - One not ready to be transferred with an invalid IBC denom + expectedDepositStatus := map[string]recordstypes.LSMTokenDeposit_Status{} + for _, chainId := range []string{HostChainId, OsmoChainId} { + for _, startingStatus := range []recordstypes.LSMTokenDeposit_Status{ + recordstypes.LSMTokenDeposit_TRANSFER_QUEUE, + recordstypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + } { + + for i, shouldSucceed := range []bool{true, false} { + denom := fmt.Sprintf("denom-starting-in-status-%s-%d", startingStatus.String(), i) + depositKey := fmt.Sprintf("%s-%s", chainId, denom) + + if !shouldSucceed { + ibcDenom = "ibc/fake_denom" + } + deposit := recordstypes.LSMTokenDeposit{ + ChainId: chainId, + Denom: denom, + IbcDenom: ibcDenom, + Status: startingStatus, + } + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, deposit) + + // The status should update to IN_PROGRESS if the record was queued for transfer, on the + // valid host zone, with a valid IBC denom + // The status should update to FAILED if the record was queued for transfer, on the + // valid host zone, with an invalid IBC denom + // The status should not change on the invalid host zone + expectedStatus := startingStatus + if chainId == HostChainId && startingStatus == recordstypes.LSMTokenDeposit_TRANSFER_QUEUE { + if shouldSucceed { + expectedStatus = recordstypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS + } else { + expectedStatus = recordstypes.LSMTokenDeposit_TRANSFER_FAILED + } + } + + expectedDepositStatus[depositKey] = expectedStatus + } + } + } + + // Call transfer across all hosts + s.App.StakeibcKeeper.TransferAllLSMDeposits(s.Ctx) + + // Check that the status of the relevant records was updated + allDeposits := s.App.RecordsKeeper.GetAllLSMTokenDeposit(s.Ctx) + s.Require().Len(allDeposits, 8) // 4 host zones, 2 statuses, 2 deposits = 2 * 2 * 2 = 8 + + for _, deposit := range allDeposits { + depositKey := fmt.Sprintf("%s-%s", deposit.ChainId, deposit.Denom) + s.Require().Equal(expectedDepositStatus[depositKey].String(), deposit.Status.String(), "deposit status for %s", depositKey) + } +} + +func (s *KeeperTestSuite) TestDetokenizeLSMDeposit() { + // Create the delegation ICA + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_DELEGATION) + s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Get the ica address that was just created + delegationICAAddress, found := s.App.ICAControllerKeeper.GetInterchainAccountAddress(s.Ctx, ibctesting.FirstConnectionID, portId) + s.Require().True(found, "ICA account should have been created") + s.Require().NotEmpty(delegationICAAddress, "ICA Address should not be empty") + + // Build the host zone and deposit (which are arguments to detokenize) + initialHostZone := types.HostZone{ + ChainId: HostChainId, + DelegationIcaAddress: delegationICAAddress, + ConnectionId: ibctesting.FirstConnectionID, + Validators: []*types.Validator{{DelegationChangesInProgress: 0}}, + } + + denom := "cosmosvalXXX/42" + initalDeposit := recordstypes.LSMTokenDeposit{ + ChainId: HostChainId, + Denom: denom, + Amount: sdk.NewInt(1000), + Status: recordstypes.LSMTokenDeposit_DETOKENIZATION_QUEUE, + StToken: sdk.NewCoin(StAtom, sdk.OneInt()), + } + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, initalDeposit) + + // Successfully Detokenize + err = s.App.StakeibcKeeper.DetokenizeLSMDeposit(s.Ctx, initialHostZone, initalDeposit) + s.Require().NoError(err, "no error expected when detokenizing") + + // Confirm deposit status was updated + finalDeposit, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, denom) + s.Require().True(found, "deposit should have been found") + s.Require().Equal(recordstypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS.String(), finalDeposit.Status.String(), "deposit status") + + // Check callback data was stored + allCallbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Len(allCallbackData, 1, "length of callback data") + + var callbackData types.DetokenizeSharesCallback + err = proto.Unmarshal(allCallbackData[0].CallbackArgs, &callbackData) + s.Require().NoError(err, "no error expected when unmarshalling callback data") + + s.Require().Equal(initalDeposit, *callbackData.Deposit, "callback data LSM deposit") + + // Check the number of delegation changes was incremented + finalHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + s.Require().Equal(1, int(finalHostZone.Validators[0].DelegationChangesInProgress), "delegation changes in progress") + + // Remove connection ID and re-submit - should fail + hostZoneWithoutConnectionId := initialHostZone + hostZoneWithoutConnectionId.ConnectionId = "" + err = s.App.StakeibcKeeper.DetokenizeLSMDeposit(s.Ctx, hostZoneWithoutConnectionId, initalDeposit) + s.Require().ErrorContains(err, "unable to submit detokenization ICA") + + // Remove delegation account and re-submit - should also fail + hostZoneWithoutDelegationAccount := initialHostZone + hostZoneWithoutDelegationAccount.DelegationIcaAddress = "" + err = s.App.StakeibcKeeper.DetokenizeLSMDeposit(s.Ctx, hostZoneWithoutDelegationAccount, initalDeposit) + s.Require().ErrorContains(err, "no delegation account found") +} + +func (s *KeeperTestSuite) TestDetokenizeAllLSMDeposits() { + // Create an open delegation ICA channel + owner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_DELEGATION) + s.CreateICAChannel(owner) + portId, err := icatypes.NewControllerPortID(owner) + s.Require().NoError(err, "no error expected when formatting portId") + + // Get the ica address that was just created + delegationICAAddress, found := s.App.ICAControllerKeeper.GetInterchainAccountAddress(s.Ctx, ibctesting.FirstConnectionID, portId) + s.Require().True(found, "ICA account should have been created") + s.Require().NotEmpty(delegationICAAddress, "ICA Address should not be empty") + + // Store two host zones - one with an open Delegation channel, and one without + s.App.StakeibcKeeper.SetHostZone(s.Ctx, types.HostZone{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + DelegationIcaAddress: delegationICAAddress, + }) + s.App.StakeibcKeeper.SetHostZone(s.Ctx, types.HostZone{ + ChainId: OsmoChainId, + ConnectionId: "connection-2", + }) + + // For each host chain store 4 deposits + // 2 of which are ready to be detokenized, and 2 of which are not + expectedDepositStatus := map[string]recordstypes.LSMTokenDeposit_Status{} + for _, chainId := range []string{HostChainId, OsmoChainId} { + for _, startingStatus := range []recordstypes.LSMTokenDeposit_Status{ + recordstypes.LSMTokenDeposit_DETOKENIZATION_QUEUE, + recordstypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + } { + + for i := 0; i < 2; i++ { + denom := fmt.Sprintf("denom-starting-in-status-%s-%d", startingStatus.String(), i) + depositKey := fmt.Sprintf("%s-%s", chainId, denom) + deposit := recordstypes.LSMTokenDeposit{ + ChainId: chainId, + Denom: denom, + Status: startingStatus, + } + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, deposit) + + // The status is only expected to change for the QUEUED records on the + // host chain with the open delegation channel + expectedStatus := startingStatus + if chainId == HostChainId && startingStatus == recordstypes.LSMTokenDeposit_DETOKENIZATION_QUEUE { + expectedStatus = recordstypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS + } + expectedDepositStatus[depositKey] = expectedStatus + } + } + } + + // Call detokenization across all hosts + s.App.StakeibcKeeper.DetokenizeAllLSMDeposits(s.Ctx) + + // Check that the status of the relevant records was updated + allDeposits := s.App.RecordsKeeper.GetAllLSMTokenDeposit(s.Ctx) + s.Require().Len(allDeposits, 8) // 2 host zones, 2 statuses, 2 deposits = 2 * 2 * 2 = 8 + + for _, deposit := range allDeposits { + depositKey := fmt.Sprintf("%s-%s", deposit.ChainId, deposit.Denom) + s.Require().Equal(expectedDepositStatus[depositKey].String(), deposit.Status.String(), "deposit status for %s", depositKey) + } +} diff --git a/x/stakeibc/keeper/msg_server_add_validators.go b/x/stakeibc/keeper/msg_server_add_validators.go index 60c2f3f879..4b6f1dffd5 100644 --- a/x/stakeibc/keeper/msg_server_add_validators.go +++ b/x/stakeibc/keeper/msg_server_add_validators.go @@ -15,6 +15,11 @@ func (k msgServer) AddValidators(goCtx context.Context, msg *types.MsgAddValidat if err := k.AddValidatorToHostZone(ctx, msg.HostZone, *validator, false); err != nil { return nil, err } + + // Query and store the validator's sharesToTokens rate + if err := k.QueryValidatorSharesToTokensRate(ctx, msg.HostZone, validator.Address); err != nil { + return nil, err + } } return &types.MsgAddValidatorsResponse{}, nil diff --git a/x/stakeibc/keeper/msg_server_add_validators_test.go b/x/stakeibc/keeper/msg_server_add_validators_test.go index cf9ec4cd98..2817954c7f 100644 --- a/x/stakeibc/keeper/msg_server_add_validators_test.go +++ b/x/stakeibc/keeper/msg_server_add_validators_test.go @@ -1,49 +1,96 @@ package keeper_test import ( + "fmt" + sdkmath "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/bech32" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type AddValidatorsTestCase struct { - hostZone stakeibctypes.HostZone - validMsg stakeibctypes.MsgAddValidators - expectedValidators []*stakeibctypes.Validator + hostZone types.HostZone + validMsg types.MsgAddValidators + expectedValidators []*types.Validator + validatorQueryDataToName map[string]string +} + +// Helper function to determine the validator's key in the staking store +// which is used as the request data in the ICQ +func (s *KeeperTestSuite) getSharesToTokensRateQueryData(validatorAddress string) []byte { + _, validatorAddressBz, err := bech32.DecodeAndConvert(validatorAddress) + s.Require().NoError(err, "no error expected when decoding validator address") + return stakingtypes.GetValidatorKey(validatorAddressBz) } func (s *KeeperTestSuite) SetupAddValidators() AddValidatorsTestCase { - hostZone := stakeibctypes.HostZone{ - ChainId: "GAIA", - Validators: []*stakeibctypes.Validator{}, + slashThreshold := uint64(10) + params := types.DefaultParams() + params.ValidatorSlashQueryThreshold = slashThreshold + s.App.StakeibcKeeper.SetParams(s.Ctx, params) + + totalDelegations := sdkmath.NewInt(100_000) + expectedSlashCheckpoint := sdkmath.NewInt(10_000) + + hostZone := types.HostZone{ + ChainId: "GAIA", + ConnectionId: ibctesting.FirstConnectionID, + Validators: []*types.Validator{}, + TotalDelegations: totalDelegations, + } + + validatorAddresses := map[string]string{ + "val1": "stridevaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrgpwsqm", + "val2": "stridevaloper17kht2x2ped6qytr2kklevtvmxpw7wq9rcfud5c", + "val3": "stridevaloper1nnurja9zt97huqvsfuartetyjx63tc5zrj5x9f", + } + + // mapping of query request data to validator name + // serves as a reverse lookup to map sharesToTokens rate queries to validators + validatorQueryDataToName := map[string]string{} + for name, address := range validatorAddresses { + queryData := s.getSharesToTokensRateQueryData(address) + validatorQueryDataToName[string(queryData)] = name } - validMsg := stakeibctypes.MsgAddValidators{ + validMsg := types.MsgAddValidators{ Creator: "stride_ADMIN", - HostZone: "GAIA", + HostZone: HostChainId, Validators: []*types.Validator{ - {Name: "val1", Address: "stride_VAL1", Weight: 1}, - {Name: "val2", Address: "stride_VAL2", Weight: 2}, - {Name: "val3", Address: "stride_VAL3", Weight: 3}, + {Name: "val1", Address: validatorAddresses["val1"], Weight: 1}, + {Name: "val2", Address: validatorAddresses["val2"], Weight: 2}, + {Name: "val3", Address: validatorAddresses["val3"], Weight: 3}, }, } expectedValidators := []*types.Validator{ - {Name: "val1", Address: "stride_VAL1", Weight: 1, DelegationAmt: sdkmath.ZeroInt()}, - {Name: "val2", Address: "stride_VAL2", Weight: 2, DelegationAmt: sdkmath.ZeroInt()}, - {Name: "val3", Address: "stride_VAL3", Weight: 3, DelegationAmt: sdkmath.ZeroInt()}, + {Name: "val1", Address: validatorAddresses["val1"], Weight: 1}, + {Name: "val2", Address: validatorAddresses["val2"], Weight: 2}, + {Name: "val3", Address: validatorAddresses["val3"], Weight: 3}, + } + for _, validator := range expectedValidators { + validator.Delegation = sdkmath.ZeroInt() + validator.SlashQueryProgressTracker = sdkmath.ZeroInt() + validator.SharesToTokensRate = sdk.ZeroDec() + validator.SlashQueryCheckpoint = expectedSlashCheckpoint } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + // Mock the latest client height for the ICQ submission + s.MockClientLatestHeight(1) + return AddValidatorsTestCase{ - hostZone: hostZone, - validMsg: validMsg, - expectedValidators: expectedValidators, + hostZone: hostZone, + validMsg: validMsg, + expectedValidators: expectedValidators, + validatorQueryDataToName: validatorQueryDataToName, } } @@ -61,6 +108,26 @@ func (s *KeeperTestSuite) TestAddValidators_Successful() { for i := 0; i < 3; i++ { s.Require().Equal(*tc.expectedValidators[i], *hostZone.Validators[i], "validators %d", i) } + + // Confirm ICQs were submitted + queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) + s.Require().Len(queries, 3) + + // Map the query responses to the validator names to get the names of the validators that + // were queried + queriedValidators := []string{} + for i, query := range queries { + validator, ok := tc.validatorQueryDataToName[string(query.RequestData)] + s.Require().True(ok, "query from response %d does not match any expected requests", i) + queriedValidators = append(queriedValidators, validator) + } + + // Confirm the list of queried validators matches the full list of validators + allValidatorNames := []string{} + for _, expected := range tc.expectedValidators { + allValidatorNames = append(allValidatorNames, expected.Name) + } + s.Require().ElementsMatch(allValidatorNames, queriedValidators, "queried validators") } func (s *KeeperTestSuite) TestAddValidators_HostZoneNotFound() { @@ -78,13 +145,15 @@ func (s *KeeperTestSuite) TestAddValidators_AddressAlreadyExists() { // Update host zone so that the name val1 already exists hostZone := tc.hostZone - duplicateVal := stakeibctypes.Validator{Name: "new_val", Address: tc.expectedValidators[0].Address} - hostZone.Validators = []*stakeibctypes.Validator{&duplicateVal} + duplicateAddress := tc.expectedValidators[0].Address + duplicateVal := types.Validator{Name: "new_val", Address: duplicateAddress} + hostZone.Validators = []*types.Validator{&duplicateVal} s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) // Change the validator address to val1 so that the message errors + expectedError := fmt.Sprintf("Validator address (%s) already exists on Host Zone (GAIA)", duplicateAddress) _, err := s.GetMsgServer().AddValidators(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().EqualError(err, "Validator address (stride_VAL1) already exists on Host Zone (GAIA): validator already exists") + s.Require().ErrorContains(err, expectedError) } func (s *KeeperTestSuite) TestAddValidators_NameAlreadyExists() { @@ -92,11 +161,13 @@ func (s *KeeperTestSuite) TestAddValidators_NameAlreadyExists() { // Update host zone so that val1's address already exists hostZone := tc.hostZone - duplicateVal := stakeibctypes.Validator{Name: tc.expectedValidators[0].Name, Address: "new_address"} - hostZone.Validators = []*stakeibctypes.Validator{&duplicateVal} + duplicateName := tc.expectedValidators[0].Name + duplicateVal := types.Validator{Name: duplicateName, Address: "new_address"} + hostZone.Validators = []*types.Validator{&duplicateVal} s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) // Change the validator name to val1 so that the message errors + expectedError := fmt.Sprintf("Validator name (%s) already exists on Host Zone (GAIA)", duplicateName) _, err := s.GetMsgServer().AddValidators(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().EqualError(err, "Validator name (val1) already exists on Host Zone (GAIA): validator already exists") + s.Require().ErrorContains(err, expectedError) } diff --git a/x/stakeibc/keeper/msg_server_change_validator_weight.go b/x/stakeibc/keeper/msg_server_change_validator_weight.go index d5ca9768ae..f58976c333 100644 --- a/x/stakeibc/keeper/msg_server_change_validator_weight.go +++ b/x/stakeibc/keeper/msg_server_change_validator_weight.go @@ -2,9 +2,7 @@ package keeper import ( "context" - "fmt" - errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" @@ -15,28 +13,17 @@ func (k msgServer) ChangeValidatorWeight(goCtx context.Context, msg *types.MsgCh hostZone, found := k.GetHostZone(ctx, msg.HostZone) if !found { - k.Logger(ctx).Error(fmt.Sprintf("Host Zone %s not found", msg.HostZone)) return nil, types.ErrInvalidHostZone } validators := hostZone.Validators for _, validator := range validators { - if validator.GetAddress() == msg.ValAddr { - - // when changing a weight from 0 to non-zero, make sure we have space in the val set for this new validator - if validator.Weight == 0 && msg.Weight > 0 { - err := k.ConfirmValSetHasSpace(ctx, validators) - if err != nil { - return nil, errorsmod.Wrap(types.ErrMaxNumValidators, "cannot set val weight from zero to nonzero on host zone") - } - } + if validator.Address == msg.ValAddr { validator.Weight = msg.Weight k.SetHostZone(ctx, hostZone) return &types.MsgChangeValidatorWeightResponse{}, nil - } } - k.Logger(ctx).Error(fmt.Sprintf("Validator %s not found on Host Zone %s", msg.ValAddr, msg.HostZone)) return nil, types.ErrValidatorNotFound } diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go index b893578b3d..7859f9101f 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go @@ -16,10 +16,10 @@ import ( ) type IcaTx struct { - ConnectionId string - Msgs []proto.Message - Account types.ICAAccount - Timeout uint64 + ConnectionId string + Msgs []proto.Message + ICAAccountType types.ICAAccountType + Timeout uint64 } func (k msgServer) ClaimUndelegatedTokens(goCtx context.Context, msg *types.MsgClaimUndelegatedTokens) (*types.MsgClaimUndelegatedTokensResponse, error) { @@ -57,7 +57,7 @@ func (k msgServer) ClaimUndelegatedTokens(goCtx context.Context, msg *types.MsgC if err != nil { return nil, errorsmod.Wrap(err, "unable to marshal claim callback args") } - _, err = k.SubmitTxs(ctx, icaTx.ConnectionId, icaTx.Msgs, icaTx.Account, icaTx.Timeout, ICACallbackID_Claim, marshalledCallbackArgs) + _, err = k.SubmitTxs(ctx, icaTx.ConnectionId, icaTx.Msgs, icaTx.ICAAccountType, icaTx.Timeout, ICACallbackID_Claim, marshalledCallbackArgs) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("Submit tx error: %s", err.Error())) return nil, errorsmod.Wrap(err, "unable to submit ICA redemption tx") @@ -106,21 +106,16 @@ func (k Keeper) GetRedemptionTransferMsg(ctx sdk.Context, userRedemptionRecord * // grab necessary fields to construct ICA call hostZone, found := k.GetHostZone(ctx, hostZoneId) if !found { - errMsg := fmt.Sprintf("Host zone %s not found", hostZoneId) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrap(types.ErrInvalidHostZone, errMsg) + return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "Host zone %s not found", hostZoneId) } - redemptionAccount, found := k.GetRedemptionAccount(ctx, hostZone) - if !found { - errMsg := fmt.Sprintf("Redemption account not found for host zone %s", hostZoneId) - k.Logger(ctx).Error(errMsg) - return nil, errorsmod.Wrap(types.ErrInvalidHostZone, errMsg) + if hostZone.RedemptionIcaAddress == "" { + return nil, errorsmod.Wrapf(types.ErrICAAccountNotFound, "Redemption account not found for host zone %s", hostZoneId) } var msgs []proto.Message rrAmt := userRedemptionRecord.Amount msgs = append(msgs, &bankTypes.MsgSend{ - FromAddress: redemptionAccount.Address, + FromAddress: hostZone.RedemptionIcaAddress, ToAddress: userRedemptionRecord.Receiver, Amount: sdk.NewCoins(sdk.NewCoin(userRedemptionRecord.Denom, rrAmt)), }) @@ -137,10 +132,10 @@ func (k Keeper) GetRedemptionTransferMsg(ctx sdk.Context, userRedemptionRecord * timeout := nextEpochStarttime + icaTimeOutNanos icaTx := IcaTx{ - ConnectionId: hostZone.GetConnectionId(), - Msgs: msgs, - Account: *redemptionAccount, - Timeout: timeout, + ConnectionId: hostZone.GetConnectionId(), + Msgs: msgs, + ICAAccountType: types.ICAAccountType_REDEMPTION, + Timeout: timeout, } return &icaTx, nil diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go index 92762c6620..42aaf0caed 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go @@ -13,20 +13,20 @@ import ( epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type ClaimUndelegatedState struct { - hostZone stakeibctypes.HostZone + hostZone types.HostZone redemptionRecordId string redemptionRecord recordtypes.UserRedemptionRecord } type ClaimUndelegatedTestCase struct { - validMsg stakeibctypes.MsgClaimUndelegatedTokens + validMsg types.MsgClaimUndelegatedTokens initialState ClaimUndelegatedState - expectedIcaMsg stakeibckeeper.IcaTx + expectedIcaMsg keeper.IcaTx } func (s *KeeperTestSuite) SetupClaimUndelegatedTokens() ClaimUndelegatedTestCase { @@ -39,14 +39,10 @@ func (s *KeeperTestSuite) SetupClaimUndelegatedTokens() ClaimUndelegatedTestCase redemptionAddr := s.IcaAddresses[redemptionIcaOwner] redemptionRecordId := fmt.Sprintf("%s.%d.%s", HostChainId, epochNumber, senderAddr) - redemptionAccount := stakeibctypes.ICAAccount{ - Address: redemptionAddr, - Target: stakeibctypes.ICAAccountType_REDEMPTION, - } - hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - RedemptionAccount: &redemptionAccount, - ConnectionId: ibctesting.FirstConnectionID, + hostZone := types.HostZone{ + ChainId: HostChainId, + RedemptionIcaAddress: redemptionAddr, + ConnectionId: ibctesting.FirstConnectionID, } redemptionRecord := recordtypes.UserRedemptionRecord{ @@ -61,7 +57,7 @@ func (s *KeeperTestSuite) SetupClaimUndelegatedTokens() ClaimUndelegatedTestCase } redemptionAmount := sdk.NewCoins(sdk.NewCoin(redemptionRecord.Denom, sdkmath.NewInt(1000))) - epochTracker := stakeibctypes.EpochTracker{ + epochTracker := types.EpochTracker{ EpochIdentifier: epochtypes.STRIDE_EPOCH, EpochNumber: epochNumber, NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts @@ -84,7 +80,7 @@ func (s *KeeperTestSuite) SetupClaimUndelegatedTokens() ClaimUndelegatedTestCase s.App.RecordsKeeper.SetUserRedemptionRecord(s.Ctx, redemptionRecord) return ClaimUndelegatedTestCase{ - validMsg: stakeibctypes.MsgClaimUndelegatedTokens{ + validMsg: types.MsgClaimUndelegatedTokens{ Creator: senderAddr, HostZoneId: HostChainId, Epoch: epochNumber, @@ -95,14 +91,14 @@ func (s *KeeperTestSuite) SetupClaimUndelegatedTokens() ClaimUndelegatedTestCase redemptionRecordId: redemptionRecordId, redemptionRecord: redemptionRecord, }, - expectedIcaMsg: stakeibckeeper.IcaTx{ + expectedIcaMsg: keeper.IcaTx{ Msgs: []proto.Message{&banktypes.MsgSend{ - FromAddress: redemptionAccount.Address, + FromAddress: redemptionAddr, ToAddress: receiverAddr, Amount: redemptionAmount, }}, - Account: redemptionAccount, - Timeout: uint64(stakeibctypes.DefaultICATimeoutNanos), + ICAAccountType: types.ICAAccountType_REDEMPTION, + Timeout: uint64(types.DefaultICATimeoutNanos), }, } } @@ -182,11 +178,11 @@ func (s *KeeperTestSuite) TestClaimUndelegatedTokens_NoRedemptionAccount() { tc := s.SetupClaimUndelegatedTokens() // Remove redemption account from host zone hostZone := tc.initialState.hostZone - hostZone.RedemptionAccount = nil + hostZone.RedemptionIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) _, err := s.App.StakeibcKeeper.GetRedemptionTransferMsg(s.Ctx, &tc.initialState.redemptionRecord, tc.validMsg.HostZoneId) - s.Require().EqualError(err, "Redemption account not found for host zone GAIA: host zone not registered") + s.Require().EqualError(err, "Redemption account not found for host zone GAIA: ICA acccount not found on host zone") } func (s *KeeperTestSuite) TestClaimUndelegatedTokens_NoEpochTracker() { diff --git a/x/stakeibc/keeper/msg_server_clear_balance.go b/x/stakeibc/keeper/msg_server_clear_balance.go index 603fac2ef9..6b275abde9 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance.go +++ b/x/stakeibc/keeper/msg_server_clear_balance.go @@ -20,9 +20,8 @@ func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalanc if !found { return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "chainId: %s", msg.ChainId) } - feeAccount := zone.GetFeeAccount() - if feeAccount == nil { - return nil, errorsmod.Wrapf(types.ErrFeeAccountNotRegistered, "chainId: %s", msg.ChainId) + if zone.FeeIcaAddress == "" { + return nil, errorsmod.Wrapf(types.ErrICAAccountNotFound, "fee acount not found for chainId: %s", msg.ChainId) } sourcePort := ibctransfertypes.PortID @@ -35,7 +34,6 @@ func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalanc k.Logger(ctx).Error(fmt.Sprintf("failed to parse coin (%s)", coinString)) return nil, errorsmod.Wrapf(err, "failed to parse coin (%s)", coinString) } - sender := feeAccount.GetAddress() // KeyICATimeoutNanos are for our Stride ICA calls, KeyFeeTransferTimeoutNanos is for the IBC transfer feeTransferTimeoutNanos := k.GetParam(ctx, types.KeyFeeTransferTimeoutNanos) timeoutTimestamp := cast.ToUint64(ctx.BlockTime().UnixNano()) + feeTransferTimeoutNanos @@ -44,8 +42,8 @@ func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalanc SourcePort: sourcePort, SourceChannel: sourceChannel, Token: tokens, - Sender: sender, - Receiver: types.FeeAccount, + Sender: zone.FeeIcaAddress, // fee account on the host zone + Receiver: types.FeeAccount, // fee account on stride TimeoutTimestamp: timeoutTimestamp, }, } @@ -55,7 +53,7 @@ func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalanc icaTimeoutNanos := k.GetParam(ctx, types.KeyICATimeoutNanos) icaTimeoutNanos = cast.ToUint64(ctx.BlockTime().UnixNano()) + icaTimeoutNanos - _, err = k.SubmitTxs(ctx, connectionId, msgs, *feeAccount, icaTimeoutNanos, "", nil) + _, err = k.SubmitTxs(ctx, connectionId, msgs, types.ICAAccountType_FEE, icaTimeoutNanos, "", nil) if err != nil { return nil, errorsmod.Wrapf(err, "failed to submit txs") } diff --git a/x/stakeibc/keeper/msg_server_clear_balance_test.go b/x/stakeibc/keeper/msg_server_clear_balance_test.go index 05479a3ea4..265e68b69c 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance_test.go +++ b/x/stakeibc/keeper/msg_server_clear_balance_test.go @@ -26,21 +26,18 @@ type ClearBalanceTestCase struct { func (s *KeeperTestSuite) SetupClearBalance() ClearBalanceTestCase { // fee account feeAccountOwner := fmt.Sprintf("%s.%s", HostChainId, "FEE") - feeChannelID := s.CreateICAChannel(feeAccountOwner) + feeChannelID, _ := s.CreateICAChannel(feeAccountOwner) feeAddress := s.IcaAddresses[feeAccountOwner] // hz - zoneAddress := types.NewZoneAddress(HostChainId) + depositAddress := types.NewHostZoneDepositAddress(HostChainId) hostZone := stakeibctypes.HostZone{ ChainId: HostChainId, ConnectionId: ibctesting.FirstConnectionID, HostDenom: Atom, IbcDenom: IbcAtom, RedemptionRate: sdk.NewDec(1.0), - Address: zoneAddress.String(), - FeeAccount: &stakeibctypes.ICAAccount{ - Address: feeAddress, - Target: stakeibctypes.ICAAccountType_FEE, - }, + DepositAddress: depositAddress.String(), + FeeIcaAddress: feeAddress, } amount := sdkmath.NewInt(1_000_000) @@ -99,10 +96,10 @@ func (s *KeeperTestSuite) TestClearBalance_HostChainMissing() { func (s *KeeperTestSuite) TestClearBalance_FeeAccountMissing() { tc := s.SetupClearBalance() // no fee account - tc.initialState.hz.FeeAccount = nil + tc.initialState.hz.FeeIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, tc.initialState.hz) _, err := s.GetMsgServer().ClearBalance(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) - s.Require().EqualError(err, "chainId: GAIA: fee account is not registered") + s.Require().EqualError(err, "fee acount not found for chainId: GAIA: ICA acccount not found on host zone") } func (s *KeeperTestSuite) TestClearBalance_ParseCoinError() { diff --git a/x/stakeibc/keeper/msg_server_delete_validator_test.go b/x/stakeibc/keeper/msg_server_delete_validator_test.go index 05cc896915..90175030ae 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator_test.go +++ b/x/stakeibc/keeper/msg_server_delete_validator_test.go @@ -18,16 +18,18 @@ type DeleteValidatorTestCase struct { func (s *KeeperTestSuite) SetupDeleteValidator() DeleteValidatorTestCase { initialValidators := []*stakeibctypes.Validator{ { - Name: "val1", - Address: "stride_VAL1", - Weight: 0, - DelegationAmt: sdkmath.ZeroInt(), + Name: "val1", + Address: "stride_VAL1", + Weight: 0, + Delegation: sdkmath.ZeroInt(), + SharesToTokensRate: sdk.OneDec(), }, { - Name: "val2", - Address: "stride_VAL2", - Weight: 0, - DelegationAmt: sdkmath.ZeroInt(), + Name: "val2", + Address: "stride_VAL2", + Weight: 0, + Delegation: sdkmath.ZeroInt(), + SharesToTokensRate: sdk.OneDec(), }, } @@ -109,7 +111,7 @@ func (s *KeeperTestSuite) TestDeleteValidator_NonZeroDelegation() { // Update val1 to have a non-zero delegation hostZone := tc.hostZone - hostZone.Validators[0].DelegationAmt = sdkmath.NewInt(1) + hostZone.Validators[0].Delegation = sdkmath.NewInt(1) s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) _, err := s.GetMsgServer().DeleteValidator(sdk.WrapSDKContext(s.Ctx), &tc.validMsgs[0]) diff --git a/x/stakeibc/keeper/msg_server_liquid_stake.go b/x/stakeibc/keeper/msg_server_liquid_stake.go index a4119760e2..712436a373 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake.go @@ -42,7 +42,7 @@ func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) if err != nil { return nil, errorsmod.Wrapf(err, "user's address is invalid") } - hostZoneAddress, err := sdk.AccAddressFromBech32(hostZone.Address) + hostZoneDepositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) if err != nil { return nil, errorsmod.Wrapf(err, "host zone address is invalid") } @@ -84,7 +84,7 @@ func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) } // Transfer the native tokens from the user to module account - if err := k.bankKeeper.SendCoins(ctx, liquidStakerAddress, hostZoneAddress, sdk.NewCoins(nativeCoin)); err != nil { + if err := k.bankKeeper.SendCoins(ctx, liquidStakerAddress, hostZoneDepositAddress, sdk.NewCoins(nativeCoin)); err != nil { return nil, errorsmod.Wrap(err, "failed to send tokens from Account to Module") } @@ -103,18 +103,7 @@ func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) k.RecordsKeeper.SetDepositRecord(ctx, *depositRecord) // Emit liquid stake event - ctx.EventManager().EmitEvent( - sdk.NewEvent( - types.EventTypeLiquidStakeRequest, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(types.AttributeKeyLiquidStaker, msg.Creator), - sdk.NewAttribute(types.AttributeKeyHostZone, hostZone.ChainId), - sdk.NewAttribute(types.AttributeKeyNativeBaseDenom, msg.HostDenom), - sdk.NewAttribute(types.AttributeKeyNativeIBCDenom, hostZone.IbcDenom), - sdk.NewAttribute(types.AttributeKeyNativeAmount, msg.Amount.String()), - sdk.NewAttribute(types.AttributeKeyStTokenAmount, stAmount.String()), - ), - ) + EmitSuccessfulLiquidStakeEvent(ctx, msg, *hostZone, stAmount) k.hooks.AfterLiquidStake(ctx, liquidStakerAddress) return &types.MsgLiquidStakeResponse{}, nil diff --git a/x/stakeibc/keeper/msg_server_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_liquid_stake_test.go index 3f5d9aa051..1e4ab5ec65 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake_test.go @@ -40,10 +40,10 @@ func (s *KeeperTestSuite) SetupLiquidStake() LiquidStakeTestCase { } s.FundAccount(user.acc, user.atomBalance) - zoneAddress := stakeibctypes.NewZoneAddress(HostChainId) + depositAddress := stakeibctypes.NewHostZoneDepositAddress(HostChainId) zoneAccount := Account{ - acc: zoneAddress, + acc: depositAddress, atomBalance: sdk.NewInt64Coin(IbcAtom, 10_000_000), stAtomBalance: sdk.NewInt64Coin(StAtom, 10_000_000), } @@ -55,7 +55,7 @@ func (s *KeeperTestSuite) SetupLiquidStake() LiquidStakeTestCase { HostDenom: Atom, IbcDenom: IbcAtom, RedemptionRate: sdk.NewDec(1.0), - Address: zoneAddress.String(), + DepositAddress: depositAddress.String(), } epochTracker := stakeibctypes.EpochTracker{ @@ -133,7 +133,7 @@ func (s *KeeperTestSuite) TestLiquidStake_DifferentRedemptionRates() { user := tc.user msg := tc.validMsg - // Loop over exchange rates: {0.92, 0.94, ..., 1.2} + // Loop over sharesToTokens rates: {0.92, 0.94, ..., 1.2} for i := -8; i <= 10; i += 2 { redemptionDelta := sdk.NewDecWithPrec(1.0, 1).Quo(sdk.NewDec(10)).Mul(sdk.NewDec(int64(i))) // i = 2 => delta = 0.02 newRedemptionRate := sdk.NewDec(1.0).Add(redemptionDelta) @@ -195,7 +195,7 @@ func (s *KeeperTestSuite) TestLiquidStake_InvalidHostAddress() { // Update hostzone with invalid address badHostZone := tc.initialState.hostZone - badHostZone.Address = "cosmosXXX" + badHostZone.DepositAddress = "cosmosXXX" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) _, err := s.GetMsgServer().LiquidStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go new file mode 100644 index 0000000000..993fca3b34 --- /dev/null +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go @@ -0,0 +1,187 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/gogo/protobuf/proto" //nolint:staticcheck + + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +// Exchanges a user's LSM tokenized shares for stTokens using the current redemption rate +// The LSM tokens must live on Stride as an IBC voucher (whose denomtrace we recognize) +// before this function is called +// +// The typical flow: +// - A staker tokenizes their delegation on the host zone +// - The staker IBC transfers their tokenized shares to Stride +// - They then call LSMLiquidStake +// - - The staker's LSM Tokens are sent to the Stride module account +// - - The staker recieves stTokens +// +// As a safety measure, at period checkpoints, the validator's sharesToTokens rate is queried and the transaction +// is not settled until the query returns +// As a result, this transaction has been split up into a (1) Start and (2) Finish function +// - If no query is needed, (2) is called immediately after (1) +// - If a query is needed, (2) is called in the query callback +// +// The transaction response indicates if the query occurred by returning an attribute `TransactionComplete` set to false +func (k msgServer) LSMLiquidStake(goCtx context.Context, msg *types.MsgLSMLiquidStake) (*types.MsgLSMLiquidStakeResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + lsmLiquidStake, err := k.StartLSMLiquidStake(ctx, *msg) + if err != nil { + return nil, err + } + + if k.ShouldCheckIfValidatorWasSlashed(ctx, *lsmLiquidStake.Validator, msg.Amount) { + if err := k.SubmitValidatorSlashQuery(ctx, lsmLiquidStake); err != nil { + return nil, err + } + + EmitPendingLSMLiquidStakeEvent(ctx, *lsmLiquidStake.HostZone, *lsmLiquidStake.Deposit) + + return &types.MsgLSMLiquidStakeResponse{TransactionComplete: false}, nil + } + + async := false + if err := k.FinishLSMLiquidStake(ctx, lsmLiquidStake, async); err != nil { + return nil, err + } + + return &types.MsgLSMLiquidStakeResponse{TransactionComplete: true}, nil +} + +// StartLSMLiquidStake runs the transactional logic that occurs before the optional query +// This includes validation on the LSM Token and the stToken amount calculation +func (k Keeper) StartLSMLiquidStake(ctx sdk.Context, msg types.MsgLSMLiquidStake) (types.LSMLiquidStake, error) { + // Validate the provided message parameters - including the denom and staker balance + lsmLiquidStake, err := k.ValidateLSMLiquidStake(ctx, msg) + if err != nil { + return types.LSMLiquidStake{}, err + } + hostZone := lsmLiquidStake.HostZone + + // Check if we already have tokens with this denom in records + _, found := k.RecordsKeeper.GetLSMTokenDeposit(ctx, hostZone.ChainId, lsmLiquidStake.Deposit.Denom) + if found { + return types.LSMLiquidStake{}, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, + "there is already a previous record with this denom being processed: %s", lsmLiquidStake.Deposit.Denom) + } + + // Determine the amount of stTokens to mint using the redemption rate and the validator's sharesToTokens rate + // StTokens = LSMTokenShares * Validator SharesToTokens Rate / Redemption Rate + // Note: in the event of a slash query, these tokens will be minted only if the + // validator's sharesToTokens rate did not change + stCoin := k.CalculateLSMStToken(msg.Amount, lsmLiquidStake) + if stCoin.Amount.IsZero() { + return types.LSMLiquidStake{}, errorsmod.Wrapf(types.ErrInsufficientLiquidStake, + "Liquid stake of %s%s would return 0 stTokens", msg.Amount.String(), hostZone.HostDenom) + } + + // Add the stToken to this deposit record + lsmLiquidStake.Deposit.StToken = stCoin + k.RecordsKeeper.SetLSMTokenDeposit(ctx, *lsmLiquidStake.Deposit) + + return lsmLiquidStake, nil +} + +// SubmitValidatorSlashQuery submits an interchain query for the validator's sharesToTokens rate +// This is done periodically at checkpoints denominated in native tokens +// (e.g. every 100k ATOM that's LSM liquid staked with validator X) +func (k Keeper) SubmitValidatorSlashQuery(ctx sdk.Context, lsmLiquidStake types.LSMLiquidStake) error { + chainId := lsmLiquidStake.HostZone.ChainId + validatorAddress := lsmLiquidStake.Validator.Address + timeoutDuration := LSMSlashQueryTimeout + timeoutPolicy := icqtypes.TimeoutPolicy_EXECUTE_QUERY_CALLBACK + + // Build and serialize the callback data required to complete the LSM Liquid stake upon query callback + callbackData := types.ValidatorSharesToTokensQueryCallback{ + LsmLiquidStake: &lsmLiquidStake, + } + callbackDataBz, err := proto.Marshal(&callbackData) + if err != nil { + return errorsmod.Wrapf(err, "unable to serialize LSMLiquidStake struct for validator sharesToTokens rate query callback") + } + + return k.SubmitValidatorSharesToTokensRateICQ(ctx, chainId, validatorAddress, callbackDataBz, timeoutDuration, timeoutPolicy) +} + +// FinishLSMLiquidStake finishes the liquid staking flow by escrowing the LSM token, +// sending a user their stToken, and then IBC transfering the LSM Token to the host zone +// +// If the slash query interrupted the transaction, this function is called +// asynchronously after the query callback +// +// If no slash query was needed, this is called synchronously after StartLSMLiquidStake +// If this is run asynchronously, we need to re-validate the transaction info (e.g. staker's balance) +func (k Keeper) FinishLSMLiquidStake(ctx sdk.Context, lsmLiquidStake types.LSMLiquidStake, async bool) error { + hostZone := lsmLiquidStake.HostZone + lsmTokenDeposit := *lsmLiquidStake.Deposit + + // If the transaction was interrupted by the slash query, + // validate the LSM Liquid stake message parameters again + // The most significant check here is that the user still has sufficient balance for this LSM liquid stake + if async { + lsmLiquidStakeMsg := types.MsgLSMLiquidStake{ + Creator: lsmTokenDeposit.StakerAddress, + LsmTokenIbcDenom: lsmTokenDeposit.IbcDenom, + Amount: lsmTokenDeposit.Amount, + } + if _, err := k.ValidateLSMLiquidStake(ctx, lsmLiquidStakeMsg); err != nil { + return err + } + } + + // Get the staker's address and the host zone's deposit account address (which will custody the tokens) + liquidStakerAddress := sdk.MustAccAddressFromBech32(lsmTokenDeposit.StakerAddress) + hostZoneDepositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) + if err != nil { + return errorsmod.Wrapf(err, "host zone address is invalid") + } + + // Transfer the LSM token to the deposit account + lsmIBCToken := sdk.NewCoin(lsmTokenDeposit.IbcDenom, lsmTokenDeposit.Amount) + if err := k.bankKeeper.SendCoins(ctx, liquidStakerAddress, hostZoneDepositAddress, sdk.NewCoins(lsmIBCToken)); err != nil { + return errorsmod.Wrap(err, "failed to send tokens from Account to Module") + } + + // Mint stToken and send to the user + stToken := sdk.NewCoins(lsmTokenDeposit.StToken) + if err := k.bankKeeper.MintCoins(ctx, types.ModuleName, stToken); err != nil { + return errorsmod.Wrapf(err, "Failed to mint stTokens") + } + if err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, liquidStakerAddress, stToken); err != nil { + return errorsmod.Wrapf(err, "Failed to send %s from module to account", lsmTokenDeposit.StToken.String()) + } + + // Get delegation account address as the destination for the LSM Token + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation address found for %s", hostZone.ChainId) + } + + // Update the deposit status + k.RecordsKeeper.UpdateLSMTokenDepositStatus(ctx, lsmTokenDeposit, recordstypes.LSMTokenDeposit_TRANSFER_QUEUE) + + // Update the slash query progress on the validator + if err := k.IncrementValidatorSlashQueryProgress( + ctx, + hostZone.ChainId, + lsmTokenDeposit.ValidatorAddress, + lsmTokenDeposit.Amount, + ); err != nil { + return err + } + + // Emit an LSM liquid stake event + EmitSuccessfulLSMLiquidStakeEvent(ctx, *hostZone, lsmTokenDeposit) + + k.hooks.AfterLiquidStake(ctx, liquidStakerAddress) + return nil +} diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go new file mode 100644 index 0000000000..8a4b39b2e2 --- /dev/null +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go @@ -0,0 +1,336 @@ +package keeper_test + +import ( + "fmt" + + "github.com/gogo/protobuf/proto" //nolint:staticcheck + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +type LSMLiquidStakeTestCase struct { + hostZone types.HostZone + liquidStakerAddress sdk.AccAddress + depositAddress sdk.AccAddress + initialBalance sdkmath.Int + initialQueryProgress sdkmath.Int + queryCheckpoint sdkmath.Int + lsmTokenIBCDenom string + validMsg *types.MsgLSMLiquidStake +} + +// Helper function to add the port and channel onto the LSMTokenBaseDenom, +// hash it, and then store the trace in the IBC store +// Returns the ibc hash +func (s *KeeperTestSuite) getLSMTokenIBCDenom() string { + sourcePrefix := transfertypes.GetDenomPrefix(transfertypes.PortID, ibctesting.FirstChannelID) + prefixedDenom := sourcePrefix + LSMTokenBaseDenom + lsmTokenDenomTrace := transfertypes.ParseDenomTrace(prefixedDenom) + s.App.TransferKeeper.SetDenomTrace(s.Ctx, lsmTokenDenomTrace) + return lsmTokenDenomTrace.IBCDenom() +} + +func (s *KeeperTestSuite) SetupTestLSMLiquidStake() LSMLiquidStakeTestCase { + initialBalance := sdkmath.NewInt(3000) + stakeAmount := sdkmath.NewInt(1000) + userAddress := s.TestAccs[0] + depositAddress := types.NewHostZoneDepositAddress(HostChainId) + + // Need valid IBC denom here to test parsing + lsmTokenIBCDenom := s.getLSMTokenIBCDenom() + + // Fund the user's account with the LSM token + s.FundAccount(userAddress, sdk.NewCoin(lsmTokenIBCDenom, initialBalance)) + + // Add the slash interval + // TVL: 100k, Checkpoint: 1% of 1M = 10k + // Progress towards query: 8000 + // => Liquid Stake of 2k will trip query + totalHostZoneStake := sdkmath.NewInt(1_000_000) + queryCheckpoint := sdkmath.NewInt(10_000) + progressTowardsQuery := sdkmath.NewInt(8000) + params := types.DefaultParams() + params.ValidatorSlashQueryThreshold = 1 // 1 % + s.App.StakeibcKeeper.SetParams(s.Ctx, params) + + // Sanity check + onePercent := sdk.MustNewDecFromStr("0.01") + s.Require().Equal(queryCheckpoint.Int64(), onePercent.Mul(sdk.NewDecFromInt(totalHostZoneStake)).TruncateInt64(), + "setup failed - query checkpoint must be 1% of total host zone stake") + + // Add the host zone with a valid zone address as the LSM custodian + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + RedemptionRate: sdk.NewDec(1.0), + DepositAddress: depositAddress.String(), + TransferChannelId: ibctesting.FirstChannelID, + ConnectionId: ibctesting.FirstConnectionID, + TotalDelegations: totalHostZoneStake, + Validators: []*types.Validator{{ + Address: ValAddress, + SlashQueryProgressTracker: progressTowardsQuery, + SlashQueryCheckpoint: queryCheckpoint, + SharesToTokensRate: sdk.OneDec(), + }}, + DelegationIcaAddress: "cosmos_DELEGATION", + LsmLiquidStakeEnabled: true, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Mock the latest client height for the ICQ submission + s.MockClientLatestHeight(1) + + return LSMLiquidStakeTestCase{ + hostZone: hostZone, + liquidStakerAddress: userAddress, + depositAddress: depositAddress, + initialBalance: initialBalance, + initialQueryProgress: progressTowardsQuery, + queryCheckpoint: queryCheckpoint, + lsmTokenIBCDenom: lsmTokenIBCDenom, + validMsg: &types.MsgLSMLiquidStake{ + Creator: userAddress.String(), + LsmTokenIbcDenom: lsmTokenIBCDenom, + Amount: stakeAmount, + }, + } +} + +func (s *KeeperTestSuite) TestLSMLiquidStake_Successful_NoSharesToTokensRateQuery() { + tc := s.SetupTestLSMLiquidStake() + + // Call LSM Liquid stake with a valid message + msgResponse, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().NoError(err, "no error expected when calling lsm liquid stake") + s.Require().True(msgResponse.TransactionComplete, "transaction should be complete") + + // Confirm the LSM token was sent to the protocol + userLsmBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.liquidStakerAddress, tc.lsmTokenIBCDenom) + s.Require().Equal(tc.initialBalance.Sub(tc.validMsg.Amount).Int64(), userLsmBalance.Amount.Int64(), + "lsm token balance of user account") + + // Confirm stToken was sent to the user + userStTokenBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.liquidStakerAddress, StAtom) + s.Require().Equal(tc.validMsg.Amount.Int64(), userStTokenBalance.Amount.Int64(), "user stToken balance") + + // Confirm an LSMDeposit was created + expectedDepositId := keeper.GetLSMTokenDepositId(s.Ctx.BlockHeight(), HostChainId, tc.validMsg.Creator, LSMTokenBaseDenom) + expectedDeposit := recordstypes.LSMTokenDeposit{ + DepositId: expectedDepositId, + ChainId: HostChainId, + Denom: LSMTokenBaseDenom, + StakerAddress: s.TestAccs[0].String(), + IbcDenom: tc.lsmTokenIBCDenom, + ValidatorAddress: ValAddress, + Amount: tc.validMsg.Amount, + Status: recordstypes.LSMTokenDeposit_TRANSFER_QUEUE, + StToken: sdk.NewCoin(StAtom, tc.validMsg.Amount), + } + actualDeposit, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenBaseDenom) + s.Require().True(found, "lsm token deposit should have been found after LSM liquid stake") + s.Require().Equal(expectedDeposit, actualDeposit) + + // Confirm slash query progress was incremented + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + expectedQueryProgress := tc.initialQueryProgress.Add(tc.validMsg.Amount) + s.Require().True(found, "host zone should have been found") + s.Require().Equal(expectedQueryProgress.Int64(), hostZone.Validators[0].SlashQueryProgressTracker.Int64(), "slash query progress") +} + +func (s *KeeperTestSuite) TestLSMLiquidStake_Successful_WithSharesToTokensRateQuery() { + tc := s.SetupTestLSMLiquidStake() + + // Increase the liquid stake size so that it breaks the query checkpoint + // queryProgressSlack is the remaining amount that can be staked in one message before a slash query is issued + queryProgressSlack := tc.queryCheckpoint.Sub(tc.initialQueryProgress) + tc.validMsg.Amount = queryProgressSlack.Add(sdk.NewInt(1000)) + + // Call LSM Liquid stake + msgResponse, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().NoError(err, "no error expected when calling lsm liquid stake") + s.Require().False(msgResponse.TransactionComplete, "transaction should still be pending") + + // Confirm stToken was NOT sent to the user + userStTokenBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.liquidStakerAddress, StAtom) + s.Require().True(userStTokenBalance.Amount.IsZero(), "user stToken balance") + + // Confirm query was submitted + allQueries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) + s.Require().Len(allQueries, 1) + + // Confirm query metadata + actualQuery := allQueries[0] + s.Require().Equal(HostChainId, actualQuery.ChainId, "query chain-id") + s.Require().Equal(ibctesting.FirstConnectionID, actualQuery.ConnectionId, "query connection-id") + s.Require().Equal(icqtypes.STAKING_STORE_QUERY_WITH_PROOF, actualQuery.QueryType, "query types") + + s.Require().Equal(types.ModuleName, actualQuery.CallbackModule, "callback module") + s.Require().Equal(keeper.ICQCallbackID_Validator, actualQuery.CallbackId, "callback-id") + + expectedTimeout := uint64(s.Ctx.BlockTime().UnixNano() + (keeper.LSMSlashQueryTimeout).Nanoseconds()) + s.Require().Equal(keeper.LSMSlashQueryTimeout, actualQuery.TimeoutDuration, "timeout duration") + s.Require().Equal(int64(expectedTimeout), int64(actualQuery.TimeoutTimestamp), "timeout timestamp") + + // Confirm query callback data + s.Require().True(len(actualQuery.CallbackData) > 0, "callback data exists") + + expectedStToken := sdk.NewCoin(StAtom, tc.validMsg.Amount) + expectedDepositId := keeper.GetLSMTokenDepositId(s.Ctx.BlockHeight(), HostChainId, tc.validMsg.Creator, LSMTokenBaseDenom) + expectedLSMTokenDeposit := recordstypes.LSMTokenDeposit{ + DepositId: expectedDepositId, + ChainId: HostChainId, + Denom: LSMTokenBaseDenom, + IbcDenom: tc.lsmTokenIBCDenom, + StakerAddress: tc.validMsg.Creator, + ValidatorAddress: ValAddress, + Amount: tc.validMsg.Amount, + StToken: expectedStToken, + Status: recordstypes.LSMTokenDeposit_DEPOSIT_PENDING, + } + + var actualCallbackData types.ValidatorSharesToTokensQueryCallback + err = proto.Unmarshal(actualQuery.CallbackData, &actualCallbackData) + s.Require().NoError(err, "no error expected when unmarshalling query callback data") + + lsmLiquidStake := actualCallbackData.LsmLiquidStake + s.Require().Equal(HostChainId, lsmLiquidStake.HostZone.ChainId, "callback data - host zone") + s.Require().Equal(ValAddress, lsmLiquidStake.Validator.Address, "callback data - validator") + + s.Require().Equal(expectedLSMTokenDeposit, *lsmLiquidStake.Deposit, "callback data - deposit") +} + +func (s *KeeperTestSuite) TestLSMLiquidStake_DifferentRedemptionRates() { + tc := s.SetupTestLSMLiquidStake() + tc.validMsg.Amount = sdk.NewInt(100) // reduce the stake amount to prevent insufficient balance error + + // Loop over sharesToTokens rates: {0.92, 0.94, ..., 1.2} + interval := sdk.MustNewDecFromStr("0.01") + for i := -8; i <= 10; i += 2 { + redemptionDelta := interval.Mul(sdk.NewDec(int64(i))) // i = 2 => delta = 0.02 + newRedemptionRate := sdk.NewDec(1.0).Add(redemptionDelta) + redemptionRateFloat := newRedemptionRate + + // Update rate in host zone + hz := tc.hostZone + hz.RedemptionRate = newRedemptionRate + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hz) + + // Liquid stake for each balance and confirm stAtom minted + startingStAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.liquidStakerAddress, StAtom).Amount + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().NoError(err) + endingStAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.liquidStakerAddress, StAtom).Amount + actualStAtomMinted := endingStAtomBalance.Sub(startingStAtomBalance) + + expectedStAtomMinted := sdk.NewDecFromInt(tc.validMsg.Amount).Quo(redemptionRateFloat).TruncateInt() + testDescription := fmt.Sprintf("st atom balance for redemption rate: %v", redemptionRateFloat) + s.Require().Equal(expectedStAtomMinted, actualStAtomMinted, testDescription) + + // Cleanup the LSMTokenDeposit record to prevent an error on the next run + s.App.RecordsKeeper.RemoveLSMTokenDeposit(s.Ctx, HostChainId, LSMTokenBaseDenom) + } +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_NotIBCDenom() { + tc := s.SetupTestLSMLiquidStake() + + // Change the message so that the denom is not an IBC token + invalidMsg := tc.validMsg + invalidMsg.LsmTokenIbcDenom = "fake_ibc_denom" + + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), invalidMsg) + s.Require().ErrorContains(err, "lsm token is not an IBC token (fake_ibc_denom)") +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_HostZoneNotFound() { + tc := s.SetupTestLSMLiquidStake() + + // Change the message so that the denom is an IBC denom from a channel that is not supported + sourcePrefix := transfertypes.GetDenomPrefix(transfertypes.PortID, "channel-1") + prefixedDenom := sourcePrefix + LSMTokenBaseDenom + lsmTokenDenomTrace := transfertypes.ParseDenomTrace(prefixedDenom) + s.App.TransferKeeper.SetDenomTrace(s.Ctx, lsmTokenDenomTrace) + + invalidMsg := tc.validMsg + invalidMsg.LsmTokenIbcDenom = lsmTokenDenomTrace.IBCDenom() + + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), invalidMsg) + s.Require().ErrorContains(err, "transfer channel-id from LSM token (channel-1) does not match any registered host zone") +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_ValidatorNotFound() { + tc := s.SetupTestLSMLiquidStake() + + // Change the message so that the base denom is from a non-existent validator + sourcePrefix := transfertypes.GetDenomPrefix(transfertypes.PortID, ibctesting.FirstChannelID) + prefixedDenom := sourcePrefix + "cosmosvaloperXXX/42" + lsmTokenDenomTrace := transfertypes.ParseDenomTrace(prefixedDenom) + s.App.TransferKeeper.SetDenomTrace(s.Ctx, lsmTokenDenomTrace) + + invalidMsg := tc.validMsg + invalidMsg.LsmTokenIbcDenom = lsmTokenDenomTrace.IBCDenom() + + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), invalidMsg) + s.Require().ErrorContains(err, "validator (cosmosvaloperXXX) is not registered in the Stride validator set") +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_DepositAlreadyExists() { + tc := s.SetupTestLSMLiquidStake() + + // Set a deposit with the same chainID and denom in the store + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, recordstypes.LSMTokenDeposit{ + ChainId: HostChainId, + Denom: LSMTokenBaseDenom, + }) + + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().ErrorContains(err, "there is already a previous record with this denom being processed") +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_InvalidDepositAddress() { + tc := s.SetupTestLSMLiquidStake() + + // Remove the host zones address from the store + invalidHostZone := tc.hostZone + invalidHostZone.DepositAddress = "" + s.App.StakeibcKeeper.SetHostZone(s.Ctx, invalidHostZone) + + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().ErrorContains(err, "host zone address is invalid") +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_InsufficientBalance() { + tc := s.SetupTestLSMLiquidStake() + + // Send out all the user's coins so that they have an insufficient balance of LSM tokens + initialBalanceCoin := sdk.NewCoins(sdk.NewCoin(tc.lsmTokenIBCDenom, tc.initialBalance)) + err := s.App.BankKeeper.SendCoins(s.Ctx, tc.liquidStakerAddress, s.TestAccs[1], initialBalanceCoin) + s.Require().NoError(err) + + _, err = s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().ErrorContains(err, "insufficient funds") +} + +func (s *KeeperTestSuite) TestLSMLiquidStakeFailed_ZeroStTokens() { + tc := s.SetupTestLSMLiquidStake() + + // Adjust redemption rate and liquid stake amount so that the number of stTokens would be zero + // stTokens = 1(amount) / 1.1(RR) = rounds down to 0 + hostZone := tc.hostZone + hostZone.RedemptionRate = sdk.NewDecWithPrec(11, 1) + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + tc.validMsg.Amount = sdkmath.NewInt(1) + + // The liquid stake should fail + _, err := s.GetMsgServer().LSMLiquidStake(sdk.WrapSDKContext(s.Ctx), tc.validMsg) + s.Require().EqualError(err, "Liquid stake of 1uatom would return 0 stTokens: Liquid staked amount is too small") +} diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators.go b/x/stakeibc/keeper/msg_server_rebalance_validators.go index c542e9e5f7..62eaaf01ca 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators.go @@ -3,17 +3,9 @@ package keeper import ( "context" "fmt" - "sort" - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - proto "github.com/cosmos/gogoproto/proto" - errorsmod "cosmossdk.io/errors" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - "github.com/Stride-Labs/stride/v13/utils" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) @@ -21,134 +13,8 @@ func (k msgServer) RebalanceValidators(goCtx context.Context, msg *types.MsgReba ctx := sdk.UnwrapSDKContext(goCtx) k.Logger(ctx).Info(fmt.Sprintf("RebalanceValidators executing %v", msg)) - hostZone, found := k.GetHostZone(ctx, msg.HostZone) - if !found { - k.Logger(ctx).Error(fmt.Sprintf("Host Zone not found %s", msg.HostZone)) - return nil, types.ErrInvalidHostZone - } - - validatorDeltas, err := k.GetValidatorDelegationAmtDifferences(ctx, hostZone) - if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Error getting validator deltas for Host Zone %s: %s", hostZone.ChainId, err)) + if err := k.RebalanceDelegationsForHostZone(ctx, msg.HostZone); err != nil { return nil, err } - - // we convert the above map into a list of tuples - type valPair struct { - deltaAmt sdkmath.Int - valAddr string - } - valDeltaList := make([]valPair, 0) - // DO NOT REMOVE: StringMapKeys fixes non-deterministic map iteration - for _, valAddr := range utils.StringMapKeys(validatorDeltas) { - deltaAmt := validatorDeltas[valAddr] - k.Logger(ctx).Info(fmt.Sprintf("Adding deltaAmt: %v to validator: %s", deltaAmt, valAddr)) - valDeltaList = append(valDeltaList, valPair{deltaAmt, valAddr}) - } - // now we sort that list - lessFunc := func(i, j int) bool { - return valDeltaList[i].deltaAmt.LT(valDeltaList[j].deltaAmt) - } - sort.SliceStable(valDeltaList, lessFunc) - // now varDeltaList is sorted by deltaAmt - overWeightIndex := 0 - underWeightIndex := len(valDeltaList) - 1 - - // check if there is a large enough rebalance, if not, just exit - total_delegation := k.GetTotalValidatorDelegations(hostZone) - if total_delegation.IsZero() { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "no validator delegations found for Host Zone %s, cannot rebalance 0 delegations!", hostZone.ChainId) - } - - var msgs []proto.Message - delegationIca := hostZone.GetDelegationAccount() - if delegationIca == nil || delegationIca.GetAddress() == "" { - k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a delegation address!", hostZone.ChainId)) - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid delegation account") - } - - delegatorAddress := delegationIca.GetAddress() - - // start construction callback - rebalanceCallback := types.RebalanceCallback{ - HostZoneId: hostZone.ChainId, - Rebalancings: []*types.Rebalancing{}, - } - - for i := uint64(1); i <= msg.NumRebalance; i++ { - underWeightElem := valDeltaList[underWeightIndex] - overWeightElem := valDeltaList[overWeightIndex] - if underWeightElem.deltaAmt.LT(sdkmath.ZeroInt()) { - // if underWeightElem is negative, we're done rebalancing - break - } - if overWeightElem.deltaAmt.GT(sdkmath.ZeroInt()) { - // if overWeightElem is positive, we're done rebalancing - break - } - // underweight Elem is positive, overweight Elem is negative - overWeightElemAbs := overWeightElem.deltaAmt.Abs() - var redelegateMsg *stakingTypes.MsgBeginRedelegate - if underWeightElem.deltaAmt.GT(overWeightElemAbs) { - // if the underweight element is more off than the overweight element - // we transfer stake from the underweight element to the overweight element - underWeightElem.deltaAmt = underWeightElem.deltaAmt.Sub(overWeightElemAbs) - overWeightIndex += 1 - // issue an ICA call to the host zone to rebalance the validator - redelegateMsg = &stakingTypes.MsgBeginRedelegate{ - DelegatorAddress: delegatorAddress, - ValidatorSrcAddress: overWeightElem.valAddr, - ValidatorDstAddress: underWeightElem.valAddr, - Amount: sdk.NewCoin(hostZone.HostDenom, overWeightElemAbs)} - msgs = append(msgs, redelegateMsg) - overWeightElem.deltaAmt = sdkmath.ZeroInt() - } else if underWeightElem.deltaAmt.LT(overWeightElemAbs) { - // if the overweight element is more overweight than the underweight element - overWeightElem.deltaAmt = overWeightElem.deltaAmt.Add(underWeightElem.deltaAmt) - underWeightIndex -= 1 - // issue an ICA call to the host zone to rebalance the validator - redelegateMsg = &stakingTypes.MsgBeginRedelegate{ - DelegatorAddress: delegatorAddress, - ValidatorSrcAddress: overWeightElem.valAddr, - ValidatorDstAddress: underWeightElem.valAddr, - Amount: sdk.NewCoin(hostZone.HostDenom, underWeightElem.deltaAmt)} - msgs = append(msgs, redelegateMsg) - underWeightElem.deltaAmt = sdkmath.ZeroInt() - } else { - // if the two elements are equal, we increment both slices - underWeightIndex -= 1 - overWeightIndex += 1 - // issue an ICA call to the host zone to rebalance the validator - redelegateMsg = &stakingTypes.MsgBeginRedelegate{ - DelegatorAddress: delegatorAddress, - ValidatorSrcAddress: overWeightElem.valAddr, - ValidatorDstAddress: underWeightElem.valAddr, - Amount: sdk.NewCoin(hostZone.HostDenom, underWeightElem.deltaAmt)} - msgs = append(msgs, redelegateMsg) - overWeightElem.deltaAmt = sdkmath.ZeroInt() - underWeightElem.deltaAmt = sdkmath.ZeroInt() - } - // add the rebalancing to the callback - // lastMsg grabs rebalanceMsg from above (due to the type, it's hard to ) - // lastMsg := (msgs[len(msgs)-1]).(*stakingTypes.MsgBeginRedelegate) - rebalanceCallback.Rebalancings = append(rebalanceCallback.Rebalancings, &types.Rebalancing{ - SrcValidator: redelegateMsg.ValidatorSrcAddress, - DstValidator: redelegateMsg.ValidatorDstAddress, - Amt: redelegateMsg.Amount.Amount, - }) - } - // marshall the callback - marshalledCallbackArgs, err := k.MarshalRebalanceCallbackArgs(ctx, rebalanceCallback) - if err != nil { - k.Logger(ctx).Error(err.Error()) - return nil, err - } - - connectionId := hostZone.GetConnectionId() - _, err = k.SubmitTxsStrideEpoch(ctx, connectionId, msgs, *hostZone.GetDelegationAccount(), ICACallbackID_Rebalance, marshalledCallbackArgs) - if err != nil { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "Failed to SubmitTxs for %s, %s, %s, %s", connectionId, hostZone.ChainId, msgs, err.Error()) - } - return &types.MsgRebalanceValidatorsResponse{}, nil } diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators_test.go b/x/stakeibc/keeper/msg_server_rebalance_validators_test.go deleted file mode 100644 index 0d3e019c92..0000000000 --- a/x/stakeibc/keeper/msg_server_rebalance_validators_test.go +++ /dev/null @@ -1,194 +0,0 @@ -package keeper_test - -import ( - sdkmath "cosmossdk.io/math" - _ "github.com/stretchr/testify/suite" - - sdk "github.com/cosmos/cosmos-sdk/types" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - ibctesting "github.com/cosmos/ibc-go/v7/testing" - - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" -) - -type RebalanceValidatorsTestCase struct { - hostZone stakeibctypes.HostZone - initialValidators []*stakeibctypes.Validator - validMsgs []stakeibctypes.MsgRebalanceValidators - delegationChannel string -} - -func (s *KeeperTestSuite) SetupRebalanceValidators() RebalanceValidatorsTestCase { - // Setup IBC - delegationIcaOwner := "GAIA.DELEGATION" - delegationChannelId := s.CreateICAChannel(delegationIcaOwner) - delegationAddr := s.IcaAddresses[delegationIcaOwner] - - // setup epochs - epochNumber := uint64(1) - epochTracker := stakeibctypes.EpochTracker{ - EpochIdentifier: epochtypes.STRIDE_EPOCH, - EpochNumber: epochNumber, - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts - } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) - - // define validators for host zone - initialValidators := []*stakeibctypes.Validator{ - { - Name: "val1", - Address: "stride_VAL1", - Weight: 100, - DelegationAmt: sdkmath.NewInt(100), - }, - { - Name: "val2", - Address: "stride_VAL2", - Weight: 500, - DelegationAmt: sdkmath.NewInt(500), - }, - { - Name: "val3", - Address: "stride_VAL3", - Weight: 200, - DelegationAmt: sdkmath.NewInt(200), - }, - { - Name: "val4", - Address: "stride_VAL4", - Weight: 400, - DelegationAmt: sdkmath.NewInt(400), - }, - { - Name: "val5", - Address: "stride_VAL5", - Weight: 400, - DelegationAmt: sdkmath.NewInt(400), - }, - } - - // setup host zone - hostZone := stakeibctypes.HostZone{ - ChainId: "GAIA", - Validators: initialValidators, - StakedBal: sdkmath.NewInt(1000), - ConnectionId: ibctesting.FirstConnectionID, - DelegationAccount: &stakeibctypes.ICAAccount{ - Address: delegationAddr, - Target: stakeibctypes.ICAAccountType_DELEGATION, - }, - HostDenom: "uatom", - } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - - // base valid messages - validMsgs := []stakeibctypes.MsgRebalanceValidators{ - { - Creator: "stride_ADDRESS", - HostZone: "GAIA", - NumRebalance: 1, - }, - { - Creator: "stride_ADDRESS", - HostZone: "GAIA", - NumRebalance: 2, - }, - } - - return RebalanceValidatorsTestCase{ - hostZone: hostZone, - initialValidators: initialValidators, - validMsgs: validMsgs, - delegationChannel: delegationChannelId, - } -} - -func (s *KeeperTestSuite) TestRebalanceValidators_Successful() { - tc := s.SetupRebalanceValidators() - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") - s.Require().True(found, "host zone should exist") - validators := hz.GetValidators() - s.Require().Equal(5, len(validators), "host zone should have 5 validators") - // modify weight to 25 - validators[0].Weight = 250 - validators[2].Weight = 100 - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hz) - - // get sequence ID for callbacks - portId := icatypes.ControllerPortPrefix + "GAIA.DELEGATION" - startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, portId, tc.delegationChannel) - s.Require().True(found, "sequence number not found before rebalance") - - // Rebalance one validator - badMsg_rightWeights := stakeibctypes.MsgRebalanceValidators{ - Creator: "stride_ADDRESS", - HostZone: "GAIA", - NumRebalance: 2, - } - _, err := s.GetMsgServer().RebalanceValidators(sdk.WrapSDKContext(s.Ctx), &badMsg_rightWeights) - s.Require().NoError(err, "rebalancing with 2 validators should succeed") - - // get stored callback data - callbackKey := icacallbackstypes.PacketID(portId, tc.delegationChannel, startSequence) - callbackData, found := s.App.StakeibcKeeper.ICACallbacksKeeper.GetCallbackData(s.Ctx, callbackKey) - s.Require().True(found, "callback should exist") - s.Require().Equal("rebalance", callbackData.CallbackId, "callback key should be rebalance") - callbackArgs, err := s.App.StakeibcKeeper.UnmarshalRebalanceCallbackArgs(s.Ctx, callbackData.CallbackArgs) - s.Require().NoError(err, "unmarshalling callback args error for callback key (%s)", callbackKey) - s.Require().Equal("GAIA", callbackArgs.HostZoneId, "callback host zone id should be GAIA") - - // verify callback rebalance is what we want - s.Require().Equal(2, len(callbackArgs.Rebalancings), "callback should have 2 rebalancing") - firstRebal := callbackArgs.Rebalancings[0] - s.Require().Equal(sdkmath.NewInt(104), firstRebal.Amt, "first rebalance should rebalance 104 ATOM") - s.Require().Equal("stride_VAL1", firstRebal.DstValidator, "first rebalance moves to val1") - s.Require().Equal("stride_VAL3", firstRebal.SrcValidator, "first rebalance takes from val3") - secondRebal := callbackArgs.Rebalancings[1] - s.Require().Equal(sdkmath.NewInt(13), secondRebal.Amt, "second rebalance should rebalance 13 ATOM") - s.Require().Equal("stride_VAL1", secondRebal.DstValidator, "second rebalance moves to val1") - s.Require().Equal("stride_VAL4", secondRebal.SrcValidator, "second rebalance takes from val4") -} - -func (s *KeeperTestSuite) TestRebalanceValidators_InvalidNoValidators() { - s.SetupRebalanceValidators() - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") - s.Require().True(found, "host zone should exist") - hz.Validators = []*stakeibctypes.Validator{} - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hz) - - // Rebalance with all weights properly set should fail - badMsg_noValidators := stakeibctypes.MsgRebalanceValidators{ - Creator: "stride_ADDRESS", - HostZone: "GAIA", - NumRebalance: 2, - } - _, err := s.GetMsgServer().RebalanceValidators(sdk.WrapSDKContext(s.Ctx), &badMsg_noValidators) - expectedErrMsg := "no non-zero validator weights" - s.Require().EqualError(err, expectedErrMsg, "rebalancing with no validators should fail") -} - -func (s *KeeperTestSuite) TestRebalanceValidators_InvalidAllValidatorsNoWeight() { - s.SetupRebalanceValidators() - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") - s.Require().True(found, "host zone should exist") - validators := hz.GetValidators() - for _, v := range validators { - v.Weight = 0 - } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hz) - - // Rebalance with all weights properly set should fail - badMsg_noValidators := stakeibctypes.MsgRebalanceValidators{ - Creator: "stride_ADDRESS", - HostZone: "GAIA", - NumRebalance: 2, - } - _, err := s.GetMsgServer().RebalanceValidators(sdk.WrapSDKContext(s.Ctx), &badMsg_noValidators) - expectedErrMsg := "no non-zero validator weights" - s.Require().EqualError(err, expectedErrMsg, "rebalancing with no validators should fail") -} diff --git a/x/stakeibc/keeper/msg_server_redeem_stake.go b/x/stakeibc/keeper/msg_server_redeem_stake.go index 1a028875e6..be4c24af29 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake.go @@ -47,7 +47,6 @@ func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) } // ensure the recipient address is a valid bech32 address on the hostZone - // TODO(TEST-112) do we need to check the hostZone before this check? Would need access to keeper _, err = utils.AccAddressFromBech32(msg.Receiver, hostZone.Bech32Prefix) if err != nil { return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid receiver address (%s)", err) @@ -57,7 +56,7 @@ func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) nativeAmount := sdk.NewDecFromInt(msg.Amount).Mul(hostZone.RedemptionRate).RoundInt() - if nativeAmount.GT(hostZone.StakedBal) { + if nativeAmount.GT(hostZone.TotalDelegations) { return nil, errorsmod.Wrapf(types.ErrInvalidAmount, "cannot unstake an amount g.t. staked balance on host zone: %v", msg.Amount) } @@ -68,7 +67,6 @@ func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) return nil, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) } - // TODO(TEST-112) bigint safety coinString := nativeAmount.String() + stDenom inCoin, err := sdk.ParseCoinNormalized(coinString) if err != nil { @@ -115,11 +113,11 @@ func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) // Escrow user's balance redeemCoin := sdk.NewCoins(sdk.NewCoin(stDenom, msg.Amount)) - bech32ZoneAddress, err := sdk.AccAddressFromBech32(hostZone.Address) + depositAddress, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) if err != nil { - return nil, fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.Address, hostZone.ChainId) + return nil, fmt.Errorf("could not bech32 decode address %s of zone with id: %s", hostZone.DepositAddress, hostZone.ChainId) } - err = k.bankKeeper.SendCoins(ctx, sender, bech32ZoneAddress, redeemCoin) + err = k.bankKeeper.SendCoins(ctx, sender, depositAddress, redeemCoin) if err != nil { k.Logger(ctx).Error("Failed to send sdk.NewCoins(inCoins) from account to module") return nil, errorsmod.Wrapf(types.ErrInsufficientFunds, "couldn't send %v derivative %s tokens to module account. err: %s", msg.Amount, hostZone.HostDenom, err.Error()) diff --git a/x/stakeibc/keeper/msg_server_redeem_stake_test.go b/x/stakeibc/keeper/msg_server_redeem_stake_test.go index 3f2e97efaf..978fae0e8c 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake_test.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake_test.go @@ -35,24 +35,24 @@ func (s *KeeperTestSuite) SetupRedeemStake() RedeemStakeTestCase { s.FundAccount(user.acc, user.atomBalance) s.FundAccount(user.acc, user.stAtomBalance) - zoneAddress := stakeibctypes.NewZoneAddress(HostChainId) + depositAddress := stakeibctypes.NewHostZoneDepositAddress(HostChainId) zoneAccount := Account{ - acc: zoneAddress, + acc: depositAddress, atomBalance: sdk.NewInt64Coin("ibc/uatom", 10_000_000), stAtomBalance: sdk.NewInt64Coin("stuatom", 10_000_000), } s.FundAccount(zoneAccount.acc, zoneAccount.atomBalance) s.FundAccount(zoneAccount.acc, zoneAccount.stAtomBalance) - // TODO define the host zone with stakedBal and validators with staked amounts + // TODO define the host zone with total delegation and validators with staked amounts hostZone := stakeibctypes.HostZone{ - ChainId: HostChainId, - HostDenom: "uatom", - Bech32Prefix: "cosmos", - RedemptionRate: sdk.NewDec(1.0), - StakedBal: sdkmath.NewInt(1234567890), - Address: zoneAddress.String(), + ChainId: HostChainId, + HostDenom: "uatom", + Bech32Prefix: "cosmos", + RedemptionRate: sdk.NewDec(1.0), + TotalDelegations: sdkmath.NewInt(1234567890), + DepositAddress: depositAddress.String(), } epochTrackerDay := stakeibctypes.EpochTracker{ @@ -280,7 +280,7 @@ func (s *KeeperTestSuite) TestRedeemStake_InvalidHostAddress() { // Update hostzone with invalid address badHostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.HostZone) - badHostZone.Address = "cosmosXXX" + badHostZone.DepositAddress = "cosmosXXX" s.App.StakeibcKeeper.SetHostZone(s.Ctx, badHostZone) _, err := s.GetMsgServer().RedeemStake(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 2f8c115e6d..45ddd5e35a 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -70,8 +70,8 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste } // create and save the zones's module account - zoneAddress := types.NewZoneAddress(chainId) - if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, zoneAddress); err != nil { + depositAddress := types.NewHostZoneDepositAddress(chainId) + if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, depositAddress); err != nil { return nil, errorsmod.Wrapf(err, "unable to create module account for host zone %s", chainId) } @@ -91,13 +91,14 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste IbcDenom: msg.IbcDenom, HostDenom: msg.HostDenom, TransferChannelId: msg.TransferChannelId, - // Start exchange rate at 1 upon registration - RedemptionRate: sdk.NewDec(1), - LastRedemptionRate: sdk.NewDec(1), - UnbondingFrequency: msg.UnbondingFrequency, - Address: zoneAddress.String(), - MinRedemptionRate: msg.MinRedemptionRate, - MaxRedemptionRate: msg.MaxRedemptionRate, + // Start sharesToTokens rate at 1 upon registration + RedemptionRate: sdk.NewDec(1), + LastRedemptionRate: sdk.NewDec(1), + UnbondingPeriod: msg.UnbondingPeriod, + DepositAddress: depositAddress.String(), + MinRedemptionRate: msg.MinRedemptionRate, + MaxRedemptionRate: msg.MaxRedemptionRate, + LsmLiquidStakeEnabled: msg.LsmLiquidStakeEnabled, } // write the zone back to the store k.SetHostZone(ctx, zone) diff --git a/x/stakeibc/keeper/msg_server_register_host_zone_test.go b/x/stakeibc/keeper/msg_server_register_host_zone_test.go index e83e014e27..6ab4ddeba6 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone_test.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone_test.go @@ -22,7 +22,7 @@ type RegisterHostZoneTestCase struct { validMsg stakeibctypes.MsgRegisterHostZone epochUnbondingRecordNumber uint64 strideEpochNumber uint64 - unbondingFrequency uint64 + unbondingPeriod uint64 defaultRedemptionRate sdk.Dec atomHostZoneChainId string } @@ -30,7 +30,7 @@ type RegisterHostZoneTestCase struct { func (s *KeeperTestSuite) SetupRegisterHostZone() RegisterHostZoneTestCase { epochUnbondingRecordNumber := uint64(3) strideEpochNumber := uint64(4) - unbondingFrequency := uint64(3) + unbondingPeriod := uint64(14) defaultRedemptionRate := sdk.NewDec(1) atomHostZoneChainId := "GAIA" @@ -53,21 +53,21 @@ func (s *KeeperTestSuite) SetupRegisterHostZone() RegisterHostZoneTestCase { s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) defaultMsg := stakeibctypes.MsgRegisterHostZone{ - ConnectionId: ibctesting.FirstConnectionID, - Bech32Prefix: GaiaPrefix, - HostDenom: Atom, - IbcDenom: IbcAtom, - TransferChannelId: ibctesting.FirstChannelID, - UnbondingFrequency: unbondingFrequency, - MinRedemptionRate: sdk.NewDec(0), - MaxRedemptionRate: sdk.NewDec(0), + ConnectionId: ibctesting.FirstConnectionID, + Bech32Prefix: GaiaPrefix, + HostDenom: Atom, + IbcDenom: IbcAtom, + TransferChannelId: ibctesting.FirstChannelID, + UnbondingPeriod: unbondingPeriod, + MinRedemptionRate: sdk.NewDec(0), + MaxRedemptionRate: sdk.NewDec(0), } return RegisterHostZoneTestCase{ validMsg: defaultMsg, epochUnbondingRecordNumber: epochUnbondingRecordNumber, strideEpochNumber: strideEpochNumber, - unbondingFrequency: unbondingFrequency, + unbondingPeriod: unbondingPeriod, defaultRedemptionRate: defaultRedemptionRate, atomHostZoneChainId: atomHostZoneChainId, } @@ -126,7 +126,7 @@ func (s *KeeperTestSuite) TestRegisterHostZone_Success() { defaultMaxThreshold := sdk.NewDec(int64(stakeibctypes.DefaultMaxRedemptionRateThreshold)).Quo(sdk.NewDec(100)) s.Require().Equal(defaultMinThreshold, hostZone.MinRedemptionRate, "min redemption rate set to default") s.Require().Equal(defaultMaxThreshold, hostZone.MaxRedemptionRate, "max redemption rate set to default") - s.Require().Equal(tc.unbondingFrequency, hostZone.UnbondingFrequency, "unbonding frequency set to default: 3") + s.Require().Equal(tc.unbondingPeriod, hostZone.UnbondingPeriod, "unbonding period") // Confirm host zone unbonding record was created epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) @@ -140,7 +140,7 @@ func (s *KeeperTestSuite) TestRegisterHostZone_Success() { s.Require().Equal(recordstypes.HostZoneUnbonding_UNBONDING_QUEUE, hostZoneUnbonding.Status, "host zone unbonding set to bonded") // Confirm a module account was created - hostZoneModuleAccount, err := sdk.AccAddressFromBech32(hostZone.Address) + hostZoneModuleAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) s.Require().NoError(err, "converting module address to account") acc := s.App.AccountKeeper.GetAccount(s.Ctx, hostZoneModuleAccount) s.Require().NotNil(acc, "host zone module account found in account keeper") @@ -311,7 +311,7 @@ func (s *KeeperTestSuite) TestRegisterHostZone_CannotFindEpochUnbondingRecord() msg := tc.validMsg // delete the epoch unbonding record - s.App.StakeibcKeeper.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) + s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, tc.epochUnbondingRecordNumber) _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &msg) expectedErrMsg := "unable to find latest epoch unbonding record: epoch unbonding record not found" diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account.go b/x/stakeibc/keeper/msg_server_restore_interchain_account.go index 4967586f1a..8f6b6d16e4 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account.go @@ -116,6 +116,13 @@ func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.Ms k.Logger(ctx).Error(errMsg) return nil, err } + + // Revert all pending LSM Detokenizations from status DETOKENIZATION_IN_PROGRESS to status DETOKENIZATION_QUEUE + pendingDeposits := k.RecordsKeeper.GetLSMDepositsForHostZoneWithStatus(ctx, hostZone.ChainId, recordtypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS) + for _, lsmDeposit := range pendingDeposits { + k.Logger(ctx).Info(fmt.Sprintf("Setting LSMTokenDeposit %s to status DETOKENIZATION_QUEUE", lsmDeposit.Denom)) + k.RecordsKeeper.UpdateLSMTokenDepositStatus(ctx, lsmDeposit, recordtypes.LSMTokenDeposit_DETOKENIZATION_QUEUE) + } } return &types.MsgRestoreInterchainAccountResponse{}, nil diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go index 5d4cdead2f..549c1767b1 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go @@ -1,17 +1,13 @@ package keeper_test import ( - "fmt" - sdk "github.com/cosmos/cosmos-sdk/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type DepositRecordStatusUpdate struct { @@ -24,16 +20,36 @@ type HostZoneUnbondingStatusUpdate struct { initialStatus recordtypes.HostZoneUnbonding_Status revertedStatus recordtypes.HostZoneUnbonding_Status } + +type LSMTokenDepositStatusUpdate struct { + chainId string + denom string + initialStatus recordtypes.LSMTokenDeposit_Status + revertedStatus recordtypes.LSMTokenDeposit_Status +} + type RestoreInterchainAccountTestCase struct { - validMsg stakeibc.MsgRestoreInterchainAccount + validMsg types.MsgRestoreInterchainAccount depositRecordStatusUpdates []DepositRecordStatusUpdate unbondingRecordStatusUpdate []HostZoneUnbondingStatusUpdate + lsmTokenDepositStatusUpdate []LSMTokenDepositStatusUpdate + delegationChannelID string + delegationPortID string } -func (s *KeeperTestSuite) SetupRestoreInterchainAccount() RestoreInterchainAccountTestCase { +func (s *KeeperTestSuite) SetupRestoreInterchainAccount(createDelegationICAChannel bool) RestoreInterchainAccountTestCase { s.CreateTransferChannel(HostChainId) - hostZone := stakeibc.HostZone{ + // We have to setup the ICA channel before the LSM Token is stored, + // otherwise when the EndBlocker runs in the channel setup, the LSM Token + // statuses will get updated + var channelID, portID string + if createDelegationICAChannel { + owner := "GAIA.DELEGATION" + channelID, portID = s.CreateICAChannel(owner) + } + + hostZone := types.HostZone{ ChainId: HostChainId, ConnectionId: ibctesting.FirstConnectionID, RedemptionRate: sdk.OneDec(), // if not yet, the beginblocker invariant panics @@ -109,20 +125,71 @@ func (s *KeeperTestSuite) SetupRestoreInterchainAccount() RestoreInterchainAccou }) } - defaultMsg := stakeibc.MsgRestoreInterchainAccount{ + // Store LSM Token Deposits with some state pending + lsmTokenDeposits := []LSMTokenDepositStatusUpdate{ + { + // Status doesn't change + chainId: HostChainId, + denom: "denom-1", + initialStatus: recordtypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + revertedStatus: recordtypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + }, + { + // Status gets reverted from IN_PROGRESS to QUEUE + chainId: HostChainId, + denom: "denom-2", + initialStatus: recordtypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS, + revertedStatus: recordtypes.LSMTokenDeposit_DETOKENIZATION_QUEUE, + }, + { + // Status doesn't change + chainId: HostChainId, + denom: "denom-3", + initialStatus: recordtypes.LSMTokenDeposit_DETOKENIZATION_QUEUE, + revertedStatus: recordtypes.LSMTokenDeposit_DETOKENIZATION_QUEUE, + }, + { + // Status doesn't change (different host zone) + chainId: "different_host_zone", + denom: "denom-4", + initialStatus: recordtypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS, + revertedStatus: recordtypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS, + }, + } + for _, lsmTokenDeposit := range lsmTokenDeposits { + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, recordtypes.LSMTokenDeposit{ + ChainId: lsmTokenDeposit.chainId, + Status: lsmTokenDeposit.initialStatus, + Denom: lsmTokenDeposit.denom, + }) + } + + defaultMsg := types.MsgRestoreInterchainAccount{ Creator: "creatoraddress", ChainId: HostChainId, - AccountType: stakeibc.ICAAccountType_DELEGATION, + AccountType: types.ICAAccountType_DELEGATION, } return RestoreInterchainAccountTestCase{ validMsg: defaultMsg, depositRecordStatusUpdates: depositRecords, unbondingRecordStatusUpdate: hostZoneUnbondingRecords, + lsmTokenDepositStatusUpdate: lsmTokenDeposits, + delegationChannelID: channelID, + delegationPortID: portID, } } -func (s *KeeperTestSuite) RestoreChannelAndVerifySuccess(msg stakeibc.MsgRestoreInterchainAccount, portID string, channelID string) { +// Helper function to close an ICA channel +func (s *KeeperTestSuite) closeICAChannel(portId, channelID string) { + channel, found := s.App.IBCKeeper.ChannelKeeper.GetChannel(s.Ctx, portId, channelID) + s.Require().True(found, "unable to close channel because channel was not found") + channel.State = channeltypes.CLOSED + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portId, channelID, channel) +} + +// Helper function to call RestoreChannel and check that a new channel was created and opened +func (s *KeeperTestSuite) restoreChannelAndVerifySuccess(msg types.MsgRestoreInterchainAccount, portID string, channelID string) { // Restore the channel _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &msg) s.Require().NoError(err, "registered ica account successfully") @@ -142,7 +209,8 @@ func (s *KeeperTestSuite) RestoreChannelAndVerifySuccess(msg stakeibc.MsgRestore s.Require().True(newChannelActive, "a new channel should have been created") } -func (s *KeeperTestSuite) VerifyDepositRecordsStatus(expectedDepositRecords []DepositRecordStatusUpdate, revert bool) { +// Helper function to check that each DepositRecord's status was either left alone or reverted to it's prior status +func (s *KeeperTestSuite) verifyDepositRecordsStatus(expectedDepositRecords []DepositRecordStatusUpdate, revert bool) { for i, expectedDepositRecord := range expectedDepositRecords { actualDepositRecord, found := s.App.RecordsKeeper.GetDepositRecord(s.Ctx, uint64(i)) s.Require().True(found, "deposit record found") @@ -156,7 +224,8 @@ func (s *KeeperTestSuite) VerifyDepositRecordsStatus(expectedDepositRecords []De } } -func (s *KeeperTestSuite) VerifyHostZoneUnbondingStatus(expectedUnbondingRecords []HostZoneUnbondingStatusUpdate, revert bool) { +// Helper function to check that each HostZoneUnbonding's status was either left alone or reverted to it's prior status +func (s *KeeperTestSuite) verifyHostZoneUnbondingStatus(expectedUnbondingRecords []HostZoneUnbondingStatusUpdate, revert bool) { for i, expectedUnbonding := range expectedUnbondingRecords { epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, uint64(i)) s.Require().True(found, "epoch unbonding record found") @@ -172,32 +241,42 @@ func (s *KeeperTestSuite) VerifyHostZoneUnbondingStatus(expectedUnbondingRecords } } +// Helper function to check that each LSMTokenDepoit's status was either left alone or reverted to it's prior status +func (s *KeeperTestSuite) verifyLSMDepositStatus(expectedLSMDeposits []LSMTokenDepositStatusUpdate, revert bool) { + for i, expectedLSMDeposit := range expectedLSMDeposits { + actualLSMDeposit, found := s.App.RecordsKeeper.GetLSMTokenDeposit(s.Ctx, expectedLSMDeposit.chainId, expectedLSMDeposit.denom) + s.Require().True(found, "lsm deposit found") + + // Only revert record if the revert option is passed and the host zone matches + expectedStatus := expectedLSMDeposit.initialStatus + if revert && actualLSMDeposit.ChainId == HostChainId { + expectedStatus = expectedLSMDeposit.revertedStatus + } + s.Require().Equal(expectedStatus.String(), actualLSMDeposit.Status.String(), "lsm deposit %d", i) + } +} + func (s *KeeperTestSuite) TestRestoreInterchainAccount_Success() { - tc := s.SetupRestoreInterchainAccount() - owner := "GAIA.DELEGATION" - channelID := s.CreateICAChannel(owner) - portID := icatypes.ControllerPortPrefix + owner + tc := s.SetupRestoreInterchainAccount(true) // Confirm there are two channels originally channels := s.App.IBCKeeper.ChannelKeeper.GetAllChannels(s.Ctx) s.Require().Len(channels, 2, "there should be 2 channels initially (transfer + delegate)") // Close the delegation channel - channel, found := s.App.IBCKeeper.ChannelKeeper.GetChannel(s.Ctx, portID, channelID) - s.Require().True(found, "delegation channel found") - channel.State = channeltypes.CLOSED - s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portID, channelID, channel) + s.closeICAChannel(tc.delegationPortID, tc.delegationChannelID) // Confirm the new channel was created - s.RestoreChannelAndVerifySuccess(tc.validMsg, portID, channelID) + s.restoreChannelAndVerifySuccess(tc.validMsg, tc.delegationPortID, tc.delegationChannelID) // Verify the record status' were reverted - s.VerifyDepositRecordsStatus(tc.depositRecordStatusUpdates, true) - s.VerifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, true) + s.verifyDepositRecordsStatus(tc.depositRecordStatusUpdates, true) + s.verifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, true) + s.verifyLSMDepositStatus(tc.lsmTokenDepositStatusUpdate, true) } func (s *KeeperTestSuite) TestRestoreInterchainAccount_InvalidConnectionId() { - tc := s.SetupRestoreInterchainAccount() + tc := s.SetupRestoreInterchainAccount(false) // Update the connectionId on the host zone so that it doesn't exist hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.validMsg.ChainId) @@ -210,79 +289,55 @@ func (s *KeeperTestSuite) TestRestoreInterchainAccount_InvalidConnectionId() { } func (s *KeeperTestSuite) TestRestoreInterchainAccount_CannotRestoreNonExistentAcct() { - tc := s.SetupRestoreInterchainAccount() + tc := s.SetupRestoreInterchainAccount(false) msg := tc.validMsg - msg.AccountType = stakeibc.ICAAccountType_WITHDRAWAL + msg.AccountType = types.ICAAccountType_WITHDRAWAL _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMSg := fmt.Sprintf("ICA controller account address not found: %s.WITHDRAWAL: invalid interchain account address", - tc.validMsg.ChainId) - s.Require().EqualError(err, expectedErrMSg, "registered ica account successfully") + s.Require().ErrorContains(err, "ICA controller account address not found: GAIA.WITHDRAWAL") } func (s *KeeperTestSuite) TestRestoreInterchainAccount_FailsForIncorrectHostZone() { - tc := s.SetupRestoreInterchainAccount() - msg := tc.validMsg - msg.ChainId = "incorrectchainid" - - _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := "host zone not registered" - s.Require().EqualError(err, expectedErrMsg, "registered ica account fails for incorrect host zone") -} - -func (s *KeeperTestSuite) TestRestoreInterchainAccount_FailsIfAccountExists() { - tc := s.SetupRestoreInterchainAccount() - s.CreateICAChannel("GAIA.DELEGATION") - msg := tc.validMsg + tc := s.SetupRestoreInterchainAccount(false) + invalidMsg := tc.validMsg + invalidMsg.ChainId = "incorrectchainid" - _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := fmt.Sprintf("existing active channel channel-1 for portID icacontroller-%s.DELEGATION on connection %s: active channel already set for this owner", - tc.validMsg.ChainId, - s.TransferPath.EndpointB.ConnectionID, - ) - s.Require().EqualError(err, expectedErrMsg, "registered ica account fails when account already exists") + _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &invalidMsg) + s.Require().ErrorContains(err, "host zone not registered") } func (s *KeeperTestSuite) TestRestoreInterchainAccount_RevertDepositRecords_Failure() { - tc := s.SetupRestoreInterchainAccount() - s.CreateICAChannel("GAIA.DELEGATION") - msg := tc.validMsg + tc := s.SetupRestoreInterchainAccount(true) - _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &msg) - expectedErrMsg := fmt.Sprintf("existing active channel channel-1 for portID icacontroller-%s.DELEGATION on connection %s: active channel already set for this owner", - tc.validMsg.ChainId, - s.TransferPath.EndpointB.ConnectionID, - ) - s.Require().EqualError(err, expectedErrMsg, "registered ica account fails when account already exists") + _, err := s.GetMsgServer().RestoreInterchainAccount(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) + s.Require().ErrorContains(err, "existing active channel channel-1 for portID icacontroller-GAIA.DELEGATION") // Verify the record status' were NOT reverted - s.VerifyDepositRecordsStatus(tc.depositRecordStatusUpdates, false) - s.VerifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, false) + s.verifyDepositRecordsStatus(tc.depositRecordStatusUpdates, false) + s.verifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, false) + s.verifyLSMDepositStatus(tc.lsmTokenDepositStatusUpdate, false) } func (s *KeeperTestSuite) TestRestoreInterchainAccount_NoRecordChange_Success() { // Here, we're closing and restoring the withdrawal channel so records should not be reverted - tc := s.SetupRestoreInterchainAccount() + tc := s.SetupRestoreInterchainAccount(false) owner := "GAIA.WITHDRAWAL" - channelID := s.CreateICAChannel(owner) - portID := icatypes.ControllerPortPrefix + owner + channelID, portID := s.CreateICAChannel(owner) // Confirm there are two channels originally channels := s.App.IBCKeeper.ChannelKeeper.GetAllChannels(s.Ctx) s.Require().Len(channels, 2, "there should be 2 channels initially (transfer + withdrawal)") // Close the withdrawal channel - channel, found := s.App.IBCKeeper.ChannelKeeper.GetChannel(s.Ctx, portID, channelID) - s.Require().True(found, "withdrawal channel found") - channel.State = channeltypes.CLOSED - s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, portID, channelID, channel) + s.closeICAChannel(portID, channelID) // Restore the channel msg := tc.validMsg - msg.AccountType = stakeibc.ICAAccountType_WITHDRAWAL - s.RestoreChannelAndVerifySuccess(msg, portID, channelID) + msg.AccountType = types.ICAAccountType_WITHDRAWAL + s.restoreChannelAndVerifySuccess(msg, portID, channelID) // Verify the record status' were NOT reverted - s.VerifyDepositRecordsStatus(tc.depositRecordStatusUpdates, false) - s.VerifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, false) + s.verifyDepositRecordsStatus(tc.depositRecordStatusUpdates, false) + s.verifyHostZoneUnbondingStatus(tc.unbondingRecordStatusUpdate, false) + s.verifyLSMDepositStatus(tc.lsmTokenDepositStatusUpdate, false) } diff --git a/x/stakeibc/keeper/msg_server_submit_tx.go b/x/stakeibc/keeper/msg_server_submit_tx.go index 945d7f3ff7..4eed0ff052 100644 --- a/x/stakeibc/keeper/msg_server_submit_tx.go +++ b/x/stakeibc/keeper/msg_server_submit_tx.go @@ -3,11 +3,12 @@ package keeper import ( "fmt" "strings" + "time" errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/types/bech32" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - proto "github.com/cosmos/gogoproto/proto" + "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" "github.com/Stride-Labs/stride/v13/utils" @@ -17,9 +18,8 @@ import ( "github.com/Stride-Labs/stride/v13/x/stakeibc/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" - distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - stakingTypes "github.com/cosmos/cosmos-sdk/x/staking/types" + distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" @@ -44,10 +44,8 @@ func (k Keeper) DelegateOnHost(ctx sdk.Context, hostZone types.HostZone, amt sdk } // Fetch the relevant ICA - delegationAccount := hostZone.DelegationAccount - if delegationAccount == nil || delegationAccount.Address == "" { - k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a delegation address!", hostZone.ChainId)) - return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "Invalid delegation account") + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", hostZone.ChainId) } // Construct the transaction @@ -60,21 +58,27 @@ func (k Keeper) DelegateOnHost(ctx sdk.Context, hostZone types.HostZone, amt sdk var splitDelegations []*types.SplitDelegation var msgs []proto.Message for _, validator := range hostZone.Validators { - relativeAmount := sdk.NewCoin(amt.Denom, targetDelegatedAmts[validator.Address]) - if relativeAmount.Amount.IsPositive() { - msgs = append(msgs, &stakingTypes.MsgDelegate{ - DelegatorAddress: delegationAccount.Address, - ValidatorAddress: validator.Address, - Amount: relativeAmount, - }) + relativeAmount, ok := targetDelegatedAmts[validator.Address] + if !ok || !relativeAmount.IsPositive() { + continue } + + msgs = append(msgs, &stakingtypes.MsgDelegate{ + DelegatorAddress: hostZone.DelegationIcaAddress, + ValidatorAddress: validator.Address, + Amount: sdk.NewCoin(amt.Denom, relativeAmount), + }) splitDelegations = append(splitDelegations, &types.SplitDelegation{ Validator: validator.Address, - Amount: relativeAmount.Amount, + Amount: relativeAmount, }) } k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Preparing MsgDelegates from the delegation account to each validator")) + if len(msgs) == 0 { + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target delegation amount was 0 for each validator") + } + // add callback data delegateCallback := types.DelegateCallback{ HostZoneId: hostZone.ChainId, @@ -88,12 +92,20 @@ func (k Keeper) DelegateOnHost(ctx sdk.Context, hostZone types.HostZone, amt sdk } // Send the transaction through SubmitTx - _, err = k.SubmitTxsStrideEpoch(ctx, connectionId, msgs, *delegationAccount, ICACallbackID_Delegate, marshalledCallbackArgs) + _, err = k.SubmitTxsStrideEpoch(ctx, connectionId, msgs, types.ICAAccountType_DELEGATION, ICACallbackID_Delegate, marshalledCallbackArgs) if err != nil { return errorsmod.Wrapf(err, "Failed to SubmitTxs for connectionId %s on %s. Messages: %s", connectionId, hostZone.ChainId, msgs) } k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "ICA MsgDelegates Successfully Sent")) + // flag the delegation change in progress on each validator + for _, splitDelegation := range splitDelegations { + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + // update the record state to DELEGATION_IN_PROGRESS depositRecord.Status = recordstypes.DepositRecord_DELEGATION_IN_PROGRESS k.RecordsKeeper.SetDepositRecord(ctx, depositRecord) @@ -114,27 +126,26 @@ func (k Keeper) SetWithdrawalAddressOnHost(ctx sdk.Context, hostZone types.HostZ } // Fetch the relevant ICA - delegationAccount := hostZone.DelegationAccount - if delegationAccount == nil || delegationAccount.Address == "" { + if hostZone.DelegationIcaAddress == "" { k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a delegation address!", hostZone.ChainId)) return nil } - withdrawalAccount := hostZone.WithdrawalAccount - if withdrawalAccount == nil || withdrawalAccount.Address == "" { + + if hostZone.WithdrawalIcaAddress == "" { k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a withdrawal address!", hostZone.ChainId)) return nil } k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Withdrawal Address: %s, Delegator Address: %s", - withdrawalAccount.Address, delegationAccount.Address)) + hostZone.WithdrawalIcaAddress, hostZone.DelegationIcaAddress)) // Construct the ICA message msgs := []proto.Message{ &distributiontypes.MsgSetWithdrawAddress{ - DelegatorAddress: delegationAccount.Address, - WithdrawAddress: withdrawalAccount.Address, + DelegatorAddress: hostZone.DelegationIcaAddress, + WithdrawAddress: hostZone.WithdrawalIcaAddress, }, } - _, err = k.SubmitTxsStrideEpoch(ctx, connectionId, msgs, *delegationAccount, "", nil) + _, err = k.SubmitTxsStrideEpoch(ctx, connectionId, msgs, types.ICAAccountType_DELEGATION, "", nil) if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "Failed to SubmitTxs for %s, %s, %s", connectionId, hostZone.ChainId, msgs) } @@ -147,37 +158,38 @@ func (k Keeper) UpdateWithdrawalBalance(ctx sdk.Context, hostZone types.HostZone k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Submitting ICQ for withdrawal account balance")) // Get the withdrawal account address from the host zone - withdrawalAccount := hostZone.WithdrawalAccount - if withdrawalAccount == nil || withdrawalAccount.Address == "" { + if hostZone.WithdrawalIcaAddress == "" { return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no withdrawal account found for %s", hostZone.ChainId) } // Encode the withdrawal account address for the query request // The query request consists of the withdrawal account address and denom - _, withdrawalAddressBz, err := bech32.DecodeAndConvert(withdrawalAccount.Address) + _, withdrawalAddressBz, err := bech32.DecodeAndConvert(hostZone.WithdrawalIcaAddress) if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid withdrawal account address, could not decode (%s)", err.Error()) } queryData := append(bankTypes.CreateAccountBalancesPrefix(withdrawalAddressBz), []byte(hostZone.HostDenom)...) - // The query should timeout at the end of the ICA buffer window - ttl, err := k.GetICATimeoutNanos(ctx, epochstypes.STRIDE_EPOCH) - if err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, - "Failed to get ICA timeout nanos for epochType %s using param, error: %s", epochstypes.STRIDE_EPOCH, err.Error()) + // Timeout query at end of epoch + strideEpochTracker, found := k.GetEpochTracker(ctx, epochstypes.STRIDE_EPOCH) + if !found { + return errorsmod.Wrapf(types.ErrEpochNotFound, epochstypes.STRIDE_EPOCH) } + timeout := time.Unix(0, int64(strideEpochTracker.NextEpochStartTime)) + timeoutDuration := timeout.Sub(ctx.BlockTime()) // Submit the ICQ for the withdrawal account balance - if err := k.InterchainQueryKeeper.MakeRequest( - ctx, - types.ModuleName, - ICQCallbackID_WithdrawalBalance, - hostZone.ChainId, - hostZone.ConnectionId, - icqtypes.BANK_STORE_QUERY_WITH_PROOF, - queryData, - ttl, - ); err != nil { + query := icqtypes.Query{ + ChainId: hostZone.ChainId, + ConnectionId: hostZone.ConnectionId, + QueryType: icqtypes.BANK_STORE_QUERY_WITH_PROOF, + RequestData: queryData, + CallbackModule: types.ModuleName, + CallbackId: ICQCallbackID_WithdrawalBalance, + TimeoutDuration: timeoutDuration, + TimeoutPolicy: icqtypes.TimeoutPolicy_REJECT_QUERY_RESPONSE, + } + if err := k.InterchainQueryKeeper.SubmitICQRequest(ctx, query, false); err != nil { k.Logger(ctx).Error(fmt.Sprintf("Error querying for withdrawal balance, error: %s", err.Error())) return err } @@ -199,11 +211,11 @@ func (k Keeper) SubmitTxsDayEpoch( ctx sdk.Context, connectionId string, msgs []proto.Message, - account types.ICAAccount, + icaAccountType types.ICAAccountType, callbackId string, callbackArgs []byte, ) (uint64, error) { - sequence, err := k.SubmitTxsEpoch(ctx, connectionId, msgs, account, epochstypes.DAY_EPOCH, callbackId, callbackArgs) + sequence, err := k.SubmitTxsEpoch(ctx, connectionId, msgs, icaAccountType, epochstypes.DAY_EPOCH, callbackId, callbackArgs) if err != nil { return 0, err } @@ -214,11 +226,11 @@ func (k Keeper) SubmitTxsStrideEpoch( ctx sdk.Context, connectionId string, msgs []proto.Message, - account types.ICAAccount, + icaAccountType types.ICAAccountType, callbackId string, callbackArgs []byte, ) (uint64, error) { - sequence, err := k.SubmitTxsEpoch(ctx, connectionId, msgs, account, epochstypes.STRIDE_EPOCH, callbackId, callbackArgs) + sequence, err := k.SubmitTxsEpoch(ctx, connectionId, msgs, icaAccountType, epochstypes.STRIDE_EPOCH, callbackId, callbackArgs) if err != nil { return 0, err } @@ -229,7 +241,7 @@ func (k Keeper) SubmitTxsEpoch( ctx sdk.Context, connectionId string, msgs []proto.Message, - account types.ICAAccount, + icaAccountType types.ICAAccountType, epochType string, callbackId string, callbackArgs []byte, @@ -239,7 +251,7 @@ func (k Keeper) SubmitTxsEpoch( k.Logger(ctx).Error(fmt.Sprintf("Failed to get ICA timeout nanos for epochType %s using param, error: %s", epochType, err.Error())) return 0, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "Failed to convert timeoutNanos to uint64, error: %s", err.Error()) } - sequence, err := k.SubmitTxs(ctx, connectionId, msgs, account, timeoutNanosUint64, callbackId, callbackArgs) + sequence, err := k.SubmitTxs(ctx, connectionId, msgs, icaAccountType, timeoutNanosUint64, callbackId, callbackArgs) if err != nil { return 0, err } @@ -251,7 +263,7 @@ func (k Keeper) SubmitTxs( ctx sdk.Context, connectionId string, msgs []proto.Message, - account types.ICAAccount, + icaAccountType types.ICAAccountType, timeoutTimestamp uint64, callbackId string, callbackArgs []byte, @@ -260,7 +272,7 @@ func (k Keeper) SubmitTxs( if err != nil { return 0, err } - owner := types.FormatICAAccountOwner(chainId, account.Target) + owner := types.FormatICAAccountOwner(chainId, icaAccountType) portID, err := icatypes.NewControllerPortID(owner) if err != nil { return 0, err @@ -359,104 +371,121 @@ func (k Keeper) GetLightClientTimeSafely(ctx sdk.Context, connectionID string) ( } } -// Submits an ICQ to get a validator's exchange rate -func (k Keeper) QueryValidatorExchangeRate(ctx sdk.Context, msg *types.MsgUpdateValidatorSharesExchRate) (*types.MsgUpdateValidatorSharesExchRateResponse, error) { - k.Logger(ctx).Info(utils.LogWithHostZone(msg.ChainId, "Submitting ICQ for validator exchange rate to %s", msg.Valoper)) +// Submit a validator sharesToTokens rate ICQ as triggered either manually or epochly with a conservative timeout +func (k Keeper) QueryValidatorSharesToTokensRate(ctx sdk.Context, chainId string, validatorAddress string) error { + timeoutDuration := time.Hour * 24 + timeoutPolicy := icqtypes.TimeoutPolicy_REJECT_QUERY_RESPONSE + callbackData := []byte{} + return k.SubmitValidatorSharesToTokensRateICQ(ctx, chainId, validatorAddress, callbackData, timeoutDuration, timeoutPolicy) +} - // Ensure ICQ can be issued now! else fail the callback - withinBufferWindow, err := k.IsWithinBufferWindow(ctx) - if err != nil { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to determine if ICQ callback is inside buffer window, err: %s", err.Error()) - } else if !withinBufferWindow { - return nil, errorsmod.Wrapf(types.ErrOutsideIcqWindow, "outside the buffer time during which ICQs are allowed (%s)", msg.ChainId) - } +// Submits an ICQ to get a validator's shares to tokens rate +func (k Keeper) SubmitValidatorSharesToTokensRateICQ( + ctx sdk.Context, + chainId string, + validatorAddress string, + callbackDataBz []byte, + timeoutDuration time.Duration, + timeoutPolicy icqtypes.TimeoutPolicy, +) error { + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Submitting ICQ for validator sharesToTokens rate to %s", validatorAddress)) // Confirm the host zone exists - hostZone, found := k.GetHostZone(ctx, msg.ChainId) + hostZone, found := k.GetHostZone(ctx, chainId) if !found { - return nil, errorsmod.Wrapf(types.ErrInvalidHostZone, "Host zone not found (%s)", msg.ChainId) + return errorsmod.Wrapf(types.ErrInvalidHostZone, "Host zone not found (%s)", chainId) } // check that the validator address matches the bech32 prefix of the hz - if !strings.Contains(msg.Valoper, hostZone.Bech32Prefix) { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "validator operator address must match the host zone bech32 prefix") + if !strings.Contains(validatorAddress, hostZone.Bech32Prefix) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "validator operator address must match the host zone bech32 prefix") } // Encode the validator address to form the query request - _, validatorAddressBz, err := bech32.DecodeAndConvert(msg.Valoper) + _, validatorAddressBz, err := bech32.DecodeAndConvert(validatorAddress) if err != nil { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid validator operator address, could not decode (%s)", err.Error()) + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid validator operator address, could not decode (%s)", err.Error()) } queryData := stakingtypes.GetValidatorKey(validatorAddressBz) - // The query should timeout at the start of the next epoch - ttl, err := k.GetStartTimeNextEpoch(ctx, epochstypes.STRIDE_EPOCH) - if err != nil { - return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "could not get start time for next epoch: %s", err.Error()) - } - - // Submit validator exchange rate ICQ - if err := k.InterchainQueryKeeper.MakeRequest( - ctx, - types.ModuleName, - ICQCallbackID_Validator, - hostZone.ChainId, - hostZone.ConnectionId, - icqtypes.STAKING_STORE_QUERY_WITH_PROOF, - queryData, - ttl, - ); err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Error submitting ICQ for validator exchange rate, error %s", err.Error())) - return nil, err - } - return &types.MsgUpdateValidatorSharesExchRateResponse{}, nil + // Submit validator sharesToTokens rate ICQ + // Considering this query is executed manually, we can be conservative with the timeout + query := icqtypes.Query{ + ChainId: hostZone.ChainId, + ConnectionId: hostZone.ConnectionId, + QueryType: icqtypes.STAKING_STORE_QUERY_WITH_PROOF, + RequestData: queryData, + CallbackModule: types.ModuleName, + CallbackId: ICQCallbackID_Validator, + CallbackData: callbackDataBz, + TimeoutDuration: timeoutDuration, + TimeoutPolicy: timeoutPolicy, + } + if err := k.InterchainQueryKeeper.SubmitICQRequest(ctx, query, true); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Error submitting ICQ for validator sharesToTokens rate, error %s", err.Error())) + return err + } + return nil } // Submits an ICQ to get a validator's delegations -// This is called after the validator's exchange rate is determined -func (k Keeper) QueryDelegationsIcq(ctx sdk.Context, hostZone types.HostZone, valoper string) error { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Submitting ICQ for delegations to %s", valoper)) +// This is called after the validator's sharesToTokens rate is determined +// The timeoutDuration parameter represents the length of the timeout (not to be confused with an actual timestamp) +func (k Keeper) SubmitDelegationICQ(ctx sdk.Context, hostZone types.HostZone, validatorAddress string) error { + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation address found for %s", hostZone.ChainId) + } + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, validatorAddress) + if !found { + return errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", validatorAddress) + } - // Ensure ICQ can be issued now! else fail the callback - valid, err := k.IsWithinBufferWindow(ctx) - if err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to determine if ICQ callback is inside buffer window, err: %s", err.Error()) - } else if !valid { - return errorsmod.Wrapf(types.ErrOutsideIcqWindow, "outside the buffer time during which ICQs are allowed (%s)", hostZone.HostDenom) + // Only submit the query if there's not already one in progress + if validator.SlashQueryInProgress { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Delegations ICQ already in progress")) + return nil } + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Submitting ICQ for delegations to %s", validatorAddress)) // Get the validator and delegator encoded addresses to form the query request - delegationAccount := hostZone.DelegationAccount - if delegationAccount == nil || delegationAccount.Address == "" { - return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation address found for %s", hostZone.ChainId) - } - _, validatorAddressBz, err := bech32.DecodeAndConvert(valoper) + _, validatorAddressBz, err := bech32.DecodeAndConvert(validatorAddress) if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid validator address, could not decode (%s)", err.Error()) } - _, delegatorAddressBz, err := bech32.DecodeAndConvert(delegationAccount.Address) + _, delegatorAddressBz, err := bech32.DecodeAndConvert(hostZone.DelegationIcaAddress) if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid delegator address, could not decode (%s)", err.Error()) } queryData := stakingtypes.GetDelegationKey(delegatorAddressBz, validatorAddressBz) - // The query should timeout at the start of the next epoch - ttl, err := k.GetStartTimeNextEpoch(ctx, epochstypes.STRIDE_EPOCH) + // Store the current validator's delegation in the callback data so we can determine if it changed + // while the query was in flight + callbackData := types.DelegatorSharesQueryCallback{ + InitialValidatorDelegation: validator.Delegation, + } + callbackDataBz, err := proto.Marshal(&callbackData) if err != nil { - return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "could not get start time for next epoch: %s", err.Error()) + return errorsmod.Wrapf(err, "unable to marshal delegator shares callback data") } + // Update the validator to indicate that the slash query is in progress + validator.SlashQueryInProgress = true + hostZone.Validators[valIndex] = &validator + k.SetHostZone(ctx, hostZone) + // Submit delegator shares ICQ - if err := k.InterchainQueryKeeper.MakeRequest( - ctx, - types.ModuleName, - ICQCallbackID_Delegation, - hostZone.ChainId, - hostZone.ConnectionId, - icqtypes.STAKING_STORE_QUERY_WITH_PROOF, - queryData, - ttl, - ); err != nil { + query := icqtypes.Query{ + ChainId: hostZone.ChainId, + ConnectionId: hostZone.ConnectionId, + QueryType: icqtypes.STAKING_STORE_QUERY_WITH_PROOF, + RequestData: queryData, + CallbackModule: types.ModuleName, + CallbackId: ICQCallbackID_Delegation, + CallbackData: callbackDataBz, + TimeoutDuration: time.Hour, + TimeoutPolicy: icqtypes.TimeoutPolicy_RETRY_QUERY_REQUEST, + } + if err := k.InterchainQueryKeeper.SubmitICQRequest(ctx, query, false); err != nil { k.Logger(ctx).Error(fmt.Sprintf("Error submitting ICQ for delegation, error : %s", err.Error())) return err } diff --git a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go index 99d01bdd1d..e6882de350 100644 --- a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go +++ b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go @@ -10,11 +10,14 @@ import ( // This kicks off two ICQs, each with a callback, that will update the number of tokens on a validator // after being slashed. The flow is: -// 1. QueryValidatorExchangeRate (ICQ) -// 2. ValidatorExchangeRateCallback (CALLBACK) -// 3. QueryDelegationsIcq (ICQ) +// 1. QueryValidatorSharesToTokensRate (ICQ) +// 2. ValidatorSharesToTokensRate (CALLBACK) +// 3. SubmitDelegationICQ (ICQ) // 4. DelegatorSharesCallback (CALLBACK) func (k msgServer) UpdateValidatorSharesExchRate(goCtx context.Context, msg *types.MsgUpdateValidatorSharesExchRate) (*types.MsgUpdateValidatorSharesExchRateResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - return k.QueryValidatorExchangeRate(ctx, msg) + if err := k.QueryValidatorSharesToTokensRate(ctx, msg.ChainId, msg.Valoper); err != nil { + return nil, err + } + return &types.MsgUpdateValidatorSharesExchRateResponse{}, nil } diff --git a/x/stakeibc/keeper/reward_allocation_test.go b/x/stakeibc/keeper/reward_allocation_test.go index 6fc90beceb..042a5507c3 100644 --- a/x/stakeibc/keeper/reward_allocation_test.go +++ b/x/stakeibc/keeper/reward_allocation_test.go @@ -28,14 +28,14 @@ func (s *KeeperTestSuite) SetupTestRewardAllocation() { HostDenom: Atom, IbcDenom: IbcAtom, RedemptionRate: sdk.OneDec(), - Address: stakeibctypes.NewZoneAddress(HostChainId).String(), + DepositAddress: stakeibctypes.NewHostZoneDepositAddress(HostChainId).String(), } hostZone2 := stakeibctypes.HostZone{ ChainId: OsmoChainId, HostDenom: Osmo, IbcDenom: IbcOsmo, RedemptionRate: sdk.OneDec(), - Address: stakeibctypes.NewZoneAddress(OsmoChainId).String(), + DepositAddress: stakeibctypes.NewHostZoneDepositAddress(OsmoChainId).String(), } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone1) diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index 0782c52c68..32186c8bc1 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -1,24 +1,53 @@ package keeper import ( + "errors" "fmt" + "sort" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - - errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v13/utils" recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) +const ( + UndelegateICABatchSize = 30 +) + +type ValidatorUnbondCapacity struct { + ValidatorAddress string + CurrentDelegation sdkmath.Int + BalancedDelegation sdkmath.Int + Capacity sdkmath.Int +} + +// The ratio of ideal balanced delegation to the current delegation +// This represents how proportionally unbalanced each validator is +// The smaller number means their current delegation is much larger +// then their fair portion of the current total stake +func (c *ValidatorUnbondCapacity) GetBalanceRatio() (sdk.Dec, error) { + // ValidatorUnbondCapaciy structs only exist for validators with positive capacity + // capacity is CurrentDelegation - BalancedDelegation + // positive capacity means CurrentDelegation must be >0 + + // Therefore the current delegation here should never be zero + if c.CurrentDelegation.IsZero() { + errMsg := fmt.Sprintf("CurrentDelegation should not be 0 inside GetBalanceRatio(), %+v", c) + return sdk.ZeroDec(), errors.New(errMsg) + } + return sdk.NewDecFromInt(c.BalancedDelegation).Quo(sdk.NewDecFromInt(c.CurrentDelegation)), nil +} + +// Creates a new epoch unbonding record for the epoch func (k Keeper) CreateEpochUnbondingRecord(ctx sdk.Context, epochNumber uint64) bool { k.Logger(ctx).Info(fmt.Sprintf("Creating Epoch Unbonding Records for Epoch %d", epochNumber)) @@ -45,238 +74,312 @@ func (k Keeper) CreateEpochUnbondingRecord(ctx sdk.Context, epochNumber uint64) return true } -// Build the undelegation messages for each validator by summing the total amount to unbond across epoch unbonding record, -// and then splitting the undelegation amount across validators -// -// returns -// -// (1) MsgUndelegate messages -// (2) Total Amount to unbond across all validators -// (3) Marshalled Callback Args -// (4) Relevant EpochUnbondingRecords that contain HostZoneUnbondings that are ready for unbonding -func (k Keeper) GetHostZoneUnbondingMsgs(ctx sdk.Context, hostZone types.HostZone) (msgs []proto.Message, totalAmountToUnbond sdkmath.Int, marshalledCallbackArgs []byte, epochUnbondingRecordIds []uint64, err error) { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Preparing MsgUndelegates from the delegation account to each validator")) - - // Iterate through every unbonding record and sum the total amount to unbond for the given host zone - totalAmountToUnbond = sdkmath.ZeroInt() +// Gets the total unbonded amount for a host zone by looping through the epoch unbonding records +// Also returns the epoch unbonding record ids +func (k Keeper) GetTotalUnbondAmountAndRecordsIds(ctx sdk.Context, chainId string) (totalUnbonded sdkmath.Int, unbondingRecordIds []uint64) { + totalUnbonded = sdk.ZeroInt() for _, epochUnbonding := range k.RecordsKeeper.GetAllEpochUnbondingRecord(ctx) { - hostZoneRecord, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbonding.EpochNumber, hostZone.ChainId) + hostZoneRecord, found := k.RecordsKeeper.GetHostZoneUnbondingByChainId(ctx, epochUnbonding.EpochNumber, chainId) if !found { continue } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Epoch %d - Status: %s, Amount: %v", + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, "Epoch %d - Status: %s, Amount: %v", epochUnbonding.EpochNumber, hostZoneRecord.Status, hostZoneRecord.NativeTokenAmount)) // We'll unbond all records that have status UNBONDING_QUEUE and have an amount g.t. zero if hostZoneRecord.Status == recordstypes.HostZoneUnbonding_UNBONDING_QUEUE && hostZoneRecord.NativeTokenAmount.GT(sdkmath.ZeroInt()) { - totalAmountToUnbond = totalAmountToUnbond.Add(hostZoneRecord.NativeTokenAmount) - epochUnbondingRecordIds = append(epochUnbondingRecordIds, epochUnbonding.EpochNumber) - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, " %v%s included in total unbonding", hostZoneRecord.NativeTokenAmount, hostZoneRecord.Denom)) + totalUnbonded = totalUnbonded.Add(hostZoneRecord.NativeTokenAmount) + unbondingRecordIds = append(unbondingRecordIds, epochUnbonding.EpochNumber) + k.Logger(ctx).Info(utils.LogWithHostZone(chainId, " %v%s included in total unbonding", hostZoneRecord.NativeTokenAmount, hostZoneRecord.Denom)) } } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Total unbonded amount: %v%s", totalAmountToUnbond, hostZone.HostDenom)) + return totalUnbonded, unbondingRecordIds +} - // If there's nothing to unbond, return and move on to the next host zone - if totalAmountToUnbond.IsZero() { - return nil, sdkmath.ZeroInt(), nil, nil, nil +// Determine the unbonding capacity that each validator has +// The capacity is determined by the difference between their current delegation +// and their fair portion of the total stake based on their weights +// (i.e. their balanced delegation) +// +// Validators with a balanced delegation less than their current delegation +// are already at a deficit, are not included in the returned list, +// and thus, will not incur any unbonding +func (k Keeper) GetValidatorUnbondCapacity( + ctx sdk.Context, + validators []*types.Validator, + balancedDelegation map[string]sdkmath.Int, +) (validatorCapacities []ValidatorUnbondCapacity) { + for _, validator := range validators { + // The capacity equals the difference between their current delegation and + // the balanced delegation + // If the capacity is negative, that means the validator has less than their + // balanced portion. Ignore this case so they don't unbond anything + balancedDelegation, ok := balancedDelegation[validator.Address] + if !ok { + continue + } + + capacity := validator.Delegation.Sub(balancedDelegation) + if capacity.IsPositive() { + validatorCapacities = append(validatorCapacities, ValidatorUnbondCapacity{ + ValidatorAddress: validator.Address, + Capacity: capacity, + CurrentDelegation: validator.Delegation, + BalancedDelegation: balancedDelegation, + }) + } } - // Determine the desired unbonding amount for each validator based based on our target weights - targetUnbondingsByValidator, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, totalAmountToUnbond) - if err != nil { - errMsg := fmt.Sprintf("Error getting target val amts for host zone %s %v: %s", hostZone.ChainId, totalAmountToUnbond, err) - k.Logger(ctx).Error(errMsg) - return nil, sdkmath.ZeroInt(), nil, nil, errorsmod.Wrap(types.ErrNoValidatorAmts, errMsg) + return validatorCapacities +} + +// Sort validators by the ratio of the ideal balanced delegation to their current delegation +// This will sort the validator's by how proportionally unbalanced they are +// +// Ex: +// +// Val1: Ideal Balanced Delegation 80, Current Delegation 100 (surplus of 20), Ratio: 0.8 +// Val2: Ideal Balanced Delegation 480, Current Delegation 500 (surplus of 20), Ratio: 0.96 +// +// While both validators have the same net unbalanced delegation, Val2 is proportionally +// more balanced since the surplus is a smaller percentage of it's overall delegation +// +// This will also sort such that 0-weight validator's will come first as their +// ideal balanced delegation will always be 0, and thus their ratio will always be 0 +// If the ratio's are equal, the validator with the larger delegation/capacity will come first +func SortUnbondingCapacityByPriority(validatorUnbondCapacity []ValidatorUnbondCapacity) ([]ValidatorUnbondCapacity, error) { + // Loop through all validators to make sure none error when getting the balance ratio needed for sorting + for _, validator := range validatorUnbondCapacity { + if _, err := validator.GetBalanceRatio(); err != nil { + return nil, err + } } - // Check if each validator has enough current delegations to cover the target unbonded amount - // If it doesn't have enough, update the target to equal their total delegations and record the overflow amount - finalUnbondingsByValidator := make(map[string]sdkmath.Int) - overflowAmount := sdkmath.ZeroInt() - for _, validator := range hostZone.Validators { + // Pairwise-compare function for Slice Stable Sort + lessFunc := func(i, j int) bool { + validatorA := validatorUnbondCapacity[i] + validatorB := validatorUnbondCapacity[j] - targetUnbondAmount := targetUnbondingsByValidator[validator.Address] - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - " Validator %s - Weight: %d, Target Unbond Amount: %v, Current Delegations: %v", validator.Address, validator.Weight, targetUnbondAmount, validator.DelegationAmt)) + balanceRatioValA, _ := validatorA.GetBalanceRatio() + balanceRatioValB, _ := validatorB.GetBalanceRatio() - // If they don't have enough to cover the unbondings, set their target unbond amount to their current delegations and increment the overflow - if targetUnbondAmount.GT(validator.DelegationAmt) { - overflowAmount = overflowAmount.Add(targetUnbondAmount).Sub(validator.DelegationAmt) - targetUnbondAmount = validator.DelegationAmt + // Sort by the balance ratio first - in ascending order - so the more unbalanced validators appear first + if !balanceRatioValA.Equal(balanceRatioValB) { + return balanceRatioValA.LT(balanceRatioValB) } - finalUnbondingsByValidator[validator.Address] = targetUnbondAmount - } - // If there was overflow (i.e. there was at least one validator without sufficient delegations to cover their unbondings) - // then reallocate across the other validators - if overflowAmount.GT(sdkmath.ZeroInt()) { - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "Expected validator undelegation amount on is greater than it's current delegations. Redistributing undelegations accordingly.")) - - for _, validator := range hostZone.Validators { - targetUnbondAmount := finalUnbondingsByValidator[validator.Address] - - // Check if we can unbond more from this validator - validatorUnbondExtraCapacity := validator.DelegationAmt.Sub(targetUnbondAmount) - if validatorUnbondExtraCapacity.GT(sdkmath.ZeroInt()) { - // If we can fully cover the unbonding, do so with this validator - if validatorUnbondExtraCapacity.GT(overflowAmount) { - finalUnbondingsByValidator[validator.Address] = finalUnbondingsByValidator[validator.Address].Add(overflowAmount) - overflowAmount = sdkmath.ZeroInt() - break - } else { - // If we can't, cover the unbondings, cover as much as we can and move onto the next validator - finalUnbondingsByValidator[validator.Address] = finalUnbondingsByValidator[validator.Address].Add(validatorUnbondExtraCapacity) - overflowAmount = overflowAmount.Sub(validatorUnbondExtraCapacity) - } - } + // If the ratio's are equal, use the capacity as a tie breaker + // where the larget capacity comes first + if !validatorA.Capacity.Equal(validatorB.Capacity) { + return validatorA.Capacity.GT(validatorB.Capacity) } - } - // If after re-allocating, we still can't cover the overflow, something is very wrong - if overflowAmount.GT(sdkmath.ZeroInt()) { - errMsg := fmt.Sprintf("Could not unbond %v on Host Zone %s, unable to balance the unbond amount across validators", - totalAmountToUnbond, hostZone.ChainId) - k.Logger(ctx).Error(errMsg) - return nil, sdkmath.ZeroInt(), nil, nil, errorsmod.Wrap(sdkerrors.ErrNotFound, errMsg) + // Finally, if the ratio and capacity are both equal, use address as a tie breaker + return validatorA.ValidatorAddress < validatorB.ValidatorAddress } + sort.SliceStable(validatorUnbondCapacity, lessFunc) - // Get the delegation account - delegationAccount := hostZone.DelegationAccount - if delegationAccount == nil || delegationAccount.Address == "" { - errMsg := fmt.Sprintf("Zone %s is missing a delegation address!", hostZone.ChainId) - k.Logger(ctx).Error(errMsg) - return nil, sdkmath.ZeroInt(), nil, nil, errorsmod.Wrap(types.ErrHostZoneICAAccountNotFound, errMsg) - } + return validatorUnbondCapacity, nil +} - // Construct the MsgUndelegate transaction - var splitDelegations []*types.SplitDelegation - for _, validatorAddress := range utils.StringMapKeys(finalUnbondingsByValidator) { // DO NOT REMOVE: StringMapKeys fixes non-deterministic map iteration - undelegationAmount := sdk.NewCoin(hostZone.HostDenom, finalUnbondingsByValidator[validatorAddress]) +// Given a total unbond amount and list of unbond capacity for each validator, sorted by unbond priority +// Iterates through the list and unbonds as much as possible from each validator until all the +// unbonding has been accounted for +// +// Returns the list of messages and the callback data for the ICA +func (k Keeper) GetUnbondingICAMessages( + hostZone types.HostZone, + totalUnbondAmount sdkmath.Int, + prioritizedUnbondCapacity []ValidatorUnbondCapacity, +) (msgs []proto.Message, unbondings []*types.SplitDelegation, err error) { + // Loop through each validator and unbond as much as possible + remainingUnbondAmount := totalUnbondAmount + for _, validatorCapacity := range prioritizedUnbondCapacity { + // Break once all unbonding has been accounted for + if remainingUnbondAmount.IsZero() { + break + } - // Ignore validators with a zero undelegation amount to prevent a failed transaction on the host - if undelegationAmount.IsZero() { - continue + // Unbond either up to the capacity or up to the total remaining unbond amount + // (whichever comes first) + var unbondAmount sdkmath.Int + if validatorCapacity.Capacity.LT(remainingUnbondAmount) { + unbondAmount = validatorCapacity.Capacity + } else { + unbondAmount = remainingUnbondAmount } - // Store the ICA transactions + remainingUnbondAmount = remainingUnbondAmount.Sub(unbondAmount) + unbondToken := sdk.NewCoin(hostZone.HostDenom, unbondAmount) + + // Build the undelegate ICA messages msgs = append(msgs, &stakingtypes.MsgUndelegate{ - DelegatorAddress: delegationAccount.Address, - ValidatorAddress: validatorAddress, - Amount: undelegationAmount, + DelegatorAddress: hostZone.DelegationIcaAddress, + ValidatorAddress: validatorCapacity.ValidatorAddress, + Amount: unbondToken, }) - // Store the split delegations for the callback - splitDelegations = append(splitDelegations, &types.SplitDelegation{ - Validator: validatorAddress, - Amount: undelegationAmount.Amount, + // Build the validator splits for the callback + unbondings = append(unbondings, &types.SplitDelegation{ + Validator: validatorCapacity.ValidatorAddress, + Amount: unbondAmount, }) } - // Shouldn't be possible, but if all the validator's had a target unbonding of zero, do not send an ICA - if len(msgs) == 0 { - return nil, sdkmath.ZeroInt(), nil, nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target unbonded amount was 0 for each validator") + // Sanity check that we had enough capacity to unbond + if !remainingUnbondAmount.IsZero() { + return msgs, unbondings, + fmt.Errorf("unable to unbond full amount (%v) from %v", totalUnbondAmount, hostZone.ChainId) } - // Store the callback data - undelegateCallback := types.UndelegateCallback{ - HostZoneId: hostZone.ChainId, - SplitDelegations: splitDelegations, - EpochUnbondingRecordIds: epochUnbondingRecordIds, + return msgs, unbondings, nil +} + +// Submits undelegation ICA messages for a given host zone +// +// First, the total unbond amount is determined from the epoch unbonding records +// Then that unbond amount is allowed to cascade across the validators in order of how proportionally +// different their current delegations are from the weight implied target delegation, +// until their capacities have consumed the full amount +// As a result, unbondings lead to a more balanced distribution of stake across validators +// +// Context: Over time, as LSM Liquid stakes are accepted, the total stake managed by the protocol becomes unbalanced +// as liquid stakes are not aligned with the validator weights. This is only rebalanced once per unbonding period +func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) error { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Preparing MsgUndelegates from the delegation account to each validator")) + + // Confirm the delegation account was registered + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", hostZone.ChainId) } - k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Marshalling UndelegateCallback args: %+v", undelegateCallback)) - marshalledCallbackArgs, err = k.MarshalUndelegateCallbackArgs(ctx, undelegateCallback) - if err != nil { - k.Logger(ctx).Error(err.Error()) - return nil, sdkmath.ZeroInt(), nil, nil, errorsmod.Wrap(sdkerrors.ErrNotFound, err.Error()) + + // Iterate through every unbonding record and sum the total amount to unbond for the given host zone + totalUnbondAmount, epochUnbondingRecordIds := k.GetTotalUnbondAmountAndRecordsIds(ctx, hostZone.ChainId) + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Total unbonded amount: %v%s", totalUnbondAmount, hostZone.HostDenom)) + + // If there's nothing to unbond, return and move on to the next host zone + if totalUnbondAmount.IsZero() { + return nil } - return msgs, totalAmountToUnbond, marshalledCallbackArgs, epochUnbondingRecordIds, nil -} + // Determine the ideal balanced delegation for each validator after the unbonding + // (as if we were to unbond and then rebalance) + // This will serve as the starting point for determining how much to unbond each validator + delegationAfterUnbonding := hostZone.TotalDelegations.Sub(totalUnbondAmount) + balancedDelegationsAfterUnbonding, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, delegationAfterUnbonding) + if err != nil { + return errorsmod.Wrapf(err, "unable to get target val amounts for host zone %s", hostZone.ChainId) + } -// Submit MsgUndelegate ICA transactions across validators -func (k Keeper) SubmitHostZoneUnbondingMsg(ctx sdk.Context, msgs []proto.Message, totalAmtToUnbond sdkmath.Int, marshalledCallbackArgs []byte, hostZone types.HostZone) error { - delegationAccount := hostZone.GetDelegationAccount() + // Determine the unbond capacity for each validator + // Each validator can only unbond up to the difference between their current delegation and their balanced delegation + // The validator's current delegation will be above their balanced delegation if they've received LSM Liquid Stakes + // (which is only rebalanced once per unbonding period) + validatorUnbondCapacity := k.GetValidatorUnbondCapacity(ctx, hostZone.Validators, balancedDelegationsAfterUnbonding) + if len(validatorUnbondCapacity) == 0 { + return fmt.Errorf("there are no validators on %s with sufficient unbond capacity", hostZone.ChainId) + } - // safety check: if msgs is nil, error - if msgs == nil { - return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "no msgs to submit for host zone unbondings") + // Sort the unbonding capacity by priority + // Priority is determined by checking the how proportionally unbalanced each validator is + // Zero weight validators will come first in the list + prioritizedUnbondCapacity, err := SortUnbondingCapacityByPriority(validatorUnbondCapacity) + if err != nil { + return err } - _, err := k.SubmitTxsDayEpoch(ctx, hostZone.GetConnectionId(), msgs, *delegationAccount, ICACallbackID_Undelegate, marshalledCallbackArgs) + // Get the undelegation ICA messages and split delegations for the callback + msgs, unbondings, err := k.GetUnbondingICAMessages(hostZone, totalUnbondAmount, prioritizedUnbondCapacity) if err != nil { - errMsg := fmt.Sprintf("Error submitting unbonding tx: %s", err) - k.Logger(ctx).Error(errMsg) - return errorsmod.Wrap(sdkerrors.ErrNotFound, errMsg) + return err + } + + // Shouldn't be possible, but if all the validator's had a target unbonding of zero, do not send an ICA + if len(msgs) == 0 { + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target unbonded amount was 0 for each validator") + } + + // Send the messages in batches so the gas limit isn't exceedeed + for start := 0; start < len(msgs); start += UndelegateICABatchSize { + end := start + UndelegateICABatchSize + if end > len(msgs) { + end = len(msgs) + } + + msgsBatch := msgs[start:end] + unbondingsBatch := unbondings[start:end] + + // Store the callback data + undelegateCallback := types.UndelegateCallback{ + HostZoneId: hostZone.ChainId, + SplitDelegations: unbondingsBatch, + EpochUnbondingRecordIds: epochUnbondingRecordIds, + } + callbackArgsBz, err := proto.Marshal(&undelegateCallback) + if err != nil { + return errorsmod.Wrap(err, "unable to marshal undelegate callback args") + } + + // Submit the undelegation ICA + if _, err := k.SubmitTxsDayEpoch( + ctx, + hostZone.ConnectionId, + msgsBatch, + types.ICAAccountType_DELEGATION, + ICACallbackID_Undelegate, + callbackArgsBz, + ); err != nil { + return errorsmod.Wrapf(err, "unable to submit unbonding ICA for %s", hostZone.ChainId) + } + + // flag the delegation change in progress on each validator + for _, unbonding := range unbondingsBatch { + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, unbonding.Validator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + } + + // Update the epoch unbonding record status + if err := k.RecordsKeeper.SetHostZoneUnbondings( + ctx, + hostZone.ChainId, + epochUnbondingRecordIds, + recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + ); err != nil { + return err } - ctx.EventManager().EmitEvent( - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute("hostZone", hostZone.ChainId), - sdk.NewAttribute("newAmountUnbonding", totalAmtToUnbond.String()), - ), - ) + EmitUndelegationEvent(ctx, hostZone, totalUnbondAmount) return nil } // this function iterates each host zone, and if it's the right time to // initiate an unbonding, it attempts to unbond all outstanding records -// returns (1) did all chains succeed -// -// (2) list of strings of successful unbondings -// (3) list of strings of failed unbondings -func (k Keeper) InitiateAllHostZoneUnbondings(ctx sdk.Context, dayNumber uint64) (success bool, successfulUnbondings []string, failedUnbondings []string) { +func (k Keeper) InitiateAllHostZoneUnbondings(ctx sdk.Context, dayNumber uint64) { k.Logger(ctx).Info(fmt.Sprintf("Initiating all host zone unbondings for epoch %d...", dayNumber)) - success = true - successfulUnbondings = []string{} - failedUnbondings = []string{} for _, hostZone := range k.GetAllActiveHostZone(ctx) { // Confirm the unbonding is supposed to be triggered this epoch - if dayNumber%hostZone.UnbondingFrequency != 0 { + unbondingFrequency := hostZone.GetUnbondingFrequency() + if dayNumber%unbondingFrequency != 0 { k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, - "Host does not unbond this epoch (Unbonding Frequency: %d, Epoch: %d)", hostZone.UnbondingFrequency, dayNumber)) + "Host does not unbond this epoch (Unbonding Period: %d, Unbonding Frequency: %d, Epoch: %d)", + hostZone.UnbondingPeriod, unbondingFrequency, dayNumber)) continue } // Get host zone unbonding message by summing up the unbonding records - msgs, totalAmountToUnbond, marshalledCallbackArgs, epochUnbondingRecordIds, err := k.GetHostZoneUnbondingMsgs(ctx, hostZone) - if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Error getting unbonding msgs for host zone %s: %s", hostZone.ChainId, err.Error())) - success = false - failedUnbondings = append(failedUnbondings, hostZone.ChainId) - continue - } - - // If there's nothing to unbond, move on to the next host - if totalAmountToUnbond.IsZero() { - continue - } - - // Submit Unbonding ICA transactions - err = k.SubmitHostZoneUnbondingMsg(ctx, msgs, totalAmountToUnbond, marshalledCallbackArgs, hostZone) - if err != nil { - errMsg := fmt.Sprintf("Error submitting unbonding tx for host zone %s: %s", hostZone.ChainId, err.Error()) - k.Logger(ctx).Error(errMsg) - success = false - failedUnbondings = append(failedUnbondings, hostZone.ChainId) + if err := k.UnbondFromHostZone(ctx, hostZone); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Error initiating host zone unbondings for host zone %s: %s", hostZone.ChainId, err.Error())) continue } - - // Update the epoch unbonding record status to IN_PROGRESS - err = k.RecordsKeeper.SetHostZoneUnbondings(ctx, hostZone.ChainId, epochUnbondingRecordIds, recordstypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS) - if err != nil { - k.Logger(ctx).Error(err.Error()) - success = false - continue - } - successfulUnbondings = append(successfulUnbondings, hostZone.ChainId) } - - return success, successfulUnbondings, failedUnbondings } // Deletes any epoch unbonding records that have had all unbondings claimed @@ -360,13 +463,11 @@ func (k Keeper) SweepAllUnbondedTokensForHostZone(ctx sdk.Context, hostZone type k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Batch transferring %v to host zone", totalAmtTransferToRedemptionAcct)) // Get the delegation account and redemption account - delegationAccount := hostZone.DelegationAccount - if delegationAccount == nil || delegationAccount.Address == "" { + if hostZone.DelegationIcaAddress == "" { k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a delegation address!", hostZone.ChainId)) return false, sdkmath.ZeroInt() } - redemptionAccount := hostZone.RedemptionAccount - if redemptionAccount == nil || redemptionAccount.Address == "" { + if hostZone.RedemptionIcaAddress == "" { k.Logger(ctx).Error(fmt.Sprintf("Zone %s is missing a redemption address!", hostZone.ChainId)) return false, sdkmath.ZeroInt() } @@ -375,8 +476,8 @@ func (k Keeper) SweepAllUnbondedTokensForHostZone(ctx sdk.Context, hostZone type sweepCoin := sdk.NewCoin(hostZone.HostDenom, totalAmtTransferToRedemptionAcct) msgs := []proto.Message{ &banktypes.MsgSend{ - FromAddress: delegationAccount.Address, - ToAddress: redemptionAccount.Address, + FromAddress: hostZone.DelegationIcaAddress, + ToAddress: hostZone.RedemptionIcaAddress, Amount: sdk.NewCoins(sweepCoin), }, } @@ -394,7 +495,7 @@ func (k Keeper) SweepAllUnbondedTokensForHostZone(ctx sdk.Context, hostZone type } // Send the transfer ICA - _, err = k.SubmitTxsDayEpoch(ctx, hostZone.ConnectionId, msgs, *delegationAccount, ICACallbackID_Redemption, marshalledCallbackArgs) + _, err = k.SubmitTxsDayEpoch(ctx, hostZone.ConnectionId, msgs, types.ICAAccountType_DELEGATION, ICACallbackID_Redemption, marshalledCallbackArgs) if err != nil { k.Logger(ctx).Error(fmt.Sprintf("Failed to SubmitTxs, transfer to redemption account on %s", hostZone.ChainId)) return false, sdkmath.ZeroInt() diff --git a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go index f2fcddc224..13a817bc93 100644 --- a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go +++ b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go @@ -1,234 +1,852 @@ package keeper_test import ( - "fmt" - "strings" - sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" + ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -type GetHostZoneUnbondingMsgsTestCase struct { - amtToUnbond sdkmath.Int - epochUnbondingRecords []recordtypes.EpochUnbondingRecord - hostZone stakeibc.HostZone - lightClientTime uint64 - totalWgt uint64 - valNames []string +type ValidatorUnbonding struct { + Validator string + UnbondAmount sdkmath.Int } -func (s *KeeperTestSuite) SetupGetHostZoneUnbondingMsgs() GetHostZoneUnbondingMsgsTestCase { - delegationAccountOwner := fmt.Sprintf("%s.%s", HostChainId, "DELEGATION") - s.CreateICAChannel(delegationAccountOwner) - - hostVal1Addr := "cosmos_VALIDATOR_1" - hostVal2Addr := "cosmos_VALIDATOR_2" - hostVal3Addr := "cosmos_VALIDATOR_3" - hostVal4Addr := "cosmos_VALIDATOR_4" - valNames := []string{hostVal1Addr, hostVal2Addr, hostVal3Addr, hostVal4Addr} - delegationAddr := "cosmos_DELEGATION" - amtToUnbond := sdkmath.NewInt(1_000_000) - amtVal1 := sdkmath.NewInt(1_000_000) - amtVal2 := sdkmath.NewInt(2_000_000) - wgtVal1 := uint64(1) - wgtVal2 := uint64(2) - totalWgt := uint64(5) - // 2022-08-12T19:51, a random time in the past - unbondingTime := uint64(1660348276) - lightClientTime := unbondingTime + 1 +type UnbondingTestCase struct { + hostZone types.HostZone + totalUnbondAmount sdkmath.Int + delegationChannelID string + delegationPortID string + channelStartSequence uint64 + expectedUnbondingRecordIds []uint64 +} - // define the host zone with stakedBal and validators with staked amounts - validators := []*stakeibc.Validator{ - { - Address: hostVal1Addr, - DelegationAmt: amtVal1, - Weight: wgtVal1, - }, - { - Address: hostVal2Addr, - DelegationAmt: amtVal2, - Weight: wgtVal2, - }, - { - Address: hostVal3Addr, - // DelegationAmt and Weight are the same as Val2, to test tie breaking - DelegationAmt: amtVal2, - Weight: wgtVal2, - }, - { - Address: hostVal4Addr, - // Zero weight validator - DelegationAmt: sdkmath.NewInt(0), - Weight: 0, - }, +func (s *KeeperTestSuite) SetupTestUnbondFromHostZone( + totalWeight int64, + totalStake sdkmath.Int, + unbondAmount sdkmath.Int, + validators []*types.Validator, +) UnbondingTestCase { + delegationAccountOwner := types.FormatICAAccountOwner(HostChainId, types.ICAAccountType_DELEGATION) + delegationChannelID, delegationPortID := s.CreateICAChannel(delegationAccountOwner) + + // Sanity checks: + // - total stake matches + // - total weights sum to 100 + actualTotalStake := sdkmath.ZeroInt() + actualTotalWeights := uint64(0) + for _, validator := range validators { + actualTotalStake = actualTotalStake.Add(validator.Delegation) + actualTotalWeights += validator.Weight + } + s.Require().Equal(totalStake.Int64(), actualTotalStake.Int64(), "test setup failed - total stake does not match") + s.Require().Equal(totalWeight, int64(actualTotalWeights), "test setup failed - total weight does not match") + + // Store the validators on the host zone + hostZone := types.HostZone{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + HostDenom: Atom, + DelegationIcaAddress: "cosmos_DELEGATION", + Validators: validators, + TotalDelegations: totalStake, } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - delegationAccount := stakeibc.ICAAccount{ - Address: delegationAddr, - Target: stakeibc.ICAAccountType_DELEGATION, + // Store the total unbond amount across two epoch unbonding records + halfUnbondAmount := unbondAmount.Quo(sdkmath.NewInt(2)) + for i := uint64(1); i <= 2; i++ { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordtypes.EpochUnbondingRecord{ + EpochNumber: i, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + HostZoneId: HostChainId, + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + NativeTokenAmount: halfUnbondAmount, + }, + }, + }) } - hostZone := stakeibc.HostZone{ - ChainId: "GAIA", - HostDenom: "uatom", - Bech32Prefix: "cosmos", - Validators: validators, - DelegationAccount: &delegationAccount, + // Mock the epoch tracker to timeout 90% through the epoch + strideEpochTracker := types.EpochTracker{ + EpochIdentifier: epochstypes.DAY_EPOCH, + Duration: 10_000_000_000, // 10 second epochs + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeout + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) + + // Get tx seq number before the ICA was submitted to check whether an ICA was submitted + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, delegationPortID, delegationChannelID) + s.Require().True(found, "sequence number not found before ica") + + return UnbondingTestCase{ + hostZone: hostZone, + totalUnbondAmount: unbondAmount, + delegationChannelID: delegationChannelID, + delegationPortID: delegationPortID, + channelStartSequence: startSequence, + expectedUnbondingRecordIds: []uint64{1, 2}, } +} - // list of epoch unbonding records - epochUnbondingRecords := []recordtypes.EpochUnbondingRecord{ - { - EpochNumber: 0, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, - }, - { - EpochNumber: 1, - HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{}, - }, +// Helper function to check that an undelegation ICA was submitted and that the callback data +// holds the expected unbondings for each validator +func (s *KeeperTestSuite) CheckUnbondingMessages(tc UnbondingTestCase, expectedUnbondings []ValidatorUnbonding) { + // Trigger unbonding + err := s.App.StakeibcKeeper.UnbondFromHostZone(s.Ctx, tc.hostZone) + s.Require().NoError(err, "no error expected when calling unbond from host") + + // Check that sequence number incremented from a sent ICA + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after ica") + s.Require().Equal(tc.channelStartSequence+1, endSequence, "sequence number should have incremented") + + // Check that callback data was stored + callbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Len(callbackData, 1, "there should only be one callback data stored") + + // Check host zone and epoch unbonding record id's + var actualCallback types.UndelegateCallback + err = proto.Unmarshal(callbackData[0].CallbackArgs, &actualCallback) + s.Require().NoError(err, "no error expected when unmarshalling callback args") + + s.Require().Equal(HostChainId, actualCallback.HostZoneId, "chain-id on callback") + s.Require().Equal(tc.expectedUnbondingRecordIds, actualCallback.EpochUnbondingRecordIds, "unbonding record id's on callback") + + // Check splits from callback data align with expected unbondings + s.Require().Len(actualCallback.SplitDelegations, len(expectedUnbondings), "number of unbonding messages") + for i, expected := range expectedUnbondings { + actualSplit := actualCallback.SplitDelegations[i] + s.Require().Equal(expected.Validator, actualSplit.Validator, "callback message validator - index %d", i) + s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.Amount.Int64(), "callback message amount - index %d", i) } - // for each epoch unbonding record, add a host zone unbonding record and append the record - for _, epochUnbondingRecord := range epochUnbondingRecords { - hostZoneUnbonding := &recordtypes.HostZoneUnbonding{ - NativeTokenAmount: amtToUnbond, - Denom: "uatom", - HostZoneId: "GAIA", - UnbondingTime: unbondingTime, // 2022-08-12T19:52 - Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + // Check the delegation change in progress was incremented from each that had an unbonding + actualHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + + for _, actualValidator := range actualHostZone.Validators { + validatorUnbonded := false + for _, unbondedVal := range expectedUnbondings { + if actualValidator.Address == unbondedVal.Validator { + validatorUnbonded = true + } } - epochUnbondingRecord.HostZoneUnbondings = append(epochUnbondingRecord.HostZoneUnbondings, hostZoneUnbonding) - s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + + expectedDelegationChangesInProgress := 0 + if validatorUnbonded { + expectedDelegationChangesInProgress = 1 + } + s.Require().Equal(expectedDelegationChangesInProgress, int(actualValidator.DelegationChangesInProgress), + "validator %s delegation changes in progress", actualValidator.Address) } - s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + // Check that the unbond event was emitted with the proper unbond amount + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyTotalUnbondAmount, tc.totalUnbondAmount.String()) +} + +func (s *KeeperTestSuite) TestUnbondFromHostZone_Successful_UnbondOnlyZeroWeightVals() { + // Native Stake: 1000 + // LSM Stake: 250 + // Total Stake: 1250 + // + // Unbond Amount: 50 + // Stake After Unbond: 1200 + totalUnbondAmount := sdkmath.NewInt(50) + totalStake := sdkmath.NewInt(1250) + totalWeight := int64(100) + + validators := []*types.Validator{ + // Current: 100, Weight: 10%, Balanced: 10% * 1200 = 120, Capacity: 100-120 = -20 -> 0 + // No capacity -> unbondings + {Address: "valA", Weight: 10, Delegation: sdkmath.NewInt(100)}, + // Current: 420, Weight: 35%, Balanced: 35% * 1200 = 420, Capacity: 420-420 = 0 + // No capacity -> unbondings + {Address: "valB", Weight: 35, Delegation: sdkmath.NewInt(420)}, + // Weight: 0%, Balanced: 0, Capacity: 40 + // >>> Ratio: 0 -> Priority #1 <<< + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(40)}, + // Current: 300, Weight: 30%, Balanced: 30% * 1200 = 360, Capacity: 300-360 = -60 -> 0 + // No capacity -> unbondings + {Address: "valD", Weight: 30, Delegation: sdkmath.NewInt(300)}, + // Weight: 0%, Balanced: 0, Capacity: 30 + // >>> Ratio: 0 -> Priority #2 <<< + {Address: "valE", Weight: 0, Delegation: sdkmath.NewInt(30)}, + // Current: 200, Weight: 10%, Balanced: 10% * 1200 = 120, Capacity: 200 - 120 = 80 + // >>> Ratio: 110/200 = 0.55 -> #3 Priority <<<< + {Address: "valF", Weight: 10, Delegation: sdkmath.NewInt(200)}, + // Current: 160, Weight: 15%, Balanced: 15% * 1200 = 180, Capacity: 160-180 = -20 -> 0 + // No capacity -> unbondings + {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, + } - return GetHostZoneUnbondingMsgsTestCase{ - amtToUnbond: amtToUnbond, - hostZone: hostZone, - epochUnbondingRecords: epochUnbondingRecords, - lightClientTime: lightClientTime, // 2022-08-12T19:51.000001, 1ns after the unbonding time - totalWgt: totalWgt, - valNames: valNames, + expectedUnbondings := []ValidatorUnbonding{ + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 50 - 40 = 10 unbond remaining + // valE has #2 priority - unbond up to remaining + {Validator: "valE", UnbondAmount: sdkmath.NewInt(10)}, } + + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) + s.CheckUnbondingMessages(tc, expectedUnbondings) } -func (s *KeeperTestSuite) TestGetHostZoneUnbondingMsgs_Successful() { - tc := s.SetupGetHostZoneUnbondingMsgs() +func (s *KeeperTestSuite) TestUnbondFromHostZone_Successful_UnbondTotalLessThanTotalLSM() { + // Native Stake: 1000 + // LSM Stake: 250 + // Total Stake: 1250 + // + // Unbond Amount: 150 + // Stake After Unbond: 1100 + totalUnbondAmount := sdkmath.NewInt(150) + totalStake := sdkmath.NewInt(1250) + totalWeight := int64(100) + + validators := []*types.Validator{ + // Current: 100, Weight: 10%, Balanced: 10% * 1100 = 110, Capacity: 100-110 = -10 -> 0 + // No capacity -> unbondings + {Address: "valA", Weight: 10, Delegation: sdkmath.NewInt(100)}, + // Current: 420, Weight: 35%, Balanced: 35% * 1100 = 385, Capacity: 420-385 = 35 + // >>> Ratio: 385/420 = 0.91 -> Priority #4 <<< + {Address: "valB", Weight: 35, Delegation: sdkmath.NewInt(420)}, + // Weight: 0%, Balanced: 0, Capacity: 40 + // >>> Ratio: 0 -> Priority #1 <<< + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(40)}, + // Current: 300, Weight: 30%, Balanced: 30% * 1100 = 330, Capacity: 300-330 = -30 -> 0 + // No capacity -> unbondings + {Address: "valD", Weight: 30, Delegation: sdkmath.NewInt(300)}, + // Weight: 0%, Balanced: 0, Capacity: 30 + // >>> Ratio: 0 -> Priority #2 <<< + {Address: "valE", Weight: 0, Delegation: sdkmath.NewInt(30)}, + // Current: 200, Weight: 10%, Balanced: 10% * 1100 = 110, Capacity: 200 - 110 = 90 + // >>> Ratio: 110/200 = 0.55 -> Priority #3 <<< + {Address: "valF", Weight: 10, Delegation: sdkmath.NewInt(200)}, + // Current: 160, Weight: 15%, Balanced: 15% * 1100 = 165, Capacity: 160-165 = -5 -> 0 + // No capacity -> unbondings + {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, + } - // TODO: check epoch unbonding record ids here - actualUnbondMsgs, actualAmtToUnbond, actualCallbackArgs, _, err := s.App.StakeibcKeeper.GetHostZoneUnbondingMsgs(s.Ctx, tc.hostZone) - s.Require().NoError(err) + expectedUnbondings := []ValidatorUnbonding{ + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 150 - 40 = 110 unbond remaining + // valE has #2 priority - unbond up to capacity at 30 + {Validator: "valE", UnbondAmount: sdkmath.NewInt(30)}, + // 150 - 40 - 30 = 80 unbond remaining + // valF has #3 priority - unbond up to remaining + {Validator: "valF", UnbondAmount: sdkmath.NewInt(80)}, + } - // verify the callback attributes are as expected - actualCallbackResult, err := s.App.StakeibcKeeper.UnmarshalUndelegateCallbackArgs(s.Ctx, actualCallbackArgs) - s.Require().NoError(err, "could unmarshal undelegation callback args") + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) + s.CheckUnbondingMessages(tc, expectedUnbondings) +} - // The zero weight validator should not be included in the message - expectedNumMessages := len(tc.hostZone.Validators) - 1 - s.Require().Equal(expectedNumMessages, len(actualCallbackResult.SplitDelegations), "number of split delegations in success unbonding case") - s.Require().Equal(tc.hostZone.ChainId, actualCallbackResult.HostZoneId, "host zone id in success unbonding case") +func (s *KeeperTestSuite) TestUnbondFromHostZone_Successful_UnbondTotalGreaterThanTotalLSM() { + // Native Stake: 1000 + // LSM Stake: 250 + // Total Stake: 1250 + // + // Unbond Amount: 350 + // Stake After Unbond: 900 + totalUnbondAmount := sdkmath.NewInt(350) + totalStake := sdkmath.NewInt(1250) + totalWeight := int64(100) + + validators := []*types.Validator{ + // Current: 100, Weight: 10%, Balanced: 10% * 900 = 90, Capacity: 100-90 = 10 + // >>> Ratio: 90/100 = 0.9 -> Priority #7 <<< + {Address: "valA", Weight: 10, Delegation: sdkmath.NewInt(100)}, + // Current: 420, Weight: 35%, Balanced: 35% * 900 = 315, Capacity: 420-315 = 105 + // >>> Ratio: 315/420 = 0.75 -> Priority #4 <<< + {Address: "valB", Weight: 35, Delegation: sdkmath.NewInt(420)}, + // Weight: 0%, Balanced: 0, Capacity: 40 + // >>> Ratio: 0 -> Priority #1 <<< + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(40)}, + // Current: 300, Weight: 30%, Balanced: 30% * 900 = 270, Capacity: 300-270 = 30 + // >>> Ratio: 270/300 = 0.9 -> Priority #6 <<< + {Address: "valD", Weight: 30, Delegation: sdkmath.NewInt(300)}, + // Weight: 0%, Balanced: 0, Capacity: 30 + // >>> Ratio: 0 -> Priority #2 <<< + {Address: "valE", Weight: 0, Delegation: sdkmath.NewInt(30)}, + // Current: 200, Weight: 10%, Balanced: 10% * 900 = 90, Capacity: 200 - 90 = 110 + // >>> Ratio: 90/200 = 0.45 -> Priority #3 <<< + {Address: "valF", Weight: 10, Delegation: sdkmath.NewInt(200)}, + // Current: 160, Weight: 15%, Balanced: 15% * 900 = 135, Capacity: 160-135 = 25 + // >>> Ratio: 135/160 = 0.85 -> Priority #5 <<< + {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, + } - // TODO add case that checks the *marshaled* callback args against expectations + expectedUnbondings := []ValidatorUnbonding{ + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 350 - 40 = 310 unbond remaining + // valE has #2 priority - unbond up to capacity at 30 + {Validator: "valE", UnbondAmount: sdkmath.NewInt(30)}, + // 310 - 30 = 280 unbond remaining + // valF has #3 priority - unbond up to capacity at 110 + {Validator: "valF", UnbondAmount: sdkmath.NewInt(110)}, + // 280 - 110 = 170 unbond remaining + // valB has #4 priority - unbond up to capacity at 105 + {Validator: "valB", UnbondAmount: sdkmath.NewInt(105)}, + // 170 - 105 = 65 unbond remaining + // valG has #5 priority - unbond up to capacity at 25 + {Validator: "valG", UnbondAmount: sdkmath.NewInt(25)}, + // 65 - 25 = 40 unbond remaining + // valD has #6 priority - unbond up to capacity at 30 + {Validator: "valD", UnbondAmount: sdkmath.NewInt(30)}, + // 40 - 30 = 10 unbond remaining + // valA has #7 priority - unbond up to remaining + {Validator: "valA", UnbondAmount: sdkmath.NewInt(10)}, + } - // the number of unbonding messages should be (number of validators) * (records to unbond) - s.Require().Equal(expectedNumMessages, len(actualUnbondMsgs), "number of unbonding messages should be number of records to unbond") + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) + s.CheckUnbondingMessages(tc, expectedUnbondings) +} - s.Require().Equal(tc.amtToUnbond.Mul(sdkmath.NewInt(int64(len(tc.epochUnbondingRecords)))), actualAmtToUnbond, "total amount to unbond should match input amtToUnbond") +func (s *KeeperTestSuite) TestUnbondFromHostZone_NoDelegationAccount() { + // Call unbond on a host zone without a delegation account - it should error + invalidHostZone := types.HostZone{ + ChainId: HostChainId, + DelegationIcaAddress: "", + } + err := s.App.StakeibcKeeper.UnbondFromHostZone(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "no delegation account found for GAIA: ICA acccount not found on host zone") +} + +func (s *KeeperTestSuite) TestUnbondFromHostZone_ZeroUnbondAmount() { + totalWeight := int64(0) + totalStake := sdkmath.ZeroInt() + totalUnbondAmount := sdkmath.ZeroInt() + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, []*types.Validator{}) - totalWgt := sdk.NewDec(int64(tc.totalWgt)) - actualAmtToUnbondDec := sdk.NewDecFromInt(actualAmtToUnbond) - actualUnbondMsg1 := actualUnbondMsgs[0].String() - actualUnbondMsg2 := actualUnbondMsgs[1].String() - val1Fraction := sdk.NewDec(int64(tc.hostZone.Validators[0].Weight)).Quo(totalWgt) - val2Fraction := sdk.NewDec(int64(tc.hostZone.Validators[1].Weight)).Quo(totalWgt) - val1UnbondAmt := val1Fraction.Mul(actualAmtToUnbondDec).TruncateInt().String() - val2UnbondAmt := val2Fraction.Mul(actualAmtToUnbondDec).TruncateInt().String() + // Call unbond - it should NOT error since the unbond amount was 0 - but it should short circuit + err := s.App.StakeibcKeeper.UnbondFromHostZone(s.Ctx, tc.hostZone) + s.Require().Nil(err, "unbond should not have thrown an error - it should have simply ignored the host zone") + + // Confirm no ICAs were sent + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after ica") + s.Require().Equal(tc.channelStartSequence, endSequence, "sequence number should stay the same since no messages were sent") +} - val1Unbonded := strings.Contains(actualUnbondMsg1, val1UnbondAmt) - val2Unbonded := strings.Contains(actualUnbondMsg2, val2UnbondAmt) +func (s *KeeperTestSuite) TestUnbondFromHostZone_ZeroValidatorWeights() { + // Setup the test with all zero-weight validators + totalWeight := int64(0) + totalStake := sdkmath.NewInt(100) + totalUnbondAmount := sdkmath.NewInt(10) + validators := []*types.Validator{ + {Address: "valA", Weight: 0, Delegation: sdkmath.NewInt(25)}, + {Address: "valB", Weight: 0, Delegation: sdkmath.NewInt(50)}, + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(25)}, + } + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) - // there's rounding in the logic that distributes stake amongst validators, so one or the other of the balances will be correct, depending on the rounding - // at least one will be correct, and the other will be off by 1 by rounding, so we check and OR condition - s.Require().True(val1Unbonded || val2Unbonded, "unbonding amt should be the correct amount") + // Call unbond - it should fail + err := s.App.StakeibcKeeper.UnbondFromHostZone(s.Ctx, tc.hostZone) + s.Require().ErrorContains(err, "No non-zero validators found for host zone") } -func (s *KeeperTestSuite) TestGetHostZoneUnbondingMsgs_WrongChainId() { - tc := s.SetupGetHostZoneUnbondingMsgs() +func (s *KeeperTestSuite) TestUnbondFromHostZone_InsufficientDelegations() { + // Setup the test where the total unbond amount is greater than the current delegations + totalWeight := int64(100) + totalStake := sdkmath.NewInt(100) + totalUnbondAmount := sdkmath.NewInt(200) + validators := []*types.Validator{ + {Address: "valA", Weight: 25, Delegation: sdkmath.NewInt(25)}, + {Address: "valB", Weight: 50, Delegation: sdkmath.NewInt(50)}, + {Address: "valC", Weight: 25, Delegation: sdkmath.NewInt(25)}, + } + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) - tc.hostZone.ChainId = "nonExistentChainId" - // TODO: check epoch unbonding record ids here - msgs, totalAmtToUnbond, _, _, err := s.App.StakeibcKeeper.GetHostZoneUnbondingMsgs(s.Ctx, tc.hostZone) - // error should be nil -- we do NOT raise an error on a non-existent chain id, we simply do not send any messages - s.Require().Nil(err, "error should be nil -- we do NOT raise an error on a non-existent chain id, we simply do not send any messages") - // no messages should be sent - s.Require().Equal(0, len(msgs), "no messages should be sent") - // no value should be unbonded - s.Require().Equal(sdkmath.ZeroInt(), totalAmtToUnbond, "no value should be unbonded") + // Call unbond - it should fail + err := s.App.StakeibcKeeper.UnbondFromHostZone(s.Ctx, tc.hostZone) + s.Require().ErrorContains(err, "Cannot calculate target delegation if final amount is less than or equal to zero") } -func (s *KeeperTestSuite) TestGetHostZoneUnbondingMsgs_NoEpochUnbondingRecords() { - tc := s.SetupGetHostZoneUnbondingMsgs() +func (s *KeeperTestSuite) TestUnbondFromHostZone_ICAFailed() { + // Validator setup here is arbitrary as long as the totals match + totalWeight := int64(100) + totalStake := sdkmath.NewInt(100) + totalUnbondAmount := sdkmath.NewInt(10) + validators := []*types.Validator{{Address: "valA", Weight: 100, Delegation: sdkmath.NewInt(100)}} + tc := s.SetupTestUnbondFromHostZone(totalWeight, totalStake, totalUnbondAmount, validators) + + // Remove the connection ID from the host zone so that the ICA fails + invalidHostZone := tc.hostZone + invalidHostZone.ConnectionId = "" + + err := s.App.StakeibcKeeper.UnbondFromHostZone(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "unable to submit unbonding ICA for GAIA") +} - // iterate epoch unbonding records and delete them - for i := range tc.epochUnbondingRecords { - s.App.RecordsKeeper.RemoveEpochUnbondingRecord(s.Ctx, uint64(i)) +func (s *KeeperTestSuite) TestGetBalanceRatio() { + testCases := []struct { + unbondCapacity keeper.ValidatorUnbondCapacity + expectedRatio sdk.Dec + errorExpected bool + }{ + { + unbondCapacity: keeper.ValidatorUnbondCapacity{ + BalancedDelegation: sdkmath.NewInt(0), + CurrentDelegation: sdkmath.NewInt(100), + }, + expectedRatio: sdk.ZeroDec(), + errorExpected: false, + }, + { + unbondCapacity: keeper.ValidatorUnbondCapacity{ + BalancedDelegation: sdkmath.NewInt(25), + CurrentDelegation: sdkmath.NewInt(100), + }, + expectedRatio: sdk.MustNewDecFromStr("0.25"), + errorExpected: false, + }, + { + unbondCapacity: keeper.ValidatorUnbondCapacity{ + BalancedDelegation: sdkmath.NewInt(75), + CurrentDelegation: sdkmath.NewInt(100), + }, + expectedRatio: sdk.MustNewDecFromStr("0.75"), + errorExpected: false, + }, + { + unbondCapacity: keeper.ValidatorUnbondCapacity{ + BalancedDelegation: sdkmath.NewInt(150), + CurrentDelegation: sdkmath.NewInt(100), + }, + expectedRatio: sdk.MustNewDecFromStr("1.5"), + errorExpected: false, + }, + { + unbondCapacity: keeper.ValidatorUnbondCapacity{ + BalancedDelegation: sdkmath.NewInt(100), + CurrentDelegation: sdkmath.NewInt(0), + }, + errorExpected: true, + }, + } + for _, tc := range testCases { + balanceRatio, err := tc.unbondCapacity.GetBalanceRatio() + if tc.errorExpected { + s.Require().Error(err) + } else { + s.Require().NoError(err) + s.Require().Equal(tc.expectedRatio.String(), balanceRatio.String()) + } } +} - s.Require().Equal(0, len(s.App.RecordsKeeper.GetAllEpochUnbondingRecord(s.Ctx)), "number of epoch unbonding records should be 0 after deletion") +func (s *KeeperTestSuite) TestGetTotalUnbondAmountAndRecordsIds() { + epochUnbondingRecords := []recordtypes.EpochUnbondingRecord{ + { + EpochNumber: uint64(1), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Summed + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(1), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + }, + { + // Different host zone + HostZoneId: OsmoChainId, + NativeTokenAmount: sdkmath.NewInt(2), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + }, + }, + }, + { + EpochNumber: uint64(2), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Summed + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(3), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + }, + { + // Different host zone + HostZoneId: OsmoChainId, + NativeTokenAmount: sdkmath.NewInt(4), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + }, + }, + }, + { + EpochNumber: uint64(3), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Different Status + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(5), + Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + }, + { + // Different Status + HostZoneId: OsmoChainId, + NativeTokenAmount: sdkmath.NewInt(6), + Status: recordtypes.HostZoneUnbonding_UNBONDING_IN_PROGRESS, + }, + }, + }, + { + EpochNumber: uint64(4), + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + // Different Host and Status + HostZoneId: OsmoChainId, + NativeTokenAmount: sdkmath.NewInt(7), + Status: recordtypes.HostZoneUnbonding_CLAIMABLE, + }, + { + // Summed + HostZoneId: HostChainId, + NativeTokenAmount: sdkmath.NewInt(8), + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + }, + }, + }, + } - // TODO: check epoch unbonding record ids here - msgs, totalAmtToUnbond, _, _, err := s.App.StakeibcKeeper.GetHostZoneUnbondingMsgs(s.Ctx, tc.hostZone) - // error should be nil -- we do NOT raise an error on a non-existent chain id, we simply do not send any messages - s.Require().Nil(err, "error should be nil -- we do NOT raise an error when no records exist, we simply do not send any messages") - // no messages should be sent - s.Require().Equal(0, len(msgs), "no messages should be sent") - // no value should be unbonded - s.Require().Equal(sdkmath.ZeroInt(), totalAmtToUnbond, "no value should be unbonded") + for _, epochUnbondingRecord := range epochUnbondingRecords { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + } + + expectedUnbondAmount := int64(1 + 3 + 8) + expectedRecordIds := []uint64{1, 2, 4} + + actualUnbondAmount, actualRecordIds := s.App.StakeibcKeeper.GetTotalUnbondAmountAndRecordsIds(s.Ctx, HostChainId) + s.Require().Equal(expectedUnbondAmount, actualUnbondAmount.Int64(), "unbonded amount") + s.Require().Equal(expectedRecordIds, actualRecordIds, "epoch unbonding record IDs") } -func (s *KeeperTestSuite) TestGetHostZoneUnbondingMsgs_UnbondingTooMuch() { - tc := s.SetupGetHostZoneUnbondingMsgs() +func (s *KeeperTestSuite) TestGetValidatorUnbondCapacity() { + // Start with the expected returned list of validator capacities + expectedUnbondCapacity := []keeper.ValidatorUnbondCapacity{ + { + ValidatorAddress: "valA", + CurrentDelegation: sdkmath.NewInt(50), + BalancedDelegation: sdkmath.NewInt(0), + Capacity: sdkmath.NewInt(50), + }, + { + ValidatorAddress: "valB", + CurrentDelegation: sdkmath.NewInt(200), + BalancedDelegation: sdkmath.NewInt(5), + Capacity: sdkmath.NewInt(195), + }, + { + ValidatorAddress: "valC", + CurrentDelegation: sdkmath.NewInt(1089), + BalancedDelegation: sdkmath.NewInt(1000), + Capacity: sdkmath.NewInt(89), + }, + } + + // Build list of input validators and map of balanced delegations from expected list + validators := []*types.Validator{} + balancedDelegations := map[string]sdkmath.Int{} + for _, validatorCapacity := range expectedUnbondCapacity { + validators = append(validators, &types.Validator{ + Address: validatorCapacity.ValidatorAddress, + Delegation: validatorCapacity.CurrentDelegation, + }) + balancedDelegations[validatorCapacity.ValidatorAddress] = validatorCapacity.BalancedDelegation + } - // iterate the validators and set all their delegated amounts to 0 - for i := range tc.hostZone.Validators { - tc.hostZone.Validators[i].DelegationAmt = sdkmath.ZeroInt() + // Add validators with no capacity - none of these should be in the returned list + deficits := []int64{0, 10, 50} + valAddresses := []string{"valD", "valE", "valF"} + for i, deficit := range deficits { + address := valAddresses[i] + + // the delegation amount is arbitrary here + // all that mattesr is that it's less than the balance delegation + currentDelegation := sdkmath.NewInt(50) + balancedDelegation := currentDelegation.Add(sdkmath.NewInt(deficit)) + + validators = append(validators, &types.Validator{ + Address: address, + Delegation: currentDelegation, + }) + balancedDelegations[address] = balancedDelegation } - // write the host zone with zero-delegation validators back to the store - s.App.StakeibcKeeper.SetHostZone(s.Ctx, tc.hostZone) - // TODO: check epoch unbonding record ids here - _, _, _, _, err := s.App.StakeibcKeeper.GetHostZoneUnbondingMsgs(s.Ctx, tc.hostZone) - s.Require().EqualError(err, fmt.Sprintf("Could not unbond %v on Host Zone %s, unable to balance the unbond amount across validators: not found", tc.amtToUnbond.Mul(sdkmath.NewInt(int64(len(tc.epochUnbondingRecords)))), tc.hostZone.ChainId)) + // Check capacity matches expectations + actualUnbondCapacity := s.App.StakeibcKeeper.GetValidatorUnbondCapacity(s.Ctx, validators, balancedDelegations) + s.Require().Len(actualUnbondCapacity, len(expectedUnbondCapacity), "number of expected unbondings") + + for i, expected := range expectedUnbondCapacity { + address := expected.ValidatorAddress + actual := actualUnbondCapacity[i] + s.Require().Equal(expected.ValidatorAddress, actual.ValidatorAddress, "address for %s", address) + s.Require().Equal(expected.CurrentDelegation.Int64(), actual.CurrentDelegation.Int64(), "current for %s", address) + s.Require().Equal(expected.BalancedDelegation.Int64(), actual.BalancedDelegation.Int64(), "balanced for %s", address) + s.Require().Equal(expected.Capacity.Int64(), actual.Capacity.Int64(), "capacity for %s", address) + } } -func (s *KeeperTestSuite) TestGetTargetValAmtsForHostZone_Success() { - tc := s.SetupGetHostZoneUnbondingMsgs() +func (s *KeeperTestSuite) TestSortUnbondingCapacityByPriority() { + // First we define what the ideal list will look like after sorting + expectedSortedCapacities := []keeper.ValidatorUnbondCapacity{ + // Zero-weight validator's + { + // (1) Ratio: 0, Capacity: 100 + ValidatorAddress: "valE", + BalancedDelegation: sdkmath.NewInt(0), + CurrentDelegation: sdkmath.NewInt(100), // ratio = 0/100 + Capacity: sdkmath.NewInt(100), + }, + { + // (2) Ratio: 0, Capacity: 25 + ValidatorAddress: "valC", + BalancedDelegation: sdkmath.NewInt(0), + CurrentDelegation: sdkmath.NewInt(25), // ratio = 0/25 + Capacity: sdkmath.NewInt(25), + }, + { + // (3) Ratio: 0, Capacity: 25 + // Same ratio and capacity as above but name is tie breaker + ValidatorAddress: "valD", + BalancedDelegation: sdkmath.NewInt(0), + CurrentDelegation: sdkmath.NewInt(25), // ratio = 0/25 + Capacity: sdkmath.NewInt(25), + }, + // Non-zero-weight validator's + { + // (4) Ratio: 0.1 + ValidatorAddress: "valB", + BalancedDelegation: sdkmath.NewInt(1), + CurrentDelegation: sdkmath.NewInt(10), // ratio = 1/10 + Capacity: sdkmath.NewInt(9), + }, + { + // (5) Ratio: 0.25 + ValidatorAddress: "valH", + BalancedDelegation: sdkmath.NewInt(250), + CurrentDelegation: sdkmath.NewInt(1000), // ratio = 250/1000 + Capacity: sdkmath.NewInt(750), + }, + { + // (6) Ratio: 0.5, Capacity: 100 + ValidatorAddress: "valF", + BalancedDelegation: sdkmath.NewInt(100), + CurrentDelegation: sdkmath.NewInt(200), // ratio = 100/200 + Capacity: sdkmath.NewInt(100), + }, + { + // (7) Ratio: 0.5, Capacity: 100 + // Same ratio and capacity as above - name is tie breaker + ValidatorAddress: "valI", + BalancedDelegation: sdkmath.NewInt(100), + CurrentDelegation: sdkmath.NewInt(200), // ratio = 100/200 + Capacity: sdkmath.NewInt(100), + }, + { + // (8) Ratio: 0.5, Capacity: 50 + // Same ratio as above but capacity is lower + ValidatorAddress: "valG", + BalancedDelegation: sdkmath.NewInt(50), + CurrentDelegation: sdkmath.NewInt(100), // ratio = 50/100 + Capacity: sdkmath.NewInt(50), + }, + { + // (9) Ratio: 0.6 + ValidatorAddress: "valA", + BalancedDelegation: sdkmath.NewInt(6), + CurrentDelegation: sdkmath.NewInt(10), // ratio = 6/10 + Capacity: sdkmath.NewInt(4), + }, + } + + // Define the shuffled ordering of the array above by just specifying + // the validator addresses an a randomized order + shuffledOrder := []string{ + "valA", + "valD", + "valG", + "valF", + "valE", + "valB", + "valH", + "valI", + "valC", + } - // verify the total amount is expected - unbond := sdkmath.NewInt(1_000_000) - totalAmt, err := s.App.StakeibcKeeper.GetTargetValAmtsForHostZone(s.Ctx, tc.hostZone, unbond) - s.Require().Nil(err) + // Use ordering above in combination with the data structures from the + // expected list to shuffle the expected list into a list that will be the + // input to this function + inputCapacities := []keeper.ValidatorUnbondCapacity{} + for _, shuffledValAddress := range shuffledOrder { + for _, capacity := range expectedSortedCapacities { + if capacity.ValidatorAddress == shuffledValAddress { + inputCapacities = append(inputCapacities, capacity) + } + } + } + + // Sort the list + actualSortedCapacities, err := keeper.SortUnbondingCapacityByPriority(inputCapacities) + s.Require().NoError(err) + s.Require().Len(actualSortedCapacities, len(expectedSortedCapacities), "number of capacities") + + // To make the error easier to understand, we first compare just the list of validator addresses + actualValidators := []string{} + for _, actual := range actualSortedCapacities { + actualValidators = append(actualValidators, actual.ValidatorAddress) + } + expectedValidators := []string{} + for _, expected := range expectedSortedCapacities { + expectedValidators = append(expectedValidators, expected.ValidatorAddress) + } + s.Require().Equal(expectedValidators, actualValidators, "validator order") + + // Then we'll do a sanity check on each field + // If the above passes and this fails, that likely means the test was setup improperly + for i, expected := range expectedSortedCapacities { + actual := actualSortedCapacities[i] + address := expected.ValidatorAddress + s.Require().Equal(expected.ValidatorAddress, actual.ValidatorAddress, "validator %d address", i+1) + s.Require().Equal(expected.BalancedDelegation, actual.BalancedDelegation, "validator %s balanced", address) + s.Require().Equal(expected.CurrentDelegation, actual.CurrentDelegation, "validator %s current", address) + s.Require().Equal(expected.Capacity, actual.Capacity, "validator %s capacity", address) + } +} + +func (s *KeeperTestSuite) TestGetUnbondingICAMessages() { + delegationAddress := "cosmos_DELEGATION" + + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + DelegationIcaAddress: delegationAddress, + } + + validatorCapacities := []keeper.ValidatorUnbondCapacity{ + {ValidatorAddress: "val1", Capacity: sdkmath.NewInt(100)}, + {ValidatorAddress: "val2", Capacity: sdkmath.NewInt(200)}, + {ValidatorAddress: "val3", Capacity: sdkmath.NewInt(300)}, + {ValidatorAddress: "val4", Capacity: sdkmath.NewInt(400)}, + } - // sum up totalAmt - actualAmount := sdkmath.ZeroInt() - for _, amt := range totalAmt { - actualAmount = actualAmount.Add(amt) + testCases := []struct { + name string + totalUnbondAmount sdkmath.Int + expectedUnbondings []ValidatorUnbonding + expectedError string + }{ + { + name: "unbond val1 partially", + totalUnbondAmount: sdkmath.NewInt(50), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(50)}, + }, + }, + { + name: "unbond val1 fully", + totalUnbondAmount: sdkmath.NewInt(100), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(100)}, + }, + }, + { + name: "unbond val1 fully and val2 partially", + totalUnbondAmount: sdkmath.NewInt(200), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(100)}, + {Validator: "val2", UnbondAmount: sdkmath.NewInt(100)}, + }, + }, + { + name: "unbond val1 val2 fully", + totalUnbondAmount: sdkmath.NewInt(300), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(100)}, + {Validator: "val2", UnbondAmount: sdkmath.NewInt(200)}, + }, + }, + { + name: "unbond val1 val2 fully and val3 partially", + totalUnbondAmount: sdkmath.NewInt(450), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(100)}, + {Validator: "val2", UnbondAmount: sdkmath.NewInt(200)}, + {Validator: "val3", UnbondAmount: sdkmath.NewInt(150)}, + }, + }, + { + name: "unbond val1 val2 and val3 fully", + totalUnbondAmount: sdkmath.NewInt(600), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(100)}, + {Validator: "val2", UnbondAmount: sdkmath.NewInt(200)}, + {Validator: "val3", UnbondAmount: sdkmath.NewInt(300)}, + }, + }, + { + name: "full unbonding", + totalUnbondAmount: sdkmath.NewInt(1000), + expectedUnbondings: []ValidatorUnbonding{ + {Validator: "val1", UnbondAmount: sdkmath.NewInt(100)}, + {Validator: "val2", UnbondAmount: sdkmath.NewInt(200)}, + {Validator: "val3", UnbondAmount: sdkmath.NewInt(300)}, + {Validator: "val4", UnbondAmount: sdkmath.NewInt(400)}, + }, + }, + { + name: "insufficient delegation", + totalUnbondAmount: sdkmath.NewInt(1001), + expectedError: "unable to unbond full amount", + }, } - s.Require().Equal(unbond, actualAmount, "total amount unbonded matches input") - // verify the order of the validators is expected - // GetTargetValAmtsForHostZone first reverses the list, then sorts by weight using SliceStable - // E.g. given A:1, B:2, C:2, D:0 - // 1. D:0, C:2, B:2, A:1 - // 2. D:0, A:1, C:2, B:2 - s.Require().Equal(tc.valNames[3], tc.hostZone.Validators[0].Address) - s.Require().Equal(tc.valNames[0], tc.hostZone.Validators[1].Address) - s.Require().Equal(tc.valNames[2], tc.hostZone.Validators[2].Address) - s.Require().Equal(tc.valNames[1], tc.hostZone.Validators[3].Address) + for _, tc := range testCases { + s.Run(tc.name, func() { + // Get the unbonding ICA messages for the test case + actualMessages, actualSplits, actualError := s.App.StakeibcKeeper.GetUnbondingICAMessages( + hostZone, + tc.totalUnbondAmount, + validatorCapacities, + ) + + // If this is an error test case, check the error message + if tc.expectedError != "" { + s.Require().ErrorContains(actualError, tc.expectedError, "error expected") + return + } + + // For the success case, check the error number of unbondings + s.Require().NoError(actualError, "no error expected when unbonding %v", tc.totalUnbondAmount) + s.Require().Len(actualMessages, len(tc.expectedUnbondings), "number of undelegate messages") + s.Require().Len(actualSplits, len(tc.expectedUnbondings), "number of validator splits") + + // Check each unbonding + for i, expected := range tc.expectedUnbondings { + valAddress := expected.Validator + actualMsg := actualMessages[i].(*stakingtypes.MsgUndelegate) + actualSplit := actualSplits[i] + + // Check the ICA message + s.Require().Equal(valAddress, actualMsg.ValidatorAddress, "ica message validator") + s.Require().Equal(delegationAddress, actualMsg.DelegatorAddress, "ica message delegator for %s", valAddress) + s.Require().Equal(Atom, actualMsg.Amount.Denom, "ica message denom for %s", valAddress) + s.Require().Equal(expected.UnbondAmount.Int64(), actualMsg.Amount.Amount.Int64(), + "ica message amount for %s", valAddress) + + // Check the callback + s.Require().Equal(expected.Validator, actualSplit.Validator, "callback validator for %s", valAddress) + s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.Amount.Int64(), "callback amount %s", valAddress) + } + }) + } } diff --git a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go index 88c6604aeb..3c57d86b99 100644 --- a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go +++ b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go @@ -6,13 +6,12 @@ import ( _ "github.com/stretchr/testify/suite" recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - - stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) type InitiateAllHostZoneUnbondingsTestCase struct { epochUnbondingRecords []recordtypes.EpochUnbondingRecord - hostZones []stakeibc.HostZone + hostZones []types.HostZone } func (s *KeeperTestSuite) SetupInitiateAllHostZoneUnbondings() InitiateAllHostZoneUnbondingsTestCase { @@ -22,54 +21,46 @@ func (s *KeeperTestSuite) SetupInitiateAllHostZoneUnbondings() InitiateAllHostZo osmoValAddr := "osmo_VALIDATOR" gaiaDelegationAddr := "cosmos_DELEGATION" osmoDelegationAddr := "osmo_DELEGATION" - // define the host zone with stakedBal and validators with staked amounts - gaiaValidators := []*stakeibc.Validator{ + // define the host zone with total delegation and validators with staked amounts + gaiaValidators := []*types.Validator{ { - Address: gaiaValAddr, - DelegationAmt: sdkmath.NewInt(5_000_000), - Weight: uint64(10), + Address: gaiaValAddr, + Delegation: sdkmath.NewInt(5_000_000), + Weight: uint64(10), }, { - Address: gaiaValAddr + "2", - DelegationAmt: sdkmath.NewInt(3_000_000), - Weight: uint64(6), + Address: gaiaValAddr + "2", + Delegation: sdkmath.NewInt(3_000_000), + Weight: uint64(6), }, } - gaiaDelegationAccount := stakeibc.ICAAccount{ - Address: gaiaDelegationAddr, - Target: stakeibc.ICAAccountType_DELEGATION, - } - osmoValidators := []*stakeibc.Validator{ + osmoValidators := []*types.Validator{ { - Address: osmoValAddr, - DelegationAmt: sdkmath.NewInt(5_000_000), - Weight: uint64(10), + Address: osmoValAddr, + Delegation: sdkmath.NewInt(5_000_000), + Weight: uint64(10), }, } - osmoDelegationAccount := stakeibc.ICAAccount{ - Address: osmoDelegationAddr, - Target: stakeibc.ICAAccountType_DELEGATION, - } - hostZones := []stakeibc.HostZone{ + hostZones := []types.HostZone{ { - ChainId: HostChainId, - HostDenom: Atom, - Bech32Prefix: GaiaPrefix, - UnbondingFrequency: 3, - Validators: gaiaValidators, - DelegationAccount: &gaiaDelegationAccount, - StakedBal: sdkmath.NewInt(5_000_000), - ConnectionId: ibctesting.FirstConnectionID, + ChainId: HostChainId, + HostDenom: Atom, + Bech32Prefix: GaiaPrefix, + UnbondingPeriod: 14, + Validators: gaiaValidators, + DelegationIcaAddress: gaiaDelegationAddr, + TotalDelegations: sdkmath.NewInt(5_000_000), + ConnectionId: ibctesting.FirstConnectionID, }, { - ChainId: OsmoChainId, - HostDenom: Osmo, - Bech32Prefix: OsmoPrefix, - UnbondingFrequency: 4, - Validators: osmoValidators, - DelegationAccount: &osmoDelegationAccount, - StakedBal: sdkmath.NewInt(5_000_000), - ConnectionId: ibctesting.FirstConnectionID, + ChainId: OsmoChainId, + HostDenom: Osmo, + Bech32Prefix: OsmoPrefix, + UnbondingPeriod: 21, + Validators: osmoValidators, + DelegationIcaAddress: osmoDelegationAddr, + TotalDelegations: sdkmath.NewInt(5_000_000), + ConnectionId: ibctesting.FirstConnectionID, }, } // list of epoch unbonding records @@ -103,7 +94,7 @@ func (s *KeeperTestSuite) SetupInitiateAllHostZoneUnbondings() InitiateAllHostZo s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, stakeibc.EpochTracker{ + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, types.EpochTracker{ EpochIdentifier: "day", EpochNumber: 12, NextEpochStartTime: uint64(2661750006000000000), // arbitrary time in the future, year 2056 I believe @@ -117,41 +108,43 @@ func (s *KeeperTestSuite) SetupInitiateAllHostZoneUnbondings() InitiateAllHostZo } func (s *KeeperTestSuite) TestInitiateAllHostZoneUnbondings_Successful() { - // tests that we can successful initiate a host zone unbonding for ATOM and OSMO + // tests that we can successful initiate a host zone unbonding for GAIA and OSMO s.SetupInitiateAllHostZoneUnbondings() - success, successful_unbondings, failed_unbondings := s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 12) - s.Require().True(success, "initiating unbondings returns true") - s.Require().Len(successful_unbondings, 2, "initiating unbondings returns 2 successful unbondings") - s.Require().Len(failed_unbondings, 0, "initiating unbondings returns 0 failed unbondings") + s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 12) + + // An event should be emitted for each if they were successful + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, OsmoChainId) } func (s *KeeperTestSuite) TestInitiateAllHostZoneUnbondings_GaiaSuccessful() { // Tests that if we initiate unbondings a day where only Gaia is supposed to unbond, it succeeds and Osmo is ignored s.SetupInitiateAllHostZoneUnbondings() - success, successful_unbondings, failed_unbondings := s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 9) - s.Require().True(success, "initiating gaia unbondings returns true") - s.Require().Len(successful_unbondings, 1, "initiating gaia unbondings returns 1 successful unbondings") - s.Require().Len(failed_unbondings, 0, "initiating gaia unbondings returns 0 failed unbondings") - s.Require().Equal("GAIA", successful_unbondings[0], "initiating gaia unbondings returns gaia") + s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 9) + + // An event should only be emitted for Gaia + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueNotEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, OsmoChainId) } func (s *KeeperTestSuite) TestInitiateAllHostZoneUnbondings_OsmoSuccessful() { // Tests that if we initiate unbondings a day where only Osmo is supposed to unbond, it succeeds and Gaia is ignored s.SetupInitiateAllHostZoneUnbondings() - success, successful_unbondings, failed_unbondings := s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 8) - s.Require().True(success, "initiating osmo unbondings returns true") - s.Require().Len(successful_unbondings, 1, "initiating osmo unbondings returns 1 successful unbondings") - s.Require().Len(failed_unbondings, 0, "initiating osmo unbondings returns 0 failed unbondings") - s.Require().Equal("OSMO", successful_unbondings[0], "initiating osmo unbondings returns gaia") + s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 8) + + // An event should only be emitted for Osmo + s.CheckEventValueNotEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, OsmoChainId) } func (s *KeeperTestSuite) TestInitiateAllHostZoneUnbondings_NoneSuccessful() { // Tests that if we initiate unbondings a day where none are supposed to unbond, it works successfully s.SetupInitiateAllHostZoneUnbondings() - success, successful_unbondings, failed_unbondings := s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 10) - s.Require().True(success, "initiating no unbondings returns true") - s.Require().Len(successful_unbondings, 0, "initiating no unbondings returns 0 successful unbondings") - s.Require().Len(failed_unbondings, 0, "initiating no unbondings returns 0 failed unbondings") + s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 10) + + // No event should be emitted for either host + s.CheckEventValueNotEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueNotEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, OsmoChainId) } func (s *KeeperTestSuite) TestInitiateAllHostZoneUnbondings_Failed() { @@ -159,19 +152,20 @@ func (s *KeeperTestSuite) TestInitiateAllHostZoneUnbondings_Failed() { // but Osmo does and is successful s.SetupInitiateAllHostZoneUnbondings() hostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - hostZone.Validators = []*stakeibc.Validator{ + hostZone.Validators = []*types.Validator{ { - Address: "cosmos_VALIDATOR", - DelegationAmt: sdkmath.NewInt(1_000_000), - Weight: uint64(10), + Address: "cosmos_VALIDATOR", + Delegation: sdkmath.NewInt(1_000_000), + Weight: uint64(10), }, } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) hostZone, _ = s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) - success, successful_unbondings, failed_unbondings := s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 12) - s.Require().False(success, "initiating bad unbondings returns false") - s.Require().Len(successful_unbondings, 1, "initiating bad unbondings has 1 success") - s.Require().Len(failed_unbondings, 1, "initiating bad unbondings has 1 failure") - s.Require().Equal("OSMO", successful_unbondings[0], "initiating bad unbondings succeeds on osmo") - s.Require().Equal("GAIA", failed_unbondings[0], "initiating bad unbondings fails on gaia") + + s.App.StakeibcKeeper.InitiateAllHostZoneUnbondings(s.Ctx, 12) + + // An event should only be emitted for Osmo + s.CheckEventValueNotEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, HostChainId) + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyHostZone, OsmoChainId) + } diff --git a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go index a8272604c5..5c07d1c2ce 100644 --- a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go +++ b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go @@ -19,59 +19,43 @@ type SweepUnbondedTokensTestCase struct { func (s *KeeperTestSuite) SetupSweepUnbondedTokens() SweepUnbondedTokensTestCase { s.CreateICAChannel("GAIA.DELEGATION") - // define the host zone with stakedBal and validators with staked amounts + // define the host zone with TotalDelegations and validators with staked amounts gaiaValidators := []*stakeibc.Validator{ { - Address: "cosmos_VALIDATOR", - DelegationAmt: sdkmath.NewInt(5_000_000), - Weight: uint64(10), + Address: "cosmos_VALIDATOR", + Delegation: sdkmath.NewInt(5_000_000), + Weight: uint64(10), }, } - gaiaDelegationAccount := stakeibc.ICAAccount{ - Address: "cosmos_DELEGATION", - Target: stakeibc.ICAAccountType_DELEGATION, - } - gaiaRedemptionAccount := stakeibc.ICAAccount{ - Address: "cosmos_REDEMPTION", - Target: stakeibc.ICAAccountType_REDEMPTION, - } osmoValidators := []*stakeibc.Validator{ { - Address: "osmo_VALIDATOR", - DelegationAmt: sdkmath.NewInt(5_000_000), - Weight: uint64(10), + Address: "osmo_VALIDATOR", + Delegation: sdkmath.NewInt(5_000_000), + Weight: uint64(10), }, } - osmoDelegationAccount := stakeibc.ICAAccount{ - Address: "osmo_DELEGATION", - Target: stakeibc.ICAAccountType_DELEGATION, - } - osmoRedemptionAccount := stakeibc.ICAAccount{ - Address: "osmo_REDEMPTION", - Target: stakeibc.ICAAccountType_REDEMPTION, - } hostZones := []stakeibc.HostZone{ { - ChainId: HostChainId, - HostDenom: Atom, - Bech32Prefix: GaiaPrefix, - UnbondingFrequency: 3, - Validators: gaiaValidators, - DelegationAccount: &gaiaDelegationAccount, - RedemptionAccount: &gaiaRedemptionAccount, - StakedBal: sdkmath.NewInt(5_000_000), - ConnectionId: ibctesting.FirstConnectionID, + ChainId: HostChainId, + HostDenom: Atom, + Bech32Prefix: GaiaPrefix, + UnbondingPeriod: 14, + Validators: gaiaValidators, + DelegationIcaAddress: "cosmos_DELEGATION", + RedemptionIcaAddress: "cosmos_REDEMPTION", + TotalDelegations: sdkmath.NewInt(5_000_000), + ConnectionId: ibctesting.FirstConnectionID, }, { - ChainId: OsmoChainId, - HostDenom: Osmo, - Bech32Prefix: OsmoPrefix, - UnbondingFrequency: 4, - Validators: osmoValidators, - DelegationAccount: &osmoDelegationAccount, - RedemptionAccount: &osmoRedemptionAccount, - StakedBal: sdkmath.NewInt(5_000_000), - ConnectionId: ibctesting.FirstConnectionID, + ChainId: OsmoChainId, + HostDenom: Osmo, + Bech32Prefix: OsmoPrefix, + UnbondingPeriod: 21, + Validators: osmoValidators, + DelegationIcaAddress: "osmo_DELEGATION", + RedemptionIcaAddress: "osmo_REDEMPTION", + TotalDelegations: sdkmath.NewInt(5_000_000), + ConnectionId: ibctesting.FirstConnectionID, }, } dayEpochTracker := stakeibc.EpochTracker{ @@ -182,7 +166,7 @@ func (s *KeeperTestSuite) TestSweepUnbondedTokens_HostZoneUnbondingMissing() { func (s *KeeperTestSuite) TestSweepUnbondedTokens_RedemptionAccountMissing() { s.SetupSweepUnbondedTokens() hostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "GAIA") - hostZone.RedemptionAccount = nil + hostZone.RedemptionIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) success, successfulSweeps, sweepAmounts, failedSweeps := s.App.StakeibcKeeper.SweepAllUnbondedTokens(s.Ctx) s.Require().Equal(success, false, "sweep all tokens failed if osmo missing") @@ -197,7 +181,7 @@ func (s *KeeperTestSuite) TestSweepUnbondedTokens_RedemptionAccountMissing() { func (s *KeeperTestSuite) TestSweepUnbondedTokens_DelegationAccountAddressMissing() { s.SetupSweepUnbondedTokens() hostZone, _ := s.App.StakeibcKeeper.GetHostZone(s.Ctx, "OSMO") - hostZone.DelegationAccount.Address = "" + hostZone.DelegationIcaAddress = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) success, successfulSweeps, sweepAmounts, failedSweeps := s.App.StakeibcKeeper.SweepAllUnbondedTokens(s.Ctx) s.Require().False(success, "sweep all tokens failed if gaia missing") diff --git a/x/stakeibc/keeper/update_redemption_rates_test.go b/x/stakeibc/keeper/update_redemption_rates_test.go index 5222dd0d6f..84b4ba9357 100644 --- a/x/stakeibc/keeper/update_redemption_rates_test.go +++ b/x/stakeibc/keeper/update_redemption_rates_test.go @@ -1,283 +1,340 @@ package keeper_test import ( - // "fmt" - - "fmt" "math/rand" + "strconv" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" + minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -type UpdateRedemptionRatesTestCase struct { - hostZone stakeibctypes.HostZone - allRecords []recordtypes.DepositRecord +type UpdateRedemptionRateTestCase struct { + totalDelegation sdkmath.Int + undelegatedBal sdkmath.Int + justDepositedNative sdkmath.Int + justDepositedLSM sdkmath.Int + stSupply sdkmath.Int + initialRedemptionRate sdk.Dec +} + +// Helper function to look up the redemption rate and check it against expectations +func (s *KeeperTestSuite) checkRedemptionRateAfterUpdate(expectedRedemptionRate sdk.Dec) { + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found but was not") + s.Require().Equal(expectedRedemptionRate, hostZone.RedemptionRate, "redemption rate") } -func (s *KeeperTestSuite) SetupUpdateRedemptionRates( - stakedBal sdkmath.Int, - undelegatedBal sdkmath.Int, - justDepositedBal sdkmath.Int, - stSupply sdkmath.Int, - initialRedemptionRate sdk.Dec, -) UpdateRedemptionRatesTestCase { +func (s *KeeperTestSuite) SetupUpdateRedemptionRates(tc UpdateRedemptionRateTestCase) []recordtypes.DepositRecord { // add some deposit records with status STAKE // to comprise the undelegated delegation account balance i.e. "to be staked" toBeStakedDepositRecord := recordtypes.DepositRecord{ - HostZoneId: "GAIA", - Amount: undelegatedBal, + HostZoneId: HostChainId, + Amount: tc.undelegatedBal, Status: recordtypes.DepositRecord_DELEGATION_QUEUE, } s.App.RecordsKeeper.AppendDepositRecord(s.Ctx, toBeStakedDepositRecord) // add a balance to the stakeibc module account (via records) - // to comprise the stakeibc module account balance i.e. "to be transferred" + // to comprise the stakeibc deposit account balance i.e. "to be transferred" toBeTransferedDepositRecord := recordtypes.DepositRecord{ - HostZoneId: "GAIA", - Amount: justDepositedBal, + HostZoneId: HostChainId, + Amount: tc.justDepositedNative, Status: recordtypes.DepositRecord_TRANSFER_QUEUE, } s.App.RecordsKeeper.AppendDepositRecord(s.Ctx, toBeTransferedDepositRecord) - // set the stSupply by minting to a random user account - user := Account{ - acc: s.TestAccs[0], - stAtomBalance: sdk.NewCoin(StAtom, stSupply), + // add an LSMTokenDeposit to represent an LSMLiquidStake that has not yet been detokenized + lsmTokenDeposit := recordtypes.LSMTokenDeposit{ + ChainId: HostChainId, + Amount: tc.justDepositedLSM, + Status: recordtypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS, + ValidatorAddress: ValAddress, } - s.FundAccount(user.acc, user.stAtomBalance) + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, lsmTokenDeposit) + + // set the stSupply by minting + supply := sdk.NewCoins(sdk.NewCoin(StAtom, tc.stSupply)) + err := s.App.BankKeeper.MintCoins(s.Ctx, minttypes.ModuleName, supply) + s.Require().NoError(err) // set the staked balance on the host zone - hostZone := stakeibctypes.HostZone{ - ChainId: "GAIA", - HostDenom: "uatom", - StakedBal: stakedBal, - RedemptionRate: initialRedemptionRate, + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + TotalDelegations: tc.totalDelegation, + RedemptionRate: tc.initialRedemptionRate, + Validators: []*types.Validator{{Address: ValAddress, SharesToTokensRate: sdk.OneDec()}}, } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - return UpdateRedemptionRatesTestCase{ - hostZone: hostZone, - allRecords: []recordtypes.DepositRecord{toBeStakedDepositRecord, toBeTransferedDepositRecord}, - } + return []recordtypes.DepositRecord{toBeStakedDepositRecord, toBeTransferedDepositRecord} } func (s *KeeperTestSuite) TestUpdateRedemptionRatesSuccessful() { - stakedBal := sdkmath.NewInt(5) - undelegatedBal := sdkmath.NewInt(3) - justDepositedBal := sdkmath.NewInt(3) - stSupply := sdkmath.NewInt(10) - - initialRedemptionRate := sdk.NewDec(1) - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) - - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1), "t0 rr") - - records := tc.allRecords - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate - - expectedNewRate := sdk.NewDec(5 + 3 + 3).Quo(sdk.NewDec(10)) - s.Require().Equal(rrNew, expectedNewRate, "rr as expected") + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.NewInt(2), + undelegatedBal: sdkmath.NewInt(3), + justDepositedNative: sdkmath.NewInt(4), + justDepositedLSM: sdkmath.NewInt(5), + stSupply: sdkmath.NewInt(10), + initialRedemptionRate: sdk.NewDec(1), + }) + + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, depositRecords) + + // 2 + 3 + 4 + 5 / 10 = 14 / 10 = 1.4 + expectedNewRate := sdk.MustNewDecFromStr("1.4") + s.checkRedemptionRateAfterUpdate(expectedNewRate) } -func (s *KeeperTestSuite) TestUpdateRedemptionRatesRandomized() { - // run N tests, each with random inputs - - MAX := "1_000_000_000" - stakedBal, _ := sdk.NewIntFromString(MAX) - undelegatedBal, _ := sdk.NewIntFromString(MAX) - justDepositedBal, _ := sdk.NewIntFromString(MAX) - stSupply, _ := sdk.NewIntFromString(MAX) - - // s.Require().ElementsMatch([]int{0, 0, 0, 0}, []int{int(stakedBal), int(undelegatedBal), int(justDepositedBal), int(stSupply)}) // - initialRedemptionRate := sdk.NewDec(1) - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) +func (s *KeeperTestSuite) TestUpdateRedemptionRate_ZeroStAssets() { + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.NewInt(2), + undelegatedBal: sdkmath.NewInt(3), + justDepositedNative: sdkmath.NewInt(4), + justDepositedLSM: sdkmath.NewInt(5), + stSupply: sdkmath.ZeroInt(), + initialRedemptionRate: sdk.NewDec(1), + }) - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1), "t0 rr") + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, depositRecords) - records := tc.allRecords - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate - - numerator := stakedBal.Add(undelegatedBal).Add(justDepositedBal) - denominator := stSupply - expectedNewRate := sdk.NewDecFromInt(numerator.Quo(denominator)) - - componentDescription := fmt.Sprintf( - "Components - StakedBal: %v, UndelegateBalance: %v, JustDepositedBalance: %v, stSupply: %v, InitialRedemptionRate: %v", - stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) - - s.Require().Equal(rrNew, expectedNewRate, - "ExpectedRedemptionRate: %v, ActualRedemptionRate: %v; %s", expectedNewRate, rrNew, componentDescription) -} - -func (s *KeeperTestSuite) TestUpdateRedemptionRatesRandomized_MultipleRuns() { - for i := 0; i < 100; i++ { - s.TestUpdateRedemptionRatesRandomized() - // reset the testing app between runs - s.Setup() - } + expectedRedemptionRate := sdk.NewDec(1) + s.checkRedemptionRateAfterUpdate(expectedRedemptionRate) } -func (s *KeeperTestSuite) TestUpdateRedemptionRateZeroStAssets() { - stakedBal := sdkmath.NewInt(5) - undelegatedBal := sdkmath.NewInt(3) - justDepositedBal := sdkmath.NewInt(3) - stSupply := sdkmath.NewInt(0) +func (s *KeeperTestSuite) TestUpdateRedemptionRate_ZeroNativeAssets() { + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.ZeroInt(), + undelegatedBal: sdkmath.ZeroInt(), + justDepositedNative: sdkmath.ZeroInt(), + justDepositedLSM: sdkmath.ZeroInt(), + stSupply: sdkmath.NewInt(10), + initialRedemptionRate: sdk.NewDec(1), + }) - initialRedemptionRate := sdk.NewDec(1) - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, depositRecords) - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1), "t0 rr") - - records := tc.allRecords - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate - - // RR should be unchanged - s.Require().Equal(rrNew, sdk.NewDec(1), "rr as expected") + expectedRedemptionRate := sdk.ZeroDec() + s.checkRedemptionRateAfterUpdate(expectedRedemptionRate) } -func (s *KeeperTestSuite) TestUpdateRedemptionRateZeroNativeAssets() { - stakedBal := sdkmath.NewInt(0) - undelegatedBal := sdkmath.NewInt(0) - justDepositedBal := sdkmath.NewInt(0) - stSupply := sdkmath.NewInt(10) - - initialRedemptionRate := sdk.NewDec(1) - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) - - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1), "t0 rr") - - records := tc.allRecords - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate - - // RR should be 0 - s.Require().Equal(rrNew, sdk.NewDec(0), "rr as expected") -} - -func (s *KeeperTestSuite) TestUpdateRedemptionRateNoModuleAccountRecords() { - stakedBal := sdkmath.NewInt(5) - undelegatedBal := sdkmath.NewInt(3) - justDepositedBal := sdkmath.NewInt(3) - stSupply := sdkmath.NewInt(10) - initialRedemptionRate := sdk.NewDec(1) - - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) - - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1), "t0 rr") +func (s *KeeperTestSuite) TestUpdateRedemptionRate_NoDepositAccountRecords() { + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.NewInt(3), + undelegatedBal: sdkmath.NewInt(4), + justDepositedNative: sdkmath.NewInt(5), // should be ignored from filter below + justDepositedLSM: sdkmath.NewInt(6), + stSupply: sdkmath.NewInt(10), + initialRedemptionRate: sdk.NewDec(1), + }) // filter out the TRANSFER_QUEUE record from the records when updating the redemption rate - records := tc.allRecords[1:] - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) - - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate + filteredRecords := []recordtypes.DepositRecord{} + for _, record := range depositRecords { + if record.Status != recordtypes.DepositRecord_TRANSFER_QUEUE { + filteredRecords = append(filteredRecords, record) + } + } + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, filteredRecords) - expectedNewRate := sdk.NewDec(5 + 3).Quo(sdk.NewDec(10)) - s.Require().Equal(rrNew, expectedNewRate, "rr as expected") + // 3 + 4 + 6 / 10 = 13 / 10 = 1.3 + expectedNewRate := sdk.MustNewDecFromStr("1.3") + s.checkRedemptionRateAfterUpdate(expectedNewRate) } -func (s *KeeperTestSuite) TestUpdateRedemptionRateNoStakeDepositRecords() { - stakedBal := sdkmath.NewInt(5) - undelegatedBal := sdkmath.NewInt(3) - justDepositedBal := sdkmath.NewInt(3) - stSupply := sdkmath.NewInt(10) - initialRedemptionRate := sdk.NewDec(1) - - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) - - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1), "t0 rr") +func (s *KeeperTestSuite) TestUpdateRedemptionRate_NoStakeDepositRecords() { + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.NewInt(3), + undelegatedBal: sdkmath.NewInt(4), // should be ignored from filter below + justDepositedNative: sdkmath.NewInt(5), + justDepositedLSM: sdkmath.NewInt(6), + stSupply: sdkmath.NewInt(10), + initialRedemptionRate: sdk.NewDec(1), + }) // filter out the DELEGATION_QUEUE record from the records when updating the redemption rate - records := tc.allRecords[:1] - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) + filteredRecords := []recordtypes.DepositRecord{} + for _, record := range depositRecords { + if record.Status != recordtypes.DepositRecord_DELEGATION_QUEUE { + filteredRecords = append(filteredRecords, record) + } + } + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, filteredRecords) - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate + // 3 + 5 + 6 / 10 = 14 / 10 = 1.4 + expectedNewRate := sdk.MustNewDecFromStr("1.4") + s.checkRedemptionRateAfterUpdate(expectedNewRate) +} - numerator := stakedBal.Add(justDepositedBal) - denominator := stSupply - expectedNewRate := sdk.NewDecFromInt(numerator).Quo(sdk.NewDecFromInt(denominator)) - s.Require().Equal(rrNew, expectedNewRate, "rr as expected") +func (s *KeeperTestSuite) TestUpdateRedemptionRate_NoTotalDelegation() { + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.ZeroInt(), + undelegatedBal: sdkmath.NewInt(3), + justDepositedNative: sdkmath.NewInt(4), + justDepositedLSM: sdkmath.NewInt(5), + stSupply: sdkmath.NewInt(10), + initialRedemptionRate: sdk.NewDec(1), + }) + + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, depositRecords) + + // 3 + 4 + 5 / 10 = 12 / 10 = 1.2 + expectedNewRate := sdk.MustNewDecFromStr("1.2") + s.checkRedemptionRateAfterUpdate(expectedNewRate) } -func (s *KeeperTestSuite) TestUpdateRedemptionRateNoStakedBal() { - undelegatedBal := sdkmath.NewInt(3) - justDepositedBal := sdkmath.NewInt(3) - stSupply := sdkmath.NewInt(10) - initialRedemptionRate := sdk.NewDec(1) +func (s *KeeperTestSuite) TestUpdateRedemptionRate_RandomInitialRedemptionRate() { + genRandUintBelowMax := func(max int) int64 { + min := int(1) + n := 1 + rand.Intn(max-min+1) + return int64(n) + } - // SET HZ STAKED BAL TO 0 - tc := s.SetupUpdateRedemptionRates(sdkmath.ZeroInt(), undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) + // redemption rate random number, biased to be [1,2) + max := 1_000_000 + initialRedemptionRate := sdk.NewDec(genRandUintBelowMax(max)).Quo(sdk.NewDec(genRandUintBelowMax(max / 2))) + + depositRecords := s.SetupUpdateRedemptionRates(UpdateRedemptionRateTestCase{ + totalDelegation: sdkmath.NewInt(2), + undelegatedBal: sdkmath.NewInt(3), + justDepositedNative: sdkmath.NewInt(4), + justDepositedLSM: sdkmath.NewInt(5), + stSupply: sdkmath.NewInt(10), + initialRedemptionRate: initialRedemptionRate, + }) + + s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, depositRecords) + + // 2 + 3 + 4 + 5 / 10 = 14 / 10 = 1.4 + expectedNewRate := sdk.MustNewDecFromStr("1.4") + s.checkRedemptionRateAfterUpdate(expectedNewRate) +} - // sanity check on inputs (check redemptionRate at genesis is 1) - s.Require().Equal(initialRedemptionRate, sdk.NewDec(1)) +// Tests GetDepositAccountBalance and GetUndelegatedBalance +func (s *KeeperTestSuite) TestGetRedemptionRate_DepositRecords() { + // Build combinations of transfer deposit records + toBeTransferedDepositRecords := []recordtypes.DepositRecord{ + // TRANSFER_QUEUE Total: 1 + 2 + 3 = 6 + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_TRANSFER_QUEUE, Amount: sdk.NewInt(1)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_TRANSFER_QUEUE, Amount: sdk.NewInt(2)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_TRANSFER_QUEUE, Amount: sdk.NewInt(3)}, + + // TRANSFER_IN_PROGRESS Total: 4 + 5 + 6 = 15 + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, Amount: sdk.NewInt(4)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, Amount: sdk.NewInt(5)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, Amount: sdk.NewInt(6)}, + + // Different host zone ID - should be ignored + {HostZoneId: "different", Status: recordtypes.DepositRecord_TRANSFER_QUEUE, Amount: sdk.NewInt(1)}, + {HostZoneId: "different", Status: recordtypes.DepositRecord_TRANSFER_QUEUE, Amount: sdk.NewInt(2)}, + {HostZoneId: "different", Status: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, Amount: sdk.NewInt(4)}, + {HostZoneId: "different", Status: recordtypes.DepositRecord_TRANSFER_IN_PROGRESS, Amount: sdk.NewInt(5)}, + } + expectedJustDepositedBalance := int64(1 + 2 + 3 + 4 + 5 + 6) // 6 + 15 = 21 + + // Build combinations of delegation deposit records + toBeStakedDepositRecords := []recordtypes.DepositRecord{ + // DELEGATION_QUEUE Total: 7 + 8 + 9 = 24 + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_DELEGATION_QUEUE, Amount: sdk.NewInt(7)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_DELEGATION_QUEUE, Amount: sdk.NewInt(8)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_DELEGATION_QUEUE, Amount: sdk.NewInt(9)}, + + // DELEGATION_IN_PROGRESS Total: 10 + 11 + 12 = 33 + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, Amount: sdk.NewInt(10)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, Amount: sdk.NewInt(11)}, + {HostZoneId: HostChainId, Status: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, Amount: sdk.NewInt(12)}, + + // Different host zone ID - should be ignored + {HostZoneId: "different", Status: recordtypes.DepositRecord_DELEGATION_QUEUE, Amount: sdk.NewInt(7)}, + {HostZoneId: "different", Status: recordtypes.DepositRecord_DELEGATION_QUEUE, Amount: sdk.NewInt(8)}, + {HostZoneId: "different", Status: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, Amount: sdk.NewInt(10)}, + {HostZoneId: "different", Status: recordtypes.DepositRecord_DELEGATION_IN_PROGRESS, Amount: sdk.NewInt(11)}, + } + expectedUndelegatedBalance := int64(7 + 8 + 9 + 10 + 11 + 12) // 24 + 33 = 57 - records := tc.allRecords - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) + // Use concatenation of all deposit records when running tests + allDepositRecords := append(toBeTransferedDepositRecords, toBeStakedDepositRecords...) - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate + // Check the transfer records + actualJustDepositedBalance := s.App.StakeibcKeeper.GetDepositAccountBalance(HostChainId, allDepositRecords) + s.Require().Equal(expectedJustDepositedBalance, actualJustDepositedBalance.TruncateInt64(), "deposit account balance") - expectedNewRate := sdk.NewDec(3 + 3).Quo(sdk.NewDec(10)) - s.Require().Equal(rrNew, expectedNewRate, "rr as expected") + // Check the delegation records + actualUndelegatedBalance := s.App.StakeibcKeeper.GetUndelegatedBalance(HostChainId, allDepositRecords) + s.Require().Equal(expectedUndelegatedBalance, actualUndelegatedBalance.TruncateInt64(), "undelegated balance") } -func (s *KeeperTestSuite) TestUpdateRedemptionRateRandominitialRedemptionRate() { - stakedBal := sdkmath.NewInt(5) - undelegatedBal := sdkmath.NewInt(3) - justDepositedBal := sdkmath.NewInt(3) - stSupply := sdkmath.NewInt(10) - - genRandUintBelowMax := func(MAX int) int64 { - MIN := int(1) - n := 1 + rand.Intn(MAX-MIN+1) - return int64(n) +func (s *KeeperTestSuite) TestGetTokenizedDelegation() { + transferQueue := recordtypes.LSMTokenDeposit_TRANSFER_QUEUE + transferInProgress := recordtypes.LSMTokenDeposit_TRANSFER_IN_PROGRESS + detokenizationQueue := recordtypes.LSMTokenDeposit_DETOKENIZATION_QUEUE + detokenizationInProgress := recordtypes.LSMTokenDeposit_DETOKENIZATION_IN_PROGRESS + transferFailed := recordtypes.LSMTokenDeposit_TRANSFER_FAILED + detokenizationFailed := recordtypes.LSMTokenDeposit_DETOKENIZATION_FAILED + + validators := []*types.Validator{ + {Address: "valA", SharesToTokensRate: sdk.OneDec()}, + {Address: "valB", SharesToTokensRate: sdk.MustNewDecFromStr("0.75")}, + {Address: "valC", SharesToTokensRate: sdk.MustNewDecFromStr("0.5")}, } - MAX := 1_000_000 - // redemption rate random number, biased to be [1,2) - initialRedemptionRate := sdk.NewDec(genRandUintBelowMax(MAX)).Quo(sdk.NewDec(genRandUintBelowMax(MAX / 2))) - - // SET HZ STAKED BAL TO 0 - tc := s.SetupUpdateRedemptionRates(stakedBal, undelegatedBal, justDepositedBal, stSupply, initialRedemptionRate) - - records := tc.allRecords - s.App.StakeibcKeeper.UpdateRedemptionRates(s.Ctx, records) + // Total: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 65 + lsmDeposits := []recordtypes.LSMTokenDeposit{ + // ValidatorA SharesToTokens Rate 1.0 + {ChainId: HostChainId, Status: transferInProgress, Amount: sdk.NewInt(1), ValidatorAddress: "valA"}, // 1 * 1.0 = 1 + {ChainId: HostChainId, Status: transferInProgress, Amount: sdk.NewInt(2), ValidatorAddress: "valA"}, // 2 * 1.0 = 2 + + {ChainId: HostChainId, Status: detokenizationInProgress, Amount: sdk.NewInt(3), ValidatorAddress: "valA"}, // 3 * 1.0 = 3 + {ChainId: HostChainId, Status: detokenizationInProgress, Amount: sdk.NewInt(4), ValidatorAddress: "valA"}, // 4 * 1.0 = 4 + + // ValidatorB SharesToTokens Rate 0.75 + {ChainId: HostChainId, Status: transferQueue, Amount: sdk.NewInt(7), ValidatorAddress: "valB"}, // 7 * 0.75 = 5.25 (5) + {ChainId: HostChainId, Status: transferQueue, Amount: sdk.NewInt(9), ValidatorAddress: "valB"}, // 9 * 0.75 = 6.75 (6) + + {ChainId: HostChainId, Status: detokenizationQueue, Amount: sdk.NewInt(10), ValidatorAddress: "valB"}, // 10 * 0.75 = 7.5 (7) + {ChainId: HostChainId, Status: detokenizationQueue, Amount: sdk.NewInt(11), ValidatorAddress: "valB"}, // 11 * 0.75 = 8.25 (8) + + // ValidatorC SharesToTokens Rate 0.50 + {ChainId: HostChainId, Status: transferFailed, Amount: sdk.NewInt(18), ValidatorAddress: "valC"}, // 18 * 0.5 = 9 + {ChainId: HostChainId, Status: transferFailed, Amount: sdk.NewInt(20), ValidatorAddress: "valC"}, // 20 * 0.5 = 10 + + {ChainId: HostChainId, Status: detokenizationFailed, Amount: sdk.NewInt(22), ValidatorAddress: "valC"}, // 22 * 0.5 = 11 + {ChainId: HostChainId, Status: detokenizationFailed, Amount: sdk.NewInt(24), ValidatorAddress: "valC"}, // 24 * 0.5 = 12 + + // Status DEPOSIT_PENDING - should be ignored + {ChainId: HostChainId, Status: recordtypes.LSMTokenDeposit_DEPOSIT_PENDING, Amount: sdk.NewInt(11)}, + {ChainId: HostChainId, Status: recordtypes.LSMTokenDeposit_DEPOSIT_PENDING, Amount: sdk.NewInt(12)}, + + // Different chain ID - should be ignored + {ChainId: "different", Status: transferInProgress, Amount: sdk.NewInt(1)}, + {ChainId: "different", Status: detokenizationQueue, Amount: sdk.NewInt(3)}, + {ChainId: "different", Status: detokenizationInProgress, Amount: sdk.NewInt(5)}, + {ChainId: "different", Status: transferFailed, Amount: sdk.NewInt(7)}, + {ChainId: "different", Status: detokenizationFailed, Amount: sdk.NewInt(9)}, + + // Non-existent validator - should be ignored + {ChainId: HostChainId, Status: transferInProgress, Amount: sdk.NewInt(1)}, + {ChainId: HostChainId, Status: detokenizationQueue, Amount: sdk.NewInt(3)}, + {ChainId: HostChainId, Status: detokenizationInProgress, Amount: sdk.NewInt(5)}, + {ChainId: HostChainId, Status: transferFailed, Amount: sdk.NewInt(7)}, + {ChainId: HostChainId, Status: detokenizationFailed, Amount: sdk.NewInt(9)}, + } + expectedTokenizedDelegation := int64(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12) - hz, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, tc.hostZone.ChainId) - s.Require().True(found, "hz found") - rrNew := hz.RedemptionRate + // Store deposits + for i, deposit := range lsmDeposits { + deposit.Denom = strconv.Itoa(i) + s.App.RecordsKeeper.SetLSMTokenDeposit(s.Ctx, deposit) + } - expectedNewRate := sdk.NewDec(3 + 3 + 5).Quo(sdk.NewDec(10)) - s.Require().Equal(rrNew, expectedNewRate, "rr as expected") + // Check the total delegation from LSM Tokens + hostZone := types.HostZone{ChainId: HostChainId, Validators: validators} + actualTokenizedDelegation := s.App.StakeibcKeeper.GetTotalTokenizedDelegations(s.Ctx, hostZone) + s.Require().Equal(expectedTokenizedDelegation, actualTokenizedDelegation.TruncateInt64()) } diff --git a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go index 0fbf5fede3..95ead055e9 100644 --- a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go +++ b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go @@ -3,28 +3,21 @@ package keeper_test import ( "fmt" + sdkmath "cosmossdk.io/math" ibctesting "github.com/cosmos/ibc-go/v7/testing" + "github.com/gogo/protobuf/proto" //nolint:staticcheck _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -// ================================ 1: QueryValidatorExchangeRate ============================================= +// ================================ 1: QueryValidatorSharesToTokensRate ============================================= -type QueryValidatorExchangeRateTestCase struct { - msg types.MsgUpdateValidatorSharesExchRate - currentEpoch uint64 - hostZone types.HostZone - strideEpochTracker types.EpochTracker - dayEpochTracker types.EpochTracker +type QueryValidatorSharesToTokensRateTestCase struct { + hostZone types.HostZone } -func (s *KeeperTestSuite) SetupQueryValidatorExchangeRate() QueryValidatorExchangeRateTestCase { - currentEpoch := uint64(1) - valoperAddr := "cosmosvaloper133lfs9gcpxqj6er3kx605e3v9lqp2pg5syhvsz" - +func (s *KeeperTestSuite) SetupQueryValidatorSharesToTokensRate() QueryValidatorSharesToTokensRateTestCase { // set up IBC s.CreateTransferChannel(HostChainId) @@ -38,123 +31,61 @@ func (s *KeeperTestSuite) SetupQueryValidatorExchangeRate() QueryValidatorExchan s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - // This will make the current time 90% through the epoch - strideEpochTracker := types.EpochTracker{ - EpochIdentifier: epochtypes.STRIDE_EPOCH, - EpochNumber: currentEpoch, - Duration: 10_000_000_000, // 10 second epochs - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 1_000_000_000), // epoch ends in 1 second - } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) - - // This will make the current time 50% through the day - dayEpochTracker := types.EpochTracker{ - EpochIdentifier: epochtypes.DAY_EPOCH, - EpochNumber: currentEpoch, - Duration: 40_000_000_000, // 40 second epochs - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 20_000_000_000), // day ends in 20 second - } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, dayEpochTracker) - - return QueryValidatorExchangeRateTestCase{ - msg: types.MsgUpdateValidatorSharesExchRate{ - Creator: s.TestAccs[0].String(), - ChainId: HostChainId, - Valoper: valoperAddr, - }, - currentEpoch: currentEpoch, - hostZone: hostZone, - strideEpochTracker: strideEpochTracker, - dayEpochTracker: dayEpochTracker, + return QueryValidatorSharesToTokensRateTestCase{ + hostZone: hostZone, } } -func (s *KeeperTestSuite) TestQueryValidatorExchangeRate_Successful() { - tc := s.SetupQueryValidatorExchangeRate() +func (s *KeeperTestSuite) TestQueryValidatorSharesToTokensRate_Successful() { + s.SetupQueryValidatorSharesToTokensRate() - resp, err := s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) - s.Require().NoError(err, "no error expected") - s.Require().NotNil(resp, "response should not be nil") + err := s.App.StakeibcKeeper.QueryValidatorSharesToTokensRate(s.Ctx, HostChainId, ValAddress) + s.Require().NoError(err, "no error expected when querying validator sharesToTokens rate") // check a query was created (a simple test; details about queries are covered in makeRequest's test) queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) s.Require().Len(queries, 1, "one query should have been created") } -func (s *KeeperTestSuite) TestQueryValidatorExchangeRate_BeforeBufferWindow() { - tc := s.SetupQueryValidatorExchangeRate() - - // set the time to be 50% through the stride_epoch - strideEpochTracker := tc.strideEpochTracker - strideEpochTracker.NextEpochStartTime = uint64(s.Coordinator.CurrentTime.UnixNano() + int64(strideEpochTracker.Duration)/2) // 50% through the epoch - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) - - resp, err := s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) - s.Require().ErrorContains(err, "outside the buffer time during which ICQs are allowed") - s.Require().Nil(resp, "response should be nil") -} - -func (s *KeeperTestSuite) TestQueryValidatorExchangeRate_NoHostZone() { - tc := s.SetupQueryValidatorExchangeRate() +func (s *KeeperTestSuite) TestQueryValidatorSharesToTokensRate_NoHostZone() { + s.SetupQueryValidatorSharesToTokensRate() // remove the host zone - s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, tc.hostZone.ChainId) + s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, HostChainId) - resp, err := s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) + err := s.App.StakeibcKeeper.QueryValidatorSharesToTokensRate(s.Ctx, HostChainId, ValAddress) s.Require().ErrorContains(err, "Host zone not found") - s.Require().Nil(resp, "response should be nil") // submit a bad chain id - tc.msg.ChainId = "NOT_GAIA" - resp, err = s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) + err = s.App.StakeibcKeeper.QueryValidatorSharesToTokensRate(s.Ctx, "NOT_GAIA", ValAddress) s.Require().ErrorContains(err, "Host zone not found") - s.Require().Nil(resp, "response should be nil") } -func (s *KeeperTestSuite) TestQueryValidatorExchangeRate_ValoperDoesNotMatchBech32Prefix() { - tc := s.SetupQueryValidatorExchangeRate() +func (s *KeeperTestSuite) TestQueryValidatorSharesToTokensRate_InvalidValidator() { + s.SetupQueryValidatorSharesToTokensRate() - tc.msg.Valoper = "BADPREFIX_123" - - resp, err := s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) + // Pass a validator with an invalid prefix - it should fail + err := s.App.StakeibcKeeper.QueryValidatorSharesToTokensRate(s.Ctx, HostChainId, "BADPREFIX_123") s.Require().ErrorContains(err, "validator operator address must match the host zone bech32 prefix") - s.Require().Nil(resp, "response should be nil") -} - -func (s *KeeperTestSuite) TestQueryValidatorExchangeRate_BadValoperAddress() { - tc := s.SetupQueryValidatorExchangeRate() - - tc.msg.Valoper = "cosmos_BADADDRESS" - resp, err := s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) + // Pass a validator with a valid prefix but an invalid address - it should fail + err = s.App.StakeibcKeeper.QueryValidatorSharesToTokensRate(s.Ctx, HostChainId, "cosmos_BADADDRESS") s.Require().ErrorContains(err, "invalid validator operator address, could not decode") - s.Require().Nil(resp, "response should be nil") } -func (s *KeeperTestSuite) TestQueryValidatorExchangeRate_MissingConnectionId() { - tc := s.SetupQueryValidatorExchangeRate() +func (s *KeeperTestSuite) TestQueryValidatorSharesToTokensRate_MissingConnectionId() { + tc := s.SetupQueryValidatorSharesToTokensRate() tc.hostZone.ConnectionId = "" s.App.StakeibcKeeper.SetHostZone(s.Ctx, tc.hostZone) - resp, err := s.App.StakeibcKeeper.QueryValidatorExchangeRate(s.Ctx, &tc.msg) - s.Require().ErrorContains(err, "connection id cannot be empty") - s.Require().Nil(resp, "response should be nil") + err := s.App.StakeibcKeeper.QueryValidatorSharesToTokensRate(s.Ctx, HostChainId, ValAddress) + s.Require().ErrorContains(err, "connection-id cannot be empty") } -// ================================== 2: QueryDelegationsIcq ========================================== - -type QueryDelegationsIcqTestCase struct { - hostZone types.HostZone - valoperAddr string - strideEpochTracker types.EpochTracker - dayEpochTracker types.EpochTracker -} - -func (s *KeeperTestSuite) SetupQueryDelegationsIcq() QueryDelegationsIcqTestCase { - currentEpoch := uint64(1) - valoperAddr := "cosmosvaloper133lfs9gcpxqj6er3kx605e3v9lqp2pg5syhvsz" +// ================================== 2: SubmitDelegationICQ ========================================== +func (s *KeeperTestSuite) SetupSubmitDelegationICQ() (types.HostZone, types.Validator) { // set up IBC s.CreateTransferChannel(HostChainId) @@ -162,55 +93,49 @@ func (s *KeeperTestSuite) SetupQueryDelegationsIcq() QueryDelegationsIcqTestCase s.CreateICAChannel(delegationAccountOwner) delegationAddress := s.IcaAddresses[delegationAccountOwner] + queriedValidator := types.Validator{ + Address: ValAddress, + Delegation: sdkmath.NewInt(100), + SlashQueryInProgress: false, + } + otherValidator := types.Validator{ + Address: "cosmosvaloper1pcag0cj4ttxg8l7pcg0q4ksuglswuuedadj7ne", + Delegation: sdkmath.NewInt(100), + SlashQueryInProgress: false, + } hostZone := types.HostZone{ - ChainId: HostChainId, - ConnectionId: ibctesting.FirstConnectionID, - HostDenom: Atom, - IbcDenom: IbcAtom, - Bech32Prefix: Bech32Prefix, - DelegationAccount: &stakeibctypes.ICAAccount{Address: delegationAddress}, + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + HostDenom: Atom, + IbcDenom: IbcAtom, + Bech32Prefix: Bech32Prefix, + DelegationIcaAddress: delegationAddress, + Validators: []*types.Validator{&queriedValidator, &otherValidator}, } s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - // This will make the current time 90% through the epoch - strideEpochTracker := types.EpochTracker{ - EpochIdentifier: epochtypes.STRIDE_EPOCH, - EpochNumber: currentEpoch, - Duration: 10_000_000_000, // 10 second epochs - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 1_000_000_000), // epoch ends in 1 second - } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) - - // This will make the current time 50% through the day - dayEpochTracker := types.EpochTracker{ - EpochIdentifier: epochtypes.DAY_EPOCH, - EpochNumber: currentEpoch, - Duration: 40_000_000_000, // 40 second epochs - NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 20_000_000_000), // day ends in 20 second - } - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, dayEpochTracker) - - return QueryDelegationsIcqTestCase{ - hostZone: hostZone, - valoperAddr: valoperAddr, - strideEpochTracker: strideEpochTracker, - dayEpochTracker: dayEpochTracker, - } + return hostZone, queriedValidator } -func (s *KeeperTestSuite) TestQueryDelegationsIcq_Successful() { - tc := s.SetupQueryDelegationsIcq() +func (s *KeeperTestSuite) TestSubmitDelegationICQ_Successful() { + hostZone, validator := s.SetupSubmitDelegationICQ() - err := s.App.StakeibcKeeper.QueryDelegationsIcq(s.Ctx, tc.hostZone, tc.valoperAddr) + err := s.App.StakeibcKeeper.SubmitDelegationICQ(s.Ctx, hostZone, ValAddress) s.Require().NoError(err, "no error expected") // check a query was created (a simple test; details about queries are covered in makeRequest's test) queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) s.Require().Len(queries, 1, "one query should have been created") + // confirm callback data from query + var callbackData types.DelegatorSharesQueryCallback + err = proto.Unmarshal(queries[0].CallbackData, &callbackData) + s.Require().NoError(err, "no error expected when unmarshalling callback data") + s.Require().Equal(validator.Delegation, callbackData.InitialValidatorDelegation, "query callback data delegation") + // querying twice with the same query should only create one query - err = s.App.StakeibcKeeper.QueryDelegationsIcq(s.Ctx, tc.hostZone, tc.valoperAddr) + err = s.App.StakeibcKeeper.SubmitDelegationICQ(s.Ctx, hostZone, ValAddress) s.Require().NoError(err, "no error expected") // check a query was created (a simple test; details about queries are covered in makeRequest's test) @@ -218,8 +143,8 @@ func (s *KeeperTestSuite) TestQueryDelegationsIcq_Successful() { s.Require().Len(queries, 1, "querying twice with the same query should only create one query") // querying with a different query should create a second query - tc.valoperAddr = "cosmosvaloper1pcag0cj4ttxg8l7pcg0q4ksuglswuuedadj7ne" - err = s.App.StakeibcKeeper.QueryDelegationsIcq(s.Ctx, tc.hostZone, tc.valoperAddr) + differentValidator := hostZone.Validators[1].Address + err = s.App.StakeibcKeeper.SubmitDelegationICQ(s.Ctx, hostZone, differentValidator) s.Require().NoError(err, "no error expected") // check a query was created (a simple test; details about queries are covered in makeRequest's test) @@ -227,34 +152,22 @@ func (s *KeeperTestSuite) TestQueryDelegationsIcq_Successful() { s.Require().Len(queries, 2, "querying with a different query should create a second query") } -func (s *KeeperTestSuite) TestQueryDelegationsIcq_BeforeBufferWindow() { - tc := s.SetupQueryDelegationsIcq() +func (s *KeeperTestSuite) TestSubmitDelegationICQ_MissingDelegationAddress() { + hostZone, _ := s.SetupSubmitDelegationICQ() - // set the time to be 50% through the stride_epoch - strideEpochTracker := tc.strideEpochTracker - strideEpochTracker.NextEpochStartTime = uint64(s.Coordinator.CurrentTime.UnixNano() + int64(strideEpochTracker.Duration)/2) // 50% through the epoch - s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) - - err := s.App.StakeibcKeeper.QueryDelegationsIcq(s.Ctx, tc.hostZone, tc.valoperAddr) - s.Require().ErrorContains(err, "outside the buffer time during which ICQs are allowed") -} - -func (s *KeeperTestSuite) TestQueryDelegationsIcq_MissingDelegationAddress() { - tc := s.SetupQueryDelegationsIcq() - - tc.hostZone.DelegationAccount = nil - s.App.StakeibcKeeper.SetHostZone(s.Ctx, tc.hostZone) + hostZone.DelegationIcaAddress = "" + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - err := s.App.StakeibcKeeper.QueryDelegationsIcq(s.Ctx, tc.hostZone, tc.valoperAddr) + err := s.App.StakeibcKeeper.SubmitDelegationICQ(s.Ctx, hostZone, ValAddress) s.Require().ErrorContains(err, "no delegation address found for") } -func (s *KeeperTestSuite) TestQueryDelegationsIcq_MissingConnectionId() { - tc := s.SetupQueryDelegationsIcq() +func (s *KeeperTestSuite) TestSubmitDelegationICQ_MissingConnectionId() { + hostZone, _ := s.SetupSubmitDelegationICQ() - tc.hostZone.ConnectionId = "" - s.App.StakeibcKeeper.SetHostZone(s.Ctx, tc.hostZone) + hostZone.ConnectionId = "" + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) - err := s.App.StakeibcKeeper.QueryDelegationsIcq(s.Ctx, tc.hostZone, tc.valoperAddr) - s.Require().ErrorContains(err, "connection id cannot be empty") + err := s.App.StakeibcKeeper.SubmitDelegationICQ(s.Ctx, hostZone, ValAddress) + s.Require().ErrorContains(err, "connection-id cannot be empty") } diff --git a/x/stakeibc/keeper/validator_selection.go b/x/stakeibc/keeper/validator_selection.go index 3365730b75..dbb3809387 100644 --- a/x/stakeibc/keeper/validator_selection.go +++ b/x/stakeibc/keeper/validator_selection.go @@ -4,60 +4,296 @@ import ( "fmt" "sort" + errorsmod "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/gogoproto/proto" "github.com/Stride-Labs/stride/v13/utils" + epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" ) -// This function returns a map from Validator Address to how many extra tokens need to be given to that validator +const RebalanceIcaBatchSize = 5 + +type RebalanceValidatorDelegationChange struct { + ValidatorAddress string + Delta sdkmath.Int +} + +// Iterate each active host zone and issues redelegation messages to rebalance each +// validator's stake according to their weights // -// positive implies extra tokens need to be given, -// negative impleis tokens need to be taken away -func (k Keeper) GetValidatorDelegationAmtDifferences(ctx sdk.Context, hostZone types.HostZone) (map[string]sdkmath.Int, error) { - validators := hostZone.GetValidators() - delegationDelta := make(map[string]sdkmath.Int) - totalDelegatedAmt := k.GetTotalValidatorDelegations(hostZone) - targetDelegation, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, totalDelegatedAmt) +// This is required when accepting LSM LiquidStakes as the distribution of stake +// from the LSM Tokens will be inconsistend with the host zone's validator set +// +// Note: this cannot be run more than once in a single unbonding period +func (k Keeper) RebalanceAllHostZones(ctx sdk.Context) { + dayEpoch, found := k.GetEpochTracker(ctx, epochstypes.DAY_EPOCH) + if !found { + k.Logger(ctx).Error("Unable to get day epoch tracker") + return + } + + for _, hostZone := range k.GetAllActiveHostZone(ctx) { + if dayEpoch.EpochNumber%hostZone.UnbondingPeriod != 0 { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Host does not rebalance this epoch (Unbonding Period: %d, Epoch: %d)", hostZone.UnbondingPeriod, dayEpoch.EpochNumber)) + continue + } + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Rebalancing delegations")) + + if err := k.RebalanceDelegationsForHostZone(ctx, hostZone.ChainId); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Unable to rebalance delegations for %s: %s", hostZone.ChainId, err.Error())) + continue + } + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Successfully rebalanced delegations")) + } +} + +// Rebalance validators according to their validator weights for a specific host zone +func (k Keeper) RebalanceDelegationsForHostZone(ctx sdk.Context, chainId string) error { + // Get the host zone and confirm the delegation account is initialized + hostZone, found := k.GetHostZone(ctx, chainId) + if !found { + return errorsmod.Wrap(types.ErrHostZoneNotFound, fmt.Sprintf("Host zone %s not found", chainId)) + } + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", chainId) + } + + // Get the difference between the actual and expected validator delegations + valDeltaList, err := k.GetValidatorDelegationDifferences(ctx, hostZone) if err != nil { - k.Logger(ctx).Error(fmt.Sprintf("Error getting target val amts for host zone %s", hostZone.ChainId)) - return nil, err + return errorsmod.Wrapf(err, "unable to get validator deltas for host zone %s", chainId) } - for _, validator := range validators { - targetDelForVal := targetDelegation[validator.GetAddress()] - delegationDelta[validator.GetAddress()] = targetDelForVal.Sub(validator.DelegationAmt) + + msgs, rebalancings := k.GetRebalanceICAMessages(hostZone, valDeltaList) + + for start := 0; start < len(msgs); start += RebalanceIcaBatchSize { + end := start + RebalanceIcaBatchSize + if end > len(msgs) { + end = len(msgs) + } + + msgsBatch := msgs[start:end] + rebalancingsBatch := rebalancings[start:end] + + // marshall the callback + rebalanceCallback := types.RebalanceCallback{ + HostZoneId: hostZone.ChainId, + Rebalancings: rebalancingsBatch, + } + rebalanceCallbackBz, err := k.MarshalRebalanceCallbackArgs(ctx, rebalanceCallback) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal rebalance callback args") + } + + // Submit the rebalance ICA + _, err = k.SubmitTxsStrideEpoch( + ctx, + hostZone.ConnectionId, + msgsBatch, + types.ICAAccountType_DELEGATION, + ICACallbackID_Rebalance, + rebalanceCallbackBz, + ) + if err != nil { + return errorsmod.Wrapf(err, "Failed to SubmitTxs for %s, messages: %+v", hostZone.ChainId, msgs) + } + + // flag the delegation change in progress on each validator + for _, rebalancing := range rebalancingsBatch { + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, rebalancing.SrcValidator); err != nil { + return err + } + if err := k.IncrementValidatorDelegationChangesInProgress(&hostZone, rebalancing.DstValidator); err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) } - return delegationDelta, nil + + return nil } -// This will get the target validator delegation for the given hostZone -// such that the total validator delegation is equal to the finalDelegation -// output key is ADDRESS not NAME -func (k Keeper) GetTargetValAmtsForHostZone(ctx sdk.Context, hostZone types.HostZone, finalDelegation sdkmath.Int) (map[string]sdkmath.Int, error) { +// Given a list of target delegation changes, builds the individual re-delegation messages by redelegating +// from surplus validators to deficit validators +// Returns the list of messages and the callback data for the ICA +func (k Keeper) GetRebalanceICAMessages( + hostZone types.HostZone, + validatorDeltas []RebalanceValidatorDelegationChange, +) (msgs []proto.Message, rebalancings []*types.Rebalancing) { + // Sort the list of delegation changes by the size of the change + // Sort descending so the surplus validators appear first + lessFunc := func(i, j int) bool { + if !validatorDeltas[i].Delta.Equal(validatorDeltas[j].Delta) { + return validatorDeltas[i].Delta.GT(validatorDeltas[j].Delta) + } + // use name as a tie breaker if deltas are equal + return validatorDeltas[i].ValidatorAddress < validatorDeltas[j].ValidatorAddress + } + sort.SliceStable(validatorDeltas, lessFunc) + + // Pair surplus and deficit validators, with a redelegation from the surplus + // validator to the deficit one + // The list is sorted with the surplus validators (who should lose stake) at index 0 + // and the deficit validators (who should gain stake) at index N-1 + // The surplus validator's have a positive delta and the deficit validators have a negative delta + surplusIndex := 0 + deficitIndex := len(validatorDeltas) - 1 + for surplusIndex <= deficitIndex { + // surplus validator delta is positive, deficit validator delta is negative + deficitValidator := validatorDeltas[deficitIndex] + surplusValidator := validatorDeltas[surplusIndex] + + // If the indicies flipped, or either delta is 0, we're done rebalancing + if surplusIndex > deficitIndex || deficitValidator.Delta.IsZero() || surplusValidator.Delta.IsZero() { + break + } + + var redelegationAmount sdkmath.Int + if deficitValidator.Delta.Abs().GT(surplusValidator.Delta.Abs()) { + // If the deficit validator needs more stake than the surplus validator has to give, + // transfer the full surplus to deficit validator + redelegationAmount = surplusValidator.Delta.Abs() + + // Update the deficit validator, and zero out the surplus validator + validatorDeltas[deficitIndex].Delta = deficitValidator.Delta.Add(redelegationAmount) + validatorDeltas[surplusIndex].Delta = sdkmath.ZeroInt() + surplusIndex += 1 + + } else if surplusValidator.Delta.Abs().GT(deficitValidator.Delta.Abs()) { + // If one validator's deficit is less than the other validator's surplus, + // move only enough of the surplus to cover the shortage + redelegationAmount = deficitValidator.Delta.Abs() + + // Update the surplus validator, and zero out the deficit validator + validatorDeltas[surplusIndex].Delta = surplusValidator.Delta.Sub(redelegationAmount) + validatorDeltas[deficitIndex].Delta = sdkmath.ZeroInt() + deficitIndex -= 1 + + } else { + // if one validator's surplus is equal to the other validator's deficit, + // we'll transfer that amount and both validators will now be balanced + redelegationAmount = deficitValidator.Delta.Abs() + + validatorDeltas[surplusIndex].Delta = sdkmath.ZeroInt() + validatorDeltas[deficitIndex].Delta = sdkmath.ZeroInt() + + surplusIndex += 1 + deficitIndex -= 1 + } + + // Append the new Redelegation message and Rebalancing struct for the callback + // We always send from the surplus validator to the deficit validator + srcValidator := surplusValidator.ValidatorAddress + dstValidator := deficitValidator.ValidatorAddress + + msgs = append(msgs, &stakingtypes.MsgBeginRedelegate{ + DelegatorAddress: hostZone.DelegationIcaAddress, + ValidatorSrcAddress: srcValidator, + ValidatorDstAddress: dstValidator, + Amount: sdk.NewCoin(hostZone.HostDenom, redelegationAmount), + }) + rebalancings = append(rebalancings, &types.Rebalancing{ + SrcValidator: srcValidator, + DstValidator: dstValidator, + Amt: redelegationAmount, + }) + } + + return msgs, rebalancings +} + +// This function returns a list with the number of extra tokens that should be sent to each validator +// - Positive delta implies the validator has a surplus (and should lose stake) +// - Negative delta implies the validator has a deficit (and should gain stake) +func (k Keeper) GetValidatorDelegationDifferences(ctx sdk.Context, hostZone types.HostZone) ([]RebalanceValidatorDelegationChange, error) { + // The total rebalance amount consists of all delegations from validator's without a slash query in progress + // Validators with a slash query in progress will be excluded from rebalancing + targetRebalanceAmount := sdkmath.ZeroInt() + for _, validator := range hostZone.Validators { + if !validator.SlashQueryInProgress { + targetRebalanceAmount = targetRebalanceAmount.Add(validator.Delegation) + } + } + + // Get the target delegation amount for each validator + targetDelegations, err := k.GetTargetValAmtsForHostZone(ctx, hostZone, targetRebalanceAmount) + if err != nil { + return nil, errorsmod.Wrapf(err, "unable to get target val amounts for host zone %s", hostZone.ChainId) + } + + // For each validator, store the amount that their delegation should change + delegationDeltas := []RebalanceValidatorDelegationChange{} + totalDelegationChange := sdkmath.ZeroInt() + for _, validator := range hostZone.Validators { + // Compare the target with the current delegation + targetDelegation, ok := targetDelegations[validator.Address] + if !ok { + continue + } + delegationChange := validator.Delegation.Sub(targetDelegation) + + // Only include validators who's delegation should change + if !delegationChange.IsZero() { + delegationDeltas = append(delegationDeltas, RebalanceValidatorDelegationChange{ + ValidatorAddress: validator.Address, + Delta: delegationChange, + }) + totalDelegationChange = totalDelegationChange.Add(delegationChange) + + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Validator %s delegation surplus/deficit: %v", validator.Address, delegationChange)) + } + } + + // Sanity check that the sum of all the delegation change's is equal to 0 + // (meaning the total delegation across ALL validators has not changed) + if !totalDelegationChange.IsZero() { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, + "non-zero net delegation change (%v) across validators during rebalancing", totalDelegationChange) + } + + return delegationDeltas, nil +} + +// This will split a total delegation amount across validators, according to weights +// It returns a map of each portion, key'd on validator address +// Validator's with a slash query in progress are excluded +func (k Keeper) GetTargetValAmtsForHostZone(ctx sdk.Context, hostZone types.HostZone, totalDelegation sdkmath.Int) (map[string]sdkmath.Int, error) { // Confirm the expected delegation amount is greater than 0 - if finalDelegation.Equal(sdkmath.ZeroInt()) { - k.Logger(ctx).Error(fmt.Sprintf("Cannot calculate target delegation if final amount is 0 %s", hostZone.ChainId)) - return nil, types.ErrNoValidatorWeights + if !totalDelegation.IsPositive() { + return nil, errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, + "Cannot calculate target delegation if final amount is less than or equal to zero (%v)", totalDelegation) + } + + // Ignore any validators with a slash query in progress + validators := []types.Validator{} + for _, validator := range hostZone.Validators { + if !validator.SlashQueryInProgress { + validators = append(validators, *validator) + } } // Sum the total weight across all validators - totalWeight := k.GetTotalValidatorWeight(hostZone) + totalWeight := k.GetTotalValidatorWeight(validators) if totalWeight == 0 { - k.Logger(ctx).Error(fmt.Sprintf("No non-zero validators found for host zone %s", hostZone.ChainId)) - return nil, types.ErrNoValidatorWeights + return nil, errorsmod.Wrapf(types.ErrNoValidatorWeights, + "No non-zero validators found for host zone %s", hostZone.ChainId) } k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Total Validator Weight: %d", totalWeight)) - // sort validators by weight ascending, this is inplace sorting! - validators := hostZone.Validators - - for i, j := 0, len(validators)-1; i < j; i, j = i+1, j-1 { - validators[i], validators[j] = validators[j], validators[i] - } - + // sort validators by weight ascending sort.SliceStable(validators, func(i, j int) bool { // Do not use `Slice` here, it is stochastic - return validators[i].Weight < validators[j].Weight + if validators[i].Weight != validators[j].Weight { + return validators[i].Weight < validators[j].Weight + } + // use name for tie breaker if weights are equal + return validators[i].Address < validators[j].Address }) // Assign each validator their portion of the delegation (and give any overflow to the last validator) @@ -66,9 +302,9 @@ func (k Keeper) GetTargetValAmtsForHostZone(ctx sdk.Context, hostZone types.Host for i, validator := range validators { // For the last element, we need to make sure that the totalAllocated is equal to the finalDelegation if i == len(validators)-1 { - targetUnbondingsByValidator[validator.Address] = finalDelegation.Sub(totalAllocated) + targetUnbondingsByValidator[validator.Address] = totalDelegation.Sub(totalAllocated) } else { - delegateAmt := sdkmath.NewIntFromUint64(validator.Weight).Mul(finalDelegation).Quo(sdkmath.NewIntFromUint64(totalWeight)) + delegateAmt := sdkmath.NewIntFromUint64(validator.Weight).Mul(totalDelegation).Quo(sdkmath.NewIntFromUint64(totalWeight)) totalAllocated = totalAllocated.Add(delegateAmt) targetUnbondingsByValidator[validator.Address] = delegateAmt } @@ -77,20 +313,11 @@ func (k Keeper) GetTargetValAmtsForHostZone(ctx sdk.Context, hostZone types.Host return targetUnbondingsByValidator, nil } -func (k Keeper) GetTotalValidatorDelegations(hostZone types.HostZone) sdkmath.Int { - validators := hostZone.GetValidators() - total_delegation := sdkmath.ZeroInt() - for _, validator := range validators { - total_delegation = total_delegation.Add(validator.DelegationAmt) - } - return total_delegation -} - -func (k Keeper) GetTotalValidatorWeight(hostZone types.HostZone) uint64 { - validators := hostZone.GetValidators() - total_weight := uint64(0) +// Sum the total weights across each validator for a host zone +func (k Keeper) GetTotalValidatorWeight(validators []types.Validator) uint64 { + totalWeight := uint64(0) for _, validator := range validators { - total_weight += validator.Weight + totalWeight += validator.Weight } - return total_weight + return totalWeight } diff --git a/x/stakeibc/keeper/validator_selection_test.go b/x/stakeibc/keeper/validator_selection_test.go new file mode 100644 index 0000000000..2f9b5639f7 --- /dev/null +++ b/x/stakeibc/keeper/validator_selection_test.go @@ -0,0 +1,432 @@ +package keeper_test + +import ( + "fmt" + "math/rand" + + sdkmath "cosmossdk.io/math" + "github.com/gogo/protobuf/proto" //nolint:staticcheck + + sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +type RebalanceDelegationsForHostZoneTestCase struct { + expectedRebalancings []types.Rebalancing + channelStartSequence uint64 + hostZone types.HostZone + delegationChannelID string + delegationPortID string +} + +func (s *KeeperTestSuite) SetupTestRebalanceDelegationsForHostZone() RebalanceDelegationsForHostZoneTestCase { + delegationAccountOwner := fmt.Sprintf("%s.%s", HostChainId, "DELEGATION") + delegationChannelID, delegationPortID := s.CreateICAChannel(delegationAccountOwner) + + // Add host zone and validators + delegationAddress := "cosmos_DELEGATION" + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + DelegationIcaAddress: delegationAddress, + ConnectionId: ibctesting.FirstConnectionID, + Validators: []*types.Validator{ + // Total delegation: 10000 + {Address: "val1", Weight: 25, Delegation: sdkmath.NewInt(3500)}, // Expected: 2500 + {Address: "val2", Weight: 50, Delegation: sdkmath.NewInt(2000)}, // Expected: 5000 + {Address: "val3", Weight: 25, Delegation: sdkmath.NewInt(4500)}, // Expected: 2500 + }, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Add the stride epoch to determine the ICA timeout + strideEpochTracker := types.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + EpochNumber: 1, + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeouts + } + + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) + + // Build expected redelegation messages + expectedRebalancings := []types.Rebalancing{ + {SrcValidator: "val3", DstValidator: "val2", Amt: sdkmath.NewInt(2000)}, // 2000 from val3 to val2 + {SrcValidator: "val1", DstValidator: "val2", Amt: sdkmath.NewInt(1000)}, // 1000 from val1 to val2 + } + + // Get the next sequence number to confirm if an ICA was sent + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, delegationPortID, delegationChannelID) + s.Require().True(found, "sequence number not found before ICA") + + return RebalanceDelegationsForHostZoneTestCase{ + expectedRebalancings: expectedRebalancings, + channelStartSequence: startSequence, + hostZone: hostZone, + delegationChannelID: delegationChannelID, + delegationPortID: delegationPortID, + } +} + +func (s *KeeperTestSuite) TestRebalanceDelegationsForHostZone_Successful() { + tc := s.SetupTestRebalanceDelegationsForHostZone() + + // Call rebalance + err := s.App.StakeibcKeeper.RebalanceDelegationsForHostZone(s.Ctx, HostChainId) + s.Require().NoError(err, "no error expected with successful rebalancing") + + // Check that the ICA was sent by confirming the sequence number incremented + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after ICA") + s.Require().Equal(tc.channelStartSequence+1, endSequence, "sequence number should have been incremented from ICA submission") + + // Check callback data + allCallbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Len(allCallbackData, 1, "length of callback data") + + var callbackData types.RebalanceCallback + err = proto.Unmarshal(allCallbackData[0].CallbackArgs, &callbackData) + s.Require().NoError(err, "no error expected when unmarshalling callback data") + s.Require().Equal(HostChainId, callbackData.HostZoneId, "callback data chain-id") + + // Check splits from callback data + actualRebalancings := callbackData.Rebalancings + s.Require().Len(actualRebalancings, len(tc.expectedRebalancings), "number of rebalancings from callback data") + + expectedDelegationChanges := map[string]int{} + for i, expected := range tc.expectedRebalancings { + actual := actualRebalancings[i] + s.Require().Equal(expected.SrcValidator, actual.SrcValidator, "rebalancing %d source validator") + s.Require().Equal(expected.DstValidator, actual.DstValidator, "rebalancing %d destination validator") + s.Require().Equal(expected.Amt.Int64(), actual.Amt.Int64(), "rebalancing %d amount") + + // Store the number of expected delegation changes for each validator + if _, ok := expectedDelegationChanges[expected.SrcValidator]; !ok { + expectedDelegationChanges[expected.SrcValidator] = 0 + } + if _, ok := expectedDelegationChanges[expected.SrcValidator]; !ok { + expectedDelegationChanges[expected.DstValidator] = 0 + } + expectedDelegationChanges[expected.SrcValidator] += 1 + expectedDelegationChanges[expected.DstValidator] += 1 + } + + // Check the delegation change in progress was incremented from each redelegation + actualHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should have been found") + + for _, actualValidator := range actualHostZone.Validators { + expectedDelegationChangesInProgress := expectedDelegationChanges[actualValidator.Address] + s.Require().Equal(expectedDelegationChangesInProgress, int(actualValidator.DelegationChangesInProgress), + "validator %s delegation changes in progress", actualValidator.Address) + } +} + +func (s *KeeperTestSuite) TestRebalanceDelegationsForHostZone_SuccessfulBatchSend() { + tc := s.SetupTestRebalanceDelegationsForHostZone() + + // Create 5 batches of redelegation messages + // For each batch create the RebalanceIcaBatchSize number of validator pairs + // where the rebalance is going from one validator to the next + // This will result in 5 ICA messages submitted + numBatches := 5 + validators := []*types.Validator{} + for batch := 1; batch <= numBatches; batch++ { + for msg := 1; msg <= keeper.RebalanceIcaBatchSize; msg++ { + validators = append(validators, []*types.Validator{ + {Address: fmt.Sprintf("src_val_%d_%d", batch, msg), Weight: 1, Delegation: sdkmath.NewInt(2)}, + {Address: fmt.Sprintf("dst_val_%d_%d", batch, msg), Weight: 1, Delegation: sdkmath.NewInt(0)}, + }...) + } + } + hostZone := tc.hostZone + hostZone.Validators = validators + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Call rebalance + err := s.App.StakeibcKeeper.RebalanceDelegationsForHostZone(s.Ctx, HostChainId) + s.Require().NoError(err, "no error expected with successful rebalancing") + + // Check that the ICA was sent by confirming the sequence number incremented + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after ICA") + s.Require().Equal(int(tc.channelStartSequence)+numBatches, int(endSequence), + "sequence number should have been incremented multiple times from ICA submissions") +} + +func (s *KeeperTestSuite) TestRebalanceDelegationsForHostZone_HostNotFound() { + s.SetupTestRebalanceDelegationsForHostZone() + + // Attempt to rebalance with a host zone that does not exist - it should error + err := s.App.StakeibcKeeper.RebalanceDelegationsForHostZone(s.Ctx, "fake_host_zone") + s.Require().ErrorContains(err, "Host zone fake_host_zone not found") +} + +func (s *KeeperTestSuite) TestRebalanceDelegationsForHostZone_MissingDelegationAddress() { + tc := s.SetupTestRebalanceDelegationsForHostZone() + + // Remove the delegation address from the host and then call rebalance - it should fail + invalidHostZone := tc.hostZone + invalidHostZone.DelegationIcaAddress = "" + s.App.StakeibcKeeper.SetHostZone(s.Ctx, invalidHostZone) + + err := s.App.StakeibcKeeper.RebalanceDelegationsForHostZone(s.Ctx, HostChainId) + s.Require().ErrorContains(err, "no delegation account found for GAIA") +} + +func (s *KeeperTestSuite) TestRebalanceDelegationsForHostZone_ZeroWeightValidators() { + tc := s.SetupTestRebalanceDelegationsForHostZone() + + // Update the host zone validators so there are only 0 weight validators - rebalance should fail + invalidHostZone := tc.hostZone + invalidHostZone.Validators = []*types.Validator{{Address: "val1", Weight: 0}} + s.App.StakeibcKeeper.SetHostZone(s.Ctx, invalidHostZone) + + err := s.App.StakeibcKeeper.RebalanceDelegationsForHostZone(s.Ctx, HostChainId) + s.Require().ErrorContains(err, "Cannot calculate target delegation if final amount is less than or equal to zero (0)") +} + +func (s *KeeperTestSuite) TestRebalanceDelegationsForHostZone_FailedToSubmitICA() { + tc := s.SetupTestRebalanceDelegationsForHostZone() + + // Remove the connection ID from the host zone so the ICA fails + invalidHostZone := tc.hostZone + invalidHostZone.ConnectionId = "" + s.App.StakeibcKeeper.SetHostZone(s.Ctx, invalidHostZone) + + err := s.App.StakeibcKeeper.RebalanceDelegationsForHostZone(s.Ctx, HostChainId) + s.Require().ErrorContains(err, "Failed to SubmitTxs for GAIA") +} + +// Given a set of validator deltas (containing the expected change in delegation for each validator) +// and a set of expected rebalancings (containing the individual rebalance messages), calls +// RebalanceICAMessages and checks that the corresponding ICA messages match the expected rebalancings +func (s *KeeperTestSuite) checkRebalanceICAMessages( + validatorDeltas []keeper.RebalanceValidatorDelegationChange, + expectedRebalancings []types.Rebalancing, +) { + // Build the expected ICA messages from the list of rebalancings above + delegationAddress := "cosmos_DELEGATION" + expectedMsgs := []proto.Message{} + for _, rebalancing := range expectedRebalancings { + expectedMsgs = append(expectedMsgs, &stakingtypes.MsgBeginRedelegate{ + DelegatorAddress: delegationAddress, + ValidatorSrcAddress: rebalancing.SrcValidator, + ValidatorDstAddress: rebalancing.DstValidator, + Amount: sdk.NewCoin(Atom, rebalancing.Amt), + }) + } + + // Only the validator address is needed in the host zone validator array + hostZone := types.HostZone{ + HostDenom: Atom, + DelegationIcaAddress: delegationAddress, // used as ICA message sender + } + + // Shuffle the validatorDeltas to ensure the sorting worked + rand.Shuffle(len(validatorDeltas), func(i, j int) { + validatorDeltas[i], validatorDeltas[j] = validatorDeltas[j], validatorDeltas[i] + }) + + // Get the rebalancing messages + actualMsgs, actualRebalancings := s.App.StakeibcKeeper.GetRebalanceICAMessages(hostZone, validatorDeltas) + + // Confirm the rebalancing list used for the callback + s.Require().Len(actualRebalancings, len(expectedRebalancings), "length of rebalancings") + for i, expected := range expectedRebalancings { + s.Require().Equal(expected.SrcValidator, actualRebalancings[i].SrcValidator, "rebalancing src validator, index %d", i) + s.Require().Equal(expected.DstValidator, actualRebalancings[i].DstValidator, "rebalancing dst validator, index %d", i) + s.Require().Equal(expected.Amt.Int64(), actualRebalancings[i].Amt.Int64(), + "rebalancing amount, src: %s, dst: %s, index: %d", expected.SrcValidator, expected.DstValidator, i) + } + + // Confirm the ICA messages list + s.Require().Len(actualMsgs, len(expectedMsgs), "length of messages") + for i, expectedMsg := range expectedMsgs { + actual := actualMsgs[i].(*stakingtypes.MsgBeginRedelegate) + expected := expectedMsg.(*stakingtypes.MsgBeginRedelegate) + s.Require().Equal(delegationAddress, actual.DelegatorAddress, "message delegator address, index %d", i) + s.Require().Equal(expected.ValidatorSrcAddress, actual.ValidatorSrcAddress, "message src validator, index %d", i) + s.Require().Equal(expected.ValidatorDstAddress, actual.ValidatorDstAddress, "message dst validator, index %d", i) + } +} + +func (s *KeeperTestSuite) TestGetRebalanceICAMessages_EvenNumberValidators() { + // Build up deltas for each validator, i.e. how much each validator needs to change by + validatorDeltas := []keeper.RebalanceValidatorDelegationChange{ + // Overweight validators - they should lose some of their stake + {ValidatorAddress: "val1", Delta: sdkmath.NewInt(21)}, // 15 to val10, 6 to val9 + {ValidatorAddress: "val2", Delta: sdkmath.NewInt(19)}, // 5 to val9, 11 to val8, 3 to val7 + {ValidatorAddress: "val3", Delta: sdkmath.NewInt(13)}, // 3 to val7, 5 to val6, 4 to val5, 1 to val4 + + // Underweight validators - they should gain stake + {ValidatorAddress: "val4", Delta: sdkmath.NewInt(-1)}, // 1 from val3 + {ValidatorAddress: "val5", Delta: sdkmath.NewInt(-4)}, // 4 from val3 + {ValidatorAddress: "val6", Delta: sdkmath.NewInt(-5)}, // 5 from val3 + {ValidatorAddress: "val7", Delta: sdkmath.NewInt(-6)}, // 3 from val2, 3 from val3 + {ValidatorAddress: "val8", Delta: sdkmath.NewInt(-11)}, // 11 from val2 + {ValidatorAddress: "val9", Delta: sdkmath.NewInt(-11)}, // 6 from val1, 5 from val2 + {ValidatorAddress: "val10", Delta: sdkmath.NewInt(-15)}, // 15 from val1 + } + + // Build up the expected messages, moving across the list above + expectedRebalancings := []types.Rebalancing{ + {SrcValidator: "val1", DstValidator: "val10", Amt: sdkmath.NewInt(15)}, // 15 from val1 to val10 + {SrcValidator: "val1", DstValidator: "val9", Amt: sdkmath.NewInt(6)}, // 6 from val1 to val9 + + {SrcValidator: "val2", DstValidator: "val9", Amt: sdkmath.NewInt(5)}, // 6 from val2 to val9 + {SrcValidator: "val2", DstValidator: "val8", Amt: sdkmath.NewInt(11)}, // 10 from val2 to val8 + {SrcValidator: "val2", DstValidator: "val7", Amt: sdkmath.NewInt(3)}, // 3 from val2 to val7 + + {SrcValidator: "val3", DstValidator: "val7", Amt: sdkmath.NewInt(3)}, // 3 from val3 to val7 + {SrcValidator: "val3", DstValidator: "val6", Amt: sdkmath.NewInt(5)}, // 5 from val3 to val6 + {SrcValidator: "val3", DstValidator: "val5", Amt: sdkmath.NewInt(4)}, // 4 from val3 to val5 + {SrcValidator: "val3", DstValidator: "val4", Amt: sdkmath.NewInt(1)}, // 1 from val3 to val4 + } + + s.checkRebalanceICAMessages(validatorDeltas, expectedRebalancings) +} + +func (s *KeeperTestSuite) TestGetRebalanceICAMessages_OddNumberValidators() { + // Build up deltas for each validator, i.e. how much each validator needs to change by + validatorDeltas := []keeper.RebalanceValidatorDelegationChange{ + // Overweight validators - they should lose some of their stake + {ValidatorAddress: "val1", Delta: sdkmath.NewInt(15)}, // 15 to val11 + {ValidatorAddress: "val2", Delta: sdkmath.NewInt(12)}, // 6 to val11, 6 to val10 + {ValidatorAddress: "val3", Delta: sdkmath.NewInt(9)}, // 9 to val10 + {ValidatorAddress: "val4", Delta: sdkmath.NewInt(7)}, // 5 to val9, 2 to val8 + {ValidatorAddress: "val5", Delta: sdkmath.NewInt(2)}, // 2 to val8 + {ValidatorAddress: "val6", Delta: sdkmath.NewInt(2)}, // 2 to val7 + + // Underweight validators - they should gain stake + {ValidatorAddress: "val7", Delta: sdkmath.NewInt(-2)}, // 2 from val6 + {ValidatorAddress: "val8", Delta: sdkmath.NewInt(-4)}, // 2 from val4, 2 from val5 + {ValidatorAddress: "val9", Delta: sdkmath.NewInt(-5)}, // 5 from val4 + {ValidatorAddress: "val10", Delta: sdkmath.NewInt(-15)}, // 6 from val2, 9 from val3 + {ValidatorAddress: "val11", Delta: sdkmath.NewInt(-21)}, // 15 from val1, 6 from val2 + } + + // Build up the expected messages, moving across the list above + expectedRebalancings := []types.Rebalancing{ + {SrcValidator: "val1", DstValidator: "val11", Amt: sdkmath.NewInt(15)}, // 15 from val1 to val11 + + {SrcValidator: "val2", DstValidator: "val11", Amt: sdkmath.NewInt(6)}, // 6 from val2 to val11 + {SrcValidator: "val2", DstValidator: "val10", Amt: sdkmath.NewInt(6)}, // 6 from val2 to val10 + + {SrcValidator: "val3", DstValidator: "val10", Amt: sdkmath.NewInt(9)}, // 9 from val3 to val10 + + {SrcValidator: "val4", DstValidator: "val9", Amt: sdkmath.NewInt(5)}, // 5 from val4 to val9 + {SrcValidator: "val4", DstValidator: "val8", Amt: sdkmath.NewInt(2)}, // 2 from val4 to val8 + + {SrcValidator: "val5", DstValidator: "val8", Amt: sdkmath.NewInt(2)}, // 2 from val5 to val8 + + {SrcValidator: "val6", DstValidator: "val7", Amt: sdkmath.NewInt(2)}, // 2 from val6 to val7 + } + + s.checkRebalanceICAMessages(validatorDeltas, expectedRebalancings) +} + +func (s *KeeperTestSuite) TestGetValidatorDelegationDifferences() { + hostZone := types.HostZone{ + ChainId: HostChainId, + Validators: []*types.Validator{ + // Total Weight: 100, Total Delegation: 200 + {Address: "val1", Weight: 10, Delegation: sdkmath.NewInt(20)}, + {Address: "val2", Weight: 20, Delegation: sdkmath.NewInt(140)}, + {Address: "val3", Weight: 70, Delegation: sdkmath.NewInt(40)}, + // Ignore this validator as it has a slash query in progresss + {Address: "ignore", Weight: 50, Delegation: sdkmath.NewInt(100), SlashQueryInProgress: true}, + }, + } + + // Target delegation is determined by the total delegation * weight + // Delta = Current - Target + expectedDeltas := []keeper.RebalanceValidatorDelegationChange{ + // val1 is excluded because it's Target Delegation is equal to the Current Delegation (20) + {ValidatorAddress: "val2", Delta: sdkmath.NewInt(140 - 40)}, // Current Delegation: 140, Target Delegation: 40 + {ValidatorAddress: "val3", Delta: sdkmath.NewInt(40 - 140)}, // Current Delegation: 40, Target Delegation: 140 + } + + // Check delegation changes + actualDeltas, err := s.App.StakeibcKeeper.GetValidatorDelegationDifferences(s.Ctx, hostZone) + s.Require().NoError(err, "no error expected when calculating delegation differences") + s.Require().Len(actualDeltas, len(expectedDeltas), "number of redelegations") + + for i, expected := range expectedDeltas { + s.Require().Equal(expected.ValidatorAddress, actualDeltas[i].ValidatorAddress, "address for delegation %d", i) + s.Require().Equal(expected.Delta.Int64(), actualDeltas[i].Delta.Int64(), "delta for delegation %d", i) + } + + // Check the error case when there are no delegations + _, err = s.App.StakeibcKeeper.GetValidatorDelegationDifferences(s.Ctx, types.HostZone{TotalDelegations: sdkmath.ZeroInt()}) + s.Require().ErrorContains(err, "unable to get target val amounts for host zone") +} + +func (s *KeeperTestSuite) TestGetTargetValAmtsForHostZone() { + validators := []*types.Validator{ + {Address: "val1", Weight: 20}, + {Address: "val2", Weight: 40}, + {Address: "val3", Weight: 30}, + {Address: "val6", Weight: 5}, + {Address: "val5", Weight: 0}, + {Address: "val4", Weight: 5}, + } + + // Get targets with an even 100 total delegated - no overflow to last validator + totalDelegation := sdkmath.NewInt(100) + hostZone := types.HostZone{ChainId: HostChainId, Validators: validators} + actualTargets, err := s.App.StakeibcKeeper.GetTargetValAmtsForHostZone(s.Ctx, hostZone, totalDelegation) + s.Require().NoError(err, "no error expected when getting target weights for total delegation of 100") + + // Confirm target - should equal the validator's weight + for _, validator := range validators { + s.Require().Equal(int64(validator.Weight), actualTargets[validator.Address].Int64(), + "validator %s target for total delegation of 100", validator.Address) + } + + // Get targets with an uneven amount delegated - 77 - over flow to last validator + totalDelegation = sdkmath.NewInt(77) + expectedTargets := map[string]int64{ + "val5": 0, // 0% of 77 = 0 + "val4": 3, // 5% of 77 = 3.85 -> 3 + "val6": 3, // 5% of 77 = 3.85 -> 3 + "val1": 15, // 20% of 77 = 15.4 -> 15 + "val3": 23, // 30% of 77 = 23.1 -> 23 + "val2": 33, // Gets all overflow: 77 - 3 - 3 - 15 - 23 = 33 + } + actualTargets, err = s.App.StakeibcKeeper.GetTargetValAmtsForHostZone(s.Ctx, hostZone, totalDelegation) + s.Require().NoError(err, "no error expected when getting target weights for total delegation of 77") + + // Confirm target amounts again + for validatorAddress, expectedTarget := range expectedTargets { + s.Require().Equal(expectedTarget, actualTargets[validatorAddress].Int64(), + "validator %s target for total delegation of 77", validatorAddress) + } + + // Check zero delegations throws an error + _, err = s.App.StakeibcKeeper.GetTargetValAmtsForHostZone(s.Ctx, hostZone, sdkmath.ZeroInt()) + s.Require().ErrorContains(err, "Cannot calculate target delegation if final amount is less than or equal to zero") + + // Check zero weights throws an error + _, err = s.App.StakeibcKeeper.GetTargetValAmtsForHostZone(s.Ctx, types.HostZone{}, sdkmath.NewInt(1)) + s.Require().ErrorContains(err, "No non-zero validators found for host zone") +} + +func (s *KeeperTestSuite) TestGetTotalValidatorWeight() { + validators := []types.Validator{ + {Address: "val1", Weight: 1}, + {Address: "val2", Weight: 2}, + {Address: "val3", Weight: 3}, + {Address: "val4", Weight: 4}, + {Address: "val5", Weight: 5}, + } + expectedTotalWeights := int64(1 + 2 + 3 + 4 + 5) + + actualTotalWeight := s.App.StakeibcKeeper.GetTotalValidatorWeight(validators) + + s.Require().Equal(expectedTotalWeights, int64(actualTotalWeight)) +} diff --git a/x/stakeibc/migrations/v2/convert.go b/x/stakeibc/migrations/v2/convert.go index ef09ccd7b6..31ad30453d 100644 --- a/x/stakeibc/migrations/v2/convert.go +++ b/x/stakeibc/migrations/v2/convert.go @@ -4,7 +4,7 @@ import ( sdkmath "cosmossdk.io/math" oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" ) func convertToNewValidator(oldValidator oldstakeibctypes.Validator) stakeibctypes.Validator { diff --git a/x/stakeibc/migrations/v2/convert_test.go b/x/stakeibc/migrations/v2/convert_test.go index 37a79858f3..7c5dd9ad15 100644 --- a/x/stakeibc/migrations/v2/convert_test.go +++ b/x/stakeibc/migrations/v2/convert_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/require" oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v2/types/callbacks.pb.go b/x/stakeibc/migrations/v2/types/callbacks.pb.go index f08a266221..a17458ac27 100644 --- a/x/stakeibc/migrations/v2/types/callbacks.pb.go +++ b/x/stakeibc/migrations/v2/types/callbacks.pb.go @@ -7,7 +7,7 @@ import ( fmt "fmt" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" + proto "github.com/gogo/protobuf/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/stakeibc/migrations/v2/types/host_zone.pb.go b/x/stakeibc/migrations/v2/types/host_zone.pb.go index 36d011a295..c61faeb6ef 100644 --- a/x/stakeibc/migrations/v2/types/host_zone.pb.go +++ b/x/stakeibc/migrations/v2/types/host_zone.pb.go @@ -8,7 +8,7 @@ import ( _ "github.com/cosmos/cosmos-proto" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" + proto "github.com/gogo/protobuf/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/stakeibc/migrations/v2/types/ica_account.pb.go b/x/stakeibc/migrations/v2/types/ica_account.pb.go index 10842bb244..6619090e53 100644 --- a/x/stakeibc/migrations/v2/types/ica_account.pb.go +++ b/x/stakeibc/migrations/v2/types/ica_account.pb.go @@ -6,7 +6,7 @@ package types import ( fmt "fmt" _ "github.com/cosmos/cosmos-proto" - proto "github.com/cosmos/gogoproto/proto" + proto "github.com/gogo/protobuf/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/stakeibc/migrations/v2/types/validator.pb.go b/x/stakeibc/migrations/v2/types/validator.pb.go index ec6d1dd1fe..8c282396e6 100644 --- a/x/stakeibc/migrations/v2/types/validator.pb.go +++ b/x/stakeibc/migrations/v2/types/validator.pb.go @@ -8,7 +8,7 @@ import ( _ "github.com/cosmos/cosmos-proto" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/cosmos/gogoproto/proto" + proto "github.com/gogo/protobuf/proto" io "io" math "math" math_bits "math/bits" diff --git a/x/stakeibc/migrations/v3/types/host_zone.pb.go b/x/stakeibc/migrations/v3/types/host_zone.pb.go new file mode 100644 index 0000000000..fac2e8b3ca --- /dev/null +++ b/x/stakeibc/migrations/v3/types/host_zone.pb.go @@ -0,0 +1,1349 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/stakeibc/host_zone.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// next id: 22 +type HostZone struct { + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + Bech32Prefix string `protobuf:"bytes,17,opt,name=bech32prefix,proto3" json:"bech32prefix,omitempty"` + TransferChannelId string `protobuf:"bytes,12,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty"` + Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` + BlacklistedValidators []*Validator `protobuf:"bytes,4,rep,name=blacklisted_validators,json=blacklistedValidators,proto3" json:"blacklisted_validators,omitempty"` + WithdrawalAccount *ICAAccount `protobuf:"bytes,5,opt,name=withdrawal_account,json=withdrawalAccount,proto3" json:"withdrawal_account,omitempty"` + FeeAccount *ICAAccount `protobuf:"bytes,6,opt,name=fee_account,json=feeAccount,proto3" json:"fee_account,omitempty"` + DelegationAccount *ICAAccount `protobuf:"bytes,7,opt,name=delegation_account,json=delegationAccount,proto3" json:"delegation_account,omitempty"` + RedemptionAccount *ICAAccount `protobuf:"bytes,16,opt,name=redemption_account,json=redemptionAccount,proto3" json:"redemption_account,omitempty"` + // ibc denom on stride + IbcDenom string `protobuf:"bytes,8,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty"` + // native denom on host zone + HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` + // TODO(TEST-68): Should we make this an array and store the last n redemption + // rates then calculate a TWARR? + LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` + RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` + // stores how many days we should wait before issuing unbondings + UnbondingFrequency uint64 `protobuf:"varint,14,opt,name=unbonding_frequency,json=unbondingFrequency,proto3" json:"unbonding_frequency,omitempty"` + // TODO(TEST-101) int to dec + StakedBal github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=staked_bal,json=stakedBal,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"staked_bal"` + Address string `protobuf:"bytes,18,opt,name=address,proto3" json:"address,omitempty" yaml:"address"` + Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` + MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` + MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` +} + +func (m *HostZone) Reset() { *m = HostZone{} } +func (m *HostZone) String() string { return proto.CompactTextString(m) } +func (*HostZone) ProtoMessage() {} +func (*HostZone) Descriptor() ([]byte, []int) { + return fileDescriptor_f81bf5b42c61245a, []int{0} +} +func (m *HostZone) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HostZone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HostZone.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HostZone) XXX_Merge(src proto.Message) { + xxx_messageInfo_HostZone.Merge(m, src) +} +func (m *HostZone) XXX_Size() int { + return m.Size() +} +func (m *HostZone) XXX_DiscardUnknown() { + xxx_messageInfo_HostZone.DiscardUnknown(m) +} + +var xxx_messageInfo_HostZone proto.InternalMessageInfo + +func (m *HostZone) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *HostZone) GetConnectionId() string { + if m != nil { + return m.ConnectionId + } + return "" +} + +func (m *HostZone) GetBech32Prefix() string { + if m != nil { + return m.Bech32Prefix + } + return "" +} + +func (m *HostZone) GetTransferChannelId() string { + if m != nil { + return m.TransferChannelId + } + return "" +} + +func (m *HostZone) GetValidators() []*Validator { + if m != nil { + return m.Validators + } + return nil +} + +func (m *HostZone) GetBlacklistedValidators() []*Validator { + if m != nil { + return m.BlacklistedValidators + } + return nil +} + +func (m *HostZone) GetWithdrawalAccount() *ICAAccount { + if m != nil { + return m.WithdrawalAccount + } + return nil +} + +func (m *HostZone) GetFeeAccount() *ICAAccount { + if m != nil { + return m.FeeAccount + } + return nil +} + +func (m *HostZone) GetDelegationAccount() *ICAAccount { + if m != nil { + return m.DelegationAccount + } + return nil +} + +func (m *HostZone) GetRedemptionAccount() *ICAAccount { + if m != nil { + return m.RedemptionAccount + } + return nil +} + +func (m *HostZone) GetIbcDenom() string { + if m != nil { + return m.IbcDenom + } + return "" +} + +func (m *HostZone) GetHostDenom() string { + if m != nil { + return m.HostDenom + } + return "" +} + +func (m *HostZone) GetUnbondingFrequency() uint64 { + if m != nil { + return m.UnbondingFrequency + } + return 0 +} + +func (m *HostZone) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *HostZone) GetHalted() bool { + if m != nil { + return m.Halted + } + return false +} + +func init() { + proto.RegisterType((*HostZone)(nil), "stride.stakeibc.V3HostZone") +} + +func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } + +var fileDescriptor_f81bf5b42c61245a = []byte{ + // 672 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcf, 0x4e, 0xdb, 0x4a, + 0x14, 0xc6, 0xe3, 0x0b, 0x17, 0x92, 0x09, 0xff, 0x32, 0x01, 0x64, 0x40, 0x37, 0xc9, 0x4d, 0xa5, + 0x2a, 0x8b, 0xe2, 0x88, 0xb0, 0x43, 0x6c, 0xf8, 0xa3, 0xaa, 0x41, 0x74, 0x51, 0x57, 0x62, 0xc1, + 0xc6, 0x1a, 0xcf, 0x9c, 0x24, 0x23, 0x9c, 0x99, 0xd4, 0x33, 0x81, 0xd0, 0x47, 0xe8, 0xaa, 0x0f, + 0xd3, 0x87, 0x60, 0x89, 0xba, 0xaa, 0xba, 0x40, 0x15, 0xbc, 0x41, 0x9f, 0xa0, 0xca, 0xd8, 0x4e, + 0x4c, 0xb2, 0x80, 0x4a, 0xac, 0xec, 0x39, 0xdf, 0x77, 0x7e, 0xdf, 0xe8, 0x8c, 0x3d, 0xa8, 0xac, + 0x74, 0xc8, 0x19, 0xd4, 0x95, 0x26, 0x17, 0xc0, 0x7d, 0x5a, 0xef, 0x48, 0xa5, 0xbd, 0xcf, 0x52, + 0x80, 0xd3, 0x0b, 0xa5, 0x96, 0x78, 0x39, 0x32, 0x38, 0x89, 0x61, 0x73, 0xaa, 0xe3, 0x92, 0x04, + 0x9c, 0x11, 0x2d, 0xc3, 0xa8, 0x63, 0xf3, 0xff, 0x49, 0x03, 0xa7, 0xc4, 0x23, 0x94, 0xca, 0xbe, + 0xd0, 0xb1, 0x65, 0xb5, 0x2d, 0xdb, 0xd2, 0xbc, 0xd6, 0x87, 0x6f, 0x71, 0x75, 0x83, 0x4a, 0xd5, + 0x95, 0xca, 0x8b, 0x84, 0x68, 0x11, 0x49, 0xd5, 0x2f, 0x08, 0x65, 0xdf, 0x49, 0xa5, 0xcf, 0xa5, + 0x00, 0xbc, 0x81, 0xb2, 0xb4, 0x43, 0xb8, 0xf0, 0x38, 0xb3, 0xad, 0x8a, 0x55, 0xcb, 0xb9, 0xf3, + 0x66, 0xdd, 0x64, 0xf8, 0x15, 0x5a, 0xa4, 0x52, 0x08, 0xa0, 0x9a, 0x4b, 0xa3, 0xff, 0x63, 0xf4, + 0x85, 0x71, 0xb1, 0xc9, 0x70, 0x15, 0x2d, 0xf8, 0x40, 0x3b, 0xbb, 0x8d, 0x5e, 0x08, 0x2d, 0x3e, + 0xb0, 0x0b, 0x91, 0x27, 0x5d, 0xc3, 0x0e, 0x2a, 0xea, 0x90, 0x08, 0xd5, 0x82, 0xd0, 0xa3, 0x1d, + 0x22, 0x04, 0x04, 0x43, 0xdc, 0x82, 0xb1, 0x16, 0x12, 0xe9, 0x28, 0x52, 0x9a, 0x0c, 0xef, 0x21, + 0x34, 0x9a, 0x83, 0xb2, 0x67, 0x2a, 0x33, 0xb5, 0x7c, 0x63, 0xd3, 0x99, 0x98, 0x9d, 0x73, 0x96, + 0x58, 0xdc, 0x94, 0x1b, 0x7f, 0x40, 0xeb, 0x7e, 0x40, 0xe8, 0x45, 0xc0, 0x95, 0x06, 0xe6, 0xa5, + 0x38, 0xb3, 0x4f, 0x72, 0xd6, 0x52, 0x9d, 0x67, 0x63, 0xe4, 0x09, 0xc2, 0x57, 0x5c, 0x77, 0x58, + 0x48, 0xae, 0x48, 0x90, 0x0c, 0xdf, 0xfe, 0xb7, 0x62, 0xd5, 0xf2, 0x8d, 0xad, 0x29, 0x5c, 0xf3, + 0xe8, 0xe0, 0x20, 0xb2, 0xb8, 0x85, 0x71, 0x5b, 0x5c, 0xc2, 0xfb, 0x28, 0xdf, 0x02, 0x18, 0x41, + 0xe6, 0x9e, 0x86, 0xa0, 0x16, 0x40, 0xd2, 0x7d, 0x82, 0x30, 0x83, 0x00, 0xda, 0xc4, 0x9c, 0x48, + 0x02, 0x99, 0x7f, 0xc6, 0x4e, 0xc6, 0x6d, 0x29, 0x56, 0x08, 0x0c, 0xba, 0xbd, 0x47, 0xac, 0x95, + 0x67, 0xb0, 0xc6, 0x6d, 0x09, 0x6b, 0x0b, 0xe5, 0xb8, 0x4f, 0x3d, 0x06, 0x42, 0x76, 0xed, 0xac, + 0x39, 0xd6, 0x2c, 0xf7, 0xe9, 0xf1, 0x70, 0x8d, 0xff, 0x43, 0xc8, 0xfc, 0x07, 0x91, 0x9a, 0x33, + 0x6a, 0x6e, 0x58, 0x89, 0x64, 0x81, 0x56, 0x03, 0xa2, 0xb4, 0x97, 0xda, 0x4c, 0x48, 0x34, 0xd8, + 0x68, 0x68, 0x3c, 0xdc, 0xbf, 0xb9, 0x2b, 0x67, 0x7e, 0xde, 0x95, 0x5f, 0xb7, 0xb9, 0xee, 0xf4, + 0x7d, 0x87, 0xca, 0x6e, 0xfc, 0x31, 0xc7, 0x8f, 0x6d, 0xc5, 0x2e, 0xea, 0xfa, 0xba, 0x07, 0xca, + 0x39, 0x06, 0xfa, 0xfd, 0xdb, 0x36, 0x8a, 0xbf, 0xf5, 0x63, 0xa0, 0x2e, 0x1e, 0x92, 0xdd, 0x11, + 0xd8, 0x25, 0x1a, 0x30, 0xa0, 0xe5, 0xc9, 0xa8, 0xfc, 0x0b, 0x44, 0x2d, 0x85, 0x8f, 0x63, 0xea, + 0xa8, 0xd8, 0x17, 0xbe, 0x14, 0x8c, 0x8b, 0xb6, 0xd7, 0x0a, 0xe1, 0x53, 0x1f, 0x04, 0xbd, 0xb6, + 0x97, 0x2a, 0x56, 0x6d, 0xd6, 0xc5, 0x23, 0xe9, 0x6d, 0xa2, 0xe0, 0xf7, 0x08, 0x99, 0x69, 0x33, + 0xcf, 0x27, 0x81, 0xbd, 0x68, 0xb6, 0xe4, 0xfc, 0xc5, 0x96, 0x9a, 0x42, 0xbb, 0xb9, 0x88, 0x70, + 0x48, 0x02, 0xfc, 0x06, 0xcd, 0x13, 0xc6, 0x42, 0x50, 0xca, 0xc6, 0x86, 0x85, 0x7f, 0xdf, 0x95, + 0x97, 0xae, 0x49, 0x37, 0xd8, 0xab, 0xc6, 0x42, 0xd5, 0x4d, 0x2c, 0x78, 0x1d, 0xcd, 0x75, 0x48, + 0xa0, 0x81, 0xd9, 0xc5, 0x8a, 0x55, 0xcb, 0xba, 0xf1, 0x0a, 0x07, 0xa8, 0xd8, 0xe5, 0x62, 0xea, + 0x6c, 0x56, 0x5f, 0x60, 0x60, 0x85, 0x2e, 0x17, 0x13, 0x47, 0x33, 0x4c, 0x23, 0x83, 0xa9, 0xb4, + 0xb5, 0x17, 0x49, 0x23, 0x83, 0xc7, 0x69, 0x27, 0xb3, 0xd9, 0xe5, 0x95, 0x95, 0xc3, 0xd3, 0x9b, + 0xfb, 0x92, 0x75, 0x7b, 0x5f, 0xb2, 0x7e, 0xdd, 0x97, 0xac, 0xaf, 0x0f, 0xa5, 0xcc, 0xed, 0x43, + 0x29, 0xf3, 0xe3, 0xa1, 0x94, 0x39, 0x6f, 0xa4, 0x82, 0x3e, 0x9a, 0xdf, 0x61, 0xfb, 0x94, 0xf8, + 0xaa, 0x1e, 0xdf, 0xc8, 0x97, 0x3b, 0x3b, 0xf5, 0xc1, 0xf8, 0x5e, 0x36, 0xc1, 0xfe, 0x9c, 0xb9, + 0x61, 0x77, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x0a, 0x02, 0x65, 0x0a, 0x06, 0x00, 0x00, +} + +func (m *HostZone) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *HostZone) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.MaxRedemptionRate.Size() + i -= size + if _, err := m.MaxRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xaa + { + size := m.MinRedemptionRate.Size() + i -= size + if _, err := m.MinRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + if m.Halted { + i-- + if m.Halted { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x98 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + if len(m.Bech32Prefix) > 0 { + i -= len(m.Bech32Prefix) + copy(dAtA[i:], m.Bech32Prefix) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.Bech32Prefix))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + if m.RedemptionAccount != nil { + { + size, err := m.RedemptionAccount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + if m.UnbondingFrequency != 0 { + i = encodeVarintHostZone(dAtA, i, uint64(m.UnbondingFrequency)) + i-- + dAtA[i] = 0x70 + } + { + size := m.StakedBal.Size() + i -= size + if _, err := m.StakedBal.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + if len(m.TransferChannelId) > 0 { + i -= len(m.TransferChannelId) + copy(dAtA[i:], m.TransferChannelId) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.TransferChannelId))) + i-- + dAtA[i] = 0x62 + } + { + size := m.RedemptionRate.Size() + i -= size + if _, err := m.RedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + { + size := m.LastRedemptionRate.Size() + i -= size + if _, err := m.LastRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + if len(m.HostDenom) > 0 { + i -= len(m.HostDenom) + copy(dAtA[i:], m.HostDenom) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.HostDenom))) + i-- + dAtA[i] = 0x4a + } + if len(m.IbcDenom) > 0 { + i -= len(m.IbcDenom) + copy(dAtA[i:], m.IbcDenom) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.IbcDenom))) + i-- + dAtA[i] = 0x42 + } + if m.DelegationAccount != nil { + { + size, err := m.DelegationAccount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.FeeAccount != nil { + { + size, err := m.FeeAccount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.WithdrawalAccount != nil { + { + size, err := m.WithdrawalAccount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.BlacklistedValidators) > 0 { + for iNdEx := len(m.BlacklistedValidators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.BlacklistedValidators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Validators) > 0 { + for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Validators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.ConnectionId) > 0 { + i -= len(m.ConnectionId) + copy(dAtA[i:], m.ConnectionId) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.ConnectionId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintHostZone(dAtA []byte, offset int, v uint64) int { + offset -= sovHostZone(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *HostZone) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovHostZone(uint64(l)) + } + l = len(m.ConnectionId) + if l > 0 { + n += 1 + l + sovHostZone(uint64(l)) + } + if len(m.Validators) > 0 { + for _, e := range m.Validators { + l = e.Size() + n += 1 + l + sovHostZone(uint64(l)) + } + } + if len(m.BlacklistedValidators) > 0 { + for _, e := range m.BlacklistedValidators { + l = e.Size() + n += 1 + l + sovHostZone(uint64(l)) + } + } + if m.WithdrawalAccount != nil { + l = m.WithdrawalAccount.Size() + n += 1 + l + sovHostZone(uint64(l)) + } + if m.FeeAccount != nil { + l = m.FeeAccount.Size() + n += 1 + l + sovHostZone(uint64(l)) + } + if m.DelegationAccount != nil { + l = m.DelegationAccount.Size() + n += 1 + l + sovHostZone(uint64(l)) + } + l = len(m.IbcDenom) + if l > 0 { + n += 1 + l + sovHostZone(uint64(l)) + } + l = len(m.HostDenom) + if l > 0 { + n += 1 + l + sovHostZone(uint64(l)) + } + l = m.LastRedemptionRate.Size() + n += 1 + l + sovHostZone(uint64(l)) + l = m.RedemptionRate.Size() + n += 1 + l + sovHostZone(uint64(l)) + l = len(m.TransferChannelId) + if l > 0 { + n += 1 + l + sovHostZone(uint64(l)) + } + l = m.StakedBal.Size() + n += 1 + l + sovHostZone(uint64(l)) + if m.UnbondingFrequency != 0 { + n += 1 + sovHostZone(uint64(m.UnbondingFrequency)) + } + if m.RedemptionAccount != nil { + l = m.RedemptionAccount.Size() + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.Bech32Prefix) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + if m.Halted { + n += 3 + } + l = m.MinRedemptionRate.Size() + n += 2 + l + sovHostZone(uint64(l)) + l = m.MaxRedemptionRate.Size() + n += 2 + l + sovHostZone(uint64(l)) + return n +} + +func sovHostZone(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozHostZone(x uint64) (n int) { + return sovHostZone(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *HostZone) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: HostZone: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HostZone: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConnectionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Validators = append(m.Validators, &Validator{}) + if err := m.Validators[len(m.Validators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BlacklistedValidators", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BlacklistedValidators = append(m.BlacklistedValidators, &Validator{}) + if err := m.BlacklistedValidators[len(m.BlacklistedValidators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WithdrawalAccount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.WithdrawalAccount == nil { + m.WithdrawalAccount = &ICAAccount{} + } + if err := m.WithdrawalAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FeeAccount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.FeeAccount == nil { + m.FeeAccount = &ICAAccount{} + } + if err := m.FeeAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationAccount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DelegationAccount == nil { + m.DelegationAccount = &ICAAccount{} + } + if err := m.DelegationAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IbcDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IbcDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostDenom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.RedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferChannelId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferChannelId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StakedBal", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StakedBal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingFrequency", wireType) + } + m.UnbondingFrequency = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UnbondingFrequency |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionAccount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RedemptionAccount == nil { + m.RedemptionAccount = &ICAAccount{} + } + if err := m.RedemptionAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Bech32Prefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Bech32Prefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipHostZone(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthHostZone + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipHostZone(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowHostZone + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowHostZone + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowHostZone + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthHostZone + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupHostZone + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthHostZone + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthHostZone = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowHostZone = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupHostZone = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/stakeibc/migrations/v3/types/ica_account.pb.go b/x/stakeibc/migrations/v3/types/ica_account.pb.go new file mode 100644 index 0000000000..6ec4d873af --- /dev/null +++ b/x/stakeibc/migrations/v3/types/ica_account.pb.go @@ -0,0 +1,391 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/stakeibc/ica_account.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type ICAAccountType int32 + +const ( + ICAAccountType_DELEGATION ICAAccountType = 0 + ICAAccountType_FEE ICAAccountType = 1 + ICAAccountType_WITHDRAWAL ICAAccountType = 2 + ICAAccountType_REDEMPTION ICAAccountType = 3 +) + +var ICAAccountType_name = map[int32]string{ + 0: "DELEGATION", + 1: "FEE", + 2: "WITHDRAWAL", + 3: "REDEMPTION", +} + +var ICAAccountType_value = map[string]int32{ + "DELEGATION": 0, + "FEE": 1, + "WITHDRAWAL": 2, + "REDEMPTION": 3, +} + +func (x ICAAccountType) String() string { + return proto.EnumName(ICAAccountType_name, int32(x)) +} + +func (ICAAccountType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_2976ae6e7f6ce824, []int{0} +} + +type ICAAccount struct { + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Target ICAAccountType `protobuf:"varint,3,opt,name=target,proto3,enum=stride.stakeibc.ICAAccountType" json:"target,omitempty"` +} + +func (m *ICAAccount) Reset() { *m = ICAAccount{} } +func (m *ICAAccount) String() string { return proto.CompactTextString(m) } +func (*ICAAccount) ProtoMessage() {} +func (*ICAAccount) Descriptor() ([]byte, []int) { + return fileDescriptor_2976ae6e7f6ce824, []int{0} +} +func (m *ICAAccount) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ICAAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ICAAccount.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ICAAccount) XXX_Merge(src proto.Message) { + xxx_messageInfo_ICAAccount.Merge(m, src) +} +func (m *ICAAccount) XXX_Size() int { + return m.Size() +} +func (m *ICAAccount) XXX_DiscardUnknown() { + xxx_messageInfo_ICAAccount.DiscardUnknown(m) +} + +var xxx_messageInfo_ICAAccount proto.InternalMessageInfo + +func (m *ICAAccount) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *ICAAccount) GetTarget() ICAAccountType { + if m != nil { + return m.Target + } + return ICAAccountType_DELEGATION +} + +func init() { + proto.RegisterEnum("stride.stakeibc.V3ICAAccountType", ICAAccountType_name, ICAAccountType_value) + proto.RegisterType((*ICAAccount)(nil), "stride.stakeibc.V3ICAAccount") +} + +func init() { proto.RegisterFile("stride/stakeibc/ica_account.proto", fileDescriptor_2976ae6e7f6ce824) } + +var fileDescriptor_2976ae6e7f6ce824 = []byte{ + // 292 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x2e, 0x29, 0xca, + 0x4c, 0x49, 0xd5, 0x2f, 0x2e, 0x49, 0xcc, 0x4e, 0xcd, 0x4c, 0x4a, 0xd6, 0xcf, 0x4c, 0x4e, 0x8c, + 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x87, + 0x28, 0xd1, 0x83, 0x29, 0x91, 0x92, 0x4c, 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x8e, 0x07, 0x4b, 0xeb, + 0x43, 0x38, 0x10, 0xb5, 0x4a, 0xf5, 0x5c, 0x5c, 0x9e, 0xce, 0x8e, 0x8e, 0x10, 0xfd, 0x42, 0x46, + 0x5c, 0xec, 0x89, 0x29, 0x29, 0x45, 0xa9, 0xc5, 0xc5, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x4e, + 0x12, 0x97, 0xb6, 0xe8, 0x8a, 0x40, 0x35, 0x38, 0x42, 0x64, 0x82, 0x4b, 0x8a, 0x32, 0xf3, 0xd2, + 0x83, 0x60, 0x0a, 0x85, 0xcc, 0xb9, 0xd8, 0x4a, 0x12, 0x8b, 0xd2, 0x53, 0x4b, 0x24, 0x98, 0x15, + 0x18, 0x35, 0xf8, 0x8c, 0xe4, 0xf5, 0xd0, 0xac, 0xd7, 0x43, 0x58, 0x10, 0x52, 0x59, 0x90, 0x1a, + 0x04, 0x55, 0xee, 0xc5, 0xc2, 0xc1, 0x24, 0xc0, 0xac, 0xe5, 0xc9, 0xc5, 0x87, 0x2a, 0x2f, 0xc4, + 0xc7, 0xc5, 0xe5, 0xe2, 0xea, 0xe3, 0xea, 0xee, 0x18, 0xe2, 0xe9, 0xef, 0x27, 0xc0, 0x20, 0xc4, + 0xce, 0xc5, 0xec, 0xe6, 0xea, 0x2a, 0xc0, 0x08, 0x92, 0x08, 0xf7, 0x0c, 0xf1, 0x70, 0x09, 0x72, + 0x0c, 0x77, 0xf4, 0x11, 0x60, 0x02, 0xf1, 0x83, 0x5c, 0x5d, 0x5c, 0x7d, 0x03, 0xc0, 0x0a, 0x99, + 0x9d, 0x7c, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, + 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, + 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xec, 0x3a, 0x5d, 0x9f, 0xc4, 0xa4, + 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xea, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, + 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x51, 0x58, 0xe1, + 0x71, 0x01, 0x00, 0x00, +} + +func (m *ICAAccount) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ICAAccount) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ICAAccount) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Target != 0 { + i = encodeVarintIcaAccount(dAtA, i, uint64(m.Target)) + i-- + dAtA[i] = 0x18 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintIcaAccount(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintIcaAccount(dAtA []byte, offset int, v uint64) int { + offset -= sovIcaAccount(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ICAAccount) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovIcaAccount(uint64(l)) + } + if m.Target != 0 { + n += 1 + sovIcaAccount(uint64(m.Target)) + } + return n +} + +func sovIcaAccount(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozIcaAccount(x uint64) (n int) { + return sovIcaAccount(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ICAAccount) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaAccount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ICAAccount: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ICAAccount: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaAccount + } + 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 ErrInvalidLengthIcaAccount + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcaAccount + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) + } + m.Target = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcaAccount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Target |= ICAAccountType(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipIcaAccount(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcaAccount + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipIcaAccount(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowIcaAccount + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowIcaAccount + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowIcaAccount + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthIcaAccount + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupIcaAccount + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthIcaAccount + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthIcaAccount = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowIcaAccount = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupIcaAccount = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/stakeibc/migrations/v3/types/params.go b/x/stakeibc/migrations/v3/types/params.go new file mode 100644 index 0000000000..7bc603cf19 --- /dev/null +++ b/x/stakeibc/migrations/v3/types/params.go @@ -0,0 +1,6 @@ +package types + +var ( + KeySafetyMaxSlashPercent = []byte("SafetyMaxSlashPercent") + DefaultSafetyMaxSlashPercent uint64 = 0 +) diff --git a/x/stakeibc/migrations/v3/types/validator.pb.go b/x/stakeibc/migrations/v3/types/validator.pb.go new file mode 100644 index 0000000000..885350d5ef --- /dev/null +++ b/x/stakeibc/migrations/v3/types/validator.pb.go @@ -0,0 +1,729 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: stride/stakeibc/validator.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type ValidatorExchangeRate struct { + InternalTokensToSharesRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=internal_tokens_to_shares_rate,json=internalTokensToSharesRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"internal_tokens_to_shares_rate"` + EpochNumber uint64 `protobuf:"varint,2,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"` +} + +func (m *ValidatorExchangeRate) Reset() { *m = ValidatorExchangeRate{} } +func (m *ValidatorExchangeRate) String() string { return proto.CompactTextString(m) } +func (*ValidatorExchangeRate) ProtoMessage() {} +func (*ValidatorExchangeRate) Descriptor() ([]byte, []int) { + return fileDescriptor_5d2f32e16bd6ab8f, []int{0} +} +func (m *ValidatorExchangeRate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorExchangeRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorExchangeRate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorExchangeRate) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorExchangeRate.Merge(m, src) +} +func (m *ValidatorExchangeRate) XXX_Size() int { + return m.Size() +} +func (m *ValidatorExchangeRate) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorExchangeRate.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorExchangeRate proto.InternalMessageInfo + +func (m *ValidatorExchangeRate) GetEpochNumber() uint64 { + if m != nil { + return m.EpochNumber + } + return 0 +} + +type Validator struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + DelegationAmt github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=delegation_amt,json=delegationAmt,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"delegation_amt"` + Weight uint64 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"` + InternalExchangeRate *ValidatorExchangeRate `protobuf:"bytes,7,opt,name=internal_exchange_rate,json=internalExchangeRate,proto3" json:"internal_exchange_rate,omitempty"` +} + +func (m *Validator) Reset() { *m = Validator{} } +func (m *Validator) String() string { return proto.CompactTextString(m) } +func (*Validator) ProtoMessage() {} +func (*Validator) Descriptor() ([]byte, []int) { + return fileDescriptor_5d2f32e16bd6ab8f, []int{1} +} +func (m *Validator) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Validator.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Validator) XXX_Merge(src proto.Message) { + xxx_messageInfo_Validator.Merge(m, src) +} +func (m *Validator) XXX_Size() int { + return m.Size() +} +func (m *Validator) XXX_DiscardUnknown() { + xxx_messageInfo_Validator.DiscardUnknown(m) +} + +var xxx_messageInfo_Validator proto.InternalMessageInfo + +func (m *Validator) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Validator) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *Validator) GetWeight() uint64 { + if m != nil { + return m.Weight + } + return 0 +} + +func (m *Validator) GetInternalExchangeRate() *ValidatorExchangeRate { + if m != nil { + return m.InternalExchangeRate + } + return nil +} + +func init() { + proto.RegisterType((*ValidatorExchangeRate)(nil), "stride.stakeibc.V3ValidatorExchangeRate") + proto.RegisterType((*Validator)(nil), "stride.stakeibc.V3Validator") +} + +func init() { proto.RegisterFile("stride/stakeibc/validator.proto", fileDescriptor_5d2f32e16bd6ab8f) } + +var fileDescriptor_5d2f32e16bd6ab8f = []byte{ + // 439 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x3d, 0x6f, 0xdb, 0x30, + 0x10, 0x35, 0x53, 0xc5, 0x89, 0x99, 0x7e, 0x04, 0x84, 0x1b, 0xa8, 0x1e, 0x64, 0x37, 0x43, 0xe0, + 0xc5, 0x12, 0xe2, 0xae, 0x5d, 0x62, 0xa4, 0x43, 0x83, 0xa0, 0x83, 0x9c, 0x76, 0x28, 0x0a, 0x08, + 0x94, 0x74, 0x90, 0x08, 0x5b, 0xa4, 0x41, 0x5e, 0xd2, 0x74, 0xeb, 0x4f, 0xe8, 0x0f, 0xe9, 0x98, + 0xb5, 0x7b, 0xc6, 0x20, 0x53, 0xd1, 0x21, 0x28, 0xec, 0x3f, 0x52, 0x94, 0xa2, 0x92, 0xa0, 0xe8, + 0x92, 0x89, 0xe4, 0xe3, 0xe3, 0xbd, 0xf7, 0x78, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, + 0x67, 0x20, 0xd2, 0x2c, 0x3a, 0xe3, 0x73, 0x91, 0x73, 0x54, 0x3a, 0x5c, 0x68, 0x85, 0x8a, 0x3d, + 0xab, 0x09, 0x61, 0x43, 0xe8, 0xbd, 0xc8, 0x94, 0xa9, 0x94, 0x49, 0xec, 0x75, 0x54, 0x1f, 0x6a, + 0x6e, 0xaf, 0x5b, 0xa8, 0x42, 0xd5, 0xf8, 0xdf, 0x5d, 0x8d, 0xee, 0xfe, 0x20, 0xf4, 0xf9, 0x87, + 0xa6, 0xea, 0x9b, 0xf3, 0xac, 0xe4, 0xb2, 0x80, 0x98, 0x23, 0xb0, 0xaf, 0x84, 0x06, 0x42, 0x22, + 0x68, 0xc9, 0xe7, 0x09, 0xaa, 0x19, 0x48, 0x93, 0xa0, 0x4a, 0x4c, 0xc9, 0x35, 0x98, 0x44, 0x73, + 0x04, 0x9f, 0x0c, 0xc8, 0xb0, 0x33, 0x79, 0x7d, 0x79, 0xd3, 0x6f, 0xfd, 0xba, 0xe9, 0xef, 0x15, + 0x02, 0xcb, 0xd3, 0x34, 0xcc, 0x54, 0xe5, 0x94, 0xdd, 0x32, 0x32, 0xf9, 0x2c, 0xc2, 0x2f, 0x0b, + 0x30, 0xe1, 0x21, 0x64, 0xd7, 0x17, 0x23, 0xea, 0x8c, 0x1d, 0x42, 0x16, 0xf7, 0x1a, 0x8d, 0x13, + 0x2b, 0x71, 0xa2, 0xa6, 0x56, 0xc0, 0x5a, 0x78, 0x49, 0x1f, 0xc3, 0x42, 0x65, 0x65, 0x22, 0x4f, + 0xab, 0x14, 0xb4, 0xbf, 0x36, 0x20, 0x43, 0x2f, 0xde, 0xb2, 0xd8, 0x3b, 0x0b, 0xed, 0x7e, 0x5f, + 0xa3, 0x9d, 0x5b, 0xff, 0x8c, 0x51, 0x4f, 0xf2, 0xca, 0x19, 0x8b, 0xed, 0x9e, 0x8d, 0xe9, 0x06, + 0xcf, 0x73, 0x0d, 0xc6, 0xd8, 0xf7, 0x9d, 0x89, 0x7f, 0x7d, 0x31, 0xea, 0x3a, 0x07, 0x07, 0xf5, + 0xcd, 0x14, 0xb5, 0x90, 0x45, 0xdc, 0x10, 0xd9, 0x7b, 0xfa, 0x34, 0x87, 0x39, 0x14, 0x1c, 0x85, + 0x92, 0x09, 0xaf, 0xd0, 0x5f, 0xb7, 0x4f, 0xc3, 0x07, 0x44, 0x7d, 0x2b, 0x31, 0x7e, 0x72, 0x57, + 0xe5, 0xa0, 0x42, 0xb6, 0x43, 0xdb, 0x9f, 0x41, 0x14, 0x25, 0xfa, 0x6d, 0x9b, 0xc4, 0x9d, 0xd8, + 0x27, 0xba, 0x73, 0xfb, 0xd3, 0xe0, 0x7a, 0x50, 0xff, 0xf0, 0xc6, 0x80, 0x0c, 0xb7, 0xc6, 0x7b, + 0xe1, 0x3f, 0x7d, 0x0e, 0xff, 0xdb, 0xb2, 0xb8, 0xdb, 0x54, 0xb9, 0x8f, 0x1e, 0x79, 0x9b, 0x8f, + 0xb6, 0xbd, 0x23, 0x6f, 0xd3, 0xdb, 0x5e, 0x9f, 0x1c, 0x5f, 0x2e, 0x03, 0x72, 0xb5, 0x0c, 0xc8, + 0xef, 0x65, 0x40, 0xbe, 0xad, 0x82, 0xd6, 0xd5, 0x2a, 0x68, 0xfd, 0x5c, 0x05, 0xad, 0x8f, 0xe3, + 0x7b, 0x91, 0xa6, 0x56, 0x6d, 0x74, 0xcc, 0x53, 0x13, 0xb9, 0x11, 0x3c, 0xdb, 0xdf, 0x8f, 0xce, + 0xef, 0x06, 0xd1, 0x46, 0x4c, 0xdb, 0x76, 0x86, 0x5e, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x91, + 0x62, 0x30, 0xab, 0xa8, 0x02, 0x00, 0x00, +} + +func (m *ValidatorExchangeRate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidatorExchangeRate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ValidatorExchangeRate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.EpochNumber != 0 { + i = encodeVarintValidator(dAtA, i, uint64(m.EpochNumber)) + i-- + dAtA[i] = 0x10 + } + { + size := m.InternalTokensToSharesRate.Size() + i -= size + if _, err := m.InternalTokensToSharesRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintValidator(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *Validator) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Validator) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.InternalExchangeRate != nil { + { + size, err := m.InternalExchangeRate.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintValidator(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.Weight != 0 { + i = encodeVarintValidator(dAtA, i, uint64(m.Weight)) + i-- + dAtA[i] = 0x30 + } + { + size := m.DelegationAmt.Size() + i -= size + if _, err := m.DelegationAmt.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintValidator(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintValidator(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintValidator(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintValidator(dAtA []byte, offset int, v uint64) int { + offset -= sovValidator(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ValidatorExchangeRate) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.InternalTokensToSharesRate.Size() + n += 1 + l + sovValidator(uint64(l)) + if m.EpochNumber != 0 { + n += 1 + sovValidator(uint64(m.EpochNumber)) + } + return n +} + +func (m *Validator) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovValidator(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovValidator(uint64(l)) + } + l = m.DelegationAmt.Size() + n += 1 + l + sovValidator(uint64(l)) + if m.Weight != 0 { + n += 1 + sovValidator(uint64(m.Weight)) + } + if m.InternalExchangeRate != nil { + l = m.InternalExchangeRate.Size() + n += 1 + l + sovValidator(uint64(l)) + } + return n +} + +func sovValidator(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozValidator(x uint64) (n int) { + return sovValidator(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ValidatorExchangeRate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ValidatorExchangeRate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ValidatorExchangeRate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InternalTokensToSharesRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + 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 ErrInvalidLengthValidator + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthValidator + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InternalTokensToSharesRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EpochNumber", wireType) + } + m.EpochNumber = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.EpochNumber |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipValidator(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthValidator + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Validator) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Validator: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Validator: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + 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 ErrInvalidLengthValidator + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthValidator + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + 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 ErrInvalidLengthValidator + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthValidator + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationAmt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + 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 ErrInvalidLengthValidator + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthValidator + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DelegationAmt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + m.Weight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Weight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InternalExchangeRate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthValidator + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthValidator + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.InternalExchangeRate == nil { + m.InternalExchangeRate = &ValidatorExchangeRate{} + } + if err := m.InternalExchangeRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipValidator(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthValidator + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipValidator(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowValidator + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowValidator + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowValidator + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthValidator + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupValidator + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthValidator + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthValidator = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowValidator = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupValidator = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index a3fe8ccbf2..ee92e5c6c4 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -167,11 +167,12 @@ func (AppModule) ConsensusVersion() uint64 { return 2 } // BeginBlock executes all ABCI BeginBlock logic respective to the capability module. func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - BeginBlocker(ctx, am.keeper, am.bankKeeper, am.accountKeeper) + am.keeper.BeginBlocker(ctx) } // EndBlock executes all ABCI EndBlock logic respective to the capability module. It // returns no validator updates. func (am AppModule) EndBlock(ctx sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { + am.keeper.EndBlocker(ctx) return []abci.ValidatorUpdate{} } diff --git a/x/stakeibc/proposal_handler.go b/x/stakeibc/proposal_handler.go deleted file mode 100644 index 9ba9425425..0000000000 --- a/x/stakeibc/proposal_handler.go +++ /dev/null @@ -1,24 +0,0 @@ -package stakeibc - -import ( - errorsmod "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" -) - -func NewStakeibcProposalHandler(k keeper.Keeper) govtypes.Handler { - return func(ctx sdk.Context, content govtypes.Content) error { - switch c := content.(type) { - case *types.AddValidatorsProposal: - return k.AddValidatorsProposal(ctx, c) - - default: - return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized stakeibc proposal content type: %T", c) - } - } -} diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index fced01cddb..c1b8b9418e 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -5,6 +5,7 @@ package types import ( fmt "fmt" + types1 "github.com/Stride-Labs/stride/v13/x/records/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -25,7 +26,6 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// ---------------------- Delegation Callbacks ---------------------- // type SplitDelegation struct { Validator string `protobuf:"bytes,1,opt,name=validator,proto3" json:"validator,omitempty"` Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` @@ -191,7 +191,6 @@ func (m *ClaimCallback) GetEpochNumber() uint64 { return 0 } -// ---------------------- Reinvest Callback ---------------------- // type ReinvestCallback struct { ReinvestAmount types.Coin `protobuf:"bytes,1,opt,name=reinvest_amount,json=reinvestAmount,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"reinvest_amount"` HostZoneId string `protobuf:"bytes,3,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` @@ -244,7 +243,6 @@ func (m *ReinvestCallback) GetHostZoneId() string { return "" } -// ---------------------- Undelegation Callbacks ---------------------- // type UndelegateCallback struct { HostZoneId string `protobuf:"bytes,1,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` SplitDelegations []*SplitDelegation `protobuf:"bytes,2,rep,name=split_delegations,json=splitDelegations,proto3" json:"split_delegations,omitempty"` @@ -305,7 +303,6 @@ func (m *UndelegateCallback) GetEpochUnbondingRecordIds() []uint64 { return nil } -// ---------------------- Redemption Callbacks ---------------------- // type RedemptionCallback struct { HostZoneId string `protobuf:"bytes,1,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` EpochUnbondingRecordIds []uint64 `protobuf:"varint,2,rep,packed,name=epoch_unbonding_record_ids,json=epochUnbondingRecordIds,proto3" json:"epoch_unbonding_record_ids,omitempty"` @@ -463,6 +460,192 @@ func (m *RebalanceCallback) GetRebalancings() []*Rebalancing { return nil } +type DetokenizeSharesCallback struct { + Deposit *types1.LSMTokenDeposit `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"` +} + +func (m *DetokenizeSharesCallback) Reset() { *m = DetokenizeSharesCallback{} } +func (m *DetokenizeSharesCallback) String() string { return proto.CompactTextString(m) } +func (*DetokenizeSharesCallback) ProtoMessage() {} +func (*DetokenizeSharesCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{8} +} +func (m *DetokenizeSharesCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DetokenizeSharesCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DetokenizeSharesCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DetokenizeSharesCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_DetokenizeSharesCallback.Merge(m, src) +} +func (m *DetokenizeSharesCallback) XXX_Size() int { + return m.Size() +} +func (m *DetokenizeSharesCallback) XXX_DiscardUnknown() { + xxx_messageInfo_DetokenizeSharesCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_DetokenizeSharesCallback proto.InternalMessageInfo + +func (m *DetokenizeSharesCallback) GetDeposit() *types1.LSMTokenDeposit { + if m != nil { + return m.Deposit + } + return nil +} + +type LSMLiquidStake struct { + Deposit *types1.LSMTokenDeposit `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"` + HostZone *HostZone `protobuf:"bytes,2,opt,name=host_zone,json=hostZone,proto3" json:"host_zone,omitempty"` + Validator *Validator `protobuf:"bytes,3,opt,name=validator,proto3" json:"validator,omitempty"` +} + +func (m *LSMLiquidStake) Reset() { *m = LSMLiquidStake{} } +func (m *LSMLiquidStake) String() string { return proto.CompactTextString(m) } +func (*LSMLiquidStake) ProtoMessage() {} +func (*LSMLiquidStake) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{9} +} +func (m *LSMLiquidStake) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LSMLiquidStake) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LSMLiquidStake.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LSMLiquidStake) XXX_Merge(src proto.Message) { + xxx_messageInfo_LSMLiquidStake.Merge(m, src) +} +func (m *LSMLiquidStake) XXX_Size() int { + return m.Size() +} +func (m *LSMLiquidStake) XXX_DiscardUnknown() { + xxx_messageInfo_LSMLiquidStake.DiscardUnknown(m) +} + +var xxx_messageInfo_LSMLiquidStake proto.InternalMessageInfo + +func (m *LSMLiquidStake) GetDeposit() *types1.LSMTokenDeposit { + if m != nil { + return m.Deposit + } + return nil +} + +func (m *LSMLiquidStake) GetHostZone() *HostZone { + if m != nil { + return m.HostZone + } + return nil +} + +func (m *LSMLiquidStake) GetValidator() *Validator { + if m != nil { + return m.Validator + } + return nil +} + +type ValidatorSharesToTokensQueryCallback struct { + LsmLiquidStake *LSMLiquidStake `protobuf:"bytes,1,opt,name=lsm_liquid_stake,json=lsmLiquidStake,proto3" json:"lsm_liquid_stake,omitempty"` +} + +func (m *ValidatorSharesToTokensQueryCallback) Reset() { *m = ValidatorSharesToTokensQueryCallback{} } +func (m *ValidatorSharesToTokensQueryCallback) String() string { return proto.CompactTextString(m) } +func (*ValidatorSharesToTokensQueryCallback) ProtoMessage() {} +func (*ValidatorSharesToTokensQueryCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{10} +} +func (m *ValidatorSharesToTokensQueryCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidatorSharesToTokensQueryCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidatorSharesToTokensQueryCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidatorSharesToTokensQueryCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidatorSharesToTokensQueryCallback.Merge(m, src) +} +func (m *ValidatorSharesToTokensQueryCallback) XXX_Size() int { + return m.Size() +} +func (m *ValidatorSharesToTokensQueryCallback) XXX_DiscardUnknown() { + xxx_messageInfo_ValidatorSharesToTokensQueryCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidatorSharesToTokensQueryCallback proto.InternalMessageInfo + +func (m *ValidatorSharesToTokensQueryCallback) GetLsmLiquidStake() *LSMLiquidStake { + if m != nil { + return m.LsmLiquidStake + } + return nil +} + +type DelegatorSharesQueryCallback struct { + // Validator delegation at the time the query is submitted + InitialValidatorDelegation github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=initial_validator_delegation,json=initialValidatorDelegation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"initial_validator_delegation"` +} + +func (m *DelegatorSharesQueryCallback) Reset() { *m = DelegatorSharesQueryCallback{} } +func (m *DelegatorSharesQueryCallback) String() string { return proto.CompactTextString(m) } +func (*DelegatorSharesQueryCallback) ProtoMessage() {} +func (*DelegatorSharesQueryCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{11} +} +func (m *DelegatorSharesQueryCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DelegatorSharesQueryCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DelegatorSharesQueryCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DelegatorSharesQueryCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_DelegatorSharesQueryCallback.Merge(m, src) +} +func (m *DelegatorSharesQueryCallback) XXX_Size() int { + return m.Size() +} +func (m *DelegatorSharesQueryCallback) XXX_DiscardUnknown() { + xxx_messageInfo_DelegatorSharesQueryCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_DelegatorSharesQueryCallback proto.InternalMessageInfo + func init() { proto.RegisterType((*SplitDelegation)(nil), "stride.stakeibc.SplitDelegation") proto.RegisterType((*DelegateCallback)(nil), "stride.stakeibc.DelegateCallback") @@ -472,52 +655,68 @@ func init() { proto.RegisterType((*RedemptionCallback)(nil), "stride.stakeibc.RedemptionCallback") proto.RegisterType((*Rebalancing)(nil), "stride.stakeibc.Rebalancing") proto.RegisterType((*RebalanceCallback)(nil), "stride.stakeibc.RebalanceCallback") + proto.RegisterType((*DetokenizeSharesCallback)(nil), "stride.stakeibc.DetokenizeSharesCallback") + proto.RegisterType((*LSMLiquidStake)(nil), "stride.stakeibc.LSMLiquidStake") + proto.RegisterType((*ValidatorSharesToTokensQueryCallback)(nil), "stride.stakeibc.ValidatorSharesToTokensQueryCallback") + proto.RegisterType((*DelegatorSharesQueryCallback)(nil), "stride.stakeibc.DelegatorSharesQueryCallback") } func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 630 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x4f, 0x13, 0x41, - 0x18, 0xc6, 0xbb, 0x94, 0xa0, 0xbc, 0x2d, 0x16, 0x36, 0x46, 0x0b, 0x21, 0xdb, 0xba, 0x24, 0x4a, - 0x4c, 0xd8, 0x0d, 0x70, 0x32, 0x5e, 0x10, 0x8c, 0x49, 0x13, 0xf4, 0xb0, 0x04, 0x0f, 0x5c, 0x36, - 0xb3, 0x3b, 0x93, 0x76, 0xc2, 0xee, 0x4c, 0xb3, 0xef, 0xb4, 0xa8, 0x9f, 0xc0, 0xa3, 0x57, 0x3f, - 0x82, 0x5e, 0xfc, 0x0e, 0x9e, 0x38, 0x72, 0x34, 0x1e, 0xd0, 0xd0, 0x2f, 0x62, 0x66, 0xff, 0x74, - 0x4b, 0x31, 0xc4, 0x7a, 0x6a, 0xfb, 0xbe, 0xcf, 0xf4, 0x7d, 0x9e, 0xf9, 0xcd, 0x0c, 0xb4, 0x50, - 0x25, 0x9c, 0x32, 0x17, 0x15, 0x39, 0x65, 0x3c, 0x08, 0xdd, 0x90, 0x44, 0x51, 0x40, 0xc2, 0x53, - 0x74, 0xfa, 0x89, 0x54, 0xd2, 0x6c, 0x64, 0x02, 0xa7, 0x10, 0xac, 0xdd, 0xef, 0xca, 0xae, 0x4c, - 0x7b, 0xae, 0xfe, 0x96, 0xc9, 0xd6, 0xac, 0x50, 0x62, 0x2c, 0xd1, 0x0d, 0x08, 0x32, 0x77, 0xb8, - 0x1d, 0x30, 0x45, 0xb6, 0xdd, 0x50, 0x72, 0x91, 0xf5, 0xed, 0x33, 0x68, 0x1c, 0xf5, 0x23, 0xae, - 0x5e, 0xb2, 0x88, 0x75, 0x89, 0xe2, 0x52, 0x98, 0xeb, 0xb0, 0x38, 0x24, 0x11, 0xa7, 0x44, 0xc9, - 0xa4, 0x69, 0xb4, 0x8d, 0xcd, 0x45, 0xaf, 0x2c, 0x98, 0xaf, 0x60, 0x81, 0xc4, 0x72, 0x20, 0x54, - 0x73, 0x4e, 0xb7, 0xf6, 0x9d, 0xf3, 0xcb, 0x56, 0xe5, 0xe7, 0x65, 0xeb, 0x71, 0x97, 0xab, 0xde, - 0x20, 0x70, 0x42, 0x19, 0xbb, 0xf9, 0xcc, 0xec, 0x63, 0x0b, 0xe9, 0xa9, 0xab, 0xde, 0xf7, 0x19, - 0x3a, 0x1d, 0xa1, 0xbc, 0x7c, 0xb5, 0xfd, 0xcd, 0x80, 0xe5, 0x7c, 0x28, 0x3b, 0xc8, 0xb3, 0x99, - 0x6d, 0xa8, 0xf7, 0x24, 0x2a, 0xff, 0x83, 0x14, 0xcc, 0xe7, 0x34, 0x9f, 0x0e, 0xba, 0x76, 0x22, - 0x05, 0xeb, 0x50, 0xf3, 0x29, 0xac, 0x50, 0xd6, 0x97, 0xc8, 0x95, 0x9f, 0xb0, 0x50, 0x26, 0x54, - 0xcb, 0xb4, 0x93, 0x79, 0xaf, 0x91, 0x37, 0xbc, 0xb4, 0xde, 0xa1, 0xe6, 0x6b, 0x58, 0x41, 0x9d, - 0xcd, 0xa7, 0xe3, 0x70, 0xd8, 0xac, 0xb6, 0xab, 0x9b, 0xb5, 0x9d, 0xb6, 0x33, 0xb5, 0x7d, 0xce, - 0xd4, 0x2e, 0x78, 0xcb, 0x78, 0xbd, 0x80, 0xf6, 0x47, 0x03, 0x96, 0x0e, 0x22, 0xc2, 0xe3, 0xb1, - 0xdd, 0x67, 0xb0, 0x3a, 0x40, 0x96, 0xf8, 0x09, 0xa3, 0x2c, 0xee, 0x6b, 0xd5, 0x84, 0xa9, 0xcc, - 0xfb, 0x03, 0x2d, 0xf0, 0xc6, 0xfd, 0xb1, 0xb7, 0x55, 0xb8, 0x1b, 0xf6, 0x08, 0x17, 0x85, 0xfd, - 0x45, 0xef, 0x4e, 0xfa, 0xbb, 0x43, 0xcd, 0x47, 0x50, 0x67, 0x7d, 0x19, 0xf6, 0x7c, 0x31, 0x88, - 0x03, 0x96, 0x34, 0xab, 0x69, 0xba, 0x5a, 0x5a, 0x7b, 0x93, 0x96, 0xec, 0x2f, 0x06, 0x2c, 0x7b, - 0x8c, 0x8b, 0x21, 0x43, 0x35, 0x76, 0x83, 0xd0, 0x48, 0xf2, 0x9a, 0x9f, 0x23, 0xd2, 0x1e, 0x6a, - 0x3b, 0xab, 0x4e, 0x46, 0xc2, 0xd1, 0x87, 0xc0, 0xc9, 0x0f, 0x81, 0x73, 0x20, 0xb9, 0xd8, 0x77, - 0x35, 0xbd, 0xaf, 0xbf, 0x5a, 0x4f, 0xfe, 0x81, 0x9e, 0x5e, 0xe0, 0xdd, 0x2b, 0x46, 0xbc, 0x48, - 0x27, 0xdc, 0x20, 0x56, 0x9d, 0x26, 0x66, 0x7f, 0x37, 0xc0, 0x3c, 0x16, 0x74, 0x76, 0xd4, 0x7f, - 0xc5, 0x37, 0xf7, 0xbf, 0xf8, 0xcc, 0xe7, 0xb0, 0x96, 0x6d, 0xeb, 0x40, 0x04, 0x52, 0x50, 0x2e, - 0xba, 0x25, 0xac, 0xec, 0x58, 0xcc, 0x7b, 0x0f, 0x53, 0xc5, 0x71, 0x21, 0x28, 0x68, 0xa1, 0x8d, - 0x60, 0x96, 0x10, 0x67, 0xc8, 0x70, 0xfb, 0xd0, 0xb9, 0xdb, 0x87, 0x7e, 0x36, 0xa0, 0xe6, 0xb1, - 0x80, 0x44, 0x44, 0x84, 0x5c, 0x74, 0xcd, 0x0d, 0x58, 0xc2, 0x24, 0xf4, 0xa7, 0x2f, 0x67, 0x1d, - 0x93, 0xf0, 0xed, 0xf8, 0x7e, 0x6e, 0xc0, 0x12, 0x45, 0x35, 0x21, 0xca, 0x4e, 0x57, 0x9d, 0xa2, - 0x2a, 0x45, 0x7b, 0x50, 0x25, 0xb1, 0xca, 0x60, 0xcd, 0x7c, 0x83, 0xf5, 0x52, 0xfb, 0x0c, 0x56, - 0x0a, 0x6b, 0xb3, 0x30, 0xdd, 0x83, 0x7a, 0x52, 0x26, 0x2a, 0x70, 0xae, 0xdf, 0xc0, 0x39, 0x11, - 0xdb, 0xbb, 0xb6, 0x62, 0xff, 0xf0, 0xfc, 0xca, 0x32, 0x2e, 0xae, 0x2c, 0xe3, 0xf7, 0x95, 0x65, - 0x7c, 0x1a, 0x59, 0x95, 0x8b, 0x91, 0x55, 0xf9, 0x31, 0xb2, 0x2a, 0x27, 0x3b, 0x13, 0xfe, 0x8f, - 0xd2, 0xff, 0xdb, 0x3a, 0x24, 0x01, 0xba, 0xf9, 0x4b, 0x3a, 0xdc, 0xde, 0x75, 0xdf, 0x95, 0xef, - 0x69, 0x9a, 0x27, 0x58, 0x48, 0x5f, 0xc1, 0xdd, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdb, 0x8d, - 0x89, 0xb6, 0x6f, 0x05, 0x00, 0x00, + // 823 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0xeb, 0x44, + 0x10, 0x8f, 0x9b, 0xa7, 0xf7, 0x5e, 0x36, 0x69, 0x93, 0x5a, 0x08, 0xd2, 0x28, 0x4a, 0x82, 0x1f, + 0x82, 0x27, 0xa4, 0xda, 0x6a, 0x2b, 0x21, 0x10, 0x97, 0xd2, 0x56, 0x88, 0x48, 0x29, 0x12, 0x4e, + 0xcb, 0xa1, 0x17, 0x6b, 0xed, 0x5d, 0x25, 0xab, 0xd8, 0xbb, 0xa9, 0x77, 0x93, 0xd2, 0x7e, 0x02, + 0x8e, 0xbd, 0xf2, 0x11, 0xe0, 0xc2, 0x27, 0xe0, 0xc2, 0xa9, 0xc7, 0x1e, 0x11, 0x87, 0x82, 0xda, + 0x2f, 0x82, 0x76, 0xbd, 0xfe, 0x93, 0x04, 0x2a, 0x02, 0xa7, 0xc4, 0x33, 0xbf, 0xd9, 0x99, 0xdf, + 0xfc, 0x66, 0x76, 0x41, 0x97, 0x8b, 0x98, 0x20, 0xec, 0x70, 0x01, 0x27, 0x98, 0xf8, 0x81, 0x13, + 0xc0, 0x30, 0xf4, 0x61, 0x30, 0xe1, 0xf6, 0x34, 0x66, 0x82, 0x99, 0xf5, 0x04, 0x60, 0xa7, 0x80, + 0xd6, 0x3b, 0x23, 0x36, 0x62, 0xca, 0xe7, 0xc8, 0x7f, 0x09, 0xac, 0xd5, 0x09, 0x18, 0x8f, 0x18, + 0x77, 0x7c, 0xc8, 0xb1, 0x33, 0xdf, 0xf3, 0xb1, 0x80, 0x7b, 0x4e, 0xc0, 0x08, 0xd5, 0xfe, 0xb6, + 0xce, 0x13, 0xe3, 0x80, 0xc5, 0x88, 0xa7, 0xbf, 0xda, 0xbb, 0x52, 0xc5, 0x98, 0x71, 0xe1, 0xdd, + 0x30, 0x8a, 0xff, 0x09, 0x30, 0x87, 0x21, 0x41, 0x50, 0xb0, 0x38, 0x01, 0x58, 0x57, 0xa0, 0x3e, + 0x9c, 0x86, 0x44, 0x9c, 0xe0, 0x10, 0x8f, 0xa0, 0x20, 0x8c, 0x9a, 0x6d, 0x50, 0xc9, 0x50, 0x4d, + 0xa3, 0x67, 0xbc, 0xad, 0xb8, 0xb9, 0xc1, 0xfc, 0x12, 0xbc, 0x84, 0x11, 0x9b, 0x51, 0xd1, 0xdc, + 0x90, 0xae, 0x23, 0xfb, 0xee, 0xa1, 0x5b, 0xfa, 0xfd, 0xa1, 0xfb, 0xe1, 0x88, 0x88, 0xf1, 0xcc, + 0xb7, 0x03, 0x16, 0x39, 0x9a, 0x53, 0xf2, 0xb3, 0xcb, 0xd1, 0xc4, 0x11, 0xd7, 0x53, 0xcc, 0xed, + 0x3e, 0x15, 0xae, 0x8e, 0xb6, 0x7e, 0x36, 0x40, 0x43, 0x27, 0xc5, 0xc7, 0xba, 0x77, 0x66, 0x0f, + 0xd4, 0x32, 0x06, 0x1e, 0x41, 0x3a, 0x3b, 0x90, 0xb6, 0x0b, 0x46, 0x71, 0x1f, 0x99, 0x1f, 0x83, + 0x6d, 0x84, 0xa7, 0x8c, 0x13, 0xe1, 0x25, 0xad, 0x90, 0x30, 0x59, 0xc9, 0x0b, 0xb7, 0xae, 0x1d, + 0xae, 0xb2, 0xf7, 0x91, 0x79, 0x0a, 0xb6, 0xb9, 0xe4, 0xe6, 0xa1, 0x8c, 0x1c, 0x6f, 0x96, 0x7b, + 0xe5, 0xb7, 0xd5, 0xfd, 0x9e, 0xbd, 0x24, 0x8f, 0xbd, 0xd4, 0x05, 0xb7, 0xc1, 0x17, 0x0d, 0xdc, + 0xfa, 0xde, 0x00, 0x9b, 0xc7, 0x21, 0x24, 0x51, 0x56, 0xee, 0x67, 0x60, 0x67, 0xc6, 0x71, 0xec, + 0xc5, 0x18, 0xe1, 0x68, 0x2a, 0x51, 0x85, 0xa2, 0x92, 0xda, 0xdf, 0x95, 0x00, 0x37, 0xf3, 0x67, + 0xb5, 0xed, 0x80, 0xd7, 0xc1, 0x18, 0x12, 0x9a, 0x96, 0x5f, 0x71, 0x5f, 0xa9, 0xef, 0x3e, 0x32, + 0xdf, 0x07, 0x35, 0x3c, 0x65, 0xc1, 0xd8, 0xa3, 0xb3, 0xc8, 0xc7, 0x71, 0xb3, 0xac, 0xd8, 0x55, + 0x95, 0xed, 0x6b, 0x65, 0xb2, 0x7e, 0x34, 0x40, 0xc3, 0xc5, 0x84, 0xce, 0x31, 0x17, 0x59, 0x35, + 0x1c, 0xd4, 0x63, 0x6d, 0xf3, 0xb4, 0x44, 0xb2, 0x86, 0xea, 0xfe, 0x8e, 0x9d, 0x28, 0x61, 0xcb, + 0x21, 0xb3, 0xf5, 0x90, 0xd9, 0xc7, 0x8c, 0xd0, 0x23, 0x47, 0xaa, 0xf7, 0xd3, 0x1f, 0xdd, 0x8f, + 0xfe, 0x85, 0x7a, 0x32, 0xc0, 0xdd, 0x4a, 0x53, 0x7c, 0xa1, 0x32, 0xac, 0x28, 0x56, 0x5e, 0x56, + 0xcc, 0xfa, 0xd5, 0x00, 0xe6, 0x39, 0x45, 0xeb, 0x4b, 0xfd, 0xb7, 0xf2, 0x6d, 0xfc, 0x57, 0xf9, + 0xcc, 0xcf, 0x41, 0x2b, 0x69, 0xeb, 0x8c, 0xfa, 0x8c, 0x22, 0x42, 0x47, 0xb9, 0x58, 0xc9, 0x58, + 0xbc, 0x70, 0xdf, 0x53, 0x88, 0xf3, 0x14, 0x90, 0xaa, 0xc5, 0x2d, 0x0e, 0xcc, 0x5c, 0xc4, 0x35, + 0x38, 0x3c, 0x9f, 0x74, 0xe3, 0xf9, 0xa4, 0x3f, 0x18, 0xa0, 0xea, 0x62, 0x1f, 0x86, 0x90, 0x06, + 0x84, 0x8e, 0xcc, 0x37, 0x60, 0x93, 0xc7, 0x81, 0xb7, 0xbc, 0x9c, 0x35, 0x1e, 0x07, 0xdf, 0x66, + 0xfb, 0xf9, 0x06, 0x6c, 0x22, 0x2e, 0x0a, 0xa0, 0x64, 0xba, 0x6a, 0x88, 0x8b, 0x1c, 0x74, 0x08, + 0xca, 0x30, 0x12, 0x89, 0x58, 0x6b, 0x6f, 0xb0, 0x0c, 0xb5, 0xae, 0xc0, 0x76, 0x5a, 0xda, 0x3a, + 0x9a, 0x1e, 0x82, 0x5a, 0x9c, 0x33, 0x4a, 0xe5, 0x6c, 0xaf, 0xc8, 0x59, 0xa0, 0xed, 0x2e, 0x44, + 0x58, 0xe7, 0xa0, 0x79, 0x82, 0x05, 0x9b, 0x60, 0x4a, 0x6e, 0xf0, 0x70, 0x0c, 0x63, 0xcc, 0x0b, + 0xfb, 0xf8, 0x4a, 0xdf, 0x01, 0x7a, 0xf2, 0xbb, 0xe9, 0xc1, 0xe9, 0xb5, 0x39, 0x18, 0x9e, 0x9e, + 0xc9, 0xd8, 0x13, 0x7d, 0x55, 0xa4, 0x78, 0xeb, 0x17, 0x03, 0x6c, 0x0d, 0x86, 0xa7, 0x03, 0x72, + 0x39, 0x23, 0x68, 0x28, 0xcb, 0xf8, 0x1f, 0xa7, 0x99, 0x9f, 0x80, 0x4a, 0xd6, 0x08, 0x25, 0x80, + 0x5c, 0xc2, 0x65, 0x8e, 0x5f, 0xe9, 0xb6, 0xb8, 0xaf, 0xd3, 0x06, 0x99, 0x9f, 0x16, 0xaf, 0xde, + 0xb2, 0x8a, 0x6b, 0xad, 0xc4, 0x65, 0x32, 0x16, 0xae, 0x65, 0xeb, 0x12, 0x7c, 0x90, 0xd9, 0x93, + 0xae, 0x9c, 0x31, 0x55, 0x1b, 0xff, 0x66, 0x86, 0xe3, 0xeb, 0xac, 0x45, 0x7d, 0xd0, 0x08, 0x79, + 0xe4, 0x85, 0x8a, 0xa7, 0xa7, 0xce, 0x5c, 0x66, 0x97, 0x25, 0x5a, 0xec, 0x87, 0xbb, 0x15, 0xf2, + 0xa8, 0xf0, 0x6d, 0xdd, 0x1a, 0xa0, 0xad, 0x17, 0x2c, 0xcd, 0xb9, 0x98, 0x6b, 0x0a, 0xda, 0x84, + 0x12, 0x41, 0x60, 0x98, 0x8f, 0x63, 0x61, 0x99, 0x93, 0xf1, 0x58, 0x7b, 0xfc, 0x5a, 0xfa, 0xcc, + 0x8c, 0x6e, 0xbe, 0xe4, 0x47, 0x83, 0xbb, 0xc7, 0x8e, 0x71, 0xff, 0xd8, 0x31, 0xfe, 0x7c, 0xec, + 0x18, 0xb7, 0x4f, 0x9d, 0xd2, 0xfd, 0x53, 0xa7, 0xf4, 0xdb, 0x53, 0xa7, 0x74, 0xb1, 0x5f, 0x38, + 0x7d, 0xa8, 0x78, 0xee, 0x0e, 0xa0, 0xcf, 0x1d, 0xfd, 0x3e, 0xce, 0xf7, 0x0e, 0x9c, 0xef, 0xf2, + 0x57, 0x52, 0x65, 0xf3, 0x5f, 0xaa, 0x27, 0xf2, 0xe0, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4a, + 0x98, 0x04, 0x00, 0xec, 0x07, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { @@ -892,6 +1091,168 @@ func (m *RebalanceCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *DetokenizeSharesCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DetokenizeSharesCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DetokenizeSharesCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Deposit != nil { + { + size, err := m.Deposit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *LSMLiquidStake) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LSMLiquidStake) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LSMLiquidStake) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Validator != nil { + { + size, err := m.Validator.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.HostZone != nil { + { + size, err := m.HostZone.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Deposit != nil { + { + size, err := m.Deposit.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ValidatorSharesToTokensQueryCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ValidatorSharesToTokensQueryCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ValidatorSharesToTokensQueryCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LsmLiquidStake != nil { + { + size, err := m.LsmLiquidStake.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DelegatorSharesQueryCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DelegatorSharesQueryCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DelegatorSharesQueryCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.InitialValidatorDelegation.Size() + i -= size + if _, err := m.InitialValidatorDelegation.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func encodeVarintCallbacks(dAtA []byte, offset int, v uint64) int { offset -= sovCallbacks(v) base := offset @@ -1059,15 +1420,73 @@ func (m *RebalanceCallback) Size() (n int) { return n } -func sovCallbacks(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 +func (m *DetokenizeSharesCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Deposit != nil { + l = m.Deposit.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + return n } -func sozCallbacks(x uint64) (n int) { - return sovCallbacks(uint64((x << 1) ^ uint64((int64(x) >> 63)))) + +func (m *LSMLiquidStake) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Deposit != nil { + l = m.Deposit.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + if m.HostZone != nil { + l = m.HostZone.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + if m.Validator != nil { + l = m.Validator.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + return n } -func (m *SplitDelegation) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 + +func (m *ValidatorSharesToTokensQueryCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.LsmLiquidStake != nil { + l = m.LsmLiquidStake.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + return n +} + +func (m *DelegatorSharesQueryCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.InitialValidatorDelegation.Size() + n += 1 + l + sovCallbacks(uint64(l)) + return n +} + +func sovCallbacks(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozCallbacks(x uint64) (n int) { + return sovCallbacks(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *SplitDelegation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 for iNdEx < l { preIndex := iNdEx var wire uint64 @@ -2178,6 +2597,420 @@ func (m *RebalanceCallback) Unmarshal(dAtA []byte) error { } return nil } +func (m *DetokenizeSharesCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DetokenizeSharesCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DetokenizeSharesCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Deposit == nil { + m.Deposit = &types1.LSMTokenDeposit{} + } + if err := m.Deposit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *LSMLiquidStake) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LSMLiquidStake: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LSMLiquidStake: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Deposit == nil { + m.Deposit = &types1.LSMTokenDeposit{} + } + if err := m.Deposit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostZone", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.HostZone == nil { + m.HostZone = &HostZone{} + } + if err := m.HostZone.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Validator", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Validator == nil { + m.Validator = &Validator{} + } + if err := m.Validator.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ValidatorSharesToTokensQueryCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ValidatorSharesToTokensQueryCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ValidatorSharesToTokensQueryCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LsmLiquidStake", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.LsmLiquidStake == nil { + m.LsmLiquidStake = &LSMLiquidStake{} + } + if err := m.LsmLiquidStake.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DelegatorSharesQueryCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DelegatorSharesQueryCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DelegatorSharesQueryCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitialValidatorDelegation", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InitialValidatorDelegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipCallbacks(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/stakeibc/types/codec.go b/x/stakeibc/types/codec.go index 357b109963..857737d6ba 100644 --- a/x/stakeibc/types/codec.go +++ b/x/stakeibc/types/codec.go @@ -11,6 +11,7 @@ import ( func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgLiquidStake{}, "stakeibc/LiquidStake", nil) + cdc.RegisterConcrete(&MsgLSMLiquidStake{}, "stakeibc/LSMLiquidStake", nil) cdc.RegisterConcrete(&MsgRegisterHostZone{}, "stakeibc/RegisterHostZone", nil) cdc.RegisterConcrete(&MsgRedeemStake{}, "stakeibc/RedeemStake", nil) cdc.RegisterConcrete(&MsgClaimUndelegatedTokens{}, "stakeibc/ClaimUndelegatedTokens", nil) @@ -19,6 +20,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgChangeValidatorWeight{}, "stakeibc/ChangeValidatorWeight", nil) cdc.RegisterConcrete(&MsgDeleteValidator{}, "stakeibc/DeleteValidator", nil) cdc.RegisterConcrete(&AddValidatorsProposal{}, "stakeibc/AddValidatorsProposal", nil) + cdc.RegisterConcrete(&ToggleLSMProposal{}, "stakeibc/ToggleLSMProposal", nil) cdc.RegisterConcrete(&MsgRestoreInterchainAccount{}, "stakeibc/RestoreInterchainAccount", nil) cdc.RegisterConcrete(&MsgUpdateValidatorSharesExchRate{}, "stakeibc/UpdateValidatorSharesExchRate", nil) // this line is used by starport scaffolding # 2 @@ -41,6 +43,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations((*govtypes.Content)(nil), &AddValidatorsProposal{}, + &ToggleLSMProposal{}, ) // this line is used by starport scaffolding # 3 diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index 5d894cea2d..bf9f815aee 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -6,48 +6,54 @@ import errorsmod "cosmossdk.io/errors" // x/stakeibc module sentinel errors var ( - ErrInvalidVersion = errorsmod.Register(ModuleName, 1501, "invalid version") - ErrInvalidToken = errorsmod.Register(ModuleName, 1502, "invalid token denom") - ErrInvalidHostZone = errorsmod.Register(ModuleName, 1503, "host zone not registered") - ErrICAStake = errorsmod.Register(ModuleName, 1504, "ICA stake failed") - ErrEpochNotFound = errorsmod.Register(ModuleName, 1505, "epoch not found") - ErrRecordNotFound = errorsmod.Register(ModuleName, 1506, "record not found") - ErrInvalidAmount = errorsmod.Register(ModuleName, 1507, "invalid amount") - ErrValidatorAlreadyExists = errorsmod.Register(ModuleName, 1508, "validator already exists") - ErrNoValidatorWeights = errorsmod.Register(ModuleName, 1509, "no non-zero validator weights") - ErrValidatorNotFound = errorsmod.Register(ModuleName, 1510, "validator not found") - ErrWeightsNotDifferent = errorsmod.Register(ModuleName, 1511, "validator weights haven't changed") - ErrValidatorDelegationChg = errorsmod.Register(ModuleName, 1512, "can't change delegation on validator") - ErrAcctNotScopedForFunc = errorsmod.Register(ModuleName, 1513, "this account can't call this function") - ErrInsufficientFunds = errorsmod.Register(ModuleName, 1514, "balance is insufficient") - ErrInvalidUserRedemptionRecord = errorsmod.Register(ModuleName, 1515, "user redemption record error") - ErrRequiredFieldEmpty = errorsmod.Register(ModuleName, 1516, "required field is missing") - ErrInvalidNumValidator = errorsmod.Register(ModuleName, 1517, "invalid number of validators") - ErrValidatorNotRemoved = errorsmod.Register(ModuleName, 1518, "validator not removed") - ErrHostZoneNotFound = errorsmod.Register(ModuleName, 1519, "host zone not found") - ErrOutsideIcqWindow = errorsmod.Register(ModuleName, 1520, "outside time window that accepts icqs") - ErrParamNotFound = errorsmod.Register(ModuleName, 1521, "param not found") - ErrUnmarshalFailure = errorsmod.Register(ModuleName, 1522, "unable to unmarshal data structure") - ErrMarshalFailure = errorsmod.Register(ModuleName, 1523, "unable to marshal data structure") - ErrInvalidPacketCompletionTime = errorsmod.Register(ModuleName, 1524, "invalid packet completion time") - ErrIntCast = errorsmod.Register(ModuleName, 1525, "unable to cast to safe cast int") - ErrFeeAccountNotRegistered = errorsmod.Register(ModuleName, 1526, "fee account is not registered") - ErrRedemptionRateOutsideSafetyBounds = errorsmod.Register(ModuleName, 1527, "redemption rate outside safety bounds") - ErrTxMsgDataInvalid = errorsmod.Register(ModuleName, 1528, "TxMsgData invalid") - ErrFailedToRegisterHostZone = errorsmod.Register(ModuleName, 1529, "failed to register host zone") - ErrInvalidInterchainAccountAddress = errorsmod.Register(ModuleName, 1530, "invalid interchain account address") - ErrICAAccountNotFound = errorsmod.Register(ModuleName, 1531, "ICA acccount not found on host zone") - ErrICATxFailed = errorsmod.Register(ModuleName, 1532, "failed to submit ICA transaction") - ErrICQFailed = errorsmod.Register(ModuleName, 1533, "failed to submit ICQ") - ErrDivisionByZero = errorsmod.Register(ModuleName, 1534, "division by zero") - ErrSlashExceedsSafetyThreshold = errorsmod.Register(ModuleName, 1535, "slash is greater than safety threshold") - ErrInvalidEpoch = errorsmod.Register(ModuleName, 1536, "invalid epoch tracker") - ErrHostZoneICAAccountNotFound = errorsmod.Register(ModuleName, 1537, "host zone's ICA account not found") - ErrNoValidatorAmts = errorsmod.Register(ModuleName, 1538, "could not fetch validator amts") - ErrMaxNumValidators = errorsmod.Register(ModuleName, 1539, "max number of validators reached") - ErrUndelegationAmount = errorsmod.Register(ModuleName, 1540, "Undelegation amount is greater than stakedBal") - ErrRewardCollectorAccountNotFound = errorsmod.Register(ModuleName, 1541, "Reward Collector account not found") - ErrHaltedHostZone = errorsmod.Register(ModuleName, 1542, "Halted host zone found") - ErrInsufficientLiquidStake = errorsmod.Register(ModuleName, 1543, "Liquid staked amount is too small") - ErrStTokenNotFound = errorsmod.Register(ModuleName, 1544, "denom not found in stToken list") + ErrInvalidVersion = errorsmod.Register(ModuleName, 1501, "invalid version") + ErrInvalidToken = errorsmod.Register(ModuleName, 1502, "invalid token denom") + ErrInvalidHostZone = errorsmod.Register(ModuleName, 1503, "host zone not registered") + ErrICAStake = errorsmod.Register(ModuleName, 1504, "ICA stake failed") + ErrEpochNotFound = errorsmod.Register(ModuleName, 1505, "epoch not found") + ErrRecordNotFound = errorsmod.Register(ModuleName, 1506, "record not found") + ErrInvalidAmount = errorsmod.Register(ModuleName, 1507, "invalid amount") + ErrValidatorAlreadyExists = errorsmod.Register(ModuleName, 1508, "validator already exists") + ErrNoValidatorWeights = errorsmod.Register(ModuleName, 1509, "no non-zero validator weights") + ErrValidatorNotFound = errorsmod.Register(ModuleName, 1510, "validator not found") + ErrWeightsNotDifferent = errorsmod.Register(ModuleName, 1511, "validator weights haven't changed") + ErrValidatorDelegationChg = errorsmod.Register(ModuleName, 1512, "can't change delegation on validator") + ErrAcctNotScopedForFunc = errorsmod.Register(ModuleName, 1513, "this account can't call this function") + ErrInsufficientFunds = errorsmod.Register(ModuleName, 1514, "balance is insufficient") + ErrInvalidUserRedemptionRecord = errorsmod.Register(ModuleName, 1515, "user redemption record error") + ErrRequiredFieldEmpty = errorsmod.Register(ModuleName, 1516, "required field is missing") + ErrInvalidNumValidator = errorsmod.Register(ModuleName, 1517, "invalid number of validators") + ErrValidatorNotRemoved = errorsmod.Register(ModuleName, 1518, "validator not removed") + ErrHostZoneNotFound = errorsmod.Register(ModuleName, 1519, "host zone not found") + ErrOutsideIcqWindow = errorsmod.Register(ModuleName, 1520, "outside time window that accepts icqs") + ErrParamNotFound = errorsmod.Register(ModuleName, 1521, "param not found") + ErrUnmarshalFailure = errorsmod.Register(ModuleName, 1522, "unable to unmarshal data structure") + ErrMarshalFailure = errorsmod.Register(ModuleName, 1523, "unable to marshal data structure") + ErrInvalidPacketCompletionTime = errorsmod.Register(ModuleName, 1524, "invalid packet completion time") + ErrIntCast = errorsmod.Register(ModuleName, 1525, "unable to cast to safe cast int") + ErrFeeAccountNotRegistered = errorsmod.Register(ModuleName, 1526, "fee account is not registered") + ErrRedemptionRateOutsideSafetyBounds = errorsmod.Register(ModuleName, 1527, "redemption rate outside safety bounds") + ErrTxMsgDataInvalid = errorsmod.Register(ModuleName, 1528, "TxMsgData invalid") + ErrFailedToRegisterHostZone = errorsmod.Register(ModuleName, 1529, "failed to register host zone") + ErrInvalidInterchainAccountAddress = errorsmod.Register(ModuleName, 1530, "invalid interchain account address") + ErrICAAccountNotFound = errorsmod.Register(ModuleName, 1531, "ICA acccount not found on host zone") + ErrICATxFailed = errorsmod.Register(ModuleName, 1532, "failed to submit ICA transaction") + ErrICQFailed = errorsmod.Register(ModuleName, 1533, "failed to submit ICQ") + ErrDivisionByZero = errorsmod.Register(ModuleName, 1534, "division by zero") + ErrSlashExceedsSafetyThreshold = errorsmod.Register(ModuleName, 1535, "slash is greater than safety threshold") + ErrInvalidEpoch = errorsmod.Register(ModuleName, 1536, "invalid epoch tracker") + ErrHostZoneICAAccountNotFound = errorsmod.Register(ModuleName, 1537, "host zone's ICA account not found") + ErrNoValidatorAmts = errorsmod.Register(ModuleName, 1538, "could not fetch validator amts") + ErrMaxNumValidators = errorsmod.Register(ModuleName, 1539, "max number of validators reached") + ErrUndelegationAmount = errorsmod.Register(ModuleName, 1540, "Undelegation amount is greater than stakedBal") + ErrRewardCollectorAccountNotFound = errorsmod.Register(ModuleName, 1541, "Reward Collector account not found") + ErrHaltedHostZone = errorsmod.Register(ModuleName, 1542, "Halted host zone found") + ErrInsufficientLiquidStake = errorsmod.Register(ModuleName, 1543, "Liquid staked amount is too small") + ErrStTokenNotFound = errorsmod.Register(ModuleName, 1544, "denom not found in stToken list") + ErrInvalidLSMToken = errorsmod.Register(ModuleName, 1545, "Invalid LSM token") + ErrValidatorWasSlashed = errorsmod.Register(ModuleName, 1546, "Validator was slashed") + ErrValidatorSharesToTokensRateNotKnown = errorsmod.Register(ModuleName, 1547, "Validator sharesToTokens rate not known") + ErrInvalidValidatorDelegationUpdates = errorsmod.Register(ModuleName, 1548, "Invalid validator delegation updates") + ErrLSMLiquidStakeDisabledForHostZone = errorsmod.Register(ModuleName, 1549, "LSM liquid stake is disabled for host zone") + ErrUnableToRemoveValidator = errorsmod.Register(ModuleName, 1550, "Unable to remove validator") ) diff --git a/x/stakeibc/types/events.go b/x/stakeibc/types/events.go index 264a6b3051..dd5bccb4af 100644 --- a/x/stakeibc/types/events.go +++ b/x/stakeibc/types/events.go @@ -1,9 +1,9 @@ +// #nosec G101 package types // Events const ( EventTypeTimeout = "timeout" - // this line is used by starport scaffolding # ibc/packet/event AttributeKeyAckSuccess = "success" AttributeKeyAck = "acknowledgement" @@ -11,10 +11,14 @@ const ( ) const ( - EventTypeRegisterZone = "register_zone" - EventTypeRedemptionRequest = "request_redemption" - EventTypeLiquidStakeRequest = "liquid_stake" - EventTypeHostZoneHalt = "halt_zone" + EventTypeRegisterZone = "register_zone" + EventTypeRedemptionRequest = "request_redemption" + EventTypeLiquidStakeRequest = "liquid_stake" + EventTypeLSMLiquidStakeRequest = "lsm_liquid_stake" + EventTypeHostZoneHalt = "halt_zone" + EventTypeValidatorSharesToTokensRateChange = "validator_shares_to_tokens_rate_change" + EventTypeValidatorSlash = "validator_slash" + EventTypeUndelegation = "undelegation" AttributeKeyHostZone = "host_zone" AttributeKeyConnectionId = "connection_id" @@ -26,11 +30,27 @@ const ( AttributeKeyRedemptionRate = "redemption_rate" - AttributeKeyLiquidStaker = "liquid_staker" - AttributeKeyNativeBaseDenom = "native_base_denom" - AttributeKeyNativeIBCDenom = "native_ibc_denom" - AttributeKeyNativeAmount = "native_amount" - AttributeKeyStTokenAmount = "sttoken_amount" + AttributeKeyLiquidStaker = "liquid_staker" + AttributeKeyNativeBaseDenom = "native_base_denom" + AttributeKeyNativeIBCDenom = "native_ibc_denom" + AttributeKeyTotalUnbondAmount = "total_unbond_amount" + AttributeKeyLSMTokenBaseDenom = "lsm_token_base_denom" + AttributeKeyNativeAmount = "native_amount" + AttributeKeyStTokenAmount = "sttoken_amount" + AttributeKeyValidator = "validator" + AttributeKeyTransactionStatus = "transaction_status" + AttributeKeyLSMLiquidStakeTxId = "lsm_liquid_stake_tx_id" - AttributeValueCategory = ModuleName + AttributeKeyPreviousSharesToTokensRate = "previous_shares_to_tokens_rate" + AttributeKeyCurrentSharesToTokensRate = "current_shares_to_tokens_rate" + AttributeKeySlashPercent = "slash_percent" + AttributeKeySlashAmount = "slash_amount" + AttributeKeyCurrentDelegation = "current_delegation" + + AttributeKeyError = "error" + + AttributeValueCategory = ModuleName + AttributeValueTransactionSucceeded = "success" + AttributeValueTransactionPending = "pending" + AttributeValueTransactionFailed = "failed" ) diff --git a/x/stakeibc/types/gov.go b/x/stakeibc/types/gov.go index 3f31cc33ae..77e90cb6af 100644 --- a/x/stakeibc/types/gov.go +++ b/x/stakeibc/types/gov.go @@ -9,6 +9,9 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ) +// --------------------------- +// AddValidatorProposal +// --------------------------- const ( ProposalTypeAddValidators = "AddValidators" ) @@ -83,3 +86,56 @@ func (v *Validator) Equal(other *Validator) bool { } return true } + +// --------------------------- +// ToggleLSMProposal +// --------------------------- + +const ( + ProposalTypeToggleLSMProposal = "ToggleLSMProposal" +) + +func init() { + govtypes.RegisterProposalType(ProposalTypeToggleLSMProposal) +} + +var ( + _ govtypes.Content = &ToggleLSMProposal{} +) + +func NewToggleLSMProposal(title, description, hostZone string, enabled bool) govtypes.Content { + return &ToggleLSMProposal{ + Title: title, + Description: description, + HostZone: hostZone, + Enabled: enabled, + } +} + +func (p *ToggleLSMProposal) GetTitle() string { return p.Title } + +func (p *ToggleLSMProposal) GetDescription() string { return p.Description } + +func (p *ToggleLSMProposal) ProposalRoute() string { return RouterKey } + +func (p *ToggleLSMProposal) ProposalType() string { + return ProposalTypeAddValidators +} + +func (p *ToggleLSMProposal) ValidateBasic() error { + err := govtypes.ValidateAbstract(p) + if err != nil { + return err + } + + return nil +} + +func (p ToggleLSMProposal) String() string { + return fmt.Sprintf(`Add Validators Proposal: + Title: %s + Description: %s + HostZone: %s + Enabled: %v + `, p.Title, p.Description, p.HostZone, p.Enabled) +} diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index 7082388af9..cc7c8d82fe 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -28,7 +28,7 @@ type AddValidatorsProposal struct { Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` HostZone string `protobuf:"bytes,3,opt,name=host_zone,json=hostZone,proto3" json:"host_zone,omitempty"` Validators []*Validator `protobuf:"bytes,4,rep,name=validators,proto3" json:"validators,omitempty"` - Deposit string `protobuf:"bytes,6,opt,name=deposit,proto3" json:"deposit,omitempty" yaml:"deposit"` + Deposit string `protobuf:"bytes,5,opt,name=deposit,proto3" json:"deposit,omitempty" yaml:"deposit"` } func (m *AddValidatorsProposal) Reset() { *m = AddValidatorsProposal{} } @@ -63,14 +63,55 @@ func (m *AddValidatorsProposal) XXX_DiscardUnknown() { var xxx_messageInfo_AddValidatorsProposal proto.InternalMessageInfo +type ToggleLSMProposal struct { + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + HostZone string `protobuf:"bytes,3,opt,name=host_zone,json=hostZone,proto3" json:"host_zone,omitempty"` + Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` + Deposit string `protobuf:"bytes,5,opt,name=deposit,proto3" json:"deposit,omitempty" yaml:"deposit"` +} + +func (m *ToggleLSMProposal) Reset() { *m = ToggleLSMProposal{} } +func (*ToggleLSMProposal) ProtoMessage() {} +func (*ToggleLSMProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_8204317b384c5680, []int{1} +} +func (m *ToggleLSMProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ToggleLSMProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ToggleLSMProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ToggleLSMProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_ToggleLSMProposal.Merge(m, src) +} +func (m *ToggleLSMProposal) XXX_Size() int { + return m.Size() +} +func (m *ToggleLSMProposal) XXX_DiscardUnknown() { + xxx_messageInfo_ToggleLSMProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_ToggleLSMProposal proto.InternalMessageInfo + func init() { proto.RegisterType((*AddValidatorsProposal)(nil), "stride.stakeibc.AddValidatorsProposal") + proto.RegisterType((*ToggleLSMProposal)(nil), "stride.stakeibc.ToggleLSMProposal") } func init() { proto.RegisterFile("stride/stakeibc/gov.proto", fileDescriptor_8204317b384c5680) } var fileDescriptor_8204317b384c5680 = []byte{ - // 311 bytes of a gzipped FileDescriptorProto + // 349 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2c, 0x2e, 0x29, 0xca, 0x4c, 0x49, 0xd5, 0x2f, 0x2e, 0x49, 0xcc, 0x4e, 0xcd, 0x4c, 0x4a, 0xd6, 0x4f, 0xcf, 0x2f, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x87, 0x48, 0xe9, 0xc1, 0xa4, 0xa4, 0x44, 0xd2, 0xf3, @@ -83,14 +124,16 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x82, 0x19, 0x2c, 0xcf, 0x01, 0x12, 0x88, 0xca, 0xcf, 0x4b, 0x15, 0xb2, 0xe2, 0xe2, 0x82, 0xbb, 0xa0, 0x58, 0x82, 0x45, 0x81, 0x59, 0x83, 0xdb, 0x48, 0x4a, 0x0f, 0xcd, 0x2f, 0x7a, 0x70, 0xd7, 0x04, 0x21, 0xa9, 0x16, 0xd2, 0xe1, 0x62, 0x4f, 0x49, 0x2d, 0xc8, 0x2f, 0xce, 0x2c, 0x91, 0x60, - 0x03, 0x19, 0xeb, 0x24, 0xf4, 0xe9, 0x9e, 0x3c, 0x5f, 0x65, 0x62, 0x6e, 0x8e, 0x95, 0x12, 0x54, + 0x05, 0x19, 0xeb, 0x24, 0xf4, 0xe9, 0x9e, 0x3c, 0x5f, 0x65, 0x62, 0x6e, 0x8e, 0x95, 0x12, 0x54, 0x42, 0x29, 0x08, 0xa6, 0xc4, 0x8a, 0xa7, 0x63, 0x81, 0x3c, 0xc3, 0x8c, 0x05, 0xf2, 0x0c, 0x2f, - 0x16, 0xc8, 0x33, 0x3a, 0xf9, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, - 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, - 0x51, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0xd8, 0x1d, 0xba, - 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0xd0, 0x80, 0x2b, 0x33, 0x34, 0xd6, 0xaf, 0x40, 0x04, 0x5f, 0x49, - 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0x38, 0xec, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9e, - 0xa1, 0x73, 0x28, 0xa0, 0x01, 0x00, 0x00, + 0x16, 0xc8, 0x33, 0x2a, 0xed, 0x63, 0xe4, 0x12, 0x0c, 0xc9, 0x4f, 0x4f, 0xcf, 0x49, 0xf5, 0x09, + 0xf6, 0xa5, 0xad, 0x17, 0x25, 0xb8, 0xd8, 0x53, 0xf3, 0x12, 0x93, 0x72, 0x52, 0x53, 0x24, 0x58, + 0x14, 0x18, 0x35, 0x38, 0x82, 0x60, 0x5c, 0x4a, 0x3c, 0xe0, 0xe4, 0x73, 0xe2, 0x91, 0x1c, 0xe3, + 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, + 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x46, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, + 0xb9, 0xfa, 0xc1, 0xe0, 0x80, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xc6, 0x7c, 0x99, 0xa1, + 0xb1, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, + 0x08, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x05, 0x0a, 0xb7, 0x61, 0x02, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { @@ -134,6 +177,42 @@ func (this *AddValidatorsProposal) Equal(that interface{}) bool { } return true } +func (this *ToggleLSMProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ToggleLSMProposal) + if !ok { + that2, ok := that.(ToggleLSMProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Title != that1.Title { + return false + } + if this.Description != that1.Description { + return false + } + if this.HostZone != that1.HostZone { + return false + } + if this.Enabled != that1.Enabled { + return false + } + if this.Deposit != that1.Deposit { + return false + } + return true +} func (m *AddValidatorsProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -159,7 +238,7 @@ func (m *AddValidatorsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Deposit) i = encodeVarintGov(dAtA, i, uint64(len(m.Deposit))) i-- - dAtA[i] = 0x32 + dAtA[i] = 0x2a } if len(m.Validators) > 0 { for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { @@ -199,6 +278,67 @@ func (m *AddValidatorsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ToggleLSMProposal) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ToggleLSMProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ToggleLSMProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Deposit) > 0 { + i -= len(m.Deposit) + copy(dAtA[i:], m.Deposit) + i = encodeVarintGov(dAtA, i, uint64(len(m.Deposit))) + i-- + dAtA[i] = 0x2a + } + if m.Enabled { + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.HostZone) > 0 { + i -= len(m.HostZone) + copy(dAtA[i:], m.HostZone) + i = encodeVarintGov(dAtA, i, uint64(len(m.HostZone))) + i-- + dAtA[i] = 0x1a + } + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintGov(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintGov(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintGov(dAtA []byte, offset int, v uint64) int { offset -= sovGov(v) base := offset @@ -241,6 +381,34 @@ func (m *AddValidatorsProposal) Size() (n int) { return n } +func (m *ToggleLSMProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.HostZone) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + if m.Enabled { + n += 2 + } + l = len(m.Deposit) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + return n +} + func sovGov(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -406,7 +574,205 @@ func (m *AddValidatorsProposal) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 6: + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Deposit = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGov(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGov + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ToggleLSMProposal) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ToggleLSMProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ToggleLSMProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HostZone", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + 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 ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HostZone = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Deposit", wireType) } diff --git a/x/stakeibc/types/host_zone.go b/x/stakeibc/types/host_zone.go new file mode 100644 index 0000000000..a3efe8e1d0 --- /dev/null +++ b/x/stakeibc/types/host_zone.go @@ -0,0 +1,15 @@ +package types + +const ( + MaxUnbondingEntries = 7 +) + +// Per an SDK constraint, we can issue no more than 7 undelegation messages +// in a given unbonding period +// The unbonding period dictates the cadence (in number of days) with which we submit +// undelegation messages, such that the 7 messages are spaced out throughout the period +// We calculate this by dividing the period by 7 and then adding 1 as a buffer +// Ex: If our unbonding period is 21 days, we issue an undelegation every 4th day +func (h HostZone) GetUnbondingFrequency() uint64 { + return (h.UnbondingPeriod / MaxUnbondingEntries) + 1 +} diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index 38fc188967..15c5e8131b 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -25,34 +25,29 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -// next id: 22 type HostZone struct { - ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` - Bech32Prefix string `protobuf:"bytes,17,opt,name=bech32prefix,proto3" json:"bech32prefix,omitempty"` - TransferChannelId string `protobuf:"bytes,12,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty"` - Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` - BlacklistedValidators []*Validator `protobuf:"bytes,4,rep,name=blacklisted_validators,json=blacklistedValidators,proto3" json:"blacklisted_validators,omitempty"` - WithdrawalAccount *ICAAccount `protobuf:"bytes,5,opt,name=withdrawal_account,json=withdrawalAccount,proto3" json:"withdrawal_account,omitempty"` - FeeAccount *ICAAccount `protobuf:"bytes,6,opt,name=fee_account,json=feeAccount,proto3" json:"fee_account,omitempty"` - DelegationAccount *ICAAccount `protobuf:"bytes,7,opt,name=delegation_account,json=delegationAccount,proto3" json:"delegation_account,omitempty"` - RedemptionAccount *ICAAccount `protobuf:"bytes,16,opt,name=redemption_account,json=redemptionAccount,proto3" json:"redemption_account,omitempty"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Bech32Prefix string `protobuf:"bytes,17,opt,name=bech32prefix,proto3" json:"bech32prefix,omitempty"` + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + TransferChannelId string `protobuf:"bytes,12,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty"` // ibc denom on stride IbcDenom string `protobuf:"bytes,8,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty"` // native denom on host zone - HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` - // TODO(TEST-68): Should we make this an array and store the last n redemption - // rates then calculate a TWARR? - LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` - RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` - // stores how many days we should wait before issuing unbondings - UnbondingFrequency uint64 `protobuf:"varint,14,opt,name=unbonding_frequency,json=unbondingFrequency,proto3" json:"unbonding_frequency,omitempty"` - // TODO(TEST-101) int to dec - StakedBal github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=staked_bal,json=stakedBal,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"staked_bal"` - Address string `protobuf:"bytes,18,opt,name=address,proto3" json:"address,omitempty" yaml:"address"` - Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` - MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` - MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` + UnbondingPeriod uint64 `protobuf:"varint,26,opt,name=unbonding_period,json=unbondingPeriod,proto3" json:"unbonding_period,omitempty"` + Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` + DepositAddress string `protobuf:"bytes,18,opt,name=deposit_address,json=depositAddress,proto3" json:"deposit_address,omitempty"` + WithdrawalIcaAddress string `protobuf:"bytes,22,opt,name=withdrawal_ica_address,json=withdrawalIcaAddress,proto3" json:"withdrawal_ica_address,omitempty"` + FeeIcaAddress string `protobuf:"bytes,23,opt,name=fee_ica_address,json=feeIcaAddress,proto3" json:"fee_ica_address,omitempty"` + DelegationIcaAddress string `protobuf:"bytes,24,opt,name=delegation_ica_address,json=delegationIcaAddress,proto3" json:"delegation_ica_address,omitempty"` + RedemptionIcaAddress string `protobuf:"bytes,25,opt,name=redemption_ica_address,json=redemptionIcaAddress,proto3" json:"redemption_ica_address,omitempty"` + TotalDelegations github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=total_delegations,json=totalDelegations,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_delegations"` + LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` + RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` + MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` + MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + LsmLiquidStakeEnabled bool `protobuf:"varint,27,opt,name=lsm_liquid_stake_enabled,json=lsmLiquidStakeEnabled,proto3" json:"lsm_liquid_stake_enabled,omitempty"` + Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` } func (m *HostZone) Reset() { *m = HostZone{} } @@ -95,16 +90,16 @@ func (m *HostZone) GetChainId() string { return "" } -func (m *HostZone) GetConnectionId() string { +func (m *HostZone) GetBech32Prefix() string { if m != nil { - return m.ConnectionId + return m.Bech32Prefix } return "" } -func (m *HostZone) GetBech32Prefix() string { +func (m *HostZone) GetConnectionId() string { if m != nil { - return m.Bech32Prefix + return m.ConnectionId } return "" } @@ -116,74 +111,74 @@ func (m *HostZone) GetTransferChannelId() string { return "" } -func (m *HostZone) GetValidators() []*Validator { +func (m *HostZone) GetIbcDenom() string { if m != nil { - return m.Validators + return m.IbcDenom } - return nil + return "" } -func (m *HostZone) GetBlacklistedValidators() []*Validator { +func (m *HostZone) GetHostDenom() string { if m != nil { - return m.BlacklistedValidators + return m.HostDenom } - return nil + return "" } -func (m *HostZone) GetWithdrawalAccount() *ICAAccount { +func (m *HostZone) GetUnbondingPeriod() uint64 { if m != nil { - return m.WithdrawalAccount + return m.UnbondingPeriod } - return nil + return 0 } -func (m *HostZone) GetFeeAccount() *ICAAccount { +func (m *HostZone) GetValidators() []*Validator { if m != nil { - return m.FeeAccount + return m.Validators } return nil } -func (m *HostZone) GetDelegationAccount() *ICAAccount { +func (m *HostZone) GetDepositAddress() string { if m != nil { - return m.DelegationAccount + return m.DepositAddress } - return nil + return "" } -func (m *HostZone) GetRedemptionAccount() *ICAAccount { +func (m *HostZone) GetWithdrawalIcaAddress() string { if m != nil { - return m.RedemptionAccount + return m.WithdrawalIcaAddress } - return nil + return "" } -func (m *HostZone) GetIbcDenom() string { +func (m *HostZone) GetFeeIcaAddress() string { if m != nil { - return m.IbcDenom + return m.FeeIcaAddress } return "" } -func (m *HostZone) GetHostDenom() string { +func (m *HostZone) GetDelegationIcaAddress() string { if m != nil { - return m.HostDenom + return m.DelegationIcaAddress } return "" } -func (m *HostZone) GetUnbondingFrequency() uint64 { +func (m *HostZone) GetRedemptionIcaAddress() string { if m != nil { - return m.UnbondingFrequency + return m.RedemptionIcaAddress } - return 0 + return "" } -func (m *HostZone) GetAddress() string { +func (m *HostZone) GetLsmLiquidStakeEnabled() bool { if m != nil { - return m.Address + return m.LsmLiquidStakeEnabled } - return "" + return false } func (m *HostZone) GetHalted() bool { @@ -200,49 +195,51 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 671 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcd, 0x4e, 0xdb, 0x4e, - 0x14, 0xc5, 0xe3, 0x3f, 0xfc, 0x21, 0x99, 0xf0, 0x95, 0x09, 0x20, 0x03, 0x6a, 0x92, 0xa6, 0x52, - 0x95, 0x45, 0x71, 0xd4, 0xb0, 0x43, 0x6c, 0xf8, 0x50, 0xd5, 0x20, 0xba, 0xa8, 0x2b, 0xb1, 0x60, - 0x63, 0x8d, 0x67, 0x6e, 0x92, 0x11, 0xce, 0x4c, 0xea, 0x99, 0x40, 0xe8, 0x23, 0x74, 0xd5, 0x87, - 0xe9, 0x43, 0xb0, 0x44, 0x5d, 0x55, 0x5d, 0xa0, 0x0a, 0xde, 0xa0, 0x4f, 0x50, 0x65, 0x6c, 0x27, - 0x26, 0x59, 0x40, 0x25, 0x56, 0xf6, 0xdc, 0x73, 0xee, 0xef, 0x8c, 0xee, 0xd8, 0x83, 0xca, 0x4a, - 0x87, 0x9c, 0x41, 0x5d, 0x69, 0x72, 0x0e, 0xdc, 0xa7, 0xf5, 0x8e, 0x54, 0xda, 0xfb, 0x22, 0x05, - 0x38, 0xbd, 0x50, 0x6a, 0x89, 0x97, 0x23, 0x83, 0x93, 0x18, 0x36, 0xa7, 0x3a, 0x2e, 0x48, 0xc0, - 0x19, 0xd1, 0x32, 0x8c, 0x3a, 0x36, 0x5f, 0x4e, 0x1a, 0x38, 0x25, 0x1e, 0xa1, 0x54, 0xf6, 0x85, - 0x8e, 0x2d, 0xab, 0x6d, 0xd9, 0x96, 0xe6, 0xb5, 0x3e, 0x7c, 0x8b, 0xab, 0x1b, 0x54, 0xaa, 0xae, - 0x54, 0x5e, 0x24, 0x44, 0x8b, 0x48, 0xaa, 0x7e, 0x45, 0x28, 0xfb, 0x5e, 0x2a, 0x7d, 0x26, 0x05, - 0xe0, 0x0d, 0x94, 0xa5, 0x1d, 0xc2, 0x85, 0xc7, 0x99, 0x6d, 0x55, 0xac, 0x5a, 0xce, 0x9d, 0x37, - 0xeb, 0x26, 0xc3, 0xaf, 0xd0, 0x22, 0x95, 0x42, 0x00, 0xd5, 0x5c, 0x1a, 0xfd, 0x3f, 0xa3, 0x2f, - 0x8c, 0x8b, 0x4d, 0x86, 0xab, 0x68, 0xc1, 0x07, 0xda, 0xd9, 0x69, 0xf4, 0x42, 0x68, 0xf1, 0x81, - 0x5d, 0x88, 0x3c, 0xe9, 0x1a, 0x76, 0x50, 0x51, 0x87, 0x44, 0xa8, 0x16, 0x84, 0x1e, 0xed, 0x10, - 0x21, 0x20, 0x18, 0xe2, 0x16, 0x8c, 0xb5, 0x90, 0x48, 0x87, 0x91, 0xd2, 0x64, 0x78, 0x17, 0xa1, - 0xd1, 0x1c, 0x94, 0x3d, 0x53, 0x99, 0xa9, 0xe5, 0x1b, 0x9b, 0xce, 0xc4, 0xec, 0x9c, 0xd3, 0xc4, - 0xe2, 0xa6, 0xdc, 0xf8, 0x23, 0x5a, 0xf7, 0x03, 0x42, 0xcf, 0x03, 0xae, 0x34, 0x30, 0x2f, 0xc5, - 0x99, 0x7d, 0x94, 0xb3, 0x96, 0xea, 0x3c, 0x1d, 0x23, 0x8f, 0x11, 0xbe, 0xe4, 0xba, 0xc3, 0x42, - 0x72, 0x49, 0x82, 0x64, 0xf8, 0xf6, 0xff, 0x15, 0xab, 0x96, 0x6f, 0x6c, 0x4d, 0xe1, 0x9a, 0x87, - 0xfb, 0xfb, 0x91, 0xc5, 0x2d, 0x8c, 0xdb, 0xe2, 0x12, 0xde, 0x43, 0xf9, 0x16, 0xc0, 0x08, 0x32, - 0xf7, 0x38, 0x04, 0xb5, 0x00, 0x92, 0xee, 0x63, 0x84, 0x19, 0x04, 0xd0, 0x26, 0xe6, 0x44, 0x12, - 0xc8, 0xfc, 0x13, 0x76, 0x32, 0x6e, 0x4b, 0xb1, 0x42, 0x60, 0xd0, 0xed, 0x3d, 0x60, 0xad, 0x3c, - 0x81, 0x35, 0x6e, 0x4b, 0x58, 0x5b, 0x28, 0xc7, 0x7d, 0xea, 0x31, 0x10, 0xb2, 0x6b, 0x67, 0xcd, - 0xb1, 0x66, 0xb9, 0x4f, 0x8f, 0x86, 0x6b, 0xfc, 0x02, 0x21, 0xf3, 0x1f, 0x44, 0x6a, 0xce, 0xa8, - 0xb9, 0x61, 0x25, 0x92, 0x05, 0x5a, 0x0d, 0x88, 0xd2, 0x5e, 0x6a, 0x33, 0x21, 0xd1, 0x60, 0xa3, - 0xa1, 0xf1, 0x60, 0xef, 0xfa, 0xb6, 0x9c, 0xf9, 0x75, 0x5b, 0x7e, 0xdd, 0xe6, 0xba, 0xd3, 0xf7, - 0x1d, 0x2a, 0xbb, 0xf1, 0xc7, 0x1c, 0x3f, 0xb6, 0x15, 0x3b, 0xaf, 0xeb, 0xab, 0x1e, 0x28, 0xe7, - 0x08, 0xe8, 0x8f, 0xef, 0xdb, 0x28, 0xfe, 0xd6, 0x8f, 0x80, 0xba, 0x78, 0x48, 0x76, 0x47, 0x60, - 0x97, 0x68, 0xc0, 0x80, 0x96, 0x27, 0xa3, 0xf2, 0xcf, 0x10, 0xb5, 0x14, 0x3e, 0x8c, 0xa9, 0xa3, - 0x62, 0x5f, 0xf8, 0x52, 0x30, 0x2e, 0xda, 0x5e, 0x2b, 0x84, 0xcf, 0x7d, 0x10, 0xf4, 0xca, 0x5e, - 0xaa, 0x58, 0xb5, 0x59, 0x17, 0x8f, 0xa4, 0x77, 0x89, 0x82, 0x3f, 0x20, 0x64, 0xa6, 0xcd, 0x3c, - 0x9f, 0x04, 0xf6, 0xa2, 0xd9, 0x92, 0xf3, 0x0f, 0x5b, 0x6a, 0x0a, 0xed, 0xe6, 0x22, 0xc2, 0x01, - 0x09, 0xf0, 0x1b, 0x34, 0x4f, 0x18, 0x0b, 0x41, 0x29, 0x1b, 0x1b, 0x16, 0xfe, 0x73, 0x5b, 0x5e, - 0xba, 0x22, 0xdd, 0x60, 0xb7, 0x1a, 0x0b, 0x55, 0x37, 0xb1, 0xe0, 0x75, 0x34, 0xd7, 0x21, 0x81, - 0x06, 0x66, 0x17, 0x2b, 0x56, 0x2d, 0xeb, 0xc6, 0x2b, 0x1c, 0xa0, 0x62, 0x97, 0x8b, 0xa9, 0xb3, - 0x59, 0x7d, 0x86, 0x81, 0x15, 0xba, 0x5c, 0x4c, 0x1c, 0xcd, 0x30, 0x8d, 0x0c, 0xa6, 0xd2, 0xd6, - 0x9e, 0x25, 0x8d, 0x0c, 0x1e, 0xa6, 0x1d, 0xcf, 0x66, 0x97, 0x57, 0x56, 0x0e, 0x4e, 0xae, 0xef, - 0x4a, 0xd6, 0xcd, 0x5d, 0xc9, 0xfa, 0x7d, 0x57, 0xb2, 0xbe, 0xdd, 0x97, 0x32, 0x37, 0xf7, 0xa5, - 0xcc, 0xcf, 0xfb, 0x52, 0xe6, 0xac, 0x91, 0x0a, 0xfa, 0x64, 0x7e, 0x87, 0xed, 0x13, 0xe2, 0xab, - 0x7a, 0x7c, 0x23, 0x5f, 0xbc, 0xdd, 0xa9, 0x0f, 0xc6, 0xf7, 0xb2, 0x09, 0xf6, 0xe7, 0xcc, 0x0d, - 0xbb, 0xf3, 0x37, 0x00, 0x00, 0xff, 0xff, 0x99, 0x41, 0x48, 0x70, 0x0a, 0x06, 0x00, 0x00, + // 702 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0x4f, 0x4f, 0x22, 0x49, + 0x18, 0xc6, 0x61, 0x6d, 0xb1, 0x29, 0xff, 0xd0, 0x94, 0xc8, 0xb6, 0x98, 0x45, 0xe2, 0x26, 0x1b, + 0xf6, 0x40, 0x93, 0xd5, 0xc3, 0x26, 0x9b, 0x3d, 0xac, 0x2e, 0x9b, 0x2c, 0xc4, 0x98, 0x49, 0x9b, + 0xcc, 0xc1, 0x39, 0x74, 0xaa, 0xbb, 0x5e, 0xa0, 0x62, 0x77, 0x15, 0xd3, 0x55, 0x2a, 0x33, 0x9f, + 0x62, 0x3e, 0x8c, 0x5f, 0x60, 0x6e, 0x1e, 0x8d, 0xa7, 0xc9, 0x1c, 0xcc, 0x44, 0xbf, 0xc8, 0x84, + 0xea, 0xe6, 0x9f, 0x1c, 0xc8, 0x24, 0x9e, 0xa8, 0x7a, 0x9f, 0xe7, 0xfd, 0x3d, 0x55, 0x05, 0xbc, + 0x68, 0x5f, 0xaa, 0x98, 0x51, 0x68, 0x4a, 0x45, 0x2e, 0x81, 0xf9, 0x41, 0xb3, 0x2f, 0xa4, 0xf2, + 0x3e, 0x0a, 0x0e, 0xce, 0x20, 0x16, 0x4a, 0xe0, 0x42, 0x62, 0x70, 0xc6, 0x86, 0xca, 0x42, 0xc7, + 0x35, 0x09, 0x19, 0x25, 0x4a, 0xc4, 0x49, 0x47, 0xa5, 0xd4, 0x13, 0x3d, 0xa1, 0x97, 0xcd, 0xd1, + 0x2a, 0xad, 0xee, 0x06, 0x42, 0x46, 0x42, 0x7a, 0x89, 0x90, 0x6c, 0x12, 0xe9, 0xe0, 0x33, 0x42, + 0xe6, 0xff, 0x42, 0xaa, 0x0b, 0xc1, 0x01, 0xef, 0x22, 0x33, 0xe8, 0x13, 0xc6, 0x3d, 0x46, 0xed, + 0x6c, 0x2d, 0x5b, 0xcf, 0xbb, 0x6b, 0x7a, 0xdf, 0xa6, 0xf8, 0x00, 0x6d, 0xf8, 0x10, 0xf4, 0x8f, + 0x0e, 0x07, 0x31, 0x74, 0xd9, 0xd0, 0x2e, 0x6a, 0x79, 0xae, 0x86, 0x7f, 0x45, 0x9b, 0x81, 0xe0, + 0x1c, 0x02, 0xc5, 0x84, 0x66, 0xfc, 0x94, 0x98, 0xa6, 0xc5, 0x36, 0xc5, 0x0e, 0xda, 0x56, 0x31, + 0xe1, 0xb2, 0x0b, 0xb1, 0x17, 0xf4, 0x09, 0xe7, 0x10, 0x8e, 0xac, 0x1b, 0xda, 0x5a, 0x1c, 0x4b, + 0xff, 0x26, 0x4a, 0x9b, 0xe2, 0x3d, 0x94, 0x67, 0x7e, 0xe0, 0x51, 0xe0, 0x22, 0xb2, 0x4d, 0xed, + 0x32, 0x99, 0x1f, 0xb4, 0x46, 0x7b, 0xfc, 0x0b, 0x42, 0xfa, 0xcd, 0x12, 0x35, 0xaf, 0xd5, 0xfc, + 0xa8, 0x92, 0xc8, 0xbf, 0x23, 0xeb, 0x8a, 0xfb, 0x82, 0x53, 0xc6, 0x7b, 0xde, 0x00, 0x62, 0x26, + 0xa8, 0x5d, 0xa9, 0x65, 0xeb, 0x86, 0x5b, 0x98, 0xd4, 0xdf, 0xe8, 0x32, 0xfe, 0x0b, 0xa1, 0xc9, + 0x5b, 0x4a, 0x7b, 0xa5, 0xb6, 0x52, 0x5f, 0x3f, 0xac, 0x38, 0x2f, 0xde, 0xdf, 0x79, 0x3b, 0xb6, + 0xb8, 0x33, 0x6e, 0x7c, 0x8c, 0x0a, 0x14, 0x06, 0x42, 0x32, 0xe5, 0x11, 0x4a, 0x63, 0x90, 0xd2, + 0xc6, 0xa3, 0xa3, 0x9c, 0xd8, 0x0f, 0xb7, 0x8d, 0x52, 0xfa, 0xdc, 0xc7, 0x89, 0x72, 0xae, 0x62, + 0xc6, 0x7b, 0xee, 0x56, 0xda, 0x90, 0x56, 0xf1, 0x19, 0x2a, 0xdf, 0x30, 0xd5, 0xa7, 0x31, 0xb9, + 0x21, 0xa1, 0xc7, 0x02, 0x32, 0x21, 0x95, 0x97, 0x90, 0x4a, 0xd3, 0xbe, 0x76, 0x40, 0xc6, 0xbc, + 0x7f, 0x50, 0xa1, 0x0b, 0x30, 0x07, 0xfa, 0x79, 0x09, 0x68, 0xb3, 0x0b, 0x30, 0x43, 0x38, 0x43, + 0x65, 0x0a, 0x21, 0xf4, 0x48, 0xf2, 0x65, 0xce, 0x80, 0xec, 0x65, 0x27, 0x9a, 0xf6, 0xcd, 0xf3, + 0x62, 0xa0, 0x10, 0x0d, 0x16, 0x78, 0xbb, 0xcb, 0x78, 0xd3, 0xbe, 0x19, 0xde, 0x3b, 0x54, 0x54, + 0x42, 0x91, 0xd0, 0x9b, 0xa6, 0x49, 0x7b, 0x53, 0xa3, 0x9c, 0xbb, 0xc7, 0xfd, 0xcc, 0xd7, 0xc7, + 0xfd, 0xdf, 0x7a, 0x4c, 0xf5, 0xaf, 0x7c, 0x27, 0x10, 0x51, 0xfa, 0xa3, 0x4f, 0x3f, 0x1a, 0x92, + 0x5e, 0x36, 0xd5, 0x87, 0x01, 0x48, 0xa7, 0xcd, 0x95, 0x6b, 0x69, 0x50, 0x6b, 0xca, 0xc1, 0x1c, + 0x95, 0x42, 0x22, 0x95, 0x37, 0x73, 0xe2, 0x98, 0x28, 0xb0, 0x91, 0xe6, 0xff, 0xfd, 0x03, 0xfc, + 0x16, 0x04, 0x0f, 0xb7, 0x0d, 0x94, 0x5e, 0xac, 0x05, 0x81, 0x8b, 0x47, 0x64, 0x77, 0x02, 0x76, + 0x89, 0x02, 0x0c, 0xa8, 0xf0, 0x32, 0x6a, 0xfd, 0x15, 0xa2, 0xb6, 0xe2, 0xf9, 0x98, 0x10, 0x6d, + 0x47, 0x8c, 0x2f, 0xdc, 0xaa, 0xf4, 0x0a, 0x51, 0xc5, 0x88, 0x71, 0x77, 0x31, 0x8d, 0x0c, 0x17, + 0xd2, 0x76, 0x5e, 0x25, 0x8d, 0x0c, 0x5f, 0xa4, 0xfd, 0x89, 0xec, 0x50, 0x46, 0x5e, 0xc8, 0xde, + 0x5f, 0x31, 0xea, 0xe9, 0x7f, 0xac, 0x07, 0x9c, 0xf8, 0x21, 0x50, 0x7b, 0xaf, 0x96, 0xad, 0x9b, + 0xee, 0x4e, 0x28, 0xa3, 0x53, 0x2d, 0x9f, 0x8f, 0xd4, 0xff, 0x12, 0x11, 0x97, 0x51, 0xae, 0x4f, + 0x42, 0x05, 0xd4, 0xde, 0xd6, 0xb6, 0x74, 0xd7, 0x31, 0x4c, 0xc3, 0x5a, 0xed, 0x18, 0xe6, 0xaa, + 0x95, 0xeb, 0x18, 0x66, 0xce, 0x5a, 0xeb, 0x18, 0xe6, 0x9a, 0x65, 0x76, 0x0c, 0x73, 0xcb, 0x2a, + 0x74, 0x0c, 0xb3, 0x60, 0x59, 0x1d, 0xc3, 0xb4, 0xac, 0xe2, 0xc9, 0xe9, 0xdd, 0x53, 0x35, 0x7b, + 0xff, 0x54, 0xcd, 0x7e, 0x7b, 0xaa, 0x66, 0x3f, 0x3d, 0x57, 0x33, 0xf7, 0xcf, 0xd5, 0xcc, 0x97, + 0xe7, 0x6a, 0xe6, 0xe2, 0x70, 0xe6, 0x76, 0xe7, 0x7a, 0x96, 0x34, 0x4e, 0x89, 0x2f, 0x9b, 0xe9, + 0x18, 0xbf, 0xfe, 0xe3, 0xa8, 0x39, 0x9c, 0x0e, 0x73, 0x7d, 0x5b, 0x3f, 0xa7, 0x07, 0xf3, 0xd1, + 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x24, 0x83, 0x34, 0x9b, 0x1e, 0x06, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { @@ -265,6 +262,61 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.LsmLiquidStakeEnabled { + i-- + if m.LsmLiquidStakeEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd8 + } + if m.UnbondingPeriod != 0 { + i = encodeVarintHostZone(dAtA, i, uint64(m.UnbondingPeriod)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd0 + } + if len(m.RedemptionIcaAddress) > 0 { + i -= len(m.RedemptionIcaAddress) + copy(dAtA[i:], m.RedemptionIcaAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.RedemptionIcaAddress))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xca + } + if len(m.DelegationIcaAddress) > 0 { + i -= len(m.DelegationIcaAddress) + copy(dAtA[i:], m.DelegationIcaAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.DelegationIcaAddress))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc2 + } + if len(m.FeeIcaAddress) > 0 { + i -= len(m.FeeIcaAddress) + copy(dAtA[i:], m.FeeIcaAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.FeeIcaAddress))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } + if len(m.WithdrawalIcaAddress) > 0 { + i -= len(m.WithdrawalIcaAddress) + copy(dAtA[i:], m.WithdrawalIcaAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.WithdrawalIcaAddress))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } { size := m.MaxRedemptionRate.Size() i -= size @@ -301,10 +353,10 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x98 } - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintHostZone(dAtA, i, uint64(len(m.Address))) + if len(m.DepositAddress) > 0 { + i -= len(m.DepositAddress) + copy(dAtA[i:], m.DepositAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.DepositAddress))) i-- dAtA[i] = 0x1 i-- @@ -319,29 +371,10 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x8a } - if m.RedemptionAccount != nil { - { - size, err := m.RedemptionAccount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintHostZone(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0x82 - } - if m.UnbondingFrequency != 0 { - i = encodeVarintHostZone(dAtA, i, uint64(m.UnbondingFrequency)) - i-- - dAtA[i] = 0x70 - } { - size := m.StakedBal.Size() + size := m.TotalDelegations.Size() i -= size - if _, err := m.StakedBal.MarshalTo(dAtA[i:]); err != nil { + if _, err := m.TotalDelegations.MarshalTo(dAtA[i:]); err != nil { return 0, err } i = encodeVarintHostZone(dAtA, i, uint64(size)) @@ -389,56 +422,6 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - if m.DelegationAccount != nil { - { - size, err := m.DelegationAccount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintHostZone(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - if m.FeeAccount != nil { - { - size, err := m.FeeAccount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintHostZone(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - if m.WithdrawalAccount != nil { - { - size, err := m.WithdrawalAccount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintHostZone(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if len(m.BlacklistedValidators) > 0 { - for iNdEx := len(m.BlacklistedValidators) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.BlacklistedValidators[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintHostZone(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - } if len(m.Validators) > 0 { for iNdEx := len(m.Validators) - 1; iNdEx >= 0; iNdEx-- { { @@ -501,24 +484,6 @@ func (m *HostZone) Size() (n int) { n += 1 + l + sovHostZone(uint64(l)) } } - if len(m.BlacklistedValidators) > 0 { - for _, e := range m.BlacklistedValidators { - l = e.Size() - n += 1 + l + sovHostZone(uint64(l)) - } - } - if m.WithdrawalAccount != nil { - l = m.WithdrawalAccount.Size() - n += 1 + l + sovHostZone(uint64(l)) - } - if m.FeeAccount != nil { - l = m.FeeAccount.Size() - n += 1 + l + sovHostZone(uint64(l)) - } - if m.DelegationAccount != nil { - l = m.DelegationAccount.Size() - n += 1 + l + sovHostZone(uint64(l)) - } l = len(m.IbcDenom) if l > 0 { n += 1 + l + sovHostZone(uint64(l)) @@ -535,20 +500,13 @@ func (m *HostZone) Size() (n int) { if l > 0 { n += 1 + l + sovHostZone(uint64(l)) } - l = m.StakedBal.Size() + l = m.TotalDelegations.Size() n += 1 + l + sovHostZone(uint64(l)) - if m.UnbondingFrequency != 0 { - n += 1 + sovHostZone(uint64(m.UnbondingFrequency)) - } - if m.RedemptionAccount != nil { - l = m.RedemptionAccount.Size() - n += 2 + l + sovHostZone(uint64(l)) - } l = len(m.Bech32Prefix) if l > 0 { n += 2 + l + sovHostZone(uint64(l)) } - l = len(m.Address) + l = len(m.DepositAddress) if l > 0 { n += 2 + l + sovHostZone(uint64(l)) } @@ -559,6 +517,28 @@ func (m *HostZone) Size() (n int) { n += 2 + l + sovHostZone(uint64(l)) l = m.MaxRedemptionRate.Size() n += 2 + l + sovHostZone(uint64(l)) + l = len(m.WithdrawalIcaAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.FeeIcaAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.DelegationIcaAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.RedemptionIcaAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + if m.UnbondingPeriod != 0 { + n += 2 + sovHostZone(uint64(m.UnbondingPeriod)) + } + if m.LsmLiquidStakeEnabled { + n += 3 + } return n } @@ -695,11 +675,11 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BlacklistedValidators", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IbcDenom", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -709,31 +689,29 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthHostZone } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthHostZone } if postIndex > l { return io.ErrUnexpectedEOF } - m.BlacklistedValidators = append(m.BlacklistedValidators, &Validator{}) - if err := m.BlacklistedValidators[len(m.BlacklistedValidators)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.IbcDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WithdrawalAccount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field HostDenom", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -743,33 +721,29 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthHostZone } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthHostZone } if postIndex > l { return io.ErrUnexpectedEOF } - if m.WithdrawalAccount == nil { - m.WithdrawalAccount = &ICAAccount{} - } - if err := m.WithdrawalAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.HostDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FeeAccount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LastRedemptionRate", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -779,33 +753,31 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthHostZone } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthHostZone } if postIndex > l { return io.ErrUnexpectedEOF } - if m.FeeAccount == nil { - m.FeeAccount = &ICAAccount{} - } - if err := m.FeeAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.LastRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegationAccount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionRate", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -815,31 +787,29 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthHostZone } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthHostZone } if postIndex > l { return io.ErrUnexpectedEOF } - if m.DelegationAccount == nil { - m.DelegationAccount = &ICAAccount{} - } - if err := m.DelegationAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.RedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IbcDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TransferChannelId", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -867,11 +837,11 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.IbcDenom = string(dAtA[iNdEx:postIndex]) + m.TransferChannelId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 9: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field HostDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TotalDelegations", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -899,11 +869,13 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.HostDenom = string(dAtA[iNdEx:postIndex]) + if err := m.TotalDelegations.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 10: + case 17: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastRedemptionRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Bech32Prefix", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -931,13 +903,11 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.LastRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Bech32Prefix = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 11: + case 18: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RedemptionRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DepositAddress", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -965,15 +935,13 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.RedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.DepositAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TransferChannelId", wireType) + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -983,27 +951,15 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthHostZone - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthHostZone - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TransferChannelId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 13: + m.Halted = bool(v != 0) + case 20: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StakedBal", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MinRedemptionRate", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1031,34 +987,15 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.StakedBal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.MinRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 14: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field UnbondingFrequency", wireType) - } - m.UnbondingFrequency = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowHostZone - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.UnbondingFrequency |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 16: + case 21: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RedemptionAccount", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MaxRedemptionRate", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -1068,31 +1005,29 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthHostZone } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthHostZone } if postIndex > l { return io.ErrUnexpectedEOF } - if m.RedemptionAccount == nil { - m.RedemptionAccount = &ICAAccount{} - } - if err := m.RedemptionAccount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.MaxRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 17: + case 22: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Bech32Prefix", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field WithdrawalIcaAddress", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1120,11 +1055,11 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Bech32Prefix = string(dAtA[iNdEx:postIndex]) + m.WithdrawalIcaAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 18: + case 23: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FeeIcaAddress", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1152,13 +1087,13 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Address = string(dAtA[iNdEx:postIndex]) + m.FeeIcaAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 19: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegationIcaAddress", wireType) } - var v int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -1168,15 +1103,27 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - m.Halted = bool(v != 0) - case 20: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegationIcaAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 25: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinRedemptionRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RedemptionIcaAddress", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1204,15 +1151,13 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.MinRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.RedemptionIcaAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 21: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxRedemptionRate", wireType) + case 26: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingPeriod", wireType) } - var stringLen uint64 + m.UnbondingPeriod = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowHostZone @@ -1222,26 +1167,31 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.UnbondingPeriod |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthHostZone - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthHostZone - } - if postIndex > l { - return io.ErrUnexpectedEOF + case 27: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LsmLiquidStakeEnabled", wireType) } - if err := m.MaxRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex + m.LsmLiquidStakeEnabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipHostZone(dAtA[iNdEx:]) diff --git a/x/stakeibc/types/host_zone_test.go b/x/stakeibc/types/host_zone_test.go new file mode 100644 index 0000000000..97cc5cca11 --- /dev/null +++ b/x/stakeibc/types/host_zone_test.go @@ -0,0 +1,60 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +func TestHostZoneUnbondingFrequency(t *testing.T) { + testCases := []struct { + unbondingPeriod uint64 + unbondingFrequency uint64 + }{ + { + unbondingPeriod: 1, + unbondingFrequency: 1, + }, + { + unbondingPeriod: 6, + unbondingFrequency: 1, + }, + { + unbondingPeriod: 7, + unbondingFrequency: 2, + }, + { + unbondingPeriod: 13, + unbondingFrequency: 2, + }, + { + unbondingPeriod: 14, + unbondingFrequency: 3, + }, + { + unbondingPeriod: 20, + unbondingFrequency: 3, + }, + { + unbondingPeriod: 21, + unbondingFrequency: 4, + }, + { + unbondingPeriod: 27, + unbondingFrequency: 4, + }, + { + unbondingPeriod: 28, + unbondingFrequency: 5, + }, + } + + for _, tc := range testCases { + hostZone := types.HostZone{ + UnbondingPeriod: tc.unbondingPeriod, + } + require.Equal(t, tc.unbondingFrequency, hostZone.GetUnbondingFrequency(), "unbonding frequency") + } +} diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index ec4abd607e..4471c4f94f 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -5,11 +5,8 @@ package types import ( fmt "fmt" - _ "github.com/cosmos/cosmos-proto" proto "github.com/cosmos/gogoproto/proto" - io "io" math "math" - math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -54,338 +51,25 @@ func (ICAAccountType) EnumDescriptor() ([]byte, []int) { return fileDescriptor_2976ae6e7f6ce824, []int{0} } -type ICAAccount struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Target ICAAccountType `protobuf:"varint,3,opt,name=target,proto3,enum=stride.stakeibc.ICAAccountType" json:"target,omitempty"` -} - -func (m *ICAAccount) Reset() { *m = ICAAccount{} } -func (m *ICAAccount) String() string { return proto.CompactTextString(m) } -func (*ICAAccount) ProtoMessage() {} -func (*ICAAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_2976ae6e7f6ce824, []int{0} -} -func (m *ICAAccount) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ICAAccount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ICAAccount.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ICAAccount) XXX_Merge(src proto.Message) { - xxx_messageInfo_ICAAccount.Merge(m, src) -} -func (m *ICAAccount) XXX_Size() int { - return m.Size() -} -func (m *ICAAccount) XXX_DiscardUnknown() { - xxx_messageInfo_ICAAccount.DiscardUnknown(m) -} - -var xxx_messageInfo_ICAAccount proto.InternalMessageInfo - -func (m *ICAAccount) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func (m *ICAAccount) GetTarget() ICAAccountType { - if m != nil { - return m.Target - } - return ICAAccountType_DELEGATION -} - func init() { proto.RegisterEnum("stride.stakeibc.ICAAccountType", ICAAccountType_name, ICAAccountType_value) - proto.RegisterType((*ICAAccount)(nil), "stride.stakeibc.ICAAccount") } func init() { proto.RegisterFile("stride/stakeibc/ica_account.proto", fileDescriptor_2976ae6e7f6ce824) } var fileDescriptor_2976ae6e7f6ce824 = []byte{ - // 292 bytes of a gzipped FileDescriptorProto + // 199 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x2e, 0x29, 0xca, 0x4c, 0x49, 0xd5, 0x2f, 0x2e, 0x49, 0xcc, 0x4e, 0xcd, 0x4c, 0x4a, 0xd6, 0xcf, 0x4c, 0x4e, 0x8c, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x87, - 0x28, 0xd1, 0x83, 0x29, 0x91, 0x92, 0x4c, 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x8e, 0x07, 0x4b, 0xeb, - 0x43, 0x38, 0x10, 0xb5, 0x4a, 0xf5, 0x5c, 0x5c, 0x9e, 0xce, 0x8e, 0x8e, 0x10, 0xfd, 0x42, 0x46, - 0x5c, 0xec, 0x89, 0x29, 0x29, 0x45, 0xa9, 0xc5, 0xc5, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x4e, - 0x12, 0x97, 0xb6, 0xe8, 0x8a, 0x40, 0x35, 0x38, 0x42, 0x64, 0x82, 0x4b, 0x8a, 0x32, 0xf3, 0xd2, - 0x83, 0x60, 0x0a, 0x85, 0xcc, 0xb9, 0xd8, 0x4a, 0x12, 0x8b, 0xd2, 0x53, 0x4b, 0x24, 0x98, 0x15, - 0x18, 0x35, 0xf8, 0x8c, 0xe4, 0xf5, 0xd0, 0xac, 0xd7, 0x43, 0x58, 0x10, 0x52, 0x59, 0x90, 0x1a, - 0x04, 0x55, 0xee, 0xc5, 0xc2, 0xc1, 0x24, 0xc0, 0xac, 0xe5, 0xc9, 0xc5, 0x87, 0x2a, 0x2f, 0xc4, - 0xc7, 0xc5, 0xe5, 0xe2, 0xea, 0xe3, 0xea, 0xee, 0x18, 0xe2, 0xe9, 0xef, 0x27, 0xc0, 0x20, 0xc4, - 0xce, 0xc5, 0xec, 0xe6, 0xea, 0x2a, 0xc0, 0x08, 0x92, 0x08, 0xf7, 0x0c, 0xf1, 0x70, 0x09, 0x72, - 0x0c, 0x77, 0xf4, 0x11, 0x60, 0x02, 0xf1, 0x83, 0x5c, 0x5d, 0x5c, 0x7d, 0x03, 0xc0, 0x0a, 0x99, - 0x9d, 0x7c, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, - 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, - 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xec, 0x3a, 0x5d, 0x9f, 0xc4, 0xa4, - 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xeb, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, - 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x1a, 0x12, 0xf4, - 0x71, 0x01, 0x00, 0x00, -} - -func (m *ICAAccount) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ICAAccount) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ICAAccount) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Target != 0 { - i = encodeVarintIcaAccount(dAtA, i, uint64(m.Target)) - i-- - dAtA[i] = 0x18 - } - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintIcaAccount(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintIcaAccount(dAtA []byte, offset int, v uint64) int { - offset -= sovIcaAccount(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *ICAAccount) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovIcaAccount(uint64(l)) - } - if m.Target != 0 { - n += 1 + sovIcaAccount(uint64(m.Target)) - } - return n + 0x28, 0xd1, 0x83, 0x29, 0xd1, 0xf2, 0xe4, 0xe2, 0xf3, 0x74, 0x76, 0x74, 0x84, 0x28, 0x0a, 0xa9, + 0x2c, 0x48, 0x15, 0xe2, 0xe3, 0xe2, 0x72, 0x71, 0xf5, 0x71, 0x75, 0x77, 0x0c, 0xf1, 0xf4, 0xf7, + 0x13, 0x60, 0x10, 0x62, 0xe7, 0x62, 0x76, 0x73, 0x75, 0x15, 0x60, 0x04, 0x49, 0x84, 0x7b, 0x86, + 0x78, 0xb8, 0x04, 0x39, 0x86, 0x3b, 0xfa, 0x08, 0x30, 0x81, 0xf8, 0x41, 0xae, 0x2e, 0xae, 0xbe, + 0x01, 0x60, 0x85, 0xcc, 0x4e, 0x3e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, + 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, + 0x65, 0x94, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0x76, 0x80, + 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0xc6, 0xfa, 0x15, 0x08, 0x57, 0x97, + 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xf8, + 0x5c, 0xae, 0xb5, 0xd5, 0x00, 0x00, 0x00, } - -func sovIcaAccount(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozIcaAccount(x uint64) (n int) { - return sovIcaAccount(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *ICAAccount) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowIcaAccount - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ICAAccount: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ICAAccount: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowIcaAccount - } - 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 ErrInvalidLengthIcaAccount - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthIcaAccount - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType) - } - m.Target = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowIcaAccount - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Target |= ICAAccountType(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipIcaAccount(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthIcaAccount - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipIcaAccount(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowIcaAccount - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowIcaAccount - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowIcaAccount - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthIcaAccount - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupIcaAccount - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthIcaAccount - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthIcaAccount = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowIcaAccount = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupIcaAccount = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/stakeibc/types/lsm_msgs.go b/x/stakeibc/types/lsm_msgs.go new file mode 100644 index 0000000000..7fd586e6c4 --- /dev/null +++ b/x/stakeibc/types/lsm_msgs.go @@ -0,0 +1,65 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// staking message types +// +// #nosec G101 +const ( + TypeMsgRedeemTokensForShares = "redeem_tokens_for_shares" +) + +var ( + _ sdk.Msg = &MsgRedeemTokensForShares{} +) + +// NewMsgRedeemTokensForShares creates a new MsgRedeemTokensForShares instance. +// +//nolint:interfacer +func NewMsgRedeemTokensForShares(delAddr sdk.AccAddress, amount sdk.Coin) *MsgRedeemTokensForShares { + return &MsgRedeemTokensForShares{ + DelegatorAddress: delAddr.String(), + Amount: amount, + } +} + +// Route implements the sdk.Msg interface. +func (msg MsgRedeemTokensForShares) Route() string { return RouterKey } + +// Type implements the sdk.Msg interface. +func (msg MsgRedeemTokensForShares) Type() string { return TypeMsgRedeemTokensForShares } + +// GetSigners implements the sdk.Msg interface. +func (msg MsgRedeemTokensForShares) GetSigners() []sdk.AccAddress { + delegator, err := sdk.AccAddressFromBech32(msg.DelegatorAddress) + if err != nil { + panic(err) + } + return []sdk.AccAddress{delegator} +} + +// GetSignBytes implements the sdk.Msg interface. +func (msg MsgRedeemTokensForShares) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(&msg) + return sdk.MustSortJSON(bz) +} + +// ValidateBasic implements the sdk.Msg interface. +func (msg MsgRedeemTokensForShares) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.DelegatorAddress); err != nil { + return sdkerrors.ErrInvalidAddress.Wrapf("invalid delegator address: %s", err) + } + + if !msg.Amount.IsValid() || !msg.Amount.Amount.IsPositive() { + return errorsmod.Wrap( + sdkerrors.ErrInvalidRequest, + "invalid shares amount", + ) + } + + return nil +} diff --git a/x/stakeibc/types/lsm_tx.pb.go b/x/stakeibc/types/lsm_tx.pb.go new file mode 100644 index 0000000000..dfcc24278a --- /dev/null +++ b/x/stakeibc/types/lsm_tx.pb.go @@ -0,0 +1,544 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/staking/v1beta1/lsm_tx.proto + +package types + +import ( + fmt "fmt" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgRedeemTokensForShares redeems a tokenized share back into a native +// delegation +type MsgRedeemTokensForShares struct { + DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty" yaml:"delegator_address"` + Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` +} + +func (m *MsgRedeemTokensForShares) Reset() { *m = MsgRedeemTokensForShares{} } +func (m *MsgRedeemTokensForShares) String() string { return proto.CompactTextString(m) } +func (*MsgRedeemTokensForShares) ProtoMessage() {} +func (*MsgRedeemTokensForShares) Descriptor() ([]byte, []int) { + return fileDescriptor_34c3b474a863e424, []int{0} +} +func (m *MsgRedeemTokensForShares) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRedeemTokensForShares) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRedeemTokensForShares.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRedeemTokensForShares) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRedeemTokensForShares.Merge(m, src) +} +func (m *MsgRedeemTokensForShares) XXX_Size() int { + return m.Size() +} +func (m *MsgRedeemTokensForShares) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRedeemTokensForShares.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRedeemTokensForShares proto.InternalMessageInfo + +// MsgRedeemTokensForSharesResponse defines the Msg/MsgRedeemTokensForShares +// response type. +type MsgRedeemTokensForSharesResponse struct { + Amount types.Coin `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount"` +} + +func (m *MsgRedeemTokensForSharesResponse) Reset() { *m = MsgRedeemTokensForSharesResponse{} } +func (m *MsgRedeemTokensForSharesResponse) String() string { return proto.CompactTextString(m) } +func (*MsgRedeemTokensForSharesResponse) ProtoMessage() {} +func (*MsgRedeemTokensForSharesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_34c3b474a863e424, []int{1} +} +func (m *MsgRedeemTokensForSharesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgRedeemTokensForSharesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgRedeemTokensForSharesResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgRedeemTokensForSharesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgRedeemTokensForSharesResponse.Merge(m, src) +} +func (m *MsgRedeemTokensForSharesResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgRedeemTokensForSharesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgRedeemTokensForSharesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgRedeemTokensForSharesResponse proto.InternalMessageInfo + +func (m *MsgRedeemTokensForSharesResponse) GetAmount() types.Coin { + if m != nil { + return m.Amount + } + return types.Coin{} +} + +func init() { + proto.RegisterType((*MsgRedeemTokensForShares)(nil), "cosmos.staking.v1beta1.MsgRedeemTokensForShares") + proto.RegisterType((*MsgRedeemTokensForSharesResponse)(nil), "cosmos.staking.v1beta1.MsgRedeemTokensForSharesResponse") +} + +func init() { + proto.RegisterFile("cosmos/staking/v1beta1/lsm_tx.proto", fileDescriptor_34c3b474a863e424) +} + +var fileDescriptor_34c3b474a863e424 = []byte{ + // 327 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4e, 0xce, 0x2f, 0xce, + 0xcd, 0x2f, 0xd6, 0x2f, 0x2e, 0x49, 0xcc, 0xce, 0xcc, 0x4b, 0xd7, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, + 0x49, 0x34, 0xd4, 0xcf, 0x29, 0xce, 0x8d, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, + 0x12, 0x83, 0x28, 0xd2, 0x83, 0x2a, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, + 0x2b, 0xd1, 0x07, 0xb1, 0x20, 0xaa, 0xa5, 0xe4, 0xa0, 0x46, 0x26, 0x25, 0x16, 0xa7, 0xc2, 0xcd, + 0x4b, 0xce, 0xcf, 0xcc, 0x83, 0xc8, 0x2b, 0xad, 0x60, 0xe4, 0x92, 0xf0, 0x2d, 0x4e, 0x0f, 0x4a, + 0x4d, 0x49, 0x4d, 0xcd, 0x0d, 0xc9, 0xcf, 0x4e, 0xcd, 0x2b, 0x76, 0xcb, 0x2f, 0x0a, 0xce, 0x48, + 0x2c, 0x4a, 0x2d, 0x16, 0xf2, 0xe4, 0x12, 0x4c, 0x49, 0xcd, 0x49, 0x4d, 0x4f, 0x2c, 0xc9, 0x2f, + 0x8a, 0x4f, 0x4c, 0x49, 0x29, 0x4a, 0x2d, 0x2e, 0x96, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x74, 0x92, + 0xf9, 0x74, 0x4f, 0x5e, 0xa2, 0x32, 0x31, 0x37, 0xc7, 0x4a, 0x09, 0x43, 0x89, 0x52, 0x90, 0x00, + 0x5c, 0xcc, 0x11, 0x22, 0x24, 0x64, 0xce, 0xc5, 0x96, 0x98, 0x9b, 0x5f, 0x9a, 0x57, 0x22, 0xc1, + 0xa4, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xa9, 0x07, 0xf5, 0x06, 0xc8, 0x61, 0x30, 0x3f, 0xe8, 0x39, + 0xe7, 0x67, 0xe6, 0x39, 0xb1, 0x9c, 0xb8, 0x27, 0xcf, 0x10, 0x04, 0x55, 0x6e, 0xc5, 0xd1, 0xb1, + 0x40, 0x9e, 0xe1, 0xc5, 0x02, 0x79, 0x06, 0xa5, 0x68, 0x2e, 0x05, 0x5c, 0x2e, 0x0d, 0x4a, 0x2d, + 0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x45, 0xb2, 0x86, 0x91, 0x24, 0x6b, 0x9c, 0x7c, 0x4e, 0x3c, 0x92, + 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, + 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, + 0x39, 0x3f, 0x57, 0x3f, 0xb8, 0xa4, 0x28, 0x33, 0x25, 0x55, 0xd7, 0x27, 0x31, 0x09, 0x14, 0x49, + 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0xb1, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, + 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x6c, 0xa7, 0xb3, 0xd1, 0x01, 0x00, 0x00, +} + +func (m *MsgRedeemTokensForShares) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRedeemTokensForShares) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRedeemTokensForShares) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLsmTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.DelegatorAddress) > 0 { + i -= len(m.DelegatorAddress) + copy(dAtA[i:], m.DelegatorAddress) + i = encodeVarintLsmTx(dAtA, i, uint64(len(m.DelegatorAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgRedeemTokensForSharesResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgRedeemTokensForSharesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgRedeemTokensForSharesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintLsmTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintLsmTx(dAtA []byte, offset int, v uint64) int { + offset -= sovLsmTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgRedeemTokensForShares) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.DelegatorAddress) + if l > 0 { + n += 1 + l + sovLsmTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovLsmTx(uint64(l)) + return n +} + +func (m *MsgRedeemTokensForSharesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovLsmTx(uint64(l)) + return n +} + +func sovLsmTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozLsmTx(x uint64) (n int) { + return sovLsmTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgRedeemTokensForShares) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLsmTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRedeemTokensForShares: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRedeemTokensForShares: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelegatorAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLsmTx + } + 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 ErrInvalidLengthLsmTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLsmTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DelegatorAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLsmTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLsmTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLsmTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLsmTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLsmTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgRedeemTokensForSharesResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLsmTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgRedeemTokensForSharesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgRedeemTokensForSharesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLsmTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLsmTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLsmTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLsmTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLsmTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipLsmTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowLsmTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowLsmTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowLsmTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthLsmTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupLsmTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthLsmTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthLsmTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowLsmTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupLsmTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/stakeibc/types/message_lsm_liquid_stake.go b/x/stakeibc/types/message_lsm_liquid_stake.go new file mode 100644 index 0000000000..7a28aaa239 --- /dev/null +++ b/x/stakeibc/types/message_lsm_liquid_stake.go @@ -0,0 +1,63 @@ +package types + +import ( + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + errorsmod "cosmossdk.io/errors" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +const TypeMsgLSMLiquidStake = "lsm_liquid_stake" + +var _ sdk.Msg = &MsgLSMLiquidStake{} + +func NewMsgLSMLiquidStake(creator string, amount sdkmath.Int, lsmTokenIbcDenom string) *MsgLSMLiquidStake { + return &MsgLSMLiquidStake{ + Creator: creator, + Amount: amount, + LsmTokenIbcDenom: lsmTokenIbcDenom, + } +} + +func (msg *MsgLSMLiquidStake) Route() string { + return RouterKey +} + +func (msg *MsgLSMLiquidStake) Type() string { + return TypeMsgLSMLiquidStake +} + +func (msg *MsgLSMLiquidStake) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgLSMLiquidStake) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgLSMLiquidStake) ValidateBasic() error { + // check valid creator address + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + // ensure amount is a nonzero positive integer + if msg.Amount.LTE(sdkmath.ZeroInt()) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid amount (%v)", msg.Amount) + } + // validate host denom is not empty + if msg.LsmTokenIbcDenom == "" { + return errorsmod.Wrapf(ErrRequiredFieldEmpty, "LSM token denom cannot be empty") + } + // lsm token denom must be a valid asset denom matching regex + if err := sdk.ValidateDenom(msg.LsmTokenIbcDenom); err != nil { + return errorsmod.Wrapf(err, "invalid LSM token denom") + } + return nil +} diff --git a/x/stakeibc/types/message_lsm_liquid_stake_test.go b/x/stakeibc/types/message_lsm_liquid_stake_test.go new file mode 100644 index 0000000000..446d008041 --- /dev/null +++ b/x/stakeibc/types/message_lsm_liquid_stake_test.go @@ -0,0 +1,85 @@ +package types_test + +import ( + "testing" + + sdkmath "cosmossdk.io/math" + + "github.com/stretchr/testify/require" + + "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +func TestMsgLSMLiquidStake(t *testing.T) { + apptesting.SetupConfig() + + validNotAdminAddress, invalidAddress := apptesting.GenerateTestAddrs() + + tests := []struct { + name string + msg types.MsgLSMLiquidStake + err string + }{ + { + name: "invalid address", + msg: types.MsgLSMLiquidStake{ + Creator: invalidAddress, + Amount: sdkmath.NewInt(1), + LsmTokenIbcDenom: "validator0032vj2y9sea9d9jfstpxn", + }, + err: "invalid creator address", + }, + { + name: "valid inputs", + msg: types.MsgLSMLiquidStake{ + Creator: validNotAdminAddress, + Amount: sdkmath.NewInt(1), + LsmTokenIbcDenom: "validator0032vj2y9sea9d9jfstpxn", + }, + }, + { + name: "zero amount", + msg: types.MsgLSMLiquidStake{ + Creator: validNotAdminAddress, + Amount: sdkmath.ZeroInt(), + LsmTokenIbcDenom: "validator0032vj2y9sea9d9jfstpxn", + }, + err: "invalid amount", + }, + { + name: "empty lsm token denom", + msg: types.MsgLSMLiquidStake{ + Creator: validNotAdminAddress, + Amount: sdkmath.NewInt(1), + LsmTokenIbcDenom: "", + }, + err: "LSM token denom cannot be empty", + }, + { + name: "bad format lsm token denom", + msg: types.MsgLSMLiquidStake{ + Creator: validNotAdminAddress, + Amount: sdkmath.NewInt(1), + LsmTokenIbcDenom: "38", + }, + err: "invalid LSM token denom", + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if test.err == "" { + require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) + require.Equal(t, test.msg.Route(), types.RouterKey) + require.Equal(t, test.msg.Type(), "lsm_liquid_stake") + + signers := test.msg.GetSigners() + require.Equal(t, len(signers), 1) + require.Equal(t, signers[0].String(), validNotAdminAddress) + } else { + require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) + } + }) + } +} diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index 0e41c56968..892fd8dbfc 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -17,17 +17,29 @@ const TypeMsgRegisterHostZone = "register_host_zone" var _ sdk.Msg = &MsgRegisterHostZone{} -func NewMsgRegisterHostZone(creator string, connectionId string, bech32prefix string, hostDenom string, ibcDenom string, transferChannelId string, unbondingFrequency uint64, minRedemptionRate, maxRedemptionRate sdk.Dec) *MsgRegisterHostZone { +func NewMsgRegisterHostZone( + creator string, + connectionId string, + bech32prefix string, + hostDenom string, + ibcDenom string, + transferChannelId string, + unbondingPeriod uint64, + minRedemptionRate sdk.Dec, + maxRedemptionRate sdk.Dec, + lsmLiquidStakeEnabled bool, +) *MsgRegisterHostZone { return &MsgRegisterHostZone{ - Creator: creator, - ConnectionId: connectionId, - Bech32Prefix: bech32prefix, - HostDenom: hostDenom, - IbcDenom: ibcDenom, - TransferChannelId: transferChannelId, - UnbondingFrequency: unbondingFrequency, - MinRedemptionRate: minRedemptionRate, - MaxRedemptionRate: maxRedemptionRate, + Creator: creator, + ConnectionId: connectionId, + Bech32Prefix: bech32prefix, + HostDenom: hostDenom, + IbcDenom: ibcDenom, + TransferChannelId: transferChannelId, + UnbondingPeriod: unbondingPeriod, + MinRedemptionRate: minRedemptionRate, + MaxRedemptionRate: maxRedemptionRate, + LsmLiquidStakeEnabled: lsmLiquidStakeEnabled, } } @@ -52,7 +64,6 @@ func (msg *MsgRegisterHostZone) GetSignBytes() []byte { return sdk.MustSortJSON(bz) } -// TODO(TEST-112) add validation on bech32prefix upon zone creation func (msg *MsgRegisterHostZone) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { @@ -103,7 +114,7 @@ func (msg *MsgRegisterHostZone) ValidateBasic() error { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "transfer channel id must begin with 'channel'") } // unbonding frequency must be positive nonzero - if msg.UnbondingFrequency < 1 { + if msg.UnbondingPeriod < 1 { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unbonding frequency must be greater than zero") } // min/max redemption rate check @@ -124,7 +135,7 @@ func (msg *MsgRegisterHostZone) ValidateBasic() error { return nil } -func NewZoneAddress(chainId string) sdk.AccAddress { +func NewHostZoneDepositAddress(chainId string) sdk.AccAddress { key := append([]byte("zone"), []byte(chainId)...) return address.Module(ModuleName, key) } diff --git a/x/stakeibc/types/message_update_delegation.go b/x/stakeibc/types/message_update_delegation.go index 6dd5c24662..2060d0256e 100644 --- a/x/stakeibc/types/message_update_delegation.go +++ b/x/stakeibc/types/message_update_delegation.go @@ -6,8 +6,6 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/Stride-Labs/stride/v13/utils" ) const TypeMsgUpdateValidatorSharesExchRate = "update_validator_shares_exch_rate" @@ -48,9 +46,7 @@ func (msg *MsgUpdateValidatorSharesExchRate) ValidateBasic() error { if err != nil { return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) } - if err := utils.ValidateAdminAddress(msg.Creator); err != nil { - return err - } + // basic checks on host denom if len(msg.ChainId) == 0 { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "chainid is required") diff --git a/x/stakeibc/types/params.go b/x/stakeibc/types/params.go index 581e1743bf..1f9a44bbb1 100644 --- a/x/stakeibc/types/params.go +++ b/x/stakeibc/types/params.go @@ -16,17 +16,16 @@ var ( DefaultRewardsInterval uint64 = 1 DefaultRedemptionRateInterval uint64 = 1 // you apparently cannot safely encode floats, so we make commission / 100 - DefaultStrideCommission uint64 = 10 - DefaultICATimeoutNanos uint64 = 600000000000 - DefaultBufferSize uint64 = 5 // 1/5=20% of the epoch - DefaultIbcTimeoutBlocks uint64 = 300 // 300 blocks ~= 30 minutes - DefaultFeeTransferTimeoutNanos uint64 = 1800000000000 // 30 minutes - DefaultMinRedemptionRateThreshold uint64 = 90 // divide by 100, so 90 = 0.9 - DefaultMaxRedemptionRateThreshold uint64 = 150 // divide by 100, so 150 = 1.5 - DefaultMaxStakeICACallsPerEpoch uint64 = 100 - DefaultIBCTransferTimeoutNanos uint64 = 1800000000000 // 30 minutes - DefaultSafetyNumValidators uint64 = 35 - DefaultSafetyMaxSlashPercent uint64 = 10 + DefaultStrideCommission uint64 = 10 + DefaultICATimeoutNanos uint64 = 600000000000 + DefaultBufferSize uint64 = 5 // 1/5=20% of the epoch + DefaultIbcTimeoutBlocks uint64 = 300 // 300 blocks ~= 30 minutes + DefaultFeeTransferTimeoutNanos uint64 = 1800000000000 // 30 minutes + DefaultMinRedemptionRateThreshold uint64 = 90 // divide by 100, so 90 = 0.9 + DefaultMaxRedemptionRateThreshold uint64 = 150 // divide by 100, so 150 = 1.5 + DefaultMaxStakeICACallsPerEpoch uint64 = 100 + DefaultIBCTransferTimeoutNanos uint64 = 1800000000000 // 30 minutes + DefaultValidatorSlashQueryThreshold uint64 = 1 // denominated in percentage of TVL (1 => 1%) // KeyDepositInterval is store's key for the DepositInterval option KeyDepositInterval = []byte("DepositInterval") @@ -43,10 +42,9 @@ var ( KeyDefaultMaxRedemptionRateThreshold = []byte("DefaultMaxRedemptionRateThreshold") KeyMaxStakeICACallsPerEpoch = []byte("MaxStakeICACallsPerEpoch") KeyIBCTransferTimeoutNanos = []byte("IBCTransferTimeoutNanos") - KeySafetyNumValidators = []byte("SafetyNumValidators") - KeySafetyMaxSlashPercent = []byte("SafetyMaxSlashPercent") KeyMaxRedemptionRates = []byte("MaxRedemptionRates") KeyMinRedemptionRates = []byte("MinRedemptionRates") + KeyValidatorSlashQueryThreshold = []byte("ValidatorSlashQueryThreshold") ) var _ paramtypes.ParamSet = (*Params)(nil) @@ -72,8 +70,7 @@ func NewParams( defaultMinRedemptionRateThreshold uint64, defaultMaxRedemptionRateThreshold uint64, ibcTransferTimeoutNanos uint64, - safetyNumValidators uint64, - safetyMaxSlashPercent uint64, + validatorSlashQueryInterval uint64, ) Params { return Params{ DepositInterval: depositInterval, @@ -90,8 +87,7 @@ func NewParams( DefaultMinRedemptionRateThreshold: defaultMinRedemptionRateThreshold, DefaultMaxRedemptionRateThreshold: defaultMaxRedemptionRateThreshold, IbcTransferTimeoutNanos: ibcTransferTimeoutNanos, - SafetyNumValidators: safetyNumValidators, - SafetyMaxSlashPercent: safetyMaxSlashPercent, + ValidatorSlashQueryThreshold: validatorSlashQueryInterval, } } @@ -112,8 +108,7 @@ func DefaultParams() Params { DefaultMinRedemptionRateThreshold, DefaultMaxRedemptionRateThreshold, DefaultIBCTransferTimeoutNanos, - DefaultSafetyNumValidators, - DefaultSafetyMaxSlashPercent, + DefaultValidatorSlashQueryThreshold, ) } @@ -134,8 +129,7 @@ func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { paramtypes.NewParamSetPair(KeyDefaultMinRedemptionRateThreshold, &p.DefaultMinRedemptionRateThreshold, validMinRedemptionRateThreshold), paramtypes.NewParamSetPair(KeyDefaultMaxRedemptionRateThreshold, &p.DefaultMaxRedemptionRateThreshold, validMaxRedemptionRateThreshold), paramtypes.NewParamSetPair(KeyIBCTransferTimeoutNanos, &p.IbcTransferTimeoutNanos, validTimeoutNanos), - paramtypes.NewParamSetPair(KeySafetyNumValidators, &p.SafetyNumValidators, isPositive), - paramtypes.NewParamSetPair(KeySafetyMaxSlashPercent, &p.SafetyMaxSlashPercent, validSlashPercent), + paramtypes.NewParamSetPair(KeyValidatorSlashQueryThreshold, &p.ValidatorSlashQueryThreshold, isPositive), } } @@ -187,18 +181,6 @@ func validMinRedemptionRateThreshold(i interface{}) error { return nil } -func validSlashPercent(i interface{}) error { - ival, ok := i.(uint64) - if !ok { - return fmt.Errorf("parameter not accepted: %T", i) - } - if ival > 100 { - return fmt.Errorf("parameter must be between 0 and 100: %d", ival) - } - - return nil -} - func isPositive(i interface{}) error { ival, ok := i.(uint64) if !ok { @@ -267,12 +249,6 @@ func (p Params) Validate() error { if err := validTimeoutNanos(p.IbcTransferTimeoutNanos); err != nil { return err } - if err := isPositive(p.SafetyNumValidators); err != nil { - return err - } - if err := validSlashPercent(p.SafetyMaxSlashPercent); err != nil { - return err - } return nil } diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index cecd6d62a3..6f9dff6b24 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -24,7 +24,7 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // Params defines the parameters for the module. -// next id: 18 +// next id: 20 type Params struct { // define epoch lengths, in stride_epochs RewardsInterval uint64 `protobuf:"varint,1,opt,name=rewards_interval,json=rewardsInterval,proto3" json:"rewards_interval,omitempty"` @@ -41,8 +41,7 @@ type Params struct { DefaultMinRedemptionRateThreshold uint64 `protobuf:"varint,14,opt,name=default_min_redemption_rate_threshold,json=defaultMinRedemptionRateThreshold,proto3" json:"default_min_redemption_rate_threshold,omitempty"` DefaultMaxRedemptionRateThreshold uint64 `protobuf:"varint,15,opt,name=default_max_redemption_rate_threshold,json=defaultMaxRedemptionRateThreshold,proto3" json:"default_max_redemption_rate_threshold,omitempty"` IbcTransferTimeoutNanos uint64 `protobuf:"varint,16,opt,name=ibc_transfer_timeout_nanos,json=ibcTransferTimeoutNanos,proto3" json:"ibc_transfer_timeout_nanos,omitempty"` - SafetyNumValidators uint64 `protobuf:"varint,17,opt,name=safety_num_validators,json=safetyNumValidators,proto3" json:"safety_num_validators,omitempty"` - SafetyMaxSlashPercent uint64 `protobuf:"varint,18,opt,name=safety_max_slash_percent,json=safetyMaxSlashPercent,proto3" json:"safety_max_slash_percent,omitempty"` + ValidatorSlashQueryThreshold uint64 `protobuf:"varint,19,opt,name=validator_slash_query_threshold,json=validatorSlashQueryThreshold,proto3" json:"validator_slash_query_threshold,omitempty"` } func (m *Params) Reset() { *m = Params{} } @@ -175,16 +174,9 @@ func (m *Params) GetIbcTransferTimeoutNanos() uint64 { return 0 } -func (m *Params) GetSafetyNumValidators() uint64 { +func (m *Params) GetValidatorSlashQueryThreshold() uint64 { if m != nil { - return m.SafetyNumValidators - } - return 0 -} - -func (m *Params) GetSafetyMaxSlashPercent() uint64 { - if m != nil { - return m.SafetyMaxSlashPercent + return m.ValidatorSlashQueryThreshold } return 0 } @@ -196,43 +188,42 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/params.proto", fileDescriptor_5aeaab6a38c2b438) } var fileDescriptor_5aeaab6a38c2b438 = []byte{ - // 567 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x5b, 0xa8, 0xca, 0xe6, 0x01, 0x6b, 0xc3, 0x3f, 0x6b, 0x82, 0x0c, 0x90, 0x90, 0x18, - 0x83, 0x46, 0x6c, 0x07, 0x10, 0x3b, 0x20, 0x6d, 0xe2, 0x30, 0xb4, 0x4d, 0x55, 0x5b, 0x71, 0xe0, - 0x62, 0x39, 0xce, 0x9b, 0xd6, 0x5a, 0x12, 0x47, 0xb6, 0x53, 0xb2, 0x7d, 0x0a, 0x8e, 0x1c, 0xf9, - 0x38, 0x1c, 0x77, 0xe4, 0x88, 0xda, 0x6f, 0xc0, 0x27, 0x40, 0xb1, 0xd3, 0x74, 0x41, 0x83, 0x5b, - 0xf5, 0x3c, 0xbf, 0xf7, 0xc9, 0xeb, 0xc7, 0x35, 0x7a, 0xa8, 0xb4, 0xe4, 0x01, 0x78, 0x4a, 0xd3, - 0x53, 0xe0, 0x3e, 0xf3, 0x52, 0x2a, 0x69, 0xac, 0x7a, 0xa9, 0x14, 0x5a, 0x38, 0xeb, 0xd6, 0xed, - 0x2d, 0xdc, 0x8d, 0xbb, 0x63, 0x31, 0x16, 0xc6, 0xf3, 0x8a, 0x5f, 0x16, 0x7b, 0xfa, 0xbb, 0x8d, - 0xda, 0x7d, 0x33, 0xe7, 0x6c, 0xa1, 0x8e, 0x84, 0x2f, 0x54, 0x06, 0x8a, 0xf0, 0x44, 0x83, 0x9c, - 0xd2, 0x08, 0x37, 0x1f, 0x37, 0x9f, 0xb7, 0x06, 0xeb, 0xa5, 0x7e, 0x58, 0xca, 0xce, 0x36, 0xea, - 0x06, 0x10, 0xc1, 0x98, 0x6a, 0x58, 0xb2, 0x6d, 0xc3, 0x76, 0x16, 0x46, 0x05, 0x6f, 0xa1, 0x4e, - 0x00, 0xa9, 0x50, 0x5c, 0x2f, 0xd9, 0x6b, 0x36, 0xb7, 0xd4, 0x2b, 0xf4, 0x2d, 0xc2, 0x12, 0x02, - 0x88, 0x53, 0xcd, 0x45, 0x42, 0x64, 0x2d, 0xfe, 0xba, 0x19, 0xb9, 0xbf, 0xf4, 0x07, 0x97, 0x3f, - 0xb2, 0x8d, 0xba, 0xf6, 0xc0, 0x84, 0x89, 0x38, 0xe6, 0x4a, 0x71, 0x91, 0xe0, 0x96, 0xdd, 0xc8, - 0x1a, 0x07, 0x95, 0x5e, 0xc0, 0x12, 0x78, 0x32, 0x05, 0x75, 0x69, 0xa5, 0x1b, 0x16, 0x5e, 0x18, - 0x55, 0xf2, 0x0b, 0xd4, 0xe5, 0x8c, 0x12, 0xcd, 0x63, 0x10, 0x99, 0x26, 0x09, 0x4d, 0x84, 0xc2, - 0xab, 0x76, 0x7f, 0xce, 0xe8, 0xc8, 0xea, 0x27, 0x85, 0xec, 0x6c, 0xa2, 0x35, 0x3f, 0x0b, 0x43, - 0x90, 0x44, 0xf1, 0x73, 0xc0, 0xc8, 0x50, 0xc8, 0x4a, 0x43, 0x7e, 0x0e, 0xce, 0x4b, 0xe4, 0x70, - 0x9f, 0x55, 0x61, 0x7e, 0x24, 0xd8, 0xa9, 0xc2, 0x6b, 0xf6, 0xd3, 0xdc, 0x67, 0x65, 0xda, 0xbe, - 0xd1, 0x9d, 0x3d, 0xb4, 0x11, 0x02, 0x10, 0x2d, 0x69, 0xa2, 0x8a, 0xd0, 0xfa, 0x0e, 0x37, 0xcd, - 0xd4, 0x83, 0x10, 0x60, 0x54, 0x02, 0xb5, 0x5d, 0xde, 0xa3, 0x47, 0x31, 0xcd, 0x89, 0xb9, 0x7f, - 0x52, 0x9c, 0x80, 0xd1, 0x28, 0x52, 0x24, 0x05, 0x49, 0x20, 0x15, 0x6c, 0x82, 0x6f, 0x99, 0x79, - 0x1c, 0xd3, 0x7c, 0x58, 0x30, 0x87, 0x8c, 0x1e, 0x14, 0x44, 0x1f, 0xe4, 0x87, 0xc2, 0x77, 0xfa, - 0xe8, 0x59, 0x00, 0x21, 0xcd, 0x22, 0x4d, 0x62, 0x9e, 0x90, 0xbf, 0x2f, 0x46, 0x4f, 0x24, 0xa8, - 0x89, 0x88, 0x02, 0x7c, 0xdb, 0x04, 0x3d, 0x29, 0xe1, 0x63, 0x9e, 0x0c, 0x6a, 0x77, 0x34, 0x5a, - 0x80, 0xb5, 0x44, 0x9a, 0xff, 0x27, 0x71, 0xbd, 0x9e, 0x48, 0xf3, 0x7f, 0x25, 0xee, 0xa1, 0x0d, - 0xd3, 0xe7, 0xd5, 0x0d, 0x75, 0x6c, 0x43, 0x45, 0xaf, 0x57, 0x35, 0xb4, 0x83, 0xee, 0x29, 0x1a, - 0x82, 0x3e, 0x23, 0x49, 0x16, 0x93, 0x29, 0x8d, 0x78, 0x40, 0xb5, 0x90, 0x0a, 0x77, 0xcd, 0xdc, - 0x1d, 0x6b, 0x9e, 0x64, 0xf1, 0xa7, 0xca, 0x72, 0xde, 0x20, 0x5c, 0xce, 0x98, 0x72, 0x23, 0xaa, - 0x26, 0x45, 0xa5, 0x0c, 0x12, 0x8d, 0x1d, 0x33, 0x56, 0x66, 0x1e, 0xd3, 0x7c, 0x58, 0xb8, 0x7d, - 0x6b, 0xbe, 0x6b, 0x7d, 0xfb, 0xbe, 0xd9, 0xf8, 0xd8, 0x5a, 0x59, 0xe9, 0xac, 0xee, 0x1f, 0xfd, - 0x98, 0xb9, 0xcd, 0x8b, 0x99, 0xdb, 0xfc, 0x35, 0x73, 0x9b, 0x5f, 0xe7, 0x6e, 0xe3, 0x62, 0xee, - 0x36, 0x7e, 0xce, 0xdd, 0xc6, 0xe7, 0x9d, 0x31, 0xd7, 0x93, 0xcc, 0xef, 0x31, 0x11, 0x7b, 0x43, - 0xf3, 0xb7, 0x7d, 0x75, 0x44, 0x7d, 0xe5, 0x95, 0x4f, 0x7d, 0xfa, 0x7a, 0xd7, 0xcb, 0x97, 0x0f, - 0x5e, 0x9f, 0xa5, 0xa0, 0xfc, 0xb6, 0x79, 0xc9, 0xbb, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xaf, - 0xb8, 0x79, 0xc0, 0x10, 0x04, 0x00, 0x00, + // 552 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x41, 0x6f, 0xd3, 0x30, + 0x1c, 0xc5, 0x5b, 0x88, 0x4a, 0xe7, 0x01, 0x4d, 0x33, 0x04, 0x51, 0x35, 0x52, 0x40, 0x42, 0x62, + 0x0c, 0x1a, 0xc1, 0x2e, 0x88, 0x1d, 0x90, 0x36, 0xed, 0xb0, 0x6a, 0xa0, 0xd2, 0xf6, 0xc4, 0xc5, + 0x72, 0x92, 0x7f, 0x5b, 0x6b, 0x49, 0x1c, 0x6c, 0xb7, 0x74, 0xfb, 0x14, 0x1c, 0x39, 0xf2, 0x71, + 0x38, 0xee, 0xb8, 0x23, 0x6a, 0xbf, 0x08, 0xb2, 0x9d, 0xa6, 0x0d, 0x1a, 0xdc, 0xaa, 0xf7, 0x7e, + 0xff, 0x97, 0xe7, 0xbf, 0x6b, 0xb4, 0x2b, 0x24, 0xa7, 0x11, 0xf8, 0x42, 0x92, 0x73, 0xa0, 0x41, + 0xe8, 0x67, 0x84, 0x93, 0x44, 0x74, 0x32, 0xce, 0x24, 0x73, 0x1a, 0xc6, 0xed, 0xac, 0xdc, 0xd6, + 0x83, 0x31, 0x1b, 0x33, 0xed, 0xf9, 0xea, 0x97, 0xc1, 0x9e, 0x5d, 0xd7, 0x50, 0xad, 0xa7, 0xe7, + 0x9c, 0x3d, 0x64, 0x73, 0xf8, 0x46, 0x78, 0x24, 0x30, 0x4d, 0x25, 0xf0, 0x19, 0x89, 0xdd, 0xea, + 0x93, 0xea, 0x0b, 0xab, 0xdf, 0xc8, 0xf5, 0xd3, 0x5c, 0x76, 0xf6, 0x51, 0x33, 0x82, 0x18, 0xc6, + 0x44, 0xc2, 0x9a, 0xad, 0x69, 0xd6, 0x5e, 0x19, 0x05, 0xbc, 0x87, 0xec, 0x08, 0x32, 0x26, 0xa8, + 0x5c, 0xb3, 0xb7, 0x4c, 0x6e, 0xae, 0x17, 0xe8, 0x3b, 0xe4, 0x72, 0x88, 0x20, 0xc9, 0x24, 0x65, + 0x29, 0xe6, 0xa5, 0xf8, 0xdb, 0x7a, 0xe4, 0xe1, 0xda, 0xef, 0x6f, 0x7e, 0x64, 0x1f, 0x35, 0xcd, + 0x81, 0x71, 0xc8, 0x92, 0x84, 0x0a, 0x41, 0x59, 0xea, 0x5a, 0xa6, 0x91, 0x31, 0x8e, 0x0b, 0x5d, + 0xc1, 0x1c, 0x68, 0x3a, 0x03, 0xb1, 0x51, 0xe9, 0x8e, 0x81, 0x57, 0x46, 0x91, 0xfc, 0x12, 0x35, + 0x69, 0x48, 0xb0, 0xa4, 0x09, 0xb0, 0xa9, 0xc4, 0x29, 0x49, 0x99, 0x70, 0xb7, 0x4c, 0x7f, 0x1a, + 0x92, 0xa1, 0xd1, 0x3f, 0x29, 0xd9, 0x69, 0xa3, 0xed, 0x60, 0x3a, 0x1a, 0x01, 0xc7, 0x82, 0x5e, + 0x82, 0x8b, 0x34, 0x85, 0x8c, 0x34, 0xa0, 0x97, 0xe0, 0xbc, 0x42, 0x0e, 0x0d, 0xc2, 0x22, 0x2c, + 0x88, 0x59, 0x78, 0x2e, 0xdc, 0x6d, 0xf3, 0x69, 0x1a, 0x84, 0x79, 0xda, 0x91, 0xd6, 0x9d, 0x43, + 0xd4, 0x1a, 0x01, 0x60, 0xc9, 0x49, 0x2a, 0x54, 0x68, 0xb9, 0xc3, 0x5d, 0x3d, 0xf5, 0x68, 0x04, + 0x30, 0xcc, 0x81, 0x52, 0x97, 0x0f, 0xe8, 0x71, 0x42, 0xe6, 0x58, 0xdf, 0x3f, 0x56, 0x27, 0x08, + 0x49, 0x1c, 0x0b, 0x9c, 0x01, 0xc7, 0x90, 0xb1, 0x70, 0xe2, 0xde, 0xd3, 0xf3, 0x6e, 0x42, 0xe6, + 0x03, 0xc5, 0x9c, 0x86, 0xe4, 0x58, 0x11, 0x3d, 0xe0, 0x27, 0xca, 0x77, 0x7a, 0xe8, 0x79, 0x04, + 0x23, 0x32, 0x8d, 0x25, 0x4e, 0x68, 0x8a, 0xff, 0xbe, 0x18, 0x39, 0xe1, 0x20, 0x26, 0x2c, 0x8e, + 0xdc, 0xfb, 0x3a, 0xe8, 0x69, 0x0e, 0x7f, 0xa4, 0x69, 0xbf, 0x74, 0x47, 0xc3, 0x15, 0x58, 0x4a, + 0x24, 0xf3, 0xff, 0x24, 0x36, 0xca, 0x89, 0x64, 0xfe, 0xaf, 0xc4, 0x43, 0xd4, 0xd2, 0xfb, 0xbc, + 0x79, 0x43, 0xb6, 0xd9, 0x90, 0xda, 0xeb, 0x4d, 0x1b, 0x3a, 0x41, 0xed, 0x19, 0x89, 0x69, 0x44, + 0x24, 0xe3, 0x58, 0xc4, 0x44, 0x4c, 0xf0, 0xd7, 0x29, 0xf0, 0x8b, 0x8d, 0x22, 0x3b, 0x3a, 0x61, + 0xb7, 0xc0, 0x06, 0x8a, 0xfa, 0xac, 0xa0, 0xa2, 0xc3, 0x7b, 0xeb, 0xc7, 0xcf, 0x76, 0xa5, 0x6b, + 0xd5, 0xeb, 0xf6, 0x56, 0xd7, 0xaa, 0x37, 0x6d, 0xa7, 0x6b, 0xd5, 0x1d, 0x7b, 0xe7, 0xe8, 0xec, + 0xd7, 0xc2, 0xab, 0x5e, 0x2d, 0xbc, 0xea, 0xef, 0x85, 0x57, 0xfd, 0xbe, 0xf4, 0x2a, 0x57, 0x4b, + 0xaf, 0x72, 0xbd, 0xf4, 0x2a, 0x5f, 0xde, 0x8e, 0xa9, 0x9c, 0x4c, 0x83, 0x4e, 0xc8, 0x12, 0x7f, + 0xa0, 0xff, 0x9c, 0xaf, 0xcf, 0x48, 0x20, 0xfc, 0xfc, 0x41, 0xcf, 0xde, 0x1c, 0xf8, 0xf3, 0xf5, + 0xb3, 0x96, 0x17, 0x19, 0x88, 0xa0, 0xa6, 0xdf, 0xeb, 0xc1, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x30, 0x6f, 0xfa, 0xbe, 0xf6, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -255,19 +246,12 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.SafetyMaxSlashPercent != 0 { - i = encodeVarintParams(dAtA, i, uint64(m.SafetyMaxSlashPercent)) + if m.ValidatorSlashQueryThreshold != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.ValidatorSlashQueryThreshold)) i-- dAtA[i] = 0x1 i-- - dAtA[i] = 0x90 - } - if m.SafetyNumValidators != 0 { - i = encodeVarintParams(dAtA, i, uint64(m.SafetyNumValidators)) - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0x88 + dAtA[i] = 0x98 } if m.IbcTransferTimeoutNanos != 0 { i = encodeVarintParams(dAtA, i, uint64(m.IbcTransferTimeoutNanos)) @@ -403,11 +387,8 @@ func (m *Params) Size() (n int) { if m.IbcTransferTimeoutNanos != 0 { n += 2 + sovParams(uint64(m.IbcTransferTimeoutNanos)) } - if m.SafetyNumValidators != 0 { - n += 2 + sovParams(uint64(m.SafetyNumValidators)) - } - if m.SafetyMaxSlashPercent != 0 { - n += 2 + sovParams(uint64(m.SafetyMaxSlashPercent)) + if m.ValidatorSlashQueryThreshold != 0 { + n += 2 + sovParams(uint64(m.ValidatorSlashQueryThreshold)) } return n } @@ -713,30 +694,11 @@ func (m *Params) Unmarshal(dAtA []byte) error { break } } - case 17: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SafetyNumValidators", wireType) - } - m.SafetyNumValidators = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SafetyNumValidators |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 18: + case 19: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SafetyMaxSlashPercent", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorSlashQueryThreshold", wireType) } - m.SafetyMaxSlashPercent = 0 + m.ValidatorSlashQueryThreshold = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowParams @@ -746,7 +708,7 @@ func (m *Params) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SafetyMaxSlashPercent |= uint64(b&0x7F) << shift + m.ValidatorSlashQueryThreshold |= uint64(b&0x7F) << shift if b < 0x80 { break } diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index e85434ff53..7844ce6d59 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -119,6 +119,103 @@ func (m *MsgLiquidStakeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgLiquidStakeResponse proto.InternalMessageInfo +type MsgLSMLiquidStake struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` + LsmTokenIbcDenom string `protobuf:"bytes,3,opt,name=lsm_token_ibc_denom,json=lsmTokenIbcDenom,proto3" json:"lsm_token_ibc_denom,omitempty"` +} + +func (m *MsgLSMLiquidStake) Reset() { *m = MsgLSMLiquidStake{} } +func (m *MsgLSMLiquidStake) String() string { return proto.CompactTextString(m) } +func (*MsgLSMLiquidStake) ProtoMessage() {} +func (*MsgLSMLiquidStake) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{2} +} +func (m *MsgLSMLiquidStake) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgLSMLiquidStake) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgLSMLiquidStake.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgLSMLiquidStake) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgLSMLiquidStake.Merge(m, src) +} +func (m *MsgLSMLiquidStake) XXX_Size() int { + return m.Size() +} +func (m *MsgLSMLiquidStake) XXX_DiscardUnknown() { + xxx_messageInfo_MsgLSMLiquidStake.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgLSMLiquidStake proto.InternalMessageInfo + +func (m *MsgLSMLiquidStake) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgLSMLiquidStake) GetLsmTokenIbcDenom() string { + if m != nil { + return m.LsmTokenIbcDenom + } + return "" +} + +type MsgLSMLiquidStakeResponse struct { + TransactionComplete bool `protobuf:"varint,1,opt,name=transaction_complete,json=transactionComplete,proto3" json:"transaction_complete,omitempty"` +} + +func (m *MsgLSMLiquidStakeResponse) Reset() { *m = MsgLSMLiquidStakeResponse{} } +func (m *MsgLSMLiquidStakeResponse) String() string { return proto.CompactTextString(m) } +func (*MsgLSMLiquidStakeResponse) ProtoMessage() {} +func (*MsgLSMLiquidStakeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{3} +} +func (m *MsgLSMLiquidStakeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgLSMLiquidStakeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgLSMLiquidStakeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgLSMLiquidStakeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgLSMLiquidStakeResponse.Merge(m, src) +} +func (m *MsgLSMLiquidStakeResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgLSMLiquidStakeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgLSMLiquidStakeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgLSMLiquidStakeResponse proto.InternalMessageInfo + +func (m *MsgLSMLiquidStakeResponse) GetTransactionComplete() bool { + if m != nil { + return m.TransactionComplete + } + return false +} + type MsgClearBalance struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` @@ -130,7 +227,7 @@ func (m *MsgClearBalance) Reset() { *m = MsgClearBalance{} } func (m *MsgClearBalance) String() string { return proto.CompactTextString(m) } func (*MsgClearBalance) ProtoMessage() {} func (*MsgClearBalance) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{2} + return fileDescriptor_9b7e09c9ad51cd54, []int{4} } func (m *MsgClearBalance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -187,7 +284,7 @@ func (m *MsgClearBalanceResponse) Reset() { *m = MsgClearBalanceResponse func (m *MsgClearBalanceResponse) String() string { return proto.CompactTextString(m) } func (*MsgClearBalanceResponse) ProtoMessage() {} func (*MsgClearBalanceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{3} + return fileDescriptor_9b7e09c9ad51cd54, []int{5} } func (m *MsgClearBalanceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -227,7 +324,7 @@ func (m *MsgRedeemStake) Reset() { *m = MsgRedeemStake{} } func (m *MsgRedeemStake) String() string { return proto.CompactTextString(m) } func (*MsgRedeemStake) ProtoMessage() {} func (*MsgRedeemStake) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{4} + return fileDescriptor_9b7e09c9ad51cd54, []int{6} } func (m *MsgRedeemStake) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -284,7 +381,7 @@ func (m *MsgRedeemStakeResponse) Reset() { *m = MsgRedeemStakeResponse{} func (m *MsgRedeemStakeResponse) String() string { return proto.CompactTextString(m) } func (*MsgRedeemStakeResponse) ProtoMessage() {} func (*MsgRedeemStakeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{5} + return fileDescriptor_9b7e09c9ad51cd54, []int{7} } func (m *MsgRedeemStakeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -315,22 +412,23 @@ var xxx_messageInfo_MsgRedeemStakeResponse proto.InternalMessageInfo // next: 15 type MsgRegisterHostZone struct { - ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" yaml:"connection_id"` - Bech32Prefix string `protobuf:"bytes,12,opt,name=bech32prefix,proto3" json:"bech32prefix,omitempty"` - HostDenom string `protobuf:"bytes,4,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty" yaml:"host_denom"` - IbcDenom string `protobuf:"bytes,5,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty" yaml:"ibc_denom"` - Creator string `protobuf:"bytes,6,opt,name=creator,proto3" json:"creator,omitempty"` - TransferChannelId string `protobuf:"bytes,10,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty" yaml:"transfer_channel_id"` - UnbondingFrequency uint64 `protobuf:"varint,11,opt,name=unbonding_frequency,json=unbondingFrequency,proto3" json:"unbonding_frequency,omitempty" yaml:"unbonding_frequency"` - MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` - MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,14,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty" yaml:"connection_id"` + Bech32Prefix string `protobuf:"bytes,12,opt,name=bech32prefix,proto3" json:"bech32prefix,omitempty"` + HostDenom string `protobuf:"bytes,4,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty" yaml:"host_denom"` + IbcDenom string `protobuf:"bytes,5,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty" yaml:"ibc_denom"` + Creator string `protobuf:"bytes,6,opt,name=creator,proto3" json:"creator,omitempty"` + TransferChannelId string `protobuf:"bytes,10,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty" yaml:"transfer_channel_id"` + UnbondingPeriod uint64 `protobuf:"varint,11,opt,name=unbonding_period,json=unbondingPeriod,proto3" json:"unbonding_period,omitempty" yaml:"unbonding_period"` + MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` + MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,14,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + LsmLiquidStakeEnabled bool `protobuf:"varint,15,opt,name=lsm_liquid_stake_enabled,json=lsmLiquidStakeEnabled,proto3" json:"lsm_liquid_stake_enabled,omitempty"` } func (m *MsgRegisterHostZone) Reset() { *m = MsgRegisterHostZone{} } func (m *MsgRegisterHostZone) String() string { return proto.CompactTextString(m) } func (*MsgRegisterHostZone) ProtoMessage() {} func (*MsgRegisterHostZone) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{6} + return fileDescriptor_9b7e09c9ad51cd54, []int{8} } func (m *MsgRegisterHostZone) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -366,7 +464,7 @@ func (m *MsgRegisterHostZoneResponse) Reset() { *m = MsgRegisterHostZone func (m *MsgRegisterHostZoneResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterHostZoneResponse) ProtoMessage() {} func (*MsgRegisterHostZoneResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{7} + return fileDescriptor_9b7e09c9ad51cd54, []int{9} } func (m *MsgRegisterHostZoneResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -407,7 +505,7 @@ func (m *MsgClaimUndelegatedTokens) Reset() { *m = MsgClaimUndelegatedTo func (m *MsgClaimUndelegatedTokens) String() string { return proto.CompactTextString(m) } func (*MsgClaimUndelegatedTokens) ProtoMessage() {} func (*MsgClaimUndelegatedTokens) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{8} + return fileDescriptor_9b7e09c9ad51cd54, []int{10} } func (m *MsgClaimUndelegatedTokens) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -471,7 +569,7 @@ func (m *MsgClaimUndelegatedTokensResponse) Reset() { *m = MsgClaimUndel func (m *MsgClaimUndelegatedTokensResponse) String() string { return proto.CompactTextString(m) } func (*MsgClaimUndelegatedTokensResponse) ProtoMessage() {} func (*MsgClaimUndelegatedTokensResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{9} + return fileDescriptor_9b7e09c9ad51cd54, []int{11} } func (m *MsgClaimUndelegatedTokensResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -510,7 +608,7 @@ func (m *MsgRebalanceValidators) Reset() { *m = MsgRebalanceValidators{} func (m *MsgRebalanceValidators) String() string { return proto.CompactTextString(m) } func (*MsgRebalanceValidators) ProtoMessage() {} func (*MsgRebalanceValidators) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{10} + return fileDescriptor_9b7e09c9ad51cd54, []int{12} } func (m *MsgRebalanceValidators) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -567,7 +665,7 @@ func (m *MsgRebalanceValidatorsResponse) Reset() { *m = MsgRebalanceVali func (m *MsgRebalanceValidatorsResponse) String() string { return proto.CompactTextString(m) } func (*MsgRebalanceValidatorsResponse) ProtoMessage() {} func (*MsgRebalanceValidatorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{11} + return fileDescriptor_9b7e09c9ad51cd54, []int{13} } func (m *MsgRebalanceValidatorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -606,7 +704,7 @@ func (m *MsgAddValidators) Reset() { *m = MsgAddValidators{} } func (m *MsgAddValidators) String() string { return proto.CompactTextString(m) } func (*MsgAddValidators) ProtoMessage() {} func (*MsgAddValidators) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{12} + return fileDescriptor_9b7e09c9ad51cd54, []int{14} } func (m *MsgAddValidators) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -663,7 +761,7 @@ func (m *MsgAddValidatorsResponse) Reset() { *m = MsgAddValidatorsRespon func (m *MsgAddValidatorsResponse) String() string { return proto.CompactTextString(m) } func (*MsgAddValidatorsResponse) ProtoMessage() {} func (*MsgAddValidatorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{13} + return fileDescriptor_9b7e09c9ad51cd54, []int{15} } func (m *MsgAddValidatorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -703,7 +801,7 @@ func (m *MsgChangeValidatorWeight) Reset() { *m = MsgChangeValidatorWeig func (m *MsgChangeValidatorWeight) String() string { return proto.CompactTextString(m) } func (*MsgChangeValidatorWeight) ProtoMessage() {} func (*MsgChangeValidatorWeight) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{14} + return fileDescriptor_9b7e09c9ad51cd54, []int{16} } func (m *MsgChangeValidatorWeight) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -767,7 +865,7 @@ func (m *MsgChangeValidatorWeightResponse) Reset() { *m = MsgChangeValid func (m *MsgChangeValidatorWeightResponse) String() string { return proto.CompactTextString(m) } func (*MsgChangeValidatorWeightResponse) ProtoMessage() {} func (*MsgChangeValidatorWeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{15} + return fileDescriptor_9b7e09c9ad51cd54, []int{17} } func (m *MsgChangeValidatorWeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -806,7 +904,7 @@ func (m *MsgDeleteValidator) Reset() { *m = MsgDeleteValidator{} } func (m *MsgDeleteValidator) String() string { return proto.CompactTextString(m) } func (*MsgDeleteValidator) ProtoMessage() {} func (*MsgDeleteValidator) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{16} + return fileDescriptor_9b7e09c9ad51cd54, []int{18} } func (m *MsgDeleteValidator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -863,7 +961,7 @@ func (m *MsgDeleteValidatorResponse) Reset() { *m = MsgDeleteValidatorRe func (m *MsgDeleteValidatorResponse) String() string { return proto.CompactTextString(m) } func (*MsgDeleteValidatorResponse) ProtoMessage() {} func (*MsgDeleteValidatorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{17} + return fileDescriptor_9b7e09c9ad51cd54, []int{19} } func (m *MsgDeleteValidatorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -902,7 +1000,7 @@ func (m *MsgRestoreInterchainAccount) Reset() { *m = MsgRestoreInterchai func (m *MsgRestoreInterchainAccount) String() string { return proto.CompactTextString(m) } func (*MsgRestoreInterchainAccount) ProtoMessage() {} func (*MsgRestoreInterchainAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{18} + return fileDescriptor_9b7e09c9ad51cd54, []int{20} } func (m *MsgRestoreInterchainAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -959,7 +1057,7 @@ func (m *MsgRestoreInterchainAccountResponse) Reset() { *m = MsgRestoreI func (m *MsgRestoreInterchainAccountResponse) String() string { return proto.CompactTextString(m) } func (*MsgRestoreInterchainAccountResponse) ProtoMessage() {} func (*MsgRestoreInterchainAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{19} + return fileDescriptor_9b7e09c9ad51cd54, []int{21} } func (m *MsgRestoreInterchainAccountResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -998,7 +1096,7 @@ func (m *MsgUpdateValidatorSharesExchRate) Reset() { *m = MsgUpdateValid func (m *MsgUpdateValidatorSharesExchRate) String() string { return proto.CompactTextString(m) } func (*MsgUpdateValidatorSharesExchRate) ProtoMessage() {} func (*MsgUpdateValidatorSharesExchRate) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{20} + return fileDescriptor_9b7e09c9ad51cd54, []int{22} } func (m *MsgUpdateValidatorSharesExchRate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1057,7 +1155,7 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) Reset() { func (m *MsgUpdateValidatorSharesExchRateResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateValidatorSharesExchRateResponse) ProtoMessage() {} func (*MsgUpdateValidatorSharesExchRateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{21} + return fileDescriptor_9b7e09c9ad51cd54, []int{23} } func (m *MsgUpdateValidatorSharesExchRateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1089,6 +1187,8 @@ var xxx_messageInfo_MsgUpdateValidatorSharesExchRateResponse proto.InternalMessa func init() { proto.RegisterType((*MsgLiquidStake)(nil), "stride.stakeibc.MsgLiquidStake") proto.RegisterType((*MsgLiquidStakeResponse)(nil), "stride.stakeibc.MsgLiquidStakeResponse") + proto.RegisterType((*MsgLSMLiquidStake)(nil), "stride.stakeibc.MsgLSMLiquidStake") + proto.RegisterType((*MsgLSMLiquidStakeResponse)(nil), "stride.stakeibc.MsgLSMLiquidStakeResponse") proto.RegisterType((*MsgClearBalance)(nil), "stride.stakeibc.MsgClearBalance") proto.RegisterType((*MsgClearBalanceResponse)(nil), "stride.stakeibc.MsgClearBalanceResponse") proto.RegisterType((*MsgRedeemStake)(nil), "stride.stakeibc.MsgRedeemStake") @@ -1114,83 +1214,90 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1215 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcf, 0x4f, 0xe3, 0xc6, - 0x17, 0x8f, 0x17, 0x16, 0xc2, 0x23, 0xfc, 0x32, 0x2c, 0x5f, 0xe3, 0xfd, 0x92, 0x04, 0xd3, 0x1f, - 0x74, 0x5b, 0x12, 0x11, 0xf6, 0x52, 0xd4, 0x1e, 0x08, 0x74, 0xd5, 0x48, 0xd0, 0x4a, 0x66, 0xb7, - 0x2b, 0x21, 0x55, 0xd1, 0xc4, 0x1e, 0x1c, 0x8b, 0x78, 0x1c, 0x3c, 0x0e, 0x0d, 0x3d, 0x54, 0x55, - 0xa5, 0x4a, 0xbd, 0x54, 0x6a, 0x2f, 0x3d, 0x56, 0x7b, 0xac, 0xd4, 0x53, 0xa5, 0xfd, 0x23, 0xf6, - 0xb8, 0xda, 0x53, 0xd5, 0x43, 0x54, 0xc1, 0xa5, 0x67, 0xfe, 0x82, 0xca, 0x63, 0x7b, 0x62, 0x27, - 0x4e, 0xf8, 0xb1, 0xd5, 0x9e, 0x92, 0x37, 0xf3, 0x99, 0xf7, 0xf9, 0xbc, 0xe7, 0xf7, 0x9e, 0xc7, - 0x20, 0x51, 0xd7, 0x31, 0x75, 0x5c, 0xa4, 0x2e, 0x3a, 0xc6, 0x66, 0x4d, 0x2b, 0xba, 0xed, 0x42, - 0xd3, 0xb1, 0x5d, 0x5b, 0x9c, 0xf1, 0x77, 0x0a, 0xe1, 0x8e, 0xbc, 0xd2, 0x0b, 0x35, 0x35, 0x54, - 0x45, 0x9a, 0x66, 0xb7, 0x88, 0xeb, 0x9f, 0x91, 0x73, 0xbd, 0x90, 0x53, 0xd4, 0x30, 0x75, 0xe4, - 0xda, 0x4e, 0x00, 0x58, 0x30, 0x6c, 0xc3, 0x66, 0x7f, 0x8b, 0xde, 0xbf, 0x60, 0x75, 0x49, 0xb3, - 0xa9, 0x65, 0xd3, 0xaa, 0xbf, 0xe1, 0x1b, 0xfe, 0x96, 0xf2, 0xb3, 0x00, 0xd3, 0xfb, 0xd4, 0xd8, - 0x33, 0x4f, 0x5a, 0xa6, 0x7e, 0xe0, 0xb9, 0x15, 0x25, 0x18, 0xd7, 0x1c, 0xec, 0x39, 0x95, 0x84, - 0xbc, 0xb0, 0x36, 0xa1, 0x86, 0xa6, 0xf8, 0x08, 0xc6, 0x90, 0xe5, 0xc9, 0x91, 0xee, 0x78, 0x1b, - 0xe5, 0xc2, 0x8b, 0x4e, 0x2e, 0xf5, 0x57, 0x27, 0xf7, 0x8e, 0x61, 0xba, 0xf5, 0x56, 0xad, 0xa0, - 0xd9, 0x56, 0xe0, 0x3d, 0xf8, 0x59, 0xa7, 0xfa, 0x71, 0xd1, 0x3d, 0x6b, 0x62, 0x5a, 0xa8, 0x10, - 0x57, 0x0d, 0x4e, 0x8b, 0xcb, 0x00, 0x75, 0x9b, 0xba, 0x55, 0x1d, 0x13, 0xdb, 0x92, 0x46, 0x18, - 0xc9, 0x84, 0xb7, 0xb2, 0xeb, 0x2d, 0x28, 0x12, 0x2c, 0xc6, 0x25, 0xa9, 0x98, 0x36, 0x6d, 0x42, - 0xb1, 0xf2, 0x9b, 0x00, 0x33, 0xfb, 0xd4, 0xd8, 0x69, 0x60, 0xe4, 0x94, 0x51, 0x03, 0x11, 0x6d, - 0x98, 0xdc, 0x25, 0x48, 0x6b, 0x75, 0x64, 0x92, 0xaa, 0xa9, 0xfb, 0x82, 0xd5, 0x71, 0x66, 0x57, - 0xf4, 0x48, 0x24, 0x23, 0xaf, 0x15, 0x89, 0x47, 0x5e, 0x47, 0x84, 0xe0, 0x86, 0x34, 0xca, 0x19, - 0x3c, 0x53, 0x59, 0x82, 0xff, 0xf5, 0x28, 0xe5, 0x51, 0xfc, 0xee, 0xe7, 0x5c, 0xc5, 0x3a, 0xc6, - 0xd6, 0x9b, 0xca, 0xf9, 0x7d, 0x60, 0x19, 0xae, 0x7e, 0x6d, 0x13, 0x1c, 0xa4, 0x3c, 0xed, 0x2d, - 0x1c, 0xda, 0x04, 0x8b, 0x32, 0xa4, 0x1d, 0xac, 0x61, 0xf3, 0x14, 0x3b, 0x41, 0x1c, 0xdc, 0x0e, - 0x9e, 0x46, 0x44, 0x2c, 0x8f, 0xe3, 0xbb, 0xbb, 0x30, 0xcf, 0xb6, 0x0c, 0x93, 0xba, 0xd8, 0xf9, - 0x34, 0xf4, 0xf6, 0x31, 0x4c, 0x69, 0x36, 0x21, 0x58, 0x73, 0x4d, 0xbb, 0x9b, 0xfc, 0xb2, 0x74, - 0xd9, 0xc9, 0x2d, 0x9c, 0x21, 0xab, 0xb1, 0xa5, 0xc4, 0xb6, 0x15, 0x35, 0xd3, 0xb5, 0x2b, 0xba, - 0xa8, 0x40, 0xa6, 0x86, 0xb5, 0xfa, 0x66, 0xa9, 0xe9, 0xe0, 0x23, 0xb3, 0x2d, 0x65, 0x98, 0xa0, - 0xd8, 0x9a, 0xf8, 0x30, 0x56, 0x41, 0x4c, 0x72, 0xf9, 0xde, 0x65, 0x27, 0x37, 0xe7, 0xfb, 0xef, - 0xee, 0x29, 0x91, 0xc2, 0x12, 0x37, 0x60, 0xc2, 0xac, 0x69, 0xc1, 0xa1, 0xbb, 0xec, 0xd0, 0xc2, - 0x65, 0x27, 0x37, 0xeb, 0x1f, 0xe2, 0x5b, 0x8a, 0x9a, 0x36, 0x6b, 0x9a, 0x7f, 0x24, 0xf2, 0x60, - 0xc6, 0xe2, 0x0f, 0xe6, 0x33, 0x98, 0x77, 0x1d, 0x44, 0xe8, 0x11, 0x76, 0xaa, 0xc1, 0x43, 0xf7, - 0x62, 0x05, 0xe6, 0x36, 0x7b, 0xd9, 0xc9, 0xc9, 0xbe, 0xdb, 0x04, 0x90, 0xa2, 0xce, 0x85, 0xab, - 0x3b, 0xfe, 0x62, 0x45, 0x17, 0x3f, 0x87, 0xf9, 0x16, 0xa9, 0xd9, 0x44, 0x37, 0x89, 0x51, 0x3d, - 0x72, 0xf0, 0x49, 0x0b, 0x13, 0xed, 0x4c, 0x9a, 0xcc, 0x0b, 0x6b, 0xa3, 0x51, 0x7f, 0x09, 0x20, - 0x45, 0x15, 0xf9, 0xea, 0xa3, 0x70, 0x51, 0x6c, 0xc0, 0xbc, 0x65, 0x92, 0xaa, 0x83, 0x75, 0x6c, - 0x35, 0x59, 0xae, 0x1d, 0xe4, 0x62, 0x69, 0x8a, 0x09, 0xfc, 0xe8, 0x06, 0x65, 0xb4, 0x8b, 0xb5, - 0x57, 0xcf, 0xd7, 0x21, 0x98, 0x1b, 0xbb, 0x58, 0x53, 0xe7, 0x2c, 0x93, 0xa8, 0xdc, 0xaf, 0x8a, - 0x5c, 0xcc, 0xd8, 0x50, 0xbb, 0x8f, 0x6d, 0xfa, 0x3f, 0x61, 0x43, 0xed, 0x38, 0xdb, 0x56, 0xfa, - 0x87, 0x67, 0xb9, 0xd4, 0x3f, 0xcf, 0x72, 0x29, 0x65, 0x19, 0xee, 0x27, 0xd4, 0x20, 0xaf, 0xd1, - 0xef, 0x05, 0x58, 0x62, 0x7d, 0x88, 0x4c, 0xeb, 0x09, 0xd1, 0x71, 0x03, 0x1b, 0xc8, 0xc5, 0xfa, - 0x63, 0xfb, 0x18, 0x13, 0x3a, 0xa4, 0xed, 0xf2, 0x90, 0xe1, 0xed, 0xd2, 0x9d, 0x1f, 0x10, 0x76, - 0x4c, 0x45, 0x17, 0x17, 0xe0, 0x2e, 0x6e, 0xda, 0x5a, 0x9d, 0x35, 0xd3, 0xa8, 0xea, 0x1b, 0xe2, - 0x22, 0x8c, 0x51, 0x4c, 0x74, 0xde, 0x47, 0x81, 0xa5, 0xac, 0xc2, 0xca, 0x40, 0x19, 0x5c, 0xac, - 0x1b, 0xb4, 0x5a, 0xcd, 0x1f, 0x18, 0x5f, 0x84, 0xc3, 0x7d, 0x98, 0xd0, 0x58, 0x5f, 0xdf, 0xe9, - 0xe9, 0xeb, 0x55, 0x98, 0x22, 0x2d, 0xab, 0xea, 0x84, 0x1e, 0x03, 0xad, 0x19, 0xd2, 0xb2, 0x38, - 0x8b, 0x92, 0x87, 0x6c, 0x32, 0x6b, 0x34, 0x89, 0xb3, 0xfb, 0xd4, 0xd8, 0xd6, 0xf5, 0xd7, 0x97, - 0xb4, 0x05, 0xc0, 0x5f, 0x5a, 0x54, 0x1a, 0xc9, 0x8f, 0xac, 0x4d, 0x96, 0xe4, 0x42, 0xcf, 0xbb, - 0xb0, 0xc0, 0x79, 0xd4, 0x08, 0x5a, 0x91, 0x41, 0xea, 0x95, 0xc1, 0x35, 0xfe, 0x2a, 0xb0, 0x4d, - 0xaf, 0x9f, 0x8c, 0x6e, 0x0c, 0x4f, 0xb1, 0x69, 0xd4, 0xdd, 0xdb, 0x6a, 0xdd, 0x84, 0xf4, 0x29, - 0x6a, 0x54, 0x91, 0xae, 0x3b, 0xc1, 0x7b, 0x42, 0x7a, 0xf5, 0x7c, 0x7d, 0x21, 0x28, 0xcd, 0x6d, - 0x5d, 0x77, 0x30, 0xa5, 0x07, 0xae, 0x63, 0x12, 0x43, 0x1d, 0x3f, 0x45, 0x0d, 0x6f, 0xc5, 0xab, - 0x80, 0xaf, 0x18, 0x2b, 0xab, 0x80, 0x51, 0x35, 0xb0, 0x14, 0x05, 0xf2, 0x83, 0xf4, 0xf1, 0x20, - 0xbe, 0x15, 0x40, 0xdc, 0xa7, 0xc6, 0x2e, 0x6e, 0x60, 0xb7, 0x0b, 0x7a, 0x93, 0xf2, 0x95, 0xff, - 0x83, 0xdc, 0xaf, 0x80, 0x0b, 0xfc, 0x45, 0x08, 0xda, 0x8d, 0xba, 0xb6, 0x83, 0x2b, 0xc4, 0xc5, - 0x0e, 0x7b, 0xa5, 0x6e, 0xfb, 0xd7, 0x94, 0xdb, 0xbd, 0x8c, 0xcb, 0x90, 0x09, 0xae, 0x39, 0x55, - 0x6f, 0x04, 0x30, 0xad, 0xd3, 0xa5, 0x5c, 0x5f, 0x51, 0x54, 0x76, 0xb6, 0x03, 0x9e, 0xc7, 0x67, - 0x4d, 0xac, 0x4e, 0xa2, 0xae, 0xa1, 0xbc, 0x0d, 0xab, 0x43, 0x74, 0x71, 0xfd, 0x27, 0xec, 0x21, - 0x3c, 0x69, 0xea, 0x28, 0x12, 0xdd, 0x41, 0x1d, 0x39, 0x98, 0x7e, 0xd2, 0xd6, 0xea, 0x6c, 0x92, - 0xdd, 0x2a, 0x06, 0x09, 0xbc, 0x0c, 0xda, 0x4d, 0x1c, 0xa4, 0x5a, 0x0d, 0x4d, 0xe5, 0x01, 0xac, - 0x5d, 0x45, 0x19, 0xca, 0x2b, 0xfd, 0x31, 0x01, 0x23, 0xfb, 0xd4, 0x10, 0x9f, 0xc2, 0x64, 0xf4, - 0x46, 0xd6, 0x9f, 0x8a, 0xf8, 0xfd, 0x48, 0x7e, 0xf7, 0x0a, 0x40, 0x48, 0xe0, 0x39, 0x8e, 0x5e, - 0x3b, 0x12, 0x1d, 0x47, 0x00, 0xc9, 0x8e, 0x13, 0xee, 0x02, 0xe2, 0x11, 0xcc, 0xf6, 0xdd, 0x03, - 0xde, 0x4a, 0x3e, 0x1c, 0x47, 0xc9, 0x1f, 0x5c, 0x07, 0xc5, 0x79, 0xda, 0xb0, 0x38, 0x60, 0x96, - 0x3f, 0x48, 0xf2, 0x93, 0x8c, 0x95, 0x4b, 0xd7, 0xc7, 0x72, 0x66, 0x1b, 0xe6, 0x93, 0x26, 0xf3, - 0x80, 0x0c, 0xf5, 0x01, 0xe5, 0xe2, 0x35, 0x81, 0x9c, 0xf0, 0x4b, 0x98, 0x8a, 0x4f, 0xdc, 0x95, - 0x24, 0x0f, 0x31, 0x88, 0xfc, 0xde, 0x95, 0x10, 0xee, 0xbe, 0x05, 0xf7, 0x92, 0x87, 0x65, 0xa2, - 0x8f, 0x44, 0xa8, 0xbc, 0x71, 0x6d, 0x28, 0xa7, 0xd5, 0x60, 0xa6, 0x77, 0xbc, 0xad, 0x26, 0x79, - 0xe9, 0x01, 0xc9, 0xef, 0x5f, 0x03, 0xc4, 0x49, 0xbe, 0x01, 0x69, 0xe0, 0x88, 0x1a, 0x50, 0x6f, - 0xc9, 0x68, 0xf9, 0xe1, 0x4d, 0xd0, 0x9c, 0xff, 0x47, 0x01, 0x96, 0x87, 0x0f, 0x99, 0xc4, 0xcc, - 0x0d, 0x3d, 0x22, 0x7f, 0x78, 0xe3, 0x23, 0x5c, 0xcf, 0x21, 0x64, 0x62, 0xdf, 0x4c, 0xf9, 0xe4, - 0xfa, 0xef, 0x22, 0xe4, 0xb5, 0xab, 0x10, 0xa1, 0xef, 0xf2, 0xde, 0x8b, 0xf3, 0xac, 0xf0, 0xf2, - 0x3c, 0x2b, 0xfc, 0x7d, 0x9e, 0x15, 0x7e, 0xba, 0xc8, 0xa6, 0x5e, 0x5e, 0x64, 0x53, 0x7f, 0x5e, - 0x64, 0x53, 0x87, 0xa5, 0xc8, 0x6d, 0xef, 0x80, 0x79, 0x5b, 0xdf, 0x43, 0x35, 0x5a, 0x0c, 0x3e, - 0x62, 0x4f, 0x37, 0x36, 0x8b, 0xed, 0xc8, 0x87, 0xb1, 0x77, 0xfb, 0xab, 0x8d, 0xb1, 0xcf, 0xd2, - 0xcd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x52, 0x1a, 0xd0, 0x9d, 0x38, 0x0f, 0x00, 0x00, + // 1326 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6f, 0xdc, 0x44, + 0x14, 0x8f, 0x9b, 0x34, 0xdd, 0xbe, 0x6c, 0xbe, 0x9c, 0xb4, 0x75, 0x5c, 0xba, 0xbb, 0x75, 0xf8, + 0x08, 0x85, 0xec, 0x2a, 0x49, 0x25, 0x44, 0x05, 0x87, 0x6c, 0x52, 0xc4, 0x4a, 0x4d, 0x85, 0x9c, + 0x96, 0x4a, 0x95, 0x90, 0x99, 0xf5, 0x4c, 0xbd, 0x56, 0xed, 0x99, 0xad, 0xc7, 0x1b, 0xb6, 0x1c, + 0x10, 0x17, 0x24, 0x2e, 0x48, 0x20, 0x24, 0x8e, 0xa8, 0x07, 0x0e, 0x48, 0xdc, 0x50, 0xff, 0x88, + 0x1e, 0xab, 0x9e, 0x10, 0x87, 0x15, 0x6a, 0x2f, 0x9c, 0xf3, 0x17, 0x20, 0x8f, 0xbd, 0xb3, 0xf6, + 0xae, 0xf3, 0xd1, 0x16, 0xe5, 0x94, 0x7d, 0xf3, 0x7e, 0xf3, 0xde, 0xef, 0xbd, 0x79, 0xf3, 0xe6, + 0xc5, 0xa0, 0xf1, 0x30, 0x70, 0x31, 0xa9, 0xf1, 0x10, 0xdd, 0x27, 0x6e, 0xd3, 0xae, 0x85, 0xdd, + 0x6a, 0x3b, 0x60, 0x21, 0x53, 0x67, 0x63, 0x4d, 0xb5, 0xaf, 0xd1, 0x2f, 0x0f, 0x43, 0x5d, 0x1b, + 0x59, 0xc8, 0xb6, 0x59, 0x87, 0x86, 0xf1, 0x1e, 0xbd, 0x3c, 0x0c, 0xd9, 0x43, 0x9e, 0x8b, 0x51, + 0xc8, 0x82, 0x04, 0xb0, 0xe8, 0x30, 0x87, 0x89, 0x9f, 0xb5, 0xe8, 0x57, 0xb2, 0xba, 0x64, 0x33, + 0xee, 0x33, 0x6e, 0xc5, 0x8a, 0x58, 0x88, 0x55, 0xc6, 0x4f, 0x0a, 0xcc, 0xec, 0x70, 0xe7, 0x86, + 0xfb, 0xa0, 0xe3, 0xe2, 0xdd, 0xc8, 0xac, 0xaa, 0xc1, 0x19, 0x3b, 0x20, 0x91, 0x51, 0x4d, 0xa9, + 0x28, 0x2b, 0x67, 0xcd, 0xbe, 0xa8, 0x7e, 0x02, 0x93, 0xc8, 0x8f, 0xe8, 0x68, 0xa7, 0x22, 0x45, + 0xbd, 0xfa, 0xa4, 0x57, 0x1e, 0xfb, 0xbb, 0x57, 0x7e, 0xdb, 0x71, 0xc3, 0x56, 0xa7, 0x59, 0xb5, + 0x99, 0x9f, 0x58, 0x4f, 0xfe, 0xac, 0x72, 0x7c, 0xbf, 0x16, 0x3e, 0x6c, 0x13, 0x5e, 0x6d, 0xd0, + 0xd0, 0x4c, 0x76, 0xab, 0x97, 0x00, 0x5a, 0x8c, 0x87, 0x16, 0x26, 0x94, 0xf9, 0xda, 0xb8, 0x70, + 0x72, 0x36, 0x5a, 0xd9, 0x8e, 0x16, 0x0c, 0x0d, 0xce, 0x67, 0x29, 0x99, 0x84, 0xb7, 0x19, 0xe5, + 0xc4, 0xf8, 0x4d, 0x81, 0xf9, 0x48, 0xb5, 0xbb, 0x73, 0xb2, 0x84, 0x57, 0x61, 0xc1, 0xe3, 0xbe, + 0x15, 0xb2, 0xfb, 0x84, 0x5a, 0x6e, 0xd3, 0xce, 0x30, 0x9f, 0xf3, 0xb8, 0x7f, 0x2b, 0xd2, 0x34, + 0x9a, 0x76, 0x1c, 0xc0, 0x4d, 0x58, 0x1a, 0x61, 0xd9, 0x8f, 0x41, 0x5d, 0x83, 0xc5, 0x30, 0x40, + 0x94, 0x23, 0x3b, 0x74, 0x19, 0xb5, 0x6c, 0xe6, 0xb7, 0x3d, 0x12, 0x12, 0x41, 0xbd, 0x60, 0x2e, + 0xa4, 0x74, 0x5b, 0x89, 0xca, 0xf8, 0x5d, 0x81, 0xd9, 0x1d, 0xee, 0x6c, 0x79, 0x04, 0x05, 0x75, + 0xe4, 0x21, 0x6a, 0x1f, 0x16, 0xf4, 0x12, 0x14, 0xec, 0x16, 0x72, 0xa9, 0xe5, 0xe2, 0x38, 0x6c, + 0xf3, 0x8c, 0x90, 0x1b, 0x38, 0x95, 0x8f, 0xf1, 0xd7, 0xca, 0x47, 0xe4, 0xbc, 0x85, 0x28, 0x25, + 0x9e, 0x36, 0x21, 0x3d, 0x44, 0xa2, 0xb1, 0x04, 0x17, 0x86, 0x98, 0xca, 0xc3, 0xfb, 0x23, 0x2e, + 0x35, 0x93, 0x60, 0x42, 0xfc, 0x93, 0x3a, 0xb9, 0x8b, 0x20, 0x0a, 0xcb, 0xfa, 0x9a, 0x51, 0x92, + 0x9c, 0x57, 0x21, 0x5a, 0xb8, 0xcb, 0x28, 0x51, 0x75, 0x28, 0x04, 0xc4, 0x26, 0xee, 0x1e, 0x09, + 0x92, 0x38, 0xa4, 0x9c, 0x14, 0x61, 0x8a, 0xac, 0x8c, 0xe3, 0xcf, 0xd3, 0xb0, 0x20, 0x54, 0x8e, + 0xcb, 0x43, 0x12, 0x7c, 0xda, 0xb7, 0xf6, 0x31, 0x4c, 0xdb, 0x8c, 0x52, 0x12, 0x9f, 0x6b, 0x3f, + 0xf9, 0x75, 0x6d, 0xbf, 0x57, 0x5e, 0x7c, 0x88, 0x7c, 0xef, 0x9a, 0x91, 0x51, 0x1b, 0x66, 0x71, + 0x20, 0x37, 0xb0, 0x6a, 0x40, 0xb1, 0x49, 0xec, 0xd6, 0xc6, 0x7a, 0x3b, 0x20, 0xf7, 0xdc, 0xae, + 0x56, 0x14, 0x84, 0x32, 0x6b, 0xea, 0xd5, 0xcc, 0xc5, 0x11, 0x94, 0xeb, 0xe7, 0xf6, 0x7b, 0xe5, + 0xf9, 0xd8, 0xfe, 0x40, 0x67, 0xa4, 0xee, 0x93, 0xba, 0x06, 0x67, 0x07, 0x35, 0x7b, 0x5a, 0x6c, + 0x5a, 0xdc, 0xef, 0x95, 0xe7, 0xe2, 0x4d, 0x52, 0x65, 0x98, 0x05, 0x37, 0xa9, 0xe0, 0xf4, 0xc1, + 0x4c, 0x66, 0x0f, 0xe6, 0x26, 0xc4, 0x25, 0x7a, 0x8f, 0x04, 0x56, 0x72, 0xe8, 0x51, 0xac, 0x20, + 0xcc, 0x96, 0xf6, 0x7b, 0x65, 0x3d, 0x36, 0x9b, 0x03, 0x32, 0xcc, 0xf9, 0xfe, 0xea, 0x56, 0xbc, + 0x28, 0x4a, 0x72, 0xae, 0x43, 0x9b, 0x8c, 0x62, 0x97, 0x3a, 0x56, 0x9b, 0x04, 0x2e, 0xc3, 0xda, + 0x54, 0x45, 0x59, 0x99, 0xa8, 0x5f, 0xdc, 0xef, 0x95, 0x2f, 0xc4, 0xc6, 0x86, 0x11, 0x86, 0x39, + 0x2b, 0x97, 0x3e, 0x13, 0x2b, 0xaa, 0x07, 0x0b, 0xbe, 0x4b, 0xad, 0x80, 0x60, 0xe2, 0xb7, 0x45, + 0x8a, 0x03, 0x14, 0x12, 0x6d, 0x5a, 0xf0, 0xfa, 0xe8, 0x25, 0xaa, 0x67, 0x9b, 0xd8, 0xcf, 0x1e, + 0xaf, 0x42, 0xd2, 0x25, 0xb7, 0x89, 0x6d, 0xce, 0xfb, 0x2e, 0x35, 0xa5, 0x5d, 0x13, 0x85, 0x44, + 0x78, 0x43, 0xdd, 0x11, 0x6f, 0x33, 0xff, 0x8b, 0x37, 0xd4, 0x1d, 0xf2, 0xf6, 0x01, 0x68, 0x51, + 0xfb, 0xf1, 0x44, 0x37, 0xb1, 0x44, 0xf3, 0xb7, 0x08, 0x45, 0x4d, 0x8f, 0x60, 0x6d, 0x56, 0xb4, + 0x8d, 0x73, 0x1e, 0xf7, 0x53, 0xcd, 0xe6, 0x7a, 0xac, 0xbc, 0x56, 0xf8, 0xfe, 0x51, 0x79, 0xec, + 0xdf, 0x47, 0xe5, 0x31, 0xe3, 0x12, 0x5c, 0xcc, 0xa9, 0x59, 0x59, 0xd3, 0xdf, 0x29, 0xa2, 0x65, + 0x6d, 0x79, 0xc8, 0xf5, 0x6f, 0x53, 0x4c, 0x3c, 0xe2, 0xa0, 0x90, 0x60, 0xd1, 0xd6, 0xf8, 0x21, + 0xd7, 0xb4, 0x02, 0x45, 0x79, 0xbd, 0x06, 0xfd, 0x06, 0xfa, 0x37, 0xac, 0x81, 0xd5, 0x45, 0x38, + 0x4d, 0xda, 0xcc, 0x6e, 0x89, 0xcb, 0x37, 0x61, 0xc6, 0x82, 0x7a, 0x1e, 0x26, 0x39, 0xa1, 0x58, + 0xde, 0xbb, 0x44, 0x32, 0x96, 0xe1, 0xf2, 0x81, 0x34, 0x24, 0xd9, 0x30, 0xb9, 0x9a, 0xcd, 0xb8, + 0xc1, 0x7c, 0xde, 0x7f, 0x03, 0x0f, 0x23, 0x9a, 0xe9, 0x03, 0xa7, 0x86, 0xfa, 0xc0, 0x32, 0x4c, + 0xd3, 0x8e, 0x6f, 0x05, 0x7d, 0x8b, 0x09, 0xd7, 0x22, 0xed, 0xf8, 0xd2, 0x8b, 0x51, 0x81, 0x52, + 0xbe, 0xd7, 0x74, 0x12, 0xe7, 0x76, 0xb8, 0xb3, 0x89, 0xf1, 0xeb, 0x53, 0xba, 0x06, 0x20, 0xdf, + 0x76, 0xae, 0x8d, 0x57, 0xc6, 0x57, 0xa6, 0xd6, 0xf5, 0xea, 0xd0, 0xc8, 0x50, 0x95, 0x7e, 0xcc, + 0x14, 0xda, 0xd0, 0x41, 0x1b, 0xa6, 0x21, 0x39, 0xfe, 0xaa, 0x08, 0x65, 0x74, 0xff, 0x9c, 0x41, + 0x0c, 0x77, 0x88, 0xeb, 0xb4, 0xc2, 0x57, 0xe5, 0xba, 0x01, 0x85, 0x3d, 0xe4, 0x59, 0x08, 0xe3, + 0x20, 0x79, 0x57, 0xb4, 0x67, 0x8f, 0x57, 0x17, 0x93, 0x9a, 0xde, 0xc4, 0x38, 0x20, 0x9c, 0xef, + 0x86, 0x81, 0x4b, 0x1d, 0xf3, 0xcc, 0x1e, 0xf2, 0xa2, 0x95, 0xa8, 0x02, 0xbe, 0x12, 0x5e, 0x45, + 0x05, 0x4c, 0x98, 0x89, 0x64, 0x18, 0x50, 0x39, 0x88, 0x9f, 0x0c, 0xe2, 0x5b, 0x05, 0xd4, 0x1d, + 0xee, 0x6c, 0x93, 0xe8, 0x75, 0x94, 0xa0, 0x93, 0xa4, 0x6f, 0xbc, 0x01, 0xfa, 0x28, 0x03, 0x49, + 0xf0, 0x17, 0x25, 0xb9, 0x6e, 0x3c, 0x64, 0x01, 0x69, 0xd0, 0x90, 0x04, 0xe2, 0x09, 0xde, 0x8c, + 0xa7, 0xb9, 0x57, 0x7b, 0xbc, 0xeb, 0x50, 0x4c, 0xa6, 0x41, 0x2b, 0xea, 0x1d, 0x82, 0xeb, 0xcc, + 0x7a, 0x79, 0xa4, 0x28, 0x1a, 0x5b, 0x9b, 0x89, 0x9f, 0x5b, 0x0f, 0xdb, 0xc4, 0x9c, 0x42, 0x03, + 0xc1, 0x78, 0x0b, 0x96, 0x0f, 0xe1, 0x25, 0xf9, 0x3f, 0x10, 0x87, 0x70, 0xbb, 0x8d, 0x51, 0x2a, + 0xba, 0xdd, 0x16, 0x0a, 0x08, 0xbf, 0xde, 0xb5, 0x5b, 0xa2, 0x29, 0xbd, 0x52, 0x0c, 0x1a, 0x44, + 0x19, 0x64, 0x6d, 0x92, 0xa4, 0xda, 0xec, 0x8b, 0xc6, 0x15, 0x58, 0x39, 0xca, 0x65, 0x9f, 0xde, + 0xfa, 0xcf, 0x00, 0xe3, 0x3b, 0xdc, 0x51, 0xef, 0xc0, 0x54, 0x7a, 0x0e, 0x1c, 0x4d, 0x45, 0x76, + 0x8c, 0xd4, 0xdf, 0x39, 0x02, 0x20, 0x67, 0xb4, 0x2f, 0x61, 0x66, 0x68, 0xc6, 0x34, 0x72, 0xb7, + 0x66, 0x30, 0xfa, 0x95, 0xa3, 0x31, 0xd2, 0xc3, 0x1d, 0x98, 0x4a, 0x0f, 0x42, 0xb9, 0xd4, 0x53, + 0x80, 0x7c, 0xea, 0x39, 0xd3, 0x89, 0x7a, 0x0f, 0xe6, 0x46, 0x26, 0x93, 0x37, 0xf3, 0x37, 0x67, + 0x51, 0xfa, 0xfb, 0xc7, 0x41, 0x49, 0x3f, 0x5d, 0x38, 0x7f, 0xc0, 0x6b, 0x91, 0x9b, 0x86, 0x7c, + 0xac, 0xbe, 0x7e, 0x7c, 0xac, 0xf4, 0xcc, 0x60, 0x21, 0xaf, 0xf7, 0x1f, 0x90, 0xa1, 0x11, 0xa0, + 0x5e, 0x3b, 0x26, 0x50, 0x3a, 0xfc, 0x02, 0xa6, 0xb3, 0x3d, 0xfd, 0x72, 0x9e, 0x85, 0x0c, 0x44, + 0x7f, 0xf7, 0x48, 0x88, 0x34, 0xdf, 0x81, 0x73, 0xf9, 0xed, 0x38, 0xd7, 0x46, 0x2e, 0x54, 0x5f, + 0x3b, 0x36, 0x54, 0xba, 0xb5, 0x61, 0x76, 0xb8, 0x81, 0x2e, 0xe7, 0x59, 0x19, 0x02, 0xe9, 0xef, + 0x1d, 0x03, 0x24, 0x9d, 0x7c, 0x03, 0xda, 0x81, 0x4d, 0xf0, 0x80, 0x7a, 0xcb, 0x47, 0xeb, 0x57, + 0x5f, 0x06, 0x2d, 0xfd, 0xff, 0xa0, 0xc0, 0xa5, 0xc3, 0xdb, 0x58, 0x6e, 0xe6, 0x0e, 0xdd, 0xa2, + 0x7f, 0xf8, 0xd2, 0x5b, 0x24, 0x9f, 0xbb, 0x50, 0xcc, 0xfc, 0x17, 0x57, 0xc9, 0xaf, 0xff, 0x01, + 0x42, 0x5f, 0x39, 0x0a, 0xd1, 0xb7, 0x5d, 0xbf, 0xf1, 0xe4, 0x79, 0x49, 0x79, 0xfa, 0xbc, 0xa4, + 0xfc, 0xf3, 0xbc, 0xa4, 0xfc, 0xf8, 0xa2, 0x34, 0xf6, 0xf4, 0x45, 0x69, 0xec, 0xaf, 0x17, 0xa5, + 0xb1, 0xbb, 0xeb, 0xa9, 0x41, 0x74, 0x57, 0x58, 0x5b, 0xbd, 0x81, 0x9a, 0xbc, 0x96, 0x7c, 0x4d, + 0xd8, 0x5b, 0xdb, 0xa8, 0x75, 0x53, 0x5f, 0x28, 0xa2, 0xc1, 0xb4, 0x39, 0x29, 0xbe, 0x0f, 0x6c, + 0xfc, 0x17, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xaf, 0xd8, 0xd3, 0xc1, 0x10, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1206,6 +1313,7 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { LiquidStake(ctx context.Context, in *MsgLiquidStake, opts ...grpc.CallOption) (*MsgLiquidStakeResponse, error) + LSMLiquidStake(ctx context.Context, in *MsgLSMLiquidStake, opts ...grpc.CallOption) (*MsgLSMLiquidStakeResponse, error) RedeemStake(ctx context.Context, in *MsgRedeemStake, opts ...grpc.CallOption) (*MsgRedeemStakeResponse, error) RegisterHostZone(ctx context.Context, in *MsgRegisterHostZone, opts ...grpc.CallOption) (*MsgRegisterHostZoneResponse, error) ClaimUndelegatedTokens(ctx context.Context, in *MsgClaimUndelegatedTokens, opts ...grpc.CallOption) (*MsgClaimUndelegatedTokensResponse, error) @@ -1235,6 +1343,15 @@ func (c *msgClient) LiquidStake(ctx context.Context, in *MsgLiquidStake, opts .. return out, nil } +func (c *msgClient) LSMLiquidStake(ctx context.Context, in *MsgLSMLiquidStake, opts ...grpc.CallOption) (*MsgLSMLiquidStakeResponse, error) { + out := new(MsgLSMLiquidStakeResponse) + err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/LSMLiquidStake", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) RedeemStake(ctx context.Context, in *MsgRedeemStake, opts ...grpc.CallOption) (*MsgRedeemStakeResponse, error) { out := new(MsgRedeemStakeResponse) err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/RedeemStake", in, out, opts...) @@ -1328,6 +1445,7 @@ func (c *msgClient) ClearBalance(ctx context.Context, in *MsgClearBalance, opts // MsgServer is the server API for Msg service. type MsgServer interface { LiquidStake(context.Context, *MsgLiquidStake) (*MsgLiquidStakeResponse, error) + LSMLiquidStake(context.Context, *MsgLSMLiquidStake) (*MsgLSMLiquidStakeResponse, error) RedeemStake(context.Context, *MsgRedeemStake) (*MsgRedeemStakeResponse, error) RegisterHostZone(context.Context, *MsgRegisterHostZone) (*MsgRegisterHostZoneResponse, error) ClaimUndelegatedTokens(context.Context, *MsgClaimUndelegatedTokens) (*MsgClaimUndelegatedTokensResponse, error) @@ -1347,6 +1465,9 @@ type UnimplementedMsgServer struct { func (*UnimplementedMsgServer) LiquidStake(ctx context.Context, req *MsgLiquidStake) (*MsgLiquidStakeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method LiquidStake not implemented") } +func (*UnimplementedMsgServer) LSMLiquidStake(ctx context.Context, req *MsgLSMLiquidStake) (*MsgLSMLiquidStakeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LSMLiquidStake not implemented") +} func (*UnimplementedMsgServer) RedeemStake(ctx context.Context, req *MsgRedeemStake) (*MsgRedeemStakeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RedeemStake not implemented") } @@ -1400,6 +1521,24 @@ func _Msg_LiquidStake_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } +func _Msg_LSMLiquidStake_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgLSMLiquidStake) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).LSMLiquidStake(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.stakeibc.Msg/LSMLiquidStake", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).LSMLiquidStake(ctx, req.(*MsgLSMLiquidStake)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_RedeemStake_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgRedeemStake) if err := dec(in); err != nil { @@ -1588,6 +1727,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "LiquidStake", Handler: _Msg_LiquidStake_Handler, }, + { + MethodName: "LSMLiquidStake", + Handler: _Msg_LSMLiquidStake_Handler, + }, { MethodName: "RedeemStake", Handler: _Msg_RedeemStake_Handler, @@ -1703,6 +1846,86 @@ func (m *MsgLiquidStakeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgLSMLiquidStake) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgLSMLiquidStake) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgLSMLiquidStake) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.LsmTokenIbcDenom) > 0 { + i -= len(m.LsmTokenIbcDenom) + copy(dAtA[i:], m.LsmTokenIbcDenom) + i = encodeVarintTx(dAtA, i, uint64(len(m.LsmTokenIbcDenom))) + i-- + dAtA[i] = 0x1a + } + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgLSMLiquidStakeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgLSMLiquidStakeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgLSMLiquidStakeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.TransactionComplete { + i-- + if m.TransactionComplete { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *MsgClearBalance) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1877,6 +2100,16 @@ func (m *MsgRegisterHostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.LsmLiquidStakeEnabled { + i-- + if m.LsmLiquidStakeEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x78 + } { size := m.MaxRedemptionRate.Size() i -= size @@ -1904,8 +2137,8 @@ func (m *MsgRegisterHostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x62 } - if m.UnbondingFrequency != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.UnbondingFrequency)) + if m.UnbondingPeriod != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.UnbondingPeriod)) i-- dAtA[i] = 0x58 } @@ -2491,6 +2724,37 @@ func (m *MsgLiquidStakeResponse) Size() (n int) { return n } +func (m *MsgLSMLiquidStake) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.LsmTokenIbcDenom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgLSMLiquidStakeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.TransactionComplete { + n += 2 + } + return n +} + func (m *MsgClearBalance) Size() (n int) { if m == nil { return 0 @@ -2581,8 +2845,8 @@ func (m *MsgRegisterHostZone) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - if m.UnbondingFrequency != 0 { - n += 1 + sovTx(uint64(m.UnbondingFrequency)) + if m.UnbondingPeriod != 0 { + n += 1 + sovTx(uint64(m.UnbondingPeriod)) } l = len(m.Bech32Prefix) if l > 0 { @@ -2592,6 +2856,9 @@ func (m *MsgRegisterHostZone) Size() (n int) { n += 1 + l + sovTx(uint64(l)) l = m.MaxRedemptionRate.Size() n += 1 + l + sovTx(uint64(l)) + if m.LsmLiquidStakeEnabled { + n += 2 + } return n } @@ -3024,6 +3291,224 @@ func (m *MsgLiquidStakeResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgLSMLiquidStake) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgLSMLiquidStake: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgLSMLiquidStake: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", 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 + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LsmTokenIbcDenom", 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.LsmTokenIbcDenom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgLSMLiquidStakeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgLSMLiquidStakeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgLSMLiquidStakeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TransactionComplete", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.TransactionComplete = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgClearBalance) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -3675,9 +4160,9 @@ func (m *MsgRegisterHostZone) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 11: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field UnbondingFrequency", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UnbondingPeriod", wireType) } - m.UnbondingFrequency = 0 + m.UnbondingPeriod = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -3687,7 +4172,7 @@ func (m *MsgRegisterHostZone) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.UnbondingFrequency |= uint64(b&0x7F) << shift + m.UnbondingPeriod |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3792,6 +4277,26 @@ func (m *MsgRegisterHostZone) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LsmLiquidStakeEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.LsmLiquidStakeEnabled = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index 28f96c0708..9f6704351d 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -25,64 +25,23 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type ValidatorExchangeRate struct { - InternalTokensToSharesRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=internal_tokens_to_shares_rate,json=internalTokensToSharesRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"internal_tokens_to_shares_rate"` - EpochNumber uint64 `protobuf:"varint,2,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"` -} - -func (m *ValidatorExchangeRate) Reset() { *m = ValidatorExchangeRate{} } -func (m *ValidatorExchangeRate) String() string { return proto.CompactTextString(m) } -func (*ValidatorExchangeRate) ProtoMessage() {} -func (*ValidatorExchangeRate) Descriptor() ([]byte, []int) { - return fileDescriptor_5d2f32e16bd6ab8f, []int{0} -} -func (m *ValidatorExchangeRate) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ValidatorExchangeRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ValidatorExchangeRate.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ValidatorExchangeRate) XXX_Merge(src proto.Message) { - xxx_messageInfo_ValidatorExchangeRate.Merge(m, src) -} -func (m *ValidatorExchangeRate) XXX_Size() int { - return m.Size() -} -func (m *ValidatorExchangeRate) XXX_DiscardUnknown() { - xxx_messageInfo_ValidatorExchangeRate.DiscardUnknown(m) -} - -var xxx_messageInfo_ValidatorExchangeRate proto.InternalMessageInfo - -func (m *ValidatorExchangeRate) GetEpochNumber() uint64 { - if m != nil { - return m.EpochNumber - } - return 0 -} - type Validator struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - DelegationAmt github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=delegation_amt,json=delegationAmt,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"delegation_amt"` - Weight uint64 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"` - InternalExchangeRate *ValidatorExchangeRate `protobuf:"bytes,7,opt,name=internal_exchange_rate,json=internalExchangeRate,proto3" json:"internal_exchange_rate,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + Weight uint64 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"` + Delegation github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=delegation,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"delegation"` + SlashQueryProgressTracker github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,9,opt,name=slash_query_progress_tracker,json=slashQueryProgressTracker,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"slash_query_progress_tracker"` + SlashQueryCheckpoint github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,12,opt,name=slash_query_checkpoint,json=slashQueryCheckpoint,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"slash_query_checkpoint"` + SharesToTokensRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=shares_to_tokens_rate,json=sharesToTokensRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"shares_to_tokens_rate"` + DelegationChangesInProgress int64 `protobuf:"varint,11,opt,name=delegation_changes_in_progress,json=delegationChangesInProgress,proto3" json:"delegation_changes_in_progress,omitempty"` + SlashQueryInProgress bool `protobuf:"varint,13,opt,name=slash_query_in_progress,json=slashQueryInProgress,proto3" json:"slash_query_in_progress,omitempty"` } func (m *Validator) Reset() { *m = Validator{} } func (m *Validator) String() string { return proto.CompactTextString(m) } func (*Validator) ProtoMessage() {} func (*Validator) Descriptor() ([]byte, []int) { - return fileDescriptor_5d2f32e16bd6ab8f, []int{1} + return fileDescriptor_5d2f32e16bd6ab8f, []int{0} } func (m *Validator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -132,53 +91,61 @@ func (m *Validator) GetWeight() uint64 { return 0 } -func (m *Validator) GetInternalExchangeRate() *ValidatorExchangeRate { +func (m *Validator) GetDelegationChangesInProgress() int64 { if m != nil { - return m.InternalExchangeRate + return m.DelegationChangesInProgress } - return nil + return 0 +} + +func (m *Validator) GetSlashQueryInProgress() bool { + if m != nil { + return m.SlashQueryInProgress + } + return false } func init() { - proto.RegisterType((*ValidatorExchangeRate)(nil), "stride.stakeibc.ValidatorExchangeRate") proto.RegisterType((*Validator)(nil), "stride.stakeibc.Validator") } func init() { proto.RegisterFile("stride/stakeibc/validator.proto", fileDescriptor_5d2f32e16bd6ab8f) } var fileDescriptor_5d2f32e16bd6ab8f = []byte{ - // 439 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x3d, 0x6f, 0xdb, 0x30, - 0x10, 0x35, 0x53, 0xc5, 0x89, 0x99, 0x7e, 0x04, 0x84, 0x1b, 0xa8, 0x1e, 0x64, 0x37, 0x43, 0xe0, - 0xc5, 0x12, 0xea, 0xac, 0x5d, 0x62, 0xa4, 0x43, 0x83, 0xa0, 0x83, 0x9c, 0x76, 0x28, 0x0a, 0x08, - 0x94, 0x74, 0x90, 0x08, 0x5b, 0xa4, 0x41, 0x5e, 0xd2, 0x74, 0xeb, 0x4f, 0xe8, 0x0f, 0xe9, 0x98, - 0xb5, 0x7b, 0xc6, 0x20, 0x53, 0xd1, 0x21, 0x28, 0xec, 0x3f, 0x52, 0x94, 0xa2, 0x92, 0xa0, 0xe8, - 0x92, 0x89, 0xe4, 0xe3, 0xe3, 0xbd, 0xf7, 0x78, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, - 0x67, 0x20, 0xd2, 0x2c, 0x3a, 0xe3, 0x73, 0x91, 0x73, 0x54, 0x3a, 0x5c, 0x68, 0x85, 0x8a, 0x3d, - 0xab, 0x09, 0x61, 0x43, 0xe8, 0xbd, 0xc8, 0x94, 0xa9, 0x94, 0x49, 0xec, 0x75, 0x54, 0x1f, 0x6a, - 0x6e, 0xaf, 0x5b, 0xa8, 0x42, 0xd5, 0xf8, 0xdf, 0x5d, 0x8d, 0xee, 0xfe, 0x20, 0xf4, 0xf9, 0x87, - 0xa6, 0xea, 0x9b, 0xf3, 0xac, 0xe4, 0xb2, 0x80, 0x98, 0x23, 0xb0, 0xaf, 0x84, 0x06, 0x42, 0x22, - 0x68, 0xc9, 0xe7, 0x09, 0xaa, 0x19, 0x48, 0x93, 0xa0, 0x4a, 0x4c, 0xc9, 0x35, 0x98, 0x44, 0x73, - 0x04, 0x9f, 0x0c, 0xc8, 0xb0, 0x33, 0x79, 0x7d, 0x79, 0xd3, 0x6f, 0xfd, 0xba, 0xe9, 0xef, 0x15, - 0x02, 0xcb, 0xd3, 0x34, 0xcc, 0x54, 0xe5, 0x94, 0xdd, 0x32, 0x32, 0xf9, 0x2c, 0xc2, 0x2f, 0x0b, - 0x30, 0xe1, 0x21, 0x64, 0xd7, 0x17, 0x23, 0xea, 0x8c, 0x1d, 0x42, 0x16, 0xf7, 0x1a, 0x8d, 0x13, - 0x2b, 0x71, 0xa2, 0xa6, 0x56, 0xc0, 0x5a, 0x78, 0x49, 0x1f, 0xc3, 0x42, 0x65, 0x65, 0x22, 0x4f, - 0xab, 0x14, 0xb4, 0xbf, 0x36, 0x20, 0x43, 0x2f, 0xde, 0xb2, 0xd8, 0x3b, 0x0b, 0xed, 0x7e, 0x5f, - 0xa3, 0x9d, 0x5b, 0xff, 0x8c, 0x51, 0x4f, 0xf2, 0xca, 0x19, 0x8b, 0xed, 0x9e, 0x8d, 0xe9, 0x06, - 0xcf, 0x73, 0x0d, 0xc6, 0xd8, 0xf7, 0x9d, 0x89, 0x7f, 0x7d, 0x31, 0xea, 0x3a, 0x07, 0x07, 0xf5, - 0xcd, 0x14, 0xb5, 0x90, 0x45, 0xdc, 0x10, 0xd9, 0x7b, 0xfa, 0x34, 0x87, 0x39, 0x14, 0x1c, 0x85, - 0x92, 0x09, 0xaf, 0xd0, 0x5f, 0xb7, 0x4f, 0xc3, 0x07, 0x44, 0x7d, 0x2b, 0x31, 0x7e, 0x72, 0x57, - 0xe5, 0xa0, 0x42, 0xb6, 0x43, 0xdb, 0x9f, 0x41, 0x14, 0x25, 0xfa, 0x6d, 0x9b, 0xc4, 0x9d, 0xd8, - 0x27, 0xba, 0x73, 0xfb, 0xd3, 0xe0, 0x7a, 0x50, 0xff, 0xf0, 0xc6, 0x80, 0x0c, 0xb7, 0xc6, 0x7b, - 0xe1, 0x3f, 0x7d, 0x0e, 0xff, 0xdb, 0xb2, 0xb8, 0xdb, 0x54, 0xb9, 0x8f, 0x1e, 0x79, 0x9b, 0x8f, - 0xb6, 0xbd, 0x23, 0x6f, 0xd3, 0xdb, 0x5e, 0x9f, 0x1c, 0x5f, 0x2e, 0x03, 0x72, 0xb5, 0x0c, 0xc8, - 0xef, 0x65, 0x40, 0xbe, 0xad, 0x82, 0xd6, 0xd5, 0x2a, 0x68, 0xfd, 0x5c, 0x05, 0xad, 0x8f, 0xe3, - 0x7b, 0x91, 0xa6, 0x56, 0x6d, 0x74, 0xcc, 0x53, 0x13, 0xb9, 0x11, 0x3c, 0x7b, 0xb5, 0x1f, 0x9d, - 0xdf, 0x0d, 0xa2, 0x8d, 0x98, 0xb6, 0xed, 0x0c, 0xed, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xfe, - 0x29, 0x7a, 0xbe, 0xa8, 0x02, 0x00, 0x00, + // 474 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0x6e, 0xd3, 0x30, + 0x18, 0xc7, 0x1b, 0x96, 0x75, 0xa9, 0x01, 0x51, 0x59, 0x65, 0x64, 0x03, 0xa5, 0x15, 0x07, 0xd4, + 0x4b, 0x13, 0xb1, 0x89, 0x1b, 0x17, 0xd6, 0x5d, 0x56, 0x4d, 0x08, 0xb2, 0x8a, 0x03, 0x97, 0xc8, + 0x75, 0x3e, 0x25, 0x56, 0x5a, 0xbb, 0xd8, 0xde, 0x60, 0x6f, 0xc1, 0x8d, 0x17, 0xd9, 0x43, 0xec, + 0x38, 0xed, 0x84, 0x38, 0x4c, 0xa8, 0x7d, 0x11, 0x14, 0x3b, 0x5d, 0x72, 0x65, 0xa7, 0xd8, 0x9f, + 0xff, 0xfe, 0xfd, 0xf3, 0xfd, 0x93, 0x0f, 0xf5, 0x95, 0x96, 0x2c, 0x85, 0x48, 0x69, 0x52, 0x00, + 0x9b, 0xd1, 0xe8, 0x82, 0xcc, 0x59, 0x4a, 0xb4, 0x90, 0xe1, 0x52, 0x0a, 0x2d, 0xf0, 0x33, 0x2b, + 0x08, 0x37, 0x82, 0xfd, 0x3d, 0x2a, 0xd4, 0x42, 0xa8, 0xc4, 0x1c, 0x47, 0x76, 0x63, 0xb5, 0xfb, + 0xbd, 0x4c, 0x64, 0xc2, 0xd6, 0xcb, 0x95, 0xad, 0xbe, 0xfe, 0xb5, 0x8d, 0x3a, 0x5f, 0x36, 0x54, + 0x8c, 0x91, 0xcb, 0xc9, 0x02, 0x7c, 0x67, 0xe0, 0x0c, 0x3b, 0xb1, 0x59, 0xe3, 0x03, 0xb4, 0x43, + 0xd2, 0x54, 0x82, 0x52, 0xfe, 0xa3, 0xb2, 0x7c, 0xe4, 0xdf, 0x5e, 0x8d, 0x7a, 0x15, 0xfa, 0x83, + 0x3d, 0x39, 0xd3, 0x92, 0xf1, 0x2c, 0xde, 0x08, 0xf1, 0x2e, 0x6a, 0x7f, 0x07, 0x96, 0xe5, 0xda, + 0x6f, 0x0f, 0x9c, 0xa1, 0x1b, 0x57, 0x3b, 0xfc, 0x11, 0xa1, 0x14, 0xe6, 0x90, 0x11, 0xcd, 0x04, + 0xf7, 0xb7, 0x0d, 0x2e, 0xbc, 0xbe, 0xeb, 0xb7, 0xfe, 0xdc, 0xf5, 0xdf, 0x64, 0x4c, 0xe7, 0xe7, + 0xb3, 0x90, 0x8a, 0x45, 0xf5, 0xe2, 0xd5, 0x63, 0xa4, 0xd2, 0x22, 0xd2, 0x97, 0x4b, 0x50, 0xe1, + 0x09, 0xd7, 0x71, 0x83, 0x80, 0x05, 0x7a, 0xa5, 0xe6, 0x44, 0xe5, 0xc9, 0xb7, 0x73, 0x90, 0x97, + 0x65, 0xd7, 0x59, 0xe9, 0x9f, 0x68, 0x49, 0x68, 0x01, 0xd2, 0xef, 0x3c, 0xc8, 0x61, 0xcf, 0x30, + 0x3f, 0x97, 0xc8, 0x4f, 0x15, 0x71, 0x6a, 0x81, 0x38, 0x45, 0xbb, 0x4d, 0x43, 0x9a, 0x03, 0x2d, + 0x96, 0x82, 0x71, 0xed, 0x3f, 0x79, 0x90, 0x55, 0xaf, 0xb6, 0x1a, 0xdf, 0xb3, 0xb0, 0x40, 0xcf, + 0x55, 0x4e, 0x24, 0xa8, 0x44, 0x8b, 0x44, 0x8b, 0x02, 0xb8, 0x4a, 0x24, 0xd1, 0xe0, 0x23, 0x63, + 0xf2, 0xfe, 0x3f, 0x4c, 0x8e, 0x81, 0xde, 0x5e, 0x8d, 0x50, 0xf5, 0xb9, 0x8e, 0x81, 0xc6, 0xd8, + 0xa2, 0xa7, 0x62, 0x6a, 0xc0, 0x31, 0xd1, 0x80, 0xc7, 0x28, 0xa8, 0x53, 0x4d, 0x68, 0x4e, 0x78, + 0x06, 0x2a, 0x61, 0xfc, 0x3e, 0x51, 0xff, 0xf1, 0xc0, 0x19, 0x6e, 0xc5, 0x2f, 0x6b, 0xd5, 0xd8, + 0x8a, 0x4e, 0xf8, 0x26, 0x22, 0xfc, 0x0e, 0xbd, 0x68, 0x66, 0xd3, 0xbc, 0xfd, 0x74, 0xe0, 0x0c, + 0xbd, 0x66, 0xb3, 0xf5, 0xb5, 0x89, 0xeb, 0x6d, 0x75, 0xdd, 0x89, 0xeb, 0xb9, 0xdd, 0xed, 0x89, + 0xeb, 0xed, 0x74, 0xbd, 0x89, 0xeb, 0x79, 0xdd, 0xce, 0xd1, 0xe9, 0xf5, 0x2a, 0x70, 0x6e, 0x56, + 0x81, 0xf3, 0x77, 0x15, 0x38, 0x3f, 0xd7, 0x41, 0xeb, 0x66, 0x1d, 0xb4, 0x7e, 0xaf, 0x83, 0xd6, + 0xd7, 0x83, 0x46, 0xdf, 0x67, 0x66, 0x00, 0x46, 0xa7, 0x64, 0xa6, 0xa2, 0x6a, 0x5a, 0x2e, 0xde, + 0x1e, 0x46, 0x3f, 0xea, 0x99, 0x31, 0x39, 0xcc, 0xda, 0xe6, 0x77, 0x3f, 0xfc, 0x17, 0x00, 0x00, + 0xff, 0xff, 0xd0, 0xb6, 0x4d, 0x39, 0x53, 0x03, 0x00, 0x00, } -func (m *ValidatorExchangeRate) Marshal() (dAtA []byte, err error) { +func (m *Validator) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -188,75 +155,70 @@ func (m *ValidatorExchangeRate) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ValidatorExchangeRate) MarshalTo(dAtA []byte) (int, error) { +func (m *Validator) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *ValidatorExchangeRate) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.EpochNumber != 0 { - i = encodeVarintValidator(dAtA, i, uint64(m.EpochNumber)) + if m.SlashQueryInProgress { i-- - dAtA[i] = 0x10 + if m.SlashQueryInProgress { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x68 } { - size := m.InternalTokensToSharesRate.Size() + size := m.SlashQueryCheckpoint.Size() i -= size - if _, err := m.InternalTokensToSharesRate.MarshalTo(dAtA[i:]); err != nil { + if _, err := m.SlashQueryCheckpoint.MarshalTo(dAtA[i:]); err != nil { return 0, err } i = encodeVarintValidator(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *Validator) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err + dAtA[i] = 0x62 + if m.DelegationChangesInProgress != 0 { + i = encodeVarintValidator(dAtA, i, uint64(m.DelegationChangesInProgress)) + i-- + dAtA[i] = 0x58 } - return dAtA[:n], nil -} - -func (m *Validator) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Validator) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.InternalExchangeRate != nil { - { - size, err := m.InternalExchangeRate.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintValidator(dAtA, i, uint64(size)) + { + size := m.SharesToTokensRate.Size() + i -= size + if _, err := m.SharesToTokensRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err } - i-- - dAtA[i] = 0x3a + i = encodeVarintValidator(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x52 + { + size := m.SlashQueryProgressTracker.Size() + i -= size + if _, err := m.SlashQueryProgressTracker.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintValidator(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a if m.Weight != 0 { i = encodeVarintValidator(dAtA, i, uint64(m.Weight)) i-- dAtA[i] = 0x30 } { - size := m.DelegationAmt.Size() + size := m.Delegation.Size() i -= size - if _, err := m.DelegationAmt.MarshalTo(dAtA[i:]); err != nil { + if _, err := m.Delegation.MarshalTo(dAtA[i:]); err != nil { return 0, err } i = encodeVarintValidator(dAtA, i, uint64(size)) @@ -291,20 +253,6 @@ func encodeVarintValidator(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *ValidatorExchangeRate) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.InternalTokensToSharesRate.Size() - n += 1 + l + sovValidator(uint64(l)) - if m.EpochNumber != 0 { - n += 1 + sovValidator(uint64(m.EpochNumber)) - } - return n -} - func (m *Validator) Size() (n int) { if m == nil { return 0 @@ -319,14 +267,22 @@ func (m *Validator) Size() (n int) { if l > 0 { n += 1 + l + sovValidator(uint64(l)) } - l = m.DelegationAmt.Size() + l = m.Delegation.Size() n += 1 + l + sovValidator(uint64(l)) if m.Weight != 0 { n += 1 + sovValidator(uint64(m.Weight)) } - if m.InternalExchangeRate != nil { - l = m.InternalExchangeRate.Size() - n += 1 + l + sovValidator(uint64(l)) + l = m.SlashQueryProgressTracker.Size() + n += 1 + l + sovValidator(uint64(l)) + l = m.SharesToTokensRate.Size() + n += 1 + l + sovValidator(uint64(l)) + if m.DelegationChangesInProgress != 0 { + n += 1 + sovValidator(uint64(m.DelegationChangesInProgress)) + } + l = m.SlashQueryCheckpoint.Size() + n += 1 + l + sovValidator(uint64(l)) + if m.SlashQueryInProgress { + n += 2 } return n } @@ -337,7 +293,7 @@ func sovValidator(x uint64) (n int) { func sozValidator(x uint64) (n int) { return sovValidator(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *ValidatorExchangeRate) Unmarshal(dAtA []byte) error { +func (m *Validator) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -360,15 +316,15 @@ func (m *ValidatorExchangeRate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ValidatorExchangeRate: wiretype end group for non-group") + return fmt.Errorf("proto: Validator: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ValidatorExchangeRate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Validator: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InternalTokensToSharesRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -396,15 +352,13 @@ func (m *ValidatorExchangeRate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.InternalTokensToSharesRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EpochNumber", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) } - m.EpochNumber = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowValidator @@ -414,64 +368,27 @@ func (m *ValidatorExchangeRate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.EpochNumber |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipValidator(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthValidator } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Validator) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowValidator + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthValidator } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Validator: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Validator: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Delegation", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -499,11 +416,32 @@ func (m *Validator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + if err := m.Delegation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + m.Weight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Weight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SlashQueryProgressTracker", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -531,11 +469,13 @@ func (m *Validator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Address = string(dAtA[iNdEx:postIndex]) + if err := m.SlashQueryProgressTracker.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 5: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DelegationAmt", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SharesToTokensRate", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -563,15 +503,15 @@ func (m *Validator) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.DelegationAmt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SharesToTokensRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 11: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DelegationChangesInProgress", wireType) } - m.Weight = 0 + m.DelegationChangesInProgress = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowValidator @@ -581,16 +521,16 @@ func (m *Validator) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Weight |= uint64(b&0x7F) << shift + m.DelegationChangesInProgress |= int64(b&0x7F) << shift if b < 0x80 { break } } - case 7: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InternalExchangeRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SlashQueryCheckpoint", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowValidator @@ -600,28 +540,46 @@ func (m *Validator) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthValidator } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthValidator } if postIndex > l { return io.ErrUnexpectedEOF } - if m.InternalExchangeRate == nil { - m.InternalExchangeRate = &ValidatorExchangeRate{} - } - if err := m.InternalExchangeRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SlashQueryCheckpoint.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SlashQueryInProgress", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowValidator + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SlashQueryInProgress = bool(v != 0) default: iNdEx = preIndex skippy, err := skipValidator(dAtA[iNdEx:]) From 22537f60fe249d744387cfbd338766f982d1cbcd Mon Sep 17 00:00:00 2001 From: sampocs Date: Sun, 27 Aug 2023 20:23:04 -0500 Subject: [PATCH 22/44] Added oracle transfer channel to icaoracle MsgInstantiateOracle and register aminos (#899) --- proto/stride/icaoracle/contract.proto | 5 +- proto/stride/icaoracle/icaoracle.proto | 5 +- proto/stride/icaoracle/tx.proto | 1 + x/icaoracle/client/cli/tx.go | 11 +- x/icaoracle/keeper/msg_server.go | 3 +- x/icaoracle/types/codec.go | 2 +- x/icaoracle/types/contract.pb.go | 101 +++++++++--- x/icaoracle/types/icaoracle.pb.go | 144 ++++++------------ x/icaoracle/types/message_add_oracle.go | 6 + x/icaoracle/types/message_add_oracle_test.go | 1 + .../types/message_instantiate_oracle.go | 25 ++- .../types/message_instantiate_oracle_test.go | 47 ++++-- x/icaoracle/types/message_remove_oracle.go | 6 + .../types/message_remove_oracle_test.go | 1 + ...ssage_restore_oracle_interchain_account.go | 6 + ..._restore_oracle_interchain_account_test.go | 1 + x/icaoracle/types/message_toggle_oracle.go | 6 + .../types/message_toggle_oracle_test.go | 1 + x/icaoracle/types/tx.pb.go | 136 ++++++++++++----- x/stakeibc/keeper/hooks.go | 10 +- 20 files changed, 319 insertions(+), 199 deletions(-) diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto index 5755ed6377..3f396f3ef6 100644 --- a/proto/stride/icaoracle/contract.proto +++ b/proto/stride/icaoracle/contract.proto @@ -4,7 +4,10 @@ package stride.icaoracle; option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; // InstanitateOracleContract is the contract-specific instantiate message -message MsgInstantiateOracleContract { string admin_address = 1; } +message MsgInstantiateOracleContract { + string admin_address = 1; + string transfer_channel_id = 2; +} // ExecuteContractPostMetric is the contract-specific metric update message message MsgExecuteContractPostMetric { MsgPostMetric post_metric = 1; } diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto index c19b4f5935..1bf9b5a279 100644 --- a/proto/stride/icaoracle/icaoracle.proto +++ b/proto/stride/icaoracle/icaoracle.proto @@ -39,7 +39,4 @@ message Metric { } // Attributes associated with a RedemptionRate metric update -message RedemptionRateAttributes { - string denom = 1; - string base_denom = 2; -} +message RedemptionRateAttributes { string sttoken_denom = 1; } diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto index 9ad126fd6b..76745b9530 100644 --- a/proto/stride/icaoracle/tx.proto +++ b/proto/stride/icaoracle/tx.proto @@ -41,6 +41,7 @@ message MsgInstantiateOracle { string creator = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; string oracle_chain_id = 2; uint64 contract_code_id = 3; + string transfer_channel_on_oracle = 4; } message MsgInstantiateOracleResponse {} diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go index f8d51795d4..7bacb224b3 100644 --- a/x/icaoracle/client/cli/tx.go +++ b/x/icaoracle/client/cli/tx.go @@ -73,23 +73,25 @@ Example: // Instantiates an oracle cosmwasm contract func CmdInstantiateOracle() *cobra.Command { cmd := &cobra.Command{ - Use: "instantiate-oracle [oracle-chain-id] [contract-code-id]", + Use: "instantiate-oracle [oracle-chain-id] [contract-code-id] [transfer-channel-on-oracle]", Short: "Instantiates an oracle cosmwasm contract", Long: strings.TrimSpace( fmt.Sprintf(`Submits an ICA to instantiate the oracle cosmwasm contract. -Must provide the codeID of a cosmwasm contract that has already been uploaded to the host chain. +Must provide the codeID of a cosmwasm contract that has already been uploaded to the host chain, +as well as the transfer channel ID as it lives on the oracle's chain. Example: - $ %[1]s tx %[2]s instantiate-oracle osmosis-1 1000 + $ %[1]s tx %[2]s instantiate-oracle osmosis-1 1000 channel-0 `, version.AppName, types.ModuleName), ), - Args: cobra.ExactArgs(2), + Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { chainId := args[0] contractCodeId, err := strconv.ParseUint(args[1], 10, 64) if err != nil { return err } + transferChannelOnOracle := args[2] clientCtx, err := client.GetClientTxContext(cmd) if err != nil { @@ -100,6 +102,7 @@ Example: clientCtx.GetFromAddress().String(), chainId, contractCodeId, + transferChannelOnOracle, ) return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go index efe9f5185a..363f3aee04 100644 --- a/x/icaoracle/keeper/msg_server.go +++ b/x/icaoracle/keeper/msg_server.go @@ -129,7 +129,8 @@ func (k msgServer) InstantiateOracle(goCtx context.Context, msg *types.MsgInstan // Build the contract-specific instantiation message contractMsg := types.MsgInstantiateOracleContract{ - AdminAddress: oracle.IcaAddress, + AdminAddress: oracle.IcaAddress, + TransferChannelId: msg.TransferChannelOnOracle, } contractMsgBz, err := json.Marshal(contractMsg) if err != nil { diff --git a/x/icaoracle/types/codec.go b/x/icaoracle/types/codec.go index 0cd4ce9fd0..18b3186cdc 100644 --- a/x/icaoracle/types/codec.go +++ b/x/icaoracle/types/codec.go @@ -32,7 +32,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { var ( amino = codec.NewLegacyAmino() - ModuleCdc = codec.NewProtoCodec(cdctypes.NewInterfaceRegistry()) + ModuleCdc = codec.NewAminoCodec(amino) ) func init() { diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go index 3dc75dfd90..9445914569 100644 --- a/x/icaoracle/types/contract.pb.go +++ b/x/icaoracle/types/contract.pb.go @@ -24,7 +24,8 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // InstanitateOracleContract is the contract-specific instantiate message type MsgInstantiateOracleContract struct { - AdminAddress string `protobuf:"bytes,1,opt,name=admin_address,json=adminAddress,proto3" json:"admin_address,omitempty"` + AdminAddress string `protobuf:"bytes,1,opt,name=admin_address,json=adminAddress,proto3" json:"admin_address,omitempty"` + TransferChannelId string `protobuf:"bytes,2,opt,name=transfer_channel_id,json=transferChannelId,proto3" json:"transfer_channel_id,omitempty"` } func (m *MsgInstantiateOracleContract) Reset() { *m = MsgInstantiateOracleContract{} } @@ -67,6 +68,13 @@ func (m *MsgInstantiateOracleContract) GetAdminAddress() string { return "" } +func (m *MsgInstantiateOracleContract) GetTransferChannelId() string { + if m != nil { + return m.TransferChannelId + } + return "" +} + // ExecuteContractPostMetric is the contract-specific metric update message type MsgExecuteContractPostMetric struct { PostMetric *MsgPostMetric `protobuf:"bytes,1,opt,name=post_metric,json=postMetric,proto3" json:"post_metric,omitempty"` @@ -206,29 +214,31 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/contract.proto", fileDescriptor_8bf036e49b48ee03) } var fileDescriptor_8bf036e49b48ee03 = []byte{ - // 349 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xcf, 0x4e, 0xea, 0x40, - 0x14, 0xc6, 0xe9, 0xe5, 0x42, 0x72, 0x4f, 0x21, 0x21, 0x93, 0xbb, 0xe8, 0xe2, 0xa6, 0x70, 0x71, - 0xc3, 0xc6, 0x36, 0xca, 0x0b, 0xa8, 0xc4, 0x44, 0x13, 0x1b, 0x0d, 0xb2, 0x72, 0x53, 0xa7, 0xd3, - 0x93, 0x32, 0x81, 0x76, 0x9a, 0xce, 0x29, 0x81, 0xb7, 0xf0, 0x81, 0x7c, 0x00, 0x97, 0x2c, 0x5d, - 0x1a, 0x78, 0x11, 0xc3, 0x94, 0x80, 0xba, 0x3b, 0xe7, 0x77, 0xbe, 0xf3, 0x67, 0xe6, 0x83, 0xae, - 0xa6, 0x42, 0xc6, 0xe8, 0x4b, 0xc1, 0x55, 0xc1, 0xc5, 0x1c, 0x7d, 0xa1, 0x32, 0x2a, 0xb8, 0x20, - 0x2f, 0x2f, 0x14, 0x29, 0xd6, 0xa9, 0x04, 0xde, 0x41, 0xd0, 0x1f, 0xc1, 0xbf, 0x40, 0x27, 0xb7, - 0x99, 0x26, 0x9e, 0x91, 0xe4, 0x84, 0xf7, 0x86, 0x8f, 0xf6, 0x7d, 0xec, 0x04, 0xda, 0x3c, 0x4e, - 0x65, 0x16, 0xf2, 0x38, 0x2e, 0x50, 0x6b, 0xc7, 0xea, 0x59, 0x83, 0x3f, 0xe3, 0x96, 0x81, 0x97, - 0x15, 0xeb, 0x3f, 0x9b, 0x21, 0xd7, 0x4b, 0x14, 0x25, 0x1d, 0x5a, 0x1f, 0x94, 0xa6, 0x00, 0xa9, - 0x90, 0x82, 0x5d, 0x80, 0x9d, 0x2b, 0x4d, 0x61, 0x6a, 0x52, 0x33, 0xc2, 0x3e, 0xef, 0x7a, 0x3f, - 0x8f, 0xf1, 0x02, 0x9d, 0x1c, 0xbb, 0xc6, 0x90, 0x1f, 0xe2, 0xfe, 0xab, 0x05, 0xed, 0x6f, 0x55, - 0xd6, 0x81, 0xfa, 0x0c, 0x57, 0xfb, 0x73, 0x76, 0x21, 0xfb, 0x0b, 0x8d, 0x05, 0x9f, 0x97, 0xe8, - 0xfc, 0x32, 0xac, 0x4a, 0x58, 0x17, 0xec, 0x6a, 0x6d, 0x48, 0xab, 0x1c, 0x9d, 0xba, 0xa9, 0x41, - 0x85, 0x26, 0xab, 0xdc, 0x08, 0xca, 0x3c, 0xe6, 0x84, 0x21, 0xc9, 0x14, 0x9d, 0xdf, 0x3d, 0x6b, - 0x50, 0x1f, 0x43, 0x85, 0x26, 0x32, 0x45, 0xf6, 0x1f, 0x5a, 0xd1, 0x5c, 0x89, 0x59, 0x38, 0x45, - 0x99, 0x4c, 0xc9, 0x69, 0x18, 0x85, 0x6d, 0xd8, 0x8d, 0x41, 0xcc, 0x05, 0xe0, 0x44, 0x85, 0x8c, - 0x4a, 0x42, 0xed, 0x34, 0xab, 0x1d, 0x47, 0x72, 0x15, 0xbc, 0x6d, 0x5c, 0x6b, 0xbd, 0x71, 0xad, - 0x8f, 0x8d, 0x6b, 0xbd, 0x6c, 0xdd, 0xda, 0x7a, 0xeb, 0xd6, 0xde, 0xb7, 0x6e, 0xed, 0x69, 0x98, - 0x48, 0x9a, 0x96, 0x91, 0x27, 0x54, 0xea, 0x3f, 0x9a, 0xff, 0x38, 0xbd, 0xe3, 0x91, 0xf6, 0xf7, - 0x4e, 0x2e, 0xce, 0x86, 0xfe, 0xf2, 0x8b, 0x9f, 0xbb, 0x37, 0xe8, 0xa8, 0x69, 0xdc, 0x1c, 0x7e, - 0x06, 0x00, 0x00, 0xff, 0xff, 0xa4, 0xf0, 0x93, 0x7c, 0xf0, 0x01, 0x00, 0x00, + // 375 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xc1, 0xae, 0xd2, 0x40, + 0x14, 0x86, 0xa9, 0x08, 0x89, 0x53, 0x48, 0x70, 0x74, 0xd1, 0x85, 0x29, 0x88, 0x1b, 0x36, 0xb6, + 0x51, 0x5e, 0x40, 0x25, 0x26, 0x92, 0xd8, 0x68, 0x90, 0x95, 0x9b, 0x3a, 0x9d, 0x1e, 0xdb, 0x09, + 0x6d, 0xa7, 0x99, 0x39, 0x25, 0xf0, 0x16, 0x3e, 0x90, 0x0f, 0xe0, 0x92, 0xa5, 0xcb, 0x1b, 0x78, + 0x91, 0x1b, 0x66, 0x7a, 0xe1, 0xde, 0xbb, 0x3b, 0xe7, 0xfb, 0xff, 0x93, 0xff, 0xcc, 0x1c, 0x32, + 0xd6, 0xa8, 0x44, 0x0a, 0xa1, 0xe0, 0x4c, 0x2a, 0xc6, 0x0b, 0x08, 0xb9, 0xac, 0x50, 0x31, 0x8e, + 0x41, 0xad, 0x24, 0x4a, 0x3a, 0xb2, 0x86, 0xe0, 0x62, 0x98, 0x6a, 0xf2, 0x2a, 0xd2, 0xd9, 0xb2, + 0xd2, 0xc8, 0x2a, 0x14, 0x0c, 0xe1, 0x9b, 0xe1, 0x8b, 0x76, 0x8e, 0xbe, 0x21, 0x43, 0x96, 0x96, + 0xa2, 0x8a, 0x59, 0x9a, 0x2a, 0xd0, 0xda, 0x73, 0x26, 0xce, 0xec, 0xd9, 0x6a, 0x60, 0xe0, 0x47, + 0xcb, 0x68, 0x40, 0x5e, 0xa0, 0x62, 0x95, 0xfe, 0x0d, 0x2a, 0xe6, 0x39, 0xab, 0x2a, 0x28, 0x62, + 0x91, 0x7a, 0x4f, 0x8c, 0xf5, 0xf9, 0x9d, 0xb4, 0xb0, 0xca, 0x32, 0x9d, 0xfe, 0x32, 0xa1, 0x9f, + 0x77, 0xc0, 0x1b, 0xbc, 0x44, 0x7d, 0x97, 0x1a, 0x23, 0x40, 0x25, 0x38, 0xfd, 0x40, 0xdc, 0x5a, + 0x6a, 0x8c, 0x4b, 0xd3, 0x9a, 0x48, 0xf7, 0xfd, 0x38, 0x78, 0xbc, 0x7c, 0x10, 0xe9, 0xec, 0x3a, + 0xb5, 0x22, 0xf5, 0xa5, 0x9e, 0xfe, 0x75, 0xc8, 0xf0, 0x81, 0x4a, 0x47, 0xa4, 0xbb, 0x81, 0x7d, + 0xbb, 0xfe, 0xb9, 0xa4, 0x2f, 0x49, 0x6f, 0xcb, 0x8a, 0x06, 0xda, 0x3d, 0x6d, 0x43, 0xc7, 0xc4, + 0xb5, 0xb1, 0x31, 0xee, 0x6b, 0xf0, 0xba, 0x46, 0x23, 0x16, 0xad, 0xf7, 0xb5, 0x31, 0x34, 0x75, + 0xca, 0x10, 0x62, 0x14, 0x25, 0x78, 0x4f, 0x27, 0xce, 0xac, 0xbb, 0x22, 0x16, 0xad, 0x45, 0x09, + 0xf4, 0x35, 0x19, 0x24, 0x85, 0xe4, 0x9b, 0x38, 0x07, 0x91, 0xe5, 0xe8, 0xf5, 0x8c, 0xc3, 0x35, + 0xec, 0x8b, 0x41, 0xd4, 0x27, 0x84, 0x21, 0x2a, 0x91, 0x34, 0x08, 0xda, 0xeb, 0xdb, 0x8c, 0x2b, + 0xf9, 0x14, 0xfd, 0x3b, 0xfa, 0xce, 0xe1, 0xe8, 0x3b, 0x37, 0x47, 0xdf, 0xf9, 0x73, 0xf2, 0x3b, + 0x87, 0x93, 0xdf, 0xf9, 0x7f, 0xf2, 0x3b, 0x3f, 0xe7, 0x99, 0xc0, 0xbc, 0x49, 0x02, 0x2e, 0xcb, + 0xf0, 0x87, 0xf9, 0x8f, 0xb7, 0x5f, 0x59, 0xa2, 0xc3, 0xf6, 0xf2, 0xdb, 0x77, 0xf3, 0x70, 0x77, + 0xef, 0xfe, 0xe7, 0x37, 0xe8, 0xa4, 0x6f, 0xae, 0x3f, 0xbf, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x51, + 0xef, 0xb0, 0x04, 0x20, 0x02, 0x00, 0x00, } func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { @@ -251,6 +261,13 @@ func (m *MsgInstantiateOracleContract) MarshalToSizedBuffer(dAtA []byte) (int, e _ = i var l int _ = l + if len(m.TransferChannelId) > 0 { + i -= len(m.TransferChannelId) + copy(dAtA[i:], m.TransferChannelId) + i = encodeVarintContract(dAtA, i, uint64(len(m.TransferChannelId))) + i-- + dAtA[i] = 0x12 + } if len(m.AdminAddress) > 0 { i -= len(m.AdminAddress) copy(dAtA[i:], m.AdminAddress) @@ -378,6 +395,10 @@ func (m *MsgInstantiateOracleContract) Size() (n int) { if l > 0 { n += 1 + l + sovContract(uint64(l)) } + l = len(m.TransferChannelId) + if l > 0 { + n += 1 + l + sovContract(uint64(l)) + } return n } @@ -492,6 +513,38 @@ func (m *MsgInstantiateOracleContract) Unmarshal(dAtA []byte) error { } m.AdminAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferChannelId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowContract + } + 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 ErrInvalidLengthContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferChannelId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipContract(dAtA[iNdEx:]) diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go index 06ef32af1c..12904b207a 100644 --- a/x/icaoracle/types/icaoracle.pb.go +++ b/x/icaoracle/types/icaoracle.pb.go @@ -249,8 +249,7 @@ func (m *Metric) GetStatus() MetricStatus { // Attributes associated with a RedemptionRate metric update type RedemptionRateAttributes struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` - BaseDenom string `protobuf:"bytes,2,opt,name=base_denom,json=baseDenom,proto3" json:"base_denom,omitempty"` + SttokenDenom string `protobuf:"bytes,1,opt,name=sttoken_denom,json=sttokenDenom,proto3" json:"sttoken_denom,omitempty"` } func (m *RedemptionRateAttributes) Reset() { *m = RedemptionRateAttributes{} } @@ -286,16 +285,9 @@ func (m *RedemptionRateAttributes) XXX_DiscardUnknown() { var xxx_messageInfo_RedemptionRateAttributes proto.InternalMessageInfo -func (m *RedemptionRateAttributes) GetDenom() string { +func (m *RedemptionRateAttributes) GetSttokenDenom() string { if m != nil { - return m.Denom - } - return "" -} - -func (m *RedemptionRateAttributes) GetBaseDenom() string { - if m != nil { - return m.BaseDenom + return m.SttokenDenom } return "" } @@ -310,43 +302,42 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/icaoracle.proto", fileDescriptor_842e38c1f0da9e66) } var fileDescriptor_842e38c1f0da9e66 = []byte{ - // 561 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x3e, - 0x18, 0xc6, 0x9b, 0xf5, 0xbf, 0x6c, 0x7d, 0xb7, 0x3f, 0x0b, 0x56, 0x05, 0xdd, 0x24, 0x42, 0x18, - 0x1c, 0x06, 0xd2, 0x52, 0xc1, 0x24, 0xee, 0x63, 0x0d, 0x10, 0x89, 0xae, 0x23, 0x69, 0x2f, 0x5c, - 0x22, 0xc7, 0xb6, 0x5a, 0x6b, 0x4d, 0x1c, 0x25, 0x6e, 0x45, 0xbf, 0xc2, 0x4e, 0x1c, 0x38, 0xb2, - 0xef, 0xc3, 0x71, 0x47, 0x8e, 0xa8, 0xe5, 0x83, 0xa0, 0xd8, 0xe9, 0x16, 0xe0, 0xe6, 0xf7, 0xf7, - 0x3c, 0x71, 0xfc, 0xbc, 0xf6, 0x0b, 0x4e, 0x21, 0x73, 0x4e, 0x59, 0x97, 0x13, 0x2c, 0x72, 0x4c, - 0xa6, 0xb5, 0x95, 0x9b, 0xe5, 0x42, 0x0a, 0x64, 0x69, 0x87, 0x7b, 0xcb, 0x0f, 0xda, 0x63, 0x31, - 0x16, 0x4a, 0xec, 0x96, 0x2b, 0xed, 0x3b, 0xfc, 0x65, 0x80, 0x39, 0x50, 0x06, 0xb4, 0x0f, 0xdb, - 0x64, 0x82, 0x79, 0x1a, 0x71, 0xda, 0x31, 0x1c, 0xe3, 0xa8, 0x15, 0x6c, 0xa9, 0xda, 0xa7, 0xe8, - 0x29, 0xfc, 0x4f, 0x44, 0x9a, 0x32, 0x22, 0xb9, 0x50, 0xfa, 0x86, 0xd2, 0x77, 0xef, 0xa0, 0x4f, - 0xd1, 0x23, 0x00, 0x32, 0xc1, 0x69, 0xca, 0xa6, 0xa5, 0xa3, 0xa9, 0x1c, 0xad, 0x8a, 0xf8, 0x14, - 0x3d, 0x84, 0xad, 0x4c, 0xe4, 0xb2, 0xd4, 0xfe, 0x53, 0x9a, 0x59, 0x96, 0x3e, 0x45, 0x8f, 0x61, - 0x87, 0x13, 0x1c, 0x61, 0x4a, 0x73, 0x56, 0x14, 0x9d, 0x4d, 0x25, 0x02, 0x27, 0xf8, 0x54, 0x13, - 0xf4, 0x1c, 0x2c, 0x22, 0x52, 0x99, 0x63, 0x22, 0x6f, 0x5d, 0xa6, 0x72, 0xed, 0xad, 0xf9, 0xda, - 0xfa, 0x00, 0x4c, 0x4c, 0x24, 0x9f, 0xb3, 0xce, 0x96, 0x63, 0x1c, 0x6d, 0x07, 0x55, 0x75, 0xf8, - 0x6d, 0x03, 0xcc, 0x3e, 0x93, 0x39, 0x27, 0xc8, 0x82, 0xe6, 0x25, 0x5b, 0x54, 0x09, 0xcb, 0x25, - 0x6a, 0xc3, 0xe6, 0x1c, 0x4f, 0x67, 0xac, 0x4a, 0xa5, 0x8b, 0xf2, 0x58, 0x89, 0xfa, 0x22, 0x92, - 0x8b, 0x8c, 0x55, 0x79, 0x40, 0xa3, 0xe1, 0x22, 0x53, 0x86, 0x59, 0x46, 0xb1, 0x64, 0x91, 0xe4, - 0x09, 0x53, 0xa1, 0x9a, 0x01, 0x68, 0x34, 0xe4, 0x09, 0x43, 0x4f, 0x60, 0x37, 0x9e, 0x0a, 0x72, - 0x19, 0x4d, 0x18, 0x1f, 0x4f, 0xa4, 0x4a, 0xd6, 0x0c, 0x76, 0x14, 0x7b, 0xaf, 0x10, 0xb2, 0x01, - 0xb0, 0x94, 0x39, 0x8f, 0x67, 0x92, 0xad, 0x43, 0xd5, 0x08, 0x3a, 0x06, 0x44, 0x59, 0x21, 0x79, - 0x8a, 0x55, 0xe7, 0xf5, 0x55, 0xaa, 0x6c, 0xad, 0xe0, 0x7e, 0x4d, 0xa9, 0xae, 0xf0, 0x35, 0x98, - 0x85, 0xc4, 0x72, 0x56, 0x74, 0xb6, 0x1d, 0xe3, 0xe8, 0xde, 0x2b, 0xdb, 0xfd, 0xfb, 0x19, 0xb8, - 0xba, 0x0b, 0xa1, 0x72, 0x05, 0x95, 0xfb, 0x70, 0x00, 0x9d, 0x80, 0x51, 0x96, 0x64, 0xe5, 0x5e, - 0x01, 0x96, 0xec, 0xf4, 0xee, 0x08, 0x6d, 0xd8, 0xa4, 0x2c, 0x15, 0x49, 0xd5, 0x31, 0x5d, 0x94, - 0x97, 0x1d, 0xe3, 0x82, 0x45, 0x5a, 0xd2, 0x8d, 0x6b, 0x95, 0xa4, 0x57, 0x82, 0x17, 0x5f, 0x0d, - 0xd8, 0xad, 0xff, 0x09, 0xb9, 0xb0, 0xdf, 0xf7, 0x86, 0x81, 0x7f, 0x16, 0x85, 0xc3, 0xd3, 0xe1, - 0x28, 0x8c, 0x46, 0xe7, 0xe1, 0x85, 0x77, 0xe6, 0xbf, 0xf5, 0xbd, 0x9e, 0xd5, 0x38, 0xd8, 0xbb, - 0xba, 0x76, 0x76, 0x6a, 0x08, 0x3d, 0x83, 0xf6, 0x9f, 0xfe, 0x8f, 0x23, 0x6f, 0xe4, 0xf5, 0x2c, - 0xe3, 0x00, 0xae, 0xae, 0x1d, 0x53, 0x57, 0xff, 0xee, 0xea, 0x9f, 0x47, 0x17, 0xc1, 0xe0, 0x5d, - 0xe0, 0x85, 0xa1, 0xb5, 0xa1, 0x77, 0xad, 0xa1, 0x37, 0xfd, 0xef, 0x4b, 0xdb, 0xb8, 0x59, 0xda, - 0xc6, 0xcf, 0xa5, 0x6d, 0x7c, 0x59, 0xd9, 0x8d, 0x9b, 0x95, 0xdd, 0xf8, 0xb1, 0xb2, 0x1b, 0x9f, - 0x4e, 0xc6, 0x5c, 0x4e, 0x66, 0xb1, 0x4b, 0x44, 0xd2, 0x0d, 0x55, 0xcf, 0x8e, 0x3f, 0xe0, 0xb8, - 0xe8, 0x56, 0x83, 0x36, 0x7f, 0x79, 0xd2, 0xfd, 0x5c, 0x1b, 0xb7, 0xf2, 0x49, 0x14, 0xb1, 0xa9, - 0x66, 0xe8, 0xe4, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x88, 0xfc, 0x65, 0xe2, 0x8f, 0x03, 0x00, - 0x00, + // 555 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x30, + 0x14, 0xc7, 0x9b, 0x95, 0x65, 0xdb, 0x5b, 0xc7, 0x82, 0x35, 0x41, 0x57, 0x89, 0x10, 0x3a, 0x0e, + 0x05, 0x69, 0xa9, 0xa0, 0x12, 0x57, 0x54, 0xd6, 0x00, 0x91, 0xe8, 0x36, 0x92, 0xf6, 0xc2, 0x25, + 0x72, 0x6d, 0xab, 0xb5, 0xda, 0xc4, 0x51, 0xe2, 0x56, 0xf4, 0x2b, 0xec, 0xc4, 0x81, 0x23, 0xfb, + 0x3e, 0x1c, 0x77, 0xe4, 0x88, 0x5a, 0x3e, 0x08, 0x8a, 0x93, 0x6e, 0x01, 0x6e, 0x7e, 0xbf, 0xff, + 0x3f, 0x4f, 0xf9, 0x3f, 0xfb, 0x81, 0x95, 0xca, 0x84, 0x53, 0xd6, 0xe6, 0x04, 0x8b, 0x04, 0x93, + 0x59, 0xe9, 0x64, 0xc7, 0x89, 0x90, 0x02, 0x19, 0xb9, 0xc3, 0xbe, 0xe5, 0x8d, 0xa3, 0xb1, 0x18, + 0x0b, 0x25, 0xb6, 0xb3, 0x53, 0xee, 0x6b, 0xfe, 0xd6, 0x40, 0xbf, 0x50, 0x06, 0x74, 0x0c, 0xbb, + 0x64, 0x82, 0x79, 0x14, 0x70, 0x5a, 0xd7, 0x2c, 0xad, 0xb5, 0xe7, 0xed, 0xa8, 0xda, 0xa5, 0xe8, + 0x04, 0x0e, 0x88, 0x88, 0x22, 0x46, 0x24, 0x17, 0x4a, 0xdf, 0x52, 0x7a, 0xed, 0x0e, 0xba, 0x14, + 0x3d, 0x06, 0x20, 0x13, 0x1c, 0x45, 0x6c, 0x96, 0x39, 0xaa, 0xca, 0xb1, 0x57, 0x10, 0x97, 0xa2, + 0x47, 0xb0, 0x13, 0x8b, 0x44, 0x66, 0xda, 0x3d, 0xa5, 0xe9, 0x59, 0xe9, 0x52, 0xf4, 0x04, 0xf6, + 0x39, 0xc1, 0x01, 0xa6, 0x34, 0x61, 0x69, 0x5a, 0xdf, 0x56, 0x22, 0x70, 0x82, 0xbb, 0x39, 0x41, + 0xcf, 0xc1, 0x20, 0x22, 0x92, 0x09, 0x26, 0xf2, 0xd6, 0xa5, 0x2b, 0xd7, 0xe1, 0x86, 0x6f, 0xac, + 0x0f, 0x41, 0xc7, 0x44, 0xf2, 0x05, 0xab, 0xef, 0x58, 0x5a, 0x6b, 0xd7, 0x2b, 0xaa, 0xe6, 0xf7, + 0x2d, 0xd0, 0xfb, 0x4c, 0x26, 0x9c, 0x20, 0x03, 0xaa, 0x53, 0xb6, 0x2c, 0x12, 0x66, 0x47, 0x74, + 0x04, 0xdb, 0x0b, 0x3c, 0x9b, 0xb3, 0x22, 0x55, 0x5e, 0x64, 0xbf, 0x15, 0xaa, 0x2f, 0x02, 0xb9, + 0x8c, 0x59, 0x91, 0x07, 0x72, 0x34, 0x58, 0xc6, 0xca, 0x30, 0x8f, 0x29, 0x96, 0x2c, 0x90, 0x3c, + 0x64, 0x2a, 0x54, 0xd5, 0x83, 0x1c, 0x0d, 0x78, 0xc8, 0xd0, 0x53, 0xa8, 0x8d, 0x66, 0x82, 0x4c, + 0x83, 0x09, 0xe3, 0xe3, 0x89, 0x54, 0xc9, 0xaa, 0xde, 0xbe, 0x62, 0x1f, 0x14, 0x42, 0x26, 0x00, + 0x96, 0x32, 0xe1, 0xa3, 0xb9, 0x64, 0x9b, 0x50, 0x25, 0x82, 0x4e, 0x01, 0x51, 0x96, 0x4a, 0x1e, + 0x61, 0x35, 0xf9, 0xfc, 0x2a, 0x55, 0xb6, 0x3d, 0xef, 0x41, 0x49, 0x29, 0xae, 0xf0, 0x35, 0xe8, + 0xa9, 0xc4, 0x72, 0x9e, 0xd6, 0x77, 0x2d, 0xad, 0x75, 0xff, 0x95, 0x69, 0xff, 0xfb, 0x0c, 0xec, + 0x7c, 0x0a, 0xbe, 0x72, 0x79, 0x85, 0xbb, 0xf9, 0x06, 0xea, 0x1e, 0xa3, 0x2c, 0x8c, 0xb3, 0x5e, + 0x1e, 0x96, 0xac, 0x7b, 0xf7, 0x0b, 0x27, 0x70, 0x90, 0x4a, 0x29, 0xa6, 0x2c, 0x0a, 0x28, 0x8b, + 0x44, 0x58, 0x4c, 0xae, 0x56, 0xc0, 0x5e, 0xc6, 0x5e, 0x7c, 0xd3, 0xa0, 0x56, 0xee, 0x8c, 0x6c, + 0x38, 0xee, 0x3b, 0x03, 0xcf, 0x3d, 0x0b, 0xfc, 0x41, 0x77, 0x30, 0xf4, 0x83, 0xe1, 0xb9, 0x7f, + 0xe9, 0x9c, 0xb9, 0xef, 0x5c, 0xa7, 0x67, 0x54, 0x1a, 0x87, 0x57, 0xd7, 0xd6, 0x7e, 0x09, 0xa1, + 0x67, 0x70, 0xf4, 0xb7, 0xff, 0xd3, 0xd0, 0x19, 0x3a, 0x3d, 0x43, 0x6b, 0xc0, 0xd5, 0xb5, 0xa5, + 0xe7, 0xd5, 0xff, 0x5d, 0xdd, 0xf3, 0xe0, 0xd2, 0xbb, 0x78, 0xef, 0x39, 0xbe, 0x6f, 0x6c, 0xe5, + 0x5d, 0x4b, 0xe8, 0x6d, 0xff, 0xc7, 0xca, 0xd4, 0x6e, 0x56, 0xa6, 0xf6, 0x6b, 0x65, 0x6a, 0x5f, + 0xd7, 0x66, 0xe5, 0x66, 0x6d, 0x56, 0x7e, 0xae, 0xcd, 0xca, 0xe7, 0xce, 0x98, 0xcb, 0xc9, 0x7c, + 0x64, 0x13, 0x11, 0xb6, 0x7d, 0x35, 0xa3, 0xd3, 0x8f, 0x78, 0x94, 0xb6, 0x8b, 0xc5, 0x5a, 0xbc, + 0xec, 0xb4, 0xbf, 0x94, 0xd6, 0x2b, 0x7b, 0x02, 0xe9, 0x48, 0x57, 0x3b, 0xd3, 0xf9, 0x13, 0x00, + 0x00, 0xff, 0xff, 0x20, 0xd4, 0x9e, 0xc6, 0x7f, 0x03, 0x00, 0x00, } func (m *Oracle) Marshal() (dAtA []byte, err error) { @@ -517,17 +508,10 @@ func (m *RedemptionRateAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l - if len(m.BaseDenom) > 0 { - i -= len(m.BaseDenom) - copy(dAtA[i:], m.BaseDenom) - i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.BaseDenom))) - i-- - dAtA[i] = 0x12 - } - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.Denom))) + if len(m.SttokenDenom) > 0 { + i -= len(m.SttokenDenom) + copy(dAtA[i:], m.SttokenDenom) + i = encodeVarintIcaoracle(dAtA, i, uint64(len(m.SttokenDenom))) i-- dAtA[i] = 0xa } @@ -625,11 +609,7 @@ func (m *RedemptionRateAttributes) Size() (n int) { } var l int _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovIcaoracle(uint64(l)) - } - l = len(m.BaseDenom) + l = len(m.SttokenDenom) if l > 0 { n += 1 + l + sovIcaoracle(uint64(l)) } @@ -1202,39 +1182,7 @@ func (m *RedemptionRateAttributes) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowIcaoracle - } - 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 ErrInvalidLengthIcaoracle - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthIcaoracle - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Denom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BaseDenom", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SttokenDenom", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -1262,7 +1210,7 @@ func (m *RedemptionRateAttributes) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.BaseDenom = string(dAtA[iNdEx:postIndex]) + m.SttokenDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index f6ec21ed65..704ed9750e 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -10,6 +10,8 @@ import ( "github.com/Stride-Labs/stride/v13/utils" ) +const TypeMsgAddOracle = "add_oracle" + var _ sdk.Msg = &MsgAddOracle{} func NewMsgAddOracle(creator string, connectionId string) *MsgAddOracle { @@ -19,6 +21,10 @@ func NewMsgAddOracle(creator string, connectionId string) *MsgAddOracle { } } +func (msg MsgAddOracle) Type() string { + return TypeMsgAddOracle +} + func (msg *MsgAddOracle) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go index e853e840c6..74eccbc92f 100644 --- a/x/icaoracle/types/message_add_oracle_test.go +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -74,6 +74,7 @@ func TestMsgAddOracle(t *testing.T) { require.Equal(t, signers[0].String(), validAdminAddress) require.Equal(t, test.msg.ConnectionId, validConnectionId, "connnectionId") + require.Equal(t, test.msg.Type(), "add_oracle", "type") } else { require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) } diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index 4e6ed9e73d..8996dc852c 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -1,6 +1,8 @@ package types import ( + "regexp" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -8,16 +10,23 @@ import ( "github.com/Stride-Labs/stride/v13/utils" ) +const TypeMsgInstantiateOracle = "instantiate_oracle" + var _ sdk.Msg = &MsgInstantiateOracle{} -func NewMsgInstantiateOracle(creator string, chainId string, contractCodeId uint64) *MsgInstantiateOracle { +func NewMsgInstantiateOracle(creator string, chainId string, contractCodeId uint64, transferChannelId string) *MsgInstantiateOracle { return &MsgInstantiateOracle{ - Creator: creator, - OracleChainId: chainId, - ContractCodeId: contractCodeId, + Creator: creator, + OracleChainId: chainId, + ContractCodeId: contractCodeId, + TransferChannelOnOracle: transferChannelId, } } +func (msg MsgInstantiateOracle) Type() string { + return TypeMsgInstantiateOracle +} + func (msg *MsgInstantiateOracle) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { @@ -48,5 +57,13 @@ func (msg *MsgInstantiateOracle) ValidateBasic() error { return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "contract code-id cannot be 0") } + matched, err := regexp.MatchString(`^channel-\d+$`, msg.TransferChannelOnOracle) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to verify channel-id (%s)", msg.TransferChannelOnOracle) + } + if !matched { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid channel-id (%s), must be of the format 'channel-{N}'", msg.TransferChannelOnOracle) + } + return nil } diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go index 3a4b3d0ff0..46b75f8897 100644 --- a/x/icaoracle/types/message_instantiate_oracle_test.go +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -18,6 +18,7 @@ func TestMsgInstantiateOracle(t *testing.T) { validChainId := "chain-1" validCodeId := uint64(1) + validChannelId := "channel-0" tests := []struct { name string @@ -27,47 +28,62 @@ func TestMsgInstantiateOracle(t *testing.T) { { name: "successful message", msg: types.MsgInstantiateOracle{ - Creator: validAdminAddress, - OracleChainId: validChainId, - ContractCodeId: validCodeId, + Creator: validAdminAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + TransferChannelOnOracle: validChannelId, }, }, { name: "invalid creator address", msg: types.MsgInstantiateOracle{ - Creator: invalidAddress, - OracleChainId: validChainId, - ContractCodeId: validCodeId, + Creator: invalidAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + TransferChannelOnOracle: validChannelId, }, err: "invalid creator address", }, { name: "invalid admin address", msg: types.MsgInstantiateOracle{ - Creator: validNotAdminAddress, - OracleChainId: validChainId, - ContractCodeId: validCodeId, + Creator: validNotAdminAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + TransferChannelOnOracle: validChannelId, }, err: "invalid creator address", }, { name: "invalid chain-id", msg: types.MsgInstantiateOracle{ - Creator: validAdminAddress, - OracleChainId: "", - ContractCodeId: validCodeId, + Creator: validAdminAddress, + OracleChainId: "", + ContractCodeId: validCodeId, + TransferChannelOnOracle: validChannelId, }, err: "oracle-chain-id is required", }, { name: "invalid code ID", msg: types.MsgInstantiateOracle{ - Creator: validAdminAddress, - OracleChainId: validChainId, - ContractCodeId: 0, + Creator: validAdminAddress, + OracleChainId: validChainId, + ContractCodeId: 0, + TransferChannelOnOracle: validChannelId, }, err: "contract code-id cannot be 0", }, + { + name: "invalid channel ID", + msg: types.MsgInstantiateOracle{ + Creator: validAdminAddress, + OracleChainId: validChainId, + ContractCodeId: validCodeId, + TransferChannelOnOracle: "chan-0", + }, + err: "invalid channel-id (chan-0)", + }, } for _, test := range tests { @@ -81,6 +97,7 @@ func TestMsgInstantiateOracle(t *testing.T) { require.Equal(t, test.msg.OracleChainId, validChainId, "chainId") require.Equal(t, test.msg.ContractCodeId, validCodeId, "codeId") + require.Equal(t, test.msg.Type(), "instantiate_oracle", "type") } else { require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) } diff --git a/x/icaoracle/types/message_remove_oracle.go b/x/icaoracle/types/message_remove_oracle.go index f0bc3dddcd..139101acfe 100644 --- a/x/icaoracle/types/message_remove_oracle.go +++ b/x/icaoracle/types/message_remove_oracle.go @@ -6,8 +6,14 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) +const TypeMsgRemoveOracle = "remove_oracle" + var _ sdk.Msg = &MsgRemoveOracle{} +func (msg MsgRemoveOracle) Type() string { + return TypeMsgRemoveOracle +} + func (msg *MsgRemoveOracle) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go index b07fd7295d..61e9153c3d 100644 --- a/x/icaoracle/types/message_remove_oracle_test.go +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -51,6 +51,7 @@ func TestMsgRemoveOracle(t *testing.T) { if test.err == "" { require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) require.Equal(t, test.msg.OracleChainId, validChainId, "oracle chain-id") + require.Equal(t, test.msg.Type(), "remove_oracle", "type") } else { require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) } diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account.go b/x/icaoracle/types/message_restore_oracle_interchain_account.go index 8b7d4be300..d9302307ea 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account.go @@ -6,6 +6,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) +const TypeMsgRestoreOracleICA = "restore_oracle_ica" + var _ sdk.Msg = &MsgRestoreOracleICA{} func NewMsgRestoreOracleICA(creator string, oracleChainId string) *MsgRestoreOracleICA { @@ -15,6 +17,10 @@ func NewMsgRestoreOracleICA(creator string, oracleChainId string) *MsgRestoreOra } } +func (msg MsgRestoreOracleICA) Type() string { + return TypeMsgRestoreOracleICA +} + func (msg *MsgRestoreOracleICA) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go index 5dac1b46a7..05b008f5e3 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -55,6 +55,7 @@ func TestMsgRestoreOracleICA(t *testing.T) { require.Equal(t, signers[0].String(), validAddr) require.Equal(t, test.msg.OracleChainId, validChainId, "oracle-chain-id") + require.Equal(t, test.msg.Type(), "restore_oracle_ica", "type") } else { require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) } diff --git a/x/icaoracle/types/message_toggle_oracle.go b/x/icaoracle/types/message_toggle_oracle.go index fb88d08c11..d05dc33044 100644 --- a/x/icaoracle/types/message_toggle_oracle.go +++ b/x/icaoracle/types/message_toggle_oracle.go @@ -6,8 +6,14 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) +const TypeMsgToggleOracle = "toggle_oracle" + var _ sdk.Msg = &MsgToggleOracle{} +func (msg MsgToggleOracle) Type() string { + return TypeMsgToggleOracle +} + func (msg *MsgToggleOracle) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go index e57dc5a202..d443fa84be 100644 --- a/x/icaoracle/types/message_toggle_oracle_test.go +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -51,6 +51,7 @@ func TestMsgMsgToggleOracle(t *testing.T) { if test.err == "" { require.NoError(t, test.msg.ValidateBasic(), "test: %v", test.name) require.Equal(t, test.msg.OracleChainId, validChainId, "oracle chain-id") + require.Equal(t, test.msg.Type(), "toggle_oracle", "type") } else { require.ErrorContains(t, test.msg.ValidateBasic(), test.err, "test: %v", test.name) } diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go index 680c2006bc..64eef3de68 100644 --- a/x/icaoracle/types/tx.pb.go +++ b/x/icaoracle/types/tx.pb.go @@ -121,9 +121,10 @@ var xxx_messageInfo_MsgAddOracleResponse proto.InternalMessageInfo // Instantiates the oracle's CW contract type MsgInstantiateOracle struct { - Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` - OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` - ContractCodeId uint64 `protobuf:"varint,3,opt,name=contract_code_id,json=contractCodeId,proto3" json:"contract_code_id,omitempty"` + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + OracleChainId string `protobuf:"bytes,2,opt,name=oracle_chain_id,json=oracleChainId,proto3" json:"oracle_chain_id,omitempty"` + ContractCodeId uint64 `protobuf:"varint,3,opt,name=contract_code_id,json=contractCodeId,proto3" json:"contract_code_id,omitempty"` + TransferChannelOnOracle string `protobuf:"bytes,4,opt,name=transfer_channel_on_oracle,json=transferChannelOnOracle,proto3" json:"transfer_channel_on_oracle,omitempty"` } func (m *MsgInstantiateOracle) Reset() { *m = MsgInstantiateOracle{} } @@ -180,6 +181,13 @@ func (m *MsgInstantiateOracle) GetContractCodeId() uint64 { return 0 } +func (m *MsgInstantiateOracle) GetTransferChannelOnOracle() string { + if m != nil { + return m.TransferChannelOnOracle + } + return "" +} + type MsgInstantiateOracleResponse struct { } @@ -511,44 +519,47 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/tx.proto", fileDescriptor_6e58a377bb8520d3) } var fileDescriptor_6e58a377bb8520d3 = []byte{ - // 592 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3d, 0x6f, 0xd3, 0x4e, - 0x1c, 0xc7, 0xe3, 0x7f, 0xfe, 0x2a, 0xe4, 0x94, 0xd2, 0xd4, 0x54, 0x6d, 0x62, 0xc0, 0xb4, 0x46, - 0x84, 0x50, 0x29, 0x36, 0x6d, 0xc4, 0x83, 0xb2, 0xa5, 0x99, 0x22, 0x11, 0x21, 0x39, 0x4c, 0x08, - 0x29, 0xba, 0xdc, 0x9d, 0x9c, 0x13, 0x8d, 0x2f, 0xf2, 0x5d, 0xa3, 0x76, 0x65, 0x64, 0x62, 0xe5, - 0x1d, 0x20, 0xa6, 0x0e, 0xbc, 0x00, 0x46, 0xc6, 0x8a, 0x01, 0x31, 0xa2, 0x64, 0xe8, 0xc4, 0x7b, - 0x40, 0x7e, 0x76, 0x1c, 0x97, 0x06, 0x21, 0x58, 0x12, 0xdd, 0xf7, 0xf7, 0xbd, 0xdf, 0x7d, 0x3f, - 0xba, 0x07, 0x83, 0x0a, 0x17, 0x0e, 0xc5, 0xc4, 0xa0, 0x08, 0x32, 0x07, 0xa2, 0x43, 0x62, 0x88, - 0x63, 0x7d, 0xec, 0x30, 0xc1, 0xe4, 0x92, 0x5f, 0xd2, 0xa3, 0x92, 0x52, 0x41, 0x8c, 0x8f, 0x18, - 0xef, 0x7b, 0x75, 0xc3, 0x1f, 0xf8, 0x66, 0x65, 0xcb, 0x1f, 0x19, 0x23, 0x6e, 0x19, 0x93, 0x3d, - 0xf7, 0x2f, 0x28, 0xac, 0xc3, 0x11, 0xb5, 0x99, 0xe1, 0xfd, 0xfa, 0x92, 0xf6, 0x4e, 0x02, 0xc5, - 0x2e, 0xb7, 0x5a, 0x18, 0x3f, 0xf3, 0xfa, 0xca, 0xfb, 0xe0, 0x0a, 0x72, 0x08, 0x14, 0xcc, 0x29, - 0x4b, 0xdb, 0x52, 0xad, 0x70, 0x50, 0xfe, 0xf2, 0xb1, 0xbe, 0x11, 0xf4, 0x6f, 0x61, 0xec, 0x10, - 0xce, 0x7b, 0xc2, 0xa1, 0xb6, 0x65, 0x86, 0x46, 0xf9, 0x0e, 0x58, 0x45, 0xcc, 0xb6, 0x09, 0x12, - 0x94, 0xd9, 0x7d, 0x8a, 0xcb, 0xff, 0xb9, 0x33, 0xcd, 0x62, 0x2c, 0x76, 0x70, 0xf3, 0xc1, 0xeb, - 0xf3, 0xd3, 0xdd, 0x70, 0xca, 0x9b, 0xf3, 0xd3, 0xdd, 0xdb, 0x01, 0xee, 0x71, 0x02, 0x38, 0x19, - 0x45, 0xdb, 0x04, 0x1b, 0xc9, 0xb1, 0x49, 0xf8, 0x98, 0xd9, 0x9c, 0x68, 0x5f, 0x25, 0xaf, 0xd0, - 0xb1, 0xb9, 0x80, 0xb6, 0xa0, 0x50, 0x90, 0x3f, 0xc8, 0x5e, 0x05, 0x6b, 0xfe, 0xda, 0x7d, 0x34, - 0x84, 0x34, 0x91, 0x7e, 0xd5, 0x97, 0xdb, 0xae, 0xda, 0xc1, 0x72, 0x0d, 0x94, 0x10, 0xb3, 0x85, - 0x03, 0x91, 0xe8, 0x23, 0x86, 0x89, 0x6b, 0xcc, 0x6f, 0x4b, 0xb5, 0xff, 0xcd, 0x6b, 0xa1, 0xde, - 0x66, 0x98, 0x74, 0x70, 0xf3, 0x49, 0x1a, 0xf4, 0x5e, 0x36, 0xe8, 0x42, 0x7e, 0x4d, 0x05, 0x37, - 0xb3, 0xf4, 0x08, 0xfc, 0x83, 0x04, 0xae, 0x77, 0xb9, 0x65, 0x12, 0x2e, 0x98, 0x13, 0x14, 0x3b, - 0xed, 0xd6, 0xdf, 0xe4, 0x6e, 0x3e, 0x4e, 0xd3, 0x54, 0xb3, 0x69, 0xd2, 0xa1, 0xb4, 0x5b, 0xe0, - 0x46, 0x86, 0x1c, 0xb1, 0x7c, 0x92, 0xc0, 0x5a, 0x97, 0x5b, 0xcf, 0x99, 0x65, 0x1d, 0x86, 0xfb, - 0xf7, 0x08, 0x14, 0xe0, 0x91, 0x18, 0x32, 0x87, 0x8a, 0x93, 0x4b, 0x49, 0x62, 0xeb, 0xd2, 0x7b, - 0xb8, 0x09, 0x56, 0x20, 0x12, 0x74, 0x42, 0xbc, 0x9d, 0xbb, 0x6a, 0x06, 0xa3, 0xe6, 0x43, 0x97, - 0x31, 0xee, 0xe7, 0x52, 0x6a, 0xd9, 0x94, 0xc9, 0xb8, 0x5a, 0x05, 0x6c, 0xa5, 0xa4, 0x88, 0xee, - 0xbd, 0x4f, 0x67, 0x92, 0x11, 0x9b, 0xfc, 0x23, 0xba, 0xdf, 0xa0, 0x48, 0xc6, 0x0a, 0x28, 0x92, - 0x52, 0x48, 0xb1, 0xff, 0x23, 0x0f, 0xf2, 0x5d, 0x6e, 0xc9, 0x3d, 0x50, 0x88, 0x1f, 0x08, 0x55, - 0x4f, 0xbf, 0x45, 0x7a, 0xf2, 0x96, 0x2a, 0xd5, 0x5f, 0xd7, 0xc3, 0xe6, 0xf2, 0x2b, 0xb0, 0xbe, - 0x78, 0x83, 0xb3, 0x27, 0x2f, 0xf8, 0x14, 0x7d, 0x39, 0x5f, 0xb4, 0xd8, 0x10, 0x94, 0x16, 0x6e, - 0xcd, 0xdd, 0xcc, 0x1e, 0x69, 0x9b, 0x52, 0x5f, 0xca, 0x16, 0xad, 0xf4, 0x12, 0x14, 0xe7, 0xce, - 0xf4, 0x4e, 0xe6, 0xf4, 0xa4, 0x45, 0xb9, 0x7f, 0xa9, 0x25, 0xd9, 0x7d, 0xee, 0x4c, 0xed, 0x5c, - 0x10, 0x2e, 0xb6, 0x5c, 0xd0, 0x3d, 0x6b, 0xbf, 0x0f, 0xba, 0x9f, 0xa7, 0xaa, 0x74, 0x36, 0x55, - 0xa5, 0xef, 0x53, 0x55, 0x7a, 0x3b, 0x53, 0x73, 0x67, 0x33, 0x35, 0xf7, 0x6d, 0xa6, 0xe6, 0x5e, - 0x34, 0x2c, 0x2a, 0x86, 0x47, 0x03, 0x1d, 0xb1, 0x91, 0xd1, 0xf3, 0xda, 0xd5, 0x9f, 0xc2, 0x01, - 0x37, 0x82, 0xf3, 0x35, 0xd9, 0x6b, 0xcc, 0x9d, 0x31, 0x71, 0x32, 0x26, 0x7c, 0xb0, 0xe2, 0x7d, - 0x62, 0x1a, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x68, 0xf5, 0x66, 0xd8, 0x06, 0x00, 0x00, + // 626 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3d, 0x6f, 0xd3, 0x40, + 0x18, 0xc7, 0xeb, 0xb6, 0x2a, 0xf4, 0xd4, 0xd2, 0xd6, 0x54, 0x4d, 0x62, 0xc0, 0xb4, 0x46, 0x84, + 0x50, 0x29, 0x36, 0x6d, 0xc4, 0x8b, 0xc2, 0x94, 0x66, 0x8a, 0x44, 0x54, 0xc9, 0x61, 0x42, 0x48, + 0xd6, 0xe5, 0x7c, 0x38, 0x16, 0xc9, 0x5d, 0x74, 0x77, 0x8d, 0xda, 0x95, 0x91, 0x09, 0x89, 0x89, + 0x6f, 0x80, 0x98, 0x3a, 0xf0, 0x01, 0x18, 0x19, 0x2b, 0x26, 0x46, 0x94, 0x0c, 0x9d, 0xf8, 0x0e, + 0xc8, 0xaf, 0x71, 0x1c, 0x97, 0x06, 0x21, 0x58, 0x12, 0xdd, 0xf3, 0xfc, 0xef, 0x7f, 0xcf, 0xef, + 0xee, 0xb9, 0x33, 0x28, 0x70, 0xc1, 0x5c, 0x1b, 0x1b, 0x2e, 0x82, 0x94, 0x41, 0xd4, 0xc5, 0x86, + 0x38, 0xd6, 0xfb, 0x8c, 0x0a, 0x2a, 0xaf, 0x07, 0x29, 0x3d, 0x4e, 0x29, 0x05, 0x44, 0x79, 0x8f, + 0x72, 0xcb, 0xcf, 0x1b, 0xc1, 0x20, 0x10, 0x2b, 0xb9, 0x60, 0x64, 0xf4, 0xb8, 0x63, 0x0c, 0xf6, + 0xbc, 0xbf, 0x30, 0xb1, 0x01, 0x7b, 0x2e, 0xa1, 0x86, 0xff, 0x1b, 0x84, 0xb4, 0x0f, 0x12, 0x58, + 0x69, 0x72, 0xa7, 0x66, 0xdb, 0x87, 0xbe, 0xaf, 0xbc, 0x0f, 0xae, 0x20, 0x86, 0xa1, 0xa0, 0x2c, + 0x2f, 0x6d, 0x4b, 0xa5, 0xe5, 0x83, 0xfc, 0xb7, 0xcf, 0xe5, 0xcd, 0xd0, 0xbf, 0x66, 0xdb, 0x0c, + 0x73, 0xde, 0x12, 0xcc, 0x25, 0x8e, 0x19, 0x09, 0xe5, 0x3b, 0x60, 0x15, 0x51, 0x42, 0x30, 0x12, + 0x2e, 0x25, 0x96, 0x6b, 0xe7, 0xe7, 0xbd, 0x99, 0xe6, 0xca, 0x38, 0xd8, 0xb0, 0xab, 0x0f, 0xde, + 0x9c, 0x9f, 0xee, 0x46, 0x53, 0xde, 0x9e, 0x9f, 0xee, 0xde, 0x0e, 0x71, 0x8f, 0x13, 0xc0, 0xc9, + 0x52, 0xb4, 0x2d, 0xb0, 0x99, 0x1c, 0x9b, 0x98, 0xf7, 0x29, 0xe1, 0x58, 0x7b, 0x3f, 0xef, 0x27, + 0x1a, 0x84, 0x0b, 0x48, 0x84, 0x0b, 0x05, 0xfe, 0x8b, 0xda, 0x8b, 0x60, 0x2d, 0x58, 0xdb, 0x42, + 0x1d, 0xe8, 0x26, 0xaa, 0x5f, 0x0d, 0xc2, 0x75, 0x2f, 0xda, 0xb0, 0xe5, 0x12, 0x58, 0x47, 0x94, + 0x08, 0x06, 0x91, 0xb0, 0x10, 0xb5, 0xb1, 0x27, 0x5c, 0xd8, 0x96, 0x4a, 0x8b, 0xe6, 0xb5, 0x28, + 0x5e, 0xa7, 0x36, 0x6e, 0xd8, 0xf2, 0x53, 0xa0, 0x08, 0x06, 0x09, 0x7f, 0x85, 0x99, 0xe7, 0x49, + 0x08, 0xee, 0x5a, 0x94, 0x58, 0x81, 0x5d, 0x7e, 0xd1, 0x37, 0xcf, 0x45, 0x8a, 0x7a, 0x20, 0x38, + 0x24, 0x01, 0x42, 0xf5, 0x49, 0x7a, 0x97, 0xee, 0x65, 0xef, 0xd2, 0x14, 0xbc, 0xa6, 0x82, 0x9b, + 0x59, 0xf1, 0x78, 0xd7, 0x3e, 0x49, 0xe0, 0x7a, 0x93, 0x3b, 0x26, 0xe6, 0x82, 0xb2, 0x30, 0xd9, + 0xa8, 0xd7, 0xfe, 0xe5, 0xa6, 0x55, 0x1f, 0xa7, 0x69, 0x8a, 0xd9, 0x34, 0xe9, 0xa2, 0xb4, 0x5b, + 0xe0, 0x46, 0x46, 0x38, 0x66, 0xf9, 0x22, 0x81, 0xb5, 0x26, 0x77, 0x9e, 0x53, 0xc7, 0xe9, 0x46, + 0x87, 0xff, 0x08, 0x2c, 0xc3, 0x23, 0xd1, 0xa1, 0xcc, 0x15, 0x27, 0x97, 0x92, 0x8c, 0xa5, 0x33, + 0x37, 0xc0, 0x16, 0x58, 0x82, 0x48, 0xb8, 0x03, 0xec, 0x1f, 0xfb, 0x55, 0x33, 0x1c, 0x55, 0x1f, + 0x7a, 0x8c, 0x63, 0x3f, 0x8f, 0x52, 0xcb, 0xa6, 0x4c, 0x96, 0xab, 0x15, 0x40, 0x2e, 0x15, 0x8a, + 0xe9, 0x3e, 0x06, 0x74, 0x26, 0xee, 0xd1, 0xc1, 0x7f, 0xa2, 0xfb, 0x03, 0x8a, 0x64, 0x59, 0x21, + 0x45, 0x32, 0x14, 0x51, 0xec, 0xff, 0x5c, 0x00, 0x0b, 0x4d, 0xee, 0xc8, 0x2d, 0xb0, 0x3c, 0x7e, + 0x5d, 0x54, 0x3d, 0xfd, 0x90, 0xe9, 0xc9, 0x2b, 0xae, 0x14, 0x7f, 0x9f, 0x8f, 0xcc, 0xe5, 0xd7, + 0x60, 0x63, 0xfa, 0xfa, 0x67, 0x4f, 0x9e, 0xd2, 0x29, 0xfa, 0x6c, 0xba, 0x78, 0xb1, 0x0e, 0x58, + 0x9f, 0xba, 0x35, 0x77, 0x33, 0x3d, 0xd2, 0x32, 0xa5, 0x3c, 0x93, 0x2c, 0x5e, 0xe9, 0x25, 0x58, + 0x99, 0xe8, 0xe9, 0x9d, 0xcc, 0xe9, 0x49, 0x89, 0x72, 0xff, 0x52, 0x49, 0xd2, 0x7d, 0xa2, 0xa7, + 0x76, 0x2e, 0x28, 0x6e, 0x2c, 0xb9, 0xc0, 0x3d, 0xeb, 0xbc, 0x0f, 0x9a, 0x5f, 0x87, 0xaa, 0x74, + 0x36, 0x54, 0xa5, 0x1f, 0x43, 0x55, 0x7a, 0x37, 0x52, 0xe7, 0xce, 0x46, 0xea, 0xdc, 0xf7, 0x91, + 0x3a, 0xf7, 0xa2, 0xe2, 0xb8, 0xa2, 0x73, 0xd4, 0xd6, 0x11, 0xed, 0x19, 0x2d, 0xdf, 0xae, 0xfc, + 0x0c, 0xb6, 0xb9, 0x11, 0xf6, 0xd7, 0x60, 0xaf, 0x32, 0xd1, 0x63, 0xe2, 0xa4, 0x8f, 0x79, 0x7b, + 0xc9, 0xff, 0x3e, 0x55, 0x7e, 0x05, 0x00, 0x00, 0xff, 0xff, 0xe4, 0xa5, 0xd7, 0xcc, 0x15, 0x07, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -865,6 +876,13 @@ func (m *MsgInstantiateOracle) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.TransferChannelOnOracle) > 0 { + i -= len(m.TransferChannelOnOracle) + copy(dAtA[i:], m.TransferChannelOnOracle) + i = encodeVarintTx(dAtA, i, uint64(len(m.TransferChannelOnOracle))) + i-- + dAtA[i] = 0x22 + } if m.ContractCodeId != 0 { i = encodeVarintTx(dAtA, i, uint64(m.ContractCodeId)) i-- @@ -1154,6 +1172,10 @@ func (m *MsgInstantiateOracle) Size() (n int) { if m.ContractCodeId != 0 { n += 1 + sovTx(uint64(m.ContractCodeId)) } + l = len(m.TransferChannelOnOracle) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } return n } @@ -1529,6 +1551,38 @@ func (m *MsgInstantiateOracle) Unmarshal(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferChannelOnOracle", 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.TransferChannelOnOracle = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index b682d8afb8..79cdab445a 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -210,7 +210,7 @@ func (k Keeper) UpdateRedemptionRateForHostZone(ctx sdk.Context, hostZone types. } // Otherwise, submit the redemption rate to the oracle - if err := k.PostRedemptionRateToOracles(ctx, hostZone, redemptionRate); err != nil { + if err := k.PostRedemptionRateToOracles(ctx, hostZone.HostDenom, redemptionRate); err != nil { k.Logger(ctx).Error(fmt.Sprintf("Unable to send redemption rate to oracle: %s", err.Error())) return } @@ -278,12 +278,10 @@ func (k Keeper) GetTotalTokenizedDelegations(ctx sdk.Context, hostZone types.Hos } // Pushes a redemption rate update to the ICA oracle -func (k Keeper) PostRedemptionRateToOracles(ctx sdk.Context, hostZone types.HostZone, redemptionRate sdk.Dec) error { - stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) - nativeDenom := hostZone.IbcDenom +func (k Keeper) PostRedemptionRateToOracles(ctx sdk.Context, hostDenom string, redemptionRate sdk.Dec) error { + stDenom := types.StAssetDenomFromHostZoneDenom(hostDenom) attributes, err := json.Marshal(icaoracletypes.RedemptionRateAttributes{ - Denom: stDenom, - BaseDenom: nativeDenom, + SttokenDenom: stDenom, }) if err != nil { return err From c353fce9e71a075a5b874256636f53c26b258838 Mon Sep 17 00:00:00 2001 From: Aidan Salzmann Date: Sun, 27 Aug 2023 22:23:17 -0400 Subject: [PATCH 23/44] v14 upgrade handler (#903) Co-authored-by: shellvish <104537253+shellvish@users.noreply.github.com> Co-authored-by: sampocs Co-authored-by: Vladislav Varadinov --- app/app.go | 20 +- app/upgrades.go | 24 + app/upgrades/v14/README.md | 1 + app/upgrades/v14/allocations.go | 7269 +++++++++++++++++ app/upgrades/v14/upgrades.go | 554 ++ app/upgrades/v14/upgrades_test.go | 366 + build/.gitignore | 3 - cmd/strided/root.go | 1 + dockernet/build.sh | 2 +- go.mod | 23 +- go.sum | 22 +- utils/utils.go | 7 + x/records/keeper/callback_lsm_transfer.go | 2 +- x/stakeibc/keeper/consumer_test.go | 7 +- x/stakeibc/keeper/icacallbacks_delegate.go | 7 + x/stakeibc/keeper/icacallbacks_detokenize.go | 2 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 7 + .../keeper/icqcallbacks_delegator_shares.go | 2 +- .../icqcallbacks_delegator_shares_test.go | 2 +- .../icqcallbacks_validator_exchange_rate.go | 2 +- ...qcallbacks_validator_exchange_rate_test.go | 2 +- .../keeper/icqcallbacks_withdrawal_balance.go | 2 +- x/stakeibc/keeper/lsm_test.go | 2 +- .../keeper/msg_server_lsm_liquid_stake.go | 3 +- .../msg_server_lsm_liquid_stake_test.go | 2 +- .../keeper/msg_server_register_host_zone.go | 9 + .../update_validator_shares_exch_rate_test.go | 2 +- x/stakeibc/keeper/validator_selection_test.go | 2 +- x/stakeibc/migrations/v3/convert.go | 87 + x/stakeibc/migrations/v3/convert_test.go | 188 + x/stakeibc/migrations/v3/migrations.go | 46 + .../migrations/v3/types/host_zone.pb.go | 86 +- .../migrations/v3/types/ica_account.pb.go | 4 +- .../migrations/v3/types/validator.pb.go | 8 +- x/stakeibc/module.go | 2 +- 35 files changed, 8676 insertions(+), 92 deletions(-) create mode 100644 app/upgrades/v14/README.md create mode 100644 app/upgrades/v14/allocations.go create mode 100644 app/upgrades/v14/upgrades.go create mode 100644 app/upgrades/v14/upgrades_test.go delete mode 100644 build/.gitignore create mode 100644 x/stakeibc/migrations/v3/convert.go create mode 100644 x/stakeibc/migrations/v3/convert_test.go create mode 100644 x/stakeibc/migrations/v3/migrations.go diff --git a/app/app.go b/app/app.go index b94e661b71..b008dc3349 100644 --- a/app/app.go +++ b/app/app.go @@ -61,6 +61,10 @@ import ( govtypesv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" ccvdistr "github.com/cosmos/interchain-security/v3/x/ccv/democracy/distribution" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" + evmosvesting "github.com/evmos/vesting/x/vesting" + evmosvestingclient "github.com/evmos/vesting/x/vesting/client" + evmosvestingkeeper "github.com/evmos/vesting/x/vesting/keeper" + evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" claimvesting "github.com/Stride-Labs/stride/v13/x/claim/vesting" claimvestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" @@ -175,6 +179,7 @@ func getGovProposalHandlers() []govclient.ProposalHandler { ratelimitclient.UpdateRateLimitProposalHandler, ratelimitclient.RemoveRateLimitProposalHandler, ratelimitclient.ResetRateLimitProposalHandler, + evmosvestingclient.RegisterClawbackProposalHandler, ) return govProposalHandlers @@ -220,6 +225,7 @@ var ( autopilot.AppModuleBasic{}, icaoracle.AppModuleBasic{}, tendermint.AppModuleBasic{}, + evmosvesting.AppModuleBasic{}, ) // module account permissions @@ -274,6 +280,7 @@ type StrideApp struct { memKeys map[string]*storetypes.MemoryStoreKey // keepers + VestingKeeper evmosvestingkeeper.Keeper AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper CapabilityKeeper *capabilitykeeper.Keeper @@ -362,6 +369,7 @@ func NewStrideApp( ccvconsumertypes.StoreKey, crisistypes.StoreKey, consensusparamtypes.StoreKey, + evmosvestingtypes.StoreKey, ) tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey) memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) @@ -608,6 +616,11 @@ func NewStrideApp( app.ClaimKeeper) autopilotModule := autopilot.NewAppModule(appCodec, app.AutopilotKeeper) + app.VestingKeeper = evmosvestingkeeper.NewKeeper( + keys[evmosvestingtypes.StoreKey], authtypes.NewModuleAddress(govtypes.ModuleName), appCodec, + app.AccountKeeper, app.BankKeeper, app.DistrKeeper, app.StakingKeeper, + ) + // Register Gov (must be registerd after stakeibc) govRouter := govtypesv1beta1.NewRouter() govRouter.AddRoute(govtypes.RouterKey, govtypesv1beta1.ProposalHandler). @@ -615,7 +628,8 @@ func NewStrideApp( AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)). AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)). AddRoute(stakeibcmoduletypes.RouterKey, stakeibcmodule.NewStakeibcProposalHandler(app.StakeibcKeeper)). - AddRoute(ratelimitmoduletypes.RouterKey, ratelimitmodule.NewRateLimitProposalHandler(app.RatelimitKeeper, app.IBCKeeper.ChannelKeeper)) + AddRoute(ratelimitmoduletypes.RouterKey, ratelimitmodule.NewRateLimitProposalHandler(app.RatelimitKeeper, app.IBCKeeper.ChannelKeeper)). + AddRoute(evmosvestingtypes.RouterKey, evmosvesting.NewVestingProposalHandler(&app.VestingKeeper)) govKeeper := govkeeper.NewKeeper( appCodec, keys[govtypes.StoreKey], app.AccountKeeper, app.BankKeeper, @@ -725,6 +739,7 @@ func NewStrideApp( app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, encodingConfig.TxConfig, ), + evmosvesting.NewAppModule(app.VestingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)), vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), claimvesting.NewAppModule(app.AccountKeeper, app.BankKeeper), @@ -780,6 +795,7 @@ func NewStrideApp( genutiltypes.ModuleName, feegrant.ModuleName, paramstypes.ModuleName, + evmosvestingtypes.ModuleName, // monitoringptypes.ModuleName, icatypes.ModuleName, stakeibcmoduletypes.ModuleName, @@ -815,6 +831,7 @@ func NewStrideApp( ibchost.ModuleName, ibctransfertypes.ModuleName, // monitoringptypes.ModuleName, + evmosvestingtypes.ModuleName, icatypes.ModuleName, stakeibcmoduletypes.ModuleName, epochsmoduletypes.ModuleName, @@ -854,6 +871,7 @@ func NewStrideApp( ibctransfertypes.ModuleName, feegrant.ModuleName, // monitoringptypes.ModuleName, + evmosvestingtypes.ModuleName, icatypes.ModuleName, stakeibcmoduletypes.ModuleName, epochsmoduletypes.ModuleName, diff --git a/app/upgrades.go b/app/upgrades.go index c9fff66b44..33eb810b97 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -11,11 +11,13 @@ import ( crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" + evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" v10 "github.com/Stride-Labs/stride/v13/app/upgrades/v10" v11 "github.com/Stride-Labs/stride/v13/app/upgrades/v11" v12 "github.com/Stride-Labs/stride/v13/app/upgrades/v12" v13 "github.com/Stride-Labs/stride/v13/app/upgrades/v13" + v14 "github.com/Stride-Labs/stride/v13/app/upgrades/v14" v2 "github.com/Stride-Labs/stride/v13/app/upgrades/v2" v3 "github.com/Stride-Labs/stride/v13/app/upgrades/v3" v4 "github.com/Stride-Labs/stride/v13/app/upgrades/v4" @@ -170,6 +172,24 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { app.StakeibcKeeper, ), ) + // v14 upgrade handler + app.UpgradeKeeper.SetUpgradeHandler( + v14.UpgradeName, + v14.CreateUpgradeHandler( + app.mm, + app.configurator, + app.appCodec, + app.AccountKeeper, + app.BankKeeper, + app.ClaimKeeper, + &app.ConsumerKeeper, + app.InterchainqueryKeeper, + app.StakeibcKeeper, + app.StakingKeeper, + app.VestingKeeper, + app.keys[stakeibctypes.StoreKey], + ), + ) upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { @@ -207,6 +227,10 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { storeUpgrades = &storetypes.StoreUpgrades{ Added: []string{icaoracletypes.ModuleName}, } + case "v14": + storeUpgrades = &storetypes.StoreUpgrades{ + Added: []string{evmosvestingtypes.ModuleName}, + } } if storeUpgrades != nil { diff --git a/app/upgrades/v14/README.md b/app/upgrades/v14/README.md new file mode 100644 index 0000000000..c24e0a97e8 --- /dev/null +++ b/app/upgrades/v14/README.md @@ -0,0 +1 @@ +# Upgrade v14 Changelog diff --git a/app/upgrades/v14/allocations.go b/app/upgrades/v14/allocations.go new file mode 100644 index 0000000000..7d051a3a77 --- /dev/null +++ b/app/upgrades/v14/allocations.go @@ -0,0 +1,7269 @@ +package v14 + +var allocations = `identifier,address,weight +comdex,comdex1g6zz4d7j6fvxy24nsqkjrcxqrt7hwp6pfq5zqe,2000 +comdex,comdex15jawklh5jc833p7n0fyf02274wf05nmlc9ny0j,2000 +comdex,comdex15rph43lzyqe2gem93nxxxalxqvqe7gg4kd07pa,2000 +comdex,comdex1t9dgymsxux9266fcmswlj288lh4u4hcqqjlj8c,2000 +comdex,comdex1nxmm88uccpf6dg36kzqfmfkw3552gcd9t20zpn,2000 +comdex,comdex13gu73wcxa084n74fhxdgxfv3z8qe5h6e5mfq3h,2000 +comdex,comdex1lscncehx9uf7usvn39njf9zp63qqxyqlzcrqe8,2000 +comdex,comdex1dc0xs05usqwdgcx9kxq2jlglfkrfwdk2z0gcsc,2001 +comdex,comdex1323uenwvychnv4gplx9895w43tcd66lut9d0kd,2002 +comdex,comdex1el3lkmm7ln4vs8g97khqu6l5mvya3fmd239mnq,2002 +comdex,comdex1k7eh9ngcmwz5rq9cz0c9nwwwaagpfzfmrh0nrm,2006 +comdex,comdex1gd9k7q039ffhkeatknzg9wpgf4swkrkfq5espk,2006 +comdex,comdex1ta9d38getyj2c8my5yd52whqdxgtlhtauctvd3,2008 +comdex,comdex19pllt8dhjwzml7qfxgeg9039cn7kwmu06f780t,2014 +comdex,comdex1tpmrwgmzsxmppjkxfqx3za9sqh7weffxleywah,2014 +comdex,comdex1em4p5epgcjrw9x742lwjgtf8lvwvkc36gqjmgg,2016 +comdex,comdex1kuc4tng8qgvkgv43plqdjq2xt9ch0qd58x2sgt,2016 +comdex,comdex19wn6kfldgl4k7ul6gxthnrgng6jq28d4u922g0,2019 +comdex,comdex1ewrlwrchdhp05x98v7q8x2k83huuvgg8623guk,2022 +comdex,comdex1mfha8y4r8pzxuv6wrtn9023yaan588w0gu8lhv,2031 +comdex,comdex1288k3s57yxhsurhmnn9lxzjcwmj2wwace5pacc,2034 +comdex,comdex1qp47ummal6vlmwa9a6yznwhpdhfdea5r9xapwx,2035 +comdex,comdex179zykcs8tjtqz4y4rvd7emqctd3cmz08tk2ufk,2039 +comdex,comdex1rd5py3f8nxff5d2appg8zqfxhg7fu4zpqee5dj,2040 +comdex,comdex16dgccnrfy8ajfg82g423ppj3nqdrwqeddm5stq,2046 +comdex,comdex1rmxl4fps24pe8s9uv8an3nqpng3ggyf8r6gn3f,2050 +comdex,comdex1kj3t4jeknz7qhhjn9n7rh2gwmtzm8dx4cztplf,2052 +comdex,comdex1tmyxxu34lhphs0v7kjma4plrhx63q9z79k4p6p,2052 +comdex,comdex1ytagpftcttkjt9y5g0e5e4eln03kjaglanwprp,2055 +comdex,comdex1l9uh55v8r3u5ptkam7g9dqcwn6r0yk3jguv0m6,2059 +comdex,comdex1xs3tfpx5esanwc4taz5n30md4633232auykmry,2060 +comdex,comdex1tfyx6ad4nr4f2j3syyualsztxdgdxz8pasuyla,2065 +comdex,comdex1rlsdrt7m2aat7cvjvks00n5srq5khllqcjndl2,2069 +comdex,comdex13x4pynlp86prhcmtns742kgsgu7pjtzjhkyqt5,2074 +comdex,comdex10cexzazvlq4dkvqn4f86r4s98zuv3r4f27rygt,2086 +comdex,comdex1t7vr2a76jcv2vxgd0zj9009dh7vam8eawg00kf,2091 +comdex,comdex18ucesam4gdvuu37a5vhgwjnqzl5dfvd78sml96,2093 +comdex,comdex154p3a40wshwyn7dhfakvu590qy8qp34fsvpdp0,2095 +comdex,comdex1s7p8qqe7ucs23nmnld3p746hsk25aujt6hwfap,2096 +comdex,comdex1hy93akvmprl34526xexakxwefya0s7c4txv4qu,2097 +comdex,comdex1dx5cd72umcwas5rhufdm02pjpgg9zmsrt98q9u,2098 +comdex,comdex1e86u57464w3mxedrzm3chatvcd2z89axncjdc4,2099 +comdex,comdex1c4f37lt3dzrrgy6dccmcu9amnudg2aetcpqr9q,2103 +comdex,comdex1ytem9skzmq7n7tlfcqjw6wqfgd587cn3u76haw,2104 +comdex,comdex1zh4gztddvt8lhcjptl3yntva6yhyv0w0nr8a93,2105 +comdex,comdex1lgu66ly24wz0x95hkhuzny754hfm9pkuh5x5ea,2108 +comdex,comdex1g2qt27z5klyjlrly594afzjc5agyx75u6s9lcd,2109 +comdex,comdex1ha62rx3jy79w6k4dvkygtlp6guc825h8407fkj,2111 +comdex,comdex18jj8eq7xpyqdv9cdxpyxn0ulspmhx424yltarc,2119 +comdex,comdex15zz35mvfz5wslq29ftasflgefdanhumcfnpzyl,2121 +comdex,comdex174gk5wuzr9ksfp63wkqqnkqr30jsvh4wk5c9nf,2125 +comdex,comdex13lzly6934ymemk6k3tzvlu3tl7v7gzq3yky4jt,2130 +comdex,comdex15073885eaa6649xwwug2nxlmcceqwj56n6n9pu,2135 +comdex,comdex17vmycawqtagepc7nxeh2rskaxl4aqr92q7mr2n,2135 +comdex,comdex17yz5g3juzmqkdl9ushhsdndsjd43cp2shkswdw,2144 +comdex,comdex1wdxas3uaj8dy8q9nz9pa96zj92vlp09q6ggkna,2149 +comdex,comdex1y94uk0hdf0sp60amfpyt95pnvx95wtaq4nd4gk,2149 +comdex,comdex1a227yjgpvlqxhtvsx2c90kqt3qu788x2hcwscn,2150 +comdex,comdex1pydcjl95vl2c6rvlny977mcw8f9p8c79p7adnh,2150 +comdex,comdex1dxhx383y79tv67ywgf5g8ez3ed8ttct8enywc8,2154 +comdex,comdex1da5et34plvys524a9a72a9rhvktg5ntnap6adt,2155 +comdex,comdex14fhq664979w87t0mps53w783w3gqes7s4wfdh2,2157 +comdex,comdex1fq3a8xd6ywmh9xg3avxl8ehukf4d6akdjcfhcm,2158 +comdex,comdex1gk6py8fukt8dnaad00atemjqjlhjlwv9y8vce4,2159 +comdex,comdex1ma5kfa4asy23c5eacpm8ytm6vw437mvf48kp3z,2160 +comdex,comdex1u9vefc29kvxs6pyw2ukk34mx9zm0rd5hk6kcla,2164 +comdex,comdex1jj4jksaa5ljyex3cymdlpyq66rpsqlksa2gyua,2170 +comdex,comdex1k3hnuqfhmsk6adnf06f0zwhyvttu9mf6pyumwm,2176 +comdex,comdex1zrxt0m74adk5lh37ys3pvfh5alve45zce9elp3,2189 +comdex,comdex1swxrvqjycece2zg6475rhaz3k4mr3smfemmepx,2195 +comdex,comdex1f04haf8fs3pgagkf2pa5ay5uqrkjstzxz5r27z,2195 +comdex,comdex1s9emke67f8ttpn8jmhlp7j72pqld6my8dd8a4m,2195 +comdex,comdex1zugnekqxxkrp0mdfva6sguzhwf3r99g2uk6700,2195 +comdex,comdex1g4gtaw3s6hhg352563sedrms2vummj5eklc3ue,2199 +comdex,comdex1smrlapzwyv23cvna6s7jkwnenvcvcwnc47zcul,2200 +comdex,comdex1f5tx8ywr0y8ecr4393falc9mmu2tz9sulpaxua,2200 +comdex,comdex1uhwtujscqtzef0w550qptjruq4hm6p7haqp0jh,2204 +comdex,comdex1q8hm2pey4vnx2e58qzcwlvx4xcn9wmpr20nynm,2209 +comdex,comdex1vv2nm8tvpyx88r07hx5x4zyctpkztp6yhcahuh,2210 +comdex,comdex19ukry5k2zh0we8qmnl3ejyvzxmttcmmcuytw8y,2212 +comdex,comdex12udytvg657mccdm5sf02lnl6uljr94nl5wcl5a,2215 +comdex,comdex1tapjtvaas6h7aludtf59zfq5s8u6y9njp8pyqd,2215 +comdex,comdex17uwr4v9y2883d5ql3dr5wzw3uppt2yurkg9ku7,2216 +comdex,comdex1q3qzu2gz2nr9lxgyh7d2gqkreg8jy03tvxcgsv,2223 +comdex,comdex1hmgqhddlnp4eclqr5ha3ah63xug7lax4d6qaa0,2223 +comdex,comdex1m3jd3t552tx0d4xz0t00w9ut5ezjzvd5pctxe7,2231 +comdex,comdex1h2hrprhtp3hz2kfvmgnafa5vlalzs00agpj028,2232 +comdex,comdex19x7n2kx40jvvvws8w4t7gy3emg43sey8yrly89,2235 +comdex,comdex1kqh8fjrpj2cqmunfx7fmz0rxfyx06l3fq97u9r,2235 +comdex,comdex1u8pad9dtjk5v36sgyj862hehqmfyuukytdjxmu,2236 +comdex,comdex1wy4gtr5mt2ejrwpjyy3hg7efl3wlsrf9v6apsy,2251 +comdex,comdex1k5t3069veuj34um8758pz3et73tu906eudu9la,2252 +comdex,comdex1ekhu29dm2qfh8eanjs0l9gqpe9szxs6wyn850f,2258 +comdex,comdex1unezmh9vpyg7ymuq50v0nfd69a3vf6j5dmuaqr,2267 +comdex,comdex1dpazgx8h69p83yj20k7nwsn2xw0gy35kjh3qm8,2268 +comdex,comdex18lnxwzu4dtxlam4sxm44jmhpyalleeyszdzz2u,2276 +comdex,comdex1uwfaat90p9nldpqvyh35z27awtwdv4kwa07ysl,2280 +comdex,comdex15f32m6anpgvprk8akjz4c7qq77cn68j27pjpru,2280 +comdex,comdex1zwmnvveh9469q7j7xrpdp5z2345t755vztp64x,2289 +comdex,comdex1mvxq9hct0wufswa4tu6jk34hakran7cx2uwdgj,2294 +comdex,comdex1v8qzgpnp0ewq0sda5rnk4eayq07eu7a0uw6rw2,2298 +comdex,comdex1je5v47zhfedjpue9juu2jlvfjy56gnlm8uzfdy,2300 +comdex,comdex1f5xmvtj8vnxdumjlrr8axj23k4udtzx43a2stf,2301 +comdex,comdex1m3567wl3jl0dwvm5m3et07hwmg83vvn85hjk8e,2301 +comdex,comdex1j94735wfgws9g0ha5wxk5g7jzcy76utda7kqs7,2301 +comdex,comdex1mydfrd3fj99egej262mp4da06cgvf7dmnp4wlj,2310 +comdex,comdex1dlj7wph8vp3a0lhp8gyecvlxgz50ff4vr3mrhk,2313 +comdex,comdex1jzyayj8fk0csd5trurr9t7p4fygf9zyuuaktz0,2318 +comdex,comdex1chywz2q3e6mqfkw7p96utnmzl55xxnlx9r749h,2323 +comdex,comdex12zf52lux9kqrqqpyawrufl67js4525xcvy2q42,2325 +comdex,comdex1666m438d4u9ahg425jsyj90fkgw72yzsplfz82,2330 +comdex,comdex13jsv0utt6dl4fc7kypkm8hp7k3lc0q599lgt32,2338 +comdex,comdex17qg3pf85kj56z8lye25kpwvjx6cgftq0hq9330,2341 +comdex,comdex1kdkqkyrmum44fesqkzjzhqq6ed8kxms5a8ddpu,2343 +comdex,comdex1khlp85mj5ljv9lgyam4a3l30jml8eadppxde53,2347 +comdex,comdex1jl82qy8645dpmrcxe64wfxtq8rygyxlrffy6sh,2349 +comdex,comdex1phjay9jyx7wty20qpts2t78eqq22dvaq4vkx2d,2350 +comdex,comdex16f53lr2kgkl9zjglphyjjuyxh8nj42szh55zy5,2352 +comdex,comdex1r05pf30c9xtjelpeuun0v7ufrx4vjcakv7u05c,2354 +comdex,comdex1mcwc7ucwxhc2nutxh3576e0xpnpuazudal5jwe,2364 +comdex,comdex1j55hcgt3sm7cj90ry4m3v3gkg226vus5s4dv3m,2368 +comdex,comdex1avlned84atglmk9xuthjx7x603elrhx4sc8rta,2372 +comdex,comdex1ps6f67034fp22nqpvkur5pry039nfjputfv0sg,2392 +comdex,comdex1gr4xqrhmn44a7uu4ddhdulyrngxs0w2n0rl4wh,2393 +comdex,comdex1n0h54c882xqalqeks8vy45ftl2w74naqelu25q,2402 +comdex,comdex1lpkep8yzvtdsqevkulasawuq4p6j4jw3uew23n,2402 +comdex,comdex1qgz2q9tlw3m6e4hkx0h86lxu0qym0mgn8wkxhl,2410 +comdex,comdex1dp8pnper7ka76d5t987mg7fsqsqslh5qhwsuxj,2411 +comdex,comdex1u3wmmc7dcemph37jelwc6hhysl3asaf9748w6k,2424 +comdex,comdex1x4c5u2gmr0l7f7e2trpct6rmpn7d864qkpe77x,2425 +comdex,comdex1vjrx0lks65yefnsz4xk92vugda2z25esr5kxck,2427 +comdex,comdex1r9yk3fqj8744shyk2sgaz48ypp6mt6clhlfpcv,2428 +comdex,comdex1qxvrr7wstdlkynq0dtf945x2e5csewcw30dtva,2430 +comdex,comdex1py5naewceeqf30s8ths3u8le9d6elvfy6zw82n,2430 +comdex,comdex14x48ap47n887z5mewdpqffx7nynv8krzq54pys,2431 +comdex,comdex13v9llzktqpxu37c0t9dnrav4l3h6y7tusvjllz,2431 +comdex,comdex1pxf9fjn2qkneg393857h34q4kq326lz56zqh00,2432 +comdex,comdex10vkkjh7fhhmzgc44cfmj6pwzk5z6ummwcc4358,2432 +comdex,comdex1y2y44hljgp22wvhj89xa9d0et2vnsqs5ma75vv,2433 +comdex,comdex172mqr5gxyeuh6w90mm73ap5mplrdyw5wjdgpsq,2439 +comdex,comdex1585jthx7q0420k4z56e7kmgvx0npyjd6nydnvl,2442 +comdex,comdex17v9u3nnu77ljhwjy6kkwgkrzjkh53n87a2sx77,2443 +comdex,comdex155kwygc6nz5r95nujlx704tasuje4jk86n57nu,2446 +comdex,comdex183c626culs43yj5l5z9wwj3g9v4nx4u68fttvt,2446 +comdex,comdex1hu542mazl9rw5eply2k69d8vsrezygzxpr85pk,2447 +comdex,comdex1r4thrg4c9crc2e2lppx07dhu04x26xdezvlp32,2458 +comdex,comdex1cthuee3vpgatrsd4uhgzffcnhf5qexy3fkkght,2463 +comdex,comdex190z2tsk65nqqknhsgp6hplqntjccj0agx7dq0a,2468 +comdex,comdex1fhwcyxx2lgefnslf0prm53k93qxsef6ursm5f4,2470 +comdex,comdex1djksnn27zh38jg7wm9245uc3echg9u92v252f2,2470 +comdex,comdex1nvn4sfc3r2d69c7v0j9v7ak87xepz9q52ftw82,2471 +comdex,comdex1kc4dmcvvzq9e86rvfp07vug9vh885n2vt9zz0m,2484 +comdex,comdex1d03ppywn369qzajeuqs0dge29rchxteapkg39r,2485 +comdex,comdex1t64u2enf3t7jrq2sw49n2aqngxhpa4qjp6ssxh,2486 +comdex,comdex1dwzxaessw2fpvfzyh4wp7kgmgcfgeqth4jrefj,2499 +comdex,comdex1yjs0a9fuzxlr4hnd7r7q2z03duur2lww7jsp3l,2500 +comdex,comdex1hqr492lj8tduq4lgprtq4ra5wpkpxwffw0s3ua,2500 +comdex,comdex1lxuxlky337wkvt5d60punjyefgsjtl05xla95l,2500 +comdex,comdex1ftgdv75navpvelzr0s7ycxy9v44a2tzlxkj3d5,2500 +comdex,comdex1jle25kyk88cssjt2c6k53t5a2d7jfca6q2cryn,2500 +comdex,comdex1ywzjpcefz6wjuzwk977365vqythttv0znqxhxu,2500 +comdex,comdex1mvl5rj8cj4mgmu78gldr0lpmxc0ewf4jrqm6ly,2500 +comdex,comdex1g3wt9ap64w0kvcqhtd3p56jlqhnaaw7ee97z2u,2500 +comdex,comdex1f74ck7yxhljth50uh4tuc0alvacmc43uh6hr04,2500 +comdex,comdex15kgrzzlpnszd8n7gld8c3rk445n2ztzy7wjhgn,2500 +comdex,comdex1w347x0f95ecpm4mtutknaxx7k83z8mayh7jmta,2500 +comdex,comdex1lcdvgnfxn00pk5tqy2ual4f4z59j8szyc4nz69,2500 +comdex,comdex19mf0kkfhhwk7sejryadpdxh6dg3zawt0l3d5lw,2500 +comdex,comdex1yz3t5mfgga2queewsa70w3j9vt54du0axpp2nx,2500 +comdex,comdex1t52m34acffywthhg5k06746xrm99zp0pn2wm7k,2501 +comdex,comdex1zzd6lqxjdnp4q6nckvnsesk3r96zwvtsnadlah,2501 +comdex,comdex196ypcvpcwy0kgy90px49478pf0kedq8c6xrcxw,2501 +comdex,comdex1xnwuzhdrwvyuqf37gtmcnt5gapr9nr3alzf5jx,2503 +comdex,comdex12qfjzvtjhjrlp949j68equ6krjxp8whc67g4rt,2504 +comdex,comdex1whdqtudurfkkgrgpe5z60g9n2cyf4x0xmype94,2508 +comdex,comdex1var9jj5vg3tzj89qefzudnkzhke2vjgjla6my9,2516 +comdex,comdex16g3l409egd4pfa0fc93ey9vvrexddek7dquwgr,2530 +comdex,comdex1z3gld95f4200t8pujkya7e5mgmypdfwsqfcldr,2531 +comdex,comdex1l6sleysestcsjjs4zff80fvuq92tgwcqp7rszy,2534 +comdex,comdex1w54selz5rcvzz76hjpdxt2fn9qkja8fznhq760,2536 +comdex,comdex1nj3cdral67qrxq8l8m5eq5fmx84l5mmjcn8mgq,2541 +comdex,comdex17c6syh2twxa3tqwlrg945kj7exvz825xp5ndjg,2541 +comdex,comdex1x00q68w364h7eza3grus94wvlkl0n8j72x9due,2541 +comdex,comdex19r645ycpjw9jzat8jaz8jehw90q7lr8wlt4frg,2549 +comdex,comdex1s43g8xes662vgs43gmca9za3qrfv5ztr8gw7hr,2550 +comdex,comdex14wud2eqz2efg5khnkg8xunnj3fyc6k9ak9rdtg,2553 +comdex,comdex16gp3yf6764v4gsc2re3ugyrfpxwwv7nqazvxcy,2556 +comdex,comdex1fkcd8dtx7yemjdpxf2e6tr2y0z7nmzaqmj7d2a,2558 +comdex,comdex1thvncfatxukryyceuqxh5fzvxa57sj7qf8yseh,2561 +comdex,comdex14khnukca3u5kfcvt22ah66kxs7c3n98gge9xs2,2561 +comdex,comdex1shzdv2ke6dhud0y6n0vf69ss8asxxptwamng5d,2561 +comdex,comdex1j87w0atzwlelkffr7kcvvdk4fzarku6xj7yqre,2565 +comdex,comdex1ms8y52w8wa0e5wsguu9c4f0dh9dgsgskgnls3x,2590 +comdex,comdex16l5w8y5ch6jykxy8k2q6c90jt8pcn06g2w4l7v,2590 +comdex,comdex10rdut36lnhsrudd3t4zqqgpvrmxam4lewhpzdd,2595 +comdex,comdex1sst5qml7555klggaykm5edjs96k6ec63tgfn88,2597 +comdex,comdex1v3lqg7yypys4la7hmqjuz6p4uuhyhz5jxdvpj2,2600 +comdex,comdex1wwhxrsnpf0q2wdv35zuh5yk734fq9ty6qz2waf,2601 +comdex,comdex1n4a7szqm4gu0xegntwy245fjq8tlfh4vjj8stu,2601 +comdex,comdex12dnv539p9umh6ze2jpn8n57frlsads3dat7smc,2602 +comdex,comdex1m8du4mehzfl0y8ps72a6fzazjgg70af0c77vpj,2602 +comdex,comdex1nnkmk07amdk66s8nsw4jt62r6feh939wwd0pp2,2603 +comdex,comdex1tackwayj6exxdexpj2qpjeenmdwcyrcyt0la05,2606 +comdex,comdex17c0u77yaqjtgkz2gn26gf3n6p3mdmyne3ntf9u,2610 +comdex,comdex1a24ne7jwrfgmedaavrg4zw0g0k94n4anrr0utj,2611 +comdex,comdex1m2w7xc037z5ycz36zkxwnmh0p6mjzn6x0dke7k,2626 +comdex,comdex1lf5gfyy4qtw66t89djez8rez2d2fhs4cagxump,2627 +comdex,comdex1j7u72t4jfwxt5z04uwvf3s68zmaaxqxcpwqcmv,2635 +comdex,comdex1d6ytk5nmc64r6p3mjfdqg9g5rlm5ca3mayl8am,2635 +comdex,comdex1kdprg7acyq4t3vzcjdj86m0m2ttyrkrjk0q7kr,2643 +comdex,comdex1lzww8k59rzgkq8dqpk3q6etd42m3qc2ww6jqkz,2644 +comdex,comdex1v3fgacyt5f8lmguvrvtyjqqnpjmw2ncj7qv0tt,2645 +comdex,comdex1vasvdjw7fuh7pxeqkfxxqge885pzpzsphl7n0w,2648 +comdex,comdex1pe0ms48pr4lle5zy6zp7vn9dp0y9zykkruhc49,2656 +comdex,comdex1dpxsw03kvdndml7ft9t5sfqfcr8jw2w6jmca2k,2658 +comdex,comdex18t7qytg9fdgklzac9lm4ym0cjxhjcxsdvalxdj,2659 +comdex,comdex1aszpxp86gq9qnw8yyyxfkcfcau0870u3d0yu7c,2662 +comdex,comdex193u86cu7zcz0gu795pv6esvda7m5gqvvnq7d5n,2670 +comdex,comdex1m7fp3yd2r5h2u4uu02m6nstceranss8vartter,2673 +comdex,comdex1vwrruj48vk8q49a7g8z08284wlvm9s6eswfvkh,2673 +comdex,comdex1mxvzquwgqmeh7yv82mjrg2qfu7yk0felkdfryp,2674 +comdex,comdex1vrrj4kw52kchqzgzpn5zw46dha2cdp6h46qu0e,2689 +comdex,comdex17gn2gfg44j0k9qzrnepzyrv92yehjdsqql475e,2698 +comdex,comdex10z5a8ftsce2348x3cu5eh5a8dkw2xjk3f4jdt3,2700 +comdex,comdex17szl2u0fy682ma5u9y4wk7np49txh8mzj429jt,2700 +comdex,comdex16jetw27xre2f9g8p96ag07r98246rqwpzap0wx,2715 +comdex,comdex18xhs7tmx833m36y7gvq9y4pqtymuu9xa0xytgz,2716 +comdex,comdex1j5l0tg7nxjj84hnkyyywph2avulyzyshgw766n,2721 +comdex,comdex10lgdszxem58cy6nvh4nkffd4t3f8vaa9hv5q5n,2747 +comdex,comdex1gas0qe2ftjqvqhtxs7tk0nfh65slx4tzhyzfj2,2750 +comdex,comdex1d77vxhranpehf8lyau74nq8auxvs06t3wlyuss,2750 +comdex,comdex1j0psv87p6uet72d76cwu0cz9swz3u23ut3mln0,2766 +comdex,comdex19nmt2j957apgy8r3nc5npjq2ex342r6urz6rwx,2778 +comdex,comdex1w8y8295jkc0yef7a5tckl2ezl0avf0hdtf0zkl,2785 +comdex,comdex189qkjmshv3gglxux9wrhzqhzgnc366mc99z3v0,2788 +comdex,comdex1gvw9rurd6g8j7hxyu42gwrkqrm4l5eryl4h6s5,2792 +comdex,comdex1perg486qpgfpky57y73xamclf3s6na6eklx78g,2794 +comdex,comdex1s9mjmna9kulzajve3gr6lke6y9v66frdnsgkex,2795 +comdex,comdex10ff3jjpf7va8ajrnjkvvrp6l4udq79qsurn5lw,2799 +comdex,comdex1z9n96mrsh6c8s9q2gz3gg723ag6gwjn8xwz9mx,2800 +comdex,comdex1paq5h6cp2fcwv2969xs6vr6ljtyaj3fvgzcyh4,2801 +comdex,comdex1gmda78emmwglv6fdd2h92f88dqykknruws9cvl,2804 +comdex,comdex1a8gx9m553deeajj8jcdlp37tgwqyy2c0tfl77z,2805 +comdex,comdex19pvdg6ut7n5kqzmsrxysln2cfedenw85v26l2m,2811 +comdex,comdex1gel9eua95kauk7qjwr8dgn602slnkgteq9zglp,2817 +comdex,comdex187reejg4et24jpggqt55vnc47l926w0p46htdu,2817 +comdex,comdex1gr0lyhwkz4lq38rmmnl374eyd0n03zlhne9ft5,2819 +comdex,comdex16x32g5cpasq3t42kun0meutgucgaxwl6r339tp,2820 +comdex,comdex1p33k3ctdvvjv504sxnpc00fks0fngm8mjfk4t5,2830 +comdex,comdex1w4tv7u3kzusl0ze5e5zacn6xnadrgf2mxpdm2n,2844 +comdex,comdex1xpyqxhyg742e4p9323676mqqzwe730e9el5ym0,2846 +comdex,comdex1ljn80ky79cq3sv8gv80prmne3esyuxgup0zr69,2852 +comdex,comdex12dlmp6zrem45rwccrlnd67xdcre8nx3nf8mufa,2853 +comdex,comdex1fdau7p0ueyxzlvs6wxam7vxc7d27ncz96lfkm5,2855 +comdex,comdex10lcueka7tzjfcx0xcenq5jq8345vspcrkl5tvk,2856 +comdex,comdex19t5vjq8jlp5uy3jp4eu2nwms6u5yv7gn3maw7n,2857 +comdex,comdex1d4t34uad005mutw8c5klq5ktg9vxd8dma84fye,2863 +comdex,comdex12dux7zlnj2lwws0qedxetxeude9tyqrpnucd9f,2871 +comdex,comdex1ddmmtady24ncs5z8k5tuqyvpcfvxjc6ushq5h6,2876 +comdex,comdex1ky6yvh3e0ufmukl4zz9eventpegt2kr9s7ngfs,2888 +comdex,comdex1zl3yjrm5rxzk4kzzh22argvas7mmuruk4jezqq,2893 +comdex,comdex1ct5jdjxwcs2whefy4c4dpuc0t3vuv7ks8h4tl2,2895 +comdex,comdex1j0yd66z8cestmequhfc06853a33du7p9zxtq8v,2900 +comdex,comdex1t83l3egnkhs6cm4d9ekgcvcpejmzd3luxz7und,2910 +comdex,comdex1mw0yjsltsmwysds3stluzftad2dmx8kht97l7h,2913 +comdex,comdex1gz8vgplztfvewdf2kj6m3m4g0mulqlq2kcz8vq,2914 +comdex,comdex1cujhq72xqa5t5pvz3zjn0rfqmdl2sl0hzmephx,2914 +comdex,comdex189n8jcs42t56rzs7cur9wtz9pfz3sxachmt6ej,2916 +comdex,comdex13367q5qtp2aue7jqyx8zck3agl3laeg3wrtgmy,2917 +comdex,comdex15fgf9gcpurnrmrlh322mg6rvsy0n6f5mlaf5wa,2918 +comdex,comdex1pumtu9qmxw5d3wfvwfxyfj2syu3e6sw7tczhql,2921 +comdex,comdex1k9ur3v6dryftc8mctrddtxud6easfrdq7dv3w6,2921 +comdex,comdex16ts29nj3qr9sf3k9wl8gwmd76evzdlhmu9esry,2928 +comdex,comdex144w0jcruskyhtgx4ezavd7pqlc46jg4vf54ze9,2933 +comdex,comdex1zv8qvgwxs5r4cfqqhtw2wjv53u4vccfevr6p5j,2940 +comdex,comdex1u3yq3sgmnq36p4c8jj73fmjxgeej69g7u8cqma,2947 +comdex,comdex1hmyz62l08pzy8zghqsasjqsrnqnlpehflehjh9,2959 +comdex,comdex1uzvprlh5t4ne6zhlnz8q2kkdsh7sq8xgr9k58x,2960 +comdex,comdex1nzzgtu8necce555kwgsjfw9gz0cmw00tkgvpc2,2969 +comdex,comdex1uaxp2ex423wrz80s39enndqqxyzltvgslq0wmg,2973 +comdex,comdex1chzzqaz4j9as6sdsuzr0r7pxkvlsugeamrrs46,2988 +comdex,comdex18xxj9y8l42ad8vxpu0pq3gpwq8nj98zpm28eex,2991 +comdex,comdex1xgrzpepx2hcj27fjpy6advqczvr3gu7v0jzz72,2999 +comdex,comdex14q809c4fhnvqktpeef4nz8lk7hgsqxwj9g95qn,3000 +comdex,comdex19txd8v8jydx50q8zrxwy02c8prl8smfasdhg84,3000 +comdex,comdex1qzu34xw9hh5jndqsex73gydjnr5ck6gjdewthn,3000 +comdex,comdex176edl229hrqm4nfa98lfevu5af3rkl4mr0zgae,3000 +comdex,comdex1uyllp5t3jeexq20rcrsuta0w297alympru00df,3000 +comdex,comdex12dy3yrgyudxe2x9tkxhpguxkjtuts2er8qz74x,3000 +comdex,comdex19e3lcuv452a99pthwapm56uqgj4jwc878d2wux,3000 +comdex,comdex1mhfncg4dhg8phw38ghetv8m5mc36lhdrk4ga9l,3000 +comdex,comdex129rw3gnlk6x9annfw93jk86p55tn7wlek8pdcz,3000 +comdex,comdex1rd4h5qxdgfye3dvtj58wdmlau06un0w3ey3fpq,3000 +comdex,comdex1qswgfxcjyfyfs5cydc28na4dpc2n5u5re575xy,3000 +comdex,comdex1w0xd6nz03f8xwjfsskzc8tcenvca6he44tskx3,3000 +comdex,comdex1xzfxvm6g36urvjs3xdaht9flz4gch0zh7nwek4,3000 +comdex,comdex1ra3q0najfjg42k2a6l6huprycq0dfl3ym60j8c,3000 +comdex,comdex1h9nll0d3vvf9dcjur3463cfpq6hgykdhvehvxc,3000 +comdex,comdex1t8v354fhc940wuzw8s639aqcx3x7mla0lc9g9x,3000 +comdex,comdex1kwhnxtf88e6jq67wfghkjjhh3vxte4dd9dxjke,3000 +comdex,comdex1r4eqj0h2nned5hzt4d9wg00qk47cwu2r4vwm2d,3000 +comdex,comdex16q2pgfxmesepqe2akyz4jqepludptknq9tdfa4,3000 +comdex,comdex1z950kts5x38ncc7ad687nd7ll40un66f0pr4fe,3001 +comdex,comdex14k45wklq4wzej0vjljdjkaz94uflkgd0xpfefn,3001 +comdex,comdex1m7wr3acaa4ren3df4h8m5ljdwj2cf733mdzwxc,3003 +comdex,comdex153q8f6xk2tjl48kvm36pr3fqrsyamus8vfdyxa,3005 +comdex,comdex1lww08rv3wlt6x2v9nesc2c7dtlvp4f5nnleyf3,3033 +comdex,comdex15hlg6zu2ll6fut5fz0hm9d9p0y574ysexlf974,3036 +comdex,comdex1sq8la7ap58pqe6yshjtp6ja4e4fed8va6tu9u5,3045 +comdex,comdex1843r0v49jcday5ak62n8wv47f5avmxgq793au5,3052 +comdex,comdex1k58zka6d93tzgr9wdp3t2hzaex32dum5a5ukwy,3062 +comdex,comdex1zrwpux76j7r3ts2r95gtqrf2j22w9v75n2zdhg,3104 +comdex,comdex1acxtmm483w533rvffy9hpug274spd6k280tymr,3106 +comdex,comdex10gspc953t0smgs4as886varkatcmjrgsjxdrx2,3113 +comdex,comdex1jg9wr5u9cm04g0sswegskg3tawgylem6l8ukmp,3118 +comdex,comdex10htxrr2972urvzjxxxrar43k4jeac4chlzjl0r,3121 +comdex,comdex19jyn93h8f2pafve0wxtpyktpdpjgrxvknw5n4n,3123 +comdex,comdex1jds98a8qcvhvnd8anguj0xnqgyawzh663ups8s,3123 +comdex,comdex18hhw82dsrv4xy0r9xh3ld2z4hkn3lnakrtj9gq,3126 +comdex,comdex1krldx44wl37vshul5q9q56lmgazxms62eap6jg,3127 +comdex,comdex1z8negf38qvt08gcew7zd02tpwqd302eev5cqv0,3127 +comdex,comdex1ymzks3udfcn5rg8n5wf9n47yw8jrz80fxhfdsk,3143 +comdex,comdex1mzxzxkzajancc63gtwt9x9zw2qfv9k9asfv005,3159 +comdex,comdex1ulkqjwszr7weklrkvhr7fdxra538m9y53v6rqa,3187 +comdex,comdex1h8n4qh8u66psn6jf55vtq232rhjkr6wx2jk40n,3192 +comdex,comdex1hjsc3m9h2a07k2l8kyyf5g54tt0t7nwhg35yy3,3208 +comdex,comdex1d742ngr0kqj649fcjw6sh2xhd94sk92neewj8k,3210 +comdex,comdex1pljv503jdwfhexhw0kpryzmq87s9js83xmkdpj,3246 +comdex,comdex10drz4849x4me7v6gpmrdlhj9jh5kwpux3h8asy,3253 +comdex,comdex1m9tvsz0yrdlry5q8fpt9saxe0nfuzs8qvmuq6y,3276 +comdex,comdex1akwsfvlmx80wt78kplxqmlzsp9uswqgwpgh4ux,3280 +comdex,comdex19j0kx8g09nah8dkrw9f9svt4f0ntgyz94yssj0,3283 +comdex,comdex1rpzsesr5cjgwwyj2t3edez45e0x37qxc2uymw6,3300 +comdex,comdex1ss4krazunlfnc8munks4uvsa5c42vlwrdlqux8,3301 +comdex,comdex1gep50gr4jpg7qju2epckc03up0t9mjmldjeayh,3313 +comdex,comdex1vzj2ke64ms039rgtmq5alz6v4vpqjjy8hnykdy,3333 +comdex,comdex1svd895fup5hqxlgttjrx428dswhlayh3tz96vn,3350 +comdex,comdex1laqefwck8mkxt44jfn7fnpynfv9f2utyfmkjwn,3359 +comdex,comdex1746r7r3ngpj3y83z7ua8q62xr2u4s9m3xh5kmt,3363 +comdex,comdex1kg0vs4s4xmtaa5f7crksrvtze4ltthspnyq99f,3377 +comdex,comdex1dqd6ahmaypj3nak37nt2sekvlrjv3vsjurhxwj,3399 +comdex,comdex1gnz30c42clfyh975y8ummegc7sdcnp8c7r8szu,3408 +comdex,comdex1yt8jd7695ynmrpsfjuccl7vsvxhdj6yhllu6s8,3425 +comdex,comdex1skwgzgtt4t8ncpnflsgdh702wcu2hq40khvkdd,3434 +comdex,comdex1h62d2ymq7ym4snzxk84uel5t4dntpcl6g0npml,3445 +comdex,comdex1z0wecufhql8smnxdar2jnapfjc8qdt3403t7gj,3449 +comdex,comdex14ghs6hs8xkl9racufmqnvmg4l0n7unhphz3lju,3450 +comdex,comdex1ga8nv7ng4955t2y4anxwrhp7rkmj42l6t2ylcx,3454 +comdex,comdex1k66ngltrgr9eahmf9vc6rxj2jtsc7fpz78sljk,3457 +comdex,comdex1nz4lk9t3y2xup9gvtsmgf7vjascjk0zm9uat8l,3462 +comdex,comdex1exzzeqlyfv0hzg2hv6ssvlzgnuxf8gzg2lzu38,3470 +comdex,comdex1nstyqedtek80s2arjrjpsmjacu9vgc6pytfe8j,3481 +comdex,comdex14wnuhpgkzgnh7z908dsukskn7yujmr8l2ccg2y,3485 +comdex,comdex1259vgrqujq4cyad4etcuh5jywf5tdgra2h07n0,3485 +comdex,comdex13gj75f9twkc0v3tx7vlfd429n3ps8w0py6czsd,3500 +comdex,comdex1k6z2mg4cnm9yul0qxtvhan3x3usw9ruh386399,3508 +comdex,comdex14p3263d5sppcxkq90vp5aq5mta3njh6x0pp6jr,3514 +comdex,comdex1eth25yr535x29p32wllelj09u5kaqw8dqujvgc,3520 +comdex,comdex1y09sm469nhml2adgsrtwudj5j838aetc4r9w55,3537 +comdex,comdex180v0kukrnjnpmw2y9ey85wrm2ckju88qt8qqf3,3548 +comdex,comdex1flh26y7f2vsam4a6snwgrqaxkhe0g2ylp83l76,3548 +comdex,comdex1l0r6vucw0yfsdqw2pv6hzwky2hzhwrdd257n6j,3598 +comdex,comdex1dn8exzp38qczuln96kne0yq49gejgvxzjh2443,3600 +comdex,comdex1qqm6nam6hse8qpn8y8sy5jwpnmkcpdpmqjakmx,3620 +comdex,comdex1lvlpgwua8wsmntvragug80ldnrzh5q0v4f40aw,3624 +comdex,comdex18qnmwu5ykwulswg3ldc0ddu5rksmpdwn82leg9,3628 +comdex,comdex12aphhxhxwa083z89sjlg7wsdjwk7rv8ze7uzsd,3629 +comdex,comdex160gfcu9x287p3nyrkz88s0pq7vjf5klzumh9z3,3638 +comdex,comdex1qmpds0qvrkpj7jzvw5m42k3ptnx2lrsyr5rak4,3649 +comdex,comdex1tnz2w5x87vk42ht9y2wzr6e6jdyccxe80rq9kc,3650 +comdex,comdex1y0t5g650jcn49v66ta4ueumkd6qwxp4qgwjgul,3678 +comdex,comdex195ngs6h55u2pakjrxuk0nmcfdlm968vn82mck2,3705 +comdex,comdex184wap298zlfsq4adqn2t3tzgdzmqyxqlhdd6rp,3710 +comdex,comdex1wg8m5kkhrrszyvgqq2d5t9c4fd0cqqhyuz3dzv,3720 +comdex,comdex1jxpztalf3skjftyrlf3tpd3c94g2nqkauh027c,3728 +comdex,comdex1e56ar772xp6a20suvhfyc29mqp59e0htn63gns,3737 +comdex,comdex1a4u9cnj6hzkkkq89dag6mguc3lhzkdu4dswznn,3740 +comdex,comdex1usyr5nwau0p2zrxpzh65xklanrh2dd8jtacc60,3745 +comdex,comdex1racq9362dw7urvfung32xrtsujdygj0augt0vq,3755 +comdex,comdex1s99rafg9llny8phs8zqp976xsl0qvr95hhf6t9,3755 +comdex,comdex1qztzc3pze6d3w5cpat4ysqhv46gxqf0hwsfjys,3758 +comdex,comdex1jpej72zv2q7wkq4pkpl64trx4u2rhh3shesm8e,3761 +comdex,comdex1rjz58awdkqd562hsr78uwtks4lwxweapywpjqd,3763 +comdex,comdex1a9h9wjwpaxhuu9exfjfrky6rwzhtungdy9w4hh,3790 +comdex,comdex1dhu8grdkd6sw9rw848kkfuf7e0x7a47esqy8jl,3799 +comdex,comdex1fhhl6rh3x7j68ldcgpmxwdz2um4r3ede2pg5s7,3850 +comdex,comdex1xxzp5xxj2mdu0ssn52p6xrp0895djsrekpss2t,3850 +comdex,comdex1e6zdjcj3wry34hns4pw9hvse7xcv9mmtp0sakz,3857 +comdex,comdex18u6lt588ts54xu54twkhp7x78mpk0v9zj77058,3890 +comdex,comdex1k247qk4u9keev25mugmxa8rt79xh20vtt277wy,3893 +comdex,comdex12zq7crlxsd5zak5rjp0k5mlycjy5netmfycua5,3900 +comdex,comdex1jcnj07dahdz6s07pspw43ksdgvqfd2437gvs4s,3900 +comdex,comdex1d8mq46wt2yxsgwrmh6hhfgycl0537w8gv59yee,3900 +comdex,comdex1ju6eccjf44gkfle3zxdut83lhwnqs7xtwwgfqf,3903 +comdex,comdex14l60sy00k3m3c6fcpanf5hlkk9mck4k7lqjlhn,3906 +comdex,comdex1r2q6xwa6gp0yl8vjnhgzv99cz4dymuykau3jnf,3940 +comdex,comdex108ss9dsdya700yjzvvz9ad5zaf4c9tpa0j4ruz,3965 +comdex,comdex1n2944shcnh9ee4ggwndmfc4kh3g4t323na0p3t,3984 +comdex,comdex13pmsnpk95h4yrhpv35jmzjdwgd3k0lvkkkyh6g,3988 +comdex,comdex1j0wf9z3582zvujnl6udmm7q63j6yjtn3mkf0g9,3989 +comdex,comdex1qg04faedykl4da9p66wk7937zkauv766lwz6sm,3989 +comdex,comdex1ch98t4ul80s0vjedddczd3jsurvm9xtvfufn48,3996 +comdex,comdex1vpwnq5sfxwgl94tmxvshjvwmgcnl3ykujghrlv,4000 +comdex,comdex1gg2a6n0whtu589294grn9cs2lf4gjp0zr8tm28,4000 +comdex,comdex10u3dkelryhl586f007h2ufkdf8pe5z8cazgakr,4002 +comdex,comdex14eew7n0wn6g2q58dex298l89s3suj4g9aref2h,4010 +comdex,comdex1vzt2vekuwfc62vwvan2vw6wlgpv7xkju8q2rn6,4018 +comdex,comdex12r2pvsljh76m5y65shnwqr7vyhxe7gr6ytsp3r,4020 +comdex,comdex1nvrz75nvlvv9redllux7dc9xeuvp6nhnp3pgsn,4026 +comdex,comdex14rhqu2a3ye326wz4dstyyufghq7uxslyje9eag,4045 +comdex,comdex1h4qf7fw3u7h0e5kylcmn5ywxz3cpmhldq6zxcm,4052 +comdex,comdex1hls4rdk5c9c8ff2cdgrjnu3x4dg0v75n74lgv9,4070 +comdex,comdex1se02n5r4uv8fxzlp2edy9y9jpk6dmd3r4n840x,4074 +comdex,comdex1jthu90g8ltzgs2rxfdfv98cc53wuhcklpzqqvy,4084 +comdex,comdex1449e6qd0cur0rzghxx44xn30v036tkq00tsejg,4089 +comdex,comdex1sny3f3mqpkze0ae6shtm2v0mg3tjzwjpuj2avq,4089 +comdex,comdex12ctg3ztj92qtea7na5nx4cgw7qvgm3l4hc37nz,4089 +comdex,comdex10qx02y62v9ynwe9yz4qxvdx2sq7wm8gwzfjm5g,4089 +comdex,comdex1pa9rqy8e2wct65v0ku2pzf9egpdynl3cacgpyy,4089 +comdex,comdex1ckxphvpgsg5lf86e028dqmgxamn0m8lvrwaj3a,4089 +comdex,comdex15yvgvylrg2qaww80fu8plj767hnyqgkth9p0dg,4089 +comdex,comdex1n704wlmgd7fsc3ldgpfnm8djchcpsnqqc6ytw2,4091 +comdex,comdex14dqvnrmwthl8cewf6rtv7csrx9ucuwpkxqla84,4095 +comdex,comdex1x7umr0f329x8wlaxeptp30shgzs4u3rf2jykmp,4102 +comdex,comdex1xwa64ceenxzcc5sqzsn36g7ulqjpxcru6su0ph,4133 +comdex,comdex1w8f79untsjwrdlzl7tfy046gh2suz96zednn0r,4141 +comdex,comdex1lmzeytaslf4urxf2d5pr2agjlhamhqhskamjz3,4143 +comdex,comdex16geszkmjsjquz26vnmsx4twcr3semfp8c6l220,4180 +comdex,comdex1r4mmcxz4hp5g9pkz66fpszamzvt4d0hd0rms5g,4210 +comdex,comdex10j4ycg02f3z04gp8qynwx3pvr3sje48n9clpx2,4234 +comdex,comdex1rwmlk8aq2czh64ueqh0dyc0zmp52hc7cr8n3dt,4238 +comdex,comdex10wq46f8du234aqtlucv7h9jtrfuxmcnttlyvqd,4308 +comdex,comdex1hqhqn4q058fndsw7nnd4kll08uex08lr84nnup,4332 +comdex,comdex1prc9fsd5n509fx3z7ngnsuzx7ppw3zxt0uusmg,4338 +comdex,comdex1j06f2hxezhpafsdfmt37ghnf6lvz7p0qf4pdgh,4339 +comdex,comdex1czr90qmtskavyq334t2cwduwlzuw5m4zxddmmr,4347 +comdex,comdex1un5jap5dsfwg3ahmw5s7fhgycz4cvkx3lrze8u,4348 +comdex,comdex1rgzxkdl4fj5r2hf9adua94w0tnrfs5kmsd8p0h,4370 +comdex,comdex1prj6t6tap75dg9c08ap30nt60lr2estnvd9z0t,4402 +comdex,comdex1l8xwq8k3an7py7cfg5nvn7dkxsa2z39g5rtqhs,4405 +comdex,comdex10v6yt0yq5cq5kq2u5dn0gcaypekqe6m5chjms8,4412 +comdex,comdex1jfrs6r5q9shj0w27ydm3gn86pa44fh9acfrzxu,4435 +comdex,comdex1khh6f3cvqfgyp4y2zul57fjgq75jlfwmclpl6m,4438 +comdex,comdex1pkcv0s35yx9u0e4jr7tkqp0edrv7ghuq4s9tyj,4441 +comdex,comdex1gg2fy45qtfm5gd4tahlryvkpm0gjktr3vu9g7t,4497 +comdex,comdex166hnu9h3cta8j0099acftqq4a3wc46q2tmxhkg,4500 +comdex,comdex182e27e3f3vsffdq0y5v4hjs2f5ekcqrsjmqt7l,4503 +comdex,comdex1wupm8er407z5f8rwwfr0knc7v79a35pv0nqmrx,4526 +comdex,comdex1c362wx6uzfuncgm4t0rex675pzxq7nmpkxqyhu,4546 +comdex,comdex1s9t9jkqvwcwh66c4nya5vxnsntew3wrc6s08rc,4560 +comdex,comdex1qxh8dfj72vymqnqamatdn5e8zmun5ggxjl0mjt,4585 +comdex,comdex1vr3p4yyk0vkjekrvhmjvnj4g5ypl8exa0xf4r7,4608 +comdex,comdex1l5p6rpnzpkrg3578zjh0u7ew7h7quh3vxj28kz,4621 +comdex,comdex1zrqe73zvnkxxfh2t2h6ff6zsdfm7dye6ufzl8m,4636 +comdex,comdex1d4p0g7a9l53yrppp8vme460kcm32x6282f4dx4,4663 +comdex,comdex1qr7eckxg5zgsp40sdwr9qj2arfx5ftgpml9he2,4672 +comdex,comdex1n9gugf0w3kgkrv43zrqh630j3c0n224fykhh5c,4674 +comdex,comdex15kt5vf67ywfrzspywqs5n9q9kzty0rhjd3qt5y,4689 +comdex,comdex103nkz0hgnpwmjveafmr57xwmvlluuj4s5qzds2,4701 +comdex,comdex1l5fl0x0mz0euezyyww846ufs4znlw9cy99kuwd,4738 +comdex,comdex189p3cl27p7c3zkyenqz9quvqkkvp92pe8lvsg6,4774 +comdex,comdex17922s020pf3gxf4zfvcj22dcq7e5mjvt7mmk4e,4774 +comdex,comdex1d8pwj29kze0m35grea4z9qkdgl9e54enye8jht,4780 +comdex,comdex1d5wn9jrzjnzd6tc62qgrs7f452wxymhlsy36st,4800 +comdex,comdex1rc9kyu89k4qpfhj4mhaa66n5n03pkd5mm8r844,4800 +comdex,comdex1qr20et89w8z85fjkelakvfx0d3t0nvqkr8d84j,4801 +comdex,comdex19t2gyxz9e0h3d8w74hrdzp0kt9ce2usrpjydfj,4815 +comdex,comdex1sqe0za4t7gr7whuhlxesjzx0eaf82wk9w72r2r,4849 +comdex,comdex1gjtvly9lel6zskvwtvlg5vhwpu9c9wawuts4mz,4862 +comdex,comdex16dxqfv5s4p98gyn6v4458qpgl2ws96jsj3jpa4,4872 +comdex,comdex1w4qwsg574y66x9vxdpzsy474lums0kxqq2p4ms,4876 +comdex,comdex17hnaj6latzhm6k9frzypajamf7ngmrpl4fn40a,4876 +comdex,comdex1xspr9c0e032zr8j4er79fw3vm85exsg2tgylg2,4895 +comdex,comdex12z3nj9uqumhc5n8r6n6n852zhxrf9pfadpvz6x,4930 +comdex,comdex1atd0gmz3ctwqp9zrhf7grkthcnnhnud2yl20z9,4953 +comdex,comdex1czs368jkxgwflufajtvr0lhg6660aepl3j2x7j,4962 +comdex,comdex105lcm7vqvl60ncwy3jf337qdxjl4kjfr04mr30,4967 +comdex,comdex1euz0g6x9gnuw06eslt29ckpx3sqpvl75ahw95h,4990 +comdex,comdex12lcarwzevus0499vdpjhtglngyn8xdh6m8wqw9,4996 +comdex,comdex1yczeqld3mx9cz8h9vy4gk6te3ha5s4st2pypaz,4998 +comdex,comdex1stqkafudwykj2vvy6nx7vnev27pd0a836mels8,4999 +comdex,comdex1wgec85sy32jgjwmgfrhzna492nqd9qfk07v0v3,5000 +comdex,comdex1whw2hxzlenk437kl7phc0xunk8w9v5vwr8v49y,5000 +comdex,comdex18hrnuttvs8efncze46g7q2ujy4p4yude5xvpn7,5000 +comdex,comdex18g2nswmcsyu46qva3y648q6d9m3wwzg7q37n49,5000 +comdex,comdex1yfjnnvlsut9cn0n3alzjftxlcv386395ad05vm,5000 +comdex,comdex1evxjumpjjyxapyd2kfw8gu4ts0xhwrfnskvxt2,5000 +comdex,comdex109yg6yhcyy5mfyteqmcn3pjca9nu9s39fp2m35,5000 +comdex,comdex13nmmyxa5gtdahnpzd8dapyktmew5e8r09y53qx,5000 +comdex,comdex15k6jy9xf9gt39qhglykw9sxjmca987q8m2v7w2,5000 +comdex,comdex1wd26spzpm098dxu6e3hcrelzsdyt49mnfsuuhp,5001 +comdex,comdex10905rstxf5tzj0w6gguaa76ma7s32v48c8rlzj,5009 +comdex,comdex1pqymp2tg6ecra5hgufyn5pyfja4gd0ae3r2swa,5015 +comdex,comdex1knw3wkm76tnf4lac0xcetx8htwfge89w4p6fnp,5020 +comdex,comdex160c4hf65fcxewuf7efhum8p78e2y9wz3q9s0t6,5020 +comdex,comdex15avn2fq0293lmjv6rjkjltj7jfzkqf7h0c89fl,5021 +comdex,comdex1r9mekllcz0fqdt0w2lstckw9exxtvzpqs8fu6j,5045 +comdex,comdex1lwnxzal9gj9zev9shnzrmad84kpq228unc59f2,5053 +comdex,comdex1cn2he9lxsylfpceexqw284py0y29maggcl8jjn,5054 +comdex,comdex13h59ek02vmpra6zlcp47068pgxujaxjef39nt8,5055 +comdex,comdex1ryyn27tqlkwavgkkv96y38e3eghzds6hp8dz47,5073 +comdex,comdex1m4z6c9f0ejr7nd7cpusvpua3yckyueqkurhf6v,5095 +comdex,comdex1kl69y5accvwmc724th28479x5r06tzy0ph06tf,5100 +comdex,comdex19gk75r4pd0e6hzz60nqgg3nps5xh980ntpgkj4,5106 +comdex,comdex1em0xt9rhjr4jjannu5t5g5rxjsvgy3tsvmut8n,5114 +comdex,comdex1rnnuk7rmjwj3ep97s5d0w5ek5che53ek8qnnm3,5145 +comdex,comdex19pys8f5krknrxa35dk25rw7fyu66suv5nr6kul,5170 +comdex,comdex1eymapsam3l5ymas76avez0adlvw3u293hl7slz,5194 +comdex,comdex1304vt66qjuqqwfqzh5y4tdhfy083w4rmfqzgzy,5213 +comdex,comdex1yxt425jn7rxgzagxlhv9l2yajkv6n5htl98pzg,5221 +comdex,comdex1s9vreeramemfttn29sp85v75syetvhw9r8chzh,5284 +comdex,comdex1tht0mf64wy6lq5axggh6j73uzga4mw5dxntheq,5285 +comdex,comdex17p7635yjk4uma5g84gm5g722hktqx9wgs55ufh,5310 +comdex,comdex1xex9rq8jz5cz8rd2lumqtv2ctklwysf4dmw0x7,5325 +comdex,comdex182w40emch4mnvc3nc6f334vvdk5l2ae7ssmzj7,5340 +comdex,comdex1vd3l3plh0q8y2234kg8zk02d8fg6jf87dyzyms,5364 +comdex,comdex195x63zceqj9jylnp5luahe7lvh3fvukf524ngt,5370 +comdex,comdex10jsw8uvkajrd299k5k3y9s3kxlfsj0skyjzc7d,5375 +comdex,comdex1579nn7zefdvwpasl2279p4f97ksg02vcwpsuuh,5386 +comdex,comdex1hll9m9ljk5sz3lpjh0mfetc3j3zjzw5tdp7azg,5403 +comdex,comdex1naskgum2caddmzwneq690ztm97e2dma4lpp3gg,5409 +comdex,comdex1n8j9xve22sh5arf2kfdtdde46udztadas0jvh0,5422 +comdex,comdex1u8xff6p6p4uunrpha6m7fskv6j5z49qhtdddyp,5454 +comdex,comdex1mft5y902ecud0kgq5n5g46wjdyevmy7fl5kh2y,5454 +comdex,comdex1j96vu4dyf8qvzstn50dgwc2032t7ny7mgn32hq,5469 +comdex,comdex12654ndsj3zmwnkqayuzezqrlh02h4kaa8vglng,5498 +comdex,comdex1edkuyh3sdj0lqmddt80dj3vynt5gh2ck7zddst,5500 +comdex,comdex1ymnvaajax58fu3mvkvy6vp0se5q086uq5yyw4y,5504 +comdex,comdex12scnajjddcrkskht7mj7qplzxh7zkzfwks7jzg,5508 +comdex,comdex1rc4t7yayrqgmlzxwazmkcru5wrdg4l593rarpa,5521 +comdex,comdex1h6tf2g84mvxqaale03e560xhwg0zud9kd72r67,5529 +comdex,comdex1jfnnne6csmhds4y3096td5ygjrwuwhnpaqummr,5558 +comdex,comdex19n3yt2jl9j438rm9nxexzms796eucmwhrdn2l5,5571 +comdex,comdex1ft6gdwcedwdqe5gsp4uhcdvze6ualqg30jlyx5,5591 +comdex,comdex1k0anvfqhceh4clhjrvvfzmcdltj6y2q9naakff,5600 +comdex,comdex1k7madls0dsrucl7xnz2fwutncnufqcwwrvarlk,5612 +comdex,comdex1j8jez4yzh00rv0a6np0q398w3hr43wtqznw7k7,5632 +comdex,comdex1y4sn4wl8nwdh7ntp52xct4phhyzwez8xgg6r76,5646 +comdex,comdex1r3my6p39lmmu2lekc0pdae6mj46def2586nlph,5649 +comdex,comdex13vtg6907g7gta86unrpc3v2s378rt4pgdz8gk3,5659 +comdex,comdex1rzlhg0dyvkscjudp3j8rt8g549mz3r0e394dt7,5668 +comdex,comdex1ssa2ssc26klescxs27mfmamqg9w3w0sqmcllrh,5678 +comdex,comdex1wewtwjq7jl3z3e8qm2ancav76arfyl0e6kctcv,5687 +comdex,comdex1smy7dry3kpug82c5l8244crhm66uatr366qjal,5690 +comdex,comdex1p0muww555ywwdkkh0rpte9exjjk6txepv6x5ct,5697 +comdex,comdex1xszdnlfvesfq3pcgksjc2pkr6twllga50vs8yp,5763 +comdex,comdex1ykq5ahhcwrh7xy5jph6wak8qa5aaku436lt7j3,5795 +comdex,comdex1g6hp8n8mefwmg8x3fhg4zc33d68rgfp8jlqww3,5849 +comdex,comdex1pvwm7pvd6q0r5uwx55nl9ccays8tlfrudsjadz,5877 +comdex,comdex1l5mh43g5xgrsjwjy2ecra32xgrw6mj8ylgdxms,5905 +comdex,comdex16y4mtrncceq0e543cx3ylhv2m89lh98ca23z7q,5918 +comdex,comdex17uld3yhlryf7v8zzl0v6eekaf87zvngumprzf4,5921 +comdex,comdex1smfzt25ax563c0s2wgmcmt3g67d09t4mjd5jc3,6000 +comdex,comdex1slz22z3lwqzsehcv9mpld8d04l65y295hhhvkh,6000 +comdex,comdex1t5zgnfz0jrvflywjmgs95rey3un57n427gvsds,6000 +comdex,comdex1kg7c9at6mwthc0a7nsrxa7dp7k6q8chl638dcs,6000 +comdex,comdex109fhpxjztun2s6plnyzxpsmctcz9cdj4cc7p0w,6000 +comdex,comdex14wq2akvrc66euwh2mp3kc2q25dl3p47tq5nnm5,6000 +comdex,comdex1t534t5ya7gaq052xkkrzvs5n7t0cux0xwjcv58,6002 +comdex,comdex1vdmh5xcq42jzc3ykevy5dpsjqmq9hfkqdhzwyc,6132 +comdex,comdex13pw2eflhygv2rll337fze6m24gu04h58pdm400,6147 +comdex,comdex1tp6jmrrf6hlhpwa8e4e590jvyvsdkvv8da0nuc,6149 +comdex,comdex1kxglgdjexf09x2jemmypafrm6lva8xh80qcaha,6156 +comdex,comdex14vspje4nx8nuxa7tu480lm6dpf26f2hqlxyek2,6161 +comdex,comdex1fqs77nt3k4fnssxjj2qrwm3vls30kktn2fwkh2,6196 +comdex,comdex1jay4c5sdrrcl33pc5fyftuyha4zep5yuh4frse,6200 +comdex,comdex1vpdehzac9n8lz22xhz09kstttf8kedp26wdl2h,6200 +comdex,comdex1y86f4qj6gs8fzcrdgh7ye335hkp75czs4dgqvl,6212 +comdex,comdex1gqnr8dm48ulcnhnsfzm7a962x90fpk3wncpukn,6237 +comdex,comdex1ygarrkevfqehg4hlgwtw3mdzygm3rzpc6vmnk3,6289 +comdex,comdex1ed5skh36xhtsa6v998kq6ewcysg3aeunul2987,6353 +comdex,comdex1qwmuq7wlspvfextwqaqs836wq48nqm3ydamvrm,6389 +comdex,comdex1z9zyhgk59af064gaemclnf396gj9uep0cx6mez,6409 +comdex,comdex1tyqutyv520jlj9k96qth8xhfe2xdn6lgaj2796,6450 +comdex,comdex1pat4adu3ezk46y62j087wyxdru38mpzrh0vv8n,6454 +comdex,comdex1p0s9rqfrmgkre8ueq72qqu65569hz6ttj0rkrg,6500 +comdex,comdex1enmfgvn0yfxn5sssn3pm4fm964qyyj96dqrg88,6500 +comdex,comdex1z9tc2ln0cak4p4v3xld567gd4rrpxmdr4y6wxl,6500 +comdex,comdex12d425eddl7nql8zydt8ep6xy02sujjmwv5dkyl,6515 +comdex,comdex1gsu9fpgdyj85h7zukwp49m2dq65ska56sx6gwm,6559 +comdex,comdex19cgxp9tqet3a7m6h39wuk9d44w0quyvjnt430h,6588 +comdex,comdex1jlz82w63aykm2d8u8grdms24l62ecvvp8vfk57,6611 +comdex,comdex1ju3vys9l5d4fa6f22l9z4q9rdlfnr6mtrajyk6,6632 +comdex,comdex12kwygqlsx0ydr3yyj3shedpxqwne86ae2kvycn,6638 +comdex,comdex1j0u454de6zw44c8wymwtc2sskzpzjkyg8u7rce,6689 +comdex,comdex1uaux0dl3gh40y9czng2eqn2d52uu8afvhvecwc,6700 +comdex,comdex175vqr7shng96xcz3z3nj7h4dmpe8mtyamn83p3,6723 +comdex,comdex1kxmavjz8u9yhhtmg2vffned7pupws2fty7jmel,6752 +comdex,comdex1lkznpljvglyfehzngujl93l0d3elfvuane0waj,6800 +comdex,comdex1ledvxvggmum9s82sza9chkqx58cck8kfew4hs8,6848 +comdex,comdex19wv7srdrfn9qtt69jf3ep8ks280qgvk0x3pfu0,6870 +comdex,comdex19mehn522gdccdctlqxpye8gfs0nh4ynnvgt2r5,6877 +comdex,comdex13wr9k8qzdslg7jp5tzkrtc30e3spdkfy92xwee,6890 +comdex,comdex195n2sm978q8aj2zslsx3a7clu8rezkckmng25n,6905 +comdex,comdex14m8j5kkzytzz30zfnc3zumjfql72qlqc9v6adg,6929 +comdex,comdex1svhe5nr4207may4ydt6zq26ktuygaguyenwyd7,6935 +comdex,comdex1py3xvgkzr4m3nc98xnh4rvvjmngj9lmncdk8uf,6956 +comdex,comdex1ej2es5fjztqjcd4pwa0zyvaevtjd2y5wyahjaf,6962 +comdex,comdex1mm7z2zanke4vguug84faf9k8f9xfl27wp9tlgr,7001 +comdex,comdex1mhra4gvsa8dhwq95j7yztm859wz40ldqjfa5kz,7025 +comdex,comdex1pzzdvazgat8t9epvh2n5xn6wk4zcfc54fdqyqq,7030 +comdex,comdex179774zrn5paywpd6p4kspcruaacj54g43jfqzr,7045 +comdex,comdex12zlp3sl34cwt5decw8p3wlfl6rdf7l9tu07jy7,7054 +comdex,comdex1d0agahu76nuczg6v25s0dr0xma2wvjx949zysy,7075 +comdex,comdex1ph7gwddzsmcvlv5nn6fn9qpg3q7vewldyjngax,7102 +comdex,comdex1urtpkh4va2mwhxh8y93n6lg2s68pq7rqxegk7p,7256 +comdex,comdex1zxaqnrzwc0cchzk5f3cyugf3fayuyseyuv940a,7313 +comdex,comdex19g58kr3uynhg8zxslslghllt5plugw5d965q7y,7320 +comdex,comdex14d9dwnz385etauwrkcrayqdpps8g3vh3q6yf2a,7348 +comdex,comdex1tngrk6fdalfzff4k90uzyy88zfprg9vnu835wc,7366 +comdex,comdex1je3du5xuavutuc3lpvjjrwucmdnazpdkcxm3ca,7375 +comdex,comdex13tq5dgse3qns3ynq9m4lqc9p38as46z6ysk8jl,7380 +comdex,comdex17sgwwu39jhgg7nd5ws0498gmgqqevfxjp96dtg,7390 +comdex,comdex1mrxx9rdhp6cq34ypjedr4chtmdjnmy9kmagt96,7398 +comdex,comdex1n952q9tu5h3346wya5n207qj8mh9u6a6wq8t2k,7411 +comdex,comdex1ucnpf2p8sgstz5xy3en3z8krt8hxkukgcxq9dr,7432 +comdex,comdex1lwr6hx06kfjr9rmuj6xx6xf7pywt2jzgcfr2nx,7449 +comdex,comdex105rf9sxvzqrf8sce5rktffgd2t960uy0v4l5dc,7453 +comdex,comdex107m09gnrav7sfk8awf0fdnd5dn4fdlaumucvvu,7488 +comdex,comdex19ly7g56ftcska2fjay0y2dgqk3un0ygmdd0trd,7500 +comdex,comdex1jgcpfh7ft5y8wch47nasuwx5gkmgfkura7vn76,7501 +comdex,comdex1xz436dmuxuzpdt4a08s0a7z4tmc7806cnkznw3,7517 +comdex,comdex1vuafuq42sh7xgjw6y2500yjlm58m3jrjzj67pq,7517 +comdex,comdex1dm7xjrlmlzj6cv4gey2dax2jf6hatex8e9kxf9,7548 +comdex,comdex1e4de2w6322gymma99zw7tl7tasr8ly2sz2kh4r,7564 +comdex,comdex1l33y87ayhpq67eeqnmsqnruc3jdraae2mth4hs,7591 +comdex,comdex120g4zfrj75ezl6cmd466tk0rj9h3dksktr37gk,7600 +comdex,comdex1kp22rcpkavm47tt7xahnjjxf4tjdlrf099q2fu,7617 +comdex,comdex1dpw3seczzg4n8gv0hajl4xapl9h908reutjvqu,7621 +comdex,comdex16vw63em8pjf20shm95rc0lcghzt396yk3hk4q7,7636 +comdex,comdex1qe8uuf5x69c526h4nzxwv4ltftr73v7q86xmpm,7700 +comdex,comdex1h85zr82kkppf0z3j9x9xl8s289qpszyg50k9yr,7709 +comdex,comdex1kq0vsru8ufey2pduv7yn4ppp3h8k028t58uq32,7710 +comdex,comdex1zdmza53yxzymv6phmshuzzaez9x4phvhl73qh3,7755 +comdex,comdex1d9j83ll3e0jh5w8kycjcmzcm2wdy0mr30t7z8g,7783 +comdex,comdex13th3pfkmjqpdegvz9c569y0ashwmyp3cn8cezl,7814 +comdex,comdex12fp4ph6ap0f26zryl2jcr7n0lzfv2rtkn7sam3,7894 +comdex,comdex1wfyaqhxsczc4mlgk54trxznmqkld09p724xs0k,7942 +comdex,comdex1v5s42qmh7zy8l0y3nnnf76kfkltfsvr7yn807a,7948 +comdex,comdex1pfsmlav60zxplnn4wm5ujxh26yuwd55q28kwy9,7964 +comdex,comdex1kpaa3fwz0z3q00vxlzmkn0p45gkkhv0nraqtj5,7964 +comdex,comdex1znu9japz2ukk9a2zxmcktcqsu80p099mumyx8q,7971 +comdex,comdex1pjr9lfl5v3049pu62qhr6fz38ujhuxrhl885zd,7996 +comdex,comdex1t65fmwlmm88xvzg3nn2e8x0gafn2jxx4jj84wu,8004 +comdex,comdex1d8xtuav36xg7hp6lv6u69gexpd8sunae3yqm3v,8050 +comdex,comdex1z6a9p43svtkzf5efmy78tae7qqz8p8cccngg6f,8138 +comdex,comdex14v6t34ryspugy038mce4yqzp8nwe5p4r9llnrr,8312 +comdex,comdex10f40kgtmuxd82y8g2lcdjdywyh38lxrz7s95g2,8313 +comdex,comdex1akl4vd9k2v34p2udcd0dkkvlk6dz49uxn0g4ap,8313 +comdex,comdex1w80g5swy7armj8ls3r433v0lknxyrp53w4n2xv,8322 +comdex,comdex1mergdp6r8c0xe49fz5k2ekyuvqrjzxylf4x24f,8351 +comdex,comdex1s9em43slvq8zk9xxkdfqgve9zxw4sha7yqvjrl,8359 +comdex,comdex14mpem4guxn4ju96r4urrdgsg56napj9469kzpm,8360 +comdex,comdex157v08zcahkmrvvzgw8ggku8q0acnp2urwaxw5a,8438 +comdex,comdex1zkxqtnu8upawfa57vmr23ukkxm37kgqljx9mcf,8500 +comdex,comdex10yp6r4ynk0v0f7efj3pf5sc22j044yx54y0rlv,8517 +comdex,comdex1dzdz6hwegce4p00z58jnufklzdmfcr5mptpc5d,8540 +comdex,comdex163cwepl644wch8usuxxw985qd7we3k54tv4m93,8575 +comdex,comdex1zw72tz6x2mczzcfxqzmemc48yxzmm5xrjczht7,8590 +comdex,comdex1ltatpdd8ha6zum46t6z8cq436pan0fytu8cnyq,8660 +comdex,comdex1r7gt4ep5ccaqckrz45fuuwy74a8zvtfm384w32,8748 +comdex,comdex1gfysn6yvulu5yekt5nf68nxljh58yeqmk7qnrl,8750 +comdex,comdex1lt3zkefmj9y3w06ca30fpnnx94gxk4p3arj977,8778 +comdex,comdex1gc55cr8hyeu7wffwq0fw4ta0xpf39w0xcuu58t,8813 +comdex,comdex1xd3anu34j4akzla94sj4l60lqwqul3up4aypg0,8845 +comdex,comdex1zgupuhu2mdvctp9yykca44sasl8ull0hap6zck,8880 +comdex,comdex16u40662xkkalag94vym7gdrj09rf05jnupcvgj,8949 +comdex,comdex1362akfsjwkneajyfjeuj0aregj3jqfqnvhh0w6,8964 +comdex,comdex1w7hsmgp76u6xw9mga0qm67jk3eypq0645ddxnt,9051 +comdex,comdex18wtv4dg0pery8zf0cmskyjy7qjwdgk9q2pcdfw,9056 +comdex,comdex1kffftp08sklhs8pyjgp3fcpguc4tpnukxpy9lx,9057 +comdex,comdex1wk4nh5spqhckpj805a0tzwr3uz0f5dq4vu22du,9074 +comdex,comdex1670dvuv348eynr9lsmdrhqu3g7vpmzx9d66wpy,9135 +comdex,comdex1d7v73kylp5m86ulqh8uleysrfl6qlfgdx3dp23,9239 +comdex,comdex12r8g4d4gztpzx3ufgfvl59k7g78y0xvuefgmvz,9296 +comdex,comdex16ftsrjjsfs2h5qxmy3k599yt68ky4spm5jqfpp,9330 +comdex,comdex12n7jh6gtdc66azkvu6ajz6n95xzlz69dat6jgm,9340 +comdex,comdex177kgktq3f5mj7cyrdlnhvt9rn0uagdeph5drpp,9345 +comdex,comdex1sv9kzhz59mygqh3jxms7vwxvt49c39dl0ll2ks,9376 +comdex,comdex176gvuknzukrar98has4uhgayzqlm5dt9nj0svv,9397 +comdex,comdex14tdg37jf4x0vkdwjszs5npd0gxndew5mx7s3n3,9452 +comdex,comdex1849aeae0zp80s9e27cvpanxvqhj9j5tcl8jdhx,9532 +comdex,comdex1qzyjzhmav3rehqw52vl6um5x36y2anvhf3r9yj,9537 +comdex,comdex1gluq7t59ed9nv4e0jf9xz5s5xz3pvgrunuqnx5,9629 +comdex,comdex16xvn5l6fsj03jg5valhch08dkeuns8nct3827z,9651 +comdex,comdex1sx8v0x9xmgppa9a0mwdhdvny7whqzs4ureylez,9746 +comdex,comdex1f325m5r4esk9xvrwvms4mwtvj35tp2ae3vqqg6,9875 +comdex,comdex1wv42vrrs2xt8h2zqjty7p4dycqvwkej4pgn6ca,9992 +comdex,comdex1duad60aqqyhzfnha5srhpsw3eegg6phm4g449x,9992 +comdex,comdex1pssf4s2m70ka74c29jrf922sm5mp0mh0r7wwdw,10000 +comdex,comdex12q0708jnrd6d5ud7ap5lz4tgu3yshppfwd9x28,10000 +comdex,comdex1a8u02d5y8a9mlwkkvwegeurhxu8kc970lxajxf,10000 +comdex,comdex1pt0zxdv948qmw67ljy6hmvk6wy37gvryrc2nk6,10000 +comdex,comdex1vysg8pgmlnxrx9knlm0rn76mtedvn6q46nvy83,10000 +comdex,comdex1tfrw29k87a5srgrpv08k99mzr2mqcmd0ws4y2e,10000 +comdex,comdex1fd2hlkk8mz4j3stjd0vv894evxhmq0fkd4adld,10000 +comdex,comdex18tye7mqdkz6cmfk6tcf6trzjexjvdjtnul5l67,10000 +comdex,comdex1e69n6znf95ru98ydn8f5qm3qw3n7kljtr95e7c,10000 +comdex,comdex1j5ptkxltz69zcn3f3jq2x9xeqg5rkcz7lnsm9y,10000 +comdex,comdex1hdvzqrgjqgm98vrz6jpevx53udwa52l3l8ly5y,10000 +comdex,comdex1lr0uq54p57lxpxmqmej0sljwy92ngwy0rlf096,10000 +comdex,comdex1vgqgdk7lyqz4qzt7lmfmm4eacf44uvt7v0jhh5,10000 +comdex,comdex13zxtquya89gfmj2d3rynr5y48dxadgdvu3zxs2,10000 +comdex,comdex1kl84a6lkkvd8w4twtan5hp0r6yq5lzp07cpafh,10000 +comdex,comdex13t0fv740cd8cm0uhuhndh8zuygfw6433cgykz7,10000 +comdex,comdex1jwgulugyaypu3zwtal3ywcygw5e3rg8xjqrf6a,10000 +comdex,comdex16jsvh7rdd564vt8hxc2l7x8j8k3hj3qn4tlqph,10000 +comdex,comdex1ze2qd4dn0q96nmuq3d8l26r8cfafhvghp2qah4,10000 +comdex,comdex1hwedsy3mzeda5yw6zr0h88ea6krv6aa2c96v3g,10026 +comdex,comdex1srrvhf9g5h4kr63n2cxe4ds2lapqwfffjlgcnv,10068 +comdex,comdex1yqvxyhzqd4e6mg6hhd0x08jr5yg6mdzje39j2a,10155 +comdex,comdex1kkuy7ysjq9wwgd55ftk2zy2svl0xwa6e5yd0zl,10207 +comdex,comdex1da85gjhaupl8ae7ee66sw9zh585uu9j3czu4nk,10333 +comdex,comdex1pz0a4rzkszss4dzs7yfukuskqtjg739gqar3w2,10400 +comdex,comdex13x77yexvf6qexfjg9czp6jhpv7vpjdww5lpwq9,10443 +comdex,comdex1herasn5ewvv9acpujdmqxz698y849aq9nvp2h6,10500 +comdex,comdex1f4374ggr6aqh40j0cyvpnxffs2ta7kp2d7ejak,10598 +comdex,comdex1hc5ggmaw5v0dp7wust48zskmlr4t833lqpf8ta,10650 +comdex,comdex12z9k00k7dje9vnpfkkqsr0e7fy795dqjfx7luh,10700 +comdex,comdex1glgnuuckrkcvl90uk0ute8h0y4gdp5u8rc89d2,10730 +comdex,comdex1z8zyckttkkgtp9s2vdyc8hd5nu4x6keujx84qs,10780 +comdex,comdex1gua75rqd7zfulwg95qhdzsdrd73an86ddy03xh,10846 +comdex,comdex10xdp3mr5l40g8hq9uqte8ea99fuuuh39hpdmur,10919 +comdex,comdex1fxua2h6u6p9sd80j2svy7zu9fhhdxgfju4yj4y,10947 +comdex,comdex1yg4ztgrgnmn52dftk3xrxzxxt3s0e54es66c64,11018 +comdex,comdex1vuwy553khm9jxmugh8kfscwqr7w4v86z2lg7pz,11056 +comdex,comdex1ypnke0r4uk6u82w4gh73kc5tz0qsn0ah05uhfj,11096 +comdex,comdex14r58s356naglk8gz8mqvktlc59se8wgmz5q2dr,11097 +comdex,comdex1tkntk2k7gaxj04slteyzt68vhvcl7sse3upjz0,11116 +comdex,comdex1ux3j2h446q9yf5dvsw4mwa5fnf07ja9v3rzdpg,11149 +comdex,comdex10s9hp4s3nd6yywj447up3axrkwt03en98xnm8h,11165 +comdex,comdex1cujkhsydnq3tkjn935teqpplk3wy3zn2ekjkj7,11215 +comdex,comdex1xxzc8awwllqq4waxtej8u8vlyr89lmuyhh8h4n,11230 +comdex,comdex1p8ktdc6st0tcd0rqx6eu32xpcf7472suhrnes7,11285 +comdex,comdex1t4etz7yktnexalgmt6jr0g93rdfltvfm5ws3sq,11320 +comdex,comdex14pnd9hkf69mtnan34e7rz4sucx8jn2en6466uu,11324 +comdex,comdex1x69jls25lldyytfhzaaved078v72rc3j5tj5r7,11425 +comdex,comdex1445x7k85ad7exauuzywa3pkzm2veqqkr83z2nn,11455 +comdex,comdex1nqz052nteywfq26udpnq98h87pk0h7vx9xrq8p,11540 +comdex,comdex1dxha3s6yd8zyxqg30gleaglf6qpflntt90v62k,11627 +comdex,comdex13yx5mkhz0x0uzpunfex9tv6g8u8yzztu3rplsp,11739 +comdex,comdex18kw6wv03lfk0usx30da9auzhx7ym5ue6222gqf,11759 +comdex,comdex1l6rcvtkv9kf7xtksc4se0h27gnr4xwaygfqmd9,11843 +comdex,comdex1knp0wpqlvhyqnq2ca22gdjuvmcuj7zqd2ft8lh,11913 +comdex,comdex1fek2ezdctakw3y9g69xhtjpxx8078eyslmlr3d,11918 +comdex,comdex1gf852fxtwlg7tvmwv42amsngxruhu027fdp3gt,11984 +comdex,comdex182ur9dd77853q4uezzah9tdh4nrzt27hgay65f,12003 +comdex,comdex1nedlyyjmf9cc6ckgy26v6j22gm95qwa9perzj7,12013 +comdex,comdex1ma75x8lutctsh05emalhnskn6324aazj496kur,12101 +comdex,comdex14q7s9qz3ndjqe79ux8d7ctvrhwrgfp3zksxlk5,12115 +comdex,comdex1pd68chcg2yvvseudap643whw86wvl9majwlt47,12155 +comdex,comdex140l6y2gp3gxvay6qtn70re7z2s0gn57ztk3xlk,12412 +comdex,comdex1gp957czryfgyvxwn3tfnyy2f0t9g2p4pzz0vnr,12458 +comdex,comdex19rzc4nyq44356wruv0wk820hk0j0ftdff7gde2,12513 +comdex,comdex10lhwra8pyu6j7q39prez3ytp584fw9asr8m0rm,12524 +comdex,comdex1rfnf6gpxuwnszn296yaeg6xxaudvaww6uyky3y,12677 +comdex,comdex15hxq8y8w6hwpjxxzqk63uh97258jv2xdyep3yn,12684 +comdex,comdex14x38jeuczt5pwvy92tezfqexxnxywtmrfcwkku,12704 +comdex,comdex1plz2s628rfuz6r40pguzd5hzjee32n2jvn9enn,12800 +comdex,comdex1wvh4mga33wshf3qlt5h9q8sf7h2kqlthlnf2tz,12811 +comdex,comdex18wg80p26wzjwdggclux0mzeetdapfhjcseqxnx,12898 +comdex,comdex1wke9k02smhpsa2mtaml6lr5hy27rgwzz3awhf8,12973 +comdex,comdex16a84ca6q2uw0g5qwffu02emqkf3z2l97wfrgz8,13124 +comdex,comdex1djs8najgqle42rrjefk63ns5xc20ymfkh9jwpq,13145 +comdex,comdex1y7tc6g66ewgkux44u5htnyje59p4mnj2at6sls,13206 +comdex,comdex1fysj4cadldlzcpjkfm2apdxex48wlvrgm5a9ju,13238 +comdex,comdex12q4a5qvuzzn2kspe6dekkhnl77ct52dr8mmuwh,13315 +comdex,comdex1yzxqvczc6v650xaycpmdq4d7cex3v48m08w972,13619 +comdex,comdex1056cqeqqqr8kxdrpgkxx4z8w7xh0d5krxdv09u,13745 +comdex,comdex1h8wyhu0d6wgcqyvhlvqm8efpegrymz9v92hmdr,13771 +comdex,comdex1wrmkmpaxw7er0twrx4gsq8nwztw5up20kxwphs,13871 +comdex,comdex1uxf8zpr59tpasfpl7eu3v4r64nnaq6d5fsutwf,13873 +comdex,comdex1sdj5ye5jh5f4ac2pneynefvl02xqsq3d97d6yj,14000 +comdex,comdex1ra47jr9a45hqccyuq8p4mzxkxctudmq75vhsv2,14075 +comdex,comdex1vr7afd4zyk8rfpl5q7ekjvpp0gqeee8dk4sacj,14150 +comdex,comdex1v97agk4gkyytpphhymqxhh3aqvvra3vv2z7uwq,14157 +comdex,comdex1kwwm2zln6z8lv30szcya5f9wnrdu6lamnrdj6a,14164 +comdex,comdex1fxj0s3n8d53v6xhzp8wrf2fpnupte7v3gunlxr,14200 +comdex,comdex1flsq5dcypwrf6pjlr2vw0ws5ratv45dfh8n7q5,14302 +comdex,comdex1dqshdqs6tjy2jpk4k6getaq65zc5ccy2v5md4s,14444 +comdex,comdex1mxcqqh9phgsr3rv5uqj2y8pjzcxynyuacw4egq,15000 +comdex,comdex1pyjqy5l25fl7953n7ptfarr0mx3n4a6c7fuf3j,15000 +comdex,comdex13uxvscgvrvxuhlm8vcxg0jnzxjqd5pd5w5jrs2,15096 +comdex,comdex1466v4vuvm6uqkyc9nzqh270qvlstzswjqsjf4u,15146 +comdex,comdex1rf48qtmy0xxzpdrxgt5t8085kvzdxgv2y59yat,15244 +comdex,comdex1npxgg0gxutpwuus6sm5cx5626qxkt0sux8lf6h,15277 +comdex,comdex1p6y3x9zy0d05mnptm6sef0y9ly6xmgxfjtpjvw,15592 +comdex,comdex14u2mtgtqw0yuge8f7g89ruunpafhhrgng3v4dw,15834 +comdex,comdex169wtfrlwcjtfksheg7gznxk5s0zp3ethhwea56,15836 +comdex,comdex1uj7xf8hzm2nxhqvwv3h7zhgypffr2kswyx8ltt,15880 +comdex,comdex1nze42jgkycjwqvuzzyh5nq6uha2v6lrfqhllgn,15970 +comdex,comdex1ypakuerp2fz5resn74cngarknzlgj87sp7r4vp,16088 +comdex,comdex107tn5s5nsznzvczjf76qhsq2fwwe6j9zatjday,16089 +comdex,comdex1fxw3azlpglvj7np276g09euu674m08cs0a8427,16114 +comdex,comdex1k38mrn2slt0wrpreavnujxuavvzdvjpgh4pedk,16337 +comdex,comdex1aa47dm4zsdqvqmaszpxksxwanuysul2la7l6f6,16360 +comdex,comdex1y97693jvc4cm2ykywllucsqqgp2kgmxkdsjeqe,16414 +comdex,comdex1k8e5tpfaygetmaaqlcct9fm58v300wmhd0z5kl,16464 +comdex,comdex12yauf4demrk25frnd0nvdntduwf33eatfta9kz,16466 +comdex,comdex1wewdshytuelfttwmq9g8nun9q43fljaml042xc,16536 +comdex,comdex1dzpuhzsuj8ac5jr2xmtnwl6myxgw86t34a6xg7,16827 +comdex,comdex1037w0kq7xwv87sg52qahwswsnreqng7qsm4x9u,17534 +comdex,comdex158ddh954pzt3etjh0yqe8lp7ax0pz6pcmuq2en,17700 +comdex,comdex10jr0qvvulhvrzxwyqhqe5rddjqyav6faxn36y3,17881 +comdex,comdex1qkzqdx4l2r6gf0nmw3n0jmv2dust2kc4v8kpy0,18024 +comdex,comdex1hs6gkw66vw7k9uqkj88llhn2c2x3m3rwj0fsvd,18150 +comdex,comdex1yuhx02nd624slp23hxuzrr5sfzsjsexku3pe8h,18504 +comdex,comdex1vsef5rvjka7anc4pxwyauk29kkcjarnyv4dws9,18851 +comdex,comdex1v5k4st3duzftjsrd4m82gwvz8aygcgz8yj6jm6,19236 +comdex,comdex1xwseskrmnxrvesmad0xtyfvl3lx7xzkkvw3r0h,19708 +comdex,comdex1r7re9ruyaggmdrgf9gepde25n7ev0r6kc52drw,19931 +comdex,comdex19kkz3natqkrs2tffuzyy69vf9088neual3c2w3,20000 +comdex,comdex1ekdkrvrup0qypt37qejse8dhqpre5fx9j0pw25,20000 +comdex,comdex12dseyeqwsv3lkxlks45p4fp7et4qnzn5lp87vg,20228 +comdex,comdex1f0ve4ywdf6jurmkr5zhy47pggrznjmea6csrg8,20400 +comdex,comdex19w9tpgnzkuf9pm9tl5my95vm8rufapythuj4as,21033 +comdex,comdex1aqq8kugxxtaumkyaw47hsl6t2ads875866wvgg,21598 +comdex,comdex1ha6wjnt2eaew862cypum4d4u6sc0efhlrdlurq,21793 +comdex,comdex1c57getzgmd5u7lra6jhj3a8rnp9g6ctp9qf8x9,21803 +comdex,comdex10pwl3wxxk60ggqwxp77hz84v202p0zutn9w2x9,21847 +comdex,comdex1nf323pd7r9cf842a04udgp6w5qupmd8hry0ddg,21859 +comdex,comdex1eawtzt7z6ladx0qm6dujsj9ul689kh3j52anuy,21890 +comdex,comdex1f4j6vh3qrflhr3x4p003e7gngcy2wufep4gq3g,21950 +comdex,comdex1uaeydf60e8h7au7td4u4zn7deeg2drtymznu4r,22208 +comdex,comdex1ruzff99wnlky2vx02dwdncr42rq0z2n6hyjp5t,22254 +comdex,comdex10gh63wta3mlccq9ljnjxudp26a95v7luvyseht,22319 +comdex,comdex1kn3mcvhszqevh0s0mylvq5vw8fx4kt685mapf7,22810 +comdex,comdex1tcqyhrelf4tkh5dkpy8tsgnklpm2hjg255ttqa,23169 +comdex,comdex1f5jr64takt6rdl4aa6smygafmcvfgts6a2xayx,23199 +comdex,comdex1d3udpaanu3tesn8xjsh5er6xs2fhtql4ewhs5h,23344 +comdex,comdex17wjj4e4xjlk6qtdk3uw432vs3pmvkv0d74qusd,23420 +comdex,comdex1dr08la9nu7ewqd95m3a27rjevf8ayt07cz64ua,23595 +comdex,comdex10ap7w57wx2t4qqfpxj58qp4s8rjueht7fehhr8,23726 +comdex,comdex1lezscq4dexmlqmeqf6xgfyc5ppextay8q2rmlj,24119 +comdex,comdex1t8cdk3gx6nrq0tn7r5e55ry9mdmgcm4vll72am,24363 +comdex,comdex10d87jx68zygmwagu9ggzxpept07zs7nmtk7qam,24438 +comdex,comdex1hdec9a4gl4n7tlf85vzynzdqd5qeljv2ymvzk3,24765 +comdex,comdex1u4flakwl7ee7u4p745jl9nc7y6jr5m9reh4u3m,24973 +comdex,comdex142wk4l09f4vpuffu5x0zh4p45qmfjv6cwrqae7,25000 +comdex,comdex1f36cu744m06p7flqapdva4susv5klg6ptqje7v,25213 +comdex,comdex1exyfx8y9mcphanlnfsh5f2z5g4edrnfunpux3a,25681 +comdex,comdex1seq244de4ex72pezm3wzaejee2ywzvz9ulwy8m,25685 +comdex,comdex1g8ctqa5jfp253knh4nnjwy4aw0g4h5wwyrt7kr,25810 +comdex,comdex1khme4j5thlnnjkfeq52d7pl906ywdtq9yhaaw8,25822 +comdex,comdex1s7lcwmwp7eqtmn6mpfr2urnujfdapd6dg4fqzs,26032 +comdex,comdex1l6j80sen2yzp94zhfa523eu0x0u247ry46jtnu,26190 +comdex,comdex1rezen0mm0p7ullj0eglgn40u8pw5lr59zmt22c,26254 +comdex,comdex17r7um5m60j7m2mru5l33h89t8jgdmdydxar70j,26538 +comdex,comdex1vyuc2rhrr6c8t38l67qg6852q7ct7u45d5nslm,27301 +comdex,comdex1gxe38pdkz5g2h3g07pwa96zunsyugkgx636xzs,28000 +comdex,comdex17vz8hvg96lddwawdfygvu89ua4v7qgd6w92hvp,28874 +comdex,comdex1zqv58alxz2cyvdqdq2nz393kjy56edu3fljvaw,30000 +comdex,comdex1yeyafzl0nczpdwx2q2wkwkez7za7uwt2wjqz93,30000 +comdex,comdex1d0hk2gflp7hsejy4t2a750g34w2m9nel8d7w4z,30100 +comdex,comdex1n8gr2p44e84x22lqe0q88eg4n37wxcgpsr997c,30500 +comdex,comdex1zxd53zy2zug02pfkg36yr2jupydr8pv62fjclq,30687 +comdex,comdex1wk25umx7ldgnca290dlg09yssusujhfek3l38l,30902 +comdex,comdex193vm38q84uz2475r6g04mhl085wcm64rej50yr,31187 +comdex,comdex1sp23dlg7rptgtjcgklz2audpn4wl6th43pd0q6,31203 +comdex,comdex15ul4ayz9zsw5vytju2ec8lz2cpsm8prdkpv4sp,31361 +comdex,comdex1clsxq6wk4r4wsd0wjlqaa52p4t94r06lh2y922,32739 +comdex,comdex1hey6zup6z04ewsf4apws7fzg7p3309jphprl3f,33459 +comdex,comdex1d25vszat2kf6n8vs7xz9t9avmmn3d6w8fnn6f6,35262 +comdex,comdex1n54mwsfaszvqrm75p7utwgmdsqzag8gl6es905,35313 +comdex,comdex13a6nz8mej9e9gur525x6d2hfw0ql027nq90tk5,35395 +comdex,comdex10j3t6jxqjjnz4lkh3m2af7yxcf9773r4wsc4us,35454 +comdex,comdex1qc60ztmn89hzn9w8zxd77m7lcpygcjdc9ep0ry,35918 +comdex,comdex1jnpevf3zg3wc3vyqssxu96lz899g00skew73yd,36117 +comdex,comdex1mtne5ye3d649y70pyu4l72u6xa7tp2pzef8rjp,36338 +comdex,comdex1w9pkvf5wwwmdshv35ftej0ssx7nzgqc6tz3ecq,36375 +comdex,comdex1dkksfslrddnrc6hlfr766yzpqyyku0fpua9c7n,36375 +comdex,comdex1euhszjasgkeskujz6zr42r3lsxv58mfgz7q2uv,36457 +comdex,comdex1ymq9l8jw9nzu39tljry0aapn634zaj4e9zdgz4,36471 +comdex,comdex1zmv7m80wztjl7xhf8lwxsz680e6wmuj9nvlwzp,38247 +comdex,comdex1rspja2xkal9ywvp76tcdtxxvsg2q9edklq3hrm,38321 +comdex,comdex1n826urhr95hcmjpd703geudgwdx50mqqeps05c,38494 +comdex,comdex1lucch767n6ykc6n087zxgpxph8xhkrj2dqhlyj,38700 +comdex,comdex1ajhz8n9yawladzkhlny6cyd03kr49xqumd783a,38786 +comdex,comdex1zm4ah00hyftxx6t0ds3z588cte4uuyfhcs25er,39683 +comdex,comdex1gdgx34jhu0hjvaq5wuzwaapa8cg8mc2jqzrn67,39775 +comdex,comdex1chlmc3um9qrs66g3afvcpwtexfnhdf3a8v4384,39796 +comdex,comdex1lnlz042znvutp5q33fketfqs2p3m9hq77d9vs5,40000 +comdex,comdex1w4quyzndf8sffq4fd2zt3cxrapuyx9g3f4y3lm,40065 +comdex,comdex1fcufn74lq6pzfs5vtyhldpnfn2em6ncnywfya9,40381 +comdex,comdex1dqj78kdtmmfu457padwr0en4r77kephsle5z04,41322 +comdex,comdex1hpuzvp3sguqrwnf2094x57p2a9hrz95rs5nl8s,41342 +comdex,comdex1a7lndypxhk3ztjke5yx02k49pjdzruggtfv5fv,42983 +comdex,comdex1dw7c5ef7gwgszl7lpayjg0kvy34k4fjl43pth2,43061 +comdex,comdex1nm50zycnm9yf33rv8n6lpks24usxzahkstts7s,43378 +comdex,comdex19lqk0k64zxejq69ssk3ajefrjme29exu5au5w7,44034 +comdex,comdex178dcdmhlsqx2nlku2gkjvnmnxkltzwqecgajw6,44295 +comdex,comdex1yen5f0ej9njg0d9pa8nn2hwjpqqm36zjq627yy,45405 +comdex,comdex12z5p547fu3k6n3jcwv0u8znrqrnjph0knzrl6f,45884 +comdex,comdex1hf3ljlcrvvp53hm8aff3wgkwgmg2lgxsj5rrqw,46500 +comdex,comdex1p5kvg9pjv3jhtlhvezs8k69d3vt8mhpjq6d8k2,47387 +comdex,comdex1ldxn29t6r5t9ka97k453xs4p7xfekc7gupp9qt,49999 +comdex,comdex1z90sl0cv9szlkh8zhatd82aea45gr2wwvs3jrv,50000 +comdex,comdex1jdcvuhd83yv026sa5frheexyf7zhmpd5xlcwkw,50000 +comdex,comdex1gdv7kzg2lvx6k5w6nxq84q8r9z2ujpvegep40v,50001 +comdex,comdex1fqczm6tv2k4cjxfakfxgjm9acstnc2jvzkmtv0,52660 +comdex,comdex1x6e58udy6uha76hkrj6q2npqx9vp77ewjyft38,53579 +comdex,comdex184ue0drpfg05c7rg7uzcan2pwwgj4h9uynmapw,53936 +comdex,comdex1ym9guccydzgqhqrutyphe6g72f0as0nj46kkj8,54000 +comdex,comdex17rx4caclnlkqwlkq4hq3aq0cvj993pnf0xfs7q,56071 +comdex,comdex1d0new9u2f80rcmmlw0zftxeh0385c2gw89x3qw,57463 +comdex,comdex1qkjgl4tc9w8vfdesrnyzg709quhtwjnsn085ry,57878 +comdex,comdex127pdm2umuvppet63lezvjv5flrvfyjrqlavm4n,58008 +comdex,comdex1flw3fu2x7kglyegfczqnynqlpwd9z8g0gjm50e,58703 +comdex,comdex1jv8tnffmf3p5u49ehj5m77nn6ereqmzfs5ft8w,58725 +comdex,comdex1pd8565l43drs293ykaxyen0lknynu7sc80ukj6,60121 +comdex,comdex1s03zypfs9ws4xyrcm2f4pgucz2zuunsktf9qmv,60221 +comdex,comdex1xhxdcjmzfaq859pnz78l8r89ed85ua995gdkjk,60813 +comdex,comdex1ks4da6wzff7zdgkxydehl8ffp7k3dffcz3sjqu,61367 +comdex,comdex10nfznxckxnzh6z9f32k4e9fm8h8xtm34nnrxh0,62085 +comdex,comdex1sd2hkpjqevmqva6jvsrrc52kmdshplgy8rmt2n,62737 +comdex,comdex1a29w32da3fz2deemfxvl78smu4zhvfzqj2p0c4,63342 +comdex,comdex1kla2ypczqfdwd7nx6h8sngls5966a8tatzg7hg,64692 +comdex,comdex1w5lep3d53p5dtkg37gerq6qxdlagykyryta989,69000 +comdex,comdex1nxd89a83vzwak0zzyscqxaju2ea8zu9uusmswn,69842 +comdex,comdex107vjqq2g0ksant3ga08s6am7j9pk7vwqcx77v2,70457 +comdex,comdex1r6yprd6r5wlutj446sgjzhedv094yzz6w39q4y,70570 +comdex,comdex1pc5zgqkjega5f5z9jwtvy00ed4wjpjgvhzmnae,73474 +comdex,comdex1jug6azkcx407t50556gztxwtszxxdmzrgppea5,77458 +comdex,comdex1ug4p9pyeqnfd2kvtvgl5ulu2h7k428syflwp62,78000 +comdex,comdex1ky7m39mszht0rveq9y0ramqnash6jp5kpuul2y,79952 +comdex,comdex13xjrerteau5qrtr8a53zd0aj969xzw5qxmf4kq,80000 +comdex,comdex12q567kam3tclejefg8jggkxfxues5xlhmzgy6v,81774 +comdex,comdex1l87lywr66ehhfuy3807nuwfjpmweyerdgsxg3t,83233 +comdex,comdex17xfpkp90waa9e3743gye6e0kemxr720ezuy72s,83519 +comdex,comdex13gd97ke6erejqk2p050xkpc63jhtujrerxdtmy,92293 +comdex,comdex15lfvjkesl5pd84jsjnxml7te8tcgh9pp9r6e3t,100000 +comdex,comdex12sczd7vmheqat355txqducgm6fk86ye4kdwr7v,115491 +comdex,comdex1zy7uuu6cd5fde3uunlh5l40jjf24ypd6sy9ej4,118265 +comdex,comdex1wscvpla2njn798rn4aaywgfxh33yw7ecr35ces,123639 +comdex,comdex1vj0ntz8qk9pxk7xt3n0ukdkt86j3epnvwa86qq,124760 +comdex,comdex16c7nw5h7wrfth69p7ulrktv66dxqgs76zvla3g,132802 +comdex,comdex18sfsljlc34tkc0cza22jfqrakk3ju56tw8lv0u,135506 +comdex,comdex1ryf0rjfd2fa52c4fxfxe8jdwxhut2yp7qmusgl,138328 +comdex,comdex15z8kpct0855yjdyp90p0rfy3suvspe93gvhpzm,139999 +comdex,comdex1adpw4sj0p4ux698rt50k9cmd7g5cewvyqfxaft,140344 +comdex,comdex1qsjhtgcnm88asrkj86dsy3hev9mhtrn5yrshgq,147224 +comdex,comdex10np7qyy5ahsvspukvfcdmn5vdzzaanaarl9tan,147359 +comdex,comdex1vx807arvwtl7w62c7x50encz6j4fnpsuqs8vft,156964 +comdex,comdex1rdg7ec7a8men3dvxnh5afkpdxcevqkrknv4h0w,164788 +comdex,comdex1pm54wsd72hmahydlvnxtl8shwygfhe5t8cq54s,176084 +comdex,comdex1pgpql4ngmk70dje7q0h92wp255heu5l8tra8w8,178816 +comdex,comdex1dp6chezxk8zvpc0rl4xmrsam6wd6xfnwqh5psk,186612 +comdex,comdex1chmaus9er9s5936xjq5wsxqmqc9zklq3pph6nh,188583 +comdex,comdex17lcgex2ssv6ryz6p7uaflstsk29cfjewhzzp3h,200000 +comdex,comdex10zhttegl7frrnw6hmre4t6c649szzmrgcadgyd,202075 +comdex,comdex1cq3rl6p5qrm9wcxe2afyk0qke5mwauhcgd3t8j,210107 +comdex,comdex1xhwwdnnrt9h2gm5nsq2jw3q94c35cv66ryp793,221070 +comdex,comdex12qt2tm4eh50yfnq2qlkpgzj2zassldkg4gnjm2,251707 +comdex,comdex1599krj2kyp6a3fwdzhraueku3vrctqypa4ctff,326551 +comdex,comdex1pem0egvc28cxa7ufhvxjdtvhhkshv4uasd6ea0,391690 +comdex,comdex138897rghcgukk8vumm9u2z7q950mwksaztm86c,625599 +comdex,comdex1y6x670mtd784xxp52tsuvlhmnusvy90zg6vx9q,671596 +comdex,comdex1s2nwtaqn5e3hmaaymg4c3amxu0fr4789lajh4m,1000000 +comdex,comdex16phjecw25muxjyxgft4jxmwntvx24xhc5rqdca,1000000 +comdex,comdex1wh4r5239zw0f870k2mmygg7hgu7dmj4awhg7wj,1000000 +comdex,comdex158wuez5r2ffqpjzzx5wrke36mh6wy7sfut96q7,1000000 +comdex,comdex1wxjkwhyw7uwzuevw70cn6mlea8mx4ezulfgnpx,1000000 +comdex,comdex12e0glpq08p4welepl3577pujfeqfwvq42d3cun,1000000 +comdex,comdex1x4j75zzr8jnqnvhu2lxqr9vzzucejpdlu6g7hf,1000000 +comdex,comdex1mewapalkpsc0wku98zenx6ecdaw07ez3wyrvwu,1000000 +comdex,comdex1e0c297gxwrgrsllytvd9rmvm6476m3g33lu99u,1000000 +comdex,comdex19hvhzt89umzme39n5htarkptnv3xv53fef5snj,1000000 +comdex,comdex18mwtg2c2y8scjcthzg0m0gqv73yydh2kja7daf,1000000 +comdex,comdex10tpcfhr709felnrfwut3wmxtua22pgp9y6zx0c,1000000 +comdex,comdex19g5sejtakn5g5avw8yf8x0rcelhkpfvn94n27g,1000000 +comdex,comdex1tadhnvwa0sqzwr3m60f7dsjw4ua77qsz3ptcyw,1000000 +comdex,comdex1ukx2knxzsh66cnftnrxuaxvpk33kgwaa6afj47,1000000 +comdex,comdex1tpmujzqsm5t7tznwtr2g2a4v7jyyyhg5zuphs7,1000000 +injective,inj1j08dq4wczev84dtjdqpcj5esryn0k8l764lcf3,25 +injective,inj1ecjkgc0pdahfshd3jn0guk36rwkq323sfmkt0r,25 +injective,inj1mj0wzxdmky3pwm3ur39k5n0tcpc8w6qad4cs9e,25 +injective,inj18tv92kcdz4fz8mf3gsem85mu85zz370jm0aktx,25 +injective,inj1d0v6md599vv68vxqgfrthpupwrpsjdu5ufg53t,25 +injective,inj17jkes7szfg5kx66zfh82hcpale8z4a9rted2fr,25 +injective,inj125wmx58wntd2ndpnxhcage8s40d2nweyprcppz,25 +injective,inj12z06j844a8fqhxhnpml00vjpl75yalzvetw7gj,25 +injective,inj1zlexcela2p6dskdwv0sqeadnl4uncpuxxxpfen,25 +injective,inj1snagnwpdaphyuktaj328scepgg44flfe67k82v,25 +injective,inj1xvj2nfptqfp4yg4qq2gqlxfxrm3x0myk5jnchv,26 +injective,inj12k8r7p2devsxmcdmtuvux9cndykaam5np7qc2u,26 +injective,inj1kluephvjd20s6zk7dx4perznjydfmq58tt6l4c,26 +injective,inj14yey9uq8fj52yrjdaylxjxyl53vkycljyjjeps,26 +injective,inj1agrgvxvx7up6jhqy7y2rpuelj6fuxgxe9hw3k5,26 +injective,inj1dn0wgefdm0svldd53fn0cjujvmkdpctfuua0mn,26 +injective,inj195rqyaykslsh4gnn7y06fdarhqfc6szzpy0860,26 +injective,inj17h9axexa35guygkrukx7yvjey3l6nazw24xv7h,27 +injective,inj1uwk2ylj7qgk3r8ykdh50lsufpfjv9ke4zxnjwn,27 +injective,inj1sjrs4pfyekjd95n027xzy4kg82x0a0p7mvyxft,27 +injective,inj1sxgxpwz5agpjn3kkjsaqjye93247xpr2mpp7jh,27 +injective,inj1acdsc5mrq2q6w8fq42ge42tczwl606edukqgvq,27 +injective,inj1gzxjadrtmpqke4wh5s3dsauhsdzyuz43q4e8g8,27 +injective,inj1hw50g0famswsz903yz7up2dqjdhctug8h4ucks,27 +injective,inj1zu9ckj3q7jzla6xrheum3kggjcrfmzzrsw30lt,27 +injective,inj16gu38ja4d8wwwn8wl7vyzqkj000px2mdc50f37,27 +injective,inj1xl0emkyp5ulkx4q2sw5e0la2q52chswwdsjwqj,27 +injective,inj1tu74nddsd6wnlux9e52r24hh8xplva5j7c4wsw,27 +injective,inj1w8xvf5vqltsdhlztxssynpatnd02v8u0vl33lw,28 +injective,inj1hvqlr5tv6rlazehemc4hfuqzt89addy588ft2p,28 +injective,inj1xc0xdtjkdregmpyphcnzzmtmey030xfsu8zhph,28 +injective,inj12dqwknwqdp52euj78va6e6afs5xlc69qkcdgjy,28 +injective,inj1y4zsn0tej6f34dx2zjh9lvmuxk8pklrawjzl2j,28 +injective,inj15dgxzx64lfjr8s2ccey33mmxegrmhkwgyz5hnq,28 +injective,inj1xxeg4xytl96ymgj6csch9fvlhhamhaqrax7730,28 +injective,inj168gsyqswvyqk2sq6jl3c4avshl3urv6encgshy,29 +injective,inj1476tzpd2rveucjgy2jg5lsv3qapv9rh2yquvlh,29 +injective,inj1kja54qfsvnlldw4wvr783dy25lyx5vvfx6eg6c,29 +injective,inj1x63jky0yv0xsd0h65wz97fvrh56725k596jpfm,29 +injective,inj1rau5f2heh8ppmhyw4d6fzuupnrlz525s9z2zyr,30 +injective,inj1elv7f3ejf09gmuaar6xv7p5qmgc5hv280clw0e,30 +injective,inj1szkh237c0x4sfq0d5sum7pg5uq4ses4ejytp48,30 +injective,inj1hxmz8qyhymtkz8l3csd8dmu70vr7jwq8j9tmfk,30 +injective,inj13c0m2t3hmaqp43rw0t97utvy5dc7ckte8f9tea,30 +injective,inj1wmglsz63qcp6rgme5fxw7u3vrqnp3hxqc5lcjj,30 +injective,inj1rt82jrvuudst33vqv29mus6gc7w6mrj0rdnqag,30 +injective,inj19um7vljs78v0ps2e73dpqeplgxezkxmhfu7nnd,30 +injective,inj1atrv8t58dl6zjrd6mgyk7waxsw5e999jdfevuy,30 +injective,inj1kp7n5lyvs3a5z57rn9w0gm9dq8ug6qxsyskmah,30 +injective,inj1dd7rrpr87sy6tte0p2wsjah00dedy2nzlhhcyl,30 +injective,inj1j0j8xkzqhffgk55yu593fkna56s7k638sjsfp7,30 +injective,inj1hzqr6ppp7f7rcls5d27xqndf6j6mysx7qanseh,30 +injective,inj1qczqzk8em5qlkmx8rtveajz5cxj6d8hfv8mwks,31 +injective,inj12h99d3nvutasy7gr7lg78zn4fcwh0n743gpypz,31 +injective,inj1f56204afe50884lfh46c0f6nw9d35p7uu46lwx,31 +injective,inj1dla04adlxke6t4lvt20xdxc9jh3ed609dewter,32 +injective,inj1fal0cxxf3qteuv8w9kvelxk3sv4flfrmjvt976,32 +injective,inj1yujgjr6kqjvkv0xdpm8v0mtv8x6s39t508884p,32 +injective,inj14y37a9rhx5dv938ctas3m3yfqwrm7ltjzd34r6,32 +injective,inj1f2nqjkd32u0x97dn2wfhc0j9j78aqacnutmdtr,33 +injective,inj14q72j70aw5jtk0cmcqhauj4shpxyv2aaagkg6n,33 +injective,inj16ucmz35v2nakmtke95pvefa8wkejc424zpm2gr,33 +injective,inj1l9pr046t7d0289z7pxy2tgpzerwe7v9aymqzx2,33 +injective,inj10869vf4gnara8eylulyu7f8n230c2fkr9ss66t,34 +injective,inj1vw4q4zlf0ed94f0u8qdunxlpw5vylnwjjw9yl9,34 +injective,inj1qn9uhafm5hj85hde95f6majym9t8w8nl3n9jdq,34 +injective,inj1vn7jlx3xssnx53gchn9kwcyfgcx6s9dedatvje,34 +injective,inj1q6u95hc8qt0xd8pqqw6hfulj9wvv4vyws0wsjs,34 +injective,inj1xx4sg6uxzrhcqdsrgehfrag9z65cqc9knxlayh,34 +injective,inj15fr5dj0ran9xfuql0pg3w58x2k0k7jvhhqrzdl,34 +injective,inj15gnh7jh8ucuqmepxlge5kpw5e6ee7828tsu265,35 +injective,inj1h3wrxu9wj2wp4ssged8xpdkxmwrevxyarxth48,35 +injective,inj1t4yft57f920ur2l22mtjrtla09thgzvg97mytm,35 +injective,inj19edj0fhwy9kfpah590l2m47dykyguklr47zedn,35 +injective,inj14n3a5e7rqfqc879ax3ghsg4ejjrwrvqrgmk2v0,35 +injective,inj1nf8kpjw4hx24al6lrqq54rl55jzpx8jrfxv3ge,35 +injective,inj1amdwn5hfalkmjhaa0jgwzyheca0ufgpp2q3mau,35 +injective,inj1kqz0nvzcecakj2cn4r008smgzqract0u25ellv,35 +injective,inj17m3eslauushr9fj3agla5a6w4cd27tnquekynx,35 +injective,inj1uvdrel4es6a8qk0k65jl5qdcmfhh7tdf2sd5jc,36 +injective,inj1qar5m8xl80swf68w7wtn27he20nmefl205w95x,36 +injective,inj1ydwtrp0vqs2z02umy2mvz3xswshnsvj58kw8pg,36 +injective,inj1nw3w43sy6qhr2udhcvafueqr7r876ng9jgknhn,36 +injective,inj1g93nlhd0sv6300tt4cxyuddkc4djgqah9cse25,37 +injective,inj1nuj7z8sd4safn52hqmteqttqlwexujkzr0npm7,37 +injective,inj178t66eumzhd2fdgyr6sztq74zrkltxd3jwrh28,37 +injective,inj1wfp3jk56zpy64g9n5hl5vxupdak0p8trzef79m,38 +injective,inj1d7j5gum580z3a5eu2s6gzyt5tn8avrheurvrsa,38 +injective,inj18fz90xz6cm20j7dwyzfc6w6jkygy9cr5esgkzl,38 +injective,inj1meeydf90wjrzs2r8ljgkcqzhuy38za2dm6cmam,39 +injective,inj127uwdlv0aw4dgwmtlehc3nywcltpacn6l54wgn,39 +injective,inj16a32p6y2tmwk58f2fyyy4neaqnzdgd8zgmsqmy,39 +injective,inj12fvzvtlrhppha67jln2jnlry4hsp6s9ej77kz2,39 +injective,inj108q79mu27w8uvhzc05dhe30u7n8gqqc56whjmz,40 +injective,inj1kck6vdxq66x70mdsv5d4wljtl2f62qx9d69wme,40 +injective,inj16gtymr6hluxje7txtc8enjvhvalml2c7ctesc8,40 +injective,inj1dq5l2ufj0nny2p2daefvje6hmzuyd8y02amnmd,40 +injective,inj1vx2fzsuhnk7ny9sqhwf5dm2953kvhrwj499xqr,40 +injective,inj1e6mf2q3ddmajax722lqfwehxcvwcr6pq7r3kg4,40 +injective,inj1387wm6pdwntcwsr03sjjjmq7lz0av8vhvctqku,40 +injective,inj1vksd0gf7k3ussajcucm24qw6zf06hn5ed3ng9z,40 +injective,inj1s4dwrv08jqlvskll5gy4cmjyu4eylakeqqe36v,41 +injective,inj10ysrluzkjazqf9nat4cj94u7x8ug3s0army6e4,41 +injective,inj1ldr2cd9cl2ed7c7frc4nhv2dj7nrl8mdffyajg,41 +injective,inj1pyjusc87t7zx0wnaa7h9wc3sqztpwm97ems609,41 +injective,inj1uyf406zhkppz25vpmsvzq62npktdmtsyuyrpdm,41 +injective,inj1a2e0jhv7wnnmxaw2l7hc5nsmhtu6u3jk627q7l,41 +injective,inj1tjr7c0z5t2zzu4eudy4ycsmtezs98kw4nj0dk4,41 +injective,inj16l443sl5hrldapgsjc8k6u6fjuqfdngdr849cp,41 +injective,inj1vuzl23eqyqc0d3wdkk2u0f96zf9m7x2l8lxxdj,41 +injective,inj1h4wfh7jgrewnsgm99z99nlwy3jeaxkw2y44n05,42 +injective,inj172av9hd3yr2qlu7ysmxxqzpcc3jq84cddnngwc,42 +injective,inj1xawzcf7txqareyq900v6thuaawz4qqe7cwk2z9,42 +injective,inj1m3a0sjl4x3n7gmepmghvygj2xjf3099vf0puy3,43 +injective,inj10j5u9qtrkl8wy9qsegdwpsqqywevgzw6szk8s4,43 +injective,inj1c808wlkhmy3jtt5pk85w5ryl50fh2mr0czfc59,44 +injective,inj1tpzu22s7retcrsuvf60lyrqnnnl5teyuatnc0n,44 +injective,inj106vn8gfdc6hf9ln955jchy7vpkas86jad0vwrw,44 +injective,inj1wrmjh2arlamftj8jm4nvhqn4qglrjw8plv7043,44 +injective,inj1aa07dfghfyg48xzu80da3frdlg23j9c0ftt2as,44 +injective,inj10dv7yuja33zs4kks55ygj8xfv327kw909cd5z4,44 +injective,inj123hrdfe6prekrwr5y24474fc5xxhutq87tygff,44 +injective,inj1k8pg6ttsl6982tcc057svyzr6qajp6j8ewxjh9,44 +injective,inj1ttcys8jf49h7uvq9kazlspvdffjsjmtkx0gjmu,45 +injective,inj1a8m6z60yglxalgrrrfgcg0a690na0y9633tp78,45 +injective,inj168cyv86eq8g6ecmnhwfxpsqeyamzxdu7gjxa4t,45 +injective,inj1p40yzm6tejcgcq6qczgnsgedf7gcev9vrucl2a,45 +injective,inj1srvk6yat4l5u73jmsypu40svuvwtcd79paujyj,45 +injective,inj1kcr9jclfl0k4rlx3wg4shd7hvu6axf5utzk6pk,45 +injective,inj18tahtffmutghvskllzyukpxyzpwkxkslhxpmv4,45 +injective,inj17qmkra3xp3myryne3lh9xddjhw0qguypxanwp3,45 +injective,inj12ed3c0axgnj9tydm5l3ej9xw66g6t9z9ts6lf0,45 +injective,inj179crey6u340ujkuw83mgdly8x6f4rs736kjk2j,45 +injective,inj1mjd8gv79fjv6cmjwjpf93eypzu3qcxs4fh70ep,46 +injective,inj1t7n0rxw6m3dzq9nugrq6jfsm90a3cylrvq7tgs,46 +injective,inj1frru8scjmpeph7s3lgeazq8lu44mpfgzmj96kg,46 +injective,inj1eph7fvte4kl8w5xystvqt32n3d9u6nh7e7ld4m,46 +injective,inj1w7a6slwfut33gyent7kndvn2dddzdurllgumyl,46 +injective,inj1q42tsc92m6drhr8enc00fhfd7s6cw53z5jmxl6,46 +injective,inj1leh4rsrtvxm5qa52h0zdjs92a6ldd69xgzanlt,46 +injective,inj15f2u5evy22gnrqsxwje0esa96ckdgkjvsnkg7z,47 +injective,inj1csm8ewtk8ymehncj9xtsxjphhxhkxzcmucnhac,47 +injective,inj1wuqyju3phn8e0eccmhf9z2hl4yv8h508tx2vq0,47 +injective,inj1hxukwz8pwna7vul6hjxd63jdcwqzqy3yuew555,47 +injective,inj1zs0ja4d0383xucxe56mptdrvdxdwyug3kt068x,47 +injective,inj1ve08v3yf5wq6ugnecr5vuek34pl8jen290ej0k,47 +injective,inj13ev53em5chdyyhhx7emr0zugmvf76ny0g6wd8y,47 +injective,inj1ldmywqxqjgatkrzky24dt5smyaats55ju3rxy0,48 +injective,inj16xvft9k729v7ls50hmnsvx60649sm3c33hkwga,48 +injective,inj1rl7s8z0rjphcwelyutmqw98qfal4wn033ufxzd,48 +injective,inj12nr0fe6llg33683d24zn8ftvn0q3mm4eh7v5ky,48 +injective,inj1kuxtzdv6tkxwleemnvkyvgspaugjxtmth0jap8,48 +injective,inj17ej4urultj9h6ldrmehh3nlphqu5aq2gnupl35,48 +injective,inj19vhdf8tyyavmv0s4m06h3pucj84nq7ynrs3agg,48 +injective,inj1rjgj4lz7rwfzpvs27tc3x7d7m3krgq8a2dcmvd,49 +injective,inj17cp3p6jcay9rrxp37hzr6tzga92hwgmndrwvnk,49 +injective,inj1fyhs6hv4m8jfxee8v2wfyvdg6dny3w7fjyrcdc,49 +injective,inj1fpc0dr4lfvr3af5xhycxhq8c4n4a8vuk3uzsr4,49 +injective,inj15nv6w4p3y82t4mfuu58ly4sevkpzyl50yyszut,49 +injective,inj13kadlavsh4mtutcpstezpjqrw83hf90qyhq32w,49 +injective,inj15zg5cgrtu52yjd6tvgr05jcxcaz535h79a0eeu,49 +injective,inj10t5an7m8twz2thu5y90r9e2l5z0vt72wg66vs0,50 +injective,inj1xpv6afsprkpmlhed576zn8d96qxs7y3hpreleh,50 +injective,inj102rjqhcld4lk2f2tmnfn8knjgkckur7249a4ef,50 +injective,inj1exespgkfzvj82d72fwq9g7c68nv7dp323gzv2m,50 +injective,inj1455gfu5yz0v44c6ft0jdzu8p4qmqe5a77pgwq2,50 +injective,inj1ekf52u5j8urms9hq604lpst6y04dqy5j04jyjp,50 +injective,inj169ssn9eec42md574u4ju64wywrhyxrcwz33c7j,50 +injective,inj1kh3cd4kxxlsarzcrrs0kdf9539a6jru6kdkq74,50 +injective,inj17e080hrxlrtzu8ke0f4zna4850vu69n33ejs2v,50 +injective,inj1t9g5pskg5wn7xefzr87s6nvd8z94t0488xr8t5,50 +injective,inj186jr7mtq3tsvj99zgkcf7e7yqjd69npqs9zmq6,50 +injective,inj10zt62xn68fwtx26lmmkc5825kp7c6a9j6phneu,50 +injective,inj16yhjurn927psj06qytecu4fhgfrxfsuu27h0c7,50 +injective,inj1rqqpyuka5dxulzjslnzjld2ltcw5095r5f88w6,50 +injective,inj14uhsqnvua7wya42d0fjyq7efuvj7enhpmwhsng,50 +injective,inj1waav6vss6uhatat3pw6uad8lpjx6p5fzv7ftyg,50 +injective,inj1px8p3mkn87zug04l26knmw0gpj2usv00qwfna7,50 +injective,inj1sanvrvj8la9ytyqx28vtxmh0fndw0nsvxnqk0h,50 +injective,inj13hakd7mulg5uj7v5uhzp2h7d6kyt76rhw5tw25,50 +injective,inj1pn3t530avjc36gyzck0vqksl904nz9ewqvcwj8,50 +injective,inj1tzu4y4h292hrszv8l55767l8dt0mcpckt6vx86,50 +injective,inj1gkjjlxau9n3tw7t9f3klks8afgv504w6tlwcdw,50 +injective,inj1wdxw0mczr2rzu6d8g886d9zcmj3753ju7385mu,50 +injective,inj1uxcz589tpdgn4thfd60yfz23hxpz9jg4j7nq6y,51 +injective,inj1048ng5rdms75e8whg8hwjs9p9hurmkymylxrnd,51 +injective,inj1qcg8zjlprujw797res9sg3pm6w9auqkyftl0aw,51 +injective,inj1aah23mumwdcxkuu5fsc5xpnnc3jzqhhf97s049,51 +injective,inj195rx35kjr97k4493sxtpfugaqqw8j2m6rs2crp,51 +injective,inj1f8jhdyfkprpwmmx786nepwtljtv0nfx9ymct4n,52 +injective,inj1kcw46w7lzd593vw7hxxt6zgtj93ceapgqaqtyq,52 +injective,inj1zq8cqw9lmly8rk0077wneuql78f87smqj4nxxp,52 +injective,inj1nhzhd03w63dnhppn3y0fxwyhmcjg557d7lgvl0,52 +injective,inj1yes4xvpu6tnefxq22sq25duwd3xaczajajm45z,52 +injective,inj1wdjez6trx7pfkf2zsqglxqxp3ul70lmlyyl6wg,52 +injective,inj1dpd4vg7mqh3znzkhg5fyusj7tjxxslkmegh7cy,52 +injective,inj1c72mj7png2vfetyvhzcphk8y8afehyst66ayd2,52 +injective,inj1lt7x4jkesayr32neze7v332m7s7hzwauyjjf7v,53 +injective,inj143qtgwpc4z6u4ydp6l37qqzjvgr6a7f4eaej0k,53 +injective,inj1ayz43eufvn0k0f5cv673mquv9k3fvccpgfqls0,53 +injective,inj1wxq7rf04vfdrn5t9mlrphfx7g6yuqwgq4x0f5l,53 +injective,inj1j4qcyfayj64nyzl4lhlacuz62zak5uz5ngc576,54 +injective,inj1x9uswayjlzj2t25tpt7szeh4vuqgea2dsdpn79,54 +injective,inj1eh9q0hhddkns73s2mzk89tcw48q9g7vma989z9,54 +injective,inj17yvpwf72k6uh2sephr7r7s8fns7667f9jlws0y,54 +injective,inj1737pyqac36n9kgh8k2gtser8ge92cysx9s5sgy,55 +injective,inj1h7hsmrlh7u8u9uf7muxjysr2afdylg2k0amwwm,55 +injective,inj1094wqac3kcvevjavvh4pmyzh6d7l6r3papryny,55 +injective,inj1dhyq7s670h8e5thwryqu2g65gdke4vfxr0k2qu,55 +injective,inj17hnzjmtpyna77cxlfdlx7e0rx972pq6j6k28uf,55 +injective,inj1crdsuscmjqv6d2zgqzk3dkxml48lec9dv4hgjn,55 +injective,inj1qz32dsydpm2zykslhnyg8ccp849v7gwxt0vs50,55 +injective,inj1kql6f0m4kpl3z4y5uql4vnul7lpm4rw75hec4c,55 +injective,inj1re68ge6k238tgvrlq55egr6ph7cxngdpsj57t0,55 +injective,inj1rfzhqrq5637l6quesy2vads9tqpfkxz06ckg08,56 +injective,inj1rppu85wa8cjkf7k636jshdecr8rt2vz8r3v7nw,56 +injective,inj1pzrvsm3ajzrwf9vkglpqrhk8qugg6lq5e768js,56 +injective,inj1qghn92cqzg6hrv9y0lryl8dxuy2f37rr5cxwmh,56 +injective,inj1rmp8uw03us9t0neut6n7juf6xjkxf0rhwkeq9c,56 +injective,inj1eghqh2638crg6t9afl5lsv9d7wtexlsrdz00k3,57 +injective,inj18ghs0yfpzrf8qy8e0f2nnpqjhwxc2kh2zngr7q,57 +injective,inj18dx27n0hcstmfvg6fve9kqn8gq0ytdaeejvccl,57 +injective,inj1my8l48jdpwdmpj4pl6l3nknmlscxyrkvuslrwf,57 +injective,inj1drsqh6hveysyx44809d8hv7l6zfle28tyvjtf0,58 +injective,inj12g557gz7vvy464nrgf72ce6xpysn8k63ys6xc2,58 +injective,inj1jtcgcgavrr20757ngw2q6lpuf4dh09yx2xu9fw,58 +injective,inj16tzxkymwyk0qxyplc0zjhfpq3tnkhm5wvmj9jy,58 +injective,inj19fnj0qdzphauumnjed82ef6zewz6qu9qphns4q,58 +injective,inj1tlcnfnad96h8hcvzdkrpggynqlkhxdkdu9zvgx,59 +injective,inj1t3cxs53vqnh9yhrsy9yfwnw0lgnmtpglta0m80,59 +injective,inj1wlt7kdkxmedtdrakfrh87txzxjq6nwzmu8kqtx,59 +injective,inj1hl3ezanftfws97e8xx9n2le95pykmezsn2vt34,59 +injective,inj165v20fc9u50pf2hcamvv9efrvrcxkqt8eux2lj,60 +injective,inj1jk7uc7rs75wrfkfcdstt5n06ajfqklh0ms8kas,60 +injective,inj1jlu5w47k8eyt97st34lwy8mqscf4ve4f4y3dmp,60 +injective,inj169ulmn0cskfam3xepm6xv437h0at4hq2zpunlk,60 +injective,inj1pjlcjw0eqea3grd0urqqvp50fygwx9mzdxzfpk,60 +injective,inj1qqyqqqq432vnpt44pzprzqas49m3v8z8krcchm,60 +injective,inj1caplxhdw7hjjnmanc3qe2ue5s30ya4h0am9wgq,60 +injective,inj1yyn2w60d3e4nphsgcqm8puelatuzvw8sn2jnt2,60 +injective,inj1jn6qj6a0zjx530ylajt67zjdgxx7kq9jdq2e6m,60 +injective,inj1tmfrp3dd4xyzppp6krdj6nuycysr7dwmuvuja8,60 +injective,inj1pg80sqgenhaakrqlgcsxfns3j8u7s5h8jh5wja,60 +injective,inj1d3lugsefww4qawmkde9qcgjgqlef59xd24zvu7,61 +injective,inj10yarksy2pwa9k7n2esu6vjn7e8jzk9x0v2nffk,61 +injective,inj1x2tmretr4r5d4s0lck98c7mga3rgy59wsxtghs,61 +injective,inj18cytqyvct7e9mp6ngs7s8syp0sm55wq86ae3ex,61 +injective,inj15exae7xpyxqvphj28xvk59fa22kfyfp5a2e7q5,61 +injective,inj193pkg3848jzdqnw3dvymcn2t6wm6ww774frymc,61 +injective,inj1nznah3sm67z2t3ndeew29vqe2quyh8vaa6z0tg,61 +injective,inj1m80njtsymhlkv264lxr6hn2w43rhrmjelzq844,62 +injective,inj12yp8wt8wz65mhd8fktkxx9272w7wstv7smhj72,62 +injective,inj1njsttnqa4nqp3rwvpa6crlujkgl2yax6qm3jxz,62 +injective,inj1n0xh3tssjewz3mgavrcevwk4tuj9h56nyqhn2z,62 +injective,inj13t44sdwe9nlf8m0807khey7tz7edjgcmtswvg6,62 +injective,inj1ekaq5ajkm2pcvyrmfefvt0mpf2alas2rmjvzrx,63 +injective,inj1q0e9uxhsdefe5rqtswgwk44n7nfav4th87u7ze,63 +injective,inj1v7gjhsktqv542jdsuzym59q3as3m9k9mtvfg3l,63 +injective,inj137wetxkauhc7nfckdmhvs7kdg0x8220eqqehq9,63 +injective,inj136nh5wqlm6r4kh2dq7vm7ksnc6dsg6f2hvz3rp,63 +injective,inj1uqwfnwar83f6k0j6e376mqzw7eytgdhdhnmm82,63 +injective,inj1q9m2kldpjgudx8lr6mccg098qnr8sf8hfjr4ym,63 +injective,inj1k84ha68rl4r0wrka5tmsh9u5qn5qze53833230,63 +injective,inj1j8y4r03l60q8hkk4au60s88vy2m7zajhfv5h2p,63 +injective,inj1llxc5ut8xy3pv6sf3m2h23vfh6vcq3xg07xsev,64 +injective,inj127xtykwuljga7j0hjjpscmlxlnt53pv9sqdlle,64 +injective,inj1dzrxe9k2qq2mxp0q68wyskjkkal5kek8zy7pvk,65 +injective,inj15uudanl3sds7y5tf9f2uz4v62whuc0tx6g34x3,65 +injective,inj1jguvg665f57sr0sfrul654f6l0jdqt2rseq5r9,65 +injective,inj1xnneljprvdphemc5urewjk3j8yq4mmgdr8mgsk,65 +injective,inj1q6la99wkyg3y4zfe7z5adgyzehf43fd2hnafxe,66 +injective,inj18e44jqnv2277ujkhpv5uj76ffygus950mrf9p3,66 +injective,inj1cmz864q5c8vc77p6p6479qs96kde4yh3lp0253,66 +injective,inj1r44tp3dad0a0juf2kmuxglzfe3eqyxcp7kklqa,66 +injective,inj1c6qrve7lauuszlcfcwkngz0usx2l6qtkcypnr4,67 +injective,inj1849jzhk36c4z23z0znyh9t9cx6ta0gmh83pew6,67 +injective,inj1p7gvv780asachup823wkxfutdayneux82ppywd,67 +injective,inj1yg88wrctpexcgfpke2qqtnpuh4k3zu2kuvll44,67 +injective,inj1aj9n5m8qx4skpyxjqgjvgsps7eyq6ldfksv2th,68 +injective,inj1u3v5t5jnjadvpztv86pu07x2de97npefeeherw,68 +injective,inj1g6e0q49rnkuswkc8gcm28qh0rp5p95jj5wdt7l,68 +injective,inj1ygpyednm4qf2cmkgf78plc3yrj0vuqm4z5am26,69 +injective,inj1ef4w5jgkta0x63kw6up5pvg6grznc89tswc3tj,70 +injective,inj1c8n5wz4h3kddf8ksqkmvlrpf60y7vlxt6hfma4,70 +injective,inj1saxh9ns8e97tnxun76xz3ex0g3zk2wwq4a99tl,71 +injective,inj1rwayqssdjg0gf6luje46zw2sfkkhgg392yk8yj,71 +injective,inj1q2r7ag47a89hj3n5xh3x5g6q3wnxzkxhjt2dev,71 +injective,inj1ptr7ntejgg4vt95xyfv9sghymz002y6r2j04c6,71 +injective,inj14cpy4gmjggyytcnd3eel58w0nz5skprzewern4,72 +injective,inj1n67hk3qtlm8xndnte97k2umfc2de2y2vmjc07y,72 +injective,inj1cgke4wxhvrqfmj33fc67gj3lygchr89nyxxfp7,73 +injective,inj184ek9tf2mh2j4r6x200rsflr92qlz99vg92wwl,73 +injective,inj1n9fk0c5hp789zsvntnw40vkf3t0ga49udh2kp5,73 +injective,inj16jj7dpdsvp0w6sawre9r9n0qfcd8yts0nathtp,73 +injective,inj1ag9yelsa23g8sej3rgy9kqx9gwevlj8fgvn5a4,73 +injective,inj1e3du60lsge0tyt2td5rpf8vkf27w7s6tsd60yw,74 +injective,inj1mkf8327eyczglcd44guwvq4trgywgzqd54ehsn,74 +injective,inj1d039mcjtx223h55ygzx0w8cv7kpz580v5pklxu,74 +injective,inj14k7ajd3v332zjfjzvjeeax952unnyjapcu3f96,74 +injective,inj1qjsjpnm8a3tk6sv7p70jqkuqa6qmckqujd8d9f,74 +injective,inj1tly0qyahfpe53jkrxem9lmfcr3f2mmxtlelnru,75 +injective,inj12a76vuu8w5kkwsgr00axalu87sdlm9ndfd4ndn,75 +injective,inj162annf9czhx9zwls637mkpytep77m3u9ce3vws,75 +injective,inj16p86sx4xfay0kqh4r4rd0szur6gqevyk6z53w5,75 +injective,inj14s52v8qgcjtcxhz259xqs2fgf4zxm8z4zyqskn,75 +injective,inj13al8wm80y3gak3an9482mlglu6jvccfmak5n7x,76 +injective,inj1zr5rumgx275p94x0r5xa6hetmgkzk26cfdarqg,76 +injective,inj15tdve0uv7gjrcujzvr9h99edyphjljazjefetv,76 +injective,inj12nnq6t9dua35prxcd6f6wjh6hutaeh839x07er,76 +injective,inj12t7t7vztyelkpyfdx3dms27r7374k3wl8m3dra,76 +injective,inj1jl99fw4p5jwx8mcn49wp8lvnaukehyusge5edw,77 +injective,inj19tx6fghqc6l69gfz53ma3qduwdwgjjl29luqkh,77 +injective,inj143c5u5yg4fznfuf90c47yygv0edvvjcz56eg50,77 +injective,inj1u92gldt2g7sgmq4wvlzcd4ypn7zk82ehsgc4gj,77 +injective,inj1dern4p5yekf8c7v02y2lcpdh3scn4mpwmqme3s,78 +injective,inj1hem3hs6fsugvx65ry43hpcth55snyy8x4c5s89,78 +injective,inj1y7h9jt6zxaqz4x8e8e8gltx3s8tfrdh2dgtz54,78 +injective,inj1z88yxvl4dldz473xxgrdg0suqrzvufrey089rj,78 +injective,inj12k22rjmgpkjsl2puqlqvqwd2mwgx3ntfncfq0s,79 +injective,inj1g0mr76jmltvn5qgk5sxamuek88gfsq69y2qz0p,79 +injective,inj1sf0wkx200fj7kd8p9s0ddwymj78dumjy3eptf2,79 +injective,inj1n2e0cz75wkxldgv85t8fd0l0vq3ngefnvulqhw,80 +injective,inj10r4c6kp2asc5aufea64a5q4gna9sxqwm2u6nfn,80 +injective,inj1ag2jaupqkqzsgmqgsdsnqhtephf0vkn93f4e80,81 +injective,inj1rhg7mym3wdv4nw4xstdk7aqfca99qrspqz2jjq,81 +injective,inj1jl5zfqkn76l9r5y68hyqqck5pdykv2dus9x8xy,82 +injective,inj1p32m6twvr8wve2k7hc3j0l3dpxadmznz9q9d9y,82 +injective,inj1w2nh82kup6fgeyjg4ecjvqfqumnnh4z8hm8dwx,82 +injective,inj1h23h5c054z8yq33237j3xlu7df3sa0k88fg25w,82 +injective,inj1uht4u28lxwqas8j6uyul6mw6hjff4s4uy0892n,83 +injective,inj15rcd6tm9xxyu994xzuqtf83uc3dg0ffd5tsgft,83 +injective,inj1z35rl7ahh4lf9ptxwhgrxk8av8al7w9pqmlxdp,83 +injective,inj189wscrfxgz49pne6pcsj3fnwgkx3l30ah9xfwa,83 +injective,inj1ep56zwyu4v6eg96l0gqhujun9j0fsfp5e838q2,83 +injective,inj1smp0crz2mzh3x570ykz8ywmw8jvc60wc5wxzhj,84 +injective,inj1a690m3tqutta0hvepek4y4wzkghr6n9337aa8s,84 +injective,inj1czfvnxtfqgyydqu4jmsnfujhxz0e67ju9umr7k,84 +injective,inj1gqft02q6955kdarv4zdkll5nvap9lla28tn5g2,84 +injective,inj1h89ayavfk3e00ky0lhlfjxmqvn60lsj8kux7u7,85 +injective,inj1nexwvvyzca8ht7u034205v2e9mtqyy75knl588,85 +injective,inj18hrp7se39k3s94s797x9ngmuffjctasvz053yz,85 +injective,inj1t8q5csden4gq3w3vflrx4tjj5g58naz7t3pz3m,85 +injective,inj1kw7hyzvjwq9cxwsdj3wukfn2xmyqm2pdg6f68w,86 +injective,inj1c4y0yjts6g4d4txd9fr5es8zg0nhtdcy8g7elq,86 +injective,inj1sg3ar8kr78unc8c2gdjuxzqsgj8aj5mtdanr30,87 +injective,inj1ahp9qju0l6yehw3jnt8qdn7fd8alyhcxc7vuaa,87 +injective,inj1xe3vgu5rpzaevpwp7t6v3km35paa5pl3lrwa33,87 +injective,inj1vupygqfwzn5qw9ct08fgqw97uesgm0wff9cktv,88 +injective,inj13cfuk442jvewnkzff0yqap9kgy8vf5mktse990,89 +injective,inj1tc0ksenfzyzy94py2yv3nd3hh4p3ewkazmrawf,89 +injective,inj1l4t9zz6lxp0yqu95zjtty54l2yc575nqqcwzm6,90 +injective,inj12s9d7l53ef2c8avrn7pgd6dfeeg2yzelrphwgz,90 +injective,inj1zaahxq8my6nqvp64flacugxdyxp6tmm88dyjzx,90 +injective,inj1w3psm8a9td2qz06s46cxss03mz5umxaxwwejk5,90 +injective,inj1reze5rhtzgd4lkkylppzpeg6cysyt7q4af7t0s,90 +injective,inj18gyv483689x8h9rmnjjkfylrs9m0xs5v34284d,90 +injective,inj1ffsdugrhfzdyxltjve8v68n6aazyc6p9f6zvjt,90 +injective,inj1xnaddzjzml9uw88cruyljm93v8quexns2g7x5k,90 +injective,inj1lsuqpgm8kgwpq96ewyew26xnfwyn3lh3y7knzj,90 +injective,inj15skn9dgzw4q460gze8egh4w3xy8jk4wrszhclr,90 +injective,inj1n0uu9a8rav30kdewyptcqgxnf606smr4mj8hdq,91 +injective,inj1uad04xzauncp8tx0ez6d6az928rwaddfyv6ayt,91 +injective,inj1rr4v2ltnv8ngphhxxj724w0n5qw4h9e5ldgpje,92 +injective,inj1nym9fxjr8ctehrgk5khzvyyt3edx2nhdegx6d4,92 +injective,inj1vw28qwgxc20m0nsly55scshyrm47kcsr5ncpw4,93 +injective,inj1zjjw8p4llg4uee4hqwe04kat4haf734wwwdxt3,93 +injective,inj1cs4dafk0pke4je4w8pst8wu2jcvytxjrx78hfl,94 +injective,inj1rcx9a9a0kgem0jsaffaxk33nxllv3k559jhsxu,94 +injective,inj1wdujz2l0vtg5yg99hq39q9jhzu8dz23v7mlv5l,94 +injective,inj10gwe3at9zh6r9nktawwxhgnd6jvaxg769ecwzr,94 +injective,inj1zna3mmdhsh3jah3kx63ucqpsq4yh5yck0tpu4x,94 +injective,inj1yfulsq064qjk47cnulmzgpmpu89lx8h565cg6l,95 +injective,inj18fkvs9a8pyae040kan8vvcysnhmqnaknqq88c2,96 +injective,inj169jyz79cp7y7kgw3rkem0llg80qsrr3pqj6wnl,96 +injective,inj1jwar24kmnsva5tscvryatwcsxrkcneqmynsfxu,96 +injective,inj18xl9gpl324hmm8v4jathf6fc37a6lujlvsa4mu,96 +injective,inj1cghnl8lxukklw9relmmwyjull87c50ntptq6vw,96 +injective,inj102q6899y06ye8m9776h8agnyxvgy3v44qqa75d,97 +injective,inj1rzg5f7ndvn44q4guaj9g68rlrxk2mldks46cwq,97 +injective,inj1crrhrzx5hmypg259vud9cacugt9x9qszdak3ga,97 +injective,inj1gkkjgejlnk5c0rp5rcnfl8zxyf7a3tsw3tcfs7,97 +injective,inj10tfs67nrr4ugakjlw5jflz9hcn0yrmq38ugklw,98 +injective,inj1w52hwnwye8dl9ejdawj9722p38e29fntpc67fa,98 +injective,inj1mjmuq0qxlhnewm0969umgn5rv72zlwx45nv098,98 +injective,inj124u2ge4q2dg5nrczrh9eaqm42fvqaksckau7w5,98 +injective,inj134ermfyf0mrh59jza38mp4lqttahr0hgvm2et8,98 +injective,inj1jjsdt938933gk8teslmg4c8wuk6vehrshyd38p,98 +injective,inj1rvqzf9u2uxttmshn302anlknfgsatrh5mcu6la,99 +injective,inj1ljjdp30pp2n3v7zlq4pdz8eyzk2cnqcqhyhf47,99 +injective,inj1nvg4mgz0myya3xchmcdk5lfchaw89lhg4846f0,99 +injective,inj14fpyrr9hch4yqavhhp0alr7mtsx4jljnhteyan,99 +injective,inj1cwjs08v39sapnvq83ju02va34dqje0hrhefkce,99 +injective,inj17xp6gdz282gremw5ppeaqk66ry6h6qak5t9asr,99 +injective,inj1cwzl3q4h5v8yvzlp64h7fwnduzut3f4n8dldv9,100 +injective,inj1grvjezy8dsde84sfvnjcsuplexh6m6k5n9rmeu,100 +injective,inj149cec0falyhty87plh4skd7pt3w6c3a9dx9nae,100 +injective,inj1r5tn8ceamk37h7pclpgq5ssk4t0qv4lfagzf7y,100 +injective,inj1jfj6qxsx9g208ac48uprlxczcnq7af6qhnedfw,100 +injective,inj1pl8hyresn8gn0660y9letsjw5wawy74kxn7rp4,100 +injective,inj1ktht7trenn6u45vsf522g9uqqafnq89mx0cufd,100 +injective,inj1tjyyg6ypgtt6n39qxs8xkw9f8uuglgyfw6mqhz,100 +injective,inj1zugqwxtz9tez72837wvw7y3p58ak6d8v49lyg7,100 +injective,inj199tgs4jfsdw8mgtaq0pslg4qe8dgmmrxwggmut,100 +injective,inj1ssk757vua4r34u0n0cplrcc4amel4flx45axxt,100 +injective,inj1k2gzqysuvctclzveuc4lzgjqu0k54xh7mhfcua,100 +injective,inj1zu5kt52j43zdsytjjscdhkqmmcsvlryjmn9hxe,100 +injective,inj1zkhp2rtacq7nkc67ay9c2gvahls8rmf4fp20my,100 +injective,inj1dq63d94u3x5h6yjgd2jathtgu8nk36jxhxga70,100 +injective,inj1kghjn7nykprcmtyvegylmzf50422l9agqu78dj,100 +injective,inj1zg2p8lxax507nwgk2yr9xud4nueykz7es26024,100 +injective,inj1faq7h4w8aapaw9zudsar3ynwgaehx7k8qvk8z5,100 +injective,inj1nnwn7wy6hm3pymkaam0dezrqsnudn8sn3dyk8y,100 +injective,inj150kxrtljg8q8w68v6aq2qcqhvqrsc90fjnerl8,100 +injective,inj1ajadj8wkjjn7hfjsqrgewcduc2zttvq2w8ph0a,100 +injective,inj19aecg59phh7e686lelxgshd64rwwec0fssfnju,100 +injective,inj1lj78rh6fawyenwu05gq2ek3teglu5dfmaw7fzx,100 +injective,inj1k0qsgcaxtxwzw7qzsaqdjw8akk628g9v0x303m,100 +injective,inj1nv7dwte44sekwj4zlzcwg39e6szueyzn4cfenp,100 +injective,inj1td4l5wujx5gw5k60t3vkrlcxrxtajxp8x4gn9k,100 +injective,inj1t5zlmvewgwse0d289g5t69ghxa7vsht0jtd6ay,100 +injective,inj10ytuw5qm5jelwaegmf7tuu6mz0247el4h95twj,100 +injective,inj18n7qv33jhuefkjukkz57pn9sja6fq9r0dg2eur,100 +injective,inj1g03mhg3stc9g3qw35dq6rp2yf25gpplp0ltqec,100 +injective,inj1fke8uyp2e7785aalpqkajy5we3na30rr74js0w,100 +injective,inj1d8v8h3ms2srn2pc6jg4h6tadm3s9d2uq520mcm,100 +injective,inj1vwkccrdlgaugf6wjpk60r6adqz28pnrcduaglu,100 +injective,inj1rqwflm8d7uecv3nscadmj23sgprz9gtytx3c45,100 +injective,inj1vkguyjnl05anw5n5s7j90vh5v7fkmljeqfh9t3,100 +injective,inj12vk56zjv0hdhfxyp3pggwwfkf32j7padxdvpgv,100 +injective,inj173p6asyrpmt7tx5dyaeqnu6tezx94ap6ycjjhn,101 +injective,inj1vyjrz5cdys73jem7npamdpwvr9vcgekzcet5fe,101 +injective,inj1dkqaccz9r62zxv33xyyjfemqpsezep2ddajypx,101 +injective,inj1yv697mlu8e8ucse5dtru3glpl3vmk73yghu847,101 +injective,inj1ssfrz4ewgnp8lzwu7pdd0nsfe7r5v3ekzm3wzy,101 +injective,inj125dnn83c3zjdw5vsggls4nlca5j38mndrt03wj,101 +injective,inj15sxzudskqxdwpstmx6eg9nvhyej5frf5qu79j9,101 +injective,inj1nar63jw086sdwdy93zgzjp68z74gkx2txzu87x,101 +injective,inj1ma754amq7f58s4r9qlap349hryeeudvwc7l9s5,101 +injective,inj1wdlkhema9lxackvc0djevm8zp6tkd03wp8zeje,101 +injective,inj183w9fgwlddje2rcy32qkw9dhrzm0jf5f4nf05q,101 +injective,inj128vscte2yp50nt65kehna65z0qx9j2sf5gsznu,101 +injective,inj1kdtzzder5va26qhc24emc35atd57tnhgj3n7h0,101 +injective,inj1kxaz367n6e5jxh0myy8q5ufcv8ee362kl2t9ln,101 +injective,inj19vra3y4cg8g7aymfv2gu242h4kcuytl2p50kzy,101 +injective,inj1d8f8r29euftz4e3uwecehf54f4k2mu5sg42dm6,101 +injective,inj1cf2y8epn464fef79rdzfwlvmtggat7k0hdm6cq,101 +injective,inj1y8fpvnn3vn39rn5xupxeefgrrzkzavaug6d8pn,101 +injective,inj19pn4dylgfs769urjgyw0av2tvrue7yqy253cqt,102 +injective,inj12zurv286qvgy5f7dxt0wq4rr29hlls9j805zpm,102 +injective,inj15767xv3k5aweu0wn2nezu0c7aqjtklmqfe9vve,102 +injective,inj1gqmh5ejpspv936cmmhtlg79rgk57vkacg5h4j8,102 +injective,inj12e88xrzquuzfrl4mqg8mswvl4cegqejrl76w9a,102 +injective,inj1hemusye32w0mpva3qvnfgjn579u9qf5h62spcv,102 +injective,inj1sf5yvfjac5s5qunr5m52g3ze8nz4pfdqg68yuw,102 +injective,inj1jku57z7gdra8cwqaz2ee426hy47n4k8lpgekxg,102 +injective,inj157cg8r9qg67rahxmzncz2l0xapwcgrsps7c3cl,103 +injective,inj15pv87lztevxzarstnlh6utdycptgxl9rngghdd,103 +injective,inj10chl7uwd59s09cl23lnf57phknjpdgpxtmufxu,103 +injective,inj1c45rfzjhy7vwwutdzqywhce0ezmazv7vayazp5,103 +injective,inj1sr6qa4ph626e0szrz7admy3clalzhu3s5rpl0t,103 +injective,inj138vr377hg0jl88e4jfax5xy6t4dd09uk3uamyk,103 +injective,inj1qau2ecqvqnuykkpy034wsgdzxg9495e4rlqap8,103 +injective,inj1zylt4ycqn3k6ml987m7wsxvgqj8e8q2v8mpwua,103 +injective,inj1x95jx0jcasg9uvag3l3px7gc3mch2u8an8q2h4,104 +injective,inj1707chcn8a8d429mzdukanhf4fa5qj70g0sku7r,104 +injective,inj1y8zlf6vhrfxl7shhhmvnquzte9uu8g0fnn3fdj,104 +injective,inj1k233mh539jg97qqw3nmmqkfkzv8t97mssnqtft,104 +injective,inj1pmjhqnz6xlk2fvm6hnd8wk036xkc64fdu379jt,104 +injective,inj1zdmxju5lpxf2d28st5hq7s32e85p834z8we385,104 +injective,inj1zxs33txw4m7mqyagftqy3fwza58dwhyj3md0rh,104 +injective,inj1wtznufykg9p52cy0upnw7krt5zych7audy5u7q,105 +injective,inj1768uvduagkpxr8p66504fmup45xu07vpau3k5d,105 +injective,inj1ta3xqcj3dace0d4y8zn7nh8qrwhqjg5xap3gxa,105 +injective,inj13d39quutn5rt5pch0clqacqsnx7238fy7nct5u,105 +injective,inj1sv5s7jxunu3y8wrss5q290pgd2pvfx3xjvu939,106 +injective,inj1nr32k7f54qpej7z4ntvsz5u6yq8pr030tg3wc4,106 +injective,inj1ruaxrze6eynnkyhxk092xd2r48ccgzugn0t5fc,106 +injective,inj15tzyxxmvd6xt9jtpsgsyg8yy84n28gulqhjen9,106 +injective,inj10d3az45ae5rs9wyjzu7uuys0rmeerse4wauxuh,106 +injective,inj1jcmtdvw5z52nquvsh5d828lhk88g6lctn80976,106 +injective,inj1388g4ut39r7k8tx7l70cck2tmkraecqnvk3kp8,106 +injective,inj1admsc9h8j0cc0gkxt84q3s96snjpussjtp9pg9,106 +injective,inj1zqlj789trzx9wvsgenz7araqcpvp43m0l79m7g,106 +injective,inj1f7hzpuq52mewj67nlf9hwktv3cmkjfqaj5tph5,106 +injective,inj1ql5vtt7qvea7h77ad8htfj5hpll6q36t3h3a3m,106 +injective,inj1hvendqcr0n6jdx0wenq92dduq2uq0h6v3s2rll,106 +injective,inj18hc0acgsg37uj4jeqxcumru4f67hvlxjd9dqaz,106 +injective,inj1405h4fwyltm7elrtnwx5fzpcwxay0g89agkt48,106 +injective,inj1lyhgpec404982kas9kxn8nymz5t85s5nkwjelh,106 +injective,inj1ggczyc59mgz2uaal3fy5t3cehf7z4kupyr4uuz,106 +injective,inj1am2776k2r3auavyg2eg206ypud22kf3lae3n65,107 +injective,inj1reyr24x92vmq2x0pspr72quvqp35waj3h3kmsk,107 +injective,inj1q3svvf0n9r9h75mcljcryqfmtu4tue27hc7vyw,107 +injective,inj19pgpafzv0lrzlpzppzqdm9u72ff4uz5e26cy5w,108 +injective,inj1gtdayc9z0vppspjjwm9vh3xjdjgq3tz2rqu8xl,108 +injective,inj1xemw2kf0jz08pu4lnyjj8aej5cg09swxtcadlj,108 +injective,inj190e92u72a7f35y57q58cq2hwtt2w0cn6k4ca35,108 +injective,inj1scg6ge9meegxlzmjwjfvqlwf03a4v4n85dsfkw,108 +injective,inj16efhr7ccxq5yj63xuhv3a8rfuq90hrzum52a7a,108 +injective,inj1nhjlkt5zdqwt7rucskewzlr64khhc63j273caz,109 +injective,inj1vx7784ngxve4wpuw5lt0as36ygc72hslw388py,110 +injective,inj1sc89t2txwyfay3uqdj3lufk83j7gxp3pguqlap,110 +injective,inj13vvkpg927c4an2g8lyhfadezu0kxya085vkcxu,110 +injective,inj1d8nf2uws6pldhm0xcsuyn6xcwatnae4l9fedd6,111 +injective,inj12nnaa6lq8wyltn80tgqp6c3fazfpgxt6qxzfpe,111 +injective,inj1jt9w8qf7l627rfwm7nwaku703n3eat0nhstzjz,111 +injective,inj1h4zkvd7e9wfl3hvkd8deg58l9n6tr7qwvl7eql,111 +injective,inj1d4u45ccpgjvnlh3a896e3usendh5tpmj4z9wfc,111 +injective,inj1p8gclawsc6pzrhekdauurnr6rfl6hggctjkkmv,111 +injective,inj15hdzffaqsuszf0vn72nw2x6chtp37w8dx05l0l,111 +injective,inj15mnysdtmlnpj04w4qc8r9cjugaqlcrtzrxtjjv,111 +injective,inj1lnwuxk446zsqjq7d3nc5y8g9x27qjadq4fptp5,112 +injective,inj1erwak57maprv4aylewtuekkkep3w496mn2qugu,112 +injective,inj1rymyr6jx8saey3x0nuqtwlh9ygx5z48fh347vl,113 +injective,inj15pm0hk2ppf9sepgfel3pzeza53ce7jndh69hqt,113 +injective,inj1djra48fmq9xh6p3ah8sagq4rwntpjh5mghsj7g,113 +injective,inj1y7rfwpawwyej8cwksvtc005hef8fjkcw4q6ftr,113 +injective,inj16yaegg3ryysqjgjsevj93ry9lezctcr6pwdxrp,114 +injective,inj1y2nzj5k0sv6frmdma4t6gun5e9hvexa8qmg34j,114 +injective,inj15sy4n3q25ew9xr23pny0kvsy6xap8xt6xvzya3,114 +injective,inj1s7d6ddvza7cp0q4za3xvhp2me39rvzz30dx3mr,114 +injective,inj1qa4zsxaathn3l6v30fpqkr4ejugk5unajzermr,114 +injective,inj1r6rdvh26dmr9qt2v52fhseqrfawrqfz9fkggvk,115 +injective,inj1lqfshrkf6np8d5zgl0z2jgsyqsp7j9lfm2yfp0,115 +injective,inj1z8d337lgw2ldcq3z83tvlgwh096p9ut7etkaqe,116 +injective,inj12kl6l8wterugen2aa9d2tn0pgjgl0hr8s5gg9s,116 +injective,inj1sxrn4tp203ftft3a052tz69z3xtc7ewnkw95f6,116 +injective,inj142vzqrgzr3u0nefc5r00g8efut8r8aa38r3lcj,116 +injective,inj1lq9wn94d49tt7gc834cxkm0j5kwlwu4gm65lhe,117 +injective,inj1h5dl7qcrftp5qg67frhrtjzmzysmsxvwyejakw,117 +injective,inj1mfu4eqwepvk3gmsg84nten5p6q3q9cdmwjslyj,117 +injective,inj1hdqkt4f836fv372svef86epyy99exrtsaynyar,117 +injective,inj13uupmxevfel5yu6qjy2v2nxhgr76alh7hvszd2,118 +injective,inj1ep9fp49gh8ru6m337vwp9jsm80jjr654uztxyr,118 +injective,inj154gpllgdfe82h4ccshs7dc5cqyyvhwg5vtnlz6,118 +injective,inj1rd37529g2lm0dqu6wjgl4sznnq5m8ft9wjqyyg,118 +injective,inj1w8maf2hs2jvqqmjyaz8d96z5w58h4g6uxejnpn,119 +injective,inj1h4mtsq4e0u4v3kd2ml8uydzlqtna7n907unf07,119 +injective,inj1n6vf20unhrdugc93g2smgflq778lsx9c2kvtsl,119 +injective,inj18ds9u92l6ucsssjuu35jfasp06rg95mhraf8p0,119 +injective,inj1mnhp3cnf5u5zrn73crpgecj23ysmfdenxqvpjr,119 +injective,inj10sh4q9vjl3xnwyjkh3r42hl3x4zngv2tx9wpgj,120 +injective,inj1000rq7yacywq2lvcr3fnwqzk79jukf8ht0lhjf,120 +injective,inj1d2je29gqqy0kltv89jfa6d30r3qak0a0dwa3vg,120 +injective,inj1stn2ewq73uy3h50yjad6a6gqug765rffjksdtz,120 +injective,inj1ak4900v387xpu3xn0juarfsm4f99qkxzn6xjz4,121 +injective,inj16plx8egv3p5tw9s0vnpv3hdrdfpgv69ld22c6s,121 +injective,inj1tupnk5ckuwq9nm72han99m7mf5crgsq7cd9qek,121 +injective,inj1m98lcesuz6480kaxpfryr9q9q6h02fyycfwae9,121 +injective,inj1ll73lvvajcvh5kshxh6ucrhjawtd45twukemwg,122 +injective,inj1ppqxx7zhgz20ycq9cjzzjcnr82482vawj0zcgk,122 +injective,inj1565hc8n0n8ry27wju4mvpsa0gvzwuv2dax4vgg,123 +injective,inj1t44cn26ahmww9ykrl8y3dwzxdvrczqks39cs5v,123 +injective,inj12yyhwm02r99e9u0v9z0x5t9kzg598jhxt76mqr,123 +injective,inj16cjd2n2pp4jft797989acae0xfmpwpzrcftzgz,123 +injective,inj1a8kxmv87qmjkw7xhy64dwclhf55eege22k0705,123 +injective,inj1fumpywk06tacvyudzsf4908xh47e52l43yw9yu,123 +injective,inj1xzqyfjqgkc4epczg0qq8hxxz6eqe8azv3dwh4x,124 +injective,inj1xepx94qwahqqev3v5099w3tr7wd22tn8caesc4,124 +injective,inj1dvwg20u7rve9ergnr4pr3vn8hfhpf8v5uk8he8,124 +injective,inj1kge26et0h577mgsl3tsh0ctlg93fgyv2qkurf4,125 +injective,inj1dr4svnvxjr5v4e49stfmvmk77emt5swvxc76cz,125 +injective,inj1yqtpexak0807v22d88fpu504mc087aednx8h6v,125 +injective,inj15wrut3s7phcd9zsw8c4p68ve7m9kugg8yu8m5t,126 +injective,inj17um8vfx3ae3lpcq7ry36gqs90q274jpflxwflm,127 +injective,inj1a7f3d0w2g5xrmrje9q3pt5g542w7l9jyfvckqe,127 +injective,inj18aj6mwl0srdkll253g2yghy7nhn22khvtjhvfa,127 +injective,inj1zugqdr00lvuqnefedkul5r4qq2xzvmxwg905p9,128 +injective,inj1hsuwz0980yc6fmvvyfevg9pw2a4t73ft5vqf50,128 +injective,inj139g04pa9gthqcrpus88tw6cvvh8twjnzkfznc2,128 +injective,inj1f2j3yv508j27vkerv9kqmt6yeuu5dnpvr59ey7,129 +injective,inj1q2l3ez05fywq803jr4a85kd8dlmh482jddnxyr,129 +injective,inj1rnxwm0dfy7rkhqwtlugsrxkstkf88llsvthnpp,129 +injective,inj1qn90dx7lwvu4w7e4vgcllxtjjgx97zend0fyw2,130 +injective,inj1u877n2cvvsmh36e8588cy8dt6gaaldcw8ws6jk,130 +injective,inj1zh2zznj902uvnyymq9sxk7s595u9cmrx5r4ygj,130 +injective,inj1fakwy5gyyt75m4wqn5xa59ptqa7cm3unl6pcr3,130 +injective,inj1lnt4daht7e09zadf0d2epzjv7u2e5370utu8vz,130 +injective,inj1lth336x0q2sr9lzglmjlg85pj8ymrudz578ty0,131 +injective,inj1rhjz6z0ee4d4uw4fr20mf8xsq55ge7vsjfh8n8,132 +injective,inj10v7964tgng4tn9ugsfqtadj57xgr7m6llf0yc3,133 +injective,inj1njavvv6x7tn4g0thhj7uv498a2ty9vdz7fdpnr,133 +injective,inj15zxhp9jut8c7f4s9v20e35vylyacgppycfp88l,133 +injective,inj1ttkk9ra8qreg3ja4xa2fumfnua7pgxeg49cxtc,133 +injective,inj1ecjx7umcfqqhspjqgjx0c5kts5axgmwh4njy9q,133 +injective,inj1h6vfeuwknw5hdg62hg44ssfmjvtvzng8r3caa7,134 +injective,inj1g804fvn4pvnjp389s4u4ew5c49xsmr64ghfjrj,134 +injective,inj1lyymcgna34kxcmjg2mfrefmp52y67plqvv908a,134 +injective,inj15suez487fu2apaw89057qungu9auy0j7k7uunp,134 +injective,inj1q6sn6ltm46w8reh5wfaxp3cw8mx3hy255lsvlr,135 +injective,inj1w24j0sv9rvv473x6pqfd2cnnxtk6cvrh5ek89e,135 +injective,inj1es73p93vvhgfcq597acuhwalry7ady2s453klu,135 +injective,inj1rnej84v268kz279m9a0254fzyrft0n60qda9v0,135 +injective,inj1vmtczkp03437xlf0cp49438gwnw4grr0t8kwt4,135 +injective,inj1lkxv4339sh4ez95m9fc6pungyhawzr2qhff8ax,137 +injective,inj1cznsprl9jl9mtn7h23wjsjsy448s4mfczs3f5n,138 +injective,inj1r7sw27pgdf5msst5pds0kpqcag9p75c5fta94a,139 +injective,inj1c88fee9q2mn9xpxszqxzzhyrj6w30yu00pyyg2,139 +injective,inj1jkcwuavung9dvrd2t08t2hkxprl89wqp5t5jzw,139 +injective,inj1sf0x8038w56y6fl48jlr0fnjrw5f2nzwyyknj4,140 +injective,inj1rwmawttpngmln9hdu4ujn5jz25zrwul63qknv2,140 +injective,inj1042x69nhfu8vlzuk47qyl5kn6u526envvshk7s,141 +injective,inj1mpssl7w0dghuhakyc72y86uv6m8kddj9kczstf,141 +injective,inj1map30z7jqa3ngn2frnph604yjeqexzcpswfh6y,142 +injective,inj1csdhrqweppkttth2pl3zqyf2vgcxcr35dh4fgk,142 +injective,inj1397vmslswsq0zjvwsfudak8uj6rsle6jatrtfk,142 +injective,inj1zja0qdshv9h84q8yggykrnk3ae627wcddy4mjk,142 +injective,inj15jw0xeanhnkzy26wpwpexnq822p4kpc2ad9nyx,143 +injective,inj1tgpp9lvm0hrcjk9as2eww023h73pgu2uxgeda7,143 +injective,inj1zkaah57fj4p4qx04thlhl93y4zdyyuwaxqr6rh,143 +injective,inj15rxnnyks6fjjrhft658e6mfehv6lj4t62x2egj,144 +injective,inj1kfqa7fg62sw79tppapt6x5rf92gf7xnc4skpf8,145 +injective,inj1yjcddkk7xfz2hg7srs2q23u2hne02xww2szxvz,145 +injective,inj1drq0qslmv8cmuln0ppcr8h0e9wwdqt08chtxcl,145 +injective,inj1pjd7s8xpnyqm8hccqvx9egteljvy83r87ajnz9,146 +injective,inj1l06wcqwyxgc5s03e2akfmwrc99fhjxq39dhe2d,147 +injective,inj17lhah3ndf5ch69jvnsnsvc5tqwxkepn5tr6kun,147 +injective,inj1etp20evjngf5tlazf8rgprquqwstmlfukpe79j,149 +injective,inj1la3xyetr58fmpn7tr4pekjt6k8v4q4n3ggxd2a,149 +injective,inj18mt4wxmjl7ls639hgx6fkkthjxmsu9za7nvspq,150 +injective,inj188xccpks7jrfs8ua65s8ude8r0w4lvprzafxx2,150 +injective,inj1msw5ctfmv4lcs0kkpqmv3cu7vj2dpk845mzfja,150 +injective,inj1m3qrmczue4g4jgwfv40gxwnvfgyr4l49usn8mm,150 +injective,inj1ckpxyqqexm963fnf78k9rjee5aq9h7g6pk2aek,150 +injective,inj1quemwrl5zml6rpaumf7t7erlg0ygh67rtjh0ex,151 +injective,inj1h9g3x5nvqu7xhltjefh6yxg4c2wfcphaxhpz2k,151 +injective,inj14l4xnflhvxl8kdvmpaw6ak90l78tef8748m3ff,151 +injective,inj1gl0nlddvqf7zsykthwxhfpt362h553umand0qa,151 +injective,inj13mps9kmehes43f8jkwags2eku3rr6yl49end45,152 +injective,inj1t738tw5lqj7ujpsgg3udhaquhc5n3rzayva4zs,152 +injective,inj1xjwmney7cvydfrg2k0cesk7ryy0w9d3da0nv9w,152 +injective,inj1dy4qk3quek9zrvktsa8y4xanc383egqm69tecs,152 +injective,inj1jqhl9542h8xkmzfltmsf78dkqgsgdynzr5yptm,153 +injective,inj109vvpj4sexmy9msjyqrymsgduzegh4zm096mmw,153 +injective,inj16wgkkjcs83w3tvdymq9aaerzrte2e43jt8xe6k,153 +injective,inj1ylj2umhx246zlmkag724kavvllcrygx8d9jcyw,154 +injective,inj1p9agdy03rtml2u0nzgzrjv8472jrkwzgu5apth,154 +injective,inj1usl3u7vfx47t4qq4rhcqgqwjr2r4fk57zn28n3,154 +injective,inj1lwveqvjuzlgs7tcvyejh8uxglyvj2lpfm8hnpj,155 +injective,inj1cz445wl4el649epg2rv7r397jggwqhad5mvdaz,155 +injective,inj1608l4yse9fep06xqrz706f7dzdnkhqhu9q8prh,155 +injective,inj1frn9gpq5rdl9jtu8e0eqdpqc03ctztz8ccmufm,155 +injective,inj1mt0uw5q6pfa8sjjqqvcf74ze9r43kztxplklpe,155 +injective,inj10aytmz5a8e5zdwrhdg6u0ds46sett86kfhv9wh,156 +injective,inj12g6jvxell7lcr3a387p97s9d076add42c8qrnn,156 +injective,inj14hd0q2e7wf66hmzh952gjjtv2tltwyvll2m606,156 +injective,inj1e2vfftxvyh3zg23pfz4qls36zk7muunmnmx8ca,157 +injective,inj1vr3e3al46nvglx0zkzj67lhl086nenzl6q4hfd,157 +injective,inj1sv48l6aa7ntuxqq733d70486rtkpugd7rt7wga,158 +injective,inj1xuud82jjv5qryz46k90vujyxe404hum4vh6weq,158 +injective,inj1t8mkcx9xzsy9u94qh85y2kufn8mkkrw24570ja,159 +injective,inj19n9s3wuqtw0h80t3wrwv0kt8cmaztnkjrdw6lr,159 +injective,inj12e3wan68y6ql9wyqg3g3gunrdjq94zndgdxdk7,160 +injective,inj17ezpdpswwsy3uxq0uqceehj8nws392yek6qggw,160 +injective,inj1ljf7a85d9gtwdtjrprkffq4dx9uvy049jsn6w7,162 +injective,inj1lajsd2x6lm73tflum7scvpkkh3r6enhvlsq2ys,162 +injective,inj1uelkd4l7lqzvue6jrlxjlw3wlmdundygv86q2y,162 +injective,inj1x9g2peczrgj99x47xm39m2mgjure5hql9877cy,163 +injective,inj1k6pxa7n24rpttzplc3ujdxz6lpf26kwj8gemhl,163 +injective,inj1fh3l8ek77kpnqwckf090rhh04sftuqwx7nu3ym,163 +injective,inj1ga9xvvcprkxv8xlhx6r5av9tmlcjrpd67vagtc,164 +injective,inj1lyd3jwqrqvvfcsf6qjjue6a37dwqy46l5xxqun,164 +injective,inj1wps37flu47qv09zw7q45v7upamldae9e39s09x,165 +injective,inj1ylk5w6y2nq07cpqky4cdjdr0gqk7qkf88zgkzn,165 +injective,inj1cv0nexs88ndu5hsqcgnuvfs6jd9we2pxyv9d3g,165 +injective,inj16h76ar5eg3qazy85yhsdfz6tsakup0lkw7qe9r,166 +injective,inj1hn2kp36vj0sutqpzpcjlktvrxx80zxucz3p7xq,166 +injective,inj1c6t6xf8pqnjpmd50xah9vq3070rj4ytnjm9ycu,167 +injective,inj137jgyg9c7c2qeg5lrn6n9ah8nq6m92lzra978g,168 +injective,inj16lnp9086mr56dl4es5y4uu68ydq6q0ekspyd7s,168 +injective,inj13ys22sztclcn4y8zd5wcauyru2utlfee7r82p6,169 +injective,inj1gf5exne7p3z5ajndrywr3dc5d0ezz9ym35952n,169 +injective,inj1ledx7zfrmc59djtvw4dq6npqfg2sad2vyxlt2n,170 +injective,inj1uk4mh590qvznnfrrwng7fqzqr9dnacwnqx94xq,172 +injective,inj1cf7rg3fs6dke8e3n2ux6zr9m96hycqmxhjjl00,174 +injective,inj1w2dw6tt6cz6qgspydpg63u5pvx8m2uq8n66lem,174 +injective,inj1hqx7d6tsu4ysdhzhjaz802ttxq7qarwwuxece7,174 +injective,inj15qv8dha9n67pgsk3g6ay9syt4ykujepkeunm7l,175 +injective,inj1mp0y4n5ak02n7ra9j3tcjhdqc9eftcpz70eyg5,175 +injective,inj1rc3efd4c37fjjynanq687mnfde90x0sntsejjz,175 +injective,inj17l48fh3vu4p860ktxmqsptmxsrklv6qs3xsfp7,176 +injective,inj14tnzzttypdlkd27em8szsj66app5aggf2hq3a7,176 +injective,inj10kslzx2sryzswks3qaqner8actxaf2vc7rswu4,177 +injective,inj1wdxhn07z8xm30dndruxgfr6h7979vyuq9vcnvt,177 +injective,inj1peyj4hqcwzwt3wagtvydmsv0st9py4wqzq8ml3,177 +injective,inj1njuvl8xzcxquh7ks2kpckwn7l3n4tued2xzk07,178 +injective,inj153f0eg8gl4638kyadmeeh8jp9f8h4l9s8ynmqw,178 +injective,inj1zq7ta04087quzcyf34927wysjmmffhn69pfe22,179 +injective,inj1p0y6patxqrgl4k8xlvtyst9dzpej3w59cun7vw,179 +injective,inj15jvstmg7phvxyaz92uc34g9kq3dm3t9qczf7v2,179 +injective,inj10meme8j3m7x562yr2rzv9m8pl55d56emaxfgck,179 +injective,inj1qfwkvqnzhzn4r8cc9yfy2lemvxvy537wzvt858,180 +injective,inj1u370tu7jff8awhv2j979pdvwl0wek54uzjrcz9,181 +injective,inj1pejx8q4enluctsc7xshemtxmuam5792gg80ppj,183 +injective,inj1u2ut44h9jx603g5u22ncwsjkzuc77rv46w9nt2,183 +injective,inj15gnpd90z46590ksf42x92ryhz0cgk9xl06jeeu,184 +injective,inj1kthgjf56j6u3lxptg5ke2trth87lr474la0d45,184 +injective,inj18thcerpme7m4wz9xn25jrxghqv8rqtxwhqdzxv,185 +injective,inj1g68g4e3r2qcq852z02c5sxg9u2u73zvhyytv0m,185 +injective,inj1kyh3pveayfhqdx5y8kjrdchyxcmamtmh29uzwe,185 +injective,inj1anuwtwvp7x0elt4jhftarggrmh4m8kfhncph7a,185 +injective,inj1fymhktx7e8v033xst8p88d702efrnuxdlta82p,185 +injective,inj1mu5gs2g6hur839y5udkk7q0mgga06vnn72p50q,186 +injective,inj1fthmmucd7a36mzyp0p498wtmd8xlz4n0pmq7qq,188 +injective,inj19t9q2le8ac83kh32n5luuaw80t99afwyela7wv,190 +injective,inj1g4d6dmvnpg7w7yugy6kplndp7jpfmf3k5d9ak9,190 +injective,inj1f5mxuvc4gce6agkwm7hp7tp2l4ukp86rt7q7g8,190 +injective,inj17rret8gnvpuantfrmxu3zcc9qxgph9nx0u8szc,192 +injective,inj13v4yag9j3g5y396t45d0w7xtjgpfh0m8k6j0zn,192 +injective,inj1lgwgtc2rfgrglv34wetnr0qwdfx4fgj9wkxqey,193 +injective,inj1pu7n42uu2y5fxrvpeddrtukah8catqp4pw7j63,193 +injective,inj1nl30yk3a9l7xju06lxl5k5rnwurjxjrrgm4qu4,193 +injective,inj164adgu6cc7lswewf7h4ek6zpfam6u6se6c274f,194 +injective,inj1jkmrrt803xkpl0n4kvczl5gzj7vrldvdkzsdff,194 +injective,inj1sl8nvlx7luyq7esgs5fqdhlh4xkrk8du97tsu9,194 +injective,inj1xyljdkrlkppuuf5k3uwx78n2lx766cr3vmdvyt,194 +injective,inj1cnqavrp6f4rljfpcfyx2kxdnv4zpxj0drdc3hv,195 +injective,inj1eaphy9pzpmahjph63gk56qk6g9qkys5erca4gu,195 +injective,inj1ude6jnd7w9v955xk280h3s6wc73jhdcqyvj7cr,195 +injective,inj1gxsp7r749nhqcqz6ngd2565089073hqyp55qpq,195 +injective,inj17ptx42r77e3ckls2w2qq5rez4xsy8aqesj35qu,197 +injective,inj1scagvhhv82qwxgqfdymzn4yj922rjeq6qwyhd3,197 +injective,inj14c8hhqakhgnaavpwhy3260tsw7f7a2zpc787qj,197 +injective,inj1u3h3yzmas5eakxegz3kq59teamsu0qnefn6jhe,198 +injective,inj1w8u52wt6f55w0mrsxhw64xswxq6d7u8g5ggee2,198 +injective,inj17jf4vadq3x3hulewygel9xtmrycry5rys0vyrf,199 +injective,inj1ka408vkjtrp4ej7z8p8jvfvkrz66f6mn6mg7m6,199 +injective,inj1rxn7wu6jwd65gaala9ruth7mjpcjkml0dt6ehl,200 +injective,inj1stwqn9vpq4mgfeqqxqmp4m78hzfaf7hshunlj6,200 +injective,inj1c25hla30p56y7hezhznt32ztcdtej9t3se8kdt,200 +injective,inj145eggtxzqma8hw7fgdlugrufd0z72ytjz6h8eq,200 +injective,inj1v5ep8qdlqegpv0apmdacg7d84u6drczsfgz6cr,200 +injective,inj1za292nu77qwd8wlfdpw6fsx427nwqjmws9tr77,200 +injective,inj107d333j0h02hd64cncrs9ffma48gvpd8q20e4l,200 +injective,inj1fsu6dzq679d70lvwmkwv4ds5qf3zhurfa9czdw,200 +injective,inj1hnaxsuqd5yzc3698l08t7wk90gk32r6fgqehap,200 +injective,inj1e7rdhp670kke67765kupt520k9ux0yy3n0dgp7,200 +injective,inj1ms8m67wa49a600hrydsge24q73kw5wh23ymxj7,200 +injective,inj1gedh44dp882ds9z9e8hwqvf35pzzq3kh9ppyjz,200 +injective,inj1zj9fu4fnets0r3t5x0an0vtgfc2e3ytgf45d6n,201 +injective,inj1vk0pm4sn8jdenurusu3jg38klufz59z9t7yljx,201 +injective,inj1tevqee27e4f3kjsgwc0frywwr857zxh8dlkrst,202 +injective,inj1mzfdagldv4dl9td7ksk2fw5vasxe7r7etpcgtw,203 +injective,inj1nsl7ph3427aerk4pscaxq3zwxaykwtvmrf32tj,203 +injective,inj1ccn423sn3dxu0trhcemyyjkv4863zel7xrgjm0,203 +injective,inj1z2zehwp8xhs7jaqqhr7az09gxc5783sz9zvtnc,203 +injective,inj1fy80c2sjsngn79xm4rqzva2474gqrkce3u3x4s,204 +injective,inj1lghvfvrjklxas8k2kr5tgvuf9fsv94tz50qqju,204 +injective,inj1q9nhvlnll27ka8lpl9v9xkljje3z6jepwlhk9l,205 +injective,inj18dk4lh587t6asrrav805z9dpcc2rl424ugwnkp,205 +injective,inj1f9vr84evk8rcch6nura6lklp3cqjkfyzpa43al,206 +injective,inj1f5ctw7wtjey2jd2nvr63gfy9app4p9hshkekgw,207 +injective,inj16tcks4690g36f8z2ylw70qunnq74ruqxgg4n8h,207 +injective,inj18tckz7rxfh2ty5qvn5pv2v68ap4nu7rnmkny4r,207 +injective,inj1z5nm02qnvku48jwfex9ewp4v9gnuqtcgsxe7n3,208 +injective,inj1ufzqpyehvfv40ddpgq8u5tplrr9jfk0krzr76l,208 +injective,inj1lalcyqfprd8jdex34k6gx478fplsun0as6u2m0,208 +injective,inj1jtls5zycpx4e68vyzdu975amtv7jy7hqtv66ez,209 +injective,inj19t0fwgrqmlfx96cdghult4ywdedthm53f0up20,210 +injective,inj1ve03z9dfw455lk5rgu66w76peqht7xx954ns29,210 +injective,inj1gcu8pfpydjsgms5fx6t2vqmrpynjp3hstsp4wn,211 +injective,inj1vw3td9uaxpgdq5cmsmnd2fph8dwk7gp32l3s3z,213 +injective,inj1t2hjmkupewf659apkfsep0yf508ygx750ln0kf,214 +injective,inj1z7uwyxdd893cnsjkmd4fegeee9xaax86e24c3j,215 +injective,inj1sqnjy0h6sfpexdfzxtu659cwzaduquem64t7ye,215 +injective,inj1vnl0lmkasnrej3xzpn228ypatuhkcqtycgnkaq,215 +injective,inj1ne7mlge97z0uwhcyklvagldelj673ty35txnjl,216 +injective,inj1gvpamhtm255kryytaar5hwhj8w82064humlmzr,216 +injective,inj1ymv9zwt9pjj9sl9pqc49e672fayn5tjd4uzvf3,217 +injective,inj1gt2weafxmpzneln4j40qk573ex2ufz5asm7myk,217 +injective,inj1gmwrxz96ltm8whcd3hrsmn8wmj08mqdypjelkt,218 +injective,inj16uszjgzke3nu2mypk9nq4vgv8lcsznestz57pq,219 +injective,inj1g0660s2a529dc2xanaf6vcpe9eday4xagdrgyd,219 +injective,inj1ym6mrhdgjpxegtjhrnyk3ys3xjwfm5h276q3hx,220 +injective,inj1hzx57wjym3hsn8artg2h4s0mph5vvpzwyf5yvc,220 +injective,inj1883tdyv47ue3laf3u4pw03zxv30y6a7g2kewnl,220 +injective,inj1yyvjr0p2wsuaehnxhvs36awrm4gghsh20a98js,221 +injective,inj19l9x0223wgvwzqq3fy2l5rmrv0df8zkwadkwef,222 +injective,inj19lyk3c554zcr6j34nkhzjy7kzt3p6lf7254gkp,222 +injective,inj1h4dr9rn2mzml2ddf2zfdctdcf7x4f69lvuarrn,224 +injective,inj1aft3fp0va26llnv2ugjttdcds7upvjeccaauyy,225 +injective,inj1mdf848uk053tng5qrusaekhcr87dj5y7ys3789,225 +injective,inj12asc6hqh4wkfzw723gpj7ddwkfqs7w34yyygs3,225 +injective,inj1n6ej40kg23ngkny5f4y625huellexnmd7p7tw9,225 +injective,inj1dkx3haxvuynsm5xe2p5cv4hms4qeyap35tvaau,225 +injective,inj1j5xrns6e6ft4cj8nuyj4dc37szhqcds8cmaqkr,226 +injective,inj13g6hjdwytd7qupqwm5np82v62wm2rpwj7rcttj,226 +injective,inj14hxgu3npu2p8q4csfyh0ecw6zp78l6x03vvl05,228 +injective,inj1mspzmumhfxnntfghckwxzec98c642up775e7wh,228 +injective,inj1q62m2w4ttddh9ntza0kq4ykx57ze4tdhu7fhyg,228 +injective,inj1eatjagxpvfq6lt0et4uw22emngkag6x0nkqe2y,229 +injective,inj1kq9ffpw4e5alwle3w3p0cwzp86hcd3l3lqaf5m,230 +injective,inj16wsfmgte8mctlr45mese20npmctmmau57507kd,231 +injective,inj1c9nz8jc4qhzhc44nmktr8ka58xg6k2qyxgzwk9,231 +injective,inj1q5futtrjgcjtf09d747rfd0n2ezsq5c00yph0y,232 +injective,inj10mdh9q7lgm7sq5hgkswn3r0xsele7stq8kz24g,234 +injective,inj1tf7jt9vzxv03pzkp3nelh82qynrxtlqw7vtr8p,234 +injective,inj15swvmkku3he9zr85ktzw8taz5af7mljqh3hlzu,234 +injective,inj1y65l8yy5589tddn4h85sqgt5xrzynquvvzm5t3,235 +injective,inj1gsp8u53knlh2cn80pg99n7xpa9ckvmwm6c549a,236 +injective,inj12jlqxzagangz3sdd68df55jqlmhf83cwy5msxe,236 +injective,inj1u7z7k9gn33n56kf8v4ja549qeu40ct0gy7lq5f,236 +injective,inj17npf87kxv5ep6jl80yrms0mnjcwdgm4844rtg5,238 +injective,inj1s8feejgf3evvjzvt6yc8agy295e4fzucakljzg,238 +injective,inj1dg624dx4lu0znl3j9xnmr6sg0llla3trw07uk9,239 +injective,inj1eah7tzdec8rnl6yrufe87alxh2shqa832dp9ah,240 +injective,inj1jk7sla7ecn2krhaxud35jggatcxzdkp8k3uwax,240 +injective,inj1dz9gw4cvmh8r804dkap2wv0a9vjd37s2md6rnr,240 +injective,inj1phjfwtynukqrydxul553kjqdj0jpjsh85lm7sc,240 +injective,inj1qfv383r65fqmdcytrpcwx465px48k0jte0rt5n,240 +injective,inj18vz5er0m0tkyd8eph88q4v9mktw78st2t9vxas,241 +injective,inj1hdl5u45venmq8sgf4teefgnk0shdxd07ysnk49,244 +injective,inj12x732j39g7rxm82stz8pzkplathx9uszajckhu,244 +injective,inj1z3a7x6hr3wumpg2p4lsh5q66se0ufdacgr3s82,247 +injective,inj1skkvx5xwzll8sgsta6kx0fv4gm0nspfw5x65ry,247 +injective,inj1rngquppjwhar6m209xm2tepxl9n74vc8800pal,247 +injective,inj1q3lwaq6wwfv69wdyga0f67vpk824g3a0uzqhqy,250 +injective,inj1t708glv206dq6qhmq942g9m3v7637u2txgv2xz,250 +injective,inj1dxc4t5z88ew2a0k84qk53x4ytg6vnpnp939pxl,250 +injective,inj1g47j035a6mz5uz9a6dylkjnvrhmxudxftzutwa,250 +injective,inj1edjm855z647v6stqwwfvmws59xp4qd9vps602u,250 +injective,inj1xv0ywmcyrh3tupjf7q6hvv8hcj3hannc90vkgx,251 +injective,inj13dgp5s7n75zah7rmw7fllf8czg53ceemch4d48,251 +injective,inj1yjwjfj3ttu0u7zw5s3uwyqdardlqlma8d497v4,251 +injective,inj1mk2r5e7v8kvq8v9qaderyzzw5qpv8s4a59aynl,251 +injective,inj1psm7dnesasc9k9yl4rkkh6kap7yn6uunjde4sa,251 +injective,inj18vt8jgpey03muwv0n30aaldywa2rw5u3tpmrhq,251 +injective,inj1st5u244kvr4vc20cmmtwd9mw6wcvpxx5j657x9,251 +injective,inj15ka9ugazv6eaz93c8l9lr0njpsgnxw24qt4ytn,251 +injective,inj15jkz8vru8c02vkcrzz44q8zex5vh6xzmgw3l9k,251 +injective,inj14kytqnyrz6aqsz7mzjz90ngmtvpl8jpvyj9ypt,251 +injective,inj1cvqed74ydnf2dqsahs6f4akl9yhvdwu3ey6qcl,251 +injective,inj18k2ttjwk6rrzjcn4yj3hj58s9ltxmx73qpxql8,251 +injective,inj1ax0cye2wr2grlrdspnp9syn604jcg8l2k9pk3h,252 +injective,inj1z78c84jfx28f5tp6x7py8tqtxn4swk3s4wqr0y,252 +injective,inj1plh4plhwyt4ur9l8pwrru45s9mqz0k7958a9ay,253 +injective,inj1drtr5n89nmyexym0lc7c6qvsfy2sq8k7y6qs5l,253 +injective,inj156anrjzys4tnkawruadm4cakrk9vxrd5dcwpzm,254 +injective,inj1ax5eq0dk6u6p7qafx0qy32hn6jdynna3nhgu3k,254 +injective,inj1awnwn70l9rtl765edgvp5a2e4ry2gy8fgwkft5,254 +injective,inj138zstvq9689x686as5eljphq7r238fs6zs3twg,255 +injective,inj1vnxlf56eysws9ngzjdhnkxmft6k4xe8zjjxs3j,255 +injective,inj1w6jme84s803sk4frxzkkltmnmf88ryyle52mh2,255 +injective,inj1fh6ensv7c8ysfx2pzkevyvef50hjlwfgrf4740,255 +injective,inj13vd0nnucm30g4s7zfdxlalspnvkn7fxt0qfeqm,255 +injective,inj1jueex6vpfdfe2t4tduag5dmn82qa7vjhmzwv59,255 +injective,inj10mugkfx4l3pguj2ndjahpdx3kuxcecca9cpxj6,255 +injective,inj12yq8a4qqvyvzncfhzuxmpjmffxupj8a4vker5x,255 +injective,inj1ysyta8fdhz7axt36vczeqv8plfldfz5d22mnq7,256 +injective,inj1zgj6rkm2trzc6rk8angfasz8v5pe2mh7lflzw5,256 +injective,inj1xpa6lumcuullkwxu63x2jqsv4z0r6gjsf2p56c,256 +injective,inj1vhckny70qfkv72kcw4yw3e4cvt34ugrd7s3za0,256 +injective,inj140qcwhfgsn35pgq9uapqkwlnxgcelqv8a207tt,256 +injective,inj1qzwq0nzp5dvpwmyhk5jjsn2s7jtqhjfeju6vfj,257 +injective,inj1uwunxjngntutpknjccg2r5qc5z8ds4usp3cu67,257 +injective,inj1vuded5ny008clf60yjus3gnjstq85sucw5nrn3,258 +injective,inj1jtehv66jzdtfjwd7gx3ps5uka40ntxqxjss4q7,258 +injective,inj1zf3ymfezqm3kargavrpvkjuql7u6d67m7xtwyk,258 +injective,inj18weklah30em3a2tnrd43dy4kfj4ar5rur9x47v,258 +injective,inj13vykd2ytgfvl839xnyacxkyfudndcawelfutk2,260 +injective,inj1grmkh7h527rdtpep04u08qlll2tx78rlnefz46,260 +injective,inj1m0hh577vd0r3lsw0p24n6arl2qhsc70lryzxxw,260 +injective,inj1uyqz52g8w7eux4dwpyz84hrqazanpk34lg9r9l,261 +injective,inj1svutv52cfqzfmyzwedc6c3w8xcw9xs9eahq4gq,262 +injective,inj1h7xwfcf0kccxt35fq8y893evzgfwrs20yk5yvl,262 +injective,inj1lpyux957p9d9fm2f77apa983zqkr26vg9anah7,265 +injective,inj1qgyc6ua445gthgdsw0ldc0g7a9u387k99jwvyp,266 +injective,inj1zrd7mz5sgrul6phw9pkc7wf5gtxxf7gm768s84,266 +injective,inj1rlg23kugdh2uvjjqmac33d9yek5xus6hrkz2n0,267 +injective,inj1x0ceygtpsdvlm0tgy3fzpv0x6p7jmgfvcxzxsn,267 +injective,inj16c37zndrcwwp4ldn4zepm0ze8ddy0q8my2edfx,269 +injective,inj1h8tdavl7s73vau8whdu9326l4lvf6vr3xrnqdz,270 +injective,inj1kl60fwc25jst47uyeye7fughu8sklmj3ua9em5,270 +injective,inj1p6dhylx0vwe4ersc2pgae77jt7ze469e35l9cv,270 +injective,inj1e29a8yhccf0rzuezrydvx50f97cuhj67a9np0l,271 +injective,inj15yyheenqu48w6038xrpje5zx6cfat666u29r2s,272 +injective,inj1qnhzcv2jykkhlxc33y37r4p9k5lk8sw5488lpz,272 +injective,inj1nhw59kksdckf4pya24q48j2mtnaeer08jr4lw8,275 +injective,inj1a5mg7ay3vg3hc2vhatdcsxkfy5z68l90m0jxkh,277 +injective,inj1svzhun7j59w84qgd7fd27vjun06vv584n04jl8,277 +injective,inj1fwf42gqxknxkn09q4ucn8q5xurgwtmuy9u26wt,279 +injective,inj126cswjhtn0swzc8esux8rrn5sk4eqpy43s39ac,279 +injective,inj15vlkdnu2c0k0gaclgycnyjm7c5f3hsdechqv49,279 +injective,inj17pfylsscymzmtuclwg2t9x6zt47c5zpfmy0nrl,279 +injective,inj1knwycarqck88v5kdv9t8tg0hql4mvl5623al4e,280 +injective,inj18hq2s95g5lpvjfveucj64hm5cvfn33k27g82nh,281 +injective,inj1pph73rvst4ylfprg686rjg7kn7u9dl6qpnc8zv,282 +injective,inj1gjzvz4w3ywxdkxngpzmxj6tyj73yyrqfryw67l,284 +injective,inj1mkhqthr06x8geeya2qq9v9u3f8hje5atx9s5l7,284 +injective,inj12gdwk3lqpadfjgf5ag74pcpduqswt34qt4xtxm,285 +injective,inj1k339y84ddq3v4t8vqqw64syh35zhm4s3ccw8pg,285 +injective,inj1a0unnge9wj0elg7lz28eq6sz26hn76rf8f2qe3,288 +injective,inj1lxz9d3xzpyu55ddvt8ay7l58l9vqpztruhuume,288 +injective,inj1de2f8myp3ew3lxpatnwlsqe8x4glaf5qcy4v7m,290 +injective,inj1fjgn359h6ecflkr9lee0usvuav49x8w6vzzfjh,291 +injective,inj16ncn5k6v6jxzz96d2ufmj66wdpc8ldcn8g04jz,291 +injective,inj1wgw48ejxtg07z0hr5y69c7cxp25kt3v34q0t5f,293 +injective,inj173zadqyketdzpx76dswpa808pswezh94edtkmy,295 +injective,inj1syvwlpwvxvp6kjxtkspgkl2urgk2a3d66evfc9,295 +injective,inj1stht56eqty308wq8evrx5clxzvqg3542r2r86d,295 +injective,inj1n273tgcvgw4ry853j435jwcx4d8wdh5n3yftmk,295 +injective,inj14zpxyqydnzfnhganuc8qg48ugxavh3sglvuq7p,296 +injective,inj17twraxh6t6cqfln95lmaqpjuagfpx66xgsgklr,296 +injective,inj10nq4u0ppxhpgkcuxzjcg9chp03e4k87ac687qg,298 +injective,inj1j7sp8q96v2h4vflwcnzs9xcku28x93wt8ejvcy,298 +injective,inj1s9gsv2j785y2mtpwxs3xy0xqjynulcqpwccyj0,298 +injective,inj13j4kxlgx5rqzapa0t6ufqx7pc9qvr3ngnzg0wg,299 +injective,inj1f203jvq8frdcmcqv9dvyxf0kxncgjm6s5jpnuc,299 +injective,inj1kzrp36umpx3xrg78ppnvynldgs8jmr4j8lzf8x,300 +injective,inj1mqces8uq3dq284qcgys0n3470p4m2xzu8xxs9p,300 +injective,inj1u00ykymennzskc5e2kv8zv5c5tzzh7z732hrzc,300 +injective,inj1c0m70z57la4lnx8kvlu4zy82mla9khh7xhyh0c,300 +injective,inj1xf7gwjtpalunc8dpaqm7308dr6mec905pkre3s,301 +injective,inj1sg88u262hdl4dplhvh0f0fpmzkugtx46urmawj,302 +injective,inj1l6ukpmftdem7nzp43u5xst7yl8w07kjtx6r8nd,302 +injective,inj1mct70xj37f6tywlamepg5uleq7t3h6jfty2xvj,303 +injective,inj18wcu2r4x85xhlupr6n7h99m0ffux7n6kst6t6c,303 +injective,inj1mrfclx3c897hvyaj44ukvxy55u23xwtyzpzsk6,303 +injective,inj1clducpjdx2z2jvs0qarpw3p4pzmqyc70m96gtf,305 +injective,inj1kawgnsxkxcpve5lv9wdw98vzdy9emx97kaludw,305 +injective,inj1m376aaxsw5df7mkz3vrddk28tvf7kzgcwekq57,306 +injective,inj1ruqrzt0pa69lv8wjcfr4vm0eqgv5pku3ezffh3,307 +injective,inj1u2yl6m0keepgqjjzlqehwsescyql7r97y8qjyd,307 +injective,inj1njz9h200904qv375uv7vzd3yuw4drew65zwyec,309 +injective,inj15kvf3pu8erkqaxme4hr9hzx2g7qmelhzmh8mgq,312 +injective,inj1x62ad55lecjftp035s2p776ng922gn6lm76uaa,314 +injective,inj15fr7ahhntckl54glaejd8tgkfsf26egqtynvkf,318 +injective,inj1tguhqajjr9u3pdtxppdh8eeufc739jm206sg48,319 +injective,inj1ercjs2l8da9stwdd9zzfdkvllj9mcafysvjfp3,319 +injective,inj1e6penwm2h5z0sa7kj67tw998md2qh76j36f4ha,319 +injective,inj1aamdjv78dh2vt52mxxhyapxc6rjrcaa67gw63p,320 +injective,inj15tajggpdkmqtzg8frgdjlan3mwa73r3du35yuj,321 +injective,inj1gtr0mvpcrmp0h3pu4cupzxqny8q7nd0yv0hh70,322 +injective,inj1c4znpg7asqwq8smq6897fqhv2q43tlu207lwdl,322 +injective,inj1pr6up943wpkrqj6qva0j3ppm7qg8spdh7lal2t,323 +injective,inj1wnx9ejnk5wj7zcfzzywf0ud6tm3zshetxy0frk,323 +injective,inj1rv3f2sn376d2q9c475kywunn2wszdd2x02u6hy,327 +injective,inj1wz94unz7mnc5y6jyh93ze5232z2wf2xt9z2yge,327 +injective,inj1q6maz34wlsdxgpmx3t55gg9kpc98ksdndrjma9,328 +injective,inj1h5vhry37qr2s3lw8v3s2s4gwprwymtwcxzrrq2,330 +injective,inj1svjvh8xxdsdnxcq0rdte46exvj2va2gd4d8l9p,331 +injective,inj1w2rphj2h86phaw9733zj8at90phap2vmn8sv5q,331 +injective,inj14crdj8ukeaxdhkzmn6yqgwn69rkwxk9xg3tvn6,332 +injective,inj1atx69mrshq5qwtjdlcz9hc4wvqlf6azt9wlm7u,340 +injective,inj1gdnujr80rxyc2lxwfvxnvvf4ykc3lzyky8cjxl,341 +injective,inj1lw7ze4d323aq2lnjmathwy0nrqpgayu9zv9ee7,342 +injective,inj1ywjdvykg7txfg8m5ue0ujg3u7nvans3rlcu7eu,344 +injective,inj1hr0n2hatv7v3llywg4y6znq75slexr8rkru352,345 +injective,inj1kxt59ze76zca4p7756ezz8z94ndm9yrfqq6agc,346 +injective,inj13272vhs80p2zfl2ypuxfe8w5psx4gfd7l52epc,347 +injective,inj1xmnfaxq3qtmh35y4r7n2wl86v793swv72kq0sd,347 +injective,inj1kj8k7m7fy9ee6989v77l7munvtarydkdxxmq45,347 +injective,inj1tp3er7tyw5vvkw4h0nkyw25pd5unvxjxgv9sl7,347 +injective,inj106gxrjt8af94v57jzkumjuv4a436wwsjkk3ujg,347 +injective,inj1j79nwqy52f9s0z6jca6kn0slwtfz0su5e0768d,348 +injective,inj1qaexk7kzndaacl9wyvs7y4z0eptd4tm8u3ckcl,350 +injective,inj12c66dpuhzshlzyywn553mslxne2xy6220a6ytt,350 +injective,inj1czv9hzm5f337y0jfyvnyalavw567gnep6p2srs,350 +injective,inj1wy3ncfgdxgrp8crux49jxzv8xzhtzdu8zuynqg,350 +injective,inj19f7pa2c45pdaemvh3vtr73whway9dstpajpal9,351 +injective,inj1r2lwdpum6zxvzexpa02yl4cnn8c49ys9ulvkwr,352 +injective,inj1d2n7ukcw2474qwp2d5vtte0sclhvhla5059w6d,356 +injective,inj13cxnexjp4j0858gxsn00rfx9esr935cerm83v8,358 +injective,inj1tjwu3schw7qr6qt6uh6nyge8czskj42czmsl6c,358 +injective,inj10m5fmx94wvgs0g4fe67rmxjww2wswqnz5e56gl,359 +injective,inj1s60hg7w2cdyx8ffcdyc9dj8hlrj22l0p3m6ypw,361 +injective,inj1c7tye7vwkq526fu9t3utxr3ywnujpal9lhm0g5,361 +injective,inj1mfeqwcttfdhfenxv65fljyxfvzqh8ejx9x39vq,362 +injective,inj1rydpdl0tz6f3zhwddpgx8z3nks4xcujk5q4q8g,363 +injective,inj180wpymlcn23fmdwdngahzarfnqj5d6a3jt5g4v,363 +injective,inj1455ynw3uruhjdtgfe9l42y046g9yflpjnnej96,363 +injective,inj1expxeuj85eyt5jeqd9ue6wxej4dpgcalk96a8k,364 +injective,inj12ygd8z9z2tatmh6lamqhrqtyxzrqwuqv73e4af,366 +injective,inj1w3yc0ggjctadrksnce099v9az0hnqnh5482tgj,370 +injective,inj185npyex3dtprq36l9eq0gcl4f8594us7z43nx7,373 +injective,inj1q498nvpnxmsvg6vnpcl2zcrnmgnfaj2nx0t6rq,374 +injective,inj1xp8zlsw3vsjpqzy05dfxvs5l4gem0vng5gdezt,375 +injective,inj1r6wts6v3qmwnmvfljvrm3xqp0mre7rpulsj7a5,377 +injective,inj1tkpxhpf3gxca3ge9ha6d3g7fjn0ygzecky0trg,378 +injective,inj1mh7h582zaxfdsxm8led30v3dav6zsltmj8zljv,379 +injective,inj1elxdggq00r8wkp3vly73np475hylrgka4pntmx,380 +injective,inj1hcgwhk3a4vv2yc4gr3d3s7laxex3fwhxpvme24,380 +injective,inj1jzywywqhm68auvlhwpu7f4zqs92nutwg7p52xz,381 +injective,inj1fjfne8ps75dv5duhsse7q554836pms306rypma,381 +injective,inj1k84en92kj9thadnwx2dq48l800h8z02seq2ck2,383 +injective,inj1tlcgu95l0z3pmypkk32a0ztywtpncdy8w29u88,384 +injective,inj1ye00x5pdyh98vcn9w3lkf9wu92sany3kkkw42s,391 +injective,inj1gzfx6xuxc8qze7nssd2pkg43wun6m09uadxgr3,395 +injective,inj1p8mm46fay0nxgk48zudcey3hgfgmvhpjey2vdz,395 +injective,inj1mnq9relrs8n6nqfq09ejc8stthv0sqaskfeg62,395 +injective,inj1c9fqgdy6dale5579n3j7fvk6h9q33wm5feppw4,397 +injective,inj1fc5frjcyj6444e5dkjnld6hf3z40zvkr78fna6,398 +injective,inj1d2x0t42a6anth3lt38ld5997m6e5ya5f54texn,400 +injective,inj1944p2ac4fla7hgxa7pmj6s2khsufh2kdjavt8x,400 +injective,inj1a6sxguteskdkxp20qy3w63gxp8pnj3c83hphq0,400 +injective,inj1g7erccu9xnwrn6578ndw298u0zqkffg4sanj3l,400 +injective,inj1azga46dcq93ufeh734n9jaweucjmg3l05sxv8h,400 +injective,inj1sehyml67rcuzwlszrlauk2v53qqhas8nfdrud6,400 +injective,inj1fr52w4uaftksx4f72mh80v4nnr9dtktyceqpr6,401 +injective,inj1d6wc5rcqwxymkgkrpg48acwht42tvynrzejam4,401 +injective,inj1ktkf7h4ehy4m0y72lulnhc8fhxnc2kkl6nvw97,401 +injective,inj16ac7e4aw2t3yfx74g8nd483ym0nt72tsxr90wk,403 +injective,inj1c8zcnhqfygueh9n029w5kepkwp7k0xt5qqh9ep,403 +injective,inj15t8vyx2uzgzj9xxl9msug9qfr8gyfgmsaz2rtl,405 +injective,inj1kcy2yve23nksttcd6f7z6u4le3ndess2y32yyy,405 +injective,inj12t4quw38mclpfxvvpatyt0tu6g9q9aw3synj8v,405 +injective,inj1jyjlwrn8epe9dyky7nl7xz2vazfz3qjau29l58,406 +injective,inj1jrqva9nx66anvyht9skws2c54zztrfjg63dyqn,406 +injective,inj12j4mnd54fdpux09nm6309mkp6dfx5jzhta4uzu,407 +injective,inj182hvhfemlucajlxjvch0hhvcaa4nexnmy9dz9j,409 +injective,inj1flyqnrs0t6etxj8009g6gjgehgxjxcxhszzxy6,409 +injective,inj1hltz25her2na75yq785v3spurmrln8mdwk4ddc,411 +injective,inj163sw5cfkj8r6lm8fsy2sk0tp9mqzu90mnggeqr,418 +injective,inj1y30lfqst3hztlafu0fpsqh0u80sn5wcqgqu5wn,418 +injective,inj1tjjtqd2fp0ad9jvcfskuz2p57kkued9v6n0lrc,418 +injective,inj1vwfeeqjmf5s4pac4nufhfhegmx03xhy4wllh3j,421 +injective,inj1myvqcvk5edr5wq3zrllxffhqddtvqcvftuw9yt,421 +injective,inj1fd7pf0gnrmazwsqw4x7gfswzzrupqgm9urghe5,421 +injective,inj147j9ftgz4cadtjky6pp5yat0hy89z33vs94sph,426 +injective,inj1lgxj7r2gtmns0hynfxhg6ku29c76r0prtnewjf,426 +injective,inj1rmqc2csr2ezayefgx9hfqpl00at679y4zryq2l,426 +injective,inj1685egd9ep49a69tr0het2uavcwtl3r6knjt3hk,428 +injective,inj14jyh4t7ymnhpzh88qp7nnx43caq25zchk5nmm2,429 +injective,inj1ch7na3zmf6rxxm9r9v5jlp4vsewpjchdcnpxq0,429 +injective,inj1zn726am4s56yf55zds223rczp79paqf3s277d6,429 +injective,inj1hujr07z0yp2kax0uh33yswzqa536933ahhw4es,430 +injective,inj1yp0tljt5h3w2g8fw6tf2empz4mj5vza9xmcg36,430 +injective,inj1qvmhqthucklu8l04k2we94gpweawz6e8slc7rl,432 +injective,inj1zqj500gqwhmj9re4z3f0wc47vprn26q5ajsa6f,433 +injective,inj1maqv9wechfqdv7w5u6lnwqhaevhw6h5aq5mcmx,435 +injective,inj17c08s229vhn5yj04ttpvmft7fh7wzells0t3sw,436 +injective,inj1s3wtahl4v3lydk6yhzdfachqxpw6a350tjnzuu,436 +injective,inj1zpy3qf7us3m0pxpqkp72gzjv55t70huyxh7slz,437 +injective,inj1ewvx7adqquqnw5nntnvwdk9cwzz7adp0y0m5lx,441 +injective,inj19en9m2ssspgahm39addzwc4t2upksjpa9cd62z,441 +injective,inj1v6l47xuhauvz6axp4533yzc8pne7nntq6rtcdr,442 +injective,inj1fk0efetwsnlswyvvmkfeh64t4e8jv7gmjkt9fp,445 +injective,inj10vsh2ed7hljnnyf5s6v4ws5rj40kdnhh2u2wh4,447 +injective,inj1862laughdt84uhfw7e7eeptwfm9vw0slgyx5em,447 +injective,inj14wkckm8hag9g0zv9rt67jlay7xurgvhaa297xd,449 +injective,inj173vghzvr4uxlt693xdkdeeguc45kmyqe56m52w,449 +injective,inj1cpv9w22xtmmq4z8ul9xsz7ez7yjhmftlxttlpq,449 +injective,inj15vr80rjk05xu9rdkx6yy6esgr85x0j6tsgdt49,450 +injective,inj1z92n2edsmssd05vtuusmvsgahnffthtvxzxuf2,457 +injective,inj1lwzwts7gh0yrn7zl33kvf6l495rd8s8ez5084y,463 +injective,inj14cpu0z9xqnzf7ewmhvefs2vlmdmq8ufgrut7s8,463 +injective,inj1w53lkm8dqdeghu2hdrlpkn02n0av25k3ehkfym,465 +injective,inj12jv7gvyw9a65pryvdfja255u2sc3txx6cfvyhr,467 +injective,inj1c20uqwxdq4vy94rx9q0kp8p3n009j5qh0f9qpk,470 +injective,inj14mx9cca7j3lyk5f2pt7ellx0q2f67r0mhganwr,478 +injective,inj10zwp74k242aj3vfmlenrmx2jx74ufe3pkkkje6,478 +injective,inj1uj4uwpwk6cydxrj5akfn3xw32x99wtl2jp4xvt,482 +injective,inj1sw57sp5t6fv60dj6dtatu2km4e9rajr5mp8m6x,483 +injective,inj1avq88s73axsgqthshpvrqn5m53lhlhd8yu7a69,488 +injective,inj1rzjwnvrqvhzy0a5vqhpp8gr8p7f0vrrl0qfffz,489 +injective,inj16r5zu4753ekyd7ksqw4zy7q5xne827vghk355q,492 +injective,inj17ef2m8f9l8zypef5wxyrrxpdqyq4wd2rfl23d4,493 +injective,inj1vn7e509glptva534l48kxjszdwy35y8k495a27,494 +injective,inj1yrzlt6nrc5yav5q30xsxm4q4xnreu9snvls757,498 +injective,inj19zlg0dew483ytlprnq04pexzxx35vl3fenl4na,498 +injective,inj1w78zzky5j4pyv3m0ntkj64mzyzl9mlug4356l3,498 +injective,inj1de97ndu5k9pj4zmntm6mxpqrj238ksmjk93pf7,499 +injective,inj1vxv7t7jlvflluupjj9qcm7tg8smq32utnrcm5e,500 +injective,inj1zdslxf2vdadp3c8mp4u0pljnnqnyxc5uhqffv4,500 +injective,inj1ted499xcuv5kpj32m7pmtyghwagdjxd7segelk,500 +injective,inj1xkjmfrg8ndy0a0nd5e3tvm6arjqw7zj9e4chlg,501 +injective,inj1aeqavmpupxztx67wyqumru6hx4vxk85fs26eaf,502 +injective,inj1f6rknmjplm7s8uh8jfqkxpd79nrd9nyq7yv9zx,502 +injective,inj1fwmz99pk3z7ws8r7qvrcmuu0k95tqyvecdl0qt,502 +injective,inj1wcpnwfw7kwlq7ecvr97szu9kh242qch8pxx9qg,504 +injective,inj1w4w6uamvwvkuvpaqjydelmt770222t28x4jkzr,504 +injective,inj14f35jjkex2qhsdkd87z9zzemhy5vyysrlymxz5,505 +injective,inj194trgthfagt8z8yyewwj8u37ffknpqkmtqfce9,508 +injective,inj1lhzemj4qqaluz79u7yhe6emuhe64z822cn8zjp,508 +injective,inj1n5k7lcgrhg0cer75rfl7vqydgdp4mmu3sjhqhy,508 +injective,inj1fssd2lvu0swzjz0n0rkduuvdx8ykxmkdl8qg8n,508 +injective,inj1lmdexfl245s5gxvl7q2nvpsmyz6nx73whq5heh,509 +injective,inj1c2quwg6j2xwu409e9vzg0j4765rpwqgy0myfvl,510 +injective,inj1gptd7u258emt5gjxqtvjs66vdrjavme8shgk8x,511 +injective,inj1zezfcudu7gvwzj0ewyungzk0wgp0u5muxet28m,511 +injective,inj1hdus07jq0qvyee4xkhgf935lxp36jpq3n5rpuj,513 +injective,inj168xvzpwlj3qv6ecau2karnuvzwq4z5l3evjvvw,515 +injective,inj14s3x32fv6etk80yl9v26etkvudslah56y6tjfq,517 +injective,inj1c2rhdnshzxg5gj0qtcfzka875wfdjrhnslfp4t,519 +injective,inj14l5cm5f2cqmy2xe8ustnh8ys8rujugsuvhy73y,520 +injective,inj1g9vh9dk9c9923dde20wggkkcqmvdp5arrhw9zs,520 +injective,inj13eqd3cwldupggx5qgl5u9qtcpjntt2tkxq46lm,521 +injective,inj15jyr0wdars5kxtpmqs9kwcagrrcn4ra9v9xha2,522 +injective,inj1txswyh2nrtar9z34qc7n5plz0np5wugzwmwejq,525 +injective,inj1jmckw9advh0grkpmvedacjrcfqrmc83hsyvg84,526 +injective,inj1tefw2crucrdzrz72ncwvgjy4ecrh7t50rc8duh,528 +injective,inj1p3f0cxhhjmkdq8pa3wslds3jydhujwhu287amt,530 +injective,inj125fkz3mq6qxxpkmphdl3ep92t0d3y969raza70,533 +injective,inj1wyc7sr0as8f3s6s0plgwcl5zmsjr9wzu380zjx,533 +injective,inj1qpaufnhtl9xwg9lulex4c5t56t9sc0hz3ueg6g,534 +injective,inj1a7lzku5zf2l4aa6accx8m5wu36krl09jglwvnr,534 +injective,inj16sm2vc4sw7cksd24fuf406arqv9dewnunldwuj,538 +injective,inj1n0wjn2mjxnd93s3ku85j6m8r0rdayz3m9kas0a,539 +injective,inj1ge46rp2q2vp8e6kn40s5jd0n7am800vtc3hqur,541 +injective,inj1zd0tcceh3efdfd3qs8kar2xmf3vq5dzpzqgh75,544 +injective,inj12zuvsdzdh0n0yu3yesq3vcuzrwautqjxjjhdys,547 +injective,inj1xe3uk7hu4mg5t2ye7txxwxta9629cq55cls8fd,549 +injective,inj1c63hylkzz5vedxua9hrt2xpvhk7zr840ad70ex,550 +injective,inj13fgkvcednen5k60g403szevt43juxs5jeftk8r,551 +injective,inj1df2l5tcwq5zqmzk9pnzszdj29vlal5pu7lq6aq,553 +injective,inj12chghvtau8s6nw5aw0gf5e868khy67n85ah2y3,555 +injective,inj1fy8fqemt06yqur2s3nxum7r754692ewax6vwzz,556 +injective,inj1slheflxakpshtkxt84lfmjpnjg4vgezc7yw9vx,559 +injective,inj1d32sua9vtgh0u58wwcfkjetlpuc8kfzztujmwl,559 +injective,inj1uv002ekhlp54332re05ly65swcrujp2mysxw0p,560 +injective,inj16d0lssqh0gw8l7tuep068yccwyp40lgg7wrjsu,568 +injective,inj1zrke8mq7tmmx609khh8t38hdyr9uu99j6wk280,572 +injective,inj14shs7hgrzcd8ksdrd4ww384zumv6hmgwq2e9ex,575 +injective,inj1eezuq46amvzqw85845r4nx7xyfj9q4t594hlj2,575 +injective,inj1q8whnsw3rxpgg46mg96rnlhz8eefr0k7dey938,575 +injective,inj1vccsglcmqw4mx4svvx5z0sg86pk4vca8zdxupa,579 +injective,inj1tvasa625leh3cvckgt22w7dypvmryj8rwl3k98,579 +injective,inj1x26p6pje67u49qf9avfzyn2w34xlagx7uj028z,579 +injective,inj1k5hulucytdlf5fqmpz2vsdw63pp2r9u8mw564j,580 +injective,inj1xqtgc8v3w5yzcr5w5f40k8exp5j4k0uhumn5fh,582 +injective,inj18g9yaj5nzpcgs3wkwtads9jtlzuck8e4rhve23,582 +injective,inj1czj6ljptt8gwddyphmn36n0725nl5djnm3u6kj,583 +injective,inj1qyxdn9p46x6la5cqzs6mkdaesx27lsee7uvzuk,584 +injective,inj10tn4z2p9vej5mry4ww4yvqwtwtqj9v2gu6dnn4,585 +injective,inj1gg6t7tfrfzy6k8ufsnrjrgaj30zc266gq0j2hs,586 +injective,inj1kyx3uf820wf0cl4nqkqnc5vhkdeuxe8amv2y86,586 +injective,inj1cj3mzkhxqvtphvujud7rjxsgpu0xwyd39909v7,588 +injective,inj1qqzl0wweg7amvaexea72t57rhwynrdrlhmt5q9,589 +injective,inj1csd6c5fnxdcjzsz4l6rx6fayjt7ust54zp96xv,590 +injective,inj1q33029fwsftw729s39h00laet4jdttmpjrzde0,590 +injective,inj1q6vmymslxmp66l7xn274m4fcgzxttuyq5qeazt,591 +injective,inj1pxsnreghy6xvfhlyv8ru3qwxwhjafm9h6ugfpd,593 +injective,inj1tapfyv0980uprgk4j7ylfjyj6aens0w7k5xqew,594 +injective,inj1me874k9rgmxxnyh44l07x9ufw73zgclehcmrgn,594 +injective,inj1yqvl07avkm23jkzfvmhsnzm7tdn96vhav2gr2t,597 +injective,inj1xheajfpv7cxxezz9nfy2v2xnaxpems3rh7uuum,598 +injective,inj1p8juycdkndehmt6p2nrzpktc4d0v2j8y5pkhfs,600 +injective,inj1wttepd56gsfghtun9fpa8h8ghcvmtv66rydev5,601 +injective,inj13q9q29cjq7r8jghd4chsmwajmz7vj4kt8pqha7,602 +injective,inj1pd5a0xksaat54h3umzflf0jkxf4t9wtcnp8pw8,603 +injective,inj1ja9jy9gsa28jppclvusl52yywelzv4zrarhj3p,606 +injective,inj1zzepk8yvwt9q224p6c5qy85ng90m0lg2fzx7ha,607 +injective,inj16ge92n57ugldngr00646srj06qccctglhrarzz,610 +injective,inj18u93w43qfratnal0rqc59epkcqt7yzxc0nrul6,610 +injective,inj17te8efgf57h9hxvm7qj6zaeff4sr3ca9zqr39j,611 +injective,inj12h3luhmnd3k28dkt5kjc6e0vg964vrmk36d68r,611 +injective,inj10wmccg2dd8y4ml8yg55tfp5rcq9tw94e280l03,611 +injective,inj1dgv4eg7dndm9z2s673agyldgxmp3dmy4uuxk6f,615 +injective,inj1zxugdw0tl0rh52g5e6vefyev8mqd5lqy6zyeqc,615 +injective,inj1qsztzg9yqphvqlcq3yzm0hr2zs0dmk66acvr6s,617 +injective,inj1sc6puu7em66xj6c6u5xme68j6ch6qcprls09pk,617 +injective,inj1ruxs97vpzl5dsauehcr7mcy0cesxatvvrn8qg7,620 +injective,inj1spav0eaahr4zvsla2rw0ujsfkh65muglme6t29,621 +injective,inj1k9dl3r4m4dpw9tsct92a7duhy758wx9aqhmgxt,621 +injective,inj16qsjl92h78ykqug85ekjx095u2wks72x6n4l8y,626 +injective,inj1cef7jxy9xg3c5dka9spdv0hpjv0nu3hsy5238p,628 +injective,inj1y0fu6rfjtqsxas952puryfh7g2pxwrpxjphtvz,631 +injective,inj1s28zs0pynfzxyurlykq8f4jntn5apln0ldgsq2,632 +injective,inj18faywcz39d85h3hrfstv9hwqfjgudc9nfuwuky,637 +injective,inj1ny0m380hlz4zd2m9am0zv50k5ufhz93ux3g060,640 +injective,inj1hlxateuxw305t0eqmqxyyc3r7fxsuz4fuguytj,643 +injective,inj1xjly2xgwps7gvkg3qhp5xhvkgeqx8u05y55nr0,646 +injective,inj1fuwt0hly4hyqhtnjw4d2czssph8z5x82rvg5k7,648 +injective,inj16gquuvkj7yreyvmmmha4uke9cjtd6t3nqjkmmf,650 +injective,inj1d8p4g873a2sd5yxt3fqvt4zl9jwtty05jvjk04,653 +injective,inj1rzcvuj57vsqu2d890g70zv9csc33r8kh4aszyr,655 +injective,inj19l63py6huppjte034wzefvezzvute98x37jtn6,656 +injective,inj1k4s66g5y9qr7dtd3fqk78sfu03cw68mes5vgjs,658 +injective,inj10p8efava3dl9rnsf448kaj7fhxcnytwzjx06j6,661 +injective,inj1a0zhp6pet9s0hczs6n330n7vj24q6lc5xj437f,666 +injective,inj1g0ymynjqrtrudhkgyqvwm959rhfdfc0rxjxja7,666 +injective,inj1fyn70ch2yxp6c6pyduznppcvhucy9lx2ea2jwr,670 +injective,inj1mzs2w8kch6mejahq3h95wtc2kn0alne3c0zfqf,670 +injective,inj17htut4qsqtqwk9akjrthmm4jmhcuxd0ksjlxfp,671 +injective,inj15cuzazq3sgt2us82h07uwv9h5grp80f4925xj7,673 +injective,inj1pg7rpzq5e77tfk72umh9gnu3l7unzjx5mkn336,674 +injective,inj1nn4lgjgqtxnl92qcrm3yzx27u5c3gjz47vty9p,677 +injective,inj1gsvy6h2s3ll7p6q0dlt7t04v76vau6afugayht,678 +injective,inj17mm5elfpmyzcah7kwfw934vd4yqf5z6q3e80an,680 +injective,inj1jy9l5w802ctyg3mkfkk9nl4dw9wfxdskxjftdf,685 +injective,inj1xfr564g6h8ll8rpvjss9q68at9qfl6h9s03836,688 +injective,inj1vga3ktx56l0w5hxeuktftqghggkp24j0hdecr8,691 +injective,inj1f8v5nv9dlw2ap5nerv27jqptgscn5njfld0amu,698 +injective,inj1k58leyhnd8f9kh89l5thfvl0qvr0ztnunvpus0,701 +injective,inj1ylpxw52s72w8vvjul7sy28mpdqcdyv3wfyx0yv,701 +injective,inj1syj6q8d83rn0wv2dxp9xe84ah7cll497ecca32,701 +injective,inj15sme9l3maehx0mgcprl53vhxdxcppnjjta33tq,706 +injective,inj1ttk9xjtd924v2wls7rvrna6n3fn8jpunjvlkpy,710 +injective,inj18uwqj8vukhnz8uhwcf30jym2n6j07hpeh7vxzl,714 +injective,inj1k2c7c6tdhgazwpvkjz53qjwhw72w6mgw8mxlv2,715 +injective,inj1zcku5j3sfy0gd76gugu5y5hp0j54j7rcekydud,718 +injective,inj10ajm2gyq2lx0atkc7jy46tztwulyzcusk5mtfa,723 +injective,inj1sr6yknrmlwm6n5hkpcrazjulyvgeqtwvl73c59,732 +injective,inj1z75dj5hr59vgafl4u0rcteu0sukesyufqtrhdp,735 +injective,inj1gw4cz28dqcvednf7mqt24c5yvp7j9e5yp0yn7v,739 +injective,inj140zrs2kh46t69meamgetqf34cak23j0xkms3yy,743 +injective,inj1ahg9r32jklcr3tlu35cmdf2wxxffu7ceugav0j,743 +injective,inj1929zrqtdn32sa9ykld8v8jq84mrrry4gtch0h3,745 +injective,inj1jvw7syncna3qnfu6zw4fua6wqq8c5phv33lz77,747 +injective,inj1z9m753z9wx5jtdtstn2fy3l70kkytky0760hf6,749 +injective,inj1j62mjcz6hk32e8x2kuqaqgej4md2ceep6frfvv,750 +injective,inj1ym9r9d2qhkuqszj3f7p8qhy7n26n55s859xf9g,750 +injective,inj1wqts760eslh3wdegj4hrdv7wm4nswhtancj8v3,751 +injective,inj18dfw48mh2mjpj52v906lu5d5uznkysa2ncfrtd,751 +injective,inj16j7d2uanjeuem7k87my5fjeeyp2lsesawhdvst,751 +injective,inj16s7h7r6dyx4ccpcuwkegtv56uxpvdujefq95z4,754 +injective,inj1c5jqa0ugtd0mdd7dyfhmsa2y09yu0gfsmnk56q,755 +injective,inj1a8zg53dgwu8xmm0qz6slzzhh0dwha3dykjw45w,757 +injective,inj1xr09ghf62ng25strjqrncsy325l08caqtxp70x,758 +injective,inj1lc2vw7teag2evpdsl277kkd3zekrm90rjdyj7f,764 +injective,inj1x2rt065wwzht9m9gnne0jja4h4zeatjddlldvp,767 +injective,inj1wc7ymkyl903plv533fe66z08yshhkd8cmlq6jt,774 +injective,inj193zz89n0dz72jlev95r0d7ya03nl3e5m8chd8w,781 +injective,inj1nx88dl4d3ng0qng6gx7fme54ap8qpvp3ctwv4q,781 +injective,inj1czqwydxm5f29ayu89nnwjmng8f8zjprtrea5fc,788 +injective,inj10hq76zaemlcsh4c9x9h5akuzpc2a4998l7npzs,788 +injective,inj188v8ge0m4l66pk9zr9frdycjgru6m0umu8p4lm,789 +injective,inj13y36f4qlk7ppfhch993y6q28avp0yf46ux92jc,795 +injective,inj1z9gcs4qwnkwy5g5q3w33k7veqnkufyd8zj6pqn,795 +injective,inj1w6wep52awwljhu7z3rh9qk0368kjfn3sguyl6w,807 +injective,inj1kscpq7lqluusxhmzv0z2eluaj9yf2njayudlcs,809 +injective,inj1ll4ld4nrzy2gg2dznm89w3w8t5ptxv0e8cmprp,809 +injective,inj1ke07r4d8pnnnkm3527rk84spxuzzcfpve0t7kc,810 +injective,inj1j2m36k8uw84nefvs95rdy2gx8gz68cxk6htxxd,811 +injective,inj1q0gvyz6xc5e2jl3apm0xvl79uuyzmq42mmm33v,812 +injective,inj1leesdr4kv0uvpeel34zaxwd5nlqjx6sf6ugrum,813 +injective,inj1xd0pgs5r04whkkpw45wrl757rvd3qre455hy4x,813 +injective,inj1x4tmp5cwnjrywcy6ta2n8zp0xh62zsk00ur9en,815 +injective,inj1d07m5lngl5hs2wv0k52sqjp7qah8030gr2awf7,817 +injective,inj1x2lrmf80wgm4rvr6ltt0zs6faqv7wqz06ff708,817 +injective,inj1atyyc9xtzuy3w96vwrnnvlu9lar5t5f9064tsx,825 +injective,inj14mc3wwxsc88vw9pmeh0mxudtmkegl3k3u8j7ke,833 +injective,inj13uv35yq4ac9vd7r72z3uarazgycafkdjymv4zy,842 +injective,inj1kch8hscknr0j7teyyrhh8n0klwuhqt7vy47um4,849 +injective,inj158s3ln9v88chhyf953sqj5g7znpzlk5a47dp54,849 +injective,inj1detkjwn0wgapehgvwrg7qmtkspw3wu4nmctytx,849 +injective,inj1lv9scuz5l2xhuq6vq0qxnfukemr7hx9lpeesay,855 +injective,inj1g9njg7kdj4gjflljdz4k2a5nc256n5qvksu3qx,860 +injective,inj1nuql0ldeh9mm7fnfa2s3epe0cjj6ktmrxxq5ln,864 +injective,inj1ddqzgrheyjcvazu08ksx0jt8l83nxru3y5n3sz,867 +injective,inj1s3rtawm78dkwlfsyu5qaxtfc7mpdc2psuskv2t,874 +injective,inj12arr9l7sd9twf04l2e3ej4klwpdxvmn4jwfz0m,876 +injective,inj1yjt7u4lkmd4n9gt4rksky6c4cmlvsr24wwpt6j,877 +injective,inj1guk8a09h22avvulr53y9pln4hpql9a3p2wmdtv,878 +injective,inj17sfx2szh0mpcp80z3l002y457nr6pmklh4qgjw,883 +injective,inj1u8tvdf3ql286rpuh32vlyeed7pp2m8ene3xawa,886 +injective,inj12d9cv2q9gke8pv9sls49wztvgg5shqqlqmxxma,890 +injective,inj167fdwcg79y5e5vquwd9vxky2wh2kx4q4h2kll5,892 +injective,inj1deqtnk93hpw6dnt9z2wszwfumcmyfkzh4jykz4,899 +injective,inj1a8fkd33ua45pplr6m7hqq57aa99vddx4clhwa3,899 +injective,inj179w4zm00vfnsl7wnyjle0nxqv0527jklr50994,900 +injective,inj140vyl69j746u7rfngt4s8aj3xl3vlr8juxkkxu,901 +injective,inj1lm62jcu8mgvvuk9anfyrmxu49zjqqcv4vfuyn8,902 +injective,inj1xevlglhuxgx00d0h5j4jzez8crddxr5sxg0rel,907 +injective,inj1776ht630g0kvnkvrur5rhqzx8c8dzmps70pp7x,912 +injective,inj1p30hglwhvjpc0y3uyur3erlywphpt47y5yzfdn,914 +injective,inj1p70empsetgpa29dpv6tyvqrw58pqqcpp9s7nwh,916 +injective,inj163mkh9cugqxm5sscv7qnr7ndgwc3gzvng4uqaz,924 +injective,inj1cu6ds6q4620n7f5sqwv4c4c7rfvq7vw0hudphm,929 +injective,inj1sx6n89e7j75dj34pk8mmt8s7e7ns86rf3ppm4k,930 +injective,inj1l4mmqdeg69j6htpjgdgd2n4tdkrre4cg0dmhaw,931 +injective,inj1kzvxnya6edc7mqfsexd2ac4v8nk8yk4hwfa5ke,932 +injective,inj1atd6erlqfrlvc254nlmy0jh3tun87ldne2mw2c,936 +injective,inj15vj3w7qap9wt6qp890wrag5smcuwe70qtm5jyx,945 +injective,inj1mj7x5pnvnh37ank95p2t2f9d788x4cy90rd6th,945 +injective,inj1pxxe5ac080vghmmquukgxw4cmvjq6kfgz3jhm5,953 +injective,inj1hfvtphf3ssx5u98we7lk9gfmltzwdyr00mg7fy,955 +injective,inj1h36ycn48n84me6tjxx2gu5t0svf3lvw3xggj3c,959 +injective,inj1uuz6qrk3zy0hfal7qt8gawspd2k8u3m82hzffj,960 +injective,inj1lrcq5lh4crdtfxwfsuaw630h26twukqu7rzsem,960 +injective,inj1d6eqknmqpxqlfph6xth84w0hcuxa8f76qads0m,961 +injective,inj1du8s33jfmptgamruy0dzgr4s9vglpmza3q27xa,961 +injective,inj1026cdm6vthmsp5rak4hgd9ys00zglaz8j2pxgm,968 +injective,inj1fttmezealre5zvq6vmmpxw6d4s7whgg34t90t3,972 +injective,inj14ge9shx2p3hdydqkzwv9e70xg3cvfyh0a798k9,977 +injective,inj12pcj4zy873n5jwz0stygzjy5zz2xqkpee598qf,984 +injective,inj1ttrmy4yf8uyzjcjp8k6yu73gzlj80uxhvg66av,990 +injective,inj1ql0alrq4e4ec6rv9svqjwer0k6ewfjkaay9lne,995 +injective,inj1233jdalep50eln24ss2th5r6a7d09gg5axlnww,1000 +injective,inj1088gp6gt6cctpkvwnxnx4362j5ferda3e2zlwe,1000 +injective,inj10g4l20nrr3lenyew82fw7460dha7eacs9kmhm5,1000 +injective,inj1t22rm3eqmn96kw78nzxq8ny6npuv32xd2naelq,1000 +injective,inj10hydcf4e4qe60gw6mnejzqml8d443t9kwqre2x,1000 +injective,inj147azq0dup9xp86pk5ztvtesp4s7el2fs3zkexj,1000 +injective,inj1kysnvf0tmxg6avmth54hacfk4d743g8sg0czrk,1000 +injective,inj19w7rnv2usvrh8lpl855n9z44fkymnx6kjcahmw,1000 +injective,inj1z9wpa5dugr3wn3fenct5k4s24dh8gdke76e5xt,1001 +injective,inj1nna6mutyt8py08j0fe6zvnkx26cua92q7qxqh6,1001 +injective,inj1yxg5wkjjzhdf356rrzsrv5k727za2ql2yxq3wn,1001 +injective,inj1tze043nmdlp6xwxsz4u06s26qv5gyz06udrlwd,1002 +injective,inj1hwmuu42ysv27zadqm7ysupr989qkzyt27l877f,1002 +injective,inj1vc08njrct4zs5zqst23m7gnn5np85emly47f2t,1002 +injective,inj18qgtccwvfuwjh7yr9zjyj7szx5qt9mypl75axg,1002 +injective,inj1xz49m84tfykl4ymultd34uq9guump0pv9kgh74,1006 +injective,inj1cuanut9ja8j3egvfwgdfuquxvzq76nl00ee3m3,1008 +injective,inj1g6upffm9e4aefyly4xy8caastydgvvrl6ah6sp,1008 +injective,inj1fdkfr5vldpxeas3hv6zumla7w73hfescpkx8hj,1010 +injective,inj1qlluw39c647cdc4cja8ks2j9zlu4t9cswfnfvf,1012 +injective,inj1k4d3e8j4dnff267akfqcrt3k6uc7pzayaz30sm,1013 +injective,inj1v9hzj4fvwfyq6m0n3w6vu6224v9wp5sh9hulw7,1014 +injective,inj1d3zxjp4v25wtkf8gwprjt6sa6d2j4rltf64wnv,1015 +injective,inj1mgmf6r67ncw83nt30ctq6lv69v0e8gcz09gv58,1016 +injective,inj1enrgamqt9gkr52kfhtuk9ajkfsy5yxlyffhuwf,1020 +injective,inj1zfsd9e79m2n9sevxfrhc5d3fvgf6tvhxp7gr28,1022 +injective,inj1w2r5fuxgtv0m6vd8rmvajwxswsdfaujgpyh20y,1022 +injective,inj1cskmkzvx52mdxrl8azy64a469fev48fwzxtr4r,1024 +injective,inj1h8nveaqe8hy0uccw43rtjl688wqqlkpe39pvj5,1024 +injective,inj1e8wdf7rfx625xmf8zx8zw7az7ktvs0cad3ehdg,1026 +injective,inj195278tmr33vg7tnvlddcm55haqgxe9mezf238d,1029 +injective,inj1my02afuem5cxlh02sh2j86hqw3ccm52uxas8hf,1029 +injective,inj16pzr84dxpt0kgyx9kjj5v43vrrnfezp8efn2f2,1030 +injective,inj1h6zjvqzrha7u9meft0wku2rujecan9ltky308r,1030 +injective,inj18vz5y3vmzeuh0lq2ecfwqzvw7xcjv784wa3v80,1031 +injective,inj1wjre0lgjkkujjuvsjpm0za5zvwtw0l0pqcv30r,1032 +injective,inj13wwgd2up3sc8kaefdu6rw0q3nkes6myveuexdw,1034 +injective,inj1wukx0k7a5vxcqyr49xwxjqsqxq8p0jhky8ye0w,1034 +injective,inj1jsgd7tnv0uprcl7wv90qwmx2crh7hph467q7ke,1034 +injective,inj1cmckzr8xz9u7dtqxaw0hnrw5z30e84m78sz6m7,1035 +injective,inj1v9untjxdr234svafmsm0pc2gzfrqulzn0a2jyy,1035 +injective,inj1t2mcv9hu63p5fncqz4j8mke35p5sv2gs5jv3rd,1037 +injective,inj19vw9jv9za56xcp4pyaw2zf8l0guh2updmpwzdz,1037 +injective,inj1pxsp5nx9krkg6crw5w6zh0k8z3gh8wkwrjydfv,1038 +injective,inj1yaxdt0fqfkql0dpyun5eexakmuy26yqgq22nk2,1041 +injective,inj1ufx88ausw7pvyxhf4jjvl472cjcyvvwwvvu2zp,1041 +injective,inj196ppx6n5galxw4y3mcktftrkexjufyhtfrnmdf,1046 +injective,inj1kznsv8vxsgnces2t9nxv5eug4wjty7fjpk6r0g,1046 +injective,inj1pv8mwymhdhhcvdv9rt68jgvl9p5lg7a7vt9n2f,1046 +injective,inj1zkuy08797560wujm8uvulypy2v5yl6a0uxhak5,1047 +injective,inj1rgng4z94s668tl6tmp5g90e0n4ucwktylzcgmd,1048 +injective,inj17xflsy3dt0seh59ckt7p4fn93rv3hsk03x5p6p,1048 +injective,inj1s99tstsksk0vyhhpkhwdauumvzvfeq32u0lewz,1048 +injective,inj1jue5tlzv027gusx46vttcxpcutrrhcgn89avsu,1050 +injective,inj1r9fn4lhs0cuchlar9mn6l8dmwrrjx0m0chpcez,1052 +injective,inj1ul53jeuuqsus7s5mg2870k6fau9uvsh63k7fht,1052 +injective,inj15a5mvuxmzx986hudjzy0ts7vhscq0n2nghf00a,1052 +injective,inj1ep73nvpnaxr9jedr4v9vlzs96hpz0w9fclt0e5,1054 +injective,inj1r4avkyy6w7hgkmx9jzrys3x7qfwpdaqq6r24xu,1054 +injective,inj159vcydhxwav8m03l5r5cqparw3dsntyxappx0y,1056 +injective,inj138y3u2d3t62spdxjg58zjuq6834nqc4td4slll,1057 +injective,inj1smf0ar4m35dkznquyd3hzks3a8dz8lnelw2e06,1058 +injective,inj1yte9326pp468sk0rwslsh4cnj5h59rqu345u7j,1059 +injective,inj19gl7damda8k359726l2t7g42kp4swgv2hu0sj6,1060 +injective,inj1dysn2grym3u388dd3ddha5kfst8qlk3pstt08q,1060 +injective,inj19f2awwahdrp7ak6cgvk39q476xrlhcxmfra7tn,1061 +injective,inj1kghg03xkftmpap3prktmat05el8gw6e3k9v8z4,1063 +injective,inj1edgrjr20m8ueta26h828pjphq8a4dlz4wkafw9,1064 +injective,inj1htc2r00qqetjl87sapuh9l5u2kdluemsvz4fpg,1065 +injective,inj1y6eqs4fmml80rsg22u7ghz5u699xk6etz5d67c,1066 +injective,inj1wdf3ysxjhkgxhv4qm6rkce4w6xphpuyva3dwuh,1072 +injective,inj1za46sxvm9zqqsup6ypmpwdzpd9dm9zzu9pw2ts,1074 +injective,inj107rutcrpkr5kzmvz5cu77hkpklh0vpfghquvd0,1074 +injective,inj1rehudpfuje0tnycdu82r37hq8uy52adln2aujj,1074 +injective,inj10rkms0qkrgsshfv843v86mp7wg4f0d25dl708g,1074 +injective,inj1hv9kxn53k9mdlngke47cv6946sp3m9suxx23m4,1074 +injective,inj1nm3l3gls643sf7eaxws29nvnkw2t6302h8nfgm,1074 +injective,inj1ykg983jqd4wuadwtcxynxze3xptfjt6lu479ww,1074 +injective,inj1474xyz9dxe37ujjlpp24jjlsrrmd32cj8yyn3g,1074 +injective,inj1psgap2nhuv3kzrq4mh00vfuva24ksu7vyzhv77,1074 +injective,inj1xjgxavxfg88dz639kz2g0vs2p89x77natcwl3t,1074 +injective,inj1nwy0jxzssy69ttz0pmuxe9ymt2knu2ycj4hmr9,1074 +injective,inj1rayhdruevx86nrmuz98agwmz434cu970dtwt2l,1074 +injective,inj1d7zsq2y4a33qt4wm5fu7dnpz8xqt67lg9cd3el,1074 +injective,inj1hwrsrpzqjvs429sqejsjm3qvzzl2dsv004e9ye,1074 +injective,inj13twnh80at8qfleaq63ys7d0tyymlxuahglrqur,1074 +injective,inj1qjllwnqlm703qxv0txlyv3su7cfkrd5y8en22u,1074 +injective,inj12g4qyw8ukcvqwdhhdy0ktq3h0dvuwcvfeqlnhd,1074 +injective,inj1all75vnnt5l4rz4jjaz4q6n7see0dervt76e04,1074 +injective,inj1pr2aj5dje87sxdwlp5ajzztp9gwhnnwtcrnaej,1074 +injective,inj192x3xtc3quuykwa7w3axwwk43das2vu2wh4k0k,1074 +injective,inj1833n7vyr79e7kl730waeaqyjcsk5vgksycy2yp,1074 +injective,inj1fvpmetq22yy6vcyne2q3nl3etdl0pd6aqxykvw,1074 +injective,inj1atdst69hp8dntkjy50442qclukls94nj9kn84q,1074 +injective,inj1d5avp8uswt5se5jn0l0pcpr4hl5mkzxycllqsj,1080 +injective,inj158rsyehejngfqtx3sg3w3r8x7eyjycd6rd66vk,1082 +injective,inj1vxhwwehh6v2e9nmkkhe0vcr6p42a789t7atylu,1085 +injective,inj1yhye9kq4nep00yefw2f0959pc33qzqxxxv9qav,1085 +injective,inj1q9s2llm602pyg2dgyq5et5pj88fdgx86e07f5l,1085 +injective,inj155pq7x8gv0zu34s9y7da47ads5l02uvzf7r8k2,1087 +injective,inj1x30lwszgqk8c49ta0phaj3qt3rqn0z8ldmpk9t,1091 +injective,inj10wtkpw9e3z6f4c6l5qgsnl3n632pjee7r6cm4j,1091 +injective,inj14r9xw365vdsnequx266urfkvxal2msekkp2wg2,1092 +injective,inj1pc4rlpcfydr2gttwaxzdr8um0mqleex7djml5a,1095 +injective,inj1elyanf86hemq7y3sht9ncc3dl5jyrazar0r63n,1096 +injective,inj180laugghlf9cqqu9zm975nc85r77866vqpfdh3,1097 +injective,inj1xgufxsckyw8thksllv3fajdr00mxc4ty22yc06,1100 +injective,inj1la3dr8u93vw6y2d9v30k0xvr7jjes24dupd59s,1104 +injective,inj15lhuqnupjarv8qfqtnfhdl6quyax22mjjdfg9j,1104 +injective,inj1hq89p3crye802qppwucezr7ypc6fsh76qcqdkq,1108 +injective,inj1yl0t6kg8z5dcn6tnnmqt0kuwmrfgn7wx3qel4x,1113 +injective,inj1nc7g3qck5tjrut5hf96pk5wgzr4ygpzk4xuhwe,1118 +injective,inj1nvusttrq7rujv7h3jv0m6sk9cd0uaatuse3k9x,1123 +injective,inj16xzvhscw7wepss4my524ymhz9qrxrkytza9665,1123 +injective,inj1gp3ye0wgy2vdfrrvzny4xdy0qvjsuugnhp46cz,1132 +injective,inj13rv3qeh3nlgxpqd9h8yue6vac5d0t23qu48ghh,1133 +injective,inj190lg8y76stdevd9hh9056vq29494xdhj639pju,1134 +injective,inj1es73v0wympkwxj96mprp2428msncwjdek5wqg3,1135 +injective,inj1ppxg6w0dlun0qw86qyx68t6pww5hmtstffp3l2,1141 +injective,inj126gd7qcpvd5q7ndzq3nesc2v8awzfaj2jza794,1146 +injective,inj1cc9zzllf645r3fdal6hw63rrp4zxfmu8nj8d4p,1152 +injective,inj1wc69ul2wqglqk3dr50zzj7c4g5zguxxvc6x6ae,1156 +injective,inj1svv4j8vc6y3uqmq7lf3rcepfd860308d9fd0mf,1159 +injective,inj18jrhldcynduwr7q445v8k3e83nc4f9uwufe4al,1163 +injective,inj1tl48xszrkxcxe4lwj6mspvss6f6u5t86v0zm7g,1169 +injective,inj1hhkcmf7u2lme46wjlrzqvejhqg862vs05zfs4c,1171 +injective,inj18qwxwmnv0pkt8e6qkdtahz7tyd9dqx3cvmu4q9,1171 +injective,inj1j3rjzwehcf6sz7tfdznkckacprm2vyz9ru7etu,1182 +injective,inj1q4pxjpkh2exmn6fx0lwla55ds38gr9q26eph0t,1194 +injective,inj1tc87cjekwhrf9tdtv2j6yzu0ed68dslevt2wuh,1196 +injective,inj1hekfhlv9p3aa482kvj6qntnk8pn4m7kmtucfep,1200 +injective,inj1drx34cdldn3gvfnyj2m03e58qqrr8vpf6kuffk,1200 +injective,inj1cm2ngg46egdvlfwqjqawp4z9lqu2xc8ewhrzyw,1205 +injective,inj1n7l57qqstk4kz4dphr9p7v36vtsysyccdzeajz,1210 +injective,inj1krsm6w3x9hajmkr74d7vsmkxt3trw6rpcta00g,1211 +injective,inj1uk2mpymssuepm2dsl3c9efauy3a4exmagugac0,1214 +injective,inj124khzly6l3xsqztdmmpr6kyj9d7akeecaalquq,1217 +injective,inj1gjrxxytz676lya9tvmmz3u4rmqs9523k8wyl60,1219 +injective,inj1vpj90wxsaujj9d8qduse0qrhwut6ueh0zxue6t,1222 +injective,inj16y3yejngscdsyqzpu3f29scdxecqgwn5vmdulv,1222 +injective,inj1wyzzaspc6z9cwlvdq0p74phmn7j7j9ykau2g3z,1225 +injective,inj1tngfgwhadxt5puwuwuyl869chxj0k284mh8q4s,1228 +injective,inj1ufv7u4h46pang65szhdq3wx7q8330x847frut8,1246 +injective,inj1rh5xh2hvzt6ttar9hqxq0mzpk5dw8ann9lpfzm,1248 +injective,inj1uhwtuuslh08fsnncex9en7hrv5ae8u29n4e5t7,1252 +injective,inj1f0rgctzp24q4mvudd3gv4tnvq6ctssueal0u49,1255 +injective,inj16xtptuh2k24lha72zesckhk5xwrrwnwszce3gd,1255 +injective,inj1gttl0sevjanh8e6vhwm76fmtvr9m7vq9z7wfyf,1283 +injective,inj10ykv49fh8wx293ywsgdash9hzcv55eynd6hsfm,1287 +injective,inj1aykxnjxr3cfcqjac68qrysdm2y3zdqet7t4qj5,1292 +injective,inj1q40a3qk2wndrduanwxv64tdrahk0fu9v2yq4q8,1294 +injective,inj154fuzw4c5tqjvfuzx4yfa6l86ec3wz4rnw5htz,1296 +injective,inj1wqveuaedel529ldglqh6jn68atz6w6hm0rxhmr,1302 +injective,inj1h6m7myzw738esh4wxu0rxw83pj6gw2zmc9v4tf,1304 +injective,inj1veyc296va2ljy6ruqv3h30nu58wg59vrjz94g7,1305 +injective,inj1yqzqpnflcr4xggdn3484679pe6xlxvzqj4kyhs,1313 +injective,inj14yeq3lkajldaggj28hmq8xng9xux7x5gzuzurg,1324 +injective,inj1wuhhvace67f0qaa6ve02ggffe5pjqy39ws3eee,1331 +injective,inj12wuekultpmf0n7q8u4jr8mumdxzh7gathkk4hs,1338 +injective,inj13e9mdx4my0dsndd409urlwek6wl3a6a97asfge,1340 +injective,inj1n8z76uuyruxk2t2ku4skujedk6vke9c858rvdz,1345 +injective,inj1a69undkz6qrqxkakx9lw996pjazc58jtvltaj9,1355 +injective,inj1tccglw99aw8u52rx626fz49cfxe8fkg5ucgard,1358 +injective,inj1l7kaksjc5catja7w47pcsjqmzag6k6g54zdf3p,1363 +injective,inj1gewsalnctghztx2358n3qh955myr48f3x0lw3k,1377 +injective,inj1qacp3gtnzlvdt4mp4j7z6vlr9527hwgkq3m4ke,1379 +injective,inj1kuf5txyvqaz67z2h5dz0wn0x7xmn65m4kfkreg,1415 +injective,inj1eefhpqmh6d984a8du03fa5yw8pmtwx5ktgjsw7,1418 +injective,inj1hpkyay4djdd9ygjee3sw3500u8frgj9ge0aj2r,1426 +injective,inj10klzdt09g4tenh3q9mxw3tc5rgycj3decprash,1432 +injective,inj1c9rm20xn0563a4ss3n897vps980mj6zpwdx0t3,1440 +injective,inj168dym54j9m5t96tvr9v6c9d4jjumgnap0gn8he,1444 +injective,inj17d0c4edenlagtggf9efaugkyjykk5csxrhtkef,1455 +injective,inj1vpu73hkgfu3n66sqtmw0efxzj4a9nxej98hmyr,1465 +injective,inj1ccpwpkytz933c7t4hcnt626wemrfm2g4tynhse,1471 +injective,inj13fz6ksyq5rxvf3drg43e73xr8v9x6pz6ftzk0x,1477 +injective,inj1f8yu7xlddrrv8m64hnv28n7k9zncfeg0cs97fe,1479 +injective,inj1zg6z2dqz20gk8t0mapx3pr0qq2uee7jxq5c6ds,1480 +injective,inj1nqqdgqrg5suq5uuhmj2lsvf09e5955n90t828e,1482 +injective,inj1ke5ykdwnp8j64ddzm84pc0fgl6tt60jvdx5tdk,1491 +injective,inj1m68anmvmdpkyq9x24dedgasykuyvqspkwrd8d4,1496 +injective,inj12dxuts9nnh5fw792jcmlcuf3jyadwpdwykc8ej,1497 +injective,inj1ptqzgr6x2mwgq6zdphcjpzaerspzquja06j2ud,1497 +injective,inj1eh22luevqshn8pnjjjlfdecp8e56xnstyga83v,1500 +injective,inj1hsxaln75wjs033t3spd8a0gawl4jvxawyuez5p,1502 +injective,inj1xkycqd00empnu3p90mg9k82lg20778mvf832f6,1505 +injective,inj16eg6wf2k6v0lzwu2vsrhxhe0tcycgr7jvrjk9x,1512 +injective,inj1qj33wxtwn0cwprus4pmjvtmw8ga8edcm48hpp7,1512 +injective,inj1ep6ysmvejc7n2sxdu586kx6h8s5k5cxxaq7yuk,1522 +injective,inj1xwe0rn3t0yhl3kmz2jldccchh6sa9z35dy6c4s,1526 +injective,inj1um98ulpzauhdedgx690aglta6ef7pya6d6u8ss,1533 +injective,inj1t7wd3mrlvz9mma3ahsykghyq5qpvay9s8df2az,1556 +injective,inj1rth4rmpkh54rsydd9dk5mvqhzf0l766pr28ejq,1557 +injective,inj1hz65v4984hg26wwskz9plqp4v588fe827vma8x,1563 +injective,inj1kj0n5zq9g3fkdd7g0xwmxdh7rv7tlgrwfpp7uf,1576 +injective,inj1uj4ph0d3cad8z3yzwhzw5wfmg0ln86e4r96p3n,1581 +injective,inj14e6dft6nzqtslzevqgnmpjx2wryw93u0u6ekq0,1592 +injective,inj1wyfwqltxqtpgrq99thtk37e7x66ex9tp2pce7x,1592 +injective,inj1vmqzqjxv9swcd5wpdg8lxen4qux3xyn07k05wa,1593 +injective,inj1wdw9z0x8f5h2unwjtcx537dr0qdj4m9s6gs099,1599 +injective,inj1nsnyp4fkwe9w6ymue845re7mtp3qj4drsgle46,1601 +injective,inj16xeumy2lnwwl4zaxw0juvd7dyxu4ea7xtram9g,1601 +injective,inj1hd23nedu9ualfx75xmra9ynjk3j3wm7dre072d,1602 +injective,inj15zt59kdftpjjd3c88r55dvxva40843xww46qjj,1607 +injective,inj1q04y60leaadta49vprjhafy4h8w3dfrfn9l0gh,1610 +injective,inj1swxgpvl7xa45qsmcz5rawm6hcmds6lgegyephe,1610 +injective,inj16wgaaxwg8cxdcn42sl5fcspha7rfxkllw2dupj,1616 +injective,inj1lfhqj39sjes8urgqg4nguxkesulmprxq5p2al0,1623 +injective,inj1ysz463tz2hczukmzslh794q3ryqwd8fec7073f,1626 +injective,inj1ftgzguxfgmwdhvjj2h8s0r9dczwrf0mcgftnqz,1629 +injective,inj123tqp7333u08za6klarpeu88urk07z8r6kuyq0,1631 +injective,inj1v84f86mv0u6d8zsu5sq60045yg68tca8lafrdw,1649 +injective,inj1hfzxg03lyu35scr8m7pwxj4jwz7t55wccfzh6k,1652 +injective,inj1nhtzq79cfd0c4s56veyrdcspmvhg9cdsaasc02,1654 +injective,inj1padd4083stw7ek8m69pd9pdpzsfrt9tq4d46de,1665 +injective,inj1n7aph65yevaqu996l6hxcvtjjwtx0hw56e54ff,1674 +injective,inj1jd6yhau6hg4a2er73hfrfu9k3rgm86ry6e4nxk,1677 +injective,inj1jjqr6mpuhqz6xz9es9pq947srh9jvpya7937jl,1716 +injective,inj1zveu2wnes4r3ym9qgerm4yj5skn0574dfl22n2,1733 +injective,inj1vkkhg0pmy5c38ted3je3rc6eqr96rqusax2dka,1735 +injective,inj18q57fesz9v7sfkf7tl8qutsp37q8ae7mm6x5yr,1751 +injective,inj1qxxcv79hep43qlalzggat80qxka0uva87ckue9,1751 +injective,inj1sz4ult43grg83kp3wyw8zwpp58d7q6j24r7scz,1764 +injective,inj1c76nx36sm9e5qvjkad7flxg35vl9awsa0qdwrq,1777 +injective,inj14f924awcer9fd9fzxkdhrhx555yfyksjxu0dk4,1786 +injective,inj1j3zefpnxll2f54mqs7lrxyrw8ylmkc6dhff6yl,1791 +injective,inj1yajs52tncvayygeej4a6k9jl2nfwc2sua979hc,1792 +injective,inj1rhu4qg34xtd9eturjxzz47trl0cdxzddqehu2n,1810 +injective,inj1v2xylfeyry808ltt0hwxggzt0fns6uwhfnwna4,1844 +injective,inj184vaug0mwr368j7sld059ceydlh86ednw0jp2a,1852 +injective,inj1qg67pnx0sy69dluhuc9v9g446tq7rdkektf7fw,1854 +injective,inj1kl36ed0s9lns6em4sk3umwcjszwyvyt9396s28,1865 +injective,inj1tcd6d8x9usx3cluvn6eavnrt3l60xv62y56mxr,1869 +injective,inj10892gs2pzz4305nxjr4kqvrpt6eqcpssdypwdx,1884 +injective,inj10drfzcaf992aeyzluac6f8nk4vyvu5pt7elf84,1912 +injective,inj1xwvcqzqumtne3jwujr0f97j83satp0z2ex4pee,1917 +injective,inj1rzec45csjlxdhqj5560tj9ys8ta70cmj3eep98,1926 +injective,inj1s5v8mhx8vluyh3qr8rr88hs8hfsc8hgcz4knyl,1953 +injective,inj16gdnrnl224ylje5z9vd0vn0msym7p58fcf4cak,1956 +injective,inj1nk5yry5x6rs6jpyht7lzpdhr7f2ltdm3gv0gjw,1967 +injective,inj1q82fmsgee627wh2w2rthy6eqt2jst9wc3tytz4,1970 +injective,inj1fhmfu5vegvtwue29dggdjvd402mllswd2h8xes,1977 +injective,inj1f2kdg34689x93cvw2y59z7y46dvz2fk8g3cggx,1994 +injective,inj1ps9u2zch83w3m7kjl0cuewujphw9jwsakxz25l,1998 +injective,inj1j0wzk3eruhlxd5dqy8wx5lazylhyk7tcfsqdfv,2000 +injective,inj1lpvnt5rn3hc7m2upzu8dmqfs5h3hqdj3kk09fl,2003 +injective,inj12vk8kkrfu8vaexrttduln99mhzja666egfmxf8,2005 +injective,inj1pp4gm3mwar8xqtewu7unjg3h8875n8uka49z2q,2008 +injective,inj1rqxgq0d72n2alta5sv2przvtvarycwgtet9vdr,2015 +injective,inj124d8awqp9lp2xc3wgymppex7lxq7mmzd5x8jpd,2027 +injective,inj1ghp6dvwwmwpmjlna5mzzlfxwmszzuerfm7q5g3,2028 +injective,inj1kft92g73ajxgd5vzzzs2f25f2rfm8yj4sy2yut,2048 +injective,inj1rrke9pce4z23w20m6ndlv9ahj6xegrrm2u0q4h,2049 +injective,inj140rt3nt53vu4a09qejmqwylpm6dcapltmlr9tv,2060 +injective,inj153y74g50q47wuw2cjgqnr8gs70dqdjpjyq4cr0,2066 +injective,inj1ghawehfwjspp38s3s6htspwske5kgnpvjwftj5,2067 +injective,inj14mf53mjx5emt34dl3rf7uvs8yytupk98752eng,2070 +injective,inj1eytp2knxsymdvrvuskekfzy97njmch32q6lrcj,2072 +injective,inj105vyulcj9uxtss72vurmflztqqwfcgg279p6h4,2074 +injective,inj1mxvz6ngqjnpet3q2u9n5xq4pyzyfh9r5u38a8c,2083 +injective,inj13wlf49qrrkxp86z6eg58yr06t25fw7wnwk2zm0,2084 +injective,inj1vxdjqamy9etygtae04q6kxfvccehrlrusjxvmk,2086 +injective,inj1p8rzxt25k5vyrgsz6ahhd7n8nh6n5we7vt6cna,2093 +injective,inj1qk5mkr7gzzjk90kxvc3jx80dgwrmmt9k0k0ek0,2105 +injective,inj1xaj052lm28zh583f59t52dz0yd97pdrvcxlec0,2119 +injective,inj1mtrqgxyzkmw5r7nlgeyekqkt0rdq6ej08yxhaa,2129 +injective,inj1fxc5f5efkztdyae9x0undd0a5mwl3k7mkkpffk,2133 +injective,inj138j0ztv89j7q04f6wuhwae9r4vck4shs2dfg2m,2139 +injective,inj18ydldlwyx05ytr9k0h4atp60val5kj2jch6f7d,2152 +injective,inj157kkajxv0vwntjv729c245kzt2la3ktyw96wh0,2155 +injective,inj1rqvyfa8z4a4z2vq38h0z9hn7yarq9e9qmth6s0,2164 +injective,inj1p0wdwkus0aasek79dhyzlauefdhep44dauappw,2191 +injective,inj1u7gznyy509rpjx85lgx0uwsgx082j58978kl53,2194 +injective,inj1pu2pp2q4zp05g2dyqnfpqxys4ggaj723j25h2f,2203 +injective,inj1cqkdaygzqg4r5egsta8jlzs6u39c6sh96ygv6d,2214 +injective,inj1azh54f5feqdp6un7kws2n05742ahcxla34xypq,2216 +injective,inj19hq2tahs0mu7sdr47am0accdqj4lkz8u6vzwcy,2219 +injective,inj1s7jmd4dwyv37m4wv3kwmefgkr4j8y25g3meetw,2280 +injective,inj1lacu0apezlhtg5tvrtrxzd9s6vc6rlu56m6uu5,2301 +injective,inj1uk78ramqv6m2k2rgmvswds5e58z0p2l9hfzs7z,2318 +injective,inj1zt8p8dug9j5yqq043g2h0qc8c58kejx20ay7dd,2341 +injective,inj13phjaywhvx7qwtmxrtxvjf04rq9x8gq6jfcdnd,2345 +injective,inj1k5vtxymwfygsru3twlectl3zy6w9z5vgcs55a7,2350 +injective,inj1cjta22m5tz2eh38zjlwnep6ep3xe0es4jprrf4,2360 +injective,inj1ftsame4aq2yv22l3kr3a3qxcqhcxd0v76jnayn,2383 +injective,inj14du4sr3vewpznh6sj7whmnld4wp09rq8pnmutk,2394 +injective,inj1g6grlgchxw95mxc5c3949ygw75hqpghqhgkj0k,2412 +injective,inj1vx6lpftk249ruhtemwsc4q2xrncqc8rkr2d9z3,2413 +injective,inj17tnxwwzkmlq0x3utl44df0qfe28cdqc7e7phmn,2456 +injective,inj1ac27hxn0dw5e72q7gxr0p4hyggcm9cn7dmjqwv,2456 +injective,inj1074lpp3mvfq72tnyq5pmx9ft6p86vz0put3vre,2472 +injective,inj1hxec7chep3l0z4y8r5x4cwf6r75rthpm67kjkh,2495 +injective,inj1wwnm57axlap3wp6ew44vc8hzzs5fmzhlaf3xek,2516 +injective,inj128tqsxe0haaptypz7fjt2ateyrrg9kq7ys4y69,2553 +injective,inj12rknfru9mcrh9fsl7camuv7l3kesmcdjh0sv00,2555 +injective,inj19mlurn99l0pd5f6eufk3mex54ppcdvwrcez3l5,2571 +injective,inj13zh4gwqnl9d5vzzucwxpwsklj5ss970tzs69zy,2573 +injective,inj17cpaqf80exsytseljqj4veamn03axkcptwamke,2584 +injective,inj170ydw39rfd60ajsmws9sykhpyj6z64h2pv7l5g,2598 +injective,inj16saglu3l4t537px6zr4ee9pmn5c2hgu6p3fr5x,2610 +injective,inj159l9jcsn2cprpzjevfjyqd5znjtytvmlftqjm8,2613 +injective,inj1te93gmkls26lpsxugsyvjf2qvcylwqej7svfgh,2622 +injective,inj1xnc3mhn9wcltzz7ngr0c5a4tszjgehlc2p6k6l,2650 +injective,inj1vyuvrrmcqskdwkaxn6w0chq85drdgu7eyxx86c,2652 +injective,inj14a0phavwv378cv5nt07jyal5r3cuhnp5rewyc6,2663 +injective,inj19wvg6x5ce684swhgru35lzhc8s94plteqzm5nz,2691 +injective,inj1sxy9fvmrhyrer20tc20zl8rlzp27ukjdmj9h6v,2696 +injective,inj1hnm4ta664466w3z8q3ng570qts4yg9ar2szlsr,2698 +injective,inj12cduq9du2f3kxj08tdj3phsw4ymdx80j8mzzas,2705 +injective,inj18s5xh2rnkgpceyfreflkf7n5dwmvk0la7cxxhp,2707 +injective,inj1cvfslqaaea0gfamh6kzcpn5emqg6aggg07t9w0,2707 +injective,inj1yr4mr4eax7z605jnsauxjc9lecg36lqd7hksnv,2734 +injective,inj1cwkh3j48np8v4wcxc675jdxrmr57l4vngxjvxn,2762 +injective,inj1kw74q7p40mkrypzkl47q7c5qqjpu9d22c23j9d,2777 +injective,inj1tvvuprcg79apfn2w396def2wl3kzzgg8k086tg,2782 +injective,inj12gltyzz3fud2dhqn2r72lm23twkzg6ltunrx0w,2841 +injective,inj1zrpjszekwvl2j6dzgacs6k38hhl8xpkk0jgx8s,2849 +injective,inj1nq37nq79w2j76xj8qhjzcn6vh0wlx0qka9t867,2862 +injective,inj1vlzrqf089xzl8nqe4j0c2ds68umsc4x2ue8a7s,2873 +injective,inj17eukxdjvqetsuw7unrea7rs3w04jc3zjj3ugkw,2897 +injective,inj14a576sua7t9vzxtjt57ewqxavsjlwnwemq2t3v,2897 +injective,inj1mhl9te4ht5quq7757qky9w3un7qqslr2cv9p7r,2922 +injective,inj1asyxtn9vlgnt80d3f43r4az5rrdh8n9ghnyd0f,2923 +injective,inj1hl2sgafhqwam4y6k5du39fqldnx32d27hwkadn,2983 +injective,inj1ealtj425el9khmgzrn0l8ehnj4d9m7jg6y9xl4,3002 +injective,inj1mvkdjntcqf5zqmspz0pglsfmmf9njelz9h387x,3006 +injective,inj1e9lprl8l9c4rwrr27dm2hnd2qpz7xyu3krhnfx,3006 +injective,inj1pcxd7827peeydsufrmzdae3gw7dmaayfrarjtr,3007 +injective,inj1497c6jj77j82288pnvlqjmq483gnvwujaearlw,3013 +injective,inj1x42sskl87as2x8228eutzgxhh7frez444km53f,3044 +injective,inj1jk84nzecx5v9gt6lccj5yezenn0kz07frguktv,3046 +injective,inj1z3fgjmp3u4t43ag7c7mz4uzkmucp4a6w6jnsns,3048 +injective,inj17lw6c2xxflhljt3sty3sch9kpvfhcz98apdj8d,3049 +injective,inj1uh97f0ghxgs6z00u2zne35gszf9d8077yx0349,3050 +injective,inj1u2c3agnysy5rzl2c9668jdwedplq4w0k4n7yjk,3052 +injective,inj1psh5xkmjqqfu6k9uy6qv20f26aevsu0tzvya44,3056 +injective,inj10ervg9533ychm9kvfew9g7zcrawmvn6t2klzld,3090 +injective,inj1nafs6ww0sukffj5ngpmt4z0vqwxnewqhgj8h7s,3101 +injective,inj1df9gqk4l27y3p330w2sncdck9jqvuyc3w3n6az,3103 +injective,inj19z5202c4434qx2xlayc34zlm5rw25nan2ekcf9,3120 +injective,inj1pvasf22ppz5rk5kka2u77pps4px3yrf6x828w9,3123 +injective,inj15ca5e7kpxqqxhzlk7lt78h700zf3l9rq74wfqa,3163 +injective,inj1dxkwwd3sg83ksctpw8vzyzrvz2pguqpn5x0t6e,3184 +injective,inj1zmw47e2j9ngu2rnm9neaavn7f6pxqnlsgw4kw5,3204 +injective,inj1a73sk4g27qzvv7s3z65qd0rfa8z3mdk4dp4qg9,3204 +injective,inj1tkfw0r4k3pzscvad3tx3cjmez9zse95ckmsuuw,3214 +injective,inj1jclptl8mx6vtc4l6mjv5smwdpxmc2pp3kelmjr,3226 +injective,inj139uddrtf2vt8eyhcl59q2pm2canemymyfa7xew,3228 +injective,inj10rljwy0f4vqvxvg48us7lsyfhtw6a243y4van8,3263 +injective,inj1zs45q9jkpf8aaf6p8sc2y0p86sfzy7w73akys7,3264 +injective,inj10j2qywltt0ywm9gfw0z30kntz9ed6wtpl52jgs,3273 +injective,inj14w57j67sk9wvjxylxm8qmxa6snqh9fu0r90gkf,3291 +injective,inj1j6kr57j3uny7f3yhfv5wqerfzdpf8s8cctqepe,3307 +injective,inj1ska8mhwdj05e9vjwm8z4kymwd73xx6m2s94ty3,3358 +injective,inj18m5jqxehad27zzyrdts4a7h0rmpncm4fe5wac5,3367 +injective,inj106afhja0wj9zm47qrnur82t0emad8rlr540t3d,3370 +injective,inj1jnlzaqd4cegvnm6s2ufxz89mp207kf3hxrqcgl,3466 +injective,inj1jdjdgprdjpn46l03yvfkef7c5ys53atyvjyw5q,3507 +injective,inj1dg7edmp9nzwx3gf3pps3436dp0s5uae9ce9hem,3540 +injective,inj1zusj6dnvqqmhtpvggkrzsuej2uvx02w3yx7xfw,3555 +injective,inj1apnuc90k66pe68j8jpqlmfgll3kmwe8xwf9ps5,3562 +injective,inj1vd68t04ufa6n2nqex68lsmxje6e87plfa5xvqa,3572 +injective,inj1hulf3djfs05qp6ndvlhnlysf3eguvvce6p9e6v,3579 +injective,inj1x9xqd9f88w39nwmqqa8jeykx0tr6um2qyjxu0j,3604 +injective,inj1hglpv5kl80j3zpnwl0tuakd9rml3azdu66qq7c,3609 +injective,inj14yek77nye9wdhlswyrdu6kqpwmafufwdnddsnq,3622 +injective,inj1an64kx7fr7fgyrpsuhlzjmuw4a5mmwnwyk3udq,3653 +injective,inj13vqp0k7pyj97w2au8gujd20tyaf86ssqqq728r,3738 +injective,inj19ktyq85cyxgtfn2jf5z6yufxgwfgk5d58xr9f0,3755 +injective,inj1lypp0tmwcwf2z340r3mwk60l5ytwzn78j3t338,3803 +injective,inj1syqq98vc8yyamjx3shn02477evzrql8m65ua8h,3808 +injective,inj1zhrgzgk6lp5wkyjqgnjl924yrvzqm2l8ujrquf,3817 +injective,inj155j63hy689xy4tqxa9lsg7ltnmanmr8fc24wvz,3904 +injective,inj1ve0f7xyne34ggxup95zwcydmtq9uvjw4rhqvg4,3928 +injective,inj1ayst5tfsaqf0evpqqjcz2047z6xxy0rx44x3jv,4023 +injective,inj15g7tdpuqhe6ty4997ussa3k0r3mz3x2nt3n5vl,4027 +injective,inj1lwl5leu2jqg0uhqyd5d6patj2awc0yfayyh92e,4055 +injective,inj1dqezzc3c2uyh34etcm3649s4ht9evfc4a4z0qd,4153 +injective,inj12us89g5vk7hlmylccgxmw4mt3a8jvxlxe5ztfv,4207 +injective,inj1ye2fpz304mfgj8p3r6evxafgwkazl65pautv7l,4227 +injective,inj1mxtdwn067wc0v9uuqxkyvh5l7wy2cdystq5gwg,4280 +injective,inj1jh2krvgks7whae06f9ry6nv3kzp2hjazckm7nu,4366 +injective,inj18ln7x8z2l540rgexzf78waw3lyrevnd934d855,4380 +injective,inj1289cp387gqc7rjk8pwd30aw634mwwsfpxpl0cj,4383 +injective,inj1u9dvrg34tfme4fdt9xdxwz9jm58uaw9lsuwvrf,4474 +injective,inj1kmgj62fd97j95e7ehfcu38cqqdlpyk7pdj9txc,4516 +injective,inj1l6k39pwj8gjjqf9cya05ulta66jdz7cqgt5rax,4525 +injective,inj16znvquy6acg2q4aavq6qwpjclgqdeuc4qylkjr,4570 +injective,inj13ev8mjx3da0y5l9kvn7zrtdvk0dkk85q60ylza,4580 +injective,inj109rc8h8u4jxpj3rjwpt6xgyd379mj9gxrx0uvm,4650 +injective,inj12vnqn8wqqrx3gpa66up4af4yc2s0vf9fr2u2qe,4709 +injective,inj1329qr9ekftv8a0kh8asf6eujmwdp33ukj8vyt6,4914 +injective,inj1975v0ry8naz8yxmf4xactzckmryz5wmls7rfx7,4952 +injective,inj1s86ua6km07gkzqx22u53rw4a6ygxuyv3zu86c4,5000 +injective,inj1qluve387h8r3v9dkd8pj8zmjvrnt239pgq5jrg,5001 +injective,inj1ju48ulgakgclvlne0lx0h5zdzluztlx7suwq7z,5001 +injective,inj1xp35hx306jlx8dt3a54n4qzxkg5aen3fzj4vfj,5007 +injective,inj1xcaz7568rj6r94fs6nwlqsrnrzdwywd3pfpye8,5012 +injective,inj1fd4k9mlq372ne7ap23xtyms5nrwq02zl0hjqjj,5014 +injective,inj1g09nq836jvl50anqvsgceqr66wkteywaz27gla,5015 +injective,inj1rr5xv89ycca4uu3n9er8qh9q273jhgc2ch3xtx,5017 +injective,inj18tmve2fc79vjqehy0xl689alvvjxw8g0t4jv00,5020 +injective,inj194dv897hcdz4tlsp04elwy5fmhl5gjh66utfqt,5033 +injective,inj13r238jr6dejsvchl838ky5n0tl5zw7fgje7zac,5050 +injective,inj13f4ddhts4ja9ly9vhlgff65nqzvmfqr3l3fwn3,5071 +injective,inj1gfdfzyn2lwr2cxmdw46874f468juqffs09emga,5095 +injective,inj14m4t6dwf97tej303rg5c7uylx0ggf5d4xexu3c,5097 +injective,inj1snzt9mkzsavz7smxx7ryncdealqxulx7ks6x8q,5106 +injective,inj1fy7r5hgfhuwguknh42ma3fz936wk5q4xhzvqd9,5186 +injective,inj1ka6zn839d92le57zkm9catwtzhkjd4atr9fexa,5193 +injective,inj10ea306pj0jkyqmcu67sxl2jj4g7jxwk28ycems,5218 +injective,inj1az205sygnd8d90j2ph3587e35d2y8ty7f8qtzu,5274 +injective,inj10gqke8s0pvpcsat408qumhlu8tj3grrhs8xlqe,5276 +injective,inj1a4xaww070r7zaw55g7s32q2g3vtm57pk95ym3s,5286 +injective,inj10dumf3vt9fsxs7mxftzyrwqlrwtja7rjf9ydmt,5352 +injective,inj1twvkw5uv0m84zh0r09s6cztlzngxvyz4xfsdw9,5379 +injective,inj18z869rn8puxl69vr8cap4dc6w29v6x6shqayza,5462 +injective,inj1q57thh6m60mljn3mcdjtfgnka3wu6v3ry2fcgg,5620 +injective,inj1pcl4ype52h9tc8svrmmqne0mht7tjjfc5ul207,5631 +injective,inj14r3jhex2zwe8zeel3vqlrm4vlhnxlfqnmn5y04,5634 +injective,inj1jf7xny73fwmeg9vs068km9pfjuqsdulvmech7m,5701 +injective,inj1g627nuc6nwfjehky2ew948g9jmspjx4dycu2sz,5775 +injective,inj1ek6ghxyp4sw5ymtjnrszp7njx2rq44nl5ej6mr,5921 +injective,inj1w8dsqu0u3xrl3spgzxf40vxuwflmkl5xp33pk6,5954 +injective,inj1hssypynnfq3javy5xfc34zvjk0qa95l7gy5t5u,6009 +injective,inj164v0wlj8athyjq7022lh88kqqcw67zvqwtyj2v,6018 +injective,inj1el5hgg4gqhh0j0ugf2ca5hmujlcv5s7qyncy63,6025 +injective,inj1jgq5yd4nfw2rqa5a4r7fg38q6t8agnc930z68x,6045 +injective,inj14ykq2m8hf7kkvr09p4zjlqlyedex047y667qc7,6067 +injective,inj1rajuyxmntm745wrjpa0suywkts08qn8yt7wjm8,6208 +injective,inj1tlqswe3qvvlqhzlzqtl69qh2atp2d0hk4cvc8y,6280 +injective,inj1dprs89x9qt6vhv5yfl3s0dygwztyc5lv2dg6wr,6288 +injective,inj14quhf0sjt5l7f0kn75c8nrhnlplvy96grg5nyq,6294 +injective,inj1pw7lf74tsvle2vcn6syegd70l9g9j2u8gg09wf,6336 +injective,inj1megces97jf7zhggnjsclxlwcnl3ufwrvpymwej,6361 +injective,inj13efcv0mrkudhjuun0pgt89s5twlj3kkmsamda8,6377 +injective,inj13hcaaqj55zcaz0fescp4688n3633tan0xccazq,6392 +injective,inj1jdvua62anf4lswm05yfd7deswtnd72lcjmxc25,6474 +injective,inj18v2e202e0ydcd3cf5qupjqc2f7hkq894tuhfva,6487 +injective,inj14ex5l5tw64vfy3wepvrdm40eq8s9drynqdjsgp,6503 +injective,inj1kfpxdtfvq77fczwpmxxxes0fnv7efhch7ytdgz,6572 +injective,inj198jslp6vk7ju6hzr95g0png7pv2cuzcdzpssx4,6573 +injective,inj1sqw0tqwyj3nhxtgtqmx7qm59z43rz73k4q8new,6600 +injective,inj1q7233d4cfdxtj9jk9zazx6ddzhusqy64pn7spa,6952 +injective,inj1g48wfnpkvyhlm32d2tgmrq02wv5pc3wj4cnxth,7008 +injective,inj16vjnlyyupe8fzh8l75v9ma37qh9687wf5ylsyq,7031 +injective,inj152p2lhzw3agzdrhujuhk6w8da2stmzwq5tc3k8,7256 +injective,inj1sasn63h2wme69ex8s08lq9q64wshcy8fmqxlz0,7302 +injective,inj1cerka9szlud00l6vu9auc8pz3zdnhzm09vyfgh,7354 +injective,inj1jhmu59qthjkdk3j5dpeztgynnjnfhr3ly7fm0s,7413 +injective,inj1em88yu7mfhxf65p4zqp0mphnd02swwva7mp882,7703 +injective,inj1xm4dugskl7p755p45gs6lrneke23ccn0aq3eds,7917 +injective,inj1u665dggytxgf9seyzcz2lwdw3lunvlfp0zpplt,7925 +injective,inj1tluc7jwcg4kptzav9mw5kwyppxkd9pmnwcp6y6,8044 +injective,inj16lnsxe42g40lhemsejmgxcqjuwawmvlh23vvk0,8060 +injective,inj159clzjchx4ehvl0c8s3hz2q8z669gwpywvpsmz,8087 +injective,inj1jylra8vq3p6avgl3jtjeya34cda8cvrnlsxm4h,8132 +injective,inj1mz75p6nnyxcuxrgdpnlyq28yftldcppn8vw54d,8173 +injective,inj1fft8u2gly449vt0qyklq8nscnngrngl34n6dm8,8258 +injective,inj1vl5zv6gswfgts43wt0ra7n3502l3ldn0ga76q3,8322 +injective,inj1sqz6xwk4rdr6h95mml5t0cg9rlp7lvr28rcp3t,8406 +injective,inj15pd3uk2dp5n2czke4xlpjxtw9cywxdyv5k0c75,8519 +injective,inj1h4t5dqenq86znza06thc64pzyxtme7zluzvdxj,8523 +injective,inj1tn5kyknjrkwn94nmgl3fhgg6ga7a8f0y4pvyk2,8791 +injective,inj16tjpr5kz8tfzpt0mlsklumdrg550g72s9xsjdp,8861 +injective,inj185jhauhyttg2d5j535hksj234dn0hg0znu43cm,9000 +injective,inj1tm2vq0skhg3ujkd06mk84nc9wh9wu5u09p34he,9043 +injective,inj1xwsnq88kc8wcrp34qenxf3dvhl5n02yjjhfm4s,9124 +injective,inj178gh45m44dgw7tfk8zapu8xtdu5yaken9sl4zj,9842 +injective,inj156a9d3w5ymds7p3nttxd0aujjpcgkz30jemqu2,10005 +injective,inj1h4cqkr0yyea4kn055z3q5q97fv2j79laf8xdrm,10009 +injective,inj1zxsf22pd5ge2zurmenc8d2kuzelz5qengdjfyh,10010 +injective,inj13a9zr79p9pycnfghtg9vh366xm93q4nwt20u6w,10031 +injective,inj13zl7c4ea60jt05hxhl2dp443r7zrlz4phsj30j,10040 +injective,inj1xgls93ggl6tcdj52c7fsrtkyvlhmnjhln5hruu,10057 +injective,inj1n0ysngux5ppmhvc0ux4d8lslqmvvf7xl0zpknm,10071 +injective,inj1x7lu7u0l8cvy7xv4hfspgvplsqtzl0fvu256xe,10084 +injective,inj1axcjhlmqq56sc0mfm53g66qsumwaxgwxy859cp,10118 +injective,inj139pye47d6yc5puf3cjqzav4ps64mxc6aqwdzcr,10191 +injective,inj10788jly22p6wx2cv2ypx8lvaskegsezqedkegq,10400 +injective,inj1yqsy8p44khdy3a9xqktc6wfpwp206h4lq7s44q,10511 +injective,inj18hvw32qfwjwea2t4qph9pz6s55xga4x46ktkel,10539 +injective,inj1na8u5hlszxeawed8t7h28prqqdh0seqhltght8,10654 +injective,inj1tfp4vzungc4k6mlufkct6v74pz0h0quns6prdz,10775 +injective,inj1d6f7hjps9zg078gmalthn5wmzv00xr2dkrznkg,10910 +injective,inj1264fzg5sn4r7ed0zepmmlee9hjzdjvw670l29k,11096 +injective,inj1u603zzkyk73gpkpzyl80nt69zshn3jtzd4v5gz,11120 +injective,inj14v0kl7aaylnz2wchm4mlfnyk6xdvcatg04qvtz,11451 +injective,inj1craystzpullxc6cyw7vmv7mspyuvmee3dr4paw,11629 +injective,inj10npsrm3ky4nsus2jaf82n94na3pc2z8f2cr44w,11871 +injective,inj1zvag2sv8dzu0cxemwnscdmy3z34x5fpafzk4xx,12010 +injective,inj1ke26nm8wrh2wae3dedxzks48utatvwj38nsrux,12343 +injective,inj1lvp4259t32y2pyxvvhs02jnstjjn04nmzf74u9,12915 +injective,inj17r33dk97ruxel2yywd6w6fakunl5nhpnn6dn8s,12964 +injective,inj1am8s2z6ah9x4nzt2vlku9mkzq0kyldwnxffn09,13016 +injective,inj14ydyxdvt6y4tyzdcqrdvwdsfp6vuvz08mqe8et,13207 +injective,inj1pdrwxwts36jds77jlnrpv98ppxkrwja7hc2659,13526 +injective,inj1j4pmkjgf20908hrxcmfxne05xjnrual2p2ghr8,14148 +injective,inj19gv40kks55e3hhqt66r4cwywqf807pjvhrfde9,15046 +injective,inj137rda7p6ntkx6zgayw2n7r8r6zys7kzq4ef2yg,15588 +injective,inj1nqtldzll0scm0f9y05z7sk4sa526uyrjvsrfhn,15604 +injective,inj1k6xmqncw39s84yzdjtfmffmg66v3j9vsuk34mv,15623 +injective,inj1ahv2fkh4s9fvmfu2lsa0cfkztfjf8e5hgyeu0l,15825 +injective,inj1fu9ejf082tmz2k9ce4uv0adz7c7py0vyagv7g0,16441 +injective,inj1fxnf2cchs6q78muc8m5lu8s8pch5scu7cxp7qg,17228 +injective,inj1pvms6zspmnwzl9ws494q27d857pqju24emg03u,17638 +injective,inj1f06xh5j463mp3kw3rvn7a744tkprq9evwq40t5,18477 +injective,inj1af56cz4k46vutalaamj2448xaae3meaqrndf2s,19168 +injective,inj10y4mpwgqr4c63m7t8spxhf8rgcy2dz5vt3mvk9,19478 +injective,inj1pwkzm5s549jtnzw0jfyv4tawmw73vgp27shfkp,19636 +injective,inj1yuqv0svl0faat3q2w4hlc04rk8ma89z4g44rpa,19888 +injective,inj1qe0e55jlw9phpul9eld9j8racdqwzm0872772e,20001 +injective,inj16wnyypr8s45qk3djhll5nzlnvxcw6mk6dghgyf,20717 +injective,inj10ujpg3nrcxuqz3ejxxlfjs5hexptvfgjnfklsm,21031 +injective,inj1wpjse6jcnhxy998mqg74v2fytv2gesffvyfh9w,21257 +injective,inj1ywfnuwl404mwvw9m4pc7tvzdk69qlv55jpvt68,21294 +injective,inj1xv0l3kx834q2845xck4km0d5tmqcxzpwf2hk4s,21492 +injective,inj1uxxpy60u87z2g6r4nktg3sn6vnuruvpzuf6865,22106 +injective,inj1tpmuhqdfd64n5939c7z39ew5v9q64sfvn3a95v,22847 +injective,inj1e05hapxg7eqtrtcxh523kevewz0cd956vl9k05,25329 +injective,inj199ljly53eqaeawtq5c8w3pftgqvhmmauf65yns,25791 +injective,inj1klw8p8httyjfuzdm83q4xjvj3qpgh8atk9umfu,26375 +injective,inj1gxqdj76ul07w4ujsl8403nhhzyvug2h66qk057,26500 +injective,inj17wuhefkuzl688d99grpchdge5zatn6kw8gd2js,26500 +injective,inj1hn7jen03rtgggupylkmvkartjavfm7rwap942p,26500 +injective,inj1kts4zh07n00pqc5ecv6jn3vzu5ug6x2a4wrwvc,26500 +injective,inj1c9uw6335smj9qye4dgxrmud7cllqxwv55c38rj,26500 +injective,inj1fm594qfr57d04g6kkcdc959w5nyvh7uwdh35ng,26500 +injective,inj19c25pgrg4yzdde8sudgpjekwvtkfr0cuwzstnv,26500 +injective,inj1cxe65zdyly8p89n822zwd0gmquymndchhldq79,26500 +injective,inj1mg7mq4sgknzj2gqaa2psl5z44e8xjuugcwu6p3,26500 +injective,inj1562ddfvm0veydfe9s2wrxnscfx85e22wmq44ja,26500 +injective,inj1056pqhz8x8xcxlc7twcd0p7weqn5xg2ktg8zcr,26500 +injective,inj1p2qa4uzngev2x377qxj7aqckvhptwxxcdxu3qx,26500 +injective,inj1vd8x9zhxymyntfhzjj46vf99m74w9rktgpc0vs,26500 +injective,inj1jl7ee6fjaxqhalqansnsucv8ghza533d26v22j,26500 +injective,inj1rtk6uv3r25gsya02cj2f5w4fs9ep47w0l44chd,26500 +injective,inj1rsej7fcnyr4q6uuf3p6yxaf2qpd6ph7sw38v06,26500 +injective,inj1l40zntsa7c3tvesce82gz9lvgnr858nfmt096h,26500 +injective,inj1ddl57xmfdhh9ltxmw3tvureykdx6eyc90eka8h,26500 +injective,inj1s3huhhy49hleyc83tn9vvnzlk3kyhjyfmpuzqa,26500 +injective,inj1wv8ns4u40l0t2srp3qkdgg4vef5ufe0tn4wnff,26500 +injective,inj1fy8sglxqgfjtfl0cwdw4rgzpf5wtxp7ka7xwlr,26500 +injective,inj1lvusgs0lj68h26wddu70q89hy9xlamf3h7nmhd,26500 +injective,inj1zuz5sgxy376uuysra3wn8ahj2jgyge9lz9hqh2,26500 +injective,inj1pse6x60c96nyslkdxq3lhpe89ehr9xskcepgtr,26500 +injective,inj10nvllnvaxxa5r65psatk743fx8d3g50jpftgks,26500 +injective,inj1sar48fu3h957egqp9rkzx8qm02l3went5jwk0q,26500 +injective,inj1x2ck0ql2ngyxqtw8jteyc0tchwnwxv7npaungt,26500 +injective,inj1j9fnyellqkwjmmx79fh8hys4vx8ll3r0ujsz6f,26500 +injective,inj156zqdswjfcttc8hrvwd5z3nv5n53l5xg9mqvht,26500 +injective,inj19yld8pfsqptzpe9jscq0r94f0cgjtk4v2p8c0v,26500 +injective,inj1pt9tvfyrt4aa32ulr5ezhtnrum0pah5a674d0a,26500 +injective,inj1j0444lyty08g49ylk7ucjxrvjzpvx7utmhy47c,26500 +injective,inj1rv7smzj46wllvfehap9pvkl7ehz67vfxq2gs0d,26500 +injective,inj1yzmv3utcm0xx4ahsn7lyew0zzdjp4z7wlx44vx,26500 +injective,inj17czjghjk3jltf63659mn9nh7d5wmclnycrhtep,26500 +injective,inj1uy3a52zfsq52sdk2auu3vs3h8t8ddf3mkdya2s,26500 +injective,inj12ucxsc5xvkjq4gkaml27c0ysze6zf20ww7m6nx,26500 +injective,inj1akxycslq8cjt0uffw4rjmfm3echchptu52a2dq,26500 +injective,inj1u80wj0yqy2r65pxcr3ymjgsdkmc8wfr7efe28d,26500 +injective,inj1z4za4m2k4e6zk8f07xpf3tegny9ddhdwuemre3,26500 +injective,inj1as4jrta885z3zn37a2z3xk9cddt8dyzmfvwemw,26500 +injective,inj1xuzxnqg8czsyhqzll58nz4pty9rfjmtqkaf45a,26500 +injective,inj1rwv4zn3jptsqs7l8lpa3uvzhs57y8duemete9e,26500 +injective,inj18jucs28lyrahtqdq2uypkuevay9ghkqs8k4fgn,26500 +injective,inj1lre9mvd654x4c8ulywqz6mxec5wwsygw3atdx2,26500 +injective,inj12fmc3tshn0n5xc2yje5q6w9nnkr7u88g6j2zv3,26500 +injective,inj1swc6fqmkupzayepqyqp52s2wdwfsvcukakpjlm,26500 +injective,inj1u8flv072zu6k256z8zj2ca8zeug9dctlhy5lk3,26500 +injective,inj16wjpe64k3s8hnnhrewf3sflzlg09gwwz4z4xfl,26500 +injective,inj1mner97yu4ns6ds2fd9es7k8n9jh3yxs3jkzh86,26500 +injective,inj1cr6h8qx5uuc6ulc0dnekjdv43zpe8cts8fuffj,26500 +injective,inj1yym900xvtnutw3z46ygvz8263mtzg80v589k32,26500 +injective,inj1u6nd4ymlnjynzmtm94d6z6lna6j8h2fhxu6dge,26500 +injective,inj19u2t52ee57yjljz0804cu5f9pwm3yeny37hx4q,26500 +injective,inj12fs4vskm05l6mcgvsyg8a0stew0jkpkwke0k2a,26500 +injective,inj149pxjtn2dq4z88lpu9mgmqh5du8dgy3n8e2uau,26500 +injective,inj1xmdfy2cvjuynhf74lfna6qn3k2qfq7afjehd8h,26500 +injective,inj1cjkfqfymr6m8auykw8ta2pe0ppdagel59qt5kh,26500 +injective,inj1cktpjwkrl09e9wc634n9099pgyzlyav2aq9vae,26500 +injective,inj1l9mczn5smfztlgpmv226qct2396yrt8vrtdnwp,26500 +injective,inj12nmfx4a40n9z8wq9w4qrvc45d7kzrg2rmkdd2w,26500 +injective,inj1sfem88pzh8pjs4lwm7lfuf9agqnktuvz6vksfa,26500 +injective,inj1zaw6duj85ntnue9jmyxte2mlahl3ysw57yrcpx,26500 +sommelier,somm1203temyrsh29uucra5kxq7dssw86jljmap6hvq,800 +sommelier,somm1tgjh39tkx5wmcemeq3zuql33fwuupqud4vqkg4,800 +sommelier,somm1zekfgls6pg0xl6u5vgs4t49cdkvsuvvlgxqktc,810 +sommelier,somm1lqgw9gczxfrnlyqj3wxcjpe72xlwka8lwx96gn,811 +sommelier,somm1tgm68zns6rn46dav5lmrxx40r9xu7ganjhxr5h,812 +sommelier,somm1yykwsvcwxkg0nv2f23fsenc8vmk7gw06h0y9ps,813 +sommelier,somm1wcymduqqdkrcc93kxzxpph7alg36sgnefceldl,818 +sommelier,somm1d4krcww8j462280f58gh6857c4j40w78v3aw3x,821 +sommelier,somm1vsd27ctsevms6j6rrvzsa2ltzg63jv0ruhe6xr,824 +sommelier,somm1m56cfujc9jmfkfqfs5wwg3mq5spfzjanllqk68,826 +sommelier,somm1fmmkme8sa5a9lvf5z4dqv8slk7je26cpp7syuj,832 +sommelier,somm1y89cf0d8kdyxwhxv8tpk8wt7uwx5ww6rtq58gg,833 +sommelier,somm1gy3w6q0ydtcugkus7w9x8rxpguevkjhcm7lm84,834 +sommelier,somm1kfx2clrw3a08u4zkrcn9a3ws6qulmh3sm9tfhp,837 +sommelier,somm1hqeh08alwvnsxme6m9lzm3ruhj23ldv47phrp9,837 +sommelier,somm1xqgyn7q534lckptdncvhwpzv09tfrsxrdk2f9m,837 +sommelier,somm1lq0lyqnullv5aayaes29n8mnl4u50a7yv3jmsw,839 +sommelier,somm1n5cqzjflrwv26wpxslr5axwa7x53ev4x29enxp,840 +sommelier,somm1e9g5mr86cfwmrk9hnftrcrx30ft5a4vaxeru2r,842 +sommelier,somm1y5rcmy6738yluxsy3p2fpxz88500x4p5ulkstn,850 +sommelier,somm1lsw93n5xt67q3nug6ldutcw50vtm9spx348a6j,858 +sommelier,somm1zxk6ztgr7q4x6sp2dxq848722wkqm8hazk0zpx,858 +sommelier,somm1a5ps8qwvvy2ejzvy80uz03q06ughcyqenzt26u,865 +sommelier,somm1rcmdfqgj62mc6avee5hq4hq7vw4u2dcw5kvkvn,872 +sommelier,somm1n56swda49evz92zhcw2xc8esx6kzt8qmy6rff7,873 +sommelier,somm1gwk3r3zrnfxcasat9xapyua0prsvmfvx8w0keu,875 +sommelier,somm10c682shj59tnyjwrnmdyhkqc6guser63upwtjc,876 +sommelier,somm1qua5edhat8n7hddgtl4zl42hkyaepc723w63wr,882 +sommelier,somm18hd42ljeapjwhhs9p0rg69mpz2sqe40zfz67w6,893 +sommelier,somm160hmzp7s48cf24qtkf3xt40x6ugt29wnzse792,894 +sommelier,somm16h0jgc2p4cesym94ppmwt2h6r7sjac2ruff447,894 +sommelier,somm1gj6mls5c20uqnzz0huqfss2j025sx2f6e7d0g8,900 +sommelier,somm18q83mzdqxevmf7vx043a7zrgr0kycn5hcsnfml,902 +sommelier,somm1292ylc2c66usrrk8gtdp0j6ppj8angzctqq3dq,902 +sommelier,somm1xnfd7xsl58l8m6rj8pj9qmv3u3lm25azc9vast,903 +sommelier,somm1jxpztalf3skjftyrlf3tpd3c94g2nqkahyzyk9,909 +sommelier,somm1xz0eu8um28a72rl9gufhszkd6tewus8uye3f5z,910 +sommelier,somm158p9rzu3yl4y8ffsdz2m8zzem74tdj8t060f09,913 +sommelier,somm1q9t5fa4zhv9pn52snhyga4y54fceyhrdy9676d,914 +sommelier,somm1dultlt37nav8y6l96y5tzq3ghz7mfr3l0ddnac,914 +sommelier,somm1v6wny7xc752zgktglhrd2mvqkaxqa28grlpnh2,919 +sommelier,somm1nxfwurtfzz9ntgjj5twpkap5epr54qhfjrn8pf,922 +sommelier,somm1p6htu0g5gawk2d7sgsgpxphl9mfvqca4mqm026,923 +sommelier,somm1z3xtktz7pp86xg9l0yjtrc0d9v3dcnmn777ndk,925 +sommelier,somm1at8455j6truje0433aplutn4449a4y7tzl8ag4,932 +sommelier,somm1ztz8t88xgqvueap24ufpfun5mxc3jhmcuadq98,935 +sommelier,somm1ew3ussp5skkxkew8jrw6emr706f6y2j3g290rv,939 +sommelier,somm139z5hlgq0lzkmpcstgv9cwhe9xe87layqg408u,946 +sommelier,somm1tgpz6m8p9rv2pgwqp6r4amz97uyjvc70e59xxw,947 +sommelier,somm15c70tmnylhtw79t8wq0dzd3arr23hj4kv3fj5w,948 +sommelier,somm1mfnp06rueggnhsnzswxslap6mwqzddtswxhta9,953 +sommelier,somm1cea28mqlrwptsa2nrthrj8f8fph5k8827hqgge,954 +sommelier,somm10kcf378qjcwdw07ar2ehstm03307g0tx4f3425,955 +sommelier,somm1e8xydm7k95sx66s9guvmg6r340qkms74zsehdp,963 +sommelier,somm1l7ktd8yzz7qt3y0xg2s3utertqwnfmgmqltqf8,964 +sommelier,somm1wfds8kwyx2555jxfr28ca39h096z2mum54rup3,964 +sommelier,somm1mtyd734xlrse8azd4pu2760zvpwwqryue2v48m,970 +sommelier,somm1szf56rpy2z3gerkmrldnmkn82sfwmh2nd0esnh,978 +sommelier,somm1f2mva4ag8meya6fvpwz7md6f97zd5nllsu6cmr,981 +sommelier,somm1jplnxxkjm0xd9h096kacjjyrkdvkjc8cup9sfv,981 +sommelier,somm1z4pak2ssenus02rjz2xthpcrr8qpzkhnls0l85,983 +sommelier,somm1ex4l2p73klcv478q2wezujg9drgxv3k3q2ktq3,985 +sommelier,somm1jn99r4dvm3n6euryetc7q3akz8cgzl6asend2n,990 +sommelier,somm1rh2c2y6yxzv2m6a9f75jkqjurf9x0kr802pwue,990 +sommelier,somm136tnjr74lasuej7kmesytjfy56yurc2jtz73sq,998 +sommelier,somm1lt58nmdc3lqy2ejvxc7l4wly2szr3qzm852e83,1000 +sommelier,somm1rc753ctdtcm4xucvsvy0jxjkfzs2s6grwwtswt,1000 +sommelier,somm1qyfled5ulf6wmu2u4smstn8rlzazanmq50qgxe,1000 +sommelier,somm18lwd0p8cxz94zmps2rmgs0gswc0yzzv8dnl5m0,1000 +sommelier,somm1cyhq796x0yw9qc35qhv40khp4zugwxwknmcxx7,1000 +sommelier,somm1ey5aeyezjug2xzuswl9ahkhn0mycnrvz8pmhyr,1000 +sommelier,somm1rw5eyc2cdjjqv06zgu97pl8lfr2sjr5lnky7s5,1000 +sommelier,somm1jem5qmje8wskepea5vy3gzyqxe66p387xunedl,1000 +sommelier,somm1tgs7a0ej04t7k0ywdfhk3lddd7a2tmgvwjk2lv,1000 +sommelier,somm1xf4n5alscmyuhuyv5elnpns38lf64u8yu7mflr,1000 +sommelier,somm1v97agk4gkyytpphhymqxhh3aqvvra3vvp3njxa,1000 +sommelier,somm10hc0ylp6t0fmwpyga2zc6zj5qcf3ed0ncpsqt9,1000 +sommelier,somm14c2zjf87ym5rkd0rx4meq8lnrncjgq8e2sqxly,1000 +sommelier,somm1kl84a6lkkvd8w4twtan5hp0r6yq5lzp04tvnp2,1000 +sommelier,somm149dd9ynts3tda9fdu08y8u6q3wx88apg67vhs7,1001 +sommelier,somm1f4zjc0zt0dudes8rlnzrsxxw4uvd2s86kvlkqg,1001 +sommelier,somm154csk0z0n88wdwwag7kjunfdscggh8aaj36l28,1001 +sommelier,somm17szryk94sss28dnwq2et70gqf2lhqqj8h33tqm,1001 +sommelier,somm1ydc30mtvugngylzwn0f000c3lu9wl7486syu0f,1005 +sommelier,somm13n0yjh00udhc7useasmx5kang4g328ytryjghm,1005 +sommelier,somm1lcxjsadvjvrlzwclg8wfcj6ntyghrwe2rtlgsh,1005 +sommelier,somm12dtjvzh0lgnzh5yktkgtwqqwfdq0v3m0ljsyd8,1006 +sommelier,somm1l4y9c7y9esvnuw2ewgfc29f9sscur385xn9zrh,1006 +sommelier,somm1qxz96ed5k7v2c2vfmckncyrk7hk5wtyd4lkrqa,1007 +sommelier,somm1jzt962czzt3ruwsapec9fzmrm7kcj4425jwqqr,1008 +sommelier,somm1ratutwnmdmhz28ef0jx5xywg6q8fjwt724ucnz,1011 +sommelier,somm1wrdhvg9xx7f3whl95hk3q3379l6yyy0kyawlxz,1011 +sommelier,somm1lhxpf027r3cje4aa5zc3c29synvj2ldymc64ag,1011 +sommelier,somm1cgl8kktte27xu7kg730qlf7tfnzu4shv406tul,1011 +sommelier,somm1k72sa9026gc0eskwrz3kz22tdxvswuzs5rr7xw,1011 +sommelier,somm1utzu4t0jtkn655gsqha7seca2xqx37p5kerusj,1011 +sommelier,somm1tylk7dce32nlqr0uk80hffq9ky6g89xe9c6zgt,1012 +sommelier,somm1m65zpaqg2ywwtd85dprwkz6u8znk9v9araj0j4,1014 +sommelier,somm1zursmc234tlqhya6y3wglr5gn8tkwqwzehnkfl,1016 +sommelier,somm1df7x3xg4ynhlz6xtx40g0mhvnr2l0sjsfrmgy6,1017 +sommelier,somm16muv0t8lzqlyj89drkczgn8kwdqpexhaevph9v,1017 +sommelier,somm1hdvzqrgjqgm98vrz6jpevx53udwa52l355j2ue,1019 +sommelier,somm12c34ueuzagjduz5cn4m683kwlt5kq8d2vgpe8n,1022 +sommelier,somm1weertjjtp49zqdzxst0jsc75p4wlqqj8rrevvp,1024 +sommelier,somm12v5exrg3rdysw7h4jwj3pj44reajj75lz2zte5,1025 +sommelier,somm15qvuuyvladz7gz45lmmjj67mf5l0uzt6eg4jrp,1026 +sommelier,somm1u8pad9dtjk5v36sgyj862hehqmfyuukyq7lgnp,1026 +sommelier,somm17vm08d6wxa4ervq5nendehcrg2wxjcjszvh4mx,1026 +sommelier,somm1qwqe792ag6p0fg44nk3f2qcredn4lu69ww0dpv,1028 +sommelier,somm1ajnnsm7q9y2sfnwm5ql2wnkzeavfuuwrag4nep,1028 +sommelier,somm1qxh8dfj72vymqnqamatdn5e8zmun5ggxevz46k,1029 +sommelier,somm1mxvzquwgqmeh7yv82mjrg2qfu7yk0fela7ydvu,1030 +sommelier,somm189g5e2hy7anxhqhaz9uy24z5ylvvqe0sdujr8l,1033 +sommelier,somm1drqgprr4r3mtcncpxjn6a0kr84ag8c3k6y5f4g,1033 +sommelier,somm1ejpkxzd8v0xcratx95tmumwjgyj62t697p58mp,1035 +sommelier,somm1zme7m4v7s3za5flm4xfh6ruqcy8zqa649pnu85,1039 +sommelier,somm14xgdfdnpjtulj6p7rkc75ekxqjq8hc5cj64ms8,1039 +sommelier,somm1t5zgnfz0jrvflywjmgs95rey3un57n424mp79d,1040 +sommelier,somm1g8p7jmq7gxmwvnazq2d40ygkqesu5den7puts3,1041 +sommelier,somm18xytphss2w57dv3pf5glkgy0g0595y7xm7upe2,1042 +sommelier,somm1s0lxr229rpysrkeukugq4ue9sa2c05sxwy6d59,1043 +sommelier,somm1gz8vgplztfvewdf2kj6m3m4g0mulqlq2at0fya,1044 +sommelier,somm1jgeqr5zvhyz344htwge70e2eaa20ku4qqc2qfn,1044 +sommelier,somm12c6wdy5gp2swlt3aucw00jkv672n6k3z0wuu77,1045 +sommelier,somm1dl2gcq66twxydx4tumt9qcrh302u9grt6gu4tc,1045 +sommelier,somm18wycp23y69ky0rla4p75muzhejn0cd76f8tena,1045 +sommelier,somm1jpejq9rxhffjd4e9zlgzsapr4yg6a9ptfaq85u,1046 +sommelier,somm1rlmuqh8f96yzdetdnctj4r6prktpt77n9ppxau,1046 +sommelier,somm16x79v3h2qrtcj0376am9zlt05c85njzww8vhc7,1053 +sommelier,somm1r54xcpm6ujh3tkr3m0x90fppc3fqrtga0uvqjv,1054 +sommelier,somm13cspfrtv57ls22rdan7knymskwennsjaumpegc,1054 +sommelier,somm1kxwh82w5egy0ghsuzyfvya2pp98gctfxchjz2f,1059 +sommelier,somm1s06n8al83537v5nrlxf6v94v4jaug50cpf92wv,1060 +sommelier,somm19lezakyp0kwsr97kmpvz56qpjvmet26fmhlq4v,1061 +sommelier,somm10pjj5ye6spe7vgqcph2exm2pcx4m5gv973p43n,1066 +sommelier,somm1ew8sx5yfgm3g2suz7gfxp5897upwe4nqy7z7me,1066 +sommelier,somm1g3av4tadceud9zvn5h3lce9457hs7npj4g9y0k,1070 +sommelier,somm1cvwx28t7v5s34mwyf47slu8cwcmhw0zfc45dgv,1083 +sommelier,somm17vv33gl7esrnulrhz943rrchs623g0aa5k5j9s,1085 +sommelier,somm1cqdtmsftv2gk0wm8p8yr5v9zjk3gsk843rzynh,1089 +sommelier,somm1m65haxvyfdvv7marjlqk9qprkgtsd6mwqy8kx6,1092 +sommelier,somm1hred7tch78xhjkrmsggwu246qhl52h59yvuv0l,1097 +sommelier,somm1ppsqfprt7cx3ux9nruhwjleq6ga0ufnxlzthmz,1100 +sommelier,somm1xjk5wua48htwj6kcjmrc2kngs78wn0x0q7pa8k,1110 +sommelier,somm1pqahtgqw4nq0nswp8x3pecsgzz7h7tvjxa8qz7,1115 +sommelier,somm1myxc89f2vwn98a8cm9jyu8jevr6zjcr7k358dy,1122 +sommelier,somm1a8tzx7kl4scp6hkd860fwj4n5p28y2pykn0rx6,1126 +sommelier,somm1e99sdu2ljj0fmursjrcxju43xcyauxn85p6kel,1128 +sommelier,somm1ey0zmwryem278r7rfhj90uxfuq4ndl9jkptjjh,1128 +sommelier,somm1m67walcd546mtmdx6xfu329ghlj0jfg39emg3e,1129 +sommelier,somm1glekr4nu07tkyut3aupt0v4v5hxc8lwutjswzs,1134 +sommelier,somm1c5huj6fjxy067fudsevcn7e4r6zktse675u4vk,1143 +sommelier,somm1e0d0daqr34t7kgdumgrlrwf7xye9alqf7kuu3d,1145 +sommelier,somm10g3hzsme335q8r2g3p4y3x7s2pv587fwlx8v3x,1151 +sommelier,somm14wv264ngauxx9v5kyrc33yd6q3ek2jvdc9k29u,1162 +sommelier,somm1z2h8qstwqt2jpljuw6ma0yz6qhce6fe4rsya6s,1164 +sommelier,somm19226sex0s9x6k6trpadcyhf75qenzuc0nfc6vu,1165 +sommelier,somm1ay372nh5gh0w8tpzltcn9acenk0al3pz3j4lg7,1165 +sommelier,somm1vasvdjw7fuh7pxeqkfxxqge885pzpzspuvna8n,1165 +sommelier,somm1xtjnzwmf6gadsmw555tyl8dz05pcp9frcjy2f6,1166 +sommelier,somm1xzcswkrz5qp2q5rxcvwr6dmfavs2nel4u4szph,1171 +sommelier,somm1c3uhgyvzurgezzs3kc0dc2k43jw32cjr4vtevd,1172 +sommelier,somm1ehtvg750lc7gecd5x2mpt370e9p5ujnkse7luk,1177 +sommelier,somm1qggcs5x7cu0xsdry24ms5k5zpka63vts25ttag,1181 +sommelier,somm1u0dr2ae9nu4j2ehkhjrxt0cc7usvugxzyf9n69,1181 +sommelier,somm18t44t36t7c704nmmyt0x6cee9p648nvsg6nhf3,1181 +sommelier,somm18v84wrfggu6qmuevz6fvpun0fzyc83m8d744z2,1184 +sommelier,somm1nmjxny2u4c4lszma97953436x9naf587m5q63e,1185 +sommelier,somm15ac4yml09dflm8kyvy3fd67fq75uz8aw4xmggh,1188 +sommelier,somm1a0gz65qczz6ydmtqt58jf97yd9x59anfveg8mu,1188 +sommelier,somm1lfe73te0uw6xecsf3htyzvly6uq8frvq6f0947,1201 +sommelier,somm1ps6f67034fp22nqpvkur5pry039nfjpuq6ppc4,1205 +sommelier,somm1v6umul8nun2xaml2y24zrhwc3gx2lv389z78jl,1212 +sommelier,somm1tfyx6ad4nr4f2j3syyualsztxdgdxz8pkr32hq,1213 +sommelier,somm1tmedr78juk64vgjn0kltcg36z86mwsd2ca89s3,1214 +sommelier,somm1cp2u2fhna5qt0mjj2uydukatq3um7ye690qwez,1214 +sommelier,somm155q5556fwlnusglyuq6jrxmnpvevyeumm7pycp,1215 +sommelier,somm1raeqcpaecdgq75qezmkda8068lwptq6y28levv,1222 +sommelier,somm1hy6flrpxvr7ulmxnucefhgynna3nzkgs8hrgvm,1240 +sommelier,somm1fysj4cadldlzcpjkfm2apdxex48wlvrgs8st6p,1244 +sommelier,somm1zv92p2v0z7nlwhvxusesfwdxx46lgqr27a3tqx,1245 +sommelier,somm1v27jad5qh85pnq228s5gqd4726njyg9slmhzee,1248 +sommelier,somm1a9l4dq6s44k7dk4lx0us6g7xsunartz80vhlhm,1252 +sommelier,somm1knp0wpqlvhyqnq2ca22gdjuvmcuj7zqdp6xfh2,1253 +sommelier,somm16gngua9g8k88xsp5ly39fg7pp25ffe9fep9l20,1267 +sommelier,somm14gaqrkf78ve7j9zvau8ak7qukuchxu02z5t6ah,1268 +sommelier,somm157v08zcahkmrvvzgw8ggku8q0acnp2ur9wtquq,1272 +sommelier,somm1ch98t4ul80s0vjedddczd3jsurvm9xtvz0yaa6,1274 +sommelier,somm1jqm3zmdpw2rvgftqx82y452f5u880sgyld7qt2,1277 +sommelier,somm1uw3nsdcz3cj720p5zwggaxzy0zleuew88d4kjk,1280 +sommelier,somm1m87v8nlrxlnezy7cdh5u7ecjjvk8l3cwylsamh,1281 +sommelier,somm1w5nj8q07avxeshyu6up5fw2dhrve25x579lyfw,1295 +sommelier,somm13g4t6h62v2fzn6rge8xlaqwy02xn7lfxsagz0l,1305 +sommelier,somm1fx3fedyn4jwmkyglpe0p2xravc5wjvdrpcc7q8,1312 +sommelier,somm13nmu649t7nskn9ewhxh7054cly647nkckkajkw,1320 +sommelier,somm13lzly6934ymemk6k3tzvlu3tl7v7gzq309fm6k,1329 +sommelier,somm18dkapq0ssm6urh56q2unqnkal7t4wk48gqpjkh,1330 +sommelier,somm1fnpqtvcydqyxsrdmx9vtxus5znwy4tf40zrrte,1332 +sommelier,somm15yx5xg670usc4pg5zmwc3zrpfguv0rfprspf48,1333 +sommelier,somm1p9amsut7c69rswfdd86twxrgcld5j6nmu0mhk0,1337 +sommelier,somm15dylazr3l55w7jz9s35yp9adt8v3g5arfjpsnc,1341 +sommelier,somm1mw6xpmqt7u7mlcu0lerh7dw5c9rvsqst47mye4,1360 +sommelier,somm1p8ktdc6st0tcd0rqx6eu32xpcf7472suus7hcr,1361 +sommelier,somm1j50n2mykqfp2flgs6ka4lkp5w4svgmmw5shdsp,1365 +sommelier,somm1sccd3r5cmx7kdw2v22mdl3zes7at470pkv2qwj,1372 +sommelier,somm1gqew8e5jkrfe5cahzpyscx6led549nrjpszegr,1380 +sommelier,somm1wm35l42uexze6sxmkakngmpxll7a7r8v84wgvn,1389 +sommelier,somm10rdut36lnhsrudd3t4zqqgpvrmxam4le9yvv9s,1392 +sommelier,somm1593yhrjwvhcv3vlvars3playrhfhr69xnrgzfm,1400 +sommelier,somm1km9f06ft7a7552x9we9crl40px5dscwzkc5r7q,1404 +sommelier,somm164rshrwr7h035m4hy7yvvlg2gav8yn0awd5zg0,1412 +sommelier,somm1szms8659d0gd78q4x5vl6vckhc05xhrtehywng,1417 +sommelier,somm17hr0kwjgklazhufht4sdpllmvm6047wdcx33hx,1423 +sommelier,somm1rrk0hgawmg5lzlkf948f395ksqmhr867zxmx3x,1429 +sommelier,somm14lpnnmmf6603apr26gy7v42cmrgs6fdntax405,1431 +sommelier,somm18l73gsfkfkpkaea3zu9vds82l04xwtv6x3sx5k,1439 +sommelier,somm1y86f4qj6gs8fzcrdgh7ye335hkp75czs779wyz,1439 +sommelier,somm17ezpm9dq4clg6rgsecs97eh9r7daywhahdugll,1446 +sommelier,somm1yc4j8yw2wh2fcq3k7zsvntysggd93lhmaj8phe,1450 +sommelier,somm1t4kzhw6cnxypue20jl6y757zxp4664m7u2tfc0,1450 +sommelier,somm12x83csf7kpr3emumrn6kw3ukavqaphxkc06a8u,1450 +sommelier,somm16cemgtx5cwuxzfprp7zg96pmkpkhzzyfdsgqxf,1450 +sommelier,somm1e86u57464w3mxedrzm3chatvcd2z89axctlrsg,1453 +sommelier,somm1ncg4h3vhcdl5cx8xugee5x508glugww3uwkgzc,1470 +sommelier,somm1fs8xjmflwyqsumy6sad708307lpnczxfgp88jl,1488 +sommelier,somm1n27xgdtfllaxvl5x0dqzhdvqk4a9h62q280eze,1495 +sommelier,somm178swfpjp3qwes3wj8ffzqla9m56ewzxmt3fepw,1498 +sommelier,somm1glrxvex7ayhy6dzqsnzw6da33jdyy0ytfwygcn,1500 +sommelier,somm1sxc7qkmsxyqrtuqepvh6mkdtrpdtvxf9jkh384,1500 +sommelier,somm1cvtpxzff4vr85dx8mutdh4zxt35y7zdmxutum8,1500 +sommelier,somm1u8p5gz4cht0n889ecazyg5u776pe73fn6mwn0e,1500 +sommelier,somm1w4ghxwfjpw49mn4w9e6vq0av69jthl83n5k3gy,1500 +sommelier,somm154e3qkp6sz2pnvt04tkcxwevhtvef7d8dqmpej,1502 +sommelier,somm1p34qc635jdtfyl49smxslu304xv8kdavy3z328,1508 +sommelier,somm1pyzxvfa7f8gr5x20n8kl0lu78jczuevndanfye,1517 +sommelier,somm1z6qe8ehs6jxyug3zwx9zmwfj08jzxld2d0gk8g,1535 +sommelier,somm1eymapsam3l5ymas76avez0adlvw3u293uvn7hl,1538 +sommelier,somm14pk90lt7ecrglkr6fzkxzuxzuzcz5celluz660,1540 +sommelier,somm1u8n3vq4c683ljfkjrzcnzukaw0prxykv70rnw2,1546 +sommelier,somm1f0v5af2nhemuarhjjchu3gq0v0vdmcl0ahxjvj,1551 +sommelier,somm140l6y2gp3gxvay6qtn70re7z2s0gn57zq9ught,1551 +sommelier,somm1d4p0g7a9l53yrppp8vme460kcm32x628p6crwg,1558 +sommelier,somm1fzx0ll0pz3vhzdag76fhul0x70ynz5xg3xwe4z,1561 +sommelier,somm1gwwz25r3r2ve6eppdhlyj2dex6j28su7ecdf4g,1584 +sommelier,somm1u4cupdnmef06xquy2udy5p35la3afxz5a8z7u2,1585 +sommelier,somm1m3567wl3jl0dwvm5m3et07hwmg83vvn8lylc0y,1601 +sommelier,somm1yl0fmqpuu54j7p0557yxk8ge4y5huutuy3sft4,1612 +sommelier,somm1q7ckkd0us763k0clq6hzfmqzx0jftgljv7tlpj,1616 +sommelier,somm1fgwaqndwpl2hmk6vv98vt07fkefvx46wpzug39,1625 +sommelier,somm1uf6jx8gzz0k2qt7xvq3ud6u4rxsjqwhr0557nk,1631 +sommelier,somm10jvwfyv02ct5cne3j8qkdz6j3p99t4jcepcdfw,1636 +sommelier,somm15rdhd6w996sfgx78ud6qvye9w04nn76eva4sjd,1641 +sommelier,somm1szzvfzlqns6z3fpafuvy6haxyl7wkanaqxy8se,1649 +sommelier,somm19ctdvsmfve2x5py3h34k6xxnc9nua842cfqz3s,1677 +sommelier,somm1mfudcqr8yv0gs6rr0yvanzhjnrta74qvn5gk3t,1680 +sommelier,somm1ftkdaf64j80fvdxc93n489djm0hd38307sz82j,1691 +sommelier,somm1vmnszddr75huvt7fcvx7nuvk7vje4qmx4ed57k,1713 +sommelier,somm15sv5h3erlwf5cn75jk4hlajhthvmjjjz8nde7v,1741 +sommelier,somm1f3cqss2xwav7wxu993cfj4lldtvqs33lku4w6t,1762 +sommelier,somm1378kuqpsrpn2pn2gyvl726hqxqp32e25a2xecm,1770 +sommelier,somm1xgp5cuqjyrdtrysfsqzu0ektndha72pu37lws3,1783 +sommelier,somm182l3d0qu6arwn5auaay85e4gursrlvfjh0k35d,1790 +sommelier,somm1ft6gdwcedwdqe5gsp4uhcdvze6ualqg3ypj2wf,1800 +sommelier,somm12nc70drnd5wgm4zxllepd7z6n3eprn8ka3x8er,1809 +sommelier,somm16ujj75qfs4kg7055nztenwknfez4xjskvkj8gy,1812 +sommelier,somm18zy93d5vmuj98f0g52qncxvcwyhgq8anq644fc,1815 +sommelier,somm1scmme4zdvjpw5s5v9mqmazsgr6eeumnfpfkj7n,1817 +sommelier,somm1mtav8n8j44dx2ymny35ydehphtwt7kutcx2sz7,1824 +sommelier,somm1gs4nwvkhx6x39w44hjgc28k4dn9mnt5sqtc5lk,1832 +sommelier,somm1dkgjw7njm993hxv84fwlhhmjpykwycdvk689qk,1832 +sommelier,somm1r205gwhc7744d3mhxfm6sddq2t2xcfxyq3lt9y,1855 +sommelier,somm1nhua7sma3gy4txdtkeyedcukqjknsz2hcxfr0y,1859 +sommelier,somm1pfxkckpcpcc5su5kydwsqa9kwnflfurldxmta2,1889 +sommelier,somm1vr95pdtn60jjjew6had02zymlw0cytyz3hp906,1904 +sommelier,somm1cwhkdnf59gp58637xfvwp57xlr9g26rhqn79yx,1919 +sommelier,somm1k5w5fpu3qt4va27vsarddnruumqqprs865cj4g,1953 +sommelier,somm1gu09e83rvrnuqa8jzc6amwemkv6rzvapegdl5g,1973 +sommelier,somm1azes8zlagztlwps95mplm39vwpld08d4ve2p54,1976 +sommelier,somm1u97lkjqammjv2xxzwsxn5avrrhx0czudyktp5p,2000 +sommelier,somm1waac73cpffx7suhpkvnn8w0a8s2cgzn64f3zes,2000 +sommelier,somm1fttntqdd8aeyqa7yhqm9p7vww0xfpgmdf8fpcz,2000 +sommelier,somm1335v3hpjfrnzghg8qk5azmupsfp4caxk4zhqfy,2000 +sommelier,somm1768jll7r48hpg07ucj34pwfrv363h96w0l0v62,2001 +sommelier,somm137z9w4az5mfs8vplx9gax672vwj6cqt3szzfxp,2001 +sommelier,somm1tx5fu2d7vdyjn9jt7ppm9447n5xzj7m06u46hh,2005 +sommelier,somm1f0l4wt43gyktrveku2aqc3mw9tz3dk9jnejzy0,2007 +sommelier,somm1vzj2ke64ms039rgtmq5alz6v4vpqjjy8uqfc9e,2012 +sommelier,somm1k5t3069veuj34um8758pz3et73tu906eh73thq,2017 +sommelier,somm1tm2574s2vxshre22dmp8lfxugp0fqqsrmx9ua9,2019 +sommelier,somm1xmehl6hturl3yhmppukg8plczxfzzcamleydps,2020 +sommelier,somm19wmrprg8pf9rgljg37rkszwtj25vg2zfw80y3z,2025 +sommelier,somm16y6qqs5jzes5qc0vdktdh42zcdm6t80ka2fxxq,2027 +sommelier,somm1ux3j2h446q9yf5dvsw4mwa5fnf07ja9v6s0rf4,2040 +sommelier,somm1t3ajryk6y5ljfk85yxhkut73f3ex0e42l3ek4k,2042 +sommelier,somm1zrtfy4hendy5srwk7v20a0zry3ztq35gdunpv2,2068 +sommelier,somm1umukkcm6pee0t0vgatfwdpwl8kc092ccam9vra,2073 +sommelier,somm1pd5v5cxftwvz73d7upc048ur40j4hjzpy9kl9v,2081 +sommelier,somm1mkew3ztpct6d6zxs5ksjeu3cwdu47plcpn7elk,2081 +sommelier,somm1gtp8z5nycfvhjdcztjv8dm9k8qk4fzjky0vcqy,2094 +sommelier,somm19rxzn30zvfvaxgmzlk4qntypkgs9uffeq2yag4,2098 +sommelier,somm1ez4ev32pznjc6lp7yakdc7yj2quqhjrfe8rrut,2110 +sommelier,somm1e7lfur6lunpyl0uv39cf5hq20zude0tkeq6jp7,2115 +sommelier,somm1w9ee57gnduzm4l9h6xwn9tee9pyh8wlrel20q7,2116 +sommelier,somm155u3gavfezgsnucetmyam3lsnwx243d04jzqnv,2124 +sommelier,somm1tph4w98zcv4k6c9cc6x8qug5kfqjphmz869nhs,2135 +sommelier,somm12t3szfpfpp3rw3nr7fqmq4wkl5wp5msxd5lrar,2139 +sommelier,somm1pals5m5gewvr23wpu0h52kk86qrf4kgtvaj4hx,2156 +sommelier,somm1us8q622zaj90n3g5kd6desv0u5lkqs9qz2jw6w,2170 +sommelier,somm1q804sacllc07va0nxrkje4jmk0m3eku7lzr3au,2185 +sommelier,somm1huh3fxh6flakxwqqctthdmpmw90y94duvj9y3a,2186 +sommelier,somm1f97xhgsy4866xf98fcfwnuk0nhwuu0ls06apmc,2186 +sommelier,somm1an6r6lzhe8akf8v3622amd8plgq4yuj0a6h0wh,2189 +sommelier,somm18a6aqwqmm2ltfjkh4w8ya0z5yx5grra308z8u9,2195 +sommelier,somm10avnjpeqs5zj0wa39lc5386usl72n06lcatqwk,2200 +sommelier,somm1nhfpuvxupt544sjxrzwmjdk0un9p83850ltzm2,2206 +sommelier,somm1n8j9xve22sh5arf2kfdtdde46udztadamulzlj,2236 +sommelier,somm1jfrs6r5q9shj0w27ydm3gn86pa44fh9an6wvwp,2237 +sommelier,somm1j7u72t4jfwxt5z04uwvf3s68zmaaxqxc2adkn3,2251 +sommelier,somm1807ru0r3yvl7pf3xh2j3ewfhp3f3yx3tuncpqs,2251 +sommelier,somm1c4rmspc03d2xp2kqf2f82yw480jdpsxvl4cs4q,2282 +sommelier,somm1eam2xjs62gz8se77x349g8gtvm5s00z5haq2vr,2291 +sommelier,somm1s46jmv3c05usk6yk50tyy8axc4t9rglr5dw4s8,2295 +sommelier,somm1vgzqruefufucul9nrgvvfphr0e53n6j9x7dvpz,2328 +sommelier,somm1xz436dmuxuzpdt4a08s0a7z4tmc7806cc90axv,2360 +sommelier,somm16u697hs80fmdkg4tnahhmtsrma6lcmwh7sw5f0,2372 +sommelier,somm186kvrtxathahqzmgslu3exmg4wszd9sg0yctl4,2382 +sommelier,somm13kcuc2p6ydkf6l80wu3s5kz3k3k49xfhedzgmr,2398 +sommelier,somm1kg0vs4s4xmtaa5f7crksrvtze4ltthspchdtd5,2399 +sommelier,somm1qmgl5c6sxc9xq2luvzw0cxeerfee2dsnvz0p2y,2418 +sommelier,somm1j6k7wmetjj97f3lydpnz3kyt60te6svkyadk9k,2429 +sommelier,somm1ff8j98rrzksn579vdt3kehyk6dsed877yukhyf,2467 +sommelier,somm1yav968y6mzrg7nlzdw95ga4cydzrdyvjdnauz3,2475 +sommelier,somm1jty3qgw8w89ert77d4cf6e08c4u0sq5h07qzrg,2486 +sommelier,somm1le44m5k33mf5akamjak3ncndr532l66xy0ah8x,2500 +sommelier,somm1eld3u83hedmspl58uywhtmtc00h3xg86e7eaca,2500 +sommelier,somm1yyvdwarlwt4sz6qslzs5sx5jlzu6guajr30h5p,2500 +sommelier,somm1azx64f8dg53cv4jm5jwk33wlf0ujl7nzsnztdt,2500 +sommelier,somm1h4arrxe74wcxwydv903wnd25cdk3hcz3m7z30k,2501 +sommelier,somm17ape0gst9pqfmwu52hqdm28ggs067g7yd6aqls,2502 +sommelier,somm10lwxcya7t3xjceenvqahr4ehamt76xpvmpjes2,2515 +sommelier,somm1yvc4lysvy6s7xmv0krydv0ve8ae5up02z6k2vn,2517 +sommelier,somm1az45nge62qvxzegy0h4qa5wq8emyvf356sy2mw,2522 +sommelier,somm1uqnlhtz3h6ppe6d0xcqsvgg2e7xjjn7e7uf9t8,2523 +sommelier,somm1lrxunkhaykgfj0lflf98d09cmxg68h6a3n4euu,2544 +sommelier,somm1uzvprlh5t4ne6zhlnz8q2kkdsh7sq8xggkm60m,2547 +sommelier,somm1t0tu0vch5k6v3pcw3ua9zlme75ktzl92xr8wag,2560 +sommelier,somm1lvq7zup9ppn23kp9zp5mjes0rl42c3xsttwxw6,2581 +sommelier,somm1cd5u9kffuaa57y4s46k5yxfjgcgmqzla3zz5ff,2631 +sommelier,somm1z8lhhf37w0u02sgpzlg94zptwddkh2zrsu40j6,2686 +sommelier,somm1c8ypchv4dzlz090qh5h8jkmt6fmu4km8suep2n,2733 +sommelier,somm16x03wcp37kx5e8ehckjxvwcgk9j0cqnhlq8dru,2734 +sommelier,somm1u50re6ltrz3xz6uylglqfgpw4fy44qe0fn54ss,2739 +sommelier,somm1xu8dguq27prxnnx9ugvgzgdeh3ww4q0z2rfspd,2750 +sommelier,somm1herasn5ewvv9acpujdmqxz698y849aq9clvyl8,2755 +sommelier,somm16ek5zc8ttn6ezx23ueywgwcakfnexpf830p5qm,2760 +sommelier,somm1wzhaetmm0d6pws0ht3uwff9l3pgq2atgmghpts,2768 +sommelier,somm1rmxrrdrhja2jxjp6kplqjm3jvsrh4kqswpw2ph,2770 +sommelier,somm1l5fl0x0mz0euezyyww846ufs4znlw9cywkmjxs,2770 +sommelier,somm19ykue6njankvc8yezsyaccs89jj79ka4af4he6,2783 +sommelier,somm1p57tugeszvnp6zm9r02lgjsqsffsudf5er039f,2784 +sommelier,somm102ruvpv2srmunfffxavttxnhezln6fncaaxj6p,2789 +sommelier,somm1gpkjc5krq4flw7l2wzah5lyw5rsagah7sfe89n,2799 +sommelier,somm1dk589qfghx9pg0cz7xa9rnslk448ruw9sws7uf,2800 +sommelier,somm14qw457h2qnnf3fjj6ufyrmm2an74w2xg35vv0j,2812 +sommelier,somm1s33zct2zhhaf60x4a90cpe9yquw99jj0chlsha,2831 +sommelier,somm1z6eelhaspk2dn0rl50uvv5c8ace57rymk0khva,2852 +sommelier,somm1rtg55elpzslmrnwsu4q7ypua67dd9zu0930qrh,2862 +sommelier,somm17j64nx4quh2jmp65j600stt8dxs2c6h79e959c,2876 +sommelier,somm13lgc44dejc6sltynvhcq6d4yq9uq9fwplqglwm,2879 +sommelier,somm1ulzhse234ngrx4n8lzy8qk0myuzy9vm7untmxv,2882 +sommelier,somm1akhswynqs07zj5p2k25r6s4ur45qyjnranp890,2893 +sommelier,somm1kzu6yxgdag4r0y4h3fdsp9kzsrrmydnkmmu6ux,2919 +sommelier,somm17uy4240mwx0t93f9f9yasjc8w86m8xs6xvm52y,2945 +sommelier,somm1d7dswdtr04eajhxtvt5aqd3mvh3tvzq4j9juwg,2950 +sommelier,somm183k8depl0m49ysd5mnc5fjekuclepn7gl5ddp0,3000 +sommelier,somm12lhfk7apm6ecvnkwzlmjgp62lh8pph85gt72pf,3000 +sommelier,somm1e6tr70j6zf6ugprjvdssfmvejl5p32nlj6sd7r,3000 +sommelier,somm1spfuppc6lycpzrdeavg4a5mplflru7yjl38kra,3009 +sommelier,somm156v8w003ztexdzp0l0rs5jpenk68jnprvjkyyp,3021 +sommelier,somm1s8n824e5p5chavmq6j2se3npxyquvxtt2c43p6,3030 +sommelier,somm1uunpjasy0es2ywe987qwmyscajtnj77v5qe363,3032 +sommelier,somm17p7635yjk4uma5g84gm5g722hktqx9wgm8ejp2,3050 +sommelier,somm1etjt4a5l75vy8jd7tgw0s0d6q53u4s3ekplgs4,3066 +sommelier,somm1s0d9jvugwshucezw5r7uutw62dvj654ym758sr,3071 +sommelier,somm1rkv9h4xaykwgmpyhla8awcqytz9tygfglcfcvk,3087 +sommelier,somm15966xthwykqqgaxtutwc3w2parh9nrtsj90h03,3095 +sommelier,somm1g6hp8n8mefwmg8x3fhg4zc33d68rgfp8evdqxv,3128 +sommelier,somm1qt9xn50e3cun2crua4h2kun4mw7u4c9el2vufs,3166 +sommelier,somm14qg5taawqjam00v4s9j99pr57hd96e9pq22yl2,3167 +sommelier,somm1x8958xm5el05p4thmg3vajv883z2w434ukwy2h,3191 +sommelier,somm145kvyy7njm970wu58ytpv38caxl7yvm5ak3m8c,3197 +sommelier,somm1msspz68cavefw7ufmgvgyaulhqvn6qp7ukl9fk,3235 +sommelier,somm1a9h9wjwpaxhuu9exfjfrky6rwzhtungd0krml2,3254 +sommelier,somm1wnpak7sfawsfv9c8vqe7naxfa4g99lv73z98q0,3260 +sommelier,somm1lucch767n6ykc6n087zxgpxph8xhkrj2xn63v0,3285 +sommelier,somm1q0u34n7dujy3mlataslm2qlups9yxqwfftw29h,3290 +sommelier,somm1yjcddkk7xfz2hg7srs2q23u2hne02xwwv96w0s,3300 +sommelier,somm17wjj4e4xjlk6qtdk3uw432vs3pmvkv0d4xdjcs,3347 +sommelier,somm1esltdreda2thhjkqv8c5rjdvnxlxp94mxz83gg,3398 +sommelier,somm1kcngvtslpg6u4zl6rzwt3ngdk206xkq6tkhzet,3418 +sommelier,somm13e6svcf0dy58ee6z7s8d5jjmt92jz67k0se3qy,3420 +sommelier,somm12kwygqlsx0ydr3yyj3shedpxqwne86aep9p2sw,3433 +sommelier,somm1mj4c3whfpphcsw0m2vu6g9r0d6pgv8cf20l945,3448 +sommelier,somm1yeyafzl0nczpdwx2q2wkwkez7za7uwt29pdvdv,3460 +sommelier,somm1nd3quzay673s8uc240594a8cgfjvmxjh3m475c,3489 +sommelier,somm1u2fcgat0c4xa6238t2ugx6aax56x5x7zs9krat,3493 +sommelier,somm1pjl9hw3qkh798admlenm9s9ta46x5fx2edkr32,3523 +sommelier,somm14fsu9tg8taehxz5mtznc4mjk0n36rhkvq7p974,3577 +sommelier,somm1v782ws8gzwdxmutxjh9jg06udy0u5udapqpvt5,3596 +sommelier,somm1kvxdue0rfh5tymk4u9vr65erhn9p9j80qfjvhu,3632 +sommelier,somm1laqefwck8mkxt44jfn7fnpynfv9f2utyzgmuxw,3649 +sommelier,somm1yxpl8dgfm2w77wkr9dl70zfa2vyrrrkwznxmut,3684 +sommelier,somm1sqdvuhgkzlve4p0yvsau9unrygqy2uch8xj29t,3746 +sommelier,somm143w9ch4a3zxd8d50xj0xpkpjgsgl4remngtz5d,3749 +sommelier,somm1txv5vqvrx97gm8370js9f7m47vwh2vnqpanmwl,3760 +sommelier,somm1tht0mf64wy6lq5axggh6j73uzga4mw5ddqxe3a,3767 +sommelier,somm1rksdun4z9k54p94hepn3gden99728xwawdck69,3816 +sommelier,somm1drm7xxh3l66aa25edw9exupkh4fvlqnzuvmtl5,3819 +sommelier,somm1vxurf7gcsrn6unggcez7agvdnjyvpxq7aql8pg,3861 +sommelier,somm1vpwnq5sfxwgl94tmxvshjvwmgcnl3ykuem6dh3,4000 +sommelier,somm17rfqcnevtfhzmf2d3l9nygmzycrdua3mwdzlrq,4055 +sommelier,somm1a8gx9m553deeajj8jcdlp37tgwqyy2c0q6jskl,4113 +sommelier,somm1x9dh7mxmz2jgw9c55lll6lcld4jv97d8v528at,4124 +sommelier,somm1emdd6a0ggdfdj9qq2w4luk9s0uca2v59xdyy8d,4174 +sommelier,somm1zqqj40n9vuve4hl84a0rhdzqkxzk42ttzpn4j7,4179 +sommelier,somm1xucws7ckux2lpegtvqghgfuc53h39z52n9vat4,4211 +sommelier,somm17y3wjy5t7cyz30g7d4t2ex5czl5ker9qdxnu20,4251 +sommelier,somm1d857k35ns2fhl4nljdsr048vwmykwrkcmmta2y,4252 +sommelier,somm1kc3g4kwrmuw9pu72phue489pqcwg9smd97gpv7,4252 +sommelier,somm1nzzdvyack8qv63d854g58ktm0xyxhq4s77dd9d,4253 +sommelier,somm1050qwh97mqrl8j8f8taq62mecp4k8w9tq4lkc5,4258 +sommelier,somm193efhxrvh974mmg9w2fmp95g08pt8zey7rg3g7,4342 +sommelier,somm1gf5lfrstxcv8764x35360tmf62d0gewzuq6wjx,4357 +sommelier,somm1u2jxvqvc8radyvc3vfgc4lqtdlxap997fanlzn,4363 +sommelier,somm1y0t5g650jcn49v66ta4ueumkd6qwxp4qralx5z,4388 +sommelier,somm1lcrtsnhrjv0emxd7nanywswfm0dh93emu0fm78,4419 +sommelier,somm1qxctvwnlty6e3a55pphlefxnzj698xss4x7fx2,4422 +sommelier,somm16yqnemhum2zzkp3lgrgm2tq74zcy94yfawy95y,4422 +sommelier,somm12pd6h5xd5gputhctkdxy9zatlpwuej0l66np0t,4492 +sommelier,somm1ndqrnhv7y8n6dn48nlsrp7vyymznl9whnf8l6s,4510 +sommelier,somm1gun80ak482dg53cjl0x33felvr5j7cq9cnphxl,4556 +sommelier,somm1lwkpyc07zta670uuz750xet787czp6ucy4prae,4608 +sommelier,somm1u8xff6p6p4uunrpha6m7fskv6j5z49qhq7qrvu,4634 +sommelier,somm1e5jprrmun9t7tuuk9qf3s7nu3mg6yq723hduq5,4643 +sommelier,somm1sfc34ujkys84eeqmegm7lle955y3edytvg3yu2,4657 +sommelier,somm15ul4ayz9zsw5vytju2ec8lz2cpsm8prdajpmcu,4724 +sommelier,somm179jxqu40gr2vp6esv2lur4cf7cc0qvvjl6mc7h,4760 +sommelier,somm1z0av7m0mfzajazxrzv92qyfk90v9q38tkq7nyk,4814 +sommelier,somm18tgy7tmpng6qspxgwl4alvc0myq6ln7urc2qg3,4819 +sommelier,somm1t48qp402j9r7lf8k3e32tqcjq0lxa20ffgn9kg,4824 +sommelier,somm1pdujv32j59ycprvjd8e0c82dw90c3hy0tp0gyg,4864 +sommelier,somm1k5g4gt2n5vqx9a3u328dxq7ermmdkqgrzgp8wp,4897 +sommelier,somm1xgzan7sa9ngjdw0rdnez2j7g3syawxpznctv07,4934 +sommelier,somm1wrxg39eyugkwq284n3jtvfe79077q7qp7v0e0e,4943 +sommelier,somm1ukwuv8u5wlt02wr4zlvyx8hvtwdyyt25ealw6x,4951 +sommelier,somm1jx7zl2c9h4cfneffd023fz9320y9pqqukg7ms6,4956 +sommelier,somm1u5gu724tad54j45k8ehxsjk8mc34k2dvu004mw,4995 +sommelier,somm14lrzujxue900a0hmjln6rmfwdczwc082zkyxha,5000 +sommelier,somm1ulrg3ul7rsdk8yaln4gtvnr5g5t8judqepxtd3,5000 +sommelier,somm1cxyjsjj7qjkh9gearccn563hwujrqdewxacud0,5002 +sommelier,somm153q8f6xk2tjl48kvm36pr3fqrsyamus886q2wq,5027 +sommelier,somm1t3usy5x8xfggzspknnka02ny7u65u6k0alzh9g,5065 +sommelier,somm1phmg6k3yl6zk3hkkczu7rf86nhd00d90zp6298,5085 +sommelier,somm1a8e3lyuym5fcuq074gdja6lfl6vaxdgjmmx95x,5091 +sommelier,somm1gt4vzztv0nser0pdxer2ucny7vwewxrl32l4e0,5116 +sommelier,somm1cgxdnt6nrwhahym2c827943y0q5v6wuhekwda3,5217 +sommelier,somm194vq0mqj442df6p3p5zrc9lzxt6g379psg6mqm,5250 +sommelier,somm16nxxzqj3y05dhgzgvhl2vapca0tqd5hkad5s45,5261 +sommelier,somm1sywqmssxxgvw5544effpqw6mn9xzdn3cydlfpk,5303 +sommelier,somm1arl3wnskvm5xh4vaev6g94fy9ty8xlu7tda5g7,5309 +sommelier,somm1yqvxyhzqd4e6mg6hhd0x08jr5yg6mdzjjzguzq,5314 +sommelier,somm1f04haf8fs3pgagkf2pa5ay5uqrkjstzxf8wykl,5405 +sommelier,somm1uy3efc0t599rsemaars94ve0x6m80fgc43jh8q,5436 +sommelier,somm1qj7vvfm8qahxyvmac83x57wh0zup49w8r9jv8n,5507 +sommelier,somm1s0t27aejcypy806h3ve6sw6lhsh2v2yxpa7aun,5625 +sommelier,somm1hvxzhmah2u6hpf753nsxup9e0zffnatqkhject,5689 +sommelier,somm109fhpxjztun2s6plnyzxpsmctcz9cdj4ntn08n,5779 +sommelier,somm1wz63q7ze34mqhmdvv2gs3lznr6sgn3yrpr8z8q,5829 +sommelier,somm1vsef5rvjka7anc4pxwyauk29kkcjarny8xqqcc,5882 +sommelier,somm1df7ysq5du0nuwurxn3rue2jz02zm4cyr89pcvw,5884 +sommelier,somm1w2vd2czs6zy2q4juh9gc2mzkvqvawnj58r5j8h,5983 +sommelier,somm1wq7pfzye6rvyl8h5wg7qalazg8adhkeq9ke3ae,6000 +sommelier,somm145p0kql0xxqah7xg7qkhad7vzkudxdud0e4uz5,6016 +sommelier,somm1rpzsesr5cjgwwyj2t3edez45e0x37qxcp0f4x8,6040 +sommelier,somm1mmyt7udwyq53f2fzaw4ee498a5esyprhveh06k,6099 +sommelier,somm1m9n4keerxus8yw3mjqvekxlywn8sq9agfflcl4,6174 +sommelier,somm1nauea0g7sz4ac49m82430ptp4q5fpaz23xg75y,6176 +sommelier,somm1tj3jhe269ltdu3mnmuyd37r3yakct9s5szz5m5,6232 +sommelier,somm1f4lra52avyw35wqetv6pemcn70eqh5pmtuj9n0,6299 +sommelier,somm1l3ny5jf5g69rdlz37pkkayvs5yypaavj3gf7lr,6335 +sommelier,somm10l3rfs5eya90utgm6g3lrtf6pzff3mucjrggqe,6417 +sommelier,somm1tnnrk252p8zxruykqtpm5sta7rsrpchqraag70,6449 +sommelier,somm1fj3h3c5ncu6qphm3an6y92ulre2eg27uvpz85j,6454 +sommelier,somm1pfsmlav60zxplnn4wm5ujxh26yuwd55qp5mqvc,6468 +sommelier,somm1fhukzh65awek5kyq4l5lu8zcpshp2ntvjr6kuj,6516 +sommelier,somm1c362wx6uzfuncgm4t0rex675pzxq7nmpa4d2lp,6610 +sommelier,somm1znu9japz2ukk9a2zxmcktcqsu80p099mhgfg0a,6661 +sommelier,somm1290wymvck8gmwm2yvase906u3z4xruns9lxlal,6732 +sommelier,somm155lqp7fg56krz5wxgr60eejx2j8ynd8qlkdkdt,6745 +sommelier,somm1rk6086khes3f38sd7e4m73qxgu4hk73c4gqkjl,6770 +sommelier,somm15pszr7ljemequ30aph03vhqvgmyce65syxzk5q,6832 +sommelier,somm1u87g33ps05dmjv4zdlkgdf6sf3j95jkvj4jexe,6908 +sommelier,somm1ykqfsmrw0uk4fcnycpp60a0cdg0xlsmcrrk03s,6980 +sommelier,somm1lchwax29vf002t3j4slxh5sxm04rrdf6k3tgtj,7020 +sommelier,somm1yyywtul2vmsenlyg4xrfdl48jcgp5ryz85ztzl,7124 +sommelier,somm1z9zyhgk59af064gaemclnf396gj9uep0n4h43l,7169 +sommelier,somm1q6zddp5qdn2qqhxyvgnh3hm7gwf28jhuhdtzz0,7200 +sommelier,somm17qy5dh52emhdxj9jsrggz5e2aq8rcyefdqu29z,7217 +sommelier,somm1hhqrp4kxyt42qq85jleaud0ytndf929umnt8yf,7332 +sommelier,somm1fexcy9jrpplcuqwavt0aj6at8cxjgdc7aus6cr,7384 +sommelier,somm1wgahmf863takdln7z7shfsw4xwn8tkp07z4jjh,7402 +sommelier,somm1jvphqh7wg2eqdhgtun0sa6kngpawrkgsjrqmsr,7642 +sommelier,somm1ygarrkevfqehg4hlgwtw3mdzygm3rzpc3lka7v,7689 +sommelier,somm1udw4032y7my0q9y0mp8ffry5m2u5xl3dajx9ph,7691 +sommelier,somm16fxhncv3m0us7ah66l8te4z86gst8j3ggkjlp0,7731 +sommelier,somm136vrrpsmxtvpv7lj573z9x83lqylc0ads8c9dv,7772 +sommelier,somm1sjlklux980xzf3wrx4kp4uzrzjem76thy988az,7963 +sommelier,somm17fvj54vszd55sxgccu942ckpkdv3vxwfdm4dwz,8000 +sommelier,somm1la4t7jee73a4zqg9ccs2acjt462qjs5x6rlez5,8233 +sommelier,somm1hjm560zedyflcgc5w03m5w7cekc7hfx2dq3maz,8268 +sommelier,somm1l449zpgsn74y7vneh27malgfc8yg76ck5u5neg,8301 +sommelier,somm1u22tuw7xljsfsmt4vwdsn2ns5vh05szx7d4srt,8302 +sommelier,somm1rjyzfzn4r4felynxgnykuvykgqhxtl0ghcd5uu,8420 +sommelier,somm1qmnyzv3l5ls96jmme5zm9kkqj7a6pges0rpz5r,8499 +sommelier,somm1s5dtu5pywamqc9kuxu37u9p0xrj4psmjhnjjls,8725 +sommelier,somm1m9dwd037y7ma059xsnzwey92xk3v8jmyss6llz,8740 +sommelier,somm1vamr5r9vuae4ttnsnwjyhpnewdnrfw98njdl70,8756 +sommelier,somm1pelz9wxas2wtjr2p8xepcqp22n3kynmza2thhs,8756 +sommelier,somm1qaggt3drl0gce7ym3tk04j704sjn0waf9wq04g,8775 +sommelier,somm1nllnffudccy2f6wrfv4djaadsvqsr2la5s6chw,8925 +sommelier,somm1p9lujm5arq9zdzdzr4ffx5rj77urffu27evrf3,9190 +sommelier,somm15tw95tqt3twgtaeu2knuu4325n70mdup28nyrg,9196 +sommelier,somm10ywtf0v6j462vguxjjp9mt5e6etl7kp720t2n8,9200 +sommelier,somm1lpu6xj6qsu5aqxnserzxjteaq56j86lcnec5xw,9245 +sommelier,somm1aq5yv8pqghxtpwngmfwy33wpudkjz5vv0e8vf4,9343 +sommelier,somm1ljd6d8quzfn4zev99unxnz5x89frev3vngu9lr,9450 +sommelier,somm1wyegm9fjyz97xvagm03hpffl39h4322v09wxgz,9568 +sommelier,somm17jqwh7d7hztslc9ea75c7ru9lndu7nc047utth,9593 +sommelier,somm15w6f90atnc80u27mdcfahszyd5rp8kcs5vy3eg,9753 +sommelier,somm17jvy2a5g9eamn9pcnjqc5eea46wqm925aaxyt3,9900 +sommelier,somm1ame2j4xqpenzt40hq97rdfkmx477cap3nmtgqu,10000 +sommelier,somm1j86t3yyrejgxf0eutgcr4hdf2lq0rc8fcyqvya,10000 +sommelier,somm19e7l6q3kpyzce0yn79ump5txcc5ahr2lsfztn6,10000 +sommelier,somm1h8n4qh8u66psn6jf55vtq232rhjkr6wxppmm8w,10000 +sommelier,somm1xwseskrmnxrvesmad0xtyfvl3lx7xzkk8aud82,10000 +sommelier,somm1s24ht39ea9pquwa2ry3zwd4ahlq5zlj5d5j6nf,10004 +sommelier,somm1cwk9sa6p740cqrxgz46lzrg27vhlfcd06d8689,10020 +sommelier,somm1smqr5tp684g07aekcn0w852wqlme5mn6z5tvtu,10025 +sommelier,somm1tlaea2had6dyw3z6xyj7sjkgfsqhszh5w9gdw5,10106 +sommelier,somm1yapj782cpsx9u2nd4fv7yvqrumv9jlzr6c4tc6,10118 +sommelier,somm1nhmm3erpkwt6u9qt8jgas24t900ryu9y3xk755,10183 +sommelier,somm1xppn98w0gg6wl0q2g2nasmkqlf2elwpknzx59w,10200 +sommelier,somm178dcdmhlsqx2nlku2gkjvnmnxkltzwqenmsux8,10212 +sommelier,somm1k9ur3v6dryftc8mctrddtxud6easfrdq47plx8,10259 +sommelier,somm1wf90nn2cj8xcyev4mwr5fk2nrge28mfgc3g90e,10332 +sommelier,somm1t8cgwzfcfcdlzqnxn4us6dhq90l0tradf5k7qq,10376 +sommelier,somm15dk63fekucecqcqlyuwy5mxpvcapmfhh8r2n7a,10483 +sommelier,somm10jej4dvnnj4wn5nfegx3js2lhaya7yd3p6d8lk,10740 +sommelier,somm12sczd7vmheqat355txqducgm6fk86ye4a7rdk3,10767 +sommelier,somm1uf4mqmrfceq054asr0x7j7zp4t3rftjsj2c94x,10823 +sommelier,somm1dpw3seczzg4n8gv0hajl4xapl9h908rehclzgp,10914 +sommelier,somm1dwqe5m0ln0w3fjada7t6k54q785086e2nd7p4g,11038 +sommelier,somm1xfsz5zty8hkujxu9j5jyreyvutpas587zqjx46,11080 +sommelier,somm1vpdehzac9n8lz22xhz09kstttf8kedp23aq3z2,11110 +sommelier,somm1e6ec2n8zgx604csuzhqdm83utj8x899va6rhml,11358 +sommelier,somm13wuu92f6gp80pcznyjpt7s83jvsvds2vwu047d,11501 +sommelier,somm1ju7p97r3atsqlpruy3a9dr25ltdc7qcjkyv8wx,11565 +sommelier,somm1ggcxyngdy2zk5ef3spxkyk0lavfxx4yhu0070v,11699 +sommelier,somm1t9nd2wcgjxkw7mvgzm7z70vl6jf408u7vvz8zv,12000 +sommelier,somm1wh3nwe6gcgf3vld5vlfthjqk40wxkh009thhlw,12210 +sommelier,somm1s94n2rkpmumpn2a78w8hjhw0v2msu8lcf4ze08,12210 +sommelier,somm1kscv7wsh5qlpaquegmt6c2dt2ake9gxkndq25h,12300 +sommelier,somm1afnpffknhscex2ly2khm3zqpgrkjqh49hmlmgu,12301 +sommelier,somm1zch695nea92jqn94sdd0nqjhnvpgfffwa5vaq6,12404 +sommelier,somm1dm3cyynsxf4v2v274esgdf9a36phdrg2upj3yn,12499 +sommelier,somm1jnuue2tujmggtfaw3yp7fl4cgp4q6dxezlw9f4,12615 +sommelier,somm12jhse8d8uxgkqgrvfcv5j46wqu08yru7fz0h0l,13055 +sommelier,somm1jyfr2tydnmnzflcprp6r5upwxpw6z056ljquv2,13234 +sommelier,somm15kuyqke44arum9afduxagd0lpd6gx6de7rthhl,13536 +sommelier,somm14v9ydnusz7tfrzk9l7em6due8jk0h88wlu85ug,13593 +sommelier,somm1wx6n2kgc8czhrndw74m2qhhgty2vmvmx9czmld,14000 +sommelier,somm1mhv799y0029rpjlu3j8vs8r23tyf7e49t40232,14634 +sommelier,somm1frcsy8c0hveq2qnutl0r6rd4dfe4es47z8frrj,14670 +sommelier,somm1px3wtdf65adj8xtzjlwptm5qk65rpzzeatdvjl,14716 +sommelier,somm15jxxfay7j0nxt4mywl7rqf9fuqkkq0ltfedj5z,14945 +sommelier,somm1cgxgq3385n9hw8srpeycp685duxsysl4vy5uvv,15031 +sommelier,somm136wrasqzaplzsakzf62g0czq3jeh6wxndm94ql,16399 +sommelier,somm1pvgdhrlfc5eqkkzlptjrs6u35zd0qctetelukp,16524 +sommelier,somm158ddh954pzt3etjh0yqe8lp7ax0pz6pcs0dy3w,16821 +sommelier,somm1y2yrljfduc5ntx9eueksm70vp5fg39eeclex80,18094 +sommelier,somm1taylhrc083qc4n69tj7z33v0df9ty7rpeff4xy,18645 +sommelier,somm1vhtcaztzs4g3d3u2tkd7x0adrzc670dfee783m,18687 +sommelier,somm1dvr6jtskmeyv7pv4m6jgfmcrruy0kzywx3s082,18775 +sommelier,somm1ce2qwpvlcenuyfqrfk8da7tp76z3ctlvus83g6,18775 +sommelier,somm12cqxmjumlunaq0gd9h8e59ms0qvfm3ysxc73ny,19000 +sommelier,somm1rkz324jya79j7jse7cm00pyeqv6mtaf0dnxa7y,19261 +sommelier,somm1gddjmpd5wrah86dpzr08w58s0u77jsy0zv3287,19315 +sommelier,somm1f4j6vh3qrflhr3x4p003e7gngcy2wufe2x9we4,19323 +sommelier,somm104aavf30j5uwvw2nnnmnp45hjzx60sdqkv3d6f,19433 +sommelier,somm17k8pf77rnn842spzsd2wrw8v5qrd6360q9np9r,20000 +sommelier,somm1n0h54c882xqalqeks8vy45ftl2w74naqjv3yua,20038 +sommelier,somm1zm77n5ayf94p2eqq96xgqt39q9fnskvhvwh60q,20168 +sommelier,somm1fmkc7qnlgpup8mnq6a4e7vtmsmymnhdazp5t9w,20833 +sommelier,somm15jjj0qf56xy9zkdm5s8pt668pja97s30d86rwd,21000 +sommelier,somm1qk5x2u5yfs5gw09nl4g8hj78n735zes77myfxe,21269 +sommelier,somm1xs5lxpalxqkyv8hnmg0n63gwmdt72mgrymn6kq,21331 +sommelier,somm1e8p95dvjjdncyn0g8e7x5s8jeyhvf3gdgf64k2,21539 +sommelier,somm1c2w7sxnp423935c47zwv32rgmk2zmgt8l6vj57,22665 +sommelier,somm1p9phcs6g4ls4d3sfvzapk89tttu627ffnfu75n,25000 +sommelier,somm14tdg37jf4x0vkdwjszs5npd0gxndew5mddalmv,25406 +sommelier,somm1gtke29g72hw6n9hrj8y7m9qxl3k6mmjz5gxazv,25517 +sommelier,somm1f7dy4acfgawdlcfqhutjtzh5hr6gwzdjuekyzp,25740 +sommelier,somm1l2scvs2wve6lfz2ujgvrlkrsnw6g68dx6y0ykw,26250 +sommelier,somm1dzz0hlf8uznvxwmgdd4su4euk8tmpys2upkqfj,26760 +sommelier,somm1d6zgvnhcax3jjp3wp34j5ezrp6p8e768gjm53q,28047 +sommelier,somm17vz8hvg96lddwawdfygvu89ua4v7qgd69k8eyu,28321 +sommelier,somm1rhgsg2qedccgwrpws524tagm4v7rlpdrmng73s,30000 +sommelier,somm15k5tv7xwgvyr0zek0tv9vmaxnqjjve3tfdmaml,30000 +sommelier,somm17h2x3j7u44qkrq0sk8ul0r2qr440rwgjlpnk4w,30516 +sommelier,somm1ahlyh6yz9j4rf8ns4cqctypc5sdes5jtsytjfn,31250 +sommelier,somm1y523x4zpsftxlhwwd2gxkh00yxrvm0e2u5k7p3,32128 +sommelier,somm1xpu3w8xezp6ucrxtuwzwlv2uzpufqrxjnzam0j,33042 +sommelier,somm1rgh3ftglt05wqnryehd5vlzkg4xdsn6k93hzcz,33814 +sommelier,somm1ytjal6t0qagtuqfs36v0lv8wlkmq6qtp8pdwk9,33821 +sommelier,somm16kpkqnhfdp7ln4mvq32dafag5zccqt23j2fntq,35646 +sommelier,somm1pn7txcl84yd4ht0ks5nlddjkakujjqzscv5g9c,35845 +sommelier,somm1js8u4v096r9gzhs2meqfxplr8e7dvm5jzwty65,36670 +sommelier,somm1m8rwaup0774h3pj0wrlk53cwd44jrx6n5yaqe7,39806 +sommelier,somm16l75jv0z07wldsrrg9f8dmwdm24laht20v9n40,40702 +sommelier,somm1mkk7xd9tll96rt2j8e8tamggu5agzwq72rplxa,41300 +sommelier,somm1ely4mctt6aqd42upexg4hsnec68rxck2gyvdlv,41525 +sommelier,somm1r79uqglmvz6vqjhe65f0p3lhna4fc5k3eugh9k,42009 +sommelier,somm19ske4eep8wwcux2naxvqctffw5su6lgxh6h2my,43402 +sommelier,somm15mk5rh2uzynx9e5efq8n6dx7chtg6fnfm33fht,45000 +sommelier,somm1vmwtsgar5aku6rfz3kuudz77w2sz3hh5mlxu5r,47043 +sommelier,somm127aq5frn9j843m6z5vny433jpkn300tkqgvamp,47249 +sommelier,somm1mgk9zw6q5ckus3yr0rfjh86smgpg64sjylq0tqxx4928dmxpwjvqp4y64g,49586 +sommelier,somm15498qsjzr8qnn7fdcnp3l2el96awttehc3qfhr,50000 +sommelier,somm16rx94k7clh823eueh29aq2m6r8lg5qv5l64esn,50003 +sommelier,somm1q95nna830exz0htq8uh04j9gkwmkwcyvax5f6r,50023 +sommelier,somm1v86fmrngp3qetn0yy05sydumkrv7egk9uf3gyw,51078 +sommelier,somm1wxftsh6af8hs97ep6wmm8cvfvk2hvwhm6y25se,51607 +sommelier,somm1stqkafudwykj2vvy6nx7vnev27pd0a833g53c6,53480 +sommelier,somm1vsgse6335r9dae85nlh2ps0hu84hlremc6xctu,53838 +sommelier,somm1vv2nm8tvpyx88r07hx5x4zyctpkztp6yutse52,55603 +sommelier,somm19qc25l2nwztml9nvhqpg7y55420uvg59gqvemx,61760 +sommelier,somm1rdg7ec7a8men3dvxnh5afkpdxcevqkrkclce8n,63221 +sommelier,somm1zscfnjkpnflzpzgm5en9mgkpgt097ju9kvejy3,71189 +sommelier,somm1vr44nucas86lv6rr8xw86cdet5jtfwljkhnecn,73481 +sommelier,somm1jfskdrdxuprv3q234uf6xlucm8mhw98tn89s26,74739 +sommelier,somm1uhzvac05pw0gkjm22f607mv7lkmcqsgvv8senc,75181 +sommelier,somm1758fu9jzgs2s9rh2qx68m04up0cdev2uxg3rh8,76250 +sommelier,somm1wjjg0mvsfgnskjj7qq28uaxqwq5h38q6r70vs2,92367 +sommelier,somm1g5435cjhlm4s2nlmwln6ess9x4lc4qgd99wxws,92551 +sommelier,somm1e9dyzzfj5d0n9df7y59p5uns2vulq5mucxzh9c,94333 +sommelier,somm1edw76tudv94twx00q46wphes2sdc6e6ul2u5pt,99999 +sommelier,somm1xynzdpcsk36mt5r0ajf4kyqjuq4m46wnx3gq3c,100000 +sommelier,somm1umpkahgsxfc5j2gkcgc74m0sesds3lcg8u7asn,100000 +sommelier,somm1zhwyj86d2tcclypfv47p5hmp4pghe5gd3mhsme,100241 +sommelier,somm1u2wpyuem4tuj22tajan9cjn5npcq8syvjggqd5,107817 +sommelier,somm1gt24kehn0jxgt5udev7lqa3nt4jpg5g5ll2p94,113864 +sommelier,somm1qj7nm3gxxypwqp5lvrjg27jc7tlhlys7gdaen2,122366 +sommelier,somm1e6py9vzzp3u8ud5a836zgrywy677hzupqkk3sc,124410 +sommelier,somm1lu2qtcqq4lva2ycqgumtjzxpk7gymj2erf4v2k,125170 +sommelier,somm14tawjg3zn76rfjyjmvadc8wxd3mk7nk4w85hnz,131057 +sommelier,somm1ajgqn2vxldz4dm8z4nv5x4m704r69cgt6gsjd7,136479 +sommelier,somm1vxxfhd8txmrq76jx3gj7sdrvg0vvqret4ea78q,140000 +sommelier,somm1jvykup7tdqs73qpt68xwylunst873nux62xdr2,142335 +sommelier,somm1df8m4wt2fetmqjzk9jtw90yayv3ktny97eaqd6,171173 +sommelier,somm1vx807arvwtl7w62c7x50encz6j4fnpsutr2zpk,174240 +sommelier,somm1gvtlcwnkrz6zwz8knc73xs9pkt7mrtrd7v4cy3,174272 +sommelier,somm1n2qy559htg5d8f6u5ahskjvftysamfvfyp5g8k,175000 +sommelier,somm1e0zv8m7f2z7vu2szd0rq7fqaml8val8nz3rje8,199000 +sommelier,somm174rx5ekfhpuvwd8zp6v9nex48mwnz9vl8gg4e0,199902 +sommelier,somm1plfxdmz97ghy3y67g9euvdnlfrxpek5xpj00xf,199990 +sommelier,somm1eqcle4u5e9nxk4z2uwzujpgfrjelqlzy76v750,199998 +sommelier,somm1f7cjfqrn5ly5ck54lwmcz0xpjyd533vkkcvjgl,199998 +sommelier,somm1s6v46klx4h5jjhydd7vqv54e6eq3eu692tatk2,199998 +sommelier,somm1capc6hg8pa65slth4jpw3qkwtuce7e8df9nwmp,199998 +sommelier,somm134e3mq9v3lqn8sxn2rnve5y7rtqzhp3dpqnnyh,200000 +sommelier,somm1fcl08ymkl70dhyg3vmx4hjsqvxym7dawnp0zfp,200000 +sommelier,somm1spv48ml9wj55k9ljgn64rjg4ygd38pps2k8k7t,200003 +sommelier,somm1l3c4jstap9hr6sym54p8peeswknf89df5fqxjx,206615 +sommelier,somm186qgcvxx29azdr5c32d2gthp4wnyvsl6s67c7z,209318 +sommelier,somm1dwzxaessw2fpvfzyh4wp7kgmgcfgeqth7pwhp0,225046 +sommelier,somm1pnuyz7xuj38xnjtlc699tvr9f278wvnsfhve76,230516 +sommelier,somm1z6rhshw28ve45mrnacprkzwc9fqpuwt2gc0fxx,250000 +sommelier,somm19clxjvtgn8es8ylytgztalsw2fygh6etq2et8x,250161 +sommelier,somm1x0rc5fugp0s0l8ndyd4aer02gfyc2pev5tdph0,288791 +sommelier,somm1u9jtnu8qemw5khgq82h48kzc8hnz2fpfz4hnqa,300000 +sommelier,somm1lly4mauyarvg3uq50wnrtc6u3rq443l95mmd3y,300203 +sommelier,somm1p0xd9dwqztlua5vjl686alvzn3fng5hacu5r04,306000 +sommelier,somm1v34kn7s505gqlp723pzk0v8cwgchrajgfd2d0l,307416 +sommelier,somm1y4zxwzvk8fgejrve3c4ksfzaj6wt4u7jk7tq40,344585 +sommelier,somm1z3z848rlgyk2yqdmyquj5gv9mh695a2ja04akc,367104 +sommelier,somm1m9pr68x7s04k7c07x7en03jfevzwnz0k8knu6g,381699 +sommelier,somm10lzg5rt9u0wupku4g4k37suuf3fzxpu8xa59xr,400000 +sommelier,somm12w97mtlqtdsg8te4ff4jymmumgunurx8usd56d,400000 +sommelier,somm1p72c398eh3va6evlnv2mrcvayv2fxe53h0hgej,400000 +sommelier,somm167twacmq4t2q0qmp42sx4uhgv9f0kemc7sxs4f,400000 +sommelier,somm10pqg8v7k2qllru3qtqx8vly6cv3rtx4alp9w2v,400000 +sommelier,somm1pknp6pynqn3y59s6vxg7cx5wu6ylek6qs47t5d,400000 +sommelier,somm100knhxffv7pgyscct76479fcwepvuj36t99cnq,400000 +sommelier,somm13gxzwk0achvrrjnggqjzm9h83c4pck9nv3lej7,400000 +sommelier,somm1assu57rsxtqjyede9g060jj5396dae9xs5ehk8,400000 +sommelier,somm1849m9wncrqp6v4tkss6a3j8uzvuv0cp7zy8q3h,400000 +sommelier,somm12n4pgw42qy5lkw4at43eqmjcwr52meq9fcm52t,400000 +sommelier,somm1as22d4fv5s25jn3ud0ctu2keksgruhmdpj60vj,400000 +sommelier,somm1x5rmunevfr0cn3dypw86vp9r9c60zzlk8twpnr,400000 +sommelier,somm1u5yxshd3fy0zxx5s7r4kgc69s6xaxerc9yhaam,400000 +sommelier,somm15urq2dtp9qce4fyc85m6upwm9xul3049s838j8,400000 +sommelier,somm1uqrxgsylszwzw23d8xaunpczmezkm9gm2cguv8,400000 +sommelier,somm18vdsal7vl5hdpgyejlvea5kn6pkndjvpy7cnew,400000 +sommelier,somm1v3h6evm535znjjtmdfhmr7h8hhez0kfxnac7m0,400000 +sommelier,somm158fmvpl0jflr495jt8g5quu8wlgzvpg4v4lq0s,400000 +sommelier,somm1lcsjy2d5s33h0sddd8lpuqvwyz5ruz7ju4aeqa,400000 +sommelier,somm1zfdtfsnxjzyy9ge6jrcczatxczmdddkvguahvw,400000 +sommelier,somm14zsm5frvjuqxk3f9377altc6xq368dglhmkxmp,400000 +sommelier,somm1jl6rt2gwqff0j7pz80ccfkrwvt78qljxmw2ycu,400000 +sommelier,somm1y5nd5x766496vemdzzf57mfpmyddlclmlynj07,400000 +sommelier,somm1stmg2h3l2czaqr7gqdjxr7z2yhmjz6ahe27dux,400000 +sommelier,somm1g55vy5tyjg6k625sd4n46u33gmuky2er0z4vtw,400000 +sommelier,somm1eqhfsef45w0y0pdsduarqddeu3zefpx33xheze,400000 +sommelier,somm17kevdey6athxarxu0m9rev6quv0cgu4r6dftmg,400000 +sommelier,somm1fxzkeu4xx7ldp0sjuhw37xlq37c58t96qn8dr2,400000 +sommelier,somm1kv98xapa28s05x5exhupg3gzlfmkwfl32ye45r,400000 +sommelier,somm130hqaa39xz760qf8rpcg8wy4ws3s24a6m53lxc,400000 +sommelier,somm1saxrjgrs36vefktm4q8rzx5kcyue8h3vy72sj3,400000 +sommelier,somm1pcal3gqemz4g9e6p52had37azx2p9hg6cfp6aq,400000 +sommelier,somm1lxjzf4jgpsg9mc2c669kej4fgr04nafdz04y3u,400000 +sommelier,somm1x47p0tjylnsmxyy33q4mhqtxhzwk50099t7cp2,400000 +sommelier,somm14ec05d3yrxzm9px5lmsyu5xec92qqv8dggylm9,400000 +sommelier,somm14ale5huv4hcc7jevg29urlcejegkfvlwry9yk5,400000 +umee,umee1whs5xy7vquwwc82lzaz6h8v4yjmcq23vdyrrlg,14000 +umee,umee1wx6qsqpsgmjez0rzux825efyze4d505dyuec78,14000 +umee,umee14eaycfmt8nvq3v47eewwe88hnd082t8gep42df,14001 +umee,umee1drwg2xwacuqukzyyhyfuzhr7n4kkk06ahq7nqm,14002 +umee,umee12mt8xhkhjjr0a2prmcdwyca6z58wu5dcamnjfj,14002 +umee,umee1mde9rs36m9mjm6q99uyn4trs7hwrhqu444g0rs,14003 +umee,umee1zhh0yt4ameksv67et35kz2vv6ag5w4f8vjhlqk,14004 +umee,umee143sjuxtc5mlutaq077snq7j6utsya580fnyshv,14014 +umee,umee1ynhj422dnzah9lpkxqjur36rnuzj9w8hngchcd,14015 +umee,umee1zefs72ujen8gcf3m965gnrk8wmcze6ugwaxq55,14015 +umee,umee1lzup9wzsq75ss05pdnnm73tmjryl5lhutnhyev,14015 +umee,umee1yh8fk9vlw52r6x90l7avmjvy0xhcwm7whna0ls,14018 +umee,umee1v9ygr985092zumh3h5el8awslzlwvkwuak25sx,14019 +umee,umee1ku6y4m90auzt4egqwuzs7ajgnwfuk3ju30atef,14019 +umee,umee1ccffhnsu9rcqeazgc4a4qu64938qxwzfpfc2pl,14019 +umee,umee1lv9rqg77mjlp5evyy8v0n9zf6p0qqp5hq2t0p9,14023 +umee,umee1zeupf9znx68t84l6huaj2tpj7cx32deplgyy3d,14025 +umee,umee15maf765fcl60r3y7hn8ecn0v8d44x6vt9q9zk3,14025 +umee,umee1xqgyn7q534lckptdncvhwpzv09tfrsxrnuc6sr,14029 +umee,umee14yy896d6qqh9drqvshalwlxgjv5warp55qjez3,14030 +umee,umee1xrccyvq7vqwgy7hc2qzhjfv7gudd3cfzjutjfr,14030 +umee,umee1sn9xe5w8khkkhjlrq5m0qh4gdf2prknxa0hvm6,14033 +umee,umee13rratlagr74vzgqpz6mve2gcykkkgtmu8e5pm6,14034 +umee,umee1j7mejeg8j0f27hvqd8splxe6axjl2y3nsr5jn8,14036 +umee,umee1f742ez6ed4jctxnl2fk28swfvzdy8sarkpmppc,14037 +umee,umee1wp3dx6sljxc005nfdcwxqg4dc4xwhfd6mkt7w2,14040 +umee,umee1w6978lq3zmedwggxdly490q50xndka4unqrrfp,14043 +umee,umee1xngkuj4he68ke6y0pgm7kaeyqa5atxkl9cpr5p,14045 +umee,umee1293x85p3ln59p7txngg88kzrlzhr3wrh7wuk7l,14047 +umee,umee1ajdtjhnxc96359dcqdqnknw0fnx232nsgfct8z,14049 +umee,umee1umvsh7y8djmtartql3dwsun9h8gq5ddxja7hpz,14049 +umee,umee1e4mj02r2nt4t8amw3xmumllprxh8jvzc9cl00s,14051 +umee,umee1zdygtyzn6ep9quyck30klqd5k6p4ghdsly88gn,14052 +umee,umee173nlezy0dl33u88r5eqkvreuc037w4ar8fcxxg,14053 +umee,umee1hk5ge349vv0rw57hkfxtr8j7guadxaktmzdram,14054 +umee,umee10s5zq5e263yvnarq5qrq5q9znskexwdgpkk2jm,14057 +umee,umee189q5v88zjhhv906damhpdp4uezdsd9g8synte4,14057 +umee,umee1u04q6an927vd65xk2qzvjfl4aygv8edl39a4lv,14063 +umee,umee13a6spxgnx22af8zc0z4xr2zdave3ls9lcydprp,14064 +umee,umee12frmsks23sd983qr7wc82k28e8rszx2062cp6m,14066 +umee,umee132xn2fssvl3l86f8hj3n9tx8swquxxy23hztez,14068 +umee,umee18ex6jykayaht36sun2fu869dua96hkz9093489,14070 +umee,umee10f0qnm4ewqsht67v6lhxcp0gst5krcj25wr5w8,14070 +umee,umee1rr2lh9g9plq9g6264zv88eh7xumczv7l3h7g93,14072 +umee,umee1rw5yf04zl8z7hs9x5w8u356halq7gsl7qdzylt,14073 +umee,umee17uugyrrffr454tlq5qcp0wfl6mvzv7xqyux397,14078 +umee,umee1c0pw27p0sqjyjt93ulf5hukpzy50j0reg4qn8c,14078 +umee,umee15twrmj5m02tp3m7acu7dvwtnz5xm3j3ufdjpu3,14078 +umee,umee1nzlu4qmzgmxzx3h8hr80v3p9l23arhmxe0gz6c,14080 +umee,umee1xhhquwctvwm40qn3nmmqq067pc2gw22eh58zrw,14084 +umee,umee1kwkm608t5m4mdmzphte0re9a00rgvr6e4sg3e8,14085 +umee,umee10t87j5seheflw2u0apu0y7tfryy8jf74y8ktlp,14086 +umee,umee13m60advu7s9lx9zmdemyrv0ye0j2mpg3gzpssu,14086 +umee,umee108jaedkzux7fulz4gqxm9vas2562vc7yhfv63t,14086 +umee,umee1ystzd2uhp6avw4e9cj3zxxr2u30myzxua805wf,14089 +umee,umee1gcazms9cd4a7qkplrnc4g9tysnd5v76wsstdvf,14091 +umee,umee1x40904cft8n7zaxnn4qd8a4uuzl9ff5wg3svgq,14092 +umee,umee1kj8dkkn87feuhpehh9s5hhx2nf60z9n8wqggul,14092 +umee,umee1m3a4ll62rmfdlksc7s7t7zqm69h8gr8jla4ctn,14095 +umee,umee1xhs7f9t88494xlzclsu48txkmytzpugztyj0v0,14096 +umee,umee1pplvqfxtpfu99y4s7ac0x95mnsj97d5a04fg89,14098 +umee,umee1w24yee5ryatyfkfn8hfxtkf29zvz6knhtjw0vn,14099 +umee,umee1hgywqegjm54facjaxzq5q32jf7r0zeqqfcu9ne,14100 +umee,umee1r6t0h2xxqcn4hzk0d7d43juffw5s3kgt66ynz3,14103 +umee,umee1f6xsnpf08lw26ueyznj8d7pp39swm3alsvj5yw,14104 +umee,umee1hu6ycye98xz93pfqmm4h0hh0zmwcey3fyv7mzj,14105 +umee,umee1qgafelvj73xmzdl9xgv7a2u4v5w6m8ycmcas77,14107 +umee,umee1epnf5wexj0wysw5pttx9xgsa6vgcdxz2pzrjdx,14107 +umee,umee1jhxlfth44f9gg5zc32u0xtk8ggu68mgzqvupyj,14108 +umee,umee1sjdd5c6dvuz9ptdtzqfpx9gcld974d5cgue2gk,14113 +umee,umee19jhfm282s86lznwx2y8cwd0m2elmtdtdh7ph2e,14117 +umee,umee16xlk33fvt8sada696wfs7mup637j2lv6y3vckq,14118 +umee,umee1m635vgwctawccjjv4cn64wuxm23hyvmtarnjhq,14118 +umee,umee1lh4nt07ft8z3he3lxwkkcnaymsadg85xcxx66s,14119 +umee,umee1duzjq5aepemdn679jrlqsw44t4qe85dm78tlw4,14121 +umee,umee1l0yjyznsqy48fwr5lk6vx9uxa786408ky46mty,14121 +umee,umee1u3wt6fzraw7zr8ffmxj2yu0cfmure45mp43xyk,14122 +umee,umee10dthpskl8kwz8x497vql4zvpuxr7ldca374yyt,14125 +umee,umee1n88jspqgvnjct4p72uskw4at6uhmrahhtpqqkx,14135 +umee,umee1x8ltc5dr5h7pj9y44v9k9lyg8mcmeejhqcf2m0,14136 +umee,umee1gkp4sewqep28pqpd7d5wtjckpgz0kktfhc36dp,14138 +umee,umee1yy2dkrq4xyashmkkfcplf2pgf7q8twz2hl99us,14143 +umee,umee1axx6fv9npk2uw2c658w8h99dj7uhq4uy6064am,14149 +umee,umee1j9xemlz0rszq783u3nthkpwd40tuncc550h7gq,14154 +umee,umee1hl4wksmj5zgx53tljpxaznqnc99mfk9w67hqmp,14161 +umee,umee1v8z2gpg5dg93qkrfflf36d48k5xfhj75nr67vs,14166 +umee,umee10asv39gl4jgtr90cfg2zja2t2a79607szvyws4,14173 +umee,umee1xtclqg3al285a7ac6vwns4yux4kr48qa0fu5jr,14181 +umee,umee13fla7v859d3sqrff2afx84mnc7grumts8uesdc,14184 +umee,umee15sj56xcjtka3pctgsqtmxgre3f75npampuaquw,14186 +umee,umee1f0ltumdc380mwlj8klf2ewshm2z7x6kfcf6kze,14188 +umee,umee1cp85fxn5vpu40s3s8farsyzr8vsf6ppr2xtzr9,14195 +umee,umee10qzzqu2j2eya6g8sa85svgnu4zkvkfqrrgfm4m,14195 +umee,umee1yzjz0rwnzyqmx5u38l0kujgnk3a9lfjajcqfgv,14196 +umee,umee1npx6phnx7j7fljfulc65vd3gmpyjg6tsgjhwq6,14200 +umee,umee1j5tcv3lpl5qwkxwy5nk67fwhmw7a07xe4k5ma9,14201 +umee,umee12n6utgn3k4np2slymnptnj839jmhslc3k4w5zt,14201 +umee,umee1g9rjzd40gmv34xtt7kpv8w5jd54684gjk6qdw0,14204 +umee,umee13786vnax9gmf2nkyytny4sx94tt8v8n9nczevf,14207 +umee,umee1zkjtpm267xkfvyy6l4mq7hdnarh84z95pdcma0,14208 +umee,umee1697l0yyp38l87ychsqcax9h0pjh7k5z8k68d6u,14212 +umee,umee1lkm2jlq79agug43wvw5rxst355tfpcr9d88aha,14217 +umee,umee1h20gkwa25qtw0cknu3vefygptrctnsx5n9cyj5,14218 +umee,umee1fysj4cadldlzcpjkfm2apdxex48wlvrgwdzc0e,14231 +umee,umee1pu0q2fq6s823u7kt3ljtgs8vt58kkrwgj5vja6,14234 +umee,umee1xq7pcmgh7ly8dhgwhg6u7x28gdpcf0z8697dda,14243 +umee,umee1dphkyf0h229n2n2xksv395q3285aajsrdh8gmq,14254 +umee,umee1qwfwpzmggehu4j99pfl74rzfcef7mhqh24uan7,14257 +umee,umee19jfu8esg7pt8s7lkgk88pc0hn4efm4hrt2m3zw,14257 +umee,umee1g87x8xrxlltz46mzymnc8m0s3eunzuyxujw0fc,14260 +umee,umee1004ww0jddyw52vwvectmhpe0trtacjqf5d4s6l,14262 +umee,umee1zuglf6qvpqummzyhmc0sgtkjjh5a5jw0vqrk40,14275 +umee,umee1y4aujrgwejhspqu59vl4sxnkumzy8u9rd288vj,14276 +umee,umee155ve6tzr2umyp3pm776ulwhg2auztx8j39ym47,14278 +umee,umee12lcgzn27xe5wjnpktvzyhheqg6crhepamnxdnv,14283 +umee,umee1sg53lfwrwrkc0ws0ejfgj4ftxd6gqkweumydwv,14283 +umee,umee1dr36d57d3ghnuerra5rx5k3sg200ft0vhrnzd7,14292 +umee,umee1nkk62jxj56kn94pwy0vvl3edmfflsrsr73tnl6,14299 +umee,umee1zn7wld70azxyjttcc8tecqnqpt8rt2vlehmqxw,14305 +umee,umee1zngv4hj6wt6qrrzhh0gcpft7fxsy30ng7k48lm,14305 +umee,umee1e3h7qulrp0kwz33q9vhz9ea5whczqpvxxk9e76,14306 +umee,umee1075ng3h3rj7wcytqzezm8wvzj6g9ervwsq824t,14308 +umee,umee154r0jslgyp7mh6adxpc29dnjst7j77uhxxcdh9,14314 +umee,umee1dnesrhzjjsvxgkkvhyqtrf8c8z9aj6fmfawkg6,14314 +umee,umee1yxypw09jfrm9p0ejfgwm0tg0ekeh33zjc2ynln,14314 +umee,umee1tdwpyv38lkzgyt0rygpz6zp32zcppepl9yeswv,14316 +umee,umee1x03scqem5gthxyhfefhsgl9a3y24k2lnfe7rwd,14326 +umee,umee18evcnmrj4hfs24d2phdve95se3pk33p0pseda7,14326 +umee,umee1xj4djuljm8g6yl4qvkn9z05yqq596d3lnvjwfl,14330 +umee,umee1flqw2afdur8tk67gxgr9342t7yjsaaz0hlkrht,14333 +umee,umee152zmcc0vkztj9l36uuuwzu5wknm0eqdupphave,14350 +umee,umee1c773g3a2h8dgzl2yluvtk0pg9jryl0e02dy0zz,14359 +umee,umee1z4fkyudv5grauv2w2tu49sq4s6ghdag7mn8c2e,14361 +umee,umee16kzdh26ck9zkx544ygmrvwtw5rzek5vsumyafk,14366 +umee,umee10th35v9vrzmtfc7pc5al53n0mn2xae0fdrfmz3,14370 +umee,umee1474atdfjtr74guau6hawg8w88l2nf9wqe3ux95,14372 +umee,umee1qqch4ar894gufwvj00qzghhfrd5jzj7me5d7l0,14372 +umee,umee1vxd6276a9ltd0vajv9pdmucujl70zem6dwktes,14375 +umee,umee1yuhhtekhar2qm42pe70m3f9kskun5d7u7tphr7,14376 +umee,umee152uf2cj6h483k93v5j5nahgf0scv0efdj8m5v2,14378 +umee,umee1cfgkc5gu6lqdglr89u735fq2c27ffwcns7ujpp,14381 +umee,umee1xrda6mstjmagvgxq4q46ns82uexnnw4vfs4054,14382 +umee,umee1tempfdzcjtggpmujhs7trca75qph2p333ddnnr,14393 +umee,umee1kduzkurc5us83dfygp2qnl6ghlea40r4xm5r83,14394 +umee,umee1kjsd88ygxug7lh4azx0caejw6kf9e0qg29zt3w,14395 +umee,umee1re8wx25jm8pdlcvplvymleg36gge3xgc58fkw2,14402 +umee,umee140ua06006u0gew8yst4s24df4enfa46cs272mn,14402 +umee,umee16gh2p8ar7h36lcq8g9tguh9jf0qszl6wsm5kqx,14404 +umee,umee1f62zgjhla097yc4e9sf5zm64antugnjh6ze4ye,14406 +umee,umee1eg8t0klzqpwfen52eyg4u77v69p8yu2pdg3t5d,14414 +umee,umee1mk75g6cj6dk0057kudy8c68ycv8d2qaer05eum,14425 +umee,umee1m0uzpsq837fdd8742u93ckg5y8m3hukj56ccg6,14427 +umee,umee1wnazs80pwpxwfxw7f6vwur7p9f0trg6262l3uq,14432 +umee,umee14kw7qrpgly5hdzka78tfl7pd46ekt3ggk8qsht,14433 +umee,umee1j0lqu07477cny683x0xw6qku302yy48yfqhtk4,14439 +umee,umee1h87eae6w5s4w84mvqt3umxtcndf59drfqyfq7x,14453 +umee,umee1eugt0ly3ls0jyfws0sef2q6kkxmu60hyyfwhk9,14456 +umee,umee1fwvdgpw8pagk9a95rmfgzu9tu2vy2v3src957y,14456 +umee,umee1whnkd7tx9vsvf6uruzded3f2fqt2672e3jg4mz,14456 +umee,umee1p9xh2tqgwalh9crmjg9uzkgezzj4h8mtdz9fh6,14459 +umee,umee1vlleewv4qq76cdmtq5lgrq3nfvnpcrkf4epxhr,14459 +umee,umee14d9xlvk4wxkzez7unpulytrj8es56f0tf39m34,14468 +umee,umee1jyyv6g2pempyvfshga2wg7yasfkl5km90pghp0,14468 +umee,umee1acwluwna0f8dyqmhegardyhq289868wlhjt5zs,14472 +umee,umee1qd50wwsyrcsylnhc8p5t535kfuh9eucnsnym99,14478 +umee,umee1py5dax4v54ngscnz4fxz8jwu4at06dnnfde4gt,14482 +umee,umee1cdujgx8hceseukzcdjcp7tjcpr8594lrtwzehz,14485 +umee,umee1x3g9jk9p2ap7xuxt7nyfdfz3rkgef0h739qehr,14492 +umee,umee185za0gneq66nqzfg2wjdz8z5shxlw3a42392un,14495 +umee,umee1u9thlptqv7mhhcac84n4ky2dm26zy9e93422qh,14499 +umee,umee15wqxvemj4l5jzyvef2gfel376vhsvrc3y4jka3,14500 +umee,umee1lqs0dm6twz2jkhp8wfkmphvtqvsdf8f8ecyxzs,14500 +umee,umee1ejxdfdcq0dme9ndk68p2uvx4vet6hradwm3le0,14503 +umee,umee1etjt4a5l75vy8jd7tgw0s0d6q53u4s3egtdm9d,14504 +umee,umee1tv4dlfd8p2q0gxqw9d68fvekzgvk96slkz4h7v,14512 +umee,umee1j9jcwcctxp8x7j52cswzqc50zl6mm2lpsst5ks,14514 +umee,umee1vrc55llratvhvpxl5adfkxed2zqa6way4h7ue8,14527 +umee,umee1d7h45calmyhpytaf5sfcrxeuuufs9cuppyftdl,14535 +umee,umee1c759fmt3we5jjn65vm3qt4d2sr5cy9msrtctck,14541 +umee,umee1fm2h9mp4xrrumdrjk2w97hltnrt2u2tw4uuw78,14542 +umee,umee1cthjdyjuagrfgsarmkevwtv6vzzwg6fupfz8rz,14543 +umee,umee16q2848edyq00vyf55evcvfc9ks2r7aht688hwp,14544 +umee,umee19tvv8qpjfudcaucrv0q5y06fdsu9x0ez5e5576,14547 +umee,umee1ldp4qw372lfyumvh3n8vfd86ssyuqwdfxwv42h,14552 +umee,umee1sjftlu03cemxpdmrzd3etrcctn2ne4v7gzs7sz,14557 +umee,umee185zg7n8duth72lmqcm3ztz0vyn5u2nz7qlgatf,14558 +umee,umee1ch6rvke97a2d7nkldxm67fqlw7djfrx53zuk4f,14565 +umee,umee1xcqdzkl5wshey5s6s65stfk3fak8admfdexndc,14567 +umee,umee1llyzcy6u9ykmapjnkx7tzaaamzcmvrt6a53as6,14569 +umee,umee1hnmx04mkyx66fl7rpqwpc5j4kc73l4z5ff359d,14571 +umee,umee1e5h6r9wdud5lfazy752tlccvcdhpmney0qcdjz,14572 +umee,umee1r4j076gh47qsjlxdj4l2a6zfvlkxqplj8w4tea,14573 +umee,umee1wjspawc8v73wkxmww5uq3w9cdjygv9qtcx6gzt,14577 +umee,umee1xupgjxmq0xq96s7sf5aallf893r284924848l9,14579 +umee,umee1wcj5yrcfpflma5wujrmue53epsnppjzq0lu9gl,14580 +umee,umee1w358hnfft9j357l35xjtq8k9snyqp7axha3rg3,14583 +umee,umee17gdg8l8llr53nykezlxv6hpds3nhgr6eyfql8v,14583 +umee,umee1cr9qn4rzhdj85vc8v0nfepgmp9hmz0vt93773r,14586 +umee,umee1wa4uj7hddz8h7fxgtx2wa9efkjl0wvudl6hwc2,14590 +umee,umee1jctrsneaps4njgdlqcu093e249ajpdr7gd4ef6,14600 +umee,umee1vfm078flecpr9kl0mazc20rt2n5g8mpaasycep,14603 +umee,umee1cflwnpy45frllw0d84k9d0rkmk409n4jum8slr,14609 +umee,umee1wcfckjee7kzlrxgtey3ksu5jny6u3wesvg0l85,14610 +umee,umee1cddrk3847etmu7ms63zw9uq37zr0734568cct6,14611 +umee,umee1y5w9vx6qe0ta55z44l505lvmcl9qqjx486k7fu,14612 +umee,umee1d9lwmuxkvrm8g2ank3psvpldxwg7ylgdcjg8e5,14612 +umee,umee1cnckvr4x2rmkap0g26al3k0xdzt44kr0tj4tuz,14612 +umee,umee1au57hfegelnvf2la652swq6eyp33wg3uh7q9wk,14613 +umee,umee1cklemy7je4z0uhnpy7dqwytt9wqxgtj35flxmv,14620 +umee,umee1sdfxw3hht249gw0zm4jqwhg4phd30zt8n9l7ry,14625 +umee,umee15zf7h94ttm9fjfupkn79gleway2sfc0x0x9csf,14630 +umee,umee1yu9vqymk2fasr8pef24gt64t2f6xppzs5hfzad,14631 +umee,umee1gdwyfsrrna2utfsm6szzcxxcycet3tzr42xrj9,14632 +umee,umee16pl0933dw6e4c0ndyj2f63mehd4kkkvcmws0e5,14633 +umee,umee154j4flcy4xv3fmc7ujdyz9w83c25ku90la8rjt,14634 +umee,umee1h27guwpast9p73xxtpfyqkfgkpvf6yvwmw0099,14636 +umee,umee1dmu9c7wsktcu9z04cnrk0a9p39xrz866qhpaj0,14639 +umee,umee1q3j6xrlkdg3pzpjfve8gswd454g7wp76yfdsgk,14643 +umee,umee17cp9dmdl8edkft9qvwm07hcsltsqcw9yx224td,14644 +umee,umee1mn9wv56uwzewenq69t0hqztsu37wa2dxvuzfd5,14652 +umee,umee1kx4urduc27zp8v043g233r7mly6jmhk8lu8hvn,14655 +umee,umee1yftae8a8aw76l459fl2un2dgzxclt75vsfjc2k,14661 +umee,umee187jy24ryqx872x8xgu2dkgpz4h3tvtk6484qv4,14671 +umee,umee1ghvx8xc2krec4mvdkana5rg073qdg30vshz0xl,14671 +umee,umee1aww2kw8v7tswd5ra6zhj5wrkmvwtcr58ju09tq,14672 +umee,umee1ewn4fwt9j6ttsv8h3auxp3pp0hk0ksz0tc2crw,14672 +umee,umee1sneujdhsm9fh2h0v5u6s5wsck93er8ex6e8xmh,14673 +umee,umee1dadvw88x7havfuzz0rcvuvj4wcc909guhqu79w,14674 +umee,umee1939pxjljq4lcsd0r3ex93zvgd7qdy0zm6yyqgc,14677 +umee,umee1fyadrqp7r8d55mzsl2dfz0vjr3qk2ytnxf2h8m,14679 +umee,umee1uqv77m6fmsr44pz3py5ldgvcmvju3xj74ure2n,14682 +umee,umee18fsgx0pcrp3slqha4ram24gqgsvawrgu7k0y0x,14688 +umee,umee1m6537kkc35xvkvez5yn8kwjsdj0uv6r44n4ka8,14688 +umee,umee154dqm7sczwcknht6w58qnr6xz49mc20qaknmx6,14690 +umee,umee1ekxvjalh3sgztmx6hh8f4kwkwxd9lh46lsrgm8,14691 +umee,umee1qtkx7x8qejghywfgcq30exl50rypcy5eek9dus,14695 +umee,umee1n3a5tlmknmyrdl7c4v7vfhsq9n93t22v53naxk,14696 +umee,umee1ckyx07r2l399y2g04vw2wztycw0amza0yugjvw,14698 +umee,umee13dem3u7qyvzhkp8zh3x7573dmem6f87q0x40vk,14711 +umee,umee1ax6pxzufauzundnycyzr5d8udyp4486qacw09k,14714 +umee,umee15yuq8s7swfmxddhzgwl2lxy89474tal4etqxuu,14715 +umee,umee1uwa7p2rnfan8a8rtsuuhsp4khvrzze0ed9eunf,14722 +umee,umee1p34krywk2xt67yz0ju4c5dzz5u6lurs0ycxfzm,14723 +umee,umee1hrqm3fmkqjewth7v89x9ud5kef7uvm0k7gmdpz,14729 +umee,umee1tktkxueqkg503n56dy86mgdf60h9a00tx5z4g8,14733 +umee,umee1a9wglpy5t3tc6cr9cu9rwjr8usv9retu9p62yy,14746 +umee,umee125kv92sm4nxnaxjw6pa96l7dgmgkp2a4grnk6p,14747 +umee,umee1nn0htjup7k9z3u8mgm376fcv9hgxgf27n2d4n0,14750 +umee,umee16rfqvmzyx78njsnxcnu8dzrcraqg4qujuf52x2,14751 +umee,umee1634jctpa0z0re0xp2552kc5z3cv8mltch8h6kt,14753 +umee,umee1hywca5dad0srzqp3us6xwle0eajmku0axhf8nu,14754 +umee,umee15dn9kccky76hl540rru8dlewf0w4rah7uk8daa,14759 +umee,umee1mcvd0e6djmrxy0h4yk8ppq98tcaf0p4ggnvkew,14761 +umee,umee16al3v0sn4cqvrccz5f02dzrrxmhtvstay4rnyx,14774 +umee,umee1se9au85vpuq573fkeyar8fywtq4jnrvccka0va,14786 +umee,umee1mmjw6vseaud9fm3lpr0w5ts3j5d6qa0hs3qqau,14786 +umee,umee1p0qfe06tzvs5a9r9wr26n3806fcmtut5udrtdv,14792 +umee,umee1e3axac9d93mk824fmc8hq9e40qpquqx6da2z7p,14799 +umee,umee1f7c5k3s4s709jvk5788ah7w6vu5gtp0ewuxlp2,14800 +umee,umee14patjjrzavqy46ug4vqu9f3gq8384rpn2cgng3,14800 +umee,umee1yq63eyau7g8shzznu67l6nee8qglsek6ec8ke0,14802 +umee,umee1un5vp4g3q86nl8x0xsz5en6xzskfwkwvxsezyl,14808 +umee,umee1g9v3lhcsellfvp9tqeqe5x0pqtc794erueuv9k,14809 +umee,umee1xwctxwaay62wthqurh3js3qmrjjatac5wns0fs,14812 +umee,umee15sx6hzmhrl8cjj23h8en0v4zk5q9sma76ahhhw,14819 +umee,umee1d0je4k9z85dj0shnyuxg7mlm77hjtwcjj4jjve,14826 +umee,umee13qhqeytsl8zjcm53ucntksuyfrse2g7v7gaj04,14830 +umee,umee1jpaaj8km0m3muha44kqq7g2t7rd5w8ckcl4lnu,14842 +umee,umee1652srky8x02v5rcdcgr6gf9wh27dp6kgule3gh,14847 +umee,umee1q6hkmm2hj3g7yqhq3qx8gahq30zuxqdgw3y37e,14850 +umee,umee1qwkjtff0erw7ttxtz4mjgtqp8ghwcawpgx974j,14858 +umee,umee1ea7tglvq64qemlejf5hyl9rwqkddpyz7r3wkvc,14861 +umee,umee18vz9k4fcchgpcz0k0zap873z6e0aapyk00l54j,14863 +umee,umee1v9qw00y8v4hcfq32nhjnekv4x6kv79p379cdhc,14870 +umee,umee1dzt0lakzaspfjt4w2j3ntt40ndusdlxvcjzd9k,14873 +umee,umee1vjydhkhk3dp7t6sxuen5345e4vsg43y0tx4xnx,14873 +umee,umee1gpvu5fn6fxsx9234glwfam7chu2wk8ec7say8x,14874 +umee,umee1mhhtctdpkparemsukz8phcrzpyzvzlepcqyrqh,14882 +umee,umee1ups7nkjpxr60eta0248mh064fq3t87h0xgnun7,14889 +umee,umee1u74e97e56xdzz5c2m9ywl524ah73dghuavuw87,14900 +umee,umee1c99jntxhkhkudhctuv5n904mqfadkzvn9vtczl,14903 +umee,umee1jmut8nq43dkafv49kcq0wu4jvx833hk0jnlfxd,14910 +umee,umee1kwmgpv5mz265qdmagudzshlh67nppfac02urd9,14919 +umee,umee15qt9umgwxk77dmsmmwvdpphem44r6rlx28vt3m,14922 +umee,umee1wy0ca7pfffpwdj2af2wn47hde49y935t0xhxwk,14923 +umee,umee1v4zhz5jwk426qefz7kx7gwcnm7squjhju3t8cy,14923 +umee,umee105ccpl3pkkpqx3zmheerp52k8tahs9kl383ukv,14923 +umee,umee1r53fsf392ty2ag6e3edj9722muqhnptdwx5m3h,14937 +umee,umee1m6us2sgw8crjeh8mkw0z62070xst3ydna93ssk,14941 +umee,umee1pdh8tzrj38a82ax0v972tgf0cw35w4n2fwdgdl,14950 +umee,umee1lwec0h3akc9th7fprjnnrfzh7tvkhxgm6vzqls,14954 +umee,umee1g0599h3yk3zy87rsfwp7p9fc84svjprzsqjyw7,14954 +umee,umee1f7hf2fdq8px44k6q4ypcarwjd7acqn6fhyjz4f,14959 +umee,umee17r9hw248skja43n8pu54qedv84axygsnqc5cvr,14965 +umee,umee1u6ns5uzneuf4fqmw805rgw85jqcylt9nzwn3ew,14966 +umee,umee1l3zrfgrm7772h33a0qtjm7gatuu0evjx6s6pvf,14976 +umee,umee154snewcf2qt25v966yznygwgg5kmxl9aj5rfrc,14984 +umee,umee1lqn5hah2rrrel54dxnt7wcz5ges2nqgnqym55e,14990 +umee,umee1zz234a8r4jgn45p98f7evtrcfcjuujz8hfkwxh,14994 +umee,umee19h9enj6pefn580f3a9ua4lhzdgl6lsxfcfxrq7,14996 +umee,umee1n7evs8rv90l20mgf8rdw0v0wd8zejrgsh2lsej,14999 +umee,umee153zy6jz8ecwyjzp4yth3ghfzly4dxhmuu52njc,15000 +umee,umee1fj26xjqf62an3q4zdhfk32ppjam03zlqvds3ak,15000 +umee,umee1697eu6zsqnghmac28a2d30y3ffxehpztt54uhj,15000 +umee,umee1xdg0s0vhcclm4u4j7hvlqryysmxs744ug7vd9m,15000 +umee,umee16yasmap532sr0spmu73h5e426eevte9wajl9a3,15000 +umee,umee1kmkyj9sjqa6t4lffddekx3tz3gtvcsj09fj9kx,15002 +umee,umee1j5sqrh7dqhf7hafeym2v0pfyj3wm5uyd4lrx4a,15003 +umee,umee1n0hfn0udncnt63stg25z3qgmdhe3lwhsd9wwpx,15004 +umee,umee1sl3jy9580xdpqzy645l5f0r3p83evljvs744sc,15006 +umee,umee1z3wpk2yrtt9cnxx0xnmswjml88k46pxjj25j2a,15006 +umee,umee1zyfp7a42wkfg5mck26sefdz2h2s566j29m0pzg,15007 +umee,umee10c3pelvl4kjfgqs50km2c2nutad3v7rmcmzwwa,15009 +umee,umee1rlmuqh8f96yzdetdnctj4r6prktpt77nmtn4gy,15011 +umee,umee1xz3egcqu88gu49fwj4vlc68qce6m5quez6dg50,15012 +umee,umee1l6klyp0nsl2mhcg5p34uwrz0yc74gzaqj0d462,15021 +umee,umee1dtd5wc903mfgsw9sl7cr6x8h0xc73afnrpv77w,15021 +umee,umee17wnznnn4hspt2dl8znecmkzsjazm0ghwmqrfpy,15025 +umee,umee1km9f06ft7a7552x9we9crl40px5dscwzgjxstc,15028 +umee,umee19j4mpugrklwjmlr22y4v759yjk0cyj5uu2j5f3,15028 +umee,umee1sfh73sec2qryfl32j27dqduaf4u67pf02dj44d,15030 +umee,umee1ewtaud6pdrazkx7vgg7nxha363qhjjjm0ualem,15037 +umee,umee153y0whc670v847n46zz3e8745hh4egll6j424k,15039 +umee,umee1xy073vvx7lqwfjgytfel8gz4dvxgnmw8el3cr3,15040 +umee,umee1ranmykue4y0sxh8xfj6t7vd6nlx5vky3v28552,15049 +umee,umee146uhkm9ectfsr26pnjuzxttca7ths760f7wcw4,15050 +umee,umee1rszy2nk3vg26fuuh9m2xq7c83zt9j47hf48tnm,15051 +umee,umee1mcdhr9ns76y75mp6q50vpednyp5w8yqr5s8tex,15052 +umee,umee1yuzk6hksfc2y3mydl5zs39pa0z6d2pqlq46jld,15052 +umee,umee1g87kpmmykjzv6demgeahs0l0man3c3zw5pxjw2,15053 +umee,umee1n5e7cz7z97fa3t0g2pq6y0rh49ppv9ugmuym0e,15056 +umee,umee1ex2z2hkc5t86z5lk6n68hj54r4txghsyd6rqle,15058 +umee,umee14wgfmh375slzsllq4u0lkxlkatrh48kercp52w,15060 +umee,umee1ur0a73m6s5uxwkah4mdzz7kggqqpacfrn6d3hr,15062 +umee,umee15pghxjl2t42m225pthqwp0qncncefzhwlwf22k,15063 +umee,umee1c6q8tt5qpdxl7zs63qfyspxx9kjdth3y4mg55w,15069 +umee,umee1dgd5femyav43xyeaw8kfy6ljx8muvrh92uqtkm,15072 +umee,umee1y7ufnpaw08w66hvhdxczsggs9xrte0mn4fazwv,15088 +umee,umee1e8290gvqh8fwvqwxx5zpdk53l769ysknpg7hpn,15101 +umee,umee1m2phhvecju078unl3zcx4zfw5fkj0geu30kwze,15103 +umee,umee1cjsxuc6p4cgpdttmytuh0xtlm3qxxtws3scr7l,15106 +umee,umee1ajf64mvema8zzyxvpgg34xc709gm3ae7yczf36,15109 +umee,umee1tjwa82c7xfe3q3x8qqldpu9pttu0exsp68z8ph,15124 +umee,umee1jawnjtc7nv5qmrumhms5wd3atx02lzfk363cyr,15124 +umee,umee1kuknq8rkfsx78t4aj8gywexhphv5aenzqqzdwm,15128 +umee,umee1yf6nrwuqzjs6v3sf57mftsn6a28zm6cfngefmz,15129 +umee,umee10mc24taeeyjlhhq5gd9j255yxmmf4ghkr8hvn8,15132 +umee,umee15c66qxrjrl4446w25f68fu5s3ydzwuwekryvnu,15135 +umee,umee1cst463tuh0hlryyktn0356xapyg3r26jyfttrr,15140 +umee,umee1kk9nf72vmhmesz27r49fnhk9lm5vu5ngkue6uj,15145 +umee,umee13c7aaqj9vg9m8eayex9xft0pjz433j0qrzt7qg,15160 +umee,umee109fhpxjztun2s6plnyzxpsmctcz9cdj4dppujt,15161 +umee,umee1t88fe0q09tg5wq5f4ppmu6yurud5539g2z47fp,15177 +umee,umee123ysrrpufxp40vwpusayrhuxcdpgh9gzu28a06,15180 +umee,umee132s0w4df3e0e5lzsxgvu9qmf7wy7g58645gjha,15183 +umee,umee1j50n2mykqfp2flgs6ka4lkp5w4svgmmw26979e,15190 +umee,umee1jyq8eap598l7nqkte66h474zntkvcacsx2guma,15196 +umee,umee1damlfdlp8yynjvrmv6pd3t33f4currrhgs3h0h,15202 +umee,umee14wl8xljpcpxeg6egyja0t72060v6wle472k6ge,15203 +umee,umee1qv2kq3zvayzlegdzx58g6yhytjvayu2ssvlayw,15204 +umee,umee1xy73hdgecq6p83kfdtv8d7pw7y24z72qtyln28,15205 +umee,umee1dd70xegja3cst7ptt9893wa94kaxfj0lnkq4ke,15215 +umee,umee139ydm94pwgefn49uwsaedva2jqwwjxe2tfpj2n,15216 +umee,umee1ep9jkf9ztrfprvshqgf65x2sv4ytnslp4r9z07,15229 +umee,umee17nud5suszugg34fvrs9lhk2fy8t3cwffk6jc6x,15231 +umee,umee1zgqwgzyd3xsn388923q7r47l6h7upkqk3tfqmv,15245 +umee,umee19rts6h4lsfvsn6mnaj4v2pgmfg938l997m6amy,15260 +umee,umee1jygwm4v3yt9h5uluhuajy27kn7qp2tu0wrnxkv,15260 +umee,umee1pemt63zctpxtmarevrjh0mwrv9mapnpywcz9lp,15261 +umee,umee1c4f37lt3dzrrgy6dccmcu9amnudg2aetdcl7c9,15265 +umee,umee1xmkq396sjsy65nu8mne4dzecd60f4ws3p8up0x,15270 +umee,umee1t49x4vfwxmz7ejqjafx8w3r7nw09uwzhv95f8w,15273 +umee,umee1x7srlev30t77mdvrjxdrfltk392v92z8agru58,15273 +umee,umee1l826cm2z836h5phs7lrqu6r88cehsmgzhv27yr,15273 +umee,umee1relu08gd5alagczl679v684c0c685jf6kjnj8q,15286 +umee,umee183e0f342y9vk9z74eevemzdlmh8rysgvrdywfx,15286 +umee,umee10upjmyx87w7hsemxvay3xv67e4llg8uttqt22l,15288 +umee,umee17v982g44f5n4l95lkeft5708ckv7zd63dkgwf5,15301 +umee,umee17jrkht3ull30c2at5mp8yvm2w6rjh4j24r7l5z,15305 +umee,umee13ms62dd30lmlua7mqhwmjaqucjkh6uqg94kekd,15306 +umee,umee1umk5fxxlps9azkxxztk6ec75f3ahze9pleg955,15311 +umee,umee1d0ymyvt36g5cvgkc74zw4t0pp8vmamyhydc4xp,15312 +umee,umee19wmrprg8pf9rgljg37rkszwtj25vg2zfsdahy6,15313 +umee,umee1j3sjmsn5y0fqsx7yv8m7hdkt82m9kdx3dfjs55,15317 +umee,umee1tz55em8fveyzka8f94ht70pm5u6zfnaj09kk9h,15320 +umee,umee1k3kz8jdflzkkxgkt3ufwf4sv6fetxhdj2njc8s,15325 +umee,umee1323z0zwuaqnppwsnn4k93nesc8uzaf0v56pjww,15329 +umee,umee1mn6a39y46p8ry8qt094t8gk89c4gjkrzh6spar,15337 +umee,umee1hap5p8tzd7luvmy52yyq00ct5nf0mu47g7g3mc,15355 +umee,umee1wd23nv5tavn7l45ekuct9gg07je9ucfyjcgfx4,15356 +umee,umee1ph2cc6n2upu00fh5ju94mfkspu9weadvg4ju8z,15363 +umee,umee10nsytn9zmtfnhk37hqfe2h9v599ld3h5z5zx3c,15375 +umee,umee1etrd7rxaemmxutqupefm0ha4kd7de679pm5wxe,15378 +umee,umee1fuf00rz79nprjj7kw4ze09s52d0uhx7mef89au,15380 +umee,umee1tk3l6vdg4mde8hfp6095r5afsyzrqnyt3m0qpa,15389 +umee,umee1v9xl2ft7qs0d6f5cpawhvl6sd0e0xjxxs9tnv6,15392 +umee,umee1s3sgg876ftpv3vqpjagfumd989erwmlh6huput,15395 +umee,umee1wcwgdefscdjj7gkarwrylq0rrxpsyzx2ry7w8k,15397 +umee,umee13f98v89503kdc0y5eu0254cdpplralp2g4p3pq,15403 +umee,umee18ecah3hmcekvy656wuzxsdcplk2vmrmgadyv94,15408 +umee,umee1a3nm66sw7ejp454azqem2d88g5m7lc6dlvv82g,15409 +umee,umee186x6qse5z495fggp7wh0pe5anvkda0wa5eg03w,15430 +umee,umee1lwa96y6m8jw24949t76y6tkee30ys9uc3djtzl,15436 +umee,umee1g35vv9p9x64u628t8m47jq6w6phf8jk3qmf9lu,15445 +umee,umee1q27crjn7pczzku7f6wxcvjn9nncf3pfhgewd36,15453 +umee,umee1npzj02hnf88up30lszgmmxzfjq9rrjal0jhqf9,15462 +umee,umee168h02hkpqhnzngavuj507kyf474fg7mcqs9xhc,15464 +umee,umee1kfj63atpw59jm2dvvqrqxqpgnhan3ge7pr44lh,15470 +umee,umee1xq8xeqzh7pvhuxr99qhm8avtsur3ls34tn8a98,15477 +umee,umee1f7zqt8ec0lw5czk2l99dqmffs76kda9ryf2kln,15481 +umee,umee1qj2lv0567e6wx25c2v0gxaznlcmy0f0vqaqdrk,15482 +umee,umee1c8pjpuq859m52cwfru3tdyegr972895c3arf5s,15483 +umee,umee13w9aagr7p6y3x27lqjg0q2j3sllc62d4u07qy0,15486 +umee,umee18kupg9znxcn39w7cnrdf0yute98dugdqlj4y6f,15495 +umee,umee1lpj7983l27v92d40dmn5c8ct8tpxwdn6cfddxm,15500 +umee,umee1t65nsnrrm0zv3q2v7w696ny7avs5khgq4gkmjc,15500 +umee,umee18q6yv240hjf2uc69de405czp2v3m8lf6ch3epz,15501 +umee,umee1dq7lnwymzze3cqptmrdtey5wqwpjss3q4mqzpn,15502 +umee,umee1ndjed45htwexqj9fc7yqr548gp3x5zwa853g2e,15502 +umee,umee1de8hnycvdtcctly68uc7r66nrc33f8e5z0rg4s,15505 +umee,umee17gvqscjscegrstk3nuc70vfcwftdtv4f2xwr24,15505 +umee,umee1qvcf5jzvayjdfrkhtyh357234kkpgdlkzvjn0n,15508 +umee,umee1yr5nl4pw4p3w23nuc5n3jqyzcx9r8hcjkhxc04,15514 +umee,umee1j3r03dpsv7v0hrgtnxxmnvnf94h2zwu6exnhwp,15518 +umee,umee1rnlrnqy836lwu5sp2ry5rvyme0anuec9qw5syh,15531 +umee,umee147vde6np7pk8cmkfsjfcsrsgdxejfe5638mhaf,15537 +umee,umee1wsfhjt9fvgjgy6sw6g5pxmypqrln9z3hgxxl9s,15554 +umee,umee1g2m9892ypxh696zt32hkkhal8ggjvzs8pqes3q,15555 +umee,umee1g35f0y329ljejqvnx3mquwcsvdly9m7x69ywk0,15555 +umee,umee1zgvst6hcqp64eqmdsmdqga0k9z7r99799xtdsg,15559 +umee,umee1jd0hhysw79429ywuanm62f6da7hhse25ncjkcf,15567 +umee,umee18py44dux0qwm0mexydkq6ye66ycgrqt3str27x,15573 +umee,umee1eth25yr535x29p32wllelj09u5kaqw8d49d34a,15574 +umee,umee1nngcd7phnqwq3c66y2fwcvrw2zlyupsq2272gs,15577 +umee,umee1m5prhtydy3yvcvrujewsa2u5szt0pcf6nd6hsn,15578 +umee,umee1j030vj3d72z6wx9a2n6344lkshpww2frv9d9jq,15579 +umee,umee1xk6nnn0gen9n9fduz0t3twyzt8c2uzedd27gjk,15583 +umee,umee1vtgg9vjnn9h8uqyt7zlkzpsmutrths440y6vhe,15584 +umee,umee1jsp9f3e6zgm4n0pev5dmdku57nslhw4yexuna0,15599 +umee,umee1dtvpuyqcxxndwj0a9u63j277j8hee0y29rdxxj,15600 +umee,umee1uwvd9r0zldcw0qnja80z4z6jqjexczn92h6aq5,15600 +umee,umee1pls32u54m2ulfswnf9q6hun7nzvjex8urdvjnh,15600 +umee,umee1wgrp33hns5y7xe6nu8x3q2mgwtsr77kyk3t4pq,15602 +umee,umee15vjj6xu2h5lnna7j0a3awdw3qrdx9rruq5aqmx,15603 +umee,umee1kk9e65fwakss2a6xd0nyaxps783pfk6v937jpn,15605 +umee,umee1d98npdedygtmlx4sx7tete6vjl6aqz4gl5v03d,15620 +umee,umee1m4cgumfaacm6vut4q0dh2dw0rrh45g2e6fhwaw,15620 +umee,umee1u8xff6p6p4uunrpha6m7fskv6j5z49qh75jsey,15622 +umee,umee1rkru8vm5s3mact67dxmlvzzasnnpd6ed5kph0m,15626 +umee,umee1qhf0we0fsyzczljvyct59ajzy745afdwkukln8,15630 +umee,umee18pyflqxhdct4azjkvhfndsqzlzvmg6jr5dz9k3,15631 +umee,umee1dtff4m5252xfdu0mg2fj5che33m7f2fdpvqtmr,15636 +umee,umee16glttjwq3ntse538welwm5yrlmq0ry6mlzwvf6,15637 +umee,umee1ugtmxs0vp9d5p70wkzq0jhw5s4tlnwaql2z990,15638 +umee,umee1utzu4t0jtkn655gsqha7seca2xqx37p5gn3092,15639 +umee,umee1v5p63sv0qp39ksdq2d68u4mhepw85qnnn0x3lr,15642 +umee,umee1u976zr7eckusm52sjzrknk9yk7scf7tgqph6ht,15645 +umee,umee1mrevhmrwff59nec5ezhtag27tj49pv3u2e663e,15647 +umee,umee1ufhhp97nrz4979xg8p6vehw5zyahv8hxz5mset,15648 +umee,umee1hcrnt7rc4262evt0x24wqvt6phhperl09rstpr,15648 +umee,umee1f7szd5nfx6gfhk5hxxu2n654wwarkjmejs2adl,15658 +umee,umee1amzalu6cu7rr5kx9a26xpu8434se4ws0qgafnc,15658 +umee,umee1l96u5j2uqt8na0svc3a245pwhdgsfecya8adnl,15660 +umee,umee12d5v6ldmg95annmzfj8f5ljfpqhqag2rqw74yj,15664 +umee,umee1zne99v7jx72tfl767njc53z8llcwrggh0k2f7l,15671 +umee,umee18k5ptjxqullxdmrhkakg89rtjqjye3rnuv3wlh,15675 +umee,umee1rcge8ctyysecthq8ml8dqdtfh8v0skvaawfuet,15685 +umee,umee1fw20xwx24xkcmhhqgpsxnj06q2lz400svxsmza,15691 +umee,umee1ugw0pjtxup8mf6dl9sraj9wkqcnmjrmcd62300,15693 +umee,umee1ujc2kt26d3a0x7v92e5acfu952j228f2e8zlmp,15696 +umee,umee1zj9p8a53q8q0z867r0jfhmcnpl9tpp3hwnh6jd,15711 +umee,umee1u7ltxhf8ykfx9ppkr2tzk8d35vlvfc8rnlkckt,15727 +umee,umee1vqjxrg37r2j95779vp9fr6hzjdn5phdrwju5s5,15730 +umee,umee1dxremqj8a6h7yqhmrg5rjzcff2p0nm69494mml,15737 +umee,umee1z8ffx6jqckcezjhsg3rshsaaqv4cqqeqchagpj,15745 +umee,umee1cq6n2sl3vsxy62ystnsprpnv99qlh3n785cyd8,15746 +umee,umee12njw57jvskw02yd55u3czukzxvewngnwkw2r67,15753 +umee,umee1rmfk9x5n4m7lt9qfu0rakpfr3vu7kc5sp9aveh,15765 +umee,umee1ym05shg4mhwyh66x066qux39q7t3ukvhkagduz,15791 +umee,umee1zgtpc7kur4uqdscax88mlnm3rvfl5f28lfwwdc,15800 +umee,umee14e7spzxmfsqa0d3trwe56flh92lt6f5gr9h0jk,15813 +umee,umee1lj6m7srzdkhdq06feax79a6udvxjf3w3tm07lc,15819 +umee,umee144nqkzxjsyx6jw9sn7r4m2v9qp3pw6tf6en9n9,15825 +umee,umee1ysy0l0expyy4sr6q756c74annv5hf47r2fpxj3,15831 +umee,umee1axts97fet2xxp8c8r70dds2whvqrjh56kvddse,15848 +umee,umee1mdpmdajvpv4f9p9zcxaw9r74seggjwujyr8r4e,15854 +umee,umee13edattd3yu60dgg7ttr05ttjyt9f0v7ys33jzz,15857 +umee,umee124kp99ktauryst7w8peuzztyc026l2utrc9r8l,15858 +umee,umee1ayp6avm3fw3ayw9vh4h35rq6g02nkeees0afhc,15858 +umee,umee15j28vcwgxdwlqyc6nefdx3m2r03jyntk4q72k6,15880 +umee,umee1rtkwdpfz9zp2j884qccxr3ah7xrcgg66p5jd7u,15883 +umee,umee1cwtceey9nf5w398u06vmnnyqqwscjfu32nk5fq,15888 +umee,umee16nr2s04vgdhl8sd29rc7mq4e6ualgzhft9pc67,15891 +umee,umee1s9mjmna9kulzajve3gr6lke6y9v66frdxfhtyr,15896 +umee,umee1rsf6rvf874yw2wm3cxpuv5vjucgm0xw67zgzqg,15900 +umee,umee13dh93psl307n8hnnj5fxq90sf7cx2vr78swtx3,15916 +umee,umee1lpmfukq55hnyhuj8559y85m0tczsa0kauqpn05,15917 +umee,umee1xf86g7jmue3mg7gt84gv50vnjerdpvlsgls2f7,15924 +umee,umee12lv5f3tfdr8w2pvpnzn22nurkckgt9ed8q8dyv,15937 +umee,umee1243yhe2plcqqkhwkl8dwv53nzvxrdye2xnsx7g,15937 +umee,umee1vcnmzaruvm35u4nlwvrm66q59damq43n6au9ty,15946 +umee,umee1mhqedpzzpxxnqwln3vj2wvnv62yc44y550zyj5,15952 +umee,umee1y8fwu8ftfmdptk4qfk4f4wf0584he0zw947qz3,15957 +umee,umee1tqcrj0y3x0vvv4qec50wse4ffjr0qm9d7kp2jt,15959 +umee,umee1wugw95wwy58xz5qe92qkv9nukyr2eqmafath0v,15962 +umee,umee1kx8s7mk9gjwn7ayt8yqjmxg32tky72kye6mk80,15972 +umee,umee17hxhrtel3470rmhfv5ymprp2q52qrcqtp9m2kw,15980 +umee,umee1pct6nmeqzyc53jwdg020f4qehp0unuk2rxweh6,15988 +umee,umee1pgm2hn7jlg6adghx3yfh2nczj59vt6c928rmqx,15989 +umee,umee1e3n55mjkfazzmd9a7j99vqkahxls3vu3yxxnh5,15990 +umee,umee17gmgzjdckl8a866fawher30vlft0ja9wql2m5a,15997 +umee,umee1md6mg0d03yjczfc0azcw4em7tgur8tu2fwxcfl,16000 +umee,umee1vk5tq6yhk3gxq699swnujv724dfvn39c88nend,16000 +umee,umee18nf84jgwkqypaplz45xyf3yegpu4vvhz0lyspl,16001 +umee,umee16tduy6rn329jfw4ysxs89sd7u3nnmztjs0trc4,16015 +umee,umee1tzm4w7rmxes0lhqplmnlglalhess0gspdt3mxn,16022 +umee,umee1ux30l7s0r0djzsvsjwaxesedkzcfhmjghf4nqp,16026 +umee,umee166f7qetvlesa82zd85kxe77mtnem9u5423upcx,16027 +umee,umee1rps08w3wud86qms9a3vtyl6dc2v04ep28khmt9,16035 +umee,umee1sn46770trqfkmk7rn7g44s3e5d7d5rcq5g8srm,16036 +umee,umee1rxvnh0zfzp6tpandg75z4mcze7rkme0ymduzan,16040 +umee,umee14pt9n73ggvtwka2rymzu9ywzfuhtdz8wtq4etq,16051 +umee,umee1m2d40hwsffzxmr784q4v2rzs52tdnup8a4wk9v,16057 +umee,umee1gt9g0t7mmkhavcunqw03r8j5t8ugunwq2n8ycr,16069 +umee,umee12w33wafelfvtgwjjyw40pn0h5hk0hhjgm4d9nw,16072 +umee,umee1d0ll6q9k4604kqkr8kpd4p9nkgtartv99v3xsg,16074 +umee,umee1p3cfjqtp6w595d2g70fl6r752mznzrxxuhvguw,16101 +umee,umee1yq2x3gnp9sdl4l2zrld3875ry2040q64rvxkfp,16109 +umee,umee1aa2f5vplaemnr45zzkk3ys4h4ht5vuvzs0wv2w,16110 +umee,umee1py0nm22hy3gc6nxg6rw8k6luz4twr6fh7k5yrz,16125 +umee,umee1dqatxqw9dwsvfhzr3wqx55pdfuh9n2g8fn6c4q,16134 +umee,umee1uupsna9jsmxm40azd6tw8h4ge27jlfkrfk45uq,16141 +umee,umee10ppp525dl5fxmvwxrtkds40vzkzchrxnrkxgx8,16141 +umee,umee10pr3yljetr6dlwxvjqepqqn6pu4wdw90ztnx4v,16147 +umee,umee18vzq7nauap309aqr66umzuhww55phe9gywaquy,16153 +umee,umee182x45hyjjes5cxs540lq98zd3z55tl4n7phgyx,16155 +umee,umee14rnuvkmnrmanywgxx4l885z83h8avudkmcme37,16166 +umee,umee1n7f50n4ysp40rc7ruq6a8dd8ks7t87hde97crp,16167 +umee,umee1zw0aq6sh4gg9xzph4ngsuz936azpx0qksv4n9c,16171 +umee,umee1hnz898ckuk8ywnj56vlc4cj9pru7f27s2fkezx,16177 +umee,umee168hf33dp35q2hyz4srdm7p2lw4r86v20aqd6c0,16200 +umee,umee1jcrzk2q8j84mahkrtfad5wgkz45gy6f3hy88vq,16202 +umee,umee1e3pyfmulywxd9jgetlnfrztcrwq3fs2649dtdt,16212 +umee,umee17h2x3j7u44qkrq0sk8ul0r2qr440rwgjptp9qk,16221 +umee,umee1x84u2edp6vla3rt2ykr5q9qafm6qsmnjpha98w,16225 +umee,umee14tvu52fu0k7nwevt7jkd4a9w964wnepw6f4nkk,16225 +umee,umee1reump4ye3yhkhwevvwhmqcuddu6jmlzn3jutjl,16227 +umee,umee1382qepav2n2ez2wgk66kc7s43vxre33y5hrn95,16229 +umee,umee1v5tnyap9np45sxxzjpygmnsq4j3gqcq3zxfd6f,16245 +umee,umee1unwhlxtj8wjprf4r0jjjurzd7kmjkazn3fx8kh,16246 +umee,umee1xjf5xscdk08c5es2m7epmerrpqmkmc3nprysv9,16253 +umee,umee15j7g66x5y99d9kjs0zvkvejgyhpgfaelhylhsq,16254 +umee,umee12g8evycde5yjwqxv4cgclyr653ardhmk78lqwd,16260 +umee,umee1f7j8vctfwdkh9ynmzewjr0y6437ugnq9t2r89r,16260 +umee,umee1msml94n43j8a7g20l2sax2d9glczh66jr98299,16272 +umee,umee16209879uzk928qezgwtqt8qexju67hdm5as2z3,16273 +umee,umee1fla6p99gd7ks9smpp297agfvj452hz9dllj7gq,16287 +umee,umee1e8u48v837fhtv6vu4nkakka94jhny2em77vmsq,16288 +umee,umee1juzrz62krln9fuz9ckgpat4ucfne0wsy3aga4t,16289 +umee,umee1t2vrphkfuq3rpkk75ca7jszdsmcggw94dh2cw8,16323 +umee,umee10e7w7aq53ade5uyxqlmfxmnkrnwe44200ra8l8,16328 +umee,umee1mnc9x2fa3xg7stdg42xd9k778tfvlk9t0anns8,16333 +umee,umee1wtrpjey30c7dqhhpd0j4r4m7r3ag0mz8z8a92t,16336 +umee,umee1s36a6fwdvl3t3qhks9pre9xs3dza2yh2qryhgu,16340 +umee,umee19axg29fytgydg3quq4cqahs72uvyvlt3zq8uhj,16352 +umee,umee18stydk6dzjvxehdrhz3aj0vkhrdjhh0q970rpt,16360 +umee,umee1fc7qg7zdtpsr232ymru2yamj58ef2lntrk0qjw,16373 +umee,umee1lyvnyxksq04jz3fjxne9lx2t200mxe630tpecn,16373 +umee,umee1zdfnszv9k088hcpyl6x4y58g4sd8qkfh964t6r,16425 +umee,umee19czuhkkvtw0p9ffqfcm36uuyw7pm95rrevf0lk,16430 +umee,umee1mcjaeph8qtwenm6q5prnfjlaywsugfem62jpzw,16444 +umee,umee1e8g4vasj4ptnd7fp0h48498kjmtrzpc43y56dw,16446 +umee,umee134lcw0e8gpk7p6fgcvp9cnpne3qw6qaxjxcktn,16455 +umee,umee163vvu339nmm49xqfudfdlzra0x8wj7hl3k9lp8,16461 +umee,umee12d2c0h063vx0kgjzh8ky2c8pur5zwew5eq5du8,16468 +umee,umee1vp7xzvg2k7rh28hn4s9panlzza8tm294y7l4ly,16469 +umee,umee1p9jzk2mkfa9wt5x6rdy7qe5q6kggsgu4adk6ny,16492 +umee,umee1mcaskv3u44a3vx0t6cv4al96jtyl9ldtyye54f,16493 +umee,umee194nyg8rvnnxj2zxkhrs6xnmatjpjhw60dzpzgy,16500 +umee,umee1xgfww3pw0t0jdzdds8kmwgsknlmmhzpqdy7j7g,16506 +umee,umee1sljqkg6tzeeyseay2h8tutkhdcysrs3hfwcd9h,16519 +umee,umee132gj8w4mj9jperd5fglj3w43h4jv5r606v7z08,16524 +umee,umee1tykv620tatysy4qwmwdnnpa8c99lw6ztp2wqle,16540 +umee,umee1rgk0rguhlkmmh7tpf2fvm6px3xsuemkptmyfth,16544 +umee,umee144rnrd8rk0c633hxth6wfk033vx74ekkk67n8r,16545 +umee,umee1x65rxs4d3ea8gv60407a6cg039xtgr4k6am20x,16546 +umee,umee1c2n2yu5ldlqkps640n08f496c6stdl0pwefx2r,16547 +umee,umee1zen2nw9q44zrgdsxe9acnt52kyj4gznvxngdz8,16563 +umee,umee12ukfaxufzxu4zq84d0czfs5veu8ztrtnawgu3g,16564 +umee,umee1dk8eux696d0x7gs4jhhzd62ktqy93393u5d4az,16568 +umee,umee1z26q7f3ahj9c0ry2uxy6ehf8qzvzh38xg5qpwm,16569 +umee,umee1cf9ad68jrhq569melk4zrqak8r3y9z32uzsdv3,16572 +umee,umee1mf80lwwdf8emxpq95p5qt2e2fuq6k32zhehyrs,16572 +umee,umee1p3qgucs8h5npf6l7fadxeg23ctg2c85xn2lw7z,16581 +umee,umee1w46pw2nf2z68u6lzkfyqqrxnn302mmg6euvu5e,16597 +umee,umee107c8g4u4rkws77h03szdz560q59eexljaqns5k,16601 +umee,umee1qqs959pype5xexrd5gkvw0p8yskga3vg3vt4g4,16602 +umee,umee1s6l4flsd2ejgsgp8grzl5cwdk5mhrvf0pqhps4,16604 +umee,umee13pp0nvfv2y7ye5xgpr6rtf6mk6zv8q9rt5tluk,16612 +umee,umee1fd0futk680h4nlrw9z83wp4xhan4euswncpyfv,16619 +umee,umee1xlfckthrq80wuhkfxllgt8xd2zla0p3udqpef2,16621 +umee,umee17s5d5zkedv0l87ar80ds537gj5seznx7h8h5ju,16640 +umee,umee1vvpyfemu3p542zz39pm34v5jqwd8lfjyrtw8qk,16645 +umee,umee1n7c2w92yafy00x8hqmp6mxs5glffsuuradsv40,16649 +umee,umee1wdd5dtd539x8artw67fkms5j9lzk8l9kd4gku2,16660 +umee,umee1r9x5xvdlqkcg2tgyjgg3ssywem0e7ncksd9swu,16673 +umee,umee1yadcdtkwk9j0a6gskm6h2pvnlx9qjfukx8jy09,16677 +umee,umee18pusez0z0y9nwk8wvye5vzpkvspr00k9j76t9e,16681 +umee,umee1q4ug8tl7ghz5j0q23dhuszv98he392h2h7ggav,16687 +umee,umee13yafvl95ed4lr5ygpef8psszgt4r4n5c5j9hyj,16692 +umee,umee1jr42fm9sc0lq4wrsz0pgalpe38wpl78pckem8k,16693 +umee,umee17w0gjzrg749tdgk63gg7ljpag9hy6tkwdred6g,16694 +umee,umee10q2ahgxxqfwnkd2xgk5m05jh3p482c6s7aft7j,16696 +umee,umee1980wnqn4skn7hlwxtrf9qvd0qx3mg9yflklr46,16696 +umee,umee1wmzzpuf8s0ln5md4e0cn8nttk92xg6fllx4suu,16718 +umee,umee16yhtmma058ccsmmzlgcpftkq96w0c94cdz6pe3,16721 +umee,umee1hxpt65a4045udqnydkwxq3kqyrcn0e3c9wqmw2,16723 +umee,umee1v8hnu0z7jltnn3ns6sy0ppnx8e0v3l9qjtazcj,16730 +umee,umee15vha4pa5zk684hzn8ss9je5k5wl27a9lsdpxnh,16730 +umee,umee1v5s42qmh7zy8l0y3nnnf76kfkltfsvr732cjrc,16737 +umee,umee13wejvj2z2h3y72wu5zf76zmdua7423v938cg39,16738 +umee,umee1wrqfy0swazp4gt6a3z2tjnaye2m05xmts7rcsg,16745 +umee,umee1h26chf8em6lw9z6ums3yk95p9455vxuu473fur,16749 +umee,umee1cvjta4r6nys3vy6dk2lwytvewl9jqnzqt428wk,16758 +umee,umee19x9hs0t29e3gcnmfdlf6fsecwxyx2gygzn75un,16764 +umee,umee1pjxcp00m8ewgdpjwvhvj6gryyme8nyzaqt3s0e,16766 +umee,umee1rpcgsjt00drmjshhdg2amdufmypppqlmazm9q6,16769 +umee,umee19vqsxhr5wwzjrnxmdf23sk6dnvzsq8d3t47juj,16803 +umee,umee1ha37mcle6p2sp75ml47e7y73tdsuftraz4styf,16806 +umee,umee15pvlh34dvpf2hval3nhca62ua5qv0atpyukces,16808 +umee,umee1p0xc8vz6m72velt8xera2quz3xs9ee6ct6jsdp,16819 +umee,umee1h95hduj6alqk20ejcfyj8vm54c2s8jtlaz5tq4,16833 +umee,umee1qkp8g37rsdf9xahgeap2uuj0d3sq4hmrrln7qh,16845 +umee,umee1x8jmr3cgvwunzj7m3hc2kuu62flqrz56a5z5g9,16845 +umee,umee14y0zqp3dcr53hvmljt5094pqfd4lctr9hs33a0,16848 +umee,umee19twfdex2x0m95mtdywuqkfdrepx2jg7mfkkacf,16849 +umee,umee1tlxxl7wh7dhd3csf0n2d63j7mvz4exglvkxg4z,16854 +umee,umee17pkgmr6r00m2gff0twwfn62e8nvxlsz8n9383p,16855 +umee,umee1c2kastskaeghxcyf4h72kvk7fx788pxesqev0t,16859 +umee,umee1m6pmsgtnpvk54skhyg85hkzlms8mzk3t4genqj,16867 +umee,umee1nq93qus8hw7fdkeergvpxxvyswlmaggyhjg2a4,16869 +umee,umee1z2r8c2hfeajzn54q02gujvhpgk3ag66tx3t60n,16880 +umee,umee17ffevfct6uz0llcrxz9szv80se5la47w7cfkmy,16907 +umee,umee1cxyjsjj7qjkh9gearccn563hwujrqdewch20ch,16909 +umee,umee1c4yx9vyhuscvc9f82eee6ze5j2gldswpd8vajy,16924 +umee,umee1wyksnz24djmupzwdv4tgxq2g9hr0xetcpe64fm,16932 +umee,umee1vy6yv8vkmk0ye45u5uymhg29nrp793nxeuv4fl,16935 +umee,umee1cyhq796x0yw9qc35qhv40khp4zugwxwkd324nx,16944 +umee,umee1m0l4rmj3l44ra3h2alav2n5rzdgdccz23gwddu,16960 +umee,umee1se0slknrkujafwnlmqffcp5z9hmurtjezq7k8l,16963 +umee,umee158ke7q5f5efkj53v7rv3q8c37vvple86cn53h8,16964 +umee,umee1e7mkv8x846s8lkuvcaklp9fket5hry6e6zs9n4,16966 +umee,umee1haj3fphzh5mgjuquvgjup6h7w6a207hnwzt5ky,16968 +umee,umee1jn0v2s7hqe49ulwf578wwh6mglw873gtp3nhvf,16976 +umee,umee14h23jcdjv0jcflgyry84qzgdzcenj2rr9fg332,16992 +umee,umee1cnnewer0elluv5a8pksuxu55gw9p9xfwnl3dgy,17000 +umee,umee1gcyj6yk5ktfu480ltjsa4kp4k659hsj83yw2hw,17003 +umee,umee1eymapsam3l5ymas76avez0adlvw3u293zxpdz8,17003 +umee,umee1dq925j7smjydges9s9ecy64fxdush2nu042v0x,17008 +umee,umee19evwt7hwe7k5mntra95jvdqn8n8gkc6nuuxaax,17008 +umee,umee1fqqehm5wef04lvnywsdysrguyez5l9tk8wf282,17009 +umee,umee1hv5cmr6pt2vp8ksppaaa7p2zr3vq4paswrhvh8,17013 +umee,umee1gq5jqxz5mad83yhldxeumn2w7pzgycls4nu03r,17024 +umee,umee1jy9dkt0dckpqhlggw68vtxmym045darmzw2l7p,17028 +umee,umee12tt7hgddjfy6xu0t809gl3q4q64kwr0ucam795,17040 +umee,umee1a4s850f0wzrrzz5d0wl27myfkfnzh89kpjgulx,17042 +umee,umee1e0q4qg74g6caxn6qptydp9x5nuxrft2yw0rsed,17042 +umee,umee15gz6p6arht8syvwdp63f20pumedunckg9pee62,17042 +umee,umee1gljx9xqnq6dcdes5aqaya2wqqvm5d78c25pucu,17043 +umee,umee1tmrqzts6ew9lh3cgya7pwr2tgykx8w0xtu62f6,17055 +umee,umee1jpmcg9xmjsapmxly830w73gg9hw97frm8jerts,17056 +umee,umee1p56ryxvkcmxsxx4ewwqm4gwe86qxtkhaysnws4,17056 +umee,umee10drcdmjnq098pwsh9nm7w0lem5zfywuuda38fg,17057 +umee,umee188u3tfdpwhcwwj5fs036md63vu97vd3zp7z9yy,17060 +umee,umee1cxful6l52eh0aknkufwtwmre7c4lvhv3mj4v78,17065 +umee,umee1t28tycs52undn32rwg0x5883m3uweka0gm8kf8,17069 +umee,umee134sncjxcx48vcfrsutxyk4wlm9a93xj6gwdyfe,17073 +umee,umee1ykchnt36gv42zdmlsgs74rmqts3nrv5e2d27pp,17076 +umee,umee19kwg0ng6wvrwypc2u3ksdf67dfnuh0caf6nq98,17085 +umee,umee1qsncjkcxwrw5esrtfddh80jay4n3juvl9l7kxx,17101 +umee,umee1gn0xhspy2flru45jzhm5jjejjyn5pe6wxxazht,17104 +umee,umee12q4rht4qd8uk7maw3kjtwnt9xl5xyvd66q4cv8,17105 +umee,umee1eaq6k7la53ss5vr7j6m7jchae7p9lqw2ntqzc2,17114 +umee,umee1a0ncmr7cussfc257jm46skps955tpq9t7he78k,17127 +umee,umee1f5ddleyyn8jmtexddjsj407d5xdts9wd2u55m5,17129 +umee,umee13f8xsnlf0ejwsky259gyqv7yrgtr2p6ldxwpl2,17135 +umee,umee1vzj2ke64ms039rgtmq5alz6v4vpqjjy8z2mtsp,17138 +umee,umee19p5ydst8l2uju0dd6wa4fk57lvu3g2nchyj2rm,17138 +umee,umee1ggfqtpguffmfwmaueu2w8nv5mjpt034pvuu5we,17142 +umee,umee1td8qx7e0urhkqenexxpnmgd5ms8gs0rdljnj2p,17153 +umee,umee1www4xv0zcfqye0ka4fuaynw6jzwhvu9ssplra0,17178 +umee,umee1a6fkt2269vrr7ugl822v4q7pg8wv72zhyzq4vs,17180 +umee,umee1tgmwnc6x00p6zvl5r3y0fjszsggnajr57ttgwh,17191 +umee,umee1dgn9dxlz5743770frcz0jp87dqg92e8aa48er8,17199 +umee,umee1d2hlxpwjvavlx6nr6077s9eu6vgdr0m2e9zdkz,17200 +umee,umee1v9w49rtdpkwxeje8xnx9pnf9z9hyr2e07ffp7z,17204 +umee,umee1y0w4rmmawzjq0fut8u94anc8s80mhl2x4s9km4,17245 +umee,umee1j0sny2az024lyq73sf7xwpcazvdxu9x6fm5fx7,17246 +umee,umee1l5x5tzg9v723nurtvkppst9e0q3lmknces7ejq,17247 +umee,umee13krz8nxewy999t8929x9vla0ympjhczr7njqdq,17256 +umee,umee1zn3w9ljp348zjuwyu6vt6h236xushslvhe5882,17268 +umee,umee1dc44xrvljhmgdkkvaprzw2j8s4qv4mfrj3qtwx,17274 +umee,umee14lkyln8cm0426sq430uguawwz9t04e9gjga70r,17277 +umee,umee1kp22rcpkavm47tt7xahnjjxf4tjdlrf0sulh5e,17300 +umee,umee18zercj9rntvswhga3v69qh2yrsz75uh0sja9yk,17304 +umee,umee1pvdpewh4d87esa7k8qryvpvcef2g2e2vw36dnm,17304 +umee,umee100fjd4fgvavlevh44wqtfl8e46ryyzmhqtkjru,17307 +umee,umee1v2wmsgvu3c7ss3altqqrxhsen8lwenttjqjnvz,17309 +umee,umee12ka79vdpksfz7nta8l8hsgdr9pjrk6hzxz9w57,17311 +umee,umee1d4m9tjsmv3hqgqtghxpg43gc4l025ldkfhu75a,17313 +umee,umee13lzaan0kpkr0uqkurnz8g7n68r32ydq860xcq0,17325 +umee,umee1wpurg9vdg3krwzxjwppspd8fu2d35rfq854445,17347 +umee,umee1gejt3vvajh7ndrcm5a3962knve84njymeeg7tc,17348 +umee,umee1s5w93twylw3ypy0vmk6humc2ra83lrmgukglaj,17365 +umee,umee13vgt0u366g0xss4kkhax8dqp286gzc84fps27w,17373 +umee,umee19xfh3pr6vymndnwz8xkfl7cyxttwgspryvw9gt,17400 +umee,umee1wsc6ewc8lc4m7tm0lzq27c7jxj3e52cw84alzk,17401 +umee,umee1dd9y7jlmy7a74wjl8yvfft5v0metgkwln53qxz,17403 +umee,umee138x0ldcgzcns794vpsz0uqd8fal7jxm0t78jj4,17406 +umee,umee147gp6dsn480df8fhq375px6j8pkgjv6ccmzs4l,17412 +umee,umee16ny9tuczjkje0w3svyx0cjptqau4nhvr4wr0re,17422 +umee,umee18u7sm5kfzz4spgkjzjsmqlfce9v6hgtmmy60fk,17427 +umee,umee19v0lmchh95w84takncpn7q86j07pul8e3kqxer,17435 +umee,umee1wxt4et98eetm4wt20k9nnx9mq4nucx7vxzf24a,17452 +umee,umee1nf5yqgagdf6ckx76hqzdx6s63q3423qmzvpr5y,17454 +umee,umee1szj6udrwgz9ep62vlxve5w09jmd99xkvvtvsnx,17466 +umee,umee1htg4zrmnv865lr3vz4pzeew3ctn500rx0luwu8,17474 +umee,umee12ja7ds4d2qq8cka9ap476e7va7l5r28dspt85r,17480 +umee,umee16nwa5fuw6qlzdsug2jfytgustg42664hesv42c,17506 +umee,umee144lq9xjw66qruga52nfptvgw6lzz7esejj4582,17507 +umee,umee13u5f3c2a02qe3fy8g2wmjyzg93nkkejvymqt7v,17511 +umee,umee1vved0yj543zujky7p8nqr2fqsn885la6ms2hzg,17517 +umee,umee1mqa7d0k5rllzxu02na6hp6yakpvz7faxnv2lu8,17530 +umee,umee1rtnv6nq5kkrxvwshj6sarzugl05h0dqwcyen94,17537 +umee,umee1ayalew2r7udsz709q9tcrslfyggxck5z9ucp6a,17537 +umee,umee194ukfkamv9nzrrtj7dyenu2flrrmm6j2k9qlvx,17544 +umee,umee1arl0fl5jtarmqyv3elqscqcjjpfr9947v7yehv,17551 +umee,umee14edy0mskwzyen3g6p3w8tanzjm8e06kxlh9f38,17554 +umee,umee1rr0qk3yxkv92mgqplgmfqmde58h9lh0vuyutdd,17566 +umee,umee1n0arcudyx3gtt829qjn2yl3a9mllnrvq36zca6,17571 +umee,umee19d6mxycwkt74flqehehzks7zdvy67fy9qfsdtn,17572 +umee,umee1u8pad9dtjk5v36sgyj862hehqmfyuuky75dmxe,17607 +umee,umee12puq528dnthtjfzwskmaxxjqktvts035nnnkr6,17612 +umee,umee1m4k3ayuw6da89a3s5zjgezccu4adwdmxz87a5x,17623 +umee,umee1ewqyyqakfskwtvw8d7prkda3n0cvjn6krktp63,17627 +umee,umee159jcgu8pza42u32ua8v49lz8yxulzrqqlh74ww,17628 +umee,umee19zrtt2uncccycgcm9efgedu0hr27qfdvxega4n,17636 +umee,umee144xxjkerwsn967r0x7p4s5zxh0tuef4k40w2we,17639 +umee,umee1vd8hur8aez82y6r8g5pmhxke8lz08qdd2mprms,17643 +umee,umee1hu2gmraa9h4dra7e8kpg0dn7s2rpl52wgrxcvj,17648 +umee,umee1urxnzzhw8cml8a9wlfexvejxsgww6gdshyafta,17657 +umee,umee1l7ksr69g7teegu2vke90umz8muqkss2k46qa5d,17663 +umee,umee1zfazrr9ypg6ve9faz9c8edfl927xs6fkkwhk05,17674 +umee,umee1vfga73yc98melxja48z6l6me9y8plcf2jj83jp,17692 +umee,umee1czcmqs4mvpasup72zvz0zm48hy0k6930vwfnf6,17696 +umee,umee1lrqcsm3d3nfvx3283at6ex296g7dnwyrzdjn8t,17715 +umee,umee1u3jmh84mfycru6ewt3t3gexny6g5a6y9tzax7y,17740 +umee,umee1amcsql9znk8ejmwefaywats07yn04qpk9l3nr5,17749 +umee,umee1afs2pdjjk9t23cauu4f992y65sljh59qxy6ntg,17794 +umee,umee1j7e65yajvrj89wjpy7guwcky2n0vtq4ertjz7u,17796 +umee,umee1mr26nht3549l8c6lup8rvldwetztjcp3zkvlf8,17820 +umee,umee1hf682cft3yazap5rs92dcq4pp5mrr5ureqwjvd,17831 +umee,umee1hdkc4hanp2pheg4ja2pgx3geca9zrcg3vhdlnk,17834 +umee,umee155kkgk8s7tr0skw0lfmtrjtyz2rh0pwhq0m724,17834 +umee,umee143mnperdv25qlauyu03wq32566mqs2a20vt727,17835 +umee,umee1jecrpa54mx0dmrqvkrvzaewvn979tgyndf30xw,17850 +umee,umee12q2ymyljhkm772tjxm7ac423f7n9lgezayytdv,17851 +umee,umee1vtvcc3g3kn9jfnadvcgk5r3846vwc3gajhez28,17856 +umee,umee1u4nlfzvhjkfd6qz0c0a2p827uejyc2lrujvdcc,17860 +umee,umee1fc6k9p5qk2s3425kfpa69h0g80dqvprr6z98tq,17864 +umee,umee1ua9060jxhvqm2l6v80l0lcgqyt5rvptcujrk5q,17868 +umee,umee1zpgeqr7r8rljfuuf4492nvy3hkh6d0zw0z93fv,17882 +umee,umee12yj9xet98p4xnwlu6ld9v8u9hc9gs5xus07660,17911 +umee,umee1fqrc4n78yn3ej957yfl4t3t9amdr7fd0lzlr84,17912 +umee,umee1r39rqylljpay0cerrgfwpgg3qj5exdc4976j42,17917 +umee,umee1m3tslrzkjzpvg0sh5t8ws2mar38zp6qnq0dm84,17953 +umee,umee1h7yz87yur9ne5l7jg3f85numgnyg8fezfzstgy,17956 +umee,umee149zjudh4ct38w846arywddd3nvc56c7qtm6h5h,17969 +umee,umee1xgw4zsxtm7mx0zav83an7pcrschkr8rx8qdnve,17970 +umee,umee15sw4rarxw9gu9fhqvryxp36ehtvqchp89qapdj,17977 +umee,umee1q9pc0lgasemk5yyg6ht4tj0w4e6ehtusdvwerq,17984 +umee,umee1gv3z3c86c2rjq4la5erjq63uzk2x99zahjgmum,17984 +umee,umee15sqhfz4vkupj8s6tjtr3uuumcm72r2j4rery2h,17990 +umee,umee1wmyjvcyhslj7l8nnkmh3s80drw9nqccscdyx6d,17995 +umee,umee1f2fnqxye33r4flp99wshr529s7tjt9t36fl02h,18000 +umee,umee1urh77zy90kwtu0rnzph8urkxeud7d0d5p6yvwe,18000 +umee,umee1736ntqf2g9s8yk40j9fwh8fxazpk6vv5uwkg4l,18000 +umee,umee1lj2kgveg9jjd7gl3jywktyreyugx6zemg97e6s,18001 +umee,umee16nxxzqj3y05dhgzgvhl2vapca0tqd5hkr8xrqv,18004 +umee,umee1z2q5ktnzme7hck55833hchn9eavg7agg6hsnjw,18005 +umee,umee17qngxnwq8s0gayjfzcyexuqmsl3x0qggq2x9tu,18005 +umee,umee1m6pfhgfutdrwxnf4fad0qr7ytts6d62tf6exmy,18006 +umee,umee1ufcs2yvjj26zmdhpvygc244852p9v89ft945kr,18007 +umee,umee1mp36slr03jw5vslfwyyzn9ct2em24sdwzedtpj,18017 +umee,umee1lgz9yj9zqux5867l5ykk2hqgrk2vezc3r5h0tc,18017 +umee,umee13ud8l08eqfcatrp6czlzsuw3xskugtkdh0gt0w,18031 +umee,umee17e0rgw7n3xvfz4hl2tw0dfj7x45mkex9f74jvv,18036 +umee,umee1w8vc9x8s60rd3gz9lkrlp32wrk0n79fhdlfh2p,18051 +umee,umee1du8f29tveje09wq5pw80v0ch4hvs8kqkg9evjs,18052 +umee,umee1qltugs775wnvp4tf3wlxhnqcuqt7nnv9kjsx89,18061 +umee,umee1hql978eydrdmc37ff9eyczxhmm7lxasvpf7kuc,18070 +umee,umee1w2jmj6ndgraxu48hnxsmjj4en5exmcmav3azhk,18076 +umee,umee1yfxltxlwh0z9gmd9j8m2r64wpgc03v22tvf25u,18078 +umee,umee1cfpvapl4yx85uapxf42vtacxx8lxq79hg2l6nl,18080 +umee,umee10q6xyc42wfce94skp8usx7j2kde8cnkqructtr,18107 +umee,umee1gzjrqlrsxhlkh479tmq48dxjtcrnzdy59u473u,18112 +umee,umee1jxajys5atelv6afuxrjw8afxtyhyduczmsapu9,18121 +umee,umee13kf8k2jnt282m02exk5chfzxnx5er2dhlvauhf,18127 +umee,umee1k0g7hacqf25ahx75x3p0dqsch73xk4megqw7y6,18165 +umee,umee1ff08jtdg0nffg86zurld8strd0awvewrr4gk2m,18170 +umee,umee1xfc5c9flwz3ef7asernzdt90hfse7e3fv850de,18179 +umee,umee1p2gx4erh6z297es6wr3ckftnlm6hy3cc78wqan,18182 +umee,umee1nz2va2rdquvapeg7eusz35s3dp3zzpwmgav624,18186 +umee,umee1d5jcc2wcpwppjcl9rg6ysf73xwpp6g5tx4xyqj,18195 +umee,umee1ygz78f7d6gdta8qyklsduq2g7634pndn75hr7y,18196 +umee,umee1pm9320azsu26d094p4uj4rkcarraxwrx2v2vzs,18196 +umee,umee1s0eg9s039qzzeegdjpneg4u0flqtpzdunlruvx,18208 +umee,umee1tkna4vfl4pjd7aehrdkls5nyp09ztty4ywz32f,18211 +umee,umee10gm55xzfkyapdwyzx5t2pqv5dzdyj08q3ntjw5,18211 +umee,umee1pwjlq393zegxu0euuydmcvmazplrx5r32a2vng,18219 +umee,umee1unezmh9vpyg7ymuq50v0nfd69a3vf6j5czrqax,18227 +umee,umee1wee624lpnwccdppyt2kdfys6rvr9xyvuy4hkrx,18236 +umee,umee188gufp6ezuq5j9dwzchjqrl9j7gz33w994tsmu,18243 +umee,umee1gxvawh4upwnlusan86j2descj3uldcr7lqv5gn,18245 +umee,umee1nfm3xhgt0xgta45h70uz526wvk2smckna3947j,18249 +umee,umee1qxh8dfj72vymqnqamatdn5e8zmun5ggx8xsx0w,18262 +umee,umee10vzm3z6qyd8eg3lslg6mvp8hxhpx9t5wamvf30,18267 +umee,umee1287cq6h3s3jdlpfus2h064h3gcp9wyrurv93yj,18274 +umee,umee1v4r9a6dt07qyeq4f73ydxfzvf22m65hlr94rzw,18275 +umee,umee15zmz3re7ru6jyvf3yt5mxcpql0adywmsrlhgn4,18290 +umee,umee1rck2svm8jzzm2geuswhlve59kqwuxe0v566y55,18293 +umee,umee1kd4hw9xznk3lahksacxhu88h6ff2mxxuszs287,18306 +umee,umee1us58r0j7cekhrwdvc5x6p59mnl8drgtdnkla6x,18308 +umee,umee1y5x2ct7t33gy54lnk468cclfj2utupc9yyellk,18314 +umee,umee15ntmnjpe0040hdj05we6w8m8jr4s4yetf3h9h9,18316 +umee,umee1uq4qlhrefx0ckl0clj4vkp2aapqrf757vf2vp5,18320 +umee,umee1c8lsry9wyu5npayxfjcucsqpf2n9clftjmdwz3,18322 +umee,umee1kuk6ulj0asn4yn9q7mgrxhgh8x0m67erq737gt,18322 +umee,umee1mfht5f7v8n20l3j2qksltp904nxe9gcs8d4l8g,18355 +umee,umee1cy7yf2zk7mu87acp478l336m88dfmarvf97ynu,18355 +umee,umee10n8q9337fk2ev0cna7npnqzc4lk7wt3hycrs77,18355 +umee,umee1knnpr6wlalhunj5akny2j8ds23ush4vmlzq0ec,18356 +umee,umee17wjj4e4xjlk6qtdk3uw432vs3pmvkv0dtvlpdg,18358 +umee,umee1qclfnnujrw405c2sjhkdlq8389y5njuzp849jw,18380 +umee,umee1qrra4zs7xa370runu43e7637xzjugtld3yfl8t,18405 +umee,umee153lmft4gwf50rvkwyk2frrwvcdnjww84kpaafz,18407 +umee,umee18wn5qk4xjyz2mptdeulx0lza34y4fpeq64yugy,18410 +umee,umee1c633vcxqd6wk0fwqsltlzu88s5um0sflg483lg,18440 +umee,umee1n4ap85k54ynvmdx9szr2ynj53mew0f0v9e5l80,18445 +umee,umee1w4cjautlrggjfqq72ca4edsmr0m2d9wend4gdc,18449 +umee,umee1x2xev8va0mk677qly5ux5n6fxqzqf4lcdh7435,18450 +umee,umee1v0zv6s67mt7hqv6ky7au3pkqw3xcpp78n9u2cq,18458 +umee,umee1tq5cdctue0zg9xryp4caz7vtdctlejv2y9ras7,18465 +umee,umee1x2rtylxhxa2f2amyv8p5zp9wxvpspzxe97kuqf,18466 +umee,umee17um7sz9ap29vtkn0xz8ll38qcq8jhrufv6qv7r,18469 +umee,umee1lfajsghnkhhavehsjdc6qxa5c3hgpkjlv8w5wu,18479 +umee,umee1eh7yvudahh6kq0x5gsk5szxp5ru3qnj6zs3wvk,18479 +umee,umee17p80eyy20ynazkmun6ajfnue592ehj2af2scl4,18480 +umee,umee14d2vmj6cp8rjsyvp5z0y6dgvnz6z0fyzl2dsz5,18483 +umee,umee19wzyy60k7d2dnd872dlfa556ydw7ctyq5urkhk,18484 +umee,umee1cfjpgfdh7khf3xc0f6vmujnfqacytq3uc9gvj6,18485 +umee,umee1uf4yxwuunqgp7guk36lcfp3q4txc7c29vksgq2,18496 +umee,umee1m4d7k5w8r2ruw3005z72kgf4gc589h3kjcl7r0,18498 +umee,umee1m86e38fk9n8d3uf6r867k3e4j4eqeud9hwgphd,18513 +umee,umee1ldxhgwhnj4hrz00m79emg4ya8ms20kn4szdssy,18523 +umee,umee1mscp7xyqdw094gd9hvlcrz9ft7q7hy62s362ss,18541 +umee,umee15d044teq8cw32l7y5sz0xpnxwurs5f82m4y6cw,18547 +umee,umee18f6gd30f4tp0c2dw74mg6r7d8kuzccur87ezsu,18547 +umee,umee1pkwz8hyzxnc37fuqtpds25mfeerjr9fw5tuvdv,18558 +umee,umee160z005hcc0jlt7sh0ja3sxenkz70me48jczrfz,18560 +umee,umee16c5j80zy5aw765qr89smjndj30s6cfcuprnjaa,18561 +umee,umee16nj7w4kx450pq7u2ychf7jyge7w8z9y6yyn9y3,18565 +umee,umee1yfzm0w2u82570k8rz5jf3u86vxfplty966xjzd,18573 +umee,umee17yewkm9cey76q752050qtgkp5xl6mjnzfjt4hw,18605 +umee,umee1np990s5n5cl5usah727pwq9yt553p4hpla9ruq,18619 +umee,umee14gnq687c3l0kqjraeyvada4vgnww8q722xekt8,18634 +umee,umee17ka93xtkm4tef959pkj6jfw47nh8dgxqx6s34n,18656 +umee,umee1ucemhnhjzdjvpmq7sz8cflmymej4vx7sn4m9st,18662 +umee,umee12f80ju4yryxeyz42508q44cattvw5f62yl69n2,18663 +umee,umee1k3tuzv58lazq9tjymlx53vnfcn4qfn6qkrq3s3,18667 +umee,umee130pyqtlk2mnak6kyynp3m854h7zutrdutp620f,18673 +umee,umee1gpl3dlt3sgxzca09t7uqpkacxqqp6khxrsnltx,18675 +umee,umee1f6pe0sflc84zygxrczscuhuzf922alruenr9e8,18686 +umee,umee1ccp6u06lm6sgfv8ztn4zsm8t8483a49w87jtnz,18717 +umee,umee18w693v928qu2ewm0art3cnlw5x5nsggednl55z,18720 +umee,umee1wdq2a5j74zj3u6t3cx9mzgu560xuryrc5zz9u0,18724 +umee,umee19xwxa5lxvgcqpt7ptd58tqytcjhxpkg3p8z7px,18750 +umee,umee1lndmaarz9ymerts3xdwvy7632e6rzhx9j8uzkk,18764 +umee,umee1uylkw0qv680ujca5ll6429ghyyh6w2xaat50th,18764 +umee,umee1cv80agardql3xexsjnas7s2xugzeve9gvhdfyq,18780 +umee,umee1425hdqyw54lx77t3jc9ua0uyn7khe68acrrmn0,18783 +umee,umee1zwc7t4460gen622nkyfwrpd40cxz0wsnzcfz79,18786 +umee,umee157v08zcahkmrvvzgw8ggku8q0acnp2urmyenfc,18823 +umee,umee1rlww0qlwhpwmg3h90fg4f8l8wppkyk9djdujry,18831 +umee,umee1xw743j052l3a6qzkll9q3eetay0wj82nlh7gs4,18833 +umee,umee1jcx2j7jrwyr2r89p6ptjepcpmwmxvvws6wp8dp,18844 +umee,umee19egagrnqqy8g9tjwupmwaw8xn6rv8c76ey8mhx,18847 +umee,umee1xvd45767z3j27200n0czkayx5rmvnludywhfzj,18850 +umee,umee1say4rpvrtuc8wnz6ztnlcszj2l0n0s7l7fd4mr,18856 +umee,umee132nth7pprcd6zjymeugjup2ar3v8h67wze7laa,18859 +umee,umee1s8rg8f2asfracpy9r9alc5x4lcskxfjvxpuy6f,18865 +umee,umee13dfm53qells6z70yhw2myc0uvz4l45zqmu7wzu,18875 +umee,umee1nkzq85n703a5a3ua4lk54ytnazd20alfalkjas,18886 +umee,umee19p4m4xmemhsq9gtt4tk7rpul6ct006thmddrsu,18900 +umee,umee14p40thw7mp9puhe6y5w4awjqnknrumxuqzfqg7,18913 +umee,umee1waaluq3k747yyjrfz9w6w6c4yaf9cye97aejjh,18931 +umee,umee13gd97ke6erejqk2p050xkpc63jhtujrekljkxp,18945 +umee,umee1dw70gfrhg9e4qalwteer6dxrwue5xpszrwqhcl,18960 +umee,umee1sedr0qzg2vyduu4lz6gg33yflnv5kqpr3jfxvc,18974 +umee,umee1jtzmwppdadmyhv6j68dujwghrp8gkr8ssplst3,18983 +umee,umee1c9ye54e3pzwm3e0zpdlel6pnavrj9qqv56wp8z,19001 +umee,umee18cydalu7qg9r38dmz4zgn5nnx67939kwfswh6s,19001 +umee,umee10kcs0plxkcevk2stf2q2msr99w0ucc48whq33v,19001 +umee,umee1pl74e4r3wdlelzl04u0cyj2u3f2l626kasv5mr,19006 +umee,umee1c0mz8jzpamnmhmyncdceedzr6aawynnfpvn0rz,19022 +umee,umee18x0h2jhfhnw5ta235jl0e4xpwcwalctn40szer,19022 +umee,umee1yhppklazvehhap0je5lerlpuwzq9jhzvzgdnvw,19023 +umee,umee1nnhmnp2swa943p5uzkunl94d6nwqcfff4w975t,19026 +umee,umee1jee9u9ugr2wtsmrlkmlvhpj2ghchy06qmde6v6,19029 +umee,umee13m9h0ku3dfnwdyhl7djfvq55cwsycwcalthej4,19045 +umee,umee1ufxf7sazpwmwz8zrl92qdwpmad7q5zay62j4ue,19046 +umee,umee1phyntp35samc4w3ec3gy5p7sjrhsz8vl7n2m4m,19062 +umee,umee13m2g7gn9lapfd2gajkhlxw82mqgae4pfm7vvz4,19073 +umee,umee1a5kt6y5dteq5vfy5td5k302u8ekpdfganxyn7l,19102 +umee,umee1pe8wnjm7fv2hreeknmat97nzkeycqp5vkgvpma,19103 +umee,umee1e5gs2d2trnz8vwvr0hmx6md5fdml6spzxsmvmt,19103 +umee,umee19h89385j3cu2sjlnschflwgthwaq5d9kanz9w5,19108 +umee,umee1wngj5tamz62gsmmlzve6krmkkvzjsrtmyymtn6,19109 +umee,umee1f3lj5uq5yr08eu6njunr78lt8lxe69earh8ek6,19110 +umee,umee13fy96prk7us27agt7gmg6fsgs0s69m5yz604a4,19121 +umee,umee1zkjsr7m4cudkhkmvsl552a4ca9rafm2yfxns4l,19123 +umee,umee1a2j8h3qjfjyky88yg54qtp9wfvudtfgq487nhj,19130 +umee,umee1shv3de25zqu5pk88agw8x8a967768xju3spht3,19133 +umee,umee1v0g57lrwdcfgrn2mzygt8jvz4tsfmwzm5vsehn,19135 +umee,umee1fdq5qcclw0wdystn4up53h3hp5q28znw5qgtue,19147 +umee,umee1w4tgle8daemd7jskklu3x85npufh8a295l4azd,19148 +umee,umee1tc5pt52kjs6d9hk2xgf3c9a32tsnkdf4553lqj,19148 +umee,umee1tdn72jq2asvhgqge7rf0xf6th0hmq048vjxrqk,19158 +umee,umee1hjuhwywq754h0lakl0g7x00mvjqxf52ndw8ddc,19175 +umee,umee16ey56w6f0pd6xrscjy6cwplv8dxw5elpe9s7wq,19270 +umee,umee19358wu0q27dgauvw5nplwzxqvg6h9smd7tcjme,19279 +umee,umee1vjn3559ncztu87qj8v4ryasgny7vjfx7940g5m,19281 +umee,umee1jxjk9pfluugqcyxg8rpvzzz25qp7nxpsgymqz5,19289 +umee,umee1nq22ns9zps7ucrjxxjne48nmug4emzu7llgnk0,19326 +umee,umee18vrv5s3kmmjtsu9h0lp8g7hgg0s84yua4zkn3r,19385 +umee,umee1tqcwty846n3cuv343xkvt2947agt8mp4k3m8kk,19398 +umee,umee1uq80qxryqf8ufp2vxf6ucr2f740e2qu2tdtdcs,19400 +umee,umee1w4mrqsldyu4vtccgzs5ezuyl3qd44g2s02quky,19405 +umee,umee10kwjdg7r7yl2j36mqnqyu75lxzxczk6ga9309w,19418 +umee,umee1jaj05ljhlupske6w29jpdx79kt9spx8hmjpz7k,19422 +umee,umee1qjzzu0pd9c47k6kvl8f3mfj0he67xwkf4gj3wq,19471 +umee,umee1nr3d6er6jeaz9etqnhrq4y5jzq45m606cgmcz8,19495 +umee,umee1pfnw3xljxkhkwzrkn886frvcjzrv8j27psn8cg,19495 +umee,umee1eaqzxys2uaz3yr2dddv5qh56ywm6nlq69td20f,19502 +umee,umee1yqzy2vh4dqeh5mkce2lrteuv6q24cpx9fq45mr,19508 +umee,umee17du97esur46k28s932cewjeguyt5p82kh5ltkc,19531 +umee,umee18dfhkfcr9qy4ntmnkqpt5fw26t6xqx3h84atq3,19538 +umee,umee105ya2qmskg09yyytup49dzzfeylkc08lmsvghx,19543 +umee,umee13x89e775q6m2ufp720k9lay22m75vxxeee9p2c,19556 +umee,umee1z3g8cpmuknzwqrx4zag5nyk8mfy55uzatg8pwq,19588 +umee,umee1cwkj77j93r6cqterkm7cffawjc8a4re2jnxsa8,19611 +umee,umee1dxz2349ezp2adsut6dyv8ga5ygyj3yeev9acye,19619 +umee,umee1lfnhfumkghshexewar7kvmc7ff63sz0jxv4g8t,19621 +umee,umee1pjy0enadly4nm3ds0cuy9y4d2u99ql778xtruz,19630 +umee,umee1z6hdytgmukrxprdyd97ajjtre0phrn4g0xpzt9,19635 +umee,umee1znhk9mz6jlrsec7kzvzzaeytq9pa7ekqjhh2jv,19643 +umee,umee15f5vnp36kscawc7xugp2ne7c6emxn6sutvejsl,19651 +umee,umee180j36lh2axv6763xg0gd334yr6au727tycrqwx,19655 +umee,umee14kw6payx49n2gezae5l9h8qplqfzz967tt8gzd,19657 +umee,umee1gqcsp5u2j3uew074en3jv8ekcn9y0xss5wc9u5,19658 +umee,umee1znhywqvdrd9e5ul4j0yjg6hl25gaztu0c73xna,19679 +umee,umee1n429j0r5a0s988syew5kyac9veqfj8ak4pn4at,19684 +umee,umee1enm0elwqu44s7gvu30wcvhut5yq6vts7ntqnu0,19706 +umee,umee1pud6hgk29pf25edmvke2h2u29dc659lxntyt3x,19706 +umee,umee1g8m8992th22wvm8fvqlxf25rgt2mdxqcv2drme,19716 +umee,umee1j5tddsjrnm08mdnuza229t678vgqwu9q92ptnz,19717 +umee,umee1uqhpldm5nr2l6rdf0njj6cx3h4czae2vq43e99,19720 +umee,umee1swvnyzsvru5x2wywjkvk0e3qxf2p629ec04ccj,19720 +umee,umee1dl2gcq66twxydx4tumt9qcrh302u9grtyzwx7q,19723 +umee,umee1ktujkx5lcw9c5dqh3rz5v2xatkcsh3jaawfp40,19727 +umee,umee1zhkklp2c338dpf86nflp2geevducjsctnx597k,19727 +umee,umee1c6zvqz37c96ck2l5gspkjnhhvxufezp3u0lhu2,19727 +umee,umee1mmdx0mpfj0drnxcalp50sf9psnchzrgeyxc8lt,19729 +umee,umee1qersq7a3pl4ug8gjz57drd57rr327xq9fs9ple,19732 +umee,umee1z9t45kwyuvc6j6g95mh39sqhgkkhlg5lrqzemr,19749 +umee,umee15vgxc5x4tr458w694ez8n7628f9l578ylm3mtx,19759 +umee,umee1kahqc85jpvhu2f3s7hn3f4xtvvp4jqghfp84ac,19769 +umee,umee1z8mlsd42eaguaqf5gexy5a7jxgpwpgvz5qfwn7,19777 +umee,umee1qhs8xgq6xxw8rnecmv60pew228ud3gtfvz68a0,19792 +umee,umee1rewx9def3k59alwk5p33a4xar7wk4g30nyz3tl,19793 +umee,umee10p39dlneudv5x0pugkv5huqwrxerxusfjwqu5u,19795 +umee,umee1t2w4s3ywnd8hw49mn3nl3nmq2a04h2f0mud0jn,19806 +umee,umee1jaz7nhhpawangl6c2an2zxjk8jstrduxzxl0c5,19813 +umee,umee1uzvprlh5t4ne6zhlnz8q2kkdsh7sq8xgkuff6r,19838 +umee,umee1npgstrrchp4xuuf9na6lqplas6f6rarvrfs92d,19841 +umee,umee1tyxvallmystc7evhk0tq289rrj38kgzg595vf6,19844 +umee,umee1ezfrjqupkfc9vaphusa7gc20z7wa5rptvtyccw,19861 +umee,umee1gpkyxm8tcxqnee56fqtujwp5elhekmkw64342q,19901 +umee,umee1z3fvxy0u9duzqfx3pjzh65wl4e2crkqld7x60n,19906 +umee,umee1hqjmewmdqyffv6l3uzcp596gqhh6ktxnup5dgg,19909 +umee,umee1aracx5f5xdnw40jspgpmrr9zae5uxjmnjrzlp4,19934 +umee,umee1sgsqd4txseqxcfa3q9d7r92cf28zswvh3cjjxq,19946 +umee,umee1c5huj6fjxy067fudsevcn7e4r6zktse6q7wxew,19954 +umee,umee167jdgj9tjzxymll8ce4lpu9yydm3fh2ll8mhnh,19976 +umee,umee1erd43xteamgeuf7pyuf0a36cl2lqh0x2h0kvs6,19985 +umee,umee13sc89sgjzeh55ngl9pqtch5tj2fvej850wtqne,19994 +umee,umee1hwkjcj4g2ys203g6n4jjz30m6plevjuak58lmc,20000 +umee,umee1nauea0g7sz4ac49m82430ptp4q5fpaz20v6dpu,20000 +umee,umee1wqaluwpj8q5dfccvyuhgdsen6ld6pr42zsq7xe,20000 +umee,umee1d7vpx9tzmhr5e884wxk64rg5p9wkd3avzjm28k,20000 +umee,umee1ff8j98rrzksn579vdt3kehyk6dsed8776kyy33,20000 +umee,umee1frgzpm634c6k5dwgc22yszfc8zp3j2jcacx2kw,20000 +umee,umee1ms4w5swfu5c0stk7nzwvsawtakhsglyqulszkw,20000 +umee,umee1rjwt9cnezqt4sjuvfm36z7qz0ghl9mpeeg5w9r,20000 +umee,umee1rsczta3qc6cfzkasefwfqghdnzs7la339qsmq8,20001 +umee,umee1hd2kl64dg3zpgvx2xwdt4z3xvkzn3lmxvhsyt8,20003 +umee,umee15xnptjt7fqznrznz3gthstzyyrxnprtadxs0ej,20004 +umee,umee1h6wz2t8v9mh5d8akvw7w7kk9czm6u3qdvml5v0,20006 +umee,umee1mugmaytzaxvyskk0h2906e9uxssh2uyjs5cl5j,20014 +umee,umee16hz8mnxxvxtuxad7y40f2v4d2sh892zrq8nhr9,20021 +umee,umee1mxrse3uzsa896kc6j5wk0r3t7gqyjd97dfadz0,20022 +umee,umee128d98lhrfh0zdusqt45mumrfpwkl2qmnjf8yqy,20024 +umee,umee1p5xhv2rm684qqrv62y5d6vf980h5qds7mau68q,20024 +umee,umee1r8xed2llksuds85ksdexm9gdyxeqdneet5hqug,20025 +umee,umee14ttan5llq4msmeypqfq8smheccptanxd4aac99,20025 +umee,umee1264g42ew9sarkqae3yd77np2xzurz0e0hcfd07,20027 +umee,umee1q3z2yc3k6lj5ys7eue0hyejyfda49j0cuzkznz,20034 +umee,umee15pylch4ead40waf6uyzsql80yjeu9lj6uvev8z,20038 +umee,umee1m8xjjzmlw483uwjej7xm33uq0mu0nqdh96mqds,20044 +umee,umee16xy2sk5feenjky6eg5jdk7dy7fhk8ty8jhlz8w,20044 +umee,umee1l6zy30x44vzp57x4znvfajgy8jx7kgmp9aklmq,20054 +umee,umee10xsy6zch7a02ndefzlhqngvedakcpc72pg25ek,20055 +umee,umee1rklgaaggl8s2wk4l884l4272weg4wq2e70w2hn,20062 +umee,umee1kr66jzvj9re0fv0yzkvyzjmf3jt5yuwd5ejwcp,20067 +umee,umee1t8e5vktvrtwxn98tfr3k3esl424s2jm680wr68,20079 +umee,umee1qdrnkkdcmhyyvg2vp5y86vtax9yev5vwu082ea,20092 +umee,umee19kzr5jg04l5hqp3dk2xgp37ul2qk43w8sfcsqu,20102 +umee,umee1vu88gfq05u06v9luedwmt3hdzgydprv57fj4as,20108 +umee,umee1f5m8e9q53vhfu3w0502757vhkr97atsu9ejrp8,20119 +umee,umee1jx39khswpkxrn335x094kkqrkl3vg6h7xkl9c3,20121 +umee,umee1t3kngrd24j8fea93xaarpskj866tk0lv5fhxfn,20125 +umee,umee179luvthvww4t0cawrcsv3t7a8amr4n7g9y4af8,20130 +umee,umee1ygxxgtj9jzsacap40wfkyv7c57fyuzslhhdl8v,20154 +umee,umee1yvtkklegn8kq5j42hu744hwhtrucrdp329n5ty,20170 +umee,umee1jq58qc4t2k25rec8p04kh8xte7f86uv0dg4wxc,20198 +umee,umee1mhuf2qy8fgytchlcneyn2w8x55s3lefc79fwmz,20199 +umee,umee1ftvh98sddf6q9jzqtfk7xa4y9hkqc8lcdvrg58,20211 +umee,umee1d09mu6ufq3rffwsu03mx0gss8xhkzyaxsn759j,20215 +umee,umee1u7susvw0uq25pey0l39zmt8ndcware4j29clut,20251 +umee,umee1vz5wma97twd40hlftv9ck50ad0hnz46adr4jd2,20267 +umee,umee1glrxvex7ayhy6dzqsnzw6da33jdyy0ythykmdt,20268 +umee,umee16wwmrvkvtfp4a43htm8fk4309w2dvkuvsp7gml,20270 +umee,umee192l5evhgkrfpmwjunsa04ykkz7c0z42aplrayk,20272 +umee,umee1z5nyx87c03l4uvdy0vt2p86ng0ml42cxccqv47,20300 +umee,umee187rll09hkl35ue7g0t8jk39agn5taykatm2dxs,20305 +umee,umee17y8uc04swgrjfrqpnz6kd0kspwjq4taalupt3y,20313 +umee,umee1xymm4laqu5hflnmskrqr4ce3xtk7zexm8v6qe4,20321 +umee,umee1de5976s94gyxfmmh9kaarww9auu6w0206l8z4s,20329 +umee,umee1gqy4sxgm22g3kv46md38qsk4sv0p66k0r04cdv,20345 +umee,umee1vxurf7gcsrn6unggcez7agvdnjyvpxq7r2d55s,20354 +umee,umee1dk4pc330j6u5g86wg706g5vasd82agzfn28g7t,20358 +umee,umee1yqdezv58qw0t7hp909u5wtjkdq0rqn3w6qtjmn,20366 +umee,umee1dm3vj3g2pmklhuphtk6ku8keqk4npkx2ps4l6g,20387 +umee,umee15fz2eenwncqfmklzu23nah56cz8d6te7280e0l,20393 +umee,umee1my0eqzy6fzaxzaeuh67qeqxf6lkuc9hmny99ts,20427 +umee,umee1xd74lqnkmudasqmzstg6cajyw4wsuazdhqxy9u,20441 +umee,umee1m6r53p3n7k3gzagsffwj406glxaumdqx0f9wp2,20443 +umee,umee1xpw85kkrhua8f2h22utpactalqvcr27gwepvre,20447 +umee,umee1nn3mlkqzjp667zztre7spwnhs448jsmdmvs339,20463 +umee,umee130ahu3fmhgt50xt2wfzekz5e3vdu4fyh5guz3w,20507 +umee,umee1kvsy3xe5ydv34ynsz90wmh7ttxa6mamkv0jmtx,20513 +umee,umee19l4fr0alz23l6jswmdpd5amuxayc9u7cahtep0,20515 +umee,umee17gs0sq5nrn66mqyktwum62vwetprevm0lj2n8q,20523 +umee,umee1qnekrheec32cu6g86gy29jt7k6ehnjgmd4wdgp,20541 +umee,umee17sgwwu39jhgg7nd5ws0498gmgqqevfxj5u9skd,20561 +umee,umee1ev2vhqdyzg0s5kefml3nm7rd2m7svk0gzwvrue,20569 +umee,umee1hf7nvjmhvmwkq38l0ct5l2few5nh3fmtueg7qg,20576 +umee,umee1xqxcdr3fwyk9nxkvczul4ywm6n8c0574s76rg8,20584 +umee,umee1jmgl3qauzp965l324h2xn0c7mqd75709fyglje,20584 +umee,umee1e3s3vj5m7tv4520fqe6qqd9hgxn8zmslyhypuv,20589 +umee,umee1nk35ls5p0czsrljhgd9ulxzsukkjtrjswl06dy,20599 +umee,umee1kpel43ese325gprc9cmwm2nfqhhzx6tn59fkjz,20614 +umee,umee1ft6gdwcedwdqe5gsp4uhcdvze6ualqg36tqem3,20620 +umee,umee15rm8mwsm35w8hlyweq9lp7jww6stks6vwztkz7,20624 +umee,umee1tngrk6fdalfzff4k90uzyy88zfprg9vnf7wfna,20634 +umee,umee1666m438d4u9ahg425jsyj90fkgw72yzs5xkl60,20638 +umee,umee1zwcwnhglef7qsv0kekjefhr28h5ys8ncugqqc7,20647 +umee,umee1e8ls9qgznqe4qk27c7lcmrmqtuzz89qc2rfuku,20648 +umee,umee1jxtq8ckp9l68f088lczj35835zp3lmj56mdny0,20657 +umee,umee17k0dnw38uwgc3qqnc909y4l3gsypke5hzgfjgt,20671 +umee,umee1e8dpnphmm5fsrakjaglkp4tazs2pth66r2var9,20675 +umee,umee17zz2fnccjnrvw8uj6446673qmyd7j9my843axy,20682 +umee,umee1yjwvazesdtnd3tszwd6axta4gqfkvx8k9ek2au,20702 +umee,umee1lev6rzrjyylruscgv4gf6hxqhk7rz7p03zw046,20714 +umee,umee18ts2tzq65x6pdms5wy225vn65lgcxf0kr6hhgk,20715 +umee,umee182wwtw3mdwtsgpge6gd3jafm25g0x2t7mh0hl4,20719 +umee,umee1az45nge62qvxzegy0h4qa5wq8emyvf35y6kewk,20748 +umee,umee1y93q4nps8y8tz7fnne0qk3t59te6z5r2usrzcp,20752 +umee,umee1he2w6yuhd66ppfaxzhsyrgyfzpf00tfqhz9443,20753 +umee,umee1876l4y23yfqu6ccc9lwr0wms7kt2l06ayevf5k,20759 +umee,umee1agctevjv4c7j2wvw8jcucjn9ealqk404ldv5hc,20770 +umee,umee15antj28492h958ew5uz05djufz4ml4mhlupvyq,20774 +umee,umee1kyytjhd8yfl4krsn28trfaq5kdwve3gh67mq4a,20790 +umee,umee17zadnsmvqdf58zr36x9gswg0dpyy26wztg3mqw,20812 +umee,umee1nlyd8n5j7hfyna7cpva0y52kxr00l02mamkjra,20816 +umee,umee1fj2c2022qmxgx62j3sutrepf77v6rn6602ylxs,20820 +umee,umee1la5rrd3027cz4x8x6eeptthj2y9dg89guprp2k,20845 +umee,umee1jc3rync7qu4ntun4hmqsnkhz40zr3zn3fuylcg,20864 +umee,umee1hezey746cjnkrafjujdtfs52cv4qw6jd5ejqt6,20882 +umee,umee1xke525mfta3t4txqlj0pjep6lhunk25jpt82x3,20896 +umee,umee1hmejnkas8a94vhhp0z6cmjpkzzytccv804k7fz,20898 +umee,umee1mcextsm4ma34s05haumqrqdf4zz6jcv945snd7,20911 +umee,umee17lf43sk4c6frnpvtysy4epqesecmqkhnn3rkvq,20952 +umee,umee1ke3sjkmh8c35td6tgrh3gkr8lr629k63xvjvn9,20976 +umee,umee1yypstur7pq78sc5wnf44thjtcz4qg2tu05u8m7,20983 +umee,umee1kmdrey4503w86r4nsg4vxxzudu48ehlgj24yxl,20983 +umee,umee1dclfk37jd0uhgrtmstxakr0l0r5540jdxqv93f,20988 +umee,umee125sem2r79at8lme768ymwk2k5yx5gw4lnccmrh,20998 +umee,umee1trx9rukl99z8xhexqwr5ajcdm2vxsqlmj20wpw,21000 +umee,umee1dlqsz39f7ahzr3e5mwvjmjlghk382cv84frrng,21004 +umee,umee1pna9hxdf9u8uf7z6rshs6la5a2f3qp84eeq52j,21006 +umee,umee1g5gvllgdtgutgu68fnhnu2jzdnkj9p4750ldru,21011 +umee,umee1w4w0tqj2yfs7nuap5m66v2gtyxpunqhx53xy9w,21030 +umee,umee1jtuk7nn47eh9uat4nxmwa5jywdgs9xss462gxs,21039 +umee,umee17xhgjqrsz5r60h42l4qztxsvv6fshk9eqzqrmt,21042 +umee,umee195q6yk3flvt84sjxv74a803rge07u7ynly58d3,21074 +umee,umee1zr9tzyh8tyjg6dqjy6gv90fc2xsqmarn3rvjtu,21094 +umee,umee12tdulmvjmsmpaqrpshz0emu0h9sqz5x5kj9aqv,21100 +umee,umee13yqlw9t3kd7eney4mm83q5tvyv2ymf326e925d,21113 +umee,umee1fgwcxv057fd3hgsw49tueuu7n2qh4ew420yueu,21132 +umee,umee1xsvcgj65xxqesu0faqxp39tkwyyc838s80zfv2,21149 +umee,umee1c4eunahw9g2anyzuxfs6ax7wunrkn9ztz9xa2g,21166 +umee,umee1uap5a9gjzw9d4g6lq6eswh97jv75xzq9j3qaw3,21175 +umee,umee17uw34zs3wnctwsgl2xk30tqu37wcqm9329mxe5,21200 +umee,umee10y7f0q4d7zr9qnvsvdhnul20u8xmfv2j73rnzv,21230 +umee,umee1psxgymvlca9w876c2dkw6yddxecmwuua4r4yfu,21233 +umee,umee17sujf972nalrgcag2dsxjq8w70uz4e8eusjztq,21236 +umee,umee1633xccjqdkuqly66fvsu53maf885wvx9244cju,21238 +umee,umee1aq64796p93jaq8ynupvt0vaedl9ctyc0a3ts00,21281 +umee,umee1s669945muldr6a49reuguxja4j67cgsxsw8v3t,21287 +umee,umee1wmrkmdx276jcj2jpsa0ysk54n5j9qknwpqlkfz,21300 +umee,umee1cu8anxq94628h7yrrzzcpd0793vsfcmmrz8u9m,21304 +umee,umee1k0v46j2msuum9epcxs0q6euj7n8guxt67dgyh7,21305 +umee,umee1kkaryts8yf99xjdytec467lgm8zjekx0awn0sa,21306 +umee,umee1msga35xat6cxa3ajfpurq0slcng0pxwsfdgctv,21308 +umee,umee1puepl76ulr4u00hc8xglmxqsjueepyxrfknfxc,21308 +umee,umee1ydnxfpqllgwys907s5g98p5k4uw4zpd6qhjtvz,21324 +umee,umee18qxn3s5rg70r6925vczss5s5pfa7sym6a5t0z2,21325 +umee,umee1nndzxaz7jkrsfnal7l9ttafk0twt6syck6yxq0,21361 +umee,umee1f4zjc0zt0dudes8rlnzrsxxw4uvd2s86gxd94s,21372 +umee,umee139k0lfkav8x8u50lajujg5cmxk28qqf3ht2jw4,21390 +umee,umee1w0dgw63pj6s083gykl7zl07g0kr2scsdxjgqpg,21397 +umee,umee18cr2sk4whyyjzzpnmluhnlkg22unf6vv548z8m,21400 +umee,umee1gwk3r3zrnfxcasat9xapyua0prsvmfvxeya9vy,21404 +umee,umee1uhzy8k6r4p978nshpc5w5drppsydzr5pv5v8fz,21405 +umee,umee1z6qsfe95y3luzj4wve93s9w6rjs7msk97w9lyr,21405 +umee,umee14vqrd8f6lsz3c96mfdrhzsxf0ljwy6dyn3llm8,21413 +umee,umee1mkk7xd9tll96rt2j8e8tamggu5agzwq75fnvn9,21418 +umee,umee1lkpmh68xw5xa92jt46p8gc5rvk98ugxl9g345w,21428 +umee,umee17u4l89dmqy2a4l3gja5t78mxn3a5uslefye3h7,21446 +umee,umee1827uy2jdvrwj7zjy083v5ajws8kndc6dpkcjmj,21453 +umee,umee1drplfc2qtzjukk70tanwtteg5gshf3trakhjzl,21469 +umee,umee1h6cs0ajammmwgg9m43dyq2g2y9aec9s9skgk3w,21491 +umee,umee15kzcnht8p8hrqanc9fxeymkxm4pzhq96vs8vpz,21492 +umee,umee122k3s8xchcmffs8qam47na4khy3ch4nwkql8lf,21493 +umee,umee1k4rl4caxlmhrs6ypnuhsfcjd6vl4tyzl4gknjn,21498 +umee,umee1f2sp8plz83mp2rgvhhtj3h0t6v2qg7sknrgned,21500 +umee,umee1y4teyl0hz67x9nmknes5yt60gmntcjx4dkg0g3,21505 +umee,umee13pu39q7vth425a2cqjkt4u65m49555tg9t98kk,21510 +umee,umee1jvm8gy4lgzcrsagxpyhvvxymz982y3j5pvzclq,21513 +umee,umee16as2ednuwdng0255eazchgf6u9ys53s64rfyg6,21518 +umee,umee196y6x6yx777fr5t7cqs0t9fj7p96jf7c84mppc,21525 +umee,umee1j2d3hndxjzeq5snfcxtdxpe3df9324j25tkjuz,21535 +umee,umee1yxp72ytnak32kv4c4hpp74x4myf3u424fvupux,21549 +umee,umee1y4ln0k7pr2qyl9gxtgmzx93ncf0yuduxpa79jh,21564 +umee,umee1a63wjywr2m29pyl4n9ta2256cfstq52p42jjkj,21567 +umee,umee1wrfdzjw8evlaxsfzc3s7c4hwh539340a2wzuj3,21574 +umee,umee1lm9u97g8m42m83a7frhcxdhwdxdarez7v53yzt,21576 +umee,umee1e2vt3wypd4znx0w0sseu6q0qd4srkx404mg2zk,21579 +umee,umee19cx65ar4m36f8ed7j3dducq6ztldwy93hsadl3,21588 +umee,umee18u24lfg5yx0yhy6gdejsjrtupd0k4tehxeur49,21599 +umee,umee1ckhtc2q60s6n9t4ghn2vvyahp4x9hhyw9c8ewx,21603 +umee,umee1aew0wgxpxc2mrwxq3nrlsl53gp73wa34aug8kn,21624 +umee,umee1nuu72je3qqzcymux20c0g7qwc8y4dzs6uu8pp9,21636 +umee,umee1ggcryr5vv9lnnmg6yvaavkc0qyd4kgwmk6gzc3,21640 +umee,umee1y0us8xvsvfvqkk9c6nt5cfyu5au5tww24f9nkp,21649 +umee,umee1kj42x9nv9kn3405rgklhs3wlk8vcx50nwjzd59,21662 +umee,umee19wmlrdhyf85fly7mqhm4a0jr5qa4hlvqn4yhjd,21668 +umee,umee10qmjjkp2m9s3ecyrxc5ntehmqs4d8l62nhl4e3,21674 +umee,umee1ljp4u6r5l6sq8nkhc6xj0htsy0zz4t7f5sflzc,21674 +umee,umee1636skayudk5wmz2dp65rzs3wrlzyaw4x8cx756,21691 +umee,umee1xryxfygxmvtqp6n6h5f7796avxq0krzd20tvhu,21691 +umee,umee1ez2uwsc2y6h6pua78dc6tuh4hyare0kgam8qgh,21703 +umee,umee1vxqe8xmtdwe46kaggv38pgk66esy3xaeu4caky,21704 +umee,umee1zq54z7d3qhc2fruy3sql9qesgunf47trjaadzw,21705 +umee,umee1rw2nsr4tkeqsymjtk88wd059k75m2crvh833f0,21713 +umee,umee10uyrwwakpqt32y05gensh6vf0s9w9cceqfd6qy,21713 +umee,umee1qjqyvvz09wm0hdnwvg8k9apaygrekzxena6766,21714 +umee,umee10f85qst3ldnyqame4uvqqxcs5uxn99qefgfy5w,21728 +umee,umee1t64kuqpuy5ndlh9na7yvwksu0zff0af2suawn0,21740 +umee,umee1fj38m0u09m4e848jhtdx8fya5wgfhst7w4fgca,21761 +umee,umee13jungz72perqhfkzxhq77g37x3mavaw36777h2,21766 +umee,umee1vtv29j2j8mv4p0mtl7ksr5kpqaapgdat8t0crc,21770 +umee,umee1p6xsq2j3ja7ky6asjlh4grdr7e40alnw5704ac,21773 +umee,umee1v6ncjf48e60w9cx7a72mmrrppzr7y25sswyxps,21807 +umee,umee1kdj96jq9x7pr6tazeg0etyk90qnv7es99zj8qr,21817 +umee,umee1t20hn22ynse4ukp3nwrr0jyl0ln5hmcxa05l72,21837 +umee,umee1rc5s352ys2nm9sh64ku8kwytxe3dagd50y78j4,21840 +umee,umee1es63wamspzwm04twl57jnww2qyf93nugt4jlu7,21848 +umee,umee1yuy77ya76waj2eyzl88nk2rrjzkvm5fgrqr8zc,21883 +umee,umee1xtjnzwmf6gadsmw555tyl8dz05pcp9frxckeuz,21889 +umee,umee1v4rsejs5e2sp0d5hu4z7sasuhspq32x8hqr5fx,21898 +umee,umee1pwavvqyrd4dmrxv8zhpwpqymr930fk39h6ds3n,21899 +umee,umee17gzjekq5c2d2fjqtqp6pxq49lh8lej2vfccxcr,21905 +umee,umee1ud2un8qk4npd9shr3qu20pfypzve8yha7c4wm7,21928 +umee,umee1t8xnz0g5mg889yczev372jxcycnwjyxy2qczu6,21930 +umee,umee1mnkwxamlacpee7ndyu7uytp948ye89glxahy9z,21931 +umee,umee1nnd0xsy8skk9nkyd0a6l3m5xwfhxyj9nvrqp7c,21944 +umee,umee177xyvdxmepmtxw9jsau7288sgjtaqcensmu7u0,21944 +umee,umee1y7ysuyhsl30trd6qhss3qpc7mxta40gsunyfy5,21949 +umee,umee14yent5x4v5arcmnyws6ls3qzys5zrswktmque5,21950 +umee,umee1rxd8d7xy5tav56qagrtu44yfvwwjgt3j88smem,21950 +umee,umee1vn70yshxet2yyryvvfngxd8vv9uwxmxtmfezaw,21963 +umee,umee1uvmm26ngcj05dcurr09d2c57k69kprf29dch4g,21968 +umee,umee1wmgnd36m2nd674jg245wu5m4dv04vtsrxmzlau,21973 +umee,umee1pwpflqaa4jrjueyss55p0u7lyh6zr3hrkf5w40,21985 +umee,umee1r7nadugr60p79ln4e9e8rmjtp9dpwkt7qc8aeu,22000 +umee,umee1qe99mqs3a74fl57w0c8jmkek33me4xs6xhd3jm,22003 +umee,umee13altl4me2kvrfhs9m0cceepmn5c2fhru7zlt2z,22008 +umee,umee19t0nt0r8ay9a5fmvarwlffuhrjy2jd7y7lkm7w,22028 +umee,umee1tl79clyympxmm57a5s5pwmr07hdlenlq3qkku6,22030 +umee,umee137m4jn20k6dgeq20gdmg4gd5snq2a56frv8q06,22058 +umee,umee12qw2vhtn6jcge57rnaqtd7fcwqd0fja4393g54,22060 +umee,umee16f0tqh2r6p3p9rfgsae7yaqh4zvy50gjwd8nfm,22063 +umee,umee1tew22qnd5wm8n5hnlts7p6vmytufwh7rw65mx4,22099 +umee,umee1cyrhvxzv3mcuqfef589dqq0x2ymmey40dxtwvh,22127 +umee,umee1sxrhhyl8ak25qlln038f0svejv7xw6j6srfuv9,22132 +umee,umee17ear6za68ky743l865lacg3m92vdsxqz7pc5ph,22135 +umee,umee12vvvavtyrked23rs382qsqc2wp637zeqvjsp0w,22183 +umee,umee1avjhu07s3v2nfdglrm9wvzl9q929j2a4ud3cvt,22186 +umee,umee1q7rx6vrmc9epxze5ne3g39hs7evxj4lt5y2zym,22204 +umee,umee13uup3md785lsd74aws4hx2et052mferwa75t0t,22207 +umee,umee1x6w3hwx24efd02fzqvfflukj357dg4jt7rwxa0,22215 +umee,umee1lfhlreg6vjmfkl6f7hq98649f5axe359m5n0sf,22216 +umee,umee1qwp26vk4y8f3jv9xqquzrcedykvmel4w5wkf53,22229 +umee,umee1x6zqhhg9e0plt5sczygdajzevgh20lkm4l3rrl,22229 +umee,umee1t570rqe69f33vcx0xayu58ryqdeq283vqu4wja,22238 +umee,umee1nsyt5qufh4r6kngsskrran38v5ym56uzjpzc7g,22239 +umee,umee1nqxed9wge6rqvmnk3rps6zztv7le7xeejyv87a,22253 +umee,umee1u3q76w27ra27a8u0wrde2rqxvqpwsrgkv4xdqe,22256 +umee,umee1c92fptz5mmq6ewx8dac2jq2qq8fvrx6hrqar96,22268 +umee,umee19jclk3m6paku869mmnm84zy9hl7nq67ewr0ldm,22270 +umee,umee1qcrqju454ax4ugyjy4w3c8l9dn2gqadzxmxxlh,22283 +umee,umee1e96vcg7elw3cc7g2mpwp0pvc5tx4a3rl4esfmv,22284 +umee,umee1dq5r4fvynaxdgpmasy7mhy27e60hs4fxpk2wvp,22285 +umee,umee1ufp4pg30mxgexhheketfzkgpp9a4v2l0c6v2vp,22287 +umee,umee1aqpeat77rg0t3l3vqjpcynl2jt7ss0vpz0c330,22296 +umee,umee1u8jt9y42ccevljfc7tqj87lnp0htvcjs4f0s7n,22311 +umee,umee1pfsmlav60zxplnn4wm5ujxh26yuwd55ql7fneq,22327 +umee,umee1j05akmpv7v8pt7juz04dd3gxrjcf64jf300dsw,22329 +umee,umee1caw7s809r7dlkzt7rv2c9km4p94sw9wq6y3apz,22339 +umee,umee15c0205n2lus0hke9dahc5r2l2yx0qh8r9n99ae,22341 +umee,umee1f6xwjdp7m7el0wjpsuzguzdkezark982hy3vc3,22347 +umee,umee125g8ggctyw8d372u6nc9k94yml9exxkeump04n,22349 +umee,umee1jlar5wv0ecjly2v0d72e2y9uguw2sx255f9x6u,22358 +umee,umee1geugltg0876v94mv242ktczv4c5syx6r8ddu6q,22361 +umee,umee1v55raag92j0wf36jqkkylnax4mfuk3auujy9k3,22385 +umee,umee1jv5pwm8pak99x7rde9f8ujj20vfpfqcmc5yxvm,22391 +umee,umee1f0ee68vad97eryx00qqt5klgjugl5v0rrufptg,22407 +umee,umee14tr8kzvetkd9lqmts8m8wa9cuh64q3r0q7s646,22407 +umee,umee1nfplw02aq3q3f56xykagg32l02xu03y7leccjt,22419 +umee,umee1xt2xhukjz37ze6mcfj3wkucfd6e3l4wrvfpakl,22422 +umee,umee1zsf4lp9t3c8lu7p4qspmq9vefmkmppuw989n9z,22430 +umee,umee1p2p37py0upa3q6nwuqryya32rcgrj75lqxhmt3,22464 +umee,umee1er0xcycqxgll2zshgj8z8fxde0y409tt6k0cj2,22470 +umee,umee1gzkvnmuyf0d85rc4lzpxwkzfcatehgz9tdng6z,22471 +umee,umee1cps9txnk05lj9htyk5jeyvwxjt6e54fxam27vz,22474 +umee,umee18dzg48n7kmtzyjvmcjfquf0j8xz6gmpf5vann5,22483 +umee,umee1zdap4hxc3accq5lfj04ey4wed3up0235q39v4p,22491 +umee,umee1uwrdtnk62tm78xk7jsc0s9gaue29h7v8te2m0k,22494 +umee,umee1l7pf3ny0n9jg2ekhdcjq3c3l9q7mpes5n9nqs3,22500 +umee,umee1rxqas2m8n3jjvulgzsmks0ekzqp32arv3t74l4,22507 +umee,umee1v5qkkfj0rf5ae24aj6w8wyqjskrjmagn0mqjdv,22524 +umee,umee1yzvudvlx986er3snuhxpkh8wk22l67yx5mzh9w,22532 +umee,umee1jgeqr5zvhyz344htwge70e2eaa20ku4q7jcnut,22535 +umee,umee1djssj3erkjh9c0ha6da7ap473kkneyc20dsjma,22555 +umee,umee14l4s0t4d7fqsv3utgr7n7vd7n8ng23j7ruax6p,22558 +umee,umee1752969cxdh86xlkzr6glzfan5d0hwhzsxl6hu2,22573 +umee,umee1lnvz5ldj6g8z0aaa4puz8aq5s8ntzw4tz5q64p,22582 +umee,umee143c4sr5n862k4rzc9nrxwk4acjnj7jy838nqjg,22596 +umee,umee1r4v9t46zyu6df0jwtmtpn0pq864dpn7cxx2zsw,22602 +umee,umee1z9gp4c0fxpn3x3vtz34pwku77yrfewqlgnertc,22604 +umee,umee13yh4cn2r4t2zam8c600d7zakd869pxa9le0c8v,22611 +umee,umee1r2nujddqfxvw3nuvdfgsnskxgrdhpfz7xtwrzk,22619 +umee,umee1uvfwsp3nyx4rlzjcscmxlk2mh3twhwwt0cwczh,22630 +umee,umee1wlz3f3c4qdl8nk3awymhz454459ptrpakl4zxs,22633 +umee,umee1slchvtr82c7d9vfhg8cwfag73lkxhy83wjtgnq,22649 +umee,umee1u6uh6nsphdfmevk7kvp409jwmp60x9fl6fzx6d,22651 +umee,umee1tncg5jw23ks4qts2psafflerpqderqre2zuyxh,22661 +umee,umee1dp3qeqpvgfkh7c07vn64m0kj7pps64zthws8kg,22690 +umee,umee1404zxd8qq40wgv2hrzsxak82f9phydeyhatxsv,22693 +umee,umee1pga2jwxm73l2wfhfyt7wjmx2fs3637jd68z5hl,22705 +umee,umee1rtdhk9vk86dzgtegratx9rar3jxffcullaqzph,22706 +umee,umee150g0vawmsn7622lq2pppedhgelu0nfpgqt96r6,22717 +umee,umee1xnhkm8nsclychtangyvvjm4as8umnnqnl7pgjc,22724 +umee,umee17hpz33h3rc36xd5jt9mv26r3jfprgzcl66te4m,22750 +umee,umee1uy7l7r6enyf8824sjmqxer205vtxaeu8pw8t8a,22750 +umee,umee1z2j5qnujajl2l7fepega92kfqcfrertsa2phu4,22760 +umee,umee1l4ppayd9tdwlxnz6744vxkm5d3l8z70z6kr7x6,22766 +umee,umee15dr0zpmg6hpeuuz0zftg8ljkgru9hltsr5p3gg,22767 +umee,umee14g96pexrysxmfnx4nkncrgu5d6lsfq2fhmhndh,22780 +umee,umee1m8nrmn5ykxxzeqkkzq4ztms9ceccp972q5a7y9,22786 +umee,umee1x27raq8rzdu9dx7pkv4f4vw7wk8qsuhpvax6te,22789 +umee,umee1wkc3apjtvtasq3ncp0u33v7jg09gz6h3xh2tz6,22797 +umee,umee10z2z0vpjyf7zshsvdk3f3y8df0sg9g34w8cqrf,22801 +umee,umee1dtg2zjya66mc4asrnhnw562je2dnhyhy5qc6kk,22804 +umee,umee1300fn33a5xfkaru4dmm6ns2vy7l624wdryplju,22805 +umee,umee1rrhsawj0ywga33apapalkhm2r9l55zjjdpeqj7,22816 +umee,umee1c5n47shs5rt3fzkr02t30e9n774t4y9xwa65rq,22861 +umee,umee15czqwmpatfm45qc4tmktjgux8mts8ccv4u3gkc,22863 +umee,umee15k5k2xsytxrurusjm7c8975aazzt3s0ep9s9e4,22868 +umee,umee1phtv7xp7nvhs7apfw2mllnazzhu7hdnta4ee4s,22874 +umee,umee1r05pf30c9xtjelpeuun0v7ufrx4vjcake8rjfa,22876 +umee,umee1g9cdvfh0s9zfu8rmjq4sugtujg2ql4yvnft9pp,22885 +umee,umee1dg5204xhsrq63dk9yk3gqhj5kl9ghyd5xyvfrl,22899 +umee,umee1lhus2gfmhu4qpgt6jk4r9fwr8drhtevplyks2g,22909 +umee,umee10w7l48rsv0kp9rdut08rhgp43543umjf58xlva,22919 +umee,umee1ytpu4pljqzusafekmd5vqy37emqjtvj7my8r7d,22922 +umee,umee1vs4ks3ecugslsf88havs0zp8r8ds8q02hhw7v7,22941 +umee,umee1wwzthqs36fkwl6k9sygxxua0ml87j4enq5fw5h,22941 +umee,umee1uhyhghdjxr24valyxld0vaaf2g4g6cpvkkaq57,22943 +umee,umee1h4d2k0fhv4ta064t86k3pvsrf7gajf0u7yjn39,22959 +umee,umee1af0n9p42djkssw3x3ekqm64wv6ruyq3lkx38ll,22968 +umee,umee1cdrlmz9gn9nwrnmp7sjtcv5dr0euu8unzzvvuq,22970 +umee,umee1m20f6gtq8rzhgdxukv27g62jve4ej3revvk94m,22977 +umee,umee1xphpphgtx97mej6sd2yykmxv8dsue6at784ux2,23011 +umee,umee13jaeay0pfd3vz76aek7tef900qnsv8dvqjzreg,23020 +umee,umee1jd30ke5kwk0prypp3cl3rad02dgqlx94enchld,23023 +umee,umee1q6glv3ax7c5dq9tf7cjm6azsrgyvdt86fae0fq,23026 +umee,umee170h7lhpw72hyu463cxwjhcastd6836df2dc0wl,23034 +umee,umee10qwnc8haf0qran67w5x3prflq99rk7aakdqej5,23040 +umee,umee10m4he0exsjjaaju7s7sm5w8ekuj3anr5pfxgd9,23043 +umee,umee18nl5lvh97h52gtwzzs4dp3mhrpcsys9ak2ax3e,23059 +umee,umee1svg6zgjfek53rpd6cpmrupu47v6zpdrlvdkmj8,23077 +umee,umee1l9cqrlfnnvancudsp2wutm9jvwf749vvr7s47a,23078 +umee,umee1jn390rrre84l5a0sr069guufuewzhgd4qsqywr,23086 +umee,umee1h7rujzt9wkpkxzxqktg5z9q709z4kf67kyxuzk,23094 +umee,umee1lwhj4vqswtjxzk68sessq3czwv0j4zw7aqnj7x,23114 +umee,umee1ufvsy7hv2pkhrmw4n7xpgc34zwuht3agrp4m33,23129 +umee,umee1nt09vmhk5hsqf65mrjhgk3fwxfluh3edkqewg0,23133 +umee,umee1zl0wdl0ar3ekg7vq6h72v2k9nf6sptmczxqrfp,23140 +umee,umee1r4pvf0vkgvac4gryv28fy2y0km7yfg94zym8uh,23142 +umee,umee13tjptrtm8keernvx5zda5xgyz0fk0z6wtan5hv,23153 +umee,umee1jt3zwvwwxmchlcdlk95m3nvl794rkq0whzkkld,23153 +umee,umee1xexr46lqls32vfkpjdk9pfkvt42su8tq22hn7l,23160 +umee,umee15wkvm8y8lrdeh2lcngxrgje2t59mjthgdfke8m,23185 +umee,umee1enyx0v9qf26rd3edtxd3vwyc28mqm80el57g6u,23198 +umee,umee1n9empv5jtxr2y6la9vqd7gxw0yeaase2f7460s,23213 +umee,umee1jnersgg05x52a4fsm4caas5n02vcqsxq4xys7q,23268 +umee,umee1ykfy75ggq8mrrd48uph8ysdxn4f54h4gpkck0y,23281 +umee,umee16nh45g6mqrt4jq0escdx9a0apdtfvqa3t2h662,23288 +umee,umee1v6effqrakcls2z3s6lrmjanssnkxvtwhkxjsmu,23292 +umee,umee19f74axg52cxmxkvqx36c3s2vp38mknmzmtek97,23303 +umee,umee1wdcry7p5l85935a3xjkjdzrk6ngpyqufzessvz,23308 +umee,umee1572f07js6gnnd9p0fer9c87f5shkr05dwsxxw2,23313 +umee,umee1vatkhzjrzvkt259wn37r30z2z7dx9vgh2p2tmg,23314 +umee,umee1eqekt883kkdka52jvrswq5pthpmz2x7k8uvmr8,23320 +umee,umee1ek68kjhnkdwpr9ev6aw7ywa0yznedcasmmudxm,23324 +umee,umee1qxnvszz0j2j7e2lcetlslwpwd9g8hp2huzsl9s,23331 +umee,umee143w4snm23cnlyjyrz2j4y0pagy7qu6k44um548,23333 +umee,umee10qwu4akv2adplthf9yv52fnu425ae7e2m74uun,23359 +umee,umee12dsya9fh02csj7nzd3k4z6jcuwgzw8f0u40jzn,23361 +umee,umee1xyt9ksphqm3l78uwthra5t2v3wjkfz4vyapshc,23362 +umee,umee1mqncn8axs7gudcajxr7utzwxh83jzy720gfkyr,23363 +umee,umee1u47d3847ls4c380gkczhhspcx0ja4s0c7h6hl0,23382 +umee,umee1830qqsaseuk70tl54gxagf5g97tn795u5gfmv2,23414 +umee,umee1naskgum2caddmzwneq690ztm97e2dma42c7v4d,23415 +umee,umee1a996z8pk3xgnr7gppzn4tyexfqegpcx2ehruzg,23421 +umee,umee1xx04j4hqwnxnmah53ne2etedaq57v7x676htvm,23433 +umee,umee1za82ktg4knhvjf8l5w2x7vzkzcj7u26f0javgn,23438 +umee,umee16w0qjk4qar8gvz0fllljl4zve0k30z8wraxg63,23438 +umee,umee1dp94560s2js9jy3hrmuvqk0s36cd666ypeufvs,23450 +umee,umee1xz436dmuxuzpdt4a08s0a7z4tmc7806cx0awn5,23456 +umee,umee1kc9r3ykkv9cftxnrsjqsd70md9xulca2g6wr06,23457 +umee,umee1m45ncn9pjcs7dfpken79amdmhjth85qwfwrfkh,23494 +umee,umee1e2f56l4v2r9uvcu56kphtm04lx5ujynx94nvla,23502 +umee,umee13n080myq5az7x2tffz4q0a5u2nnpk55mh9w5ul,23502 +umee,umee1psjh36qt33rmqy6h3tkrgxvez5pn7z4949vyls,23532 +umee,umee140wsr7ltl7trk04rdcfa7z2wk4sjm7lvqpcprv,23534 +umee,umee10u3dkelryhl586f007h2ufkdf8pe5z8cgmhqtx,23549 +umee,umee1fnhk89ajkl05lz992fmv7dx7l0sn93kjag7jkd,23552 +umee,umee183nnun3xl7amzskn3apmnx7h6gwr427cw9d6tz,23553 +umee,umee13pjyxnhnsws8fsgmd2eg3y48wd6vkcaj3nfxgw,23584 +umee,umee1twyt308kpr3e5lxadllguzfz9mh4ny5z0pluml,23591 +umee,umee1678dm3re67mj3tjp2vrdn2n7w88swa3uuss6tn,23610 +umee,umee1l6jtgcqre929wkr5gs5mg2sutl7n4n5fs8l90p,23652 +umee,umee1pec5vuwtgtfmfga5qj6hyy7txu5g4rg8vha785,23662 +umee,umee149ll35ul2en7tq47lz35ysscfw2glp2gg5x8mx,23673 +umee,umee1tnnrk252p8zxruykqtpm5sta7rsrpchqah0mth,23682 +umee,umee1dkyszsltef808ckuac6jj62s25sx3qjsvantus,23694 +umee,umee1gdu6sllz38shehcft3zcgcj96a666t5juuvxq0,23700 +umee,umee13l97mgdur3frashec2yj0dnn4wy75pycym5zez,23703 +umee,umee19pphe24nx79m7530h0dhtnljw27hu3wnh3eweu,23723 +umee,umee19w5us7f70yatyr3jv67pt6vs82uemsshv0ykre,23753 +umee,umee1j53gje0rp3gds7rrzkfmydamr4ad9pp7ltw5wf,23760 +umee,umee1w80wr28cv3s0p72ug74qge6pcal5w34gdhjqmp,23773 +umee,umee1mq5r0ey4mlqqfwk3yfkxecgc49q9nhhtlyvzvv,23779 +umee,umee1428v3gysc0qfz966pvyrxmrsz9s3k5vm2jvzw5,23792 +umee,umee107kdq7c45l3hh2f6fx9w2vrexen0ae7qzlmcaz,23794 +umee,umee1zpvu2n9ep8upfkca3058gskxla38l7ukcehyvs,23796 +umee,umee1765qay3p5qgaxzehssr6vjp5e658syk07qewpa,23804 +umee,umee1mur2ly0luf4nrhswnnjueu0tmq7xdq2eshct7k,23820 +umee,umee1c9e3fuqlfj8qd7r7arxlvnzusgumf7x4ualhqe,23834 +umee,umee1lvtuxshezha4kyry3gv52yxf54nz0qn9pkyam8,23841 +umee,umee1drccaam3099tqrer7jzly55q4j873x5wk5vrv7,23863 +umee,umee1542fw0xr04t7nf2wq6t2a6urusw0muuhwp2a48,23889 +umee,umee1w4hk442qrdzzczhttqpudgw0wqzkjxz8xxa58f,23891 +umee,umee1mrup9dqx5r8yxd5xt3q09etlfu6uulkzpnf4x6,23894 +umee,umee1j9tfrst8ehvp0pvdpu0fxg57w4lqchnpdzdryn,23900 +umee,umee16jpptxf42hapaaugw36q3j49ackrvsvfxva9d2,23905 +umee,umee1820wf6ygkwyg4jp8s2003lqdv5qxk63rf0cw49,23910 +umee,umee1qdlug9864zj5mh76p7n70f2pcn56jfgt8shz3w,23933 +umee,umee1ss2vt49m35c3l3ejfcw50ch9yeqp58924n0zgf,23946 +umee,umee1ga8nv7ng4955t2y4anxwrhp7rkmj42l67nmz9r,23965 +umee,umee1k5w5fpu3qt4va27vsarddnruumqqprs8y72pqs,24002 +umee,umee1t66d4thfctrksdkdve4y7r3h06e5llwgdrh0pr,24004 +umee,umee1w6w28cgnycpqc7usjzv6nhuz2ylqc4n7zjarhg,24038 +umee,umee1ltcwnf2r04cyry55nq2vhalmhezaudg6t307n5,24055 +umee,umee1nxdtqzfnhcrzhg0r9aqj45uz7sarxhjaz96jns,24059 +umee,umee1u444q6d0egkjxvvrhag2ppve68w23enurj70hg,24079 +umee,umee1nctr3xxystqv4a258vurjafst4xlcm4aqrnd99,24102 +umee,umee1zn2a0dv9rxwr4xwcllv84hnq2kmvr6nz7ar8ny,24111 +umee,umee1894xs55ka2jhu7e7nv062hmcn0uvc4v5m65667,24115 +umee,umee1jpl8fzvc8ez0tralx0ufpa4z6pndvzug7a7qns,24119 +umee,umee1rnpaumea3jm8tj6lqme5qpmx6a2rcegx504jv8,24125 +umee,umee1lvhxackp98tgagt83c5edjcnzxp7uzrsug7v7x,24128 +umee,umee1aep32282netkv6qtx4fxu5cfvum56u09jdgcju,24147 +umee,umee1pne2ccrqeh36ap3yfv4j38pk760xxpvz77r33r,24150 +umee,umee1rey4tmpsx5rts633f4xwj4qpm04k0h8825t8p5,24157 +umee,umee1vtxz655q4fps5sxvnmld0ek4q2rlksxkevh84z,24200 +umee,umee1z8xej9jymn433hnljxvzm06lls76pzwrax83d0,24205 +umee,umee1ejpkxzd8v0xcratx95tmumwjgyj62t69qtx5we,24210 +umee,umee1dl00mhmux79tn6py7dujmrzrxza07nucg2rz05,24217 +umee,umee17z5qtgpngyuu3y3x8dran5re4adcx53lrrrw20,24225 +umee,umee1fqyyfkusvpqwhwvevys7wscfceejpw58xxjcdq,24233 +umee,umee1cuu2hqvr5c6zskqk34g0a0l54zzhkenqaznlm2,24255 +umee,umee1hcz47rgrgthxs9f0y4zl4rt2qqxst37jczcdqh,24283 +umee,umee1k3k2v2kg2ddyl668as0dl3g58m4a32rnw4kyvf,24287 +umee,umee1ncgjxqc0cvhe6ecu2n5jy6v5qhzul5pnkpdpje,24300 +umee,umee1la99dy28y6egfydap0lv7qmef883yt2taluk3a,24326 +umee,umee1kvxdue0rfh5tymk4u9vr65erhn9p9j807rqlzy,24331 +umee,umee1krzwfp69x0fqe2903x36gkpqlmqzfgv5ep6mda,24350 +umee,umee1uppyt6wazc9e0m224qhkmkaxag6em0lc03h4qg,24363 +umee,umee1vhknfu4tctkgl5yjkgh8shrfhj0cvdam3xr2mz,24375 +umee,umee1en69twaxmv7xupy8lq7y539dpecx7yz8e2ltn7,24375 +umee,umee1d0jgtjhcdx4caa5fsdj4y699jhj7kffzwyarep,24400 +umee,umee1sx3tqcz6m0m2cups6f6nr32htja68c36a5t9nw,24408 +umee,umee1mrf9qsnvlq047rscmc6ftfst7empfvlkq995rt,24429 +umee,umee18ss9caul5rcdwg7xsxkmq2n365r5urz7hrxx2h,24448 +umee,umee1ugjfjhvpcqncj38d7v0dn3ww75uaaj46sqfrj7,24450 +umee,umee1j7u72t4jfwxt5z04uwvf3s68zmaaxqxc5hl9xf,24462 +umee,umee1lkqdk25gutkkuszxz8q3u559e0a4cvnmskpyvc,24463 +umee,umee16zs53whzuydl50pptd9cx8w5f22tfqa3ndszlg,24475 +umee,umee1htl3pu05qd802jte6mu5v8evqycxluvg3ucwgk,24493 +umee,umee1cq6sa7r5ysv4awk8yd4lrv6jcmgu37x6anunqz,24549 +umee,umee1xy4q57rzp4mr44wzwmqags4eq85tvd568s9efd,24551 +umee,umee1quwvcyhrqqu2zcx4g4v3ltfm0dlkeqpadrjv8e,24556 +umee,umee16pl2u0nnk6juyeda55j0scp55de2avymuysf6q,24561 +umee,umee17nr2asjfrph0vm0nrhaff00yn3c92xmdads637,24574 +umee,umee1jwdza2dmjatrng6ptyy0gdeuwpggdh3rvxs2rz,24581 +umee,umee14nnv9lzp0zkcfxgudmyzqtapge9k6z2ulm8ujd,24591 +umee,umee1024z7lqnq8fxlzqulanjqks4m6vp5vukgmgud7,24596 +umee,umee1nnfd4shryps2czwdrt4mxwh0jzh5yuhv0nydwy,24618 +umee,umee1rw3rrxyhx7xr7tfhjkht8wf7sxrlllmfv6jylj,24629 +umee,umee1nn2l02gu5aem5kzkv64txpyh4vr3t2up7u5up6,24677 +umee,umee14kfx5ph5pc207uc88juwld67p2kfnw7qdfwk20,24704 +umee,umee1yt35fqgj6l3dmgs48uz8t5jt69g5van5qge7ax,24708 +umee,umee1y3sg7z27y7kfvtes97xunv0qpgl4cl9x0zy224,24741 +umee,umee1n07ug978xc8h5x5u8p33jf4weu78zy8nd6gr72,24759 +umee,umee1s4w0xrhlyfz6lgg6qr8t0sp35d386056yjvsfz,24772 +umee,umee1m0ygam32rpw9ccdf49je6k6r0jkkw8uxng7krc,24774 +umee,umee165khu88qqx838nl83kljw062n29hnzv5szdveq,24783 +umee,umee1d076ek2e7m24jskmlgamv7kut7df892tyxj8t0,24801 +umee,umee1gr4xqrhmn44a7uu4ddhdulyrngxs0w2n66qgnj,24812 +umee,umee1k8ggsd5wlnq6gmfwrw6vpljnll43548rfl69st,24832 +umee,umee1ywumjshxq988wm33ymgak4f3sq3e57aqqgd4x3,24834 +umee,umee18e9v557t8f5jpd8h9lg8ygh4ptma569lz5vrlt,24836 +umee,umee1rx26w62w4g0mfufug7jf0hlr7glxrytkfgftdv,24836 +umee,umee18t7qytg9fdgklzac9lm4ym0cjxhjcxsdeyqmsh,24843 +umee,umee1vy34k8jq4e6hag26p6v87rfrjcdzpqe2dq2zp5,24852 +umee,umee1vs6pmg46ma32e2qaylxylh8vtrcqczxzqh3xk3,24860 +umee,umee18z8f9gzt42ekzwd60dnzlthzx8539nrsevamg7,24873 +umee,umee1uc2vjzyu84hrn2ppasjr9a6x8d39gg54z0kd8n,24873 +umee,umee1gdzj3yvl00lwe5aahu54qw57ftchxu8a3q2utd,24890 +umee,umee108aw7lmk4hv54rclmwzk8mr588m9gv7hwlv3xp,24907 +umee,umee17n84fadxz87slputup4p9wtauqak8f2z4npttr,24946 +umee,umee1l6r6je8509d807yqj765hy3ysfusy3mdt9j88f,24988 +umee,umee1f7xpe7uzcf9sjapqvccupdl396yh3d056usfqh,24992 +umee,umee1tp9cpm5g522tgcuxg0wn7n4ld0ecpqtehs8fr8,24994 +umee,umee176edl229hrqm4nfa98lfevu5af3rkl4mkka4qu,25000 +umee,umee1ftk4p9a2yg0hxja9mrlahrlrzeatd9jw3vsqtc,25000 +umee,umee12h4krve2t7fwcxlte625u8fsasttvrqdnzq30w,25000 +umee,umee1xf4n5alscmyuhuyv5elnpns38lf64u8yz5f62m,25000 +umee,umee1t8v354fhc940wuzw8s639aqcx3x7mla02p64cr,25000 +umee,umee19f6z7vyjvap8sjt7u0ad3ag3kwdekssc6npyas,25004 +umee,umee1m7wr3acaa4ren3df4h8m5ljdwj2cf733w5anma,25007 +umee,umee1qcxx34qpkyph27v42huhk0nz20msud4r926y2c,25008 +umee,umee1nm7m5u8jh7720778ymkysracd39pyj996xafxl,25010 +umee,umee12ryep53js9vvmeh3029ya8my57zx64tmnctkgg,25011 +umee,umee148cftsa89d5naw8660uu2rr6skdwulshmswmqm,25014 +umee,umee1n6s3kavlxd3eka6guhzmwmpvxgltsyrsn26sfm,25032 +umee,umee19qw0zyu60kyg2yxgz8nsccelm2mw5mu7a958sf,25034 +umee,umee185p6x2xvclccwr9jvc9qgtysjlfhl787cjch5e,25035 +umee,umee1waxsqccuuwngah8g58mr63sgdcttn87xm6s8du,25038 +umee,umee1dysrhemul95nkwy275we9ne0g4h5gcv2qw6525,25066 +umee,umee1xxk6artjctr3fgurh4p7mwgm0wyxy4yp2nhan3,25085 +umee,umee1fvdl9ezqpmc7845gnj609ed9gkjds527y76xg6,25097 +umee,umee1w0xd6nz03f8xwjfsskzc8tcenvca6he4qj0tm5,25105 +umee,umee1rvd2zehlx5v00634j57kl0c44eryttjyzz8dcv,25113 +umee,umee183p6553jy2sd5c8ftechgzs24d9pmx99m6yyn2,25120 +umee,umee1chepc62mh9ukspw5tatwhza4zrufatcwaxaew6,25127 +umee,umee16q2pgfxmesepqe2akyz4jqepludptknqsjj5qs,25127 +umee,umee14580nrkewevhm08m2ptszc32l79j63lcrq9d4g,25132 +umee,umee1q9ejzaxyczj4mn4snjp55lg4ncge67q7fv6uyv,25137 +umee,umee1cm0vzyycqh7nx7pcm7s44jgjhvdqmqshfx7nns,25140 +umee,umee10agacq7ltrau08lcvrnuu2vj9xldhfkdzqxyuz,25144 +umee,umee14ear4rpq5rz8rg0e8dk3j25hm5u08n3wzcx7l9,25150 +umee,umee1mapsczgyrmgflft8389xjj8t0rrjlhy5h4smky,25150 +umee,umee1p5ycyn76q9vkasz2qerhdkd8u8t7fcxxr4um2n,25159 +umee,umee1dgmmfk3uqa9xj7u0y3rqe6xf6ur2q39020l9ls,25161 +umee,umee1vzt2vekuwfc62vwvan2vw6wlgpv7xkjuje47wl,25161 +umee,umee18wr3q4p64d34srhlt4ahnf2hvv4lmu8vyj4d8v,25165 +umee,umee1d6ec9gugdkwyqesyrgcceez44e6kvxv2grapx6,25167 +umee,umee1vf56k4xykg8x03l9u87fre6epnfw48y3kt4jdd,25168 +umee,umee109gh8fg3az0txzzvzr3h4chy8kjrahxx89yq4q,25179 +umee,umee1gm6cen6cavtxrdgws5egvfq3pgsym89qz4e728,25190 +umee,umee1tnflx2l0xcggu6ksh86t6876sujms95q9kje57,25191 +umee,umee1qzmkwcyzj3488u2qhvx4vg6uxrns6ny8f0krvw,25206 +umee,umee19c8dyxn4ddnjcxfyat09e8yvvg3cjjmhwtutyg,25231 +umee,umee1xc22k767rqw76tzmnyn0n7jpr6776t0s7r6tqe,25259 +umee,umee13p5g2xkhg5ynh8a6g7xrmasvq4027j6daawfmt,25265 +umee,umee1jg8ma406gpxr0xdsuq6pkuceeq9ef6ckft92yw,25270 +umee,umee1t8w4k3xlmwy36kmlc382z2fdhydwlvc24r56gw,25279 +umee,umee1j0z85jfk88m9nlq0nr7wpwj9tl3j4ffk2vl5kg,25290 +umee,umee1hreup2m6kjxsw4cn9eykg3geynqcnz2emg4jvk,25290 +umee,umee179slegfzxfmxtekvl2l5h9edndensxvndgqhv9,25314 +umee,umee1clavytn9s5fj9fzdywr402pwk25qtch8vkg4eu,25314 +umee,umee1xwf70tna80n68sd5m0c5nq468dzgllt4d063hr,25318 +umee,umee1t03wwce078ta2g9gcv5n0z03pl0ykal4064p2y,25337 +umee,umee10pjj5ye6spe7vgqcph2exm2pcx4m5gv9qmnxyt,25340 +umee,umee1fxzh9v68m2uuf38hnhrnymq2jheydewyd8clfa,25346 +umee,umee16jmsm0f8ptja99dfu4xfwy8795yd42zhj4h5ek,25360 +umee,umee18f9pdz9rdsu0lk88x2sq4ujjt9vve5hrp3af2n,25377 +umee,umee1lsnf9f5hd8gdvyhxzfczk9mlggwct29auvax7s,25379 +umee,umee1qdcsdd7w07skq76x5r9c3z22nf9rq3hkj5yww3,25385 +umee,umee1axnjyvpkt6qa8j5kwgw9nq048zekpyed4dkhrd,25400 +umee,umee18589sa66fvhleskyz6fv7u6j0e6rte9xrunt6a,25415 +umee,umee1zucrfhvva8jj98vl3wvgs2h7yslgrptnneata2,25428 +umee,umee1e86u57464w3mxedrzm3chatvcd2z89axxpds9s,25433 +umee,umee1d7gqcq7rtulqf6m0nthkwzfw9vg9yysw3ugwrt,25447 +umee,umee1jrddxmypm00j2emxxc6lzf6werhppxy8fjz7ln,25484 +umee,umee1can56au9nmwv8c942pz0jys4f685hjcwna7jh9,25485 +umee,umee1zt6dnk4fpaq94lfpx00hx26j8ue3dusewh0z2x,25504 +umee,umee1sjrmz532k9hlda3pwr9ge8jvu3fe48lpqvw4x0,25519 +umee,umee1ln5h0k2y385jcrsm0p64hycjxjdppnlwcfvf7t,25520 +umee,umee1c43taeel0e6urgxgcmdukug52hd475ugsmrnwa,25528 +umee,umee1e0dztftych4ff6n54dgh3mg0lhpqkunk0dq2dk,25538 +umee,umee17p922pqj22jduwm8ft85rfdmxgp0tu767m4mys,25564 +umee,umee1kxx0ewkw7n7gunn0scts56ney7ctgpu4lqjpd9,25575 +umee,umee1x44cmwac7vlndcf96n2a45ugyukgp9kqreukuf,25587 +umee,umee15ku9zteecvfq98f7efd385rn2w4ducud2sdhka,25600 +umee,umee198mp2nyzwshjrytzw6g6tuyulkvqngtwjtm9ke,25603 +umee,umee1t45w2vpxd5vhmrfm5fey7k5tn8kksr3vyqckh6,25636 +umee,umee1hp6uq2hcyw8h2hnkspqttvs3ur49l0vsqzn6c2,25657 +umee,umee1gmugmaneje2ahhem45fqgaaf6hpdj9skd5w4c8,25661 +umee,umee1wu4kawzdqnklqy2m43glsztrqsuha5762fum5p,25691 +umee,umee148las3576hlu4xv22en8gnha5np2qe3rjaap7n,25698 +umee,umee18rlltz9kn9w2h723ygzl0wvj82ntq54fa3puqz,25721 +umee,umee14w4lpj9xczgern7e6ztgcahlk675l6w7n7h5yq,25760 +umee,umee1x29wv7xhk06hq0ts387gy30p4f93f39ay53w2n,25765 +umee,umee1jatu2x438tvvl9s87lxjln9tumfdwg63946lt5,25782 +umee,umee146qzacxf340n3cvhatjgeuck09pp2etarv20vf,25788 +umee,umee16xdfg0w02yg79m7l4jwjsh9mc4v096zpfw20gq,25807 +umee,umee1gcpxfg06655yxnv3gg7uwasuytl2a5rtw7gxt9,25809 +umee,umee1zzqdc66c9hrnsw56c05zxza7e4ktdw5f0p2yan,25826 +umee,umee1z7v0x353y86ad205e4wrunprymjcfw58s604t2,25836 +umee,umee1m8pr5a9g8hx27nvd442sckkrfrrd9pzau8n0l9,25841 +umee,umee1q7a7xkaszvu4pgn6sqxuk9azlykmr9836fd3ww,25889 +umee,umee1fkhaqu0zegns6lktzcw6fla4p5qql24gj0auzt,25907 +umee,umee1v0nsc9nqzr3zy2a7fkw4qkvnzm7hzfsezy00t2,25912 +umee,umee1rchtfcfqyrx4y33w5ux092k0myedxha0eeufvx,25916 +umee,umee1ckzq7jsym69uxjkcmqhpf36w7rfwn0rxtzkell,25925 +umee,umee184cc9q97dn5t0vkchn3d4j9hxge4a029dx7ynu,25939 +umee,umee13kl4y9qcsevy8mkmtz2gpxfq0uls4d8atkszaw,25947 +umee,umee18lw5cz23q97wzptlg5s9l4nv6z58x0jycv8sr3,25954 +umee,umee174rnaccdyxwj5ed7pxzv38kc7u53uvkdf39c84,25969 +umee,umee1mgpjyev8c3p5hpxhkuyk046nt6thzev3ew3t0q,25997 +umee,umee15fr0awtc2wa0uvp0nutpqm60l3w76gk7mtfmfr,26035 +umee,umee1gqfpzthckxezyuwnlsd9jde2xtayyh9ltnm37e,26042 +umee,umee14fh0t95veyhve5rzyw9gmh8xarf2w9hlsdldut,26052 +umee,umee1hkdtynjxgu2ry5hwvr37mvatnnydnnarhyenp7,26064 +umee,umee1hpuzvp3sguqrwnf2094x57p2a9hrz95r9dvz64,26073 +umee,umee1rs5m7sqxw6ks6960fv60zyn3km2y3j2hj98dd2,26084 +umee,umee1pr97avak3g7rvhf0k9w93fwsqlr8k8ek3tlz0h,26092 +umee,umee15zlwllcpdwtxayw7g568kna7af0z9dqqnwq2c3,26092 +umee,umee1q8sr4fa72dh8yymw40qmwycdjvmg7h360c7yw6,26121 +umee,umee16vuhe5tk95f5lm38dt883f6sjf3mfe9sad88r3,26125 +umee,umee1f6t08wjat6qvwl9ek25uh42p0csn92r2jk4e58,26127 +umee,umee1pah477xj6zsh42a0sal4cqky4hh4ctz6g0l822,26135 +umee,umee1f4pxlgr7h3tx6xtzlq26pfkser6zudrw9duqp5,26150 +umee,umee1uhmj2m8vzq428d2axj5x0pkktt9ysansshthl5,26168 +umee,umee1w8fxd8l2tzdg3dqc6ag7ypn7xj2gy8z4m7lvpq,26176 +umee,umee1jj9xntqz99u6lqc5l6kzrq4nq6w5v00d49cyjs,26180 +umee,umee12lh5d9zg4s872mmh8yyajg69v48we44cuu9y8j,26181 +umee,umee1cpqhw6wyfls8nc9sdg67ay34fsyypamqw8ymp3,26197 +umee,umee1z4mmky8qer477jaxqztvphfdtjssx2dggezawl,26215 +umee,umee145agpz2wx95t7huta2dgxvxtzu6kykpp56r24s,26217 +umee,umee15su98ty3h2q57fvwuj2ftfrkmmr3m9ctxza8hr,26233 +umee,umee1sew7mzmzmrllrwaleaked6wrc45gref78l4g4t,26269 +umee,umee10cejlyvhwg8c0kaus73dkjyla3ukzfexe43k88,26270 +umee,umee1yxt425jn7rxgzagxlhv9l2yajkv6n5ht2uculd,26300 +umee,umee12ju6erx80tfljh7rxrgywxts8dhf0c6mtgjaer,26339 +umee,umee1vazrgrzr7jc9qfd9paukfsyu5elmzqkyvlev8p,26339 +umee,umee17hn9qerymgd6ns55y8etx3csgydfpmf69w6ard,26343 +umee,umee10metc8yl2fcekq8zue9k48422456zf50vkwl6y,26424 +umee,umee10xupqtff7r8u0r8zzj3ttzf68rfmhg5u2llm5a,26444 +umee,umee1q4f7yr4ct504dhf60fpnk3q0jchtqk4s4wf0z7,26446 +umee,umee1shrf7mhh5zft0cw2xcsjwqayg4vaje3r558fnl,26451 +umee,umee1qqjf24rfnvmq04wkexnjy8fq3w3wxh84y830ep,26509 +umee,umee13gt2quz2szzvkfypwqe3fqljf25vhuk9lmfx8a,26525 +umee,umee1t5v8s4jrqujt5dtsmxgrxu8kdju72hd89hxesh,26528 +umee,umee1ur7qwx5xmgw95j8k2203lg5ektvqp024t8j25k,26540 +umee,umee1tkp0pcwyq9kc0j0gduypl29z786e6z07dxstlp,26553 +umee,umee1j37aljze5knsr5rh6pr7wlfpkglx3vv49mh9rk,26619 +umee,umee1pz73wjtmllzm7mfz48vy8vg8pvhpldtqzcxxag,26625 +umee,umee130z0kfjk7k688hs65jyw9nzphxmgjm8yg5slj6,26659 +umee,umee1dkumj662slndamp8x3wqm23v4jk9v9azs53u7v,26715 +umee,umee1lankt34u6w7y0drcllw5afuhhl4q5tjsal72jq,26722 +umee,umee16adc4404fxfyct35vqeld042da7dqdckprmacf,26726 +umee,umee1ar92fmj4aphslnrveegkjawsv9ye8qjwa3yjl5,26731 +umee,umee1sr0qx6p8q339v2df8fuxvsrvmzu3mfm75kavxh,26769 +umee,umee1dzq9zplnhtutvrlzz6m7zr3pajwer4nne3zmy3,26799 +umee,umee1z4ndh2c949f0zk0depc05j9evu25tz0waskzgx,26876 +umee,umee17lamkd8g37ajjm5xe9hchje0ue0v70zrv75fxz,26877 +umee,umee19ghyeqvsw2kkym8thtqcs03kwwyy9tkmm58v20,26901 +umee,umee10evcgpyg2kfjxrpth46wwdfe40ce2cntsevn6j,26906 +umee,umee1d69ku8h9q9zy29psv9jy58956sg9navsw566fq,26911 +umee,umee1f3sak44pkjzhhh2zjrdawufqpgdmqdd5m3scw0,26955 +umee,umee1wy8f7ckwpckqmascd5phl6qsheh6lwztw82cpg,27037 +umee,umee1hxkdzlw3ucw56j3hafjj59cd9n03ge32essh4q,27037 +umee,umee155alcfh3jrzc4m6sd773deh7r8y2mlhxrjglya,27052 +umee,umee1xgt2nj3pyp8e894677rm07x50munhl8cpppc56,27052 +umee,umee1pv8u5y23yq6kvqr4rdxx9hgcqz0dkrgvadce8y,27057 +umee,umee1ymzks3udfcn5rg8n5wf9n47yw8jrz80fnwksdn,27085 +umee,umee1f8w5jn3hw6ltddvd487kqlqtv0czfa5v9sqfjs,27120 +umee,umee12kecvnu75l05sl3prxv5rt4xfvxwfv0700vm2w,27121 +umee,umee17m60ktdps5c6a3rmmclehq4k0vzhgks59nyyq7,27122 +umee,umee1mkzc35vkdqzx47lm6nqx8jcqydfgs6e55zur9f,27122 +umee,umee1e3juy2rx76juu356r7zv0f3pa8655pr8h03w0u,27141 +umee,umee1rtuskaddk6cmejjxva7hpgkd0rgxy2c48s8jve,27145 +umee,umee1jfc6t0zn4t57ks2es6t0dnjjt9vetj9ryfnf53,27156 +umee,umee1884qr2w3w0j0pccnzqgs4fnpqcuc9zpcyl47a7,27181 +umee,umee17er5mmchtphln73mq9jze4rw08ny97zlc4x6u7,27190 +umee,umee1u46sm8fzk2zxmnsg2rttmpdpznwdal3c8ywtl6,27193 +umee,umee1yp99vrwrzqdmfdj33w6mk7ztdl66j538asd00r,27200 +umee,umee1d4p0g7a9l53yrppp8vme460kcm32x628ls2sms,27203 +umee,umee1ud5jnu8uey2xw3q4e6lk38cjej45998w2c3g2l,27218 +umee,umee1s4g8nv48vc5nsvw8uqrnchq85nslh5htsg88w2,27254 +umee,umee1plqgqmjgnn4ta2h45g7hhrvdhv645lz5gz8v5q,27259 +umee,umee1y2m2w0g0fg3gdhsdz442kd3atd3npujh8nyn24,27300 +umee,umee1uwntnsu3j0mp7n2ey8k3hz8uaj2dpfrfka5f73,27309 +umee,umee1cnf2yf3pyjfjne429htw325myyjqzntp2wx9lz,27345 +umee,umee1q39x8unw4n3dr4nv8ph570dtgtk0raqvl4r6e8,27357 +umee,umee1uxfmrc4arhef2am55lxjqcr38sye2tf9y6p27q,27402 +umee,umee1wjfkhqu60d6qtl2j5dmwtv3tatvs7m9u6ze3m6,27402 +umee,umee16vng3cwfu8he7xfshssurcun35l5x3keulh37n,27409 +umee,umee1fclsarhlf9u4v9davhqsmt2x3jkvmu2n6xkgns,27453 +umee,umee1zka9w3l07kzhdk383q4thvjpfpsekyvxlsmtaa,27471 +umee,umee17y40f7n90x7z8dew8lux2jnwwjpd3qmqannaqz,27476 +umee,umee1j4c9v0lx03ap0rxkg2aqf2tgngrdam6h4t3ds4,27483 +umee,umee1tht0mf64wy6lq5axggh6j73uzga4mw5dn252y9,27501 +umee,umee166x3x35y8quex253g650z92gq667q2eul0jvah,27503 +umee,umee1qzal5s3kdt3tjjcccx06j4vmlwkjh5eypz346g,27521 +umee,umee1vuumtd5mqj2n8gvgxmhp6sajsnc05zdz96rju4,27549 +umee,umee1e7etyt6hemkhng53w9r8n8stz8ryderkqtyd03,27553 +umee,umee1q286n05jzrtke4n9qdn0kz9hezd3acmkclx5t5,27562 +umee,umee192e94ktgkl0l4069pqx38hen2e09c7hn0ctqqf,27570 +umee,umee1zsxh460uspxpgdzlq3s3sqku0amgkqlcltd5p6,27570 +umee,umee1wzcek2dshld4xxhjsk57sq8x5huf4zej8gmucn,27579 +umee,umee18wjg4amwfe4cge7ma5ual5av9ggrjlvl3r83p5,27592 +umee,umee1pxhklhyplnry2rq8dr7jjcu3yryz45uj3k4343,27682 +umee,umee14ajq3hrm3au9r24j3uv9vcaf7r9leqzep9zhcy,27684 +umee,umee1rcslt32dz0uh873jcvqg3qlnerzl78xsqrq6tj,27697 +umee,umee1l45jccjkshkhymwa7we60ehmuflcle589358zw,27738 +umee,umee145794y6a0qn2aay864z9qxm6urx8gkc3sxej7t,27748 +umee,umee19hy5d3ha8v8krsgu34angnephkfzvtg9vsqght,27756 +umee,umee1gfzyh2glaauzyvqcwuzlgc5wlr54cyp5pw0rp5,27758 +umee,umee16mcxu4yhg5l5j49tm00mvpv36ak2sjknjkezs0,27816 +umee,umee14kjpd0rlf6td2cnwg9n89zkgz2estlue4qu9zf,27818 +umee,umee18y290rvwpwjtnccuvfarc36x7zm9ngkx3djacx,27840 +umee,umee1895zf0j3sywfu52thalcjqdpjpa67j3xxcgmyn,27851 +umee,umee1mrjlxv4ehm4nyw3n8ty42flflp42a2v07c6ng9,27963 +umee,umee1p3c98yzjmttpxrky3yrqv4gns50tw2wuyj5pe7,28019 +umee,umee10ctc5em6d2mep4kj480lx8cs5kpmjjrse4093d,28039 +umee,umee1lud2wne200q4qpla0uvzx4fs2zr2z3xc9dd4fw,28040 +umee,umee1yz5spyvxg3k52jfmyfxlv5ynvcz06324zx9kvk,28063 +umee,umee17fvjw9gxjr56szlmtsdcf8mgdfr3ggklfn9zvj,28086 +umee,umee1u3hc8epj0833qefzaeu8z7uxrh6928lc5m85v3,28094 +umee,umee140zga3h52gvjd76xf0ml2y76slavjkjt7enh93,28096 +umee,umee1dr9vjjd2rj8l86gmmkf4uaz87u620tpgd2t2n8,28116 +umee,umee1qegml9h8ysr0lss04v0vgjhdn4lav99s5gdfsy,28123 +umee,umee1f4zk8rp8lp5ylj2kfas3zgs2twl3739zhs3ffl,28129 +umee,umee1xultm6ksek4u6wv3rkacy78zjmnwvxdzka06kl,28151 +umee,umee1y7l6th236vu8hwyd76dyzg4gl07qvtlc38fnxl,28171 +umee,umee1gklzj6tad9jzy0myxk5terwu8shl0cljd09dw0,28172 +umee,umee1a2j7vxy67stdutf9t5supna5swpzqlapkqlk5u,28182 +umee,umee17s3ycpjtlhtza27c37tzgdr8velyq7we9sdqrq,28250 +umee,umee1rxvrffz4272tc5jsjwf8p0lsflwssjkemy9tgv,28283 +umee,umee1qkwup8xfh7w3kcuzm7zm4z8fn5fe7p7k893p7e,28292 +umee,umee1nefqzz9plple4dvecc4pv5x8sy5zfu9xe0a6gs,28310 +umee,umee1385xktrgddp5sr846jf0ppydr772rxjf8pwyjz,28313 +umee,umee17k45t6ahwd8ejh08y7g2dc3sdl3y7uec8r5zvj,28340 +umee,umee1dracr683fwsy03pr9uymwmr744ghr7n9luq6e0,28373 +umee,umee1aljjgwpsxnazvj6cuywsf2y0drjrfm4gkayy6h,28380 +umee,umee1tes08l87gfu4el8f0zcwgjtm5fnunh6cl6t3ee,28408 +umee,umee1cpmdsg343perfssalcxzyjkyj6mlhetw03lpz6,28424 +umee,umee1j7zc48wxge2mvvwyx6guhgnwwxejyamwgfvg9z,28425 +umee,umee1nmzavxwy64efutq26k8h3u3scm06rjcwzru2rl,28452 +umee,umee1jzgsp895xdhqrfmu5sxc7md7v5rvt9wrecyg47,28456 +umee,umee1904m8fagk5slez82hk5rhq2gzwthf0va970u67,28485 +umee,umee1qpffafqhsk8ervrrgweavksx4dphyc23ktxwwv,28489 +umee,umee1czt3rwvse9hgvul0hzqujkjw6t6yacujcm2kml,28517 +umee,umee1h6a23mlx78w9zg5zz2vcm5qcrdjq2k9qvhdc2u,28548 +umee,umee1at089a3r9090y5p9r06mc8qlczawa5gpx628ke,28561 +umee,umee1uta2mx7jdxc0tydznryd8a8we6p3xntsaqxv02,28575 +umee,umee1l77f9r0ydyc3n6hrhr406e55ek5ghr8aqx0aj2,28581 +umee,umee1q58s6j6vzau40g6xgd5qu2ctcf0pemmtz6dnvf,28641 +umee,umee1gned3jhaw22v7rq3323cc0v2qtsz4749kdx0g8,28671 +umee,umee10clcez9vecm83e72pcya74m557998pu4fuvuud,28677 +umee,umee13a77e7w7q20nr9l2drucntpzm8nqeduqpwvmyv,28713 +umee,umee1mghq9yxvwfxfcpt8qfwef638cwsqy2s0nfwdt7,28730 +umee,umee16wmd4zf9dwz854cmxmn8nfrx3lr36fr0jmn7h7,28731 +umee,umee17q8ptrwc85pscrrzurzl2vfzfezakranzv2m73,28768 +umee,umee1jhugy3k5z5uw22gr409nry7xked3ptk325h7h8,28772 +umee,umee1phmg6k3yl6zk3hkkczu7rf86nhd00d90utgesl,28817 +umee,umee1mderzrzelpxeutm9h8j8axxe9mxhhe5mqxv870,28877 +umee,umee1jgcpfh7ft5y8wch47nasuwx5gkmgfkurg8nwrl,28915 +umee,umee19pdjx5ft8x9svm95f6teu25f570gk2akgmmyy8,28923 +umee,umee1qed623fekpht9k3tuczj25l9atpazkt8l52gkp,28941 +umee,umee1exuwuder6e2qkemmea4a22lgjnavfvs43spqrx,28995 +umee,umee1akha9fu3pu5v23qlf48l7tytljvhhlnmtx3rsw,29000 +umee,umee1rk07w97y9y9m85prnh98vqjajvv30sczxszz9z,29005 +umee,umee1fgv3arzrv4pg943k45j5dmlv3l6e0pckzcwlwr,29014 +umee,umee18tj7f8jcn5xahkf3cw9c5d8e56avnzspn4nxaa,29037 +umee,umee1p6np29ut33pdm2gvwvmh62fj4ddvwcv8hlu2ha,29051 +umee,umee1r32tuul4xcxxnynu6r5s29nwumrjjzk26n47pr,29068 +umee,umee18waqz4rs85azxam00nk4vcn8pxmueh82uv8w40,29166 +umee,umee1nx2eh5j477q5ahg9tmsv6996xgae253demmn4a,29200 +umee,umee1mum6ry8vv3q62q6qn7xr6ecyp569xk32a4xptc,29258 +umee,umee1a0ptus99dk3n979d8tq9vmg94p85msy04xn23u,29261 +umee,umee1agva8qecaarrfvvccgyt7ad5j0q02mdn9lkwmk,29288 +umee,umee1zmd2dgrh25r39f0rj404jzsq9trq76cd7jcmac,29290 +umee,umee1pd5v5cxftwvz73d7upc048ur40j4hjzp60yvs5,29309 +umee,umee16x8zn0wlnqw6amht8dpq4x5j6uj2ldeqj622ws,29325 +umee,umee1tr408rhszwyujudrmgglk78h69wuvc3txra653,29340 +umee,umee1vzc7sx7crc5ykg5r06k5kv49eux52gq955vfw6,29354 +umee,umee1udat6etwp4l7mekl2q0sy2rr7p5ws9lsxd63s2,29372 +umee,umee168dr5aphsnv664tj7l6xx5p0ata9rq0h6kf9yp,29377 +umee,umee1zxvt597nccntt2e62j8f333rtet74jlswv0nlv,29395 +umee,umee1swrsh0w8nf8v0mas2hy5p6rmdndfxl7ctma2vd,29404 +umee,umee1lyhe9syygu6nwkf3jsg6vs4xneqektltnlyu75,29475 +umee,umee19egz5xpsrkeg049t0cxwf64yckl2paq33uch0r,29482 +umee,umee1mvazggwzl82uzk92m5uxymm4jy69qr30slaxhj,29500 +umee,umee1f75f59278dvp2p8ca6m924jxkyd0hprgv5rr72,29500 +umee,umee1rsxcc8c37jtrwnfjvfwz9g559lkx954fqqqaze,29506 +umee,umee1nytfugpuvc6f2n2ry4dk549rnumtyncvm3rc3q,29524 +umee,umee1aau7cq2ly8sfcrjkkr274ec2e57s5q5rhyxmqq,29544 +umee,umee1a270sc5yculdg6yske97etxx762de0avzhtaq9,29557 +umee,umee196ghet2qharcahuzzk5l6dfvws6ajnrmc8vwtu,29562 +umee,umee1q9e3kdtv7u0lkek8huw777ukwvjpnggyfw32a7,29579 +umee,umee1rcpsatpcl0r3ctm6er47x4g0uu3awnanmpue2l,29601 +umee,umee1rcp29q3hpd246n6qak7jluqep4v006cd86ru77,29610 +umee,umee1mp3qf90lr9z6lcsm04lrf29vxv93l9jeyzl53j,29612 +umee,umee10yqc7t05dw9qyyu6hk78uh2kttmhx6mz49nuuz,29613 +umee,umee170hrhrajy48pu9cafhg7t0cleceeve9zn53hpz,29690 +umee,umee19lzt6frmq7m479zrq8j69vg9gm4w4ff5ynz4sa,29716 +umee,umee1xcmjw20rummpr936fg6ksa6zwvhm8l4yflcz47,29738 +umee,umee1ud4p9cf427hh0aw4tyt02ghprsl7zjtp8vgrnf,29760 +umee,umee1fhl3g4c5uf8km082yxg4lc5emx8wshuafeh9pe,29763 +umee,umee1ea4znw8y5ruja6jqvkzk9nfq39tz85vecclav5,29767 +umee,umee1mqfr3z6e5px7zuk93maxrpa3z20yh57exzv825,29769 +umee,umee1ef97akcf2k2mjh68dwy4nmtzqge8gw5jqzyjxg,29789 +umee,umee1faqm24yzk0dunnr99uvszes0shzqcsqe8mpp9w,29810 +umee,umee13zeyxk6hddyj66l5f9jz0xrfx9ntv7mngzqf5h,29817 +umee,umee1l2fazestm8k8a6kyh59gk3xet5m2s5prwcfcgp,29818 +umee,umee1k9m0q64w9ztyf5ylerzu4s0ckq423a0wdmf4tn,29861 +umee,umee1am4uagp0xwkw8cm7gxfcyxekw5wzemfwkcrgct,29868 +umee,umee16qmjz5cqtegkv2l600g8qxf7wyfagzz6tt50hk,29883 +umee,umee1e68ds5qu20wxjceeaefn3wxxd698kt97vddeht,29917 +umee,umee16cww2l4fkwwxnc38mhgsuq7e06cu380q8l5cdg,29927 +umee,umee15mc5cfvg2njxtskmth7mwu6fd5v459fg7kp9jr,29941 +umee,umee1s6p9ctplx50facz7zm0j0pj9822856xc992knd,29949 +umee,umee187wy2grtqlxpp6j3gspyaej3c58efargfrlw2v,29974 +umee,umee16cu9uclqjn2xpfy87smlueua32htu57g96zzq7,29975 +umee,umee190uhw92ecjglxdja0u9q4k3rhctazj4057rgl8,29975 +umee,umee18dz27k3ny86ht0yg7cgc88zrawpxf553qkj4kk,29977 +umee,umee1k3mz3kjd6x9qfnpjgmxff23d38d6mvtrx8a2qr,29999 +umee,umee1c4zg0z2nag2mw6yxcs2m70ypv7rfgn7u6zk4xt,30000 +umee,umee1fs8er0greualh3juwem3nfn4fzcru94hvws9tx,30000 +umee,umee16y8q6qk9yqpvlkpsrp76kjvw8864rn55n0euyf,30000 +umee,umee1r366asz9ctkpy9cz9m3cyap8n7lwgmqtdw67s6,30004 +umee,umee1tlap7y3vjffcvxfd244t48cqcrxq8xp5s475el,30006 +umee,umee1hmqcnuadgeel9f697hnfzery0lxpkdanuwu8jj,30006 +umee,umee1gswt7vyfule90v8ahac6lm7t56fqsqwxlxe3as,30014 +umee,umee1y8kexlwermn5a566a4asehnp7mkvmmspnslhvh,30021 +umee,umee15gp58a6z5zwzk6jc9zn45ukkfcjtx59ygmzz5t,30026 +umee,umee15y92r85ww9jyveg02qcxgfn3yqshqs9uc39he0,30042 +umee,umee1dnvthwqpd7vetrstech47scy7vukwed4hks3p0,30046 +umee,umee19kx2fx6ul0nqnrx9506jlyc6uznjvcdd620jy0,30063 +umee,umee19s839fk4cyk784nsrduuzchywcz9t9kg99kl3p,30070 +umee,umee1te64swqdtjkwlujn0h2dkayx0h6pmxj6rjm3hl,30072 +umee,umee14qdsqe89xe8t8ajtedy68kdj8u7gsp2gqukq5q,30076 +umee,umee1atvzzzac5n676jtxn7046x4cahhtmfvfsjpya2,30076 +umee,umee1xkzz8dgdhusv5zuhtvg7ucupkv65jz9xzqk7cq,30078 +umee,umee1tgm68zns6rn46dav5lmrxx40r9xu7ganva5sp0,30088 +umee,umee164waj98fgs4rnknrrcxgwdk50gx2rtzqd99hsl,30096 +umee,umee1cf3g0z86dqw25x938jwk9ay5huhx7v2ldzflde,30098 +umee,umee1lklhawmvz6lr24x4h2xpu2cgl8g9nvxxwmqhhg,30100 +umee,umee1wzgqv5dncj5aa0yqd32h2q8kd949kzpwj9dkqv,30113 +umee,umee1htde2rptr546vtvh4qjy8reazvrr30lcarugz9,30117 +umee,umee1l8pfkguyv7ay6h7zn5yk5tmlgw5pym59u55c0f,30128 +umee,umee107l3wwh0yd7qdn0sjhrg6l9suzl453u4kt8uhn,30133 +umee,umee19kng9n8es6u477tv658vv8sy9drhrqkl0wavh8,30166 +umee,umee1fru097j9knep4pxtaqfe5g7efq8a6suhhcs8xk,30202 +umee,umee19ux3r8wqweuqvy0k7d92w6lkx8z9h95aj68j8g,30242 +umee,umee1psdhnw746sej28ruup7uyk8ym227zl6ewxmd9u,30278 +umee,umee13k2rufwg6uxt3ec7hzktnl6wc7u96dvcjl2w3n,30288 +umee,umee1mh2yhrnj9fux3qwqt75aagznred6n7nzapa6ef,30320 +umee,umee1jpv8lhrkaqw5mznvx8yceh42p9xxaahqgr470m,30341 +umee,umee179zgh9lhvc0w2hynj0sq57yemkqp4newwju9v6,30341 +umee,umee1x6tsjwcdpra5tdeyukpmc9vh4lhqsdjtvjcc80,30355 +umee,umee1qzequjuf4ksgjs5gats0rg2z9j2re492we4qdu,30358 +umee,umee1h4v8jxrwzex5yj6d49jm92a827sempjtvxvqt3,30435 +umee,umee1ehp88jvxpu5ktkefzm6wmwwn8x43negmwqa3ud,30442 +umee,umee18dvapmactf0e9rnfzw0rxt27wz8q32vteh7luh,30461 +umee,umee1etj36y65h554w6l4uzcejzuzvhxvukuhe4w7zl,30492 +umee,umee12yjatldhkhaj9lzv0kwkr9es8x32mqhxn89l7z,30511 +umee,umee1y8sgavzw5tjxeuurj49a24kjwa4s4ly9jhrr77,30537 +umee,umee124xdzuv6ydhazrnjdxdcddyfkwfaa49hnxk5h7,30613 +umee,umee136tgsjyvf0gzk55vhhqm0d874urvvnpkg2t7gz,30615 +umee,umee159kkfts540jagtrtquyhta4sape42n3p8vl3xf,30616 +umee,umee1xpa4hxmx0dmccqd78hqc5mnwtkhxqg3peysk6a,30648 +umee,umee1vg0tvjhnmqtrg569x6ajxglp2p2edtc0z9tvsg,30651 +umee,umee1tvnl7qwgmgz3kj2jqc6a3u6zenlyrhcclnv0hg,30657 +umee,umee1cak4c0pq85c4nmp23u3lggekskvn9l5ygfsevh,30678 +umee,umee1cclvds6qkapm7d6m8akag2z2kqgqct5gf0ezg6,30702 +umee,umee16dd56pq4nvld79sxw07jfrkf4ru3fy4mnnf26g,30773 +umee,umee1mr5qva9r5nqcfv4gg835clfntrdcm2h5eprz5q,30775 +umee,umee1jhg7clrsay3m7wdpn8p359dafute4f6kqpx8v7,30777 +umee,umee16a84ca6q2uw0g5qwffu02emqkf3z2l97msu4lz,30779 +umee,umee1v0hxezgnwc6fg2ey7z4rggjgtgy5kclk9kxpae,30796 +umee,umee1wxftsh6af8hs97ep6wmm8cvfvk2hvwhmywc89p,30808 +umee,umee1m8gs2emktxx53tfunx6qfleesymy2aje03klxg,30815 +umee,umee1v3um4h8ljp26frtjczzd0jse8gqhr82vurz53m,30820 +umee,umee1z6wnj954gvjmat925zpt86kp9qd5y0sc02wnr9,30836 +umee,umee1zy0ypxgym856rd55qru40c9sxda4ly9egqmsf3,30897 +umee,umee1echn05tsgr7456nnuqrr7s2548x7wkthhqml5q,30943 +umee,umee10nwxrjfw30zstvduyntw96ccwfsf5da40k2tpe,30956 +umee,umee1xc460qhtqfmvuluqn5sad60m3nd380vs9cns4a,30973 +umee,umee1d8zzu9r3yrkgdpefksknp2ttzu02ptdzvfufqr,30984 +umee,umee129f69fu63fqh7kzd9cnypwuhyedlrn25zh8uu7,30999 +umee,umee1crg2g422vmgw8rh2ttdxj7zu0akngt584r2zrm,31000 +umee,umee1mculhg7xmsrx8vgcm0h9hzhyg3npfmy8rc9hqj,31000 +umee,umee12nr0nu5k8uxyg2g0ra75elqsn4my5mjkm8pu88,31038 +umee,umee1cv6arcppswvlz6h3nvru4zzc4z388vqw8zwxt7,31077 +umee,umee12jeg7a07wqp90fs3fzgalrky4cll3l4g5dmah3,31090 +umee,umee16jcxq7suwyawwezakn8f0jf64xmayqsk8uqvu3,31100 +umee,umee1kj2hz5mmgpsjw2c2jlg6xvtk9rsh4tgdy20989,31100 +umee,umee1ck2ykev59rpe06lvtdrtjasvmx6useq6l6yvn7,31103 +umee,umee1jctre988vjn8wcyzchjdu5m60j43qw02u7e6s3,31103 +umee,umee1kz96ks202jgnxagfq537dzrv4p7v3jd72enc46,31112 +umee,umee16kgq65m7f63ex9hfvgqy4acn6k3x8jf6l9valj,31153 +umee,umee1cwmrs2h6wxupp2p38ehy7rsnnry4jhf54jw070,31179 +umee,umee19z3h399g546r7xyq2fmf5wzar74eywxz3u3jrm,31265 +umee,umee152sxae7jkpd4vx3n664sad2wl6tmu9f4u5s0zr,31281 +umee,umee15rl694rynm8trfd65jsh6s00qgumrnxgwgtxwa,31288 +umee,umee1mvdhzhdcyr870k87mceygtex8kh694h2k2ryns,31331 +umee,umee1mqw5c2adf467kmgnn2q6ts0zmr52pcaql2f87x,31391 +umee,umee1keufp3nvr8jh3pudgcpyeffnjqlfu3w3k05zkg,31425 +umee,umee1kty8ktzuvamtj0c6vxgcnsgadlqs24xpn7nfcz,31428 +umee,umee1nkc07680rw0artgk7kvanl90ey3smd8nnf2wur,31435 +umee,umee1fsyjhqd3a37c8cct7y20jsardwukn7mvusuvfm,31452 +umee,umee14ey0nq2temveclhmp9ydkwgsexnhqsv8jxfthz,31454 +umee,umee1pxh5nepwf2xsnz3a45zhrl4ue2nw2kuh449qag,31535 +umee,umee10hsmw5s7s78hv57wqldhfaxd0ckccd6fufngr5,31556 +umee,umee168rvutfcej7n7vuftts9qj7y578f2efda0vsnr,31561 +umee,umee1lwkpyc07zta670uuz750xet787czp6uc6lnsgp,31602 +umee,umee10wgegcr2qzegk3nhuwkardtt3qupwny0nyan65,31618 +umee,umee1am40a3z0w9e0qq5cawd3d4g22zvl86fas9av76,31620 +umee,umee1ejvh4lm9yf8rqfr97gupwqpvrmk5k2q3xkwgtx,31677 +umee,umee1w547hsnqm7etzzp9rlket4q77s30jtghv3zhtz,31682 +umee,umee1rrupj3g9t75ls7tgsnzf7zruhe3j2wdgydf3n5,31685 +umee,umee1ac7e2d46k30zrfumhy0pl6k8t3lznq03gue2m6,31700 +umee,umee1yelaw8rk7ymt98lww4e4galqvg8yfux20lgnq9,31767 +umee,umee1f32hk7a2y4nyglmm5uvwljrrpzmxkaquwej5jn,31778 +umee,umee17c33pah9e6nre4r4e0d9pqujgm6e8wkh224p53,31786 +umee,umee1x0ztfjcu9x2xzzc58t3rvm3he2rqtvumcuddrq,31866 +umee,umee176rek8yn6udkjvdjggrtj53jpam5dwdhy0dahw,31890 +umee,umee1gdyelvn6wgzpgverjmu2wtrkrejvaazthcda03,31894 +umee,umee1tpkuu2cnn543wkh5cgzzpv99xlufcseqkmjggr,31968 +umee,umee1lycjc3psqcfgqhcap5gg46z7pt66j6t6gu9n5g,31996 +umee,umee1sejaqc2kr4j5ku0xuhludat52n05t9erwqkp8p,32162 +umee,umee12xfgqudv24jhcdf6s49uee2e9pg49ws4vrz0zq,32193 +umee,umee1vm6tzpzysn58sfpmgqz2rptug3jx2jjkasf7r0,32197 +umee,umee13y6pahsnj7pth7vpz9eszkm3xwlp8fmegs6tu7,32286 +umee,umee1gkxf2vq9j5vy4p902dxs0hlu6ujvy9ezhgfst8,32333 +umee,umee17fapjwjr7uddq0g58cst2dmrepvk3y9w9g5nm2,32344 +umee,umee19gyrmsml33rz636k9y9jv4qf0kq444cjnrcy0w,32357 +umee,umee1c97nrl5shghs9re60dnghxh50vf6kf5r5kuzcc,32368 +umee,umee185nrk8k78vaps29m5rsfhpgyajqpr7zs780hf6,32368 +umee,umee127yusg0086xkzagduxtlfy5lvep6h2h7e4enrn,32406 +umee,umee13g54v02g0aszaxhd2v8986zk4270spwavhkcpl,32411 +umee,umee1kr7jcknas4q9t63pk4v8u4w6y4plrng9yg63xr,32459 +umee,umee16y23kacaxwv7lxpsv64fruq0qjwyzd5wl0n7mv,32467 +umee,umee16a9ken0xcrfgvgx996grglu94q90ujdhfl2xhy,32480 +umee,umee1vqecpv803ggcuhvpun0g7r0lyafk5rkrphnd3r,32494 +umee,umee16a4mpfmccxhr65px3ew3hw35ulmf33h4pwvqkg,32499 +umee,umee1m3dw3c24ywcq7wag2j8tymkzdqxpsk9z68eneq,32517 +umee,umee1pt64jnu77gct7zu84wrnrx2zg96e2m3xc92vyq,32547 +umee,umee1wksc9ahx78lskmz3gdpfvdh0ndnpnd036a4rms,32547 +umee,umee19qwx3dyfpn2tkqsqrkagl7euy005alfy9gp36q,32640 +umee,umee1xsy9pxr0g7txf3k4qj3zmdj7ms46av8t44ze5j,32695 +umee,umee1qt6wfzk9y2pwngwsylxu46ye5ejuanxzrr3r07,32696 +umee,umee14wz5l97ww4g7yewh0a9fzyfgqfdm4s5zz4nrkq,32713 +umee,umee1lnrex49s942neyrhfzwmgwgptdxew4584suxzx,32720 +umee,umee1gxrsp006ns0fgcaagayttml2sccqjuv0tel8z7,32785 +umee,umee1e5jprrmun9t7tuuk9qf3s7nu3mg6yq720al04v,32789 +umee,umee1gapau25gzcjshra6yzd478af9aqeh6a3tq8zmc,32805 +umee,umee10q70m2sreg7g28dcp27q7heq3zv374z4kfp3yx,32846 +umee,umee1zpqf4a6fxha06d3tft8f52s88zkd9t8sn7veul,32946 +umee,umee14wv264ngauxx9v5kyrc33yd6q3ek2jvdx0yesy,32980 +umee,umee1f68h57hfrqamzzf64f5mve06wuwffjcgwe8u9l,33036 +umee,umee1y9kx6yeepkvfhlwtmrwmf9h99ze8ykfs6r0g4v,33088 +umee,umee1kdz8nuz55x3kvnwqkl237geuvmc2quy2f2ml8u,33128 +umee,umee1tlkut8vsa9gv5fpj7wjx0yemlaal0jgptxv7k5,33186 +umee,umee1522c3kca6ymtl4upeerv5m4v0h97zcekrdwm45,33186 +umee,umee1m6vgg6j57ycl8nr6m7sg73q9pplscgkvll4w82,33215 +umee,umee126nm4mk76ucylmy44wwwyglp4jflaf77qepr8d,33281 +umee,umee19llcx6qskku5cqgu07jescumtx52lp5dw6uhp7,33284 +umee,umee1k3vysm4ph2dcn8du3cdz3z40mlxz2a8p24jlmf,33379 +umee,umee1vpxkt3z3qpaqx7kyra8rjajse7hxg7fnss0qjm,33420 +umee,umee1ey0r77qa22twul4yepee825lfclv50kk4lpevl,33456 +umee,umee1pukr4lnshl09rln7nj9tshajwy3cu98rcfraya,33494 +umee,umee1xlnaq0tu2xxy5mfxgml540wzutus7q2t3pl4lx,33501 +umee,umee1mzp9pc3casw7t8488wne0p25u05qg9w63nv0tm,33512 +umee,umee1tsz93j8s5uchvjpu53nw47vckm3enyl0tn0j0m,33513 +umee,umee12yjzmplajrjrulxpwgg094vxwuqj5k4f80dqcf,33519 +umee,umee108m4qkx5k26st6xex0d9620tw4fgdwrmen0hmn,33538 +umee,umee1423zswqdc5pdkcj3uxc0fdqefymslamgn7ne75,33562 +umee,umee1zytt3c2698vzd6ytpk4p46nu8pf3sv0rp683pu,33590 +umee,umee1rye337w20kkqllw58z3thntz2g8h2hpmg2tcqm,33595 +umee,umee1tzurykqxvrs8zdzchmga5wy3hl0kjuw0gfr58p,33698 +umee,umee1xg74j02m5lzkry50tmaee43mjtraz6fy700rzh,33718 +umee,umee1kpdr7yymsgzvdxmpcuvm6rykf24xd6ezz2y2vf,33737 +umee,umee1gewmmsjuhq0kx555v8dywdyptvzwl2z7rharrk,33769 +umee,umee1ds2m69c2ruc97s0vlywv547zdapnrmfxjn9er4,33772 +umee,umee10su7kvc08he4lxkd6l3ssx05zy2me06wtzr3at,33799 +umee,umee1svmmv552lks4uzjquh2nx2r5s70k74tx08wpk4,33847 +umee,umee14x06uxg5mcea9m2zc5je9x0kdlrjvhqd734f5m,33875 +umee,umee1s746gv9mtz9c52ycfqm5ded89j4rehxq7vmuj7,33937 +umee,umee1k63cdurn6ned09ldvft3zzdshxad9r0jqaccmk,33955 +umee,umee1qul5t9wpsyp93j5zgjrewm8exkrlq7yzew46j8,33976 +umee,umee1tq6jmkpqnqvt2c9afhh3weqyzlnvxpu749anex,33978 +umee,umee1vazgf8x2fcfsufg4sns5dsmeevng7724jmeamr,33983 +umee,umee1u6rd0lrezdyza7v0m0p7dq44x5ae497jnmunvc,33988 +umee,umee18tg85xnwmdfnmev254cv35scusfxspyutkqmvu,34018 +umee,umee1p9fqtldnfwsjzwsmazzy5zm5yuphfpjtr3wwev,34075 +umee,umee15dyt59kj7gjd85cjx5jz0mqwny5gwdvy473tqh,34089 +umee,umee1wt84m2eazqcksqq5x5jx6nv3mml4xf3tc6hqyh,34103 +umee,umee1zsd9x4lr9t6zeslhv20crmw7r93cs86495zml5,34154 +umee,umee1mg34c2zvcetcvynp790ltnwg6t3eu3e67c4r5p,34164 +umee,umee1gs8jfx875w8v9a0fw8246udcxuwr6va9upjvyx,34225 +umee,umee1wha8sqchazr6e3swj59jhtnldmdkr4vde5q3de,34246 +umee,umee1nq6kwvunawy7cd4q4993qgj49excfs4tepnmy3,34295 +umee,umee1kax69ywsyncwph3ll3l0gzv2wc49athzq636l9,34298 +umee,umee1347kg0p77hq8uvpfx50p8xl5kdc6v9fc2xwa9v,34320 +umee,umee13djmywhzmnjksqvwn7en6zahx4lm80gm36u8l6,34337 +umee,umee1zmk6sh6ahvg6wt0ckqvdxuszm77jdpk6l8jqdm,34342 +umee,umee177t27fsph9rejywmdh4d9s8eqlmv86hdr6x7aj,34470 +umee,umee1qzyjzhmav3rehqw52vl6um5x36y2anvhuguceh,34500 +umee,umee1wgka6t5gle39xc5x2wzv6ffsvxgy4y39s0wmk6,34508 +umee,umee1ysu9wrkfqnjgu6va0t44jxfneqscapd7jzed33,34523 +umee,umee17fzfgm776jvluhznad5uuhmy4fz555yfcra7rp,34590 +umee,umee14u3sgfjpy8ama9np39q8crfef9peplqhgm7tyw,34600 +umee,umee1de7scqqkfyurwxskv4pe7jes2845gz2zczghj5,34722 +umee,umee1vmkcl5mdajw6z6k9gf05xyj8tav08ds6a6fg6s,34726 +umee,umee1lt3zkefmj9y3w06ca30fpnnx94gxk4p3g6dcrm,34735 +umee,umee1aw0ghm394pyh6eu58wn46r6ldlhqgxdyavaa4w,34769 +umee,umee1hktrevcd5ppdux0ahf3t9ergn5lrsgvf5zvxrp,34849 +umee,umee1l0wkvy9av8t3xru98jyhcsyzledykfkyunuy9c,34894 +umee,umee14ntgkr37djfffu860jsta5uplsz2rcs7dvr9tt,34933 +umee,umee1wn7v7ey3ayaz3s0cs3v6kcu4t2nenrd4gl0hma,34958 +umee,umee1xswjv30pcc3sl2q7pryejfk99sz85yzwxzuddy,34973 +umee,umee1qe8uuf5x69c526h4nzxwv4ltftr73v7qjrexu7,35000 +umee,umee1wfdkvf5qywhr6ky6srmcldy0j5adxshel2sc7f,35002 +umee,umee1pf334eks84sd9vyujye2l6707s69gpsw6aqey6,35023 +umee,umee1t4zsqf56pxccy272ywxdfv0vzppgek8k3cs5ma,35056 +umee,umee1alpg85wkcfq6mwaqpeh7sv63yymj5lgw0dzns8,35071 +umee,umee1scpw0fn0ysfzatxadkg47pw89z62842dwv09d2,35105 +umee,umee1m3tra6eduujtt3ux8x7lusgzpguu9ehgezp2m3,35106 +umee,umee1w4267engw3gj6pa3wlccfw8ry8t3glmwdk57ks,35108 +umee,umee1cwsnkldc6nvhqru2eneakdw2gx7ttdplc96el2,35153 +umee,umee1d2kzl6etakmg20z2hwzzr6sngvzcj7z5f3y99m,35241 +umee,umee1tcuv78xy7564kq5d30n5ktm7m75at776qzkyuz,35266 +umee,umee1gx6u8vzgfrvq2stuk8jlzldg57ftqpewv40m0l,35305 +umee,umee1rasaf6qns8cc7hqmqe9eptn5xcqvkhr88ru80z,35342 +umee,umee1wja8xwfxxyhn5ac8wgkaamgzxqt4eyg885c7fa,35399 +umee,umee1h4e4xa4tldev3c9vrfe9vg56d476jn8yfkhh5h,35432 +umee,umee12lh70wrj9gj5wvuxfq5e6crtmk3jzsmxhtsm8v,35437 +umee,umee1yzjadx8vu93r0jfv70dmkhtarn3uqyqr4vvhmn,35453 +umee,umee1knpf33ymch8ln7yev4jrsaql8rka8g3nr4z283,35459 +umee,umee1lsy6tv8z4z3dqhu8muclzt6t2wudtlee8ajunm,35511 +umee,umee1f3cqss2xwav7wxu993cfj4lldtvqs33lgk8a0n,35518 +umee,umee1s2s42dq0mg489fmzafggz5j20hcmj8d07yc9rq,35525 +umee,umee1p36kfytcjcjt63lpyr0ddxycl0t8j3hmnrhzld,35566 +umee,umee1ca2av74xyltl0wfjcv307rey56jvpmpta5nurg,35657 +umee,umee14q7ntvc4zvyavde8tlesspndfd3r83h2e9mnd9,35709 +umee,umee1tmdstvzrauhalnd50up5e6734dvf2e67sk3jur,35714 +umee,umee1wdhu82mgzrjcj0jkgqduv8hm03a07h4255cy8z,35735 +umee,umee10jtgzsn642rl63asluk8nzyqgp57afv4jgusrg,35811 +umee,umee19u554mel2ur2g9z03xwh8mn762ugtcsykaeem3,35872 +umee,umee1qwsqrw2qe8vj83qwejqynyxwcr6m6lvcxfru36,35979 +umee,umee16yg5na3q0dg8kehguxuah8cmfe5qf4q0fz28ev,35989 +umee,umee1vdmh5xcq42jzc3ykevy5dpsjqmq9hfkqcwanea,36000 +umee,umee1znwtseufpz9md7gfyhfd4f70khktwvdhte6ep7,36045 +umee,umee1qqxw4sv5k5lexsgnta6kk5rx9xnlv07r02knfh,36050 +umee,umee1ntsq7lz7477x6v95v0ddeqms92jr5vx5ywxur9,36062 +umee,umee1zt0en58lnxxy7cxtnnj8m48zrtx9kck2epmenk,36079 +umee,umee1j35vs89ed5xsvsl0elv3ndatnxvk2qvs0lzzv5,36169 +umee,umee16f9xwvln385lwvx5h5429ll9t4j2l33g97jx9h,36194 +umee,umee1umukkcm6pee0t0vgatfwdpwl8kc092ccr3hlk9,36210 +umee,umee10zfr2e5dvxmmklnkwltsqrkftf945n2fgz8fhc,36212 +umee,umee1nvrz75nvlvv9redllux7dc9xeuvp6nhn5g74dk,36212 +umee,umee1myh2089xvy4evjfwej7me5n0uw2x6zvd5g6gmf,36225 +umee,umee1mtp47gqpvw59275cqmekrqqhmjjpehgxx8n6tv,36228 +umee,umee14fk42k40d2mp57cve48xmkkgcneu789f6a4065,36244 +umee,umee18zrlppyppy9j2gec0fhwgz0cjtnfvw85rcwdum,36264 +umee,umee1qakfg47kavvlm9ycnun3ld2v9c28w35cwm2yhw,36287 +umee,umee180gl90fnzr6282xmd55phsq9vffqc64nhqmzpc,36302 +umee,umee1l4wzeqqyha43n999twyl93525ctv6v7m3zgct9,36328 +umee,umee1vvp9w20fp7jdvgjmhc56hx2eaq3e55llglv0ua,36338 +umee,umee1szf5zy8h6l9m0q37dwd2rz0ztzakvrkrxfrc2f,36348 +umee,umee1uz0nq320mwua033uqkk48ce2gja9ajhkz7ljew,36351 +umee,umee145kvyy7njm970wu58ytpv38caxl7yvm5rurgjq,36368 +umee,umee1mmvp4s5ncud7vg9e77m2szzhw7n67hufk4v0lt,36378 +umee,umee1nvxhavmqxanh58m8ey7ws2zdr20rp03300u95v,36441 +umee,umee18n476vx5639wpydd6p4ngqdecxrc3v2cag0vlv,36455 +umee,umee12aqsx8mqnz4j8ppf4z20k90u6ul8ksla3ajsdk,36456 +umee,umee146t4ke86mrlw8qq48y87k34nrj3cce4ue6h0kc,36503 +umee,umee1nqxzaa76tdeawysjnxflm6hw5zd2czt00ku3wg,36530 +umee,umee12a440wdqps5ym7p7fh538p4l268d9glh34gnnn,36542 +umee,umee1n0hq4ls86nm72ld9upn8teg5jzku604hawru2a,36557 +umee,umee1rqg4wq5fm46t29decvtk45zs8pz2agmcsxqv9v,36650 +umee,umee1xzm86lagu7dm3er625mglqg6nz9ctsqxyyxrwv,36739 +umee,umee1t954a648cm8ancf9uqyq4y34sccuces7fqdmef,36770 +umee,umee13zk6ym6szvarh4ulws9r3z9zgkye8ml560ngst,36779 +umee,umee1v6fnklkj5av596xrv9sucdvcgk7llhraferg6w,36800 +umee,umee1pd6knxnx9zqyp32yx2vuuyehgvlz8wtgxxyxkm,36836 +umee,umee1rygmyzdrchkcdfjf6kjfd0whdvp4vz7ja3kfzy,36849 +umee,umee1v3xp2lngue0sfz6lvaus477h20shnu5p0n8y9w,36851 +umee,umee1lsw93n5xt67q3nug6ldutcw50vtm9spx0l4w02,36882 +umee,umee1de8426qty8qk9le73qakkql8sqw7mpmavpa8rj,36898 +umee,umee12enysh5078mavnve39jcct5ed593jeustxudn0,36919 +umee,umee1kelue8v2v0gv89ukx9uk4q3fkky4wv68vemnxe,36936 +umee,umee1lpjtvq3exl77z64z2d95zwsc0u07f8d0yhsnqt,36954 +umee,umee1l8e96cxqcwupn3xhv5qhv6lmlwv69nms8mmdcu,36989 +umee,umee1qfqqs0fj0afnhea738eendy0arw92mauad70kl,37035 +umee,umee1rwntqajf80s7tfnetzntv7qm7p8lsdy79f9dgj,37049 +umee,umee1ztj2gc3v2xsjsap4gt8xx83x3ff89ar4u72wkr,37073 +umee,umee15fuewzr97upk43x9kt0t8k729euap7t4w4y87f,37077 +umee,umee19g5e92fskmrtqtj8l3rfyyjh0ztryz0xh8rjj4,37086 +umee,umee1w9rjqmaxanl3a7q55akruv5g5s9x56v5zana2a,37162 +umee,umee1elclpa4cpu3tshp9sd2r5v5gjnm6sn58w0xypx,37176 +umee,umee1qvj5sqcaw9ewm798pfpr8vd4wv7kv2mhkqqwe7,37207 +umee,umee1ha6wjnt2eaew862cypum4d4u6sc0efhlk5qp79,37217 +umee,umee1dn8exzp38qczuln96kne0yq49gejgvxz8w4gg5,37236 +umee,umee1eganrkx9td5hyknfqsdazn47rx283tps6a43gq,37352 +umee,umee1jzdz2uvzcyd7yr37kva0e6970n29gyt9h4hsuv,37394 +umee,umee1s5afha0d6pghfzcc3umynpwfpu4jwvgj3y96py,37423 +umee,umee1xmkxlgmj7xjj7eae958n0w4rrnaa7tvru5vr4h,37462 +umee,umee1er8gc4f5rmkezlq23jlgtgh7gsuzyxjz8vf447,37490 +umee,umee1sgt0uhn6smxqlkks3dwkxntp9sjaj6204vsks6,37501 +umee,umee14u9r7kqjznf7nqxdpcq89w2u2gp2zzs8qge9dw,37629 +umee,umee1e20j0vdcd049wt75n5ut3cejfsg68vaz62kkve,37659 +umee,umee125l74ldclv7pxqpc75dqucnkwpg7k2xu9yghc2,37674 +umee,umee1276fztc4zq094tp45tqrjdn5auchgwxevqmc4j,37687 +umee,umee18qsflgc2ufclr5x8473sh6wu4lfl4e3q6t7lfq,37728 +umee,umee1kujjlqdea6qz89704wj3wshv0ke0wzyxs73y5v,37733 +umee,umee1ttyunswxl0eva0d8q322f55c58eg9xec2lx63g,37793 +umee,umee1n05qqyvkwqzahh53hhpk0v2k82n06ca6wk8qd4,37886 +umee,umee12qvklf4atqeuvk897gcmnw5m4vnvv0gpuv9suj,37937 +umee,umee1w0jx4ym0dglytx9zpe8xmddvvsh0npjexnfrrc,37984 +umee,umee16zgrjh8dl35w7w8xfz7k7h9595rztpysx4h60p,38052 +umee,umee1tew2mp3racvkcye5qj5vyyqf22sgr6zenrkjdn,38077 +umee,umee133g7jsg093eelq038c49jsv4t533pwq4xh2udx,38150 +umee,umee1m7sqtt7qzhh67x68hs4x6xusvzggfdgnal5vj7,38161 +umee,umee10tw2wdmdfzffssl6l9c4nmc98wqmumgedtxnzv,38161 +umee,umee1nfm79mywmwuxd0pgg6w9g7ghwsy45g4hxfedux,38165 +umee,umee1kmfqkk52sm2vmzu3w9g05earyd5lhzzf4l07st,38193 +umee,umee1vf8jqaz3d0jlz930clk8qcgkej3fxld9f7ztg5,38219 +umee,umee1czw5tpcrmzfyj5e7rzx9tp8c45eenzau9kv89g,38219 +umee,umee17zxfauusvxlwnffqnn36ztllr6u7e6c55quzya,38275 +umee,umee1ep9w46m22hc8vc9dql3l66d3hng58rjld4mkt8,38309 +umee,umee1xpxczuwr0x7tsnt6q2l7ke4vvlz7medphtgucd,38318 +umee,umee13c6gp97ll0p4e2u33apev3chjl95txe5ffmd67,38366 +umee,umee1krzmp5rhnglg296y9vq3jn5cnm76dt67dpx2t2,38382 +umee,umee1z9dgz42jxamttlm9dyk6yryqzgzvkz4gq93qhv,38391 +umee,umee1rgmshwm8ny6engvt8ckzz9ezgz03z5apqf9cem,38430 +umee,umee1f7ygtvaj29hqpwn8mrfcz4kqwu9q5xgn64ap6g,38434 +umee,umee137fqq04qf6ar8hx0wpeph0nlu9hch5v7v04z95,38434 +umee,umee12raar3qrk8herv42gtu3q6wef2hvz8qnvdzq0u,38463 +umee,umee1pwptt3c2s4w83qak7tzuxgg7k6v9qkzql5mvew,38672 +umee,umee15073885eaa6649xwwug2nxlmcceqwj56xrvcue,38688 +umee,umee1ssza9qtpft5s3mnqkaa2tqz07du6pa67gu09j4,38709 +umee,umee1d93fxj5xe9q5jtdge5d7wtafdl6kcrxhsrueym,38762 +umee,umee1v8rupzqsvgq68a3sumct2ue68sca7prjnw5xkf,38763 +umee,umee1jzqu443mhheej0rlu3eqjd9vfge4zuc4p94wn3,38897 +umee,umee1dgrmxgqfnkqs62a685g30vmq4q354efwkyvs5a,38930 +umee,umee15l7rclmmnwkmzm268rlw5h4ahnjgzsq3ntujl7,38974 +umee,umee1d3yhstpyvap4emlly7jguw24pyfk8k72pyudh0,39000 +umee,umee1lg2sj2sue2fcszc83yazsp74gn2cuf7s04gnje,39005 +umee,umee17z498zh3mkwpqpc5c3nnpzjhp36sqgdlvqjzuu,39015 +umee,umee1u42wxen67wqcqad3fwlnvf77fagedu4k9xxvp4,39024 +umee,umee18tgy7tmpng6qspxgwl4alvc0myq6ln7uajcnaf,39050 +umee,umee1443muz7rghxkd7aadnlxs075k5ezaaasaaflgx,39056 +umee,umee1ex58ltuvruyew8849atkwqxr22nr8jwwwc39r7,39142 +umee,umee1l6lgnkyatuls54ttnz5qtwama2xql5zq57cdxd,39201 +umee,umee1amrrdnlwtmlw223rrtd9jj6xlma8eqdhycdx7p,39212 +umee,umee1zk280f35w53f568dvnpjvn6g5xsjsfvq2kmg49,39227 +umee,umee1pp8gnasjgwxt2t9q7tqz5xlye6858xzlm9mwzj,39264 +umee,umee13ue2j9rv3upzxggssvxnrxukxc0wehq9vnx4ly,39303 +umee,umee1m367dtm6ucqs3nw7xlrajgfah270p9p4wxcez3,39337 +umee,umee18xuqhpf52uy796ekfm6g0x7junfljwqpje5d05,39399 +umee,umee1ctgz008vwaq7wp9z0dqyhpf2hvyf2aa8ej294y,39399 +umee,umee1sw46gl0a9qzhvkzvngt0tx2hzyrt2jt8v2vahq,39416 +umee,umee14d3j3nasflyasjtrsnwwevuu5zmry37s6ff5pj,39432 +umee,umee1l578nmv6vyudmnkxrwhflm559gvvtxx4frgf9s,39438 +umee,umee123j0jzkugj35nedg5ufkuwge3395naudqkv3c3,39454 +umee,umee10rlgkc5c0knpzv4n7qwt88kkfe4q2dz357ctjg,39458 +umee,umee1s5ah5yk32yqvjxh6k6wjqtjygz3w4nk9gs88cw,39484 +umee,umee1xm9ymlxpzzu6pe6kuzm60gpnj8cmc4ac0pee9r,39488 +umee,umee1qe8dkrwxls7920p9qcxy9cjzf5s04dxf6cez3a,39492 +umee,umee1mkd9umwfz33jzu8d2eqtt93yshfduxz45u2z60,39513 +umee,umee16x03wcp37kx5e8ehckjxvwcgk9j0cqnhp247ky,39581 +umee,umee16n433589j8duk3xet7njrrsx68aj8thwmh0fez,39596 +umee,umee1mzcmnxhz2usypwq9z3klvlhlag8esl22cpnrpm,39603 +umee,umee1yzumu9aaxcrqssq6lgz05ak73znx6yum0j625f,39750 +umee,umee19jw9ydv4wv0yrda6jed0ehhemymufuam9harwt,39783 +umee,umee156jh8yneh0nw6w4phk4pc0tzqdk0e6wt253f5n,39812 +umee,umee1cd4m6ql2aqddwkne6myyn7wjxrqx5tukzhqwkv,39884 +umee,umee10flen2f8qdz5tkva26ranr3lkkey58adasutxr,39897 +umee,umee1j7jyl9cz8v5c6n3kmxnq29kva5c74chv9nhk3x,39918 +umee,umee1377gnhhedj9sz8lg5wwr9n24857nfmjpuw2vmf,40000 +umee,umee1f4ansxajekhzfj2et80xk2fgqs0wjshq0l583a,40000 +umee,umee1rtsce8m32ah3fnp9lu5ut9mjkczd7wl68uxzht,40015 +umee,umee13nd63q6ck5tssj4wjmt0ltjg26wvra27na425p,40089 +umee,umee1pkww22ajzmhnfcaua3svhkvldw6p3nfgy4j85z,40100 +umee,umee1smqr5tp684g07aekcn0w852wqlme5mn6u7el7y,40115 +umee,umee1hjsc3m9h2a07k2l8kyyf5g54tt0t7nwhagtee5,40124 +umee,umee1k3tjx9hlnzvus50evxc4s4dk6sz4a62m4wr7lt,40181 +umee,umee1paace5r8ny97qld2m3kmfgp3h6x0ychd9j9665,40290 +umee,umee1qwn65l26uhz7xa9ucnuz7f6valxm47a672v8fj,40359 +umee,umee19ef7h9gm9j0cymfdcfnejprelz9xvdpgr03e3h,40545 +umee,umee19pys8f5krknrxa35dk25rw7fyu66suv5x69tp6,40612 +umee,umee1xe7dzscg7csqt990yg6j2368txm2dppt4fg9f0,40626 +umee,umee150ynh3lavztlknmgf5xa9lvtqehw5me0jxvflu,40638 +umee,umee1hzwevpvrschmwhkgv5ct083yv6ty6venl6av96,40643 +umee,umee1u9upwuq5y45tvyzs6egkpf0an6zgx255y5e0q5,40690 +umee,umee198ltdlp326jya08dk6elyr94h7dy96lj0f39aj,40691 +umee,umee168u78fgz3jlmkfu0qs5vgpg90f2e38tthqtuzs,40761 +umee,umee10l9qvgmpy9ttqynvfkf2xc8vadkk304n4f7556,40811 +umee,umee19509l75l9vu65w40q8ue2ng2zn3cvzszkn950e,40840 +umee,umee1dy78v47vxscxxs97lqcexyuzxwqggna0rnzh6a,40880 +umee,umee15fdmaqtzxe8c85w7lfs296atxw2935x68wntzp,40906 +umee,umee1sjar4m0hus5m8zwzvdnvwarsl8kplzdmytl5at,40938 +umee,umee1y3ypgpdvhz2kpn0ag048w2tvuwmcpmq2zamtfq,41008 +umee,umee19hulkh6xdrv834jcqccyz7wunvle362tge69q7,41028 +umee,umee1yf5h0j0huyepdahg09ux23tsstuftrmqv7e6ng,41069 +umee,umee12pgh8sfecy0s034j6566mpvzhwhv6a2accltzy,41078 +umee,umee1g364cg7jd7v6y5drhl9zp59zxc8jqgevvs0krm,41096 +umee,umee1wv8s3cflrukukpe8wt0t246ewamshqln92592n,41139 +umee,umee1aucam48e7l4lxs3spszylr8y7mp3td43gfr0sc,41140 +umee,umee1eny7npl3xeaexur7s43eapm97n06uktp97ndng,41164 +umee,umee17xl0vq8lg4qxndtmyhlrfachemdmfhtussa773,41255 +umee,umee1eqpkl9fuzxgtg5957u3gknhp6xgnejuuk4jpg4,41282 +umee,umee1g6dmc2qkc6wkh6t4sz87ystqfv5zwt8sy5fyg9,41426 +umee,umee1aknq5uh65lrzqctnkduz2te6afxy39artgs9kx,41429 +umee,umee1u3ael75fd0cf3f99r9usfkv2r80ejwqvhq8wem,41434 +umee,umee1n74enedgvq5p9nwazlhm3w2kvaemlsf4z0kff3,41441 +umee,umee1fkgz2egvth792pued9d9p04c2fmzuunx8ndphs,41482 +umee,umee1h9gw03d3nslxquteqr24gvggmz5ruqv0andwm8,41483 +umee,umee12ws5n4905lsy8yzr84hf79xrv3cwxaprr2gn03,41515 +umee,umee1e3atvyktm6wpug7wswdlc9j7ulmxt0acdudl7d,41534 +umee,umee1llulxdg9luyqd3x6q5hqaly0law6x45ruxtncn,41615 +umee,umee1auaefxvjnxgsqdtjqyr6p8d33qe7h33g9u8n4k,41631 +umee,umee1ljd6d8quzfn4zev99unxnz5x89frev3vdzwk2m,41642 +umee,umee16dljrw949xr8dq0jz6p948m0gaec2u26xqtjsv,41729 +umee,umee1qduh3va3lq4nu3ur05ysfvrxu2n9zu6thj6fh2,41841 +umee,umee1lj96lp08903eed8uwrdepg2rq9efpdtqg6nnc4,41853 +umee,umee1sxc7qkmsxyqrtuqepvh6mkdtrpdtvxf9vu9zjd,41898 +umee,umee1tav6y2ms3325aurgfmytg4r7mpxjmdrgzjp505,41901 +umee,umee1wv5a4quvyg7rugg99wj9l2n8ardg6ccyz30gy3,41926 +umee,umee1tlh0m7z5t2lpzq58ym6t45upuhfnwjeya35f42,42051 +umee,umee1v9m2s8qxhhgkuzpq7xmh4nu259tna5e7vhq3wq,42084 +umee,umee1jygztpzwnaxnq4av808g2pld542kymq4766grj,42101 +umee,umee1pku09d0xky4xl7mxjfjktt0fuhauharexyuamz,42109 +umee,umee109usmxjdxc4u9c2qrxsvr699ymh840rjazrddm,42109 +umee,umee1r5pkkpcg0436puweny46kmkytkehnrhyn288ej,42152 +umee,umee1dwfeeh6uzeg82g83ezlsa406cgtq4nc6u4x6wx,42213 +umee,umee1ly3830kcpdd47jjamkrqrdntusw0a9h3nl2w33,42219 +umee,umee17uxn9k42n4zhlv59qkgtx9dx4mk78elqjwu0gr,42242 +umee,umee1rd4vnp7ccg8ku50hwgypvv776ecc9ns493p4c7,42255 +umee,umee18ave2p7utev02wgqsz4p4s6mjx37k065pzvk4d,42296 +umee,umee1ssjzgtjlpmn3tx20y460nuzl5tmehrg0xu4uw3,42420 +umee,umee1twkjqlfukdm9savfa4pdqpxt2qwx77z2wdl5as,42428 +umee,umee1gnma9gavlqetm4t28yydy6mx0tj2ls6479y0tq,42509 +umee,umee1kl2cu60yjuuwp09cl8c8yaylsp4cazny688x0t,42529 +umee,umee17a4vl0zs080f8sk347wkuay0u5dlhapj2yay55,42537 +umee,umee18x3yh7yct04ta8epwwxc04ysezrrza4aj0w66f,42615 +umee,umee13jjxe2rur6sk4ve2mh00m4g9mvmyg06quuwh8e,42672 +umee,umee1575gplraly9tkesh7v9k5tdg6epq7wz38jz90e,42685 +umee,umee148qp86pcw0fqprdwmea5zdwg5mqfqms2de7hm2,42706 +umee,umee19dn7kny30r8v960mjhg7w5ys0vkxgzc9u5hxmp,42739 +umee,umee190z2tsk65nqqknhsgp6hplqntjccj0agn8jajc,42757 +umee,umee1ms4tccp2xg3te7sdpk7ueqrw99hh2rye3rrjvj,42807 +umee,umee1gzsc7t6pwsxk2a44jxql8namldq6y6hxdnw9gp,42844 +umee,umee12l6faeqkyrw3u6cwtsztl76v3dkjh4zuc3s9j0,42854 +umee,umee1d9lqsfs059rq3gy3jk4njp3qmu3m505umz3kkv,43161 +umee,umee1udkey5h7gh9ggpqmnnlf0vrea2arw2xuny6zhy,43219 +umee,umee1dm5zq9cxkyq8thljghuxydgphwzy3zcerjtwm9,43366 +umee,umee1u6vzlqhqy9rs4mqvf90r6ffzdhyztt8c6uhl7z,43366 +umee,umee1cwfsx6q5khzr65u9qlfjgyqqttr54flhtfh873,43396 +umee,umee1884n0r3t0ce9dl68jzghf28vc7adnpa5gvpgt2,43583 +umee,umee1rgvzc9799x763wemtnwdvg5r7xjnqvzx4cm5ca,43591 +umee,umee1759rwxdld4jw0aqjadj9mq98gwjlp33scf0dj6,43624 +umee,umee18h0whnupkw6lvdm97mhc07v25clmvdwjaqsuzj,43659 +umee,umee12r2hrwts2fkpr5txv645q962k2puymtpn8duac,43697 +umee,umee1dpxsw03kvdndml7ft9t5sfqfcr8jw2w68z8qhn,43781 +umee,umee1snk35g3dt3kgad3lnsmsahq9avhx2a56vwj0wu,43801 +umee,umee1hvllgaywkkmej78yfqsgmpm55zv0pqg6qjyp2x,43809 +umee,umee1wqll007gdfrqwdp0sqclhc7zjghh0hy99vemqp,43817 +umee,umee1sxhz76akjqzzssv0trr0w8hkyn2ulxf5dzyl9r,43893 +umee,umee1whejvdne3cj6p5pnap8cnvgnlxdyd4dxu2lzvq,43960 +umee,umee1ndn9ur4vyex692p9lgjqtshx6l90dej3sx4xqa,43977 +umee,umee1jlkcf67u4wpkrcs455jl8292f652z560r0drat,43987 +umee,umee15zuf0azcff08m8wfj3ca55edlc70z8xu6a33me,43991 +umee,umee1d25tl29a9szjlnseq8v8cvq7cq59vv58dtw9yl,44071 +umee,umee15q2gypd6dmyxnj9sh9u95weheqe8kdxaj07kzu,44150 +umee,umee1ynjh47yad98f54f6ehd80ear90dyn48x5eualw,44184 +umee,umee1lhgnh09qmtpw3g4qyufzm8spmn237k2ykjalql,44240 +umee,umee19ftfn0vms76edpsgh9hthjjwc6xugaq3qj2ln8,44277 +umee,umee1ajw264nn26j955j0f0a379m8fkkn9zlfddquyh,44299 +umee,umee10rnj3j4m6zv3zlsywtf8p0svcv3plmk2q7va0n,44431 +umee,umee1e4y3m7pxn4lq32duermc8ldqe6s6wqxk6ptete,44468 +umee,umee1tvmxvr9lstymp9zfvwulhw6hsq390tghc6tpug,44493 +umee,umee18dnd5ckqkxvk934d7ykpspua6ysajua2aswyu8,44510 +umee,umee17dgtj8727tkk28f92h9j9kqvutq5h9uc5pdgvw,44537 +umee,umee13pm3eegdp3tckp8g2nuldz3plztzm6ejknf5pf,44565 +umee,umee1t534gamyw9khxqlrud467js2jen59epjudqzc6,44650 +umee,umee1we6e9xkwxgrjhaly98rllylpz2zhgqqnqwv839,44847 +umee,umee1p89qq34ep7xzu5gqghx6fema0z04vkp53e8g93,44853 +umee,umee1a6az3eg9paeltlpp98etmyl3ny9vgmlx59es2x,44857 +umee,umee1a0yckrr0tmmvc30qmtla2exh3kmgtnd4p3nzp9,44886 +umee,umee1tyqutyv520jlj9k96qth8xhfe2xdn6lggt4rcl,44921 +umee,umee1rq4ffl3ywqmm52dre2hkggchhxgn49huy5c5es,44942 +umee,umee1f8k2k0dhhrdzpc3u4rwegl236v4ave4axqnr4f,44948 +umee,umee1n36x02ndw88c72x4lykxyd4fz6nqfx7ak4l7xd,44953 +umee,umee1ngk7y0mn04efg6vkapxl3de3cperh8vlncrufr,44999 +umee,umee1m3uwht74lakwygkncrr8xfudjj02elj7z5dhv3,45011 +umee,umee1yj5v3qyfm64jd376gv37xl7vekmju72gqxptmx,45027 +umee,umee1ps8y243raq0ztf9nj4vm96qzp35tlt5kkt5w0q,45028 +umee,umee17r4ed4w7l48d3v2uqnjp76mgyspcua6dwm6jwz,45115 +umee,umee14drn0h9w87y37v0kkgasldwl557hh3vslyh2ad,45191 +umee,umee1s2pmy7l6jutu7recgygnd7wx6jjmqmka7qr4ql,45194 +umee,umee1f74ck7yxhljth50uh4tuc0alvacmc43uzrg7js,45214 +umee,umee100ywrc6vlr5ylaunpv7d7sk67zww7tz52sajfd,45247 +umee,umee1gz2w7wsmuymaqretcqd3zhuedwwfrfwxfk5nfm,45291 +umee,umee1dm5prd7hxwfpwjery0cz5gza2wte6qagm95mmz,45379 +umee,umee1sn6mlfkzcvrhf7uj4w03xnh0dgleaq3vej6x5t,45382 +umee,umee18rg46tjtnr6zgadawlnnypcazw0qcpctf7kgu2,45404 +umee,umee1gn7txes9l5xzz5km0wcg007gsgpcemfum5kn7u,45449 +umee,umee1lqgd4d0wu23rsycyn5kycn288n0f3c6l88zhfv,45464 +umee,umee1pf7thtc9wrrnm2u33024qhanptwuv4h2nnxep7,45548 +umee,umee14yg4azkw3eudqwk3qzdpea46ac8nqg8fxujfq9,45560 +umee,umee1xmgnwdpgslxstx0fv3mq23kqgwrrd35e5e9jc9,45622 +umee,umee1xp02pyd3ht5g4gzte2vt9ep3066wavkgmczj5p,45674 +umee,umee1h63u4phj297eycj45syaxxhgch563vfnk020q6,45700 +umee,umee1tc6espt7guse27uudtynx3e6kra3a56tplfkl6,45709 +umee,umee1k30v6dg58xykpqa6pkuevtyyaqarqhh3zkgnqk,45822 +umee,umee1ulzhse234ngrx4n8lzy8qk0myuzy9vm7zeegn5,45958 +umee,umee1a3aj9p880hwlwuytwaul7zu2tcrtsg08kq3rmn,46117 +umee,umee14a834zpvz0axhpjxdzk06rz68cum6ygep0y3a2,46148 +umee,umee1845ljqc77ddk8wvkmk4cs73u5frkqpvmpahad2,46181 +umee,umee1hx4rxjlv4g579prwqcvhpzymave8xg5ldafcqk,46206 +umee,umee1qcg970kffrx09z3kdwcl64866n7d3whacg940w,46339 +umee,umee1sa5azwgxeapnfxw25j8234vh30ku2crepau6n9,46372 +umee,umee1ph03skta7ye92uw0vc85z7gueelmjluty4ndhm,46413 +umee,umee1qq29rk7u5fvx4ms02q3u36qexc4p6zmx4m2jm2,46417 +umee,umee1fxua2h6u6p9sd80j2svy7zu9fhhdxgfjfvm0gp,46441 +umee,umee1l9rtje4ef5sthj5xseu4uzxflvmtc4sg94wa2w,46588 +umee,umee1mcfv0s6ax4vzft7th7lf7fxkhq6ackaw67lelg,46605 +umee,umee1y66zhtexn5ryk6eqsjnfyz74d858n74qz7m4uj,46665 +umee,umee1934lkq6gkf3j6gs3cuzygmydmqpn65gmmhzect,46674 +umee,umee108nyjth2sljpxyrzpklfgkax3w5kre99p3k5he,46691 +umee,umee1ufgw6k4vacmjgjfrymek48l3v3rm63uw4qd2jt,46759 +umee,umee189cmn6zdg9x6zlx3rvshdrgyd5pyyccp0aamvc,46771 +umee,umee1k2ud7ll5efapc57uyjzw3w6twpu9l8ly7q4mvf,46773 +umee,umee1ja73gla0wdt7vtsv0weczjrc5h3mre8w6hnmer,46971 +umee,umee1u980dwjayavjj78vpwqj6p0kj5x4uft0tqsmw8,46974 +umee,umee1qg5efqt8628ctrjwfr32f9qys0cdk2u9jsfw2s,47000 +umee,umee1vsa8kl2gwqqqlv26r0w4mf5vf7u9y4mdqtkpp2,47052 +umee,umee126pq3ajt59jxlyumnhw0rzsqa0lnakhmzmt207,47093 +umee,umee1xk9q5pcgdwtmz60xkc7wr0z3kejvqkl7ljjt6d,47119 +umee,umee10a6clggs66rdwlzyun886nndvegrg6a7ln3gnh,47234 +umee,umee1hh2c4p664jahaf6cg38vrw7s7cxlgtgg0heksf,47269 +umee,umee10rtflxfcacs27t7el65cz2wn9jdzkgay8tzyw7,47280 +umee,umee1e3qvqsy8pcq6gypdadtll7rax5wqcy93lw47ec,47309 +umee,umee16aww739z49e4v5e0k6fyvysguchfg2p80w5std,47325 +umee,umee1un5jap5dsfwg3ahmw5s7fhgycz4cvkx326ay6e,47537 +umee,umee1l3s2qy00xzvt0ymxu7wywzsv46sl4xh59cucl0,47598 +umee,umee13mdtxuc8zqzprl60r00f6wes755qjv7jqxhjzy,47778 +umee,umee1vgmgn2vlh08zjcehlkawkm68msuawu0kscze5q,47778 +umee,umee1a2y8ku22ghemqv95dzm0as06sd26e7jut3222s,47862 +umee,umee1wcy92d9c9lggvt0q03kuapktg5s9s6tfdm47zy,47873 +umee,umee1t6qyslqrtg7wwhflsfk9ema5e0dqns6szj82vz,47877 +umee,umee1gvt9l5tshr0fp8ksl2tuem584z69eyvt9lqtxs,47945 +umee,umee1w2zar5fvtgk9mk64n42g65adwj3dcw8735kt92,47997 +umee,umee1aeckqnzqq8yresd4hy7pwtyvjdwzzwf549tmt9,48073 +umee,umee1z2h8qstwqt2jpljuw6ma0yz6qhce6fe4a6kw0g,48134 +umee,umee1t36cnacr83tdljnnv9qv3skndfdslwfdp253rh,48137 +umee,umee1rlsdrt7m2aat7cvjvks00n5srq5khllqdtvsz0,48148 +umee,umee10p6e9pdxjsac56q694nacz9e6g2fdzavcxmk7r,48207 +umee,umee15j288apeed9xmcxe8kwaqtpaw387kl5gnk0yjq,48240 +umee,umee1cgekxjacxnnv0lc0ddk8cduprm4wzejdmvkkgq,48300 +umee,umee1nj6dh7y6r7l6vfz9zpg09smejs4lk6pqgshz5l,48320 +umee,umee1rrwyuvepl50tejjt96ek8nmx07ns9j95jgd47w,48328 +umee,umee173kgc02pxsu9v05m83aq3nt86axsn52aaxhydk,48340 +umee,umee1fcrq3rtmulnmppt0cfg80lsn0wpx3knwve42gg,48398 +umee,umee1zczm4l40msc5j66764tf9pzv2rx7h98z4ncgdr,48403 +umee,umee13jttuakcaz2ppq7ek8g7enfzpeqc2wu28dr0l3,48443 +umee,umee1vaka3pa3pvq3tmmch2w7ckq069v03vwv3nd96a,48498 +umee,umee16ah3rtvgwprygrz2vc4fn34grmrx6fd86kzl38,48597 +umee,umee10dg7l6cwrn4lz7avghze6k0cflxxqpgm4542ge,48621 +umee,umee13pxnf7vega3u0z5k9577avx72fr57jk8ry0pp5,48627 +umee,umee1289hzga3kzjz7s8pavpjg3culqas9wzhp0dn5x,48628 +umee,umee1cwmc3cj7plfqfw5ftp8wvgzw960xv35m9crkvy,48647 +umee,umee1n60qnj5zqvmh0qnnxdd3hp5ys8dp47kr9w2e8v,48654 +umee,umee1s7yhq4cqrat4kqcqqc4jv7kz866xal6zgz50fy,48750 +umee,umee1mdlykxslq6mvnw2uxkxfrkpn7a9asvg7v7gz09,48816 +umee,umee1qdt93hpdjgert0xnszwveey2n0nauy453el65j,48864 +umee,umee19e8wdu6e0k7pplw7zsexuj5lznpeu29d9dz8m5,48872 +umee,umee17c2zvtkxdk49kefjpzdy92p008u3ec5ay6rqx6,48999 +umee,umee1dv9ykvjlxj9ehfa77qcccnz58c9qx8pc094van,49000 +umee,umee1yvsp4fvj6wwh9wwdqrj4l86nf2sz4czglsgddx,49043 +umee,umee10wrm5qakrw8s2w7e0dplru6d8cx9vtl3qp7wp3,49068 +umee,umee1sklxhewwzaxv7289ktpgjhtxgaqjekxu0a0csv,49130 +umee,umee17ufgxqjadgz5wll5tfncswczkr6pzefrn7p2a0,49151 +umee,umee1fk9lmlessecykrmv2tzj7z07eryjw8yvpann9t,49157 +umee,umee1jjx84hpmj3p8hk5vhgzzcafrzkkt2ueezcphdc,49168 +umee,umee1c5tkr33wypezsfy02wl27tmx9852l30p9weyd8,49272 +umee,umee1msfyugg8z6cer3w2dd4fl7wkw575f4slu4h3z7,49455 +umee,umee18eae0ezxp7vsdamw7d0ac9wc3axea25ejmmedk,49458 +umee,umee1hq8tlgq0kqz9e56532zghdhz7g8gtjymhj90tr,49487 +umee,umee1jujvq4m0g5sftgps479h963ph5djawjzmgjrn6,49570 +umee,umee1k93scqlcjzwakr20jzkmvnr2nnzrwnln8xkztt,49583 +umee,umee153dh3f4jcf6m2anucmngjlczf02qmxg7d3vc6j,49585 +umee,umee1e8ygf87r9z6x5gndeh4ytajs6p6ntzflueq8zc,49588 +umee,umee1lp43mmjg97gcg7n5a2tynd0q4hq5f5v97hmged,49694 +umee,umee1g3dhll22talg0dekvyduangkpgrceqe0dm3lfk,49698 +umee,umee1p45k8yndh6m2ktz99gw9yj57ca4x3vfjtjy37h,49708 +umee,umee1tjjxxje9vp6gyudt9v7ve507az9qfy6yfy60np,49770 +umee,umee15vayuje8p7w2xuw9sta3lgum48gac7jfdanuad,49828 +umee,umee1hj9gfdvnxq94msn8ung6d9dz2zlewnc60pecag,49844 +umee,umee1nn2vd75r752x9vwm38ldy0uxyj6rqvlaff7hae,49866 +umee,umee13k2m0t3r7manvp5xwppqlmxyzf74vrxyqen2z8,49935 +umee,umee1uh44czgtagk55qtcfn5ecvkwh03emu9e29kqz2,49949 +umee,umee14ug2kqr858h0xslszu3ghz9fpr5sxvhq08tux4,49965 +umee,umee1efj6emzg9zp7gyxre055s3kdp8j595jwm7ywht,50000 +umee,umee13drpvnuw7kg9mg490pq9xr077xluwn0vtlfw8t,50000 +umee,umee1x2a8rk95ycjm8mu4atregucletl7y3urtuu53s,50010 +umee,umee1ftgdv75navpvelzr0s7ycxy9v44a2tzln0dvs3,50020 +umee,umee1gj9tf53wpcvv9ss2p7k848e7fu7a7030s8w47w,50028 +umee,umee1ffh4684zn3u7hyscrf2ktdt6fwfuau8ff7ux5a,50055 +umee,umee1rxsxu5s5lafcza69nmyq6c56tu7lw0338um0jr,50056 +umee,umee1t9khn008l8fj2m5gms80ysgf3zh0sxa7q8rxs6,50064 +umee,umee1pn7txcl84yd4ht0ks5nlddjkakujjqzsxxxmsq,50065 +umee,umee1vjhmx035xuwv4fs2946cj726m3xy6pk7kvvwrt,50070 +umee,umee1dvttl24pwakynhegamfcdwddshrrjpmd8avdf0,50070 +umee,umee1m8tl45qn8kfqahatfrm5rfvqespn4j7cac6j57,50080 +umee,umee10haasly84npz2da8ssu7ux0qj45x8pk44xs39r,50100 +umee,umee1lgk3e6d7l962fhl6jmjkht42ptcq0yyvcrf5c3,50100 +umee,umee1czldp6wh0uklfh0spds9lzdu4z6lxsu3sns8jl,50100 +umee,umee1kd46cjpfajcs70ngspgzrwlua7z7rmyk5rta6r,50100 +umee,umee1e9xrq5e6uj6svyurelkpxf3j29mq0gmg2gdfxl,50100 +umee,umee198d953pjrz3rvsg9qf7yjyp3ulyv8drtgjzm0s,50100 +umee,umee1vlra9uycmdwfhaxhksm62u6c0aw8jwv4zxrx2s,50100 +umee,umee1zks8xqr2kethu93m0s8gxypa7qjtqjqm67603e,50100 +umee,umee1k6ktet9dmmv7myndz0a7ch6vpzsqvr08ffn34f,50100 +umee,umee1xw0ywajp0q38r8lukjtnc8yumh6k9r7defpx4g,50100 +umee,umee1x76ksmdh9k4e7n98vjxdmunf0eytyzehuk6p24,50100 +umee,umee1mcntdew27sr6kesaqn66fffy0qgcwyhwy56qwh,50100 +umee,umee18eelt57knlnhg3vgahgslgq8fnjjxypgp7cjlu,50100 +umee,umee1f8786q4aq6yes0cfj72dneq2xzfcca0naqexpl,50100 +umee,umee17qk3s4rl56r2a6a79lklwe9yzrxmertn8p3nqz,50100 +umee,umee1n4a7szqm4gu0xegntwy245fjq8tlfh4v8tcdke,50100 +umee,umee17atl522r36x383uf327gtefcmefxe66txchnmu,50118 +umee,umee1lz3h6yp0k8khmuqf0r388sk0drtsf2pl60yx3f,50169 +umee,umee1nhtx0xgxdz2qf0rqgsrvqsvunxzhl4850c7z5t,50173 +umee,umee10rk2v8pxjnldtxuy9ds0s5na9qjcmh5yk4fp4g,50184 +umee,umee1p4wxarept0vhet0zyh4em7yjclql8c7jpf9tls,50194 +umee,umee16t3fqk7z3g6jk0ly3pg8a7xzd0hzfjg26g9mhf,50206 +umee,umee12c3v623v46pjfesam5q6z5tprrd3l4v9hg9x4k,50215 +umee,umee12jqrsvtm37wuvz0m28y3mpchx6h0t4d6wtthaa,50235 +umee,umee1llcen4rynmtdav4cmm69m5w0mcww60vf6l4rsm,50267 +umee,umee1pxqhkgj6tr7ejfg2pyv9v5sekqncv8mm4a3t23,50279 +umee,umee16kuty7976aagljezwpxajjd2aeytk7entjmvpv,50360 +umee,umee1273wn443l8snrneyexqa59t80qdwwws530mp8t,50393 +umee,umee1cdlzshkqftquxdvj6vty4mz7kh7gmlae6vv57s,50400 +umee,umee1tt8xkvvrm9ec7r0zr4h6u8lvw9pwv7al5kur6m,50446 +umee,umee1faljfe4f4t97yrdgsg2dvjkga85rzklcgey065,50513 +umee,umee1k66ngltrgr9eahmf9vc6rxj2jtsc7fpzt70z0n,50539 +umee,umee1w8enesgp9rgdj0gxymw4nactpekr09uvtj6chx,50540 +umee,umee1kg5rnkqzcl759ks2gf7tw8l6lmegavgnjugz0s,50555 +umee,umee1j62k88ajt6xnpsxs8a0juzh3fsry7s7xsxyw96,50560 +umee,umee1expv3a879d8x57ra9ju4uhx7xgvhqv5gj3vlt3,50568 +umee,umee148usgz24nqqgyrl82yz2sy3gtk50mc3lrhcdl5,50583 +umee,umee19mk9lhs76a5h4s84qsfdjggt33xh7xz9alnznf,50583 +umee,umee1mkew3ztpct6d6zxs5ksjeu3cwdu47plclev22w,50602 +umee,umee163a49yvxxelnskddk3j6w5mnnu4v7g2f92vmg3,50711 +umee,umee1p57tugeszvnp6zm9r02lgjsqsffsudf58fazs3,50722 +umee,umee1ax5gecwl9l5gunjxq6s8fkqjsymuysjfqq9ztd,50729 +umee,umee1tgeeghppuvptg3pg9z64htdgnca6527suh2t6h,50762 +umee,umee1s7p8qqe7ucs23nmnld3p746hsk25aujt0w35qy,50775 +umee,umee1cl3q34k0n8qyw5kc7hctu53ll0hwjp58tp2aw8,50800 +umee,umee107acn9rkhhh94fnt72g8f5vcftk4gzce0l5488,50819 +umee,umee1msklqjwekhtll5fm0x232tfxp8c3430deqgnvl,50911 +umee,umee1jg28zx2mtpsyuh3k6uzchnjaxxgpytlw3ky7w6,50919 +umee,umee1yyj2wyqypyt4na02rl2wutv08z5g65c6dayw77,51000 +umee,umee19mnk7ugav07n5kms2mfslu6a8dkfm9qhfdh8y0,51052 +umee,umee1tcrhh9luwy78kxq4ryav73wxz53qnwdufncdyu,51135 +umee,umee1v09lht2mml9rpmfqgu6jmk7lcpwgqx322m23mj,51146 +umee,umee15zh3qvvckdyd9cmqz5vyhpz95ywp3lulu6zw60,51239 +umee,umee1kfvptl9s7swz4v3tzhfgwav30t353pteeychu0,51277 +umee,umee1su2m9sh0t4thunfpfxjg0f8lk7g6kx83j68cnh,51290 +umee,umee1qrupwluhkgz5xv226k4c0ls47kd93fesq4scac,51367 +umee,umee1fz2q8eew92s577f3vqqflaqlsh7nzqve9ks85k,51404 +umee,umee13aluyh72snykxxr6pm20y264xsaed4dtvgvkw2,51425 +umee,umee1n8j9xve22sh5arf2kfdtdde46udztada9kd322,51472 +umee,umee1jdy8apd56jnxsdr3zrkkyns2t82rlly98dcavv,51617 +umee,umee1jx7zl2c9h4cfneffd023fz9320y9pqqugzvg9z,51650 +umee,umee1unxx6xef6u4n6a3hldqv9gfa62270cscuc8l6g,51675 +umee,umee1hmaz4wr58k3lw7h5nt7meepsjh44swwj62vxdk,51678 +umee,umee1tp9scplfeheksreg6mcehnl4lccqqakcfxq8d0,51729 +umee,umee1murjaccvntxelumjssy0rg3e075zyt89mu0vas,51789 +umee,umee1md9zaw7gpnrfl2swql6hjvgttjuf6cvk3uqdt5,51803 +umee,umee14ml58q829cv60ulmejc0e5a7ktghngaqxzwu4h,51855 +umee,umee1rvf3l75q9eku6h0t2vrj4vnquwzkkff2yvy07r,51974 +umee,umee16zmeh6a55yukwfp90u4q4wrlaladjtrf4hncw9,51991 +umee,umee1vg6w98uueazh4q26ymemd75xge5xzxsm3358nj,52047 +umee,umee1d8lxxuxexhnntk9kt55l0jpufee6twzu7rcg0r,52238 +umee,umee1mkv4myppz2w0d3nr2dh9fv5kcwaaqnzfvhu43r,52253 +umee,umee1shmtvpfa90g5w72k0zf7xgfscmv0x8deykqskn,52338 +umee,umee17q82rs9xfulfkmx8hyvq7227ttamscvdvdq2r4,52340 +umee,umee10fxe6y0hcj9plcfu5c6gpcweahj5yerus37gpq,52381 +umee,umee1n5av3pc4hp0vfk0rvm2cjkw6naj8sa3uwh0alf,52440 +umee,umee1lsshfz329gcnd2mr5pvcswdp02q9nuez54yd97,52509 +umee,umee1hpt07lax0szceas9lr9vdsm3c9uqn40v9klnxh,52519 +umee,umee1ewfp7u2dx0pzm62zr3j6lj6t3qp0elqpxs2u88,52539 +umee,umee19z43duth6lq0v23hxez2vv9528zta57gnaeymh,52714 +umee,umee1kef7j570x0kn2mqt6mxg3qwfgmqef7mkqymwue,52840 +umee,umee140m6fdkkkkhcm75ppp9h4c70hyj8jklpnugnwz,52840 +umee,umee1l3pss6uwekl5ev4nll7ucjxfszqql0lmcprn0q,52898 +umee,umee1j3uqha296k0y5uhtay034urmknuutqaftk8jly,53037 +umee,umee1c26gemzgtump82gw26wxxrtzr79mpxtv4jhsnh,53258 +umee,umee1qk32s5ndae8n8ucle7dermqv6gakxs8mnyxqxw,53265 +umee,umee1uwzhm3247v526aw9lalx2nl7dej4qq4u9el523,53324 +umee,umee1vzw79rr7keaw33t5v8x63vwu44n98eeh2jlkdu,53749 +umee,umee1k9ur3v6dryftc8mctrddtxud6easfrdqt5nvnl,53760 +umee,umee1swty9y3wshvcja3rzax3cgpmtqyz3plze6y6vj,53774 +umee,umee16wlwx4pkkujt3yq5whhhr73r8pagl4k4dz7f7q,53904 +umee,umee127hgjjrst9mngejd4l4wprnnppwl6e22g3v70j,53929 +umee,umee138z4jf57l82q22f7lkeclzmcxvh4sdjl7e897c,53939 +umee,umee1a9h9wjwpaxhuu9exfjfrky6rwzhtungd3u3g2j,53996 +umee,umee1jwx7myd8cvtsjcxp8wx9670608rcxrsnpd4n0t,54014 +umee,umee1hnxd25xq2vn6j8v8h6xn0d52yqpsdnypuackx0,54101 +umee,umee1gk5fsf0v2ydkhh5u9n98xc2fh2ak0fk70kg7qd,54136 +umee,umee15q08u2gz05hshx6hr6pxq8auzuysl5jv3mfagq,54151 +umee,umee1sf6pdy6lhnxpslexgs4tu2v0zzsgqp8qjynp7s,54225 +umee,umee1h43ue6uzla9xpddkx6y366d0lta6f5aefhledh,54280 +umee,umee1rpjm0ulyz679sd93zjc2j2xu5dsaqd3up2yju5,54367 +umee,umee1xwseskrmnxrvesmad0xtyfvl3lx7xzkkehw7jj,54389 +umee,umee1ezfmsw4628rdhg7d9xkmrnamxndsj6j8lz6pxr,54566 +umee,umee1p5vkazhh6yjxlrgc40n604rwdwpkv5r07yk8ky,54660 +umee,umee10ga4e486058gd5qv9h36hpkfz52jfean5sjez3,54661 +umee,umee1fdf6fe8z0wq8rpjnphc9x9mgh34auq20pejawn,54757 +umee,umee12zdmrp96wr0sccskearc0j6c6u4lpx4raxee9s,54783 +umee,umee1s2xehvf79qfq8jtv8zxh2dvglfvn4hjd7s5d7y,54811 +umee,umee1dm9ch6yvwrdn8ymvcwcdltue8gsjsywuwqd8r6,54822 +umee,umee1md6yn6jhg4a25hhg45ep83xnge82w4hslpdfad,54829 +umee,umee1zvj80m9ckmtp5cglwt6wn0dcs0y9cedd7rwnux,55060 +umee,umee1mclmkuu6ngtkg23l0zcrftz0cfzvhrfd2xlm3y,55061 +umee,umee1unmgrn8fwec6u8wy48ysztzne7fqw2qdplsv3m,55072 +umee,umee106mxzrdkqy79p8ycsvyyc0h2gku47qm6w4fwuc,55081 +umee,umee18qxc4qnxhlh6ewhce0l6hk3mpsv3t347z0ejd6,55198 +umee,umee198azraaxq0pjlnwl7us7essh4kccpmqsz925pl,55270 +umee,umee1rstu348zc6taj97sq38hql8nkp6j5r6qs2y0j0,55332 +umee,umee1d78j73zqw7fa2sxrrrqyaamltj0xffewx7mn9z,55460 +umee,umee1gvxp5vgwj5kcgw4lv2ekm0vcnszsrk743amfnv,55522 +umee,umee12t93s7dugxv492nrc4dq5mn9gxq7zzxupa5u85,55543 +umee,umee120xqv3wkw4rm2uval580alc3rqmhw2j86zaklu,55676 +umee,umee1j3h6z76sh6cpujkdvlchl2wfgk0r4ny6vj7t0e,55785 +umee,umee1j44m97etzffhd0hlu65z5qjs3pwgfv8n8h59e8,55803 +umee,umee14z72yxnnpum789mk9nk8da0nqj73df7uprth6l,55842 +umee,umee1k03hmzl873vy4ewprydz234lm8wqpja7u00a0a,55942 +umee,umee163xp43yf8xufdkfhjhkaf20e687t8gymtyjmxg,55995 +umee,umee1vs69n5t0vthd2urwt7hljmpprzz65jwknfwr78,56000 +umee,umee1u4sjq6f42w9ldam5tfugvshumva9r8dz9hpuay,56054 +umee,umee13d0r9spghxx63wjczvvtlj30vua6w8gsqq2e34,56096 +umee,umee1f52gvt3xl937ewfa0q42pz6m8ggqr47lh3hgp9,56122 +umee,umee1d9wts79nzgs2svsv2q3cvtvrjuwlf667gnuf9s,56356 +umee,umee1zd94fcdm47nasfe9rh6fyfyw4s5cl5hwqn9xsa,56369 +umee,umee1x3mjvz42cv9ptwmmas8l8ar0mqgpkw796y6gma,56422 +umee,umee15xt23ctrl2kqzrc7exdnxs9uqwz2hccyayhx03,56522 +umee,umee1dhrge3zk76qne232ed0yzrmw93sfedgqwamp83,56527 +umee,umee19za8xxyjqykx5hu34znsq0dj7qcdt3y6rru89l,56541 +umee,umee1eqgf5u8e3plcjtfykjcl5xm0j8mugk9a3acm40,56568 +umee,umee1qaphxxcc6gg0023cnv6n05yrkkns60kemmvpzf,56668 +umee,umee18al85r0sunaj9yn2v7fnaclhjvpdwzdvv0u7m4,56670 +umee,umee1ru6ld3xj970zay5gt6pnxl735p4lfcqj0y4pr0,56742 +umee,umee1w9xatjv7s4m9jw4m9tx7reqcdmyt9mvqu40l79,56936 +umee,umee1q2ayeng24k8gqej7tllw5azen8zhreqc8d74ad,57023 +umee,umee1ajfgtnyfpcrxj6quuf2v2ryx9ryndfpylgvddn,57045 +umee,umee16nqg5v25vywzn2zksdqqvrndsk002l3km84qux,57049 +umee,umee16xvd0j4cgnkydxwyfuryrjtw24hqgc2k660f4k,57076 +umee,umee1s0d9jvugwshucezw5r7uutw62dvj654y95x59m,57190 +umee,umee1cqd8gt04s0q5vntp05des68p0wkpr50jx0hpqf,57193 +umee,umee1zxrefv65cnwqx9g09dvvs2fn5qn520klxlv3jr,57300 +umee,umee1p4gcnej34hzcjzmfaj8shv5nqqgn7hav4agu82,57347 +umee,umee1zgw757f7pksgvwcn496fmdaxxyjr3gh26d6nyj,57361 +umee,umee1xjvhpmflhue38mc8j75gqj2h0fds9gux65agsj,57488 +umee,umee1a9c6yemjxwvtpeat8n82233fqp6g8z4jgm7lte,57541 +umee,umee1ajlmqka2hlzhhxxevg0scmsc4q5traacn49dhg,57543 +umee,umee1dgmvcgdhuw7v9qgjp3gl9ja3uc0vhner0q3v7r,57554 +umee,umee1lmzeytaslf4urxf2d5pr2agjlhamhqhsryy0l5,57616 +umee,umee19vrxvh7m90udtvq9cwcfa4x9w0fgf430w3u0py,57774 +umee,umee1nt9qag8mly5yq4432vdv9v3my8ytfrl3sgfw66,57847 +umee,umee1mnfnuel7nalxnmw0lp3e0eycxnt29e73ul7nkp,57980 +umee,umee1zyys4wusw8ce5w2lsylhjze3ry5dmvnv06smna,57980 +umee,umee1hzx5qayu3d0ygsrq7mzd3gr2ggpz6rx9uc9q5l,58056 +umee,umee1qr6gggq8953qetshu7l03m85cmdlet8lct4que,58119 +umee,umee1xns9028xjlm79xhv8843vsywmpmhm4qr2ntkuy,58136 +umee,umee1wx33kqfj0zs3kpsu90resx5e7zn9v5kh666pzd,58171 +umee,umee100m7meqf82hr6frwn3x7sm0pm8682v405gfqqf,58326 +umee,umee10780xygq2tv4amjjtvrh4sm579cprug5qnurzw,58460 +umee,umee157ahtqs6jn5ylhvpa9mv0mvgwxvngse2uyyxuc,58581 +umee,umee145dqpm2xepxxpyuy9rg0ew365uhwmzz94ze8cj,58582 +umee,umee1fzxtc2659y2qtwjf96thkygfgssz2jjfl9pt6z,58588 +umee,umee1drh2vdmen44g2g5nq8lwn05z6zdmldkp8u7xsa,58625 +umee,umee1kafc90d30mvp2hwfuvul2zgzw2s70dyflw2sdm,58734 +umee,umee130w2fet9h2k7j26tp4dp6d5zf97gdt253prcuv,58952 +umee,umee1laj088c4el7vkgp476uy9d0ahzmqfrffuj47lw,58960 +umee,umee1lq6e0385p2566a29m6cmx0dkl5px5t2qnjc2ks,59064 +umee,umee1g870tyyw62eallfdu5a38x4w8gxpgnkz4dzlyk,59084 +umee,umee1zmyldsr4rwdcvzlnfdteevufuqfhlvny7wyz24,59086 +umee,umee1dnst3ud7sker9kcvrx33xv0etae2qmd2qlcu0v,59145 +umee,umee1cqles2ae55e9pthgm4zh5kap3ahw6zae5lf49m,59319 +umee,umee1la3nm7ett2dagvk23v7q23uck9vg4sfuvu6ecn,59420 +umee,umee1l4sg4djdz0jag3630u69fnje3gas5ae680kda9,59431 +umee,umee16ng2gten0j8wvzdu2p0hkqqude6rjgcasyafue,59656 +umee,umee12kwygqlsx0ydr3yyj3shedpxqwne86ael0ne9k,59665 +umee,umee1rqyyttavvav6ghjn37uklutgz6a9z6axyelajk,59929 +umee,umee1pznv0f6zkc38ugundfpjteyjncge74c5em3y4k,59954 +umee,umee12zf52lux9kqrqqpyawrufl67js4525xcea4ag0,60000 +umee,umee1pvu65ccqw3fmgq88j2j485wc6qm96nx7xmkl0u,60000 +umee,umee1vpclqgk7uhqkkxuuwym9vhzcqm90t3whwakpgv,60044 +umee,umee1myp00843acw2a3mxawfkhuxn38adegpqpkqqyq,60108 +umee,umee1reush3l89vgapc2splq9znxx8x9wxu8zams4vm,60110 +umee,umee13fqztgcvpxukc7a6ma8263qhkwmkrme5r59su2,60126 +umee,umee1s5nwu53j3enhrrtrpjm8cu5pf0w4mgh8ltz3tw,60222 +umee,umee1f9jm7s3am0c6cqqncxmq3u54cjph9vzmdxhc3t,60280 +umee,umee1220zvchrc8zkx4shrtmpr2z8rxs7vg8c6ayh73,60318 +umee,umee1kqldtv8l28jgc37rk3dwtj4w6lqs0n77g55yu2,60408 +umee,umee19pt4c8kf4jc9gjhzgcrudm8zfqe3rtnuyj0zpy,60465 +umee,umee12q9ddalmaavx005e9lfe6qrg96gex7vfd7cqcw,60502 +umee,umee17n29htts9z3wd0ydtq0uwsxtpw0hs0c5d34enc,60512 +umee,umee1kudunp9r9nhmhhrjjcspas8dq65e0gm38emy7w,60587 +umee,umee1kdev4zmqatyaey0235tlqh9w9uwr37da64vata,60603 +umee,umee194jshmz2cjv53w4pa55rg2u5l7jzhw7f2vhvhp,60635 +umee,umee1hne6r3kku0gfpaf9r86ea5m3sukuvx3sqshknz,60732 +umee,umee1qysqus0htsj33glgm252rt756t6hlknmvfu8sd,60826 +umee,umee10y6zdz8qxqjm8y5xy8mdlxs4r9k0smy6n7m8uj,60893 +umee,umee1czj82jcsz4jrv03tgt45yylv2pvth8d3srpfa3,60900 +umee,umee1qktxsvhryw552u5wcy3nvv0fhmwgxppsv5ktu5,60906 +umee,umee163l639cgnn04l9qttknug6xzhu723076kqjczr,60932 +umee,umee1nvdjvs7tkhpnr6undjg70yj6wc27lcs9qqzetf,60958 +umee,umee104a0v9wazwkru58zvrmk8jc4yfff06u4f9mmer,61000 +umee,umee1q7nmnqv82mr8tdvj8g58jkz9hpma2v3eyehhjf,61332 +umee,umee1kwyyvv44cztdnhx5f6c8z05peuv554j2dy0a76,61348 +umee,umee1tgv6n2x96nmkshnquuexuq9fafdhw6v7ht6hv3,61402 +umee,umee1rd8pt9feq2x2u7z2vctl8u8ny6pf58mese9cq3,61439 +umee,umee1p809xw0u0w5aw9ny087yw8vp4m83y94lamdp33,61516 +umee,umee1uamqpfm6jwtxdths7f60fddkdngng8gw07ely2,61546 +umee,umee1qsm4d8k2rdr95g32f552wlha6g9x8q7gfy4xn5,61571 +umee,umee16704fu9d05u5z6gmd0ykqeypgc0amtsp8mjmff,61593 +umee,umee1ngp4e2dvldftaygwcy9t74lasepapmcuyqx58r,61638 +umee,umee1zjtvs7na8mck7l2cyhdt8cnz2jzusxtd74pce5,61727 +umee,umee1ejamzjcl75h7dx8azmklj7w9xsltqrxwxzt5kt,61746 +umee,umee19ddtm4z8kctfzw3fn0yem2wg6flh6qh8hr3h0g,61784 +umee,umee1tmd440d2claq6tmgrt8wz5dua2tf8t3ecqs7sf,62000 +umee,umee16wa27dw6uzrxwp62avasrgafk9ga6emmrpzypp,62028 +umee,umee1kkw073zlldnzxjfvugaal33mdcg6lmtm4v06vw,62104 +umee,umee14p4y4v6v8jnycghpat0pcar0gvnpdm32e4hugv,62116 +umee,umee19wp4n2mul6md7s7jr0tvfd4w8nnnrfzm88zfhf,62138 +umee,umee17fc4yx3umkgrz6s4wqqf28238kalm4cz3qr02s,62161 +umee,umee1k6rfjcsf6ag5yr7dcq60nl30cp9k6dqaqm8amt,62385 +umee,umee1utj0slgn429aew7nrgy36jejcuu86e5cftjtd9,62757 +umee,umee1psqszsuaqfavlxwjpwp95ws6da6srz6wgncjgn,62776 +umee,umee10uk6ssge95r8cxqtxx9u04qa70z7ajnm3w5pqa,62813 +umee,umee1azmw0shnku6067k9djga5584vl68qlwfp30xsf,62941 +umee,umee15e588aywceph2zd54gs6gjx4f8lv937hycnms2,63074 +umee,umee1xr2tzk87d5d73l6j0myegmw8hq9mnsmqeryj73,63126 +umee,umee19ld0jz6aa7dxyhweddptgat2raan4mshcdyr9h,63152 +umee,umee1nf0smhavdthxdp8wcudyvedljka82gxu2wl8v5,63155 +umee,umee1dffcnq9v09cnd8mym86sx4jkm85f30f8c8wkag,63170 +umee,umee1vgvmaml7pyvmrs0npqgqqhwc5q4kxfmlmchucv,63266 +umee,umee1lq4xh9ne0ueqs6d902xyp8uwn50na362xc50uh,63317 +umee,umee199uxky9n4frfyc2wys9ewd8023eealn63v9287,63363 +umee,umee14fanh3ml3ucpxwd8f3036w37schwyr7clcctn7,63378 +umee,umee1ks3mvt7fd7qpct6jt6t69aag89qcm0unj6wqyq,63421 +umee,umee1waac73cpffx7suhpkvnn8w0a8s2cgzn6trr3vg,63469 +umee,umee1tuzdqwynm2xtpm2jjpr80cjrf46hcp2nr5p09v,63584 +umee,umee1uzh9374qejqepuyl3r57e49tdzhp92mkfcr7kr,63606 +umee,umee1lch2ldq944paxnpux4xkr8e20unqfv90mua7md,63637 +umee,umee1mejz4kgcmkh9ffzggxunm07q7u3jygllsddqnx,63647 +umee,umee1pqq98yzcrp9l3y2gtlvt4492w0t4axqjwtgy3q,63724 +umee,umee1hz9xhyuyyfnln0h5cdqjvzx5atyxlzdxuk8raq,63959 +umee,umee1yext7p8p8zz5cfs9y5afjuvada2x5t7he7hcvj,64000 +umee,umee179774zrn5paywpd6p4kspcruaacj54g4ytkalx,64070 +umee,umee1ux3j2h446q9yf5dvsw4mwa5fnf07ja9vy6asud,64115 +umee,umee1kz9a3m46sxert8w2s243mkrkrmhrvf3lds6mj4,64167 +umee,umee1z3xs7f634lc4ftyc2fjuxpt2zyqadmnwcz262k,64187 +umee,umee1zz424drr3pf44pehamvqug9fdfjlgnhd8xwp3p,64210 +umee,umee1ckwfn7uztsmvwg9zpufpdm27g47f8udryjk334,64279 +umee,umee1tq5ser83585y3djhughx58mgq0k6qy5att25r2,64288 +umee,umee134le3mys7flr72yh3zfw24v8u9vnmh25guqwgh,64288 +umee,umee172lvxcpeusu2u4z2vcztek4dh2hftyk52fmfr3,64319 +umee,umee1gc6psr8p89h45r9wlmwkhjy2xpj02k4d0km5c6,64350 +umee,umee19mttj7sup97sdzq7yd0apvve4kyxru5v9rnkpm,64369 +umee,umee1npevvs7tc00sqmrg0gx04830rmhvmda667v7dq,64452 +umee,umee1zl4ed3ghq5gpkvu8c3rymcj752rxvu6ue5xqw3,64724 +umee,umee1fzx0ll0pz3vhzdag76fhul0x70ynz5xg0vu2q6,64729 +umee,umee1s8nzgwexdz8laux65600tkq6mq8pr6h53y950t,64796 +umee,umee1v97agk4gkyytpphhymqxhh3aqvvra3vvlmppn9,64851 +umee,umee16e2ng74swwks890qpqtk0x493nryurw680sr4x,64910 +umee,umee166cuypst6l9580kysw6kd7f59l5r0dptt5srpe,65052 +umee,umee16t720v9vjht00sgm7u04lmp45lq8y003y2fer6,65137 +umee,umee1lm2d5l43wwggmvnxzcw02cmcpsx58h560dmkws,65181 +umee,umee1d79j0k4y538uhg6dmf97sjtu6m5mmrw9mwgtn9,65208 +umee,umee1hrpzax5xwfv9fv496mecz0y9zarq85m7s4gkut,65263 +umee,umee1r7re9ruyaggmdrgf9gepde25n7ev0r6kdd4s7t,65285 +umee,umee1hntzgl4q04nhkt49rxx9zs03nqx24kyud39k09,65423 +umee,umee1pp5y2639h97qjpwucvfxnxrgcm4t7sujzrpgfw,65444 +umee,umee1qa5gkv8a4rzpncgkguv2szh5s83kh69l0rddnm,65679 +umee,umee1v7e0v2casqdy6k98tpq89nv8v7npg06zt076y6,65726 +umee,umee16fm5l9g79c7h25sz7rfkm4v8fk3hnfhvlhu4ay,65747 +umee,umee1dr7cu8fk22zf4t35smjc20gh4me2rwsdd3f4ah,66030 +umee,umee1snf48lzfx7t05ld62vn0er5g2kpqlrm4u99q5h,66074 +umee,umee1nqxzp48hcejuc2722tv9qzsychpmvynpv5wke9,66125 +umee,umee1k38mrn2slt0wrpreavnujxuavvzdvjpgzv7ysn,66221 +umee,umee1mp3surngf35psd2yca99xwnhvqawn7cc7w8ugp,66231 +umee,umee1kk7qr9haq6zmv48zzvd7rew287a2y4x7627x6f,66272 +umee,umee1mk874h0w0zr0thrya3h0jxt5fpcs6yn6e3v42k,66315 +umee,umee1pcga5s6s2eyjlgnm4p67vxr8v67k0nh8kzf0q9,66587 +umee,umee18j7dscxdhda65rkvjrndu753prn6nuc2dz36xc,66622 +umee,umee15kzyw7at85juqlfc04pxfd02tj8y3aagrw76lx,66656 +umee,umee1d7t3tevk4gckn6v07nqc869afmc263plk4yp9d,66745 +umee,umee1m3tp20dmjj30ad266nlqcrms6g6w3f4nh5u9as,67023 +umee,umee1x5qzgg85stwhamzcjfyuq5jtskr8p9j44zr6xe,67050 +umee,umee13qrd6wgmt2zww2gnwxc0de4tg9r49chlkdg6rv,67053 +umee,umee18shczdyxv6zhm6u3nl066q625d5armwnyx2k9c,67058 +umee,umee1zjw5ndqh6qkrld5f48w9l74ylftapfwurpalrw,67104 +umee,umee18fthmeax5mljhv7q9plpq48hacja79j2v9zj85,67233 +umee,umee1r2htvrl05sntfwqk5rwd95n92u0v5u5hlckd20,67361 +umee,umee1dmvf8p305lh6hgaz7a6k25f32sn05nw5lzt3up,67475 +umee,umee18mn0aly7hthem9h60zcdmnt6nak56f5clgxwcm,67715 +umee,umee1gzahjxnknwffhf86hsy7e4dfd94klcs9ups9z9,67769 +umee,umee1x3p2ux0srm6f926uhe8r7mt0jer23jszz0yk7d,68091 +umee,umee1yquwzs9qge3rjhnl2yka9natxg988dhkvk4qj7,68159 +umee,umee18u09fcxqs36ux4dqrxf2xwvhggpa7809hjms4h,68431 +umee,umee1v6gp7v9f7tzl8fqhp0m9ppsxn0g2y3j8ele4ga,68470 +umee,umee1pyjqy5l25fl7953n7ptfarr0mx3n4a6ctsr5vh,68473 +umee,umee1j5g8fgjw2my42nfxx9gudxrw646q4anx9p55ly,68500 +umee,umee1hnslk537t7xfcqn5p2u6vp0t9ppv6ls20k6987,68557 +umee,umee10tp6zckddjwtl22jdurra5yadx72tyx68jurx5,68757 +umee,umee1zs8n47naa4g4fec3kqyftdq2ksl86hmfd6lxp9,68771 +umee,umee1ukqdt9wwsl9gxegnr48j58s2hv9wrjyf7wk9e8,69007 +umee,umee15rl5ujhn02g4y3mlc0suzzsv7l7frteazhcyyg,69072 +umee,umee1d0tecvfqnnma9gzf50ntm8340fk7uetxa7yk2t,69089 +umee,umee18tgellcyxtwldn9ljfkhedyuuj422lurs4mjhk,69092 +umee,umee1t80wmptmp653ypwvhzrf4dn4amv947gvchndhp,69146 +umee,umee184vvn8eghfr6adt72smmagp0p2x2h7ur464p47,69265 +umee,umee1gpxwpy9k64pjvgn2gv6axj9exumzq98u4gmtwy,69317 +umee,umee1jh4udlrsargryrc8nd5cjp66x70c5u5xu0lydm,69416 +umee,umee1vgp8jcwphcktutrrek3wl24kvw42ufdra329sl,69421 +umee,umee1f325m5r4esk9xvrwvms4mwtvj35tp2aey4la4l,69580 +umee,umee178swfpjp3qwes3wj8ffzqla9m56ewzxm4mm25k,69591 +umee,umee1gxut3z9kvfw9jwmwlr7hu48k95lmaqn7x8wsvp,69629 +umee,umee1qlunalhk25c434q8vsaxu9d6c8vrkgvhw3gze6,69673 +umee,umee1t22d9y8zlp29tradmg69e67wv78kskpn56zkhz,69777 +umee,umee1qgz2q9tlw3m6e4hkx0h86lxu0qym0mgnjhfm26,69886 +umee,umee189dlg6zpfvmd6y8kgvthjz6n035hpn26n0hjcy,69911 +umee,umee1yav968y6mzrg7nlzdw95ga4cydzrdyvjne00hf,70000 +umee,umee1ye3mqqneekyz04gnlsm6j6zwve39kxva65wxat,70001 +umee,umee1jypndq0nyyle7088r5ht52qsdwpf48n7qm2yta,70053 +umee,umee1f7653xmmtk6c5ph8va37juwfzxdfcfw0x8d97n,70056 +umee,umee1e7enpekdj6w2352umr7m9g6m87rcj22nccxv6m,70338 +umee,umee1twkn26js963hg48t63lyuaj9u63s468sjuuskv,70379 +umee,umee1d8tath3srld2fupw96rxpp22telvrxawxn2emm,70513 +umee,umee1pfwuuq6vf588j5xtg9eyk6rwhfdjwasca0mpe5,70527 +umee,umee1y799ncy8zpslm4kgmwygprh787d0pks04nksmk,70797 +umee,umee1h6t6jhme4eyy3wu00x0gkt3s2smesragfkntuj,70934 +umee,umee1lu54nkcw0fjzlz4s65kv8tqkd6awm0q9v65z22,71079 +umee,umee1xzlw0edrccfmxhyruscja05x6eyhh0a2qqjtfa,71211 +umee,umee1sqv3zvrddzph4u80ukk3t0vkl5j0k5cvzr3heg,71541 +umee,umee1lq0lyqnullv5aayaes29n8mnl4u50a7yjmqg9k,71561 +umee,umee1dh3pl2e9swm478h085yt2tqxnvd8gxd24h5x5y,71595 +umee,umee1z4mz500mydhgs2vp57ccx6rmlxph200kavl0zl,71648 +umee,umee1svqnpu3twqqz7mzjnxwx6fkgyyl8rzzqfa508t,71896 +umee,umee1q77ms0vqt77rw5f27nsy6l729l3rdr7h5ql9u4,72075 +umee,umee12rege0n9rdfhg83lp7rn60ws9ezjfzplzeefv3,72081 +umee,umee1jyqkgs8q474h0q34jdsanue3rlg2pk2373pxpn,72131 +umee,umee15agthwtnfghg0k5ksf2ztu8gfczrqaqz0an54y,72177 +umee,umee18utawmxge83fyg3agnjflvc88pdwa8r2569ura,72290 +umee,umee197dtgjnh9njn23nagyjvldmzlpd8p0l8hwud26,72396 +umee,umee15csgxg3z9rf4e72qrvh52kup9u64wzcd42prm0,72427 +umee,umee1kkmxy4uyhh9jyxtz4cun076l5zcm63tkjr8ete,72452 +umee,umee1w5h7ztng4rw0j7zlleda7mc43vyenqu7l8z3ja,72515 +umee,umee1tma0d8ccdw3u00hel85ut70t3ycwkm2f78qumk,72529 +umee,umee132g47sfz5zzyzfn5quru555gx75ys6xuce00s7,72801 +umee,umee1dpw3seczzg4n8gv0hajl4xapl9h908refjd3ae,73026 +umee,umee17x9mxmwk464l76f8d7f0l8wx3ztmytp3qt6wya,73099 +umee,umee1zdtzcyl9erl82cp3x0cqh6sg9s8t82hqenhu5h,73109 +umee,umee1hkg0mflccpagey4czuemgmqpf6g7fv6km239ae,73147 +umee,umee148zkmsrzrj7hdhct7relktg8c4djsgtqdx0p9r,73149 +umee,umee10drz4849x4me7v6gpmrdlhj9jh5kwpuxywcqdp,73285 +umee,umee1jv363n9e44h4hh45kgr3x3dxaf5t6vlj4kfp8p,73427 +umee,umee1gr53ygk0c4d4nl0mq2s4l6x0r390tqj0xpa2ps,73565 +umee,umee19g8kzshn2vkm85vr67uxmx2k5t4jv0vy5hagpk,73715 +umee,umee16pz7nadwt63s2k8nmkgj300hppxjchsnqaeztq,73868 +umee,umee1cqt72qucgnaszhljrxrcs8pkv3j2ddyrrum4gf,73926 +umee,umee1q5hqhr6q5qglmweh6adlul4zjwfhclpjlkswdw,74000 +umee,umee1ljnysgh0fnah54zth54fj9qwfk5jvpuuep82ux,74045 +umee,umee10s5ez748q2sfnegs85mv8549gprf0u4vyscg4c,74142 +umee,umee1kyxmw88f865kd593d8rm2xtnny8dv4dr8wrgys,74528 +umee,umee14edxqwqdukl84cw2jpysxjm60djurrzxht9520,74549 +umee,umee18ksrchagm3gu3t9ajs00ahvp0ganf7lnnt8k8m,74654 +umee,umee1s5xan8dqtwj98u3xfqsezccq92jtcvtve2wu4t,74682 +umee,umee1ae7le3pw5yvyj5nv0f9frdctup6me4e7d4u4zr,74710 +umee,umee1ruyf80dmf490gevk84kyquzdw3u5mc0c8h5lh2,75193 +umee,umee1xlugug7q290388vvetwwytz43h6yxuk0z4lw62,75223 +umee,umee1tkxpesgk3jwxv3waggvl3jf2n03dyuqcunya4d,75238 +umee,umee1r3xflw86q093frjnxkh0f48amykqe8lxt8f7wv,75407 +umee,umee1xtyldrmwkaqqdatltx3mxxjq4fgp5ty5vudl4t,75577 +umee,umee1llt8r26q22j3pzz46zze6vw98zttxvzjd65kav,75598 +umee,umee1a0smck0s6kza5f8v5wth8u8darv5qn0ayynavs,75743 +umee,umee1je0k46p0v3npmmpk2fpaqu7yuzh6ahvu4y5uae,75870 +umee,umee1pv7pzslmhrwz3406zfjjwzfgjedeut9u37kfrm,75950 +umee,umee13hy56fv20c0wtt8apm4tqetl480lum3e3hljy3,76255 +umee,umee1fjtek4vx39pxh4jpav2992jddndzs94kaswczc,76306 +umee,umee17rq6k927dy3nvrqjjclrj2lu2naglc5c4msc64,76363 +umee,umee1dgz9wrt6xdux7js5lfxuwk9trnpxrmrmvkhwg4,76553 +umee,umee1exc8qx68p2zeyhf0j2w7s06vaj0la3s093a29c,76563 +umee,umee1c3n3rtvxz2fmvjdzzp6cea0slpghupajpx9wfh,76563 +umee,umee1agusv234n3maf6pc7fl2ggjskzljnj79c8lzwc,76709 +umee,umee1j3s57tmnf9s7v0ecxm2w5y4pquecuc88q6yr7m,76799 +umee,umee1czzd70nxnxrprze9gj6uq0yxzg58wuln33a68w,77088 +umee,umee18jh023ylncqn8tt670t48dzlq8yeg6lqn6lzv4,77108 +umee,umee1937rq60crv94h876gpry4csduvn5fltw7h8wjn,77150 +umee,umee1j3r442p2qupstnn9j26p3dc3vcqhrajgzp0rsj,77161 +umee,umee10ju4cznrv5y6yglysc7kazsv02nzw8x2se03pd,77190 +umee,umee160z202dcz94v03juelxmnwpx7c3ucmgjvls7wf,77203 +umee,umee1xdxzwaas8yzwg5t6atm25xtj9nyawm8377a2k5,77262 +umee,umee13elcqgu20pwrhexsz783jsvrdlf045edw43gvf,77274 +umee,umee1gwh87j2zd5r422dqc83wp9cv0sxzxdfre5afgw,77661 +umee,umee13dv4k95xdm29pcde746wqnww2vvt5g2t2926dk,77727 +umee,umee1lsuu3g0xdrpu8d7987ht9qnxqd87xlm9k33yfx,77968 +umee,umee1ljwxh7ue5gyl8lgcm9pm5xc7jupsmgzkz8fg5h,77990 +umee,umee1kqyxk807aszjag4w0mxufxq85w503k8m2es4ga,77999 +umee,umee1kuw57s3gth29esy6ps9f0mrqfgxceeex5l2ull,78282 +umee,umee1a5u4mdy58r8pgkw2dcdv8pjlx3ce0mczhwwwhv,78312 +umee,umee1tn5tem27cva7w0np37887s5e7p79jz6uh6lf4c,78319 +umee,umee1s9emke67f8ttpn8jmhlp7j72pqld6my8c5cqg7,78411 +umee,umee1yxjracs7gkgcrckz9m8wanhc57y0w0wva02vy9,78442 +umee,umee1yp8vkq7q4mxv704gqe6zpu09je9x5264pa69q6,78681 +umee,umee1lcrtsnhrjv0emxd7nanywswfm0dh93emz9mgtl,78752 +umee,umee1hv00zhsl2pagzqjxkggfuhu7724yzc9d3yyuqr,78871 +umee,umee1euhxma7pdkf8nfuj7ugfdqm9rtzm2eh5zu42wz,79030 +umee,umee18640mdwyej5a47vwwz2uuh2erf3nj68sq9yl27,79134 +umee,umee1qu6vmghkm4uwdj2u2ahuasvqvuk4ckmzk2eymp,79324 +umee,umee1nkej56am2cnf9udq4yxy26kq04rm57hd802ayz,79368 +umee,umee1t84chuseftzntzwck50vmw9pmu9vhxcl4fya70,79560 +umee,umee1vye6ntns5uqm5x00fwz84j3g57wv2pa56wext6,79709 +umee,umee1uqcqdc84s0jpde4rprfsu7zctnj4m47qlptf7k,79963 +umee,umee1rqsnvdk38cjur62yqaffuq6ddpm6ztuuht56m4,80000 +umee,umee1d5wn9jrzjnzd6tc62qgrs7f452wxymhl9aw8dw,80016 +umee,umee1c00ypevtfg78hvug6q3hez8rl6e4nygkfnvhw4,80027 +umee,umee1e0pevfm53a28yylztah09t4kaf98dwumkftgdl,80037 +umee,umee1hmpdd9fj9w5f5pdyfyprkg0g085p73t2evhkg6,80068 +umee,umee14r4p55jesp0lw47s98fkd44w35emd87fh2v6ue,80242 +umee,umee1q2das3jlpctd2587znffvjfcdaa94umftm8q70,80387 +umee,umee1wafr4tqcgte4revawpa574yf28ha7084al4cdp,80444 +umee,umee1lqpfpg60608e9dp6a7wrvesuttnjh73ha2ta86,80465 +umee,umee1570qr8wzayn7pk5h36p5j09myycn95ygptfhd9,80512 +umee,umee1lv3wuy5dtyrsez7suqnh9hqesyphgxpw4g2rdt,80945 +umee,umee1rn78sf4vc0psmnrss02sx22n3x3sumc89qz5s9,80955 +umee,umee1wwl9f8wcc0am9wruvmx4hjzdv7ewfcex0m92at,81089 +umee,umee1fd5cg849ha0nqmuarlrpcmpvg0en28ny7m8x32,81208 +umee,umee1nu6ds4gpfn82nazctulvs09zep6d5ctq6stl3e,81224 +umee,umee1jfrs6r5q9shj0w27ydm3gn86pa44fh9adsulme,81257 +umee,umee1kc2z8xdnf2px365pdj3ypmx5jt3lxdn6dwe3mt,81267 +umee,umee1v7c2t2xgsfggu82utptfuz5v0txkx8apajtqnt,81278 +umee,umee1stg6yh3p3dlyeac9uau87nw8a7nsmn666q8fvm,81301 +umee,umee1v9ykr0r3q486u38tav00neg2mtsqfpm89xa5a5,81346 +umee,umee19je7lmu4yzrpzh7gksj3uhku4as8at6l8l7jyj,81515 +umee,umee10z9h2ar0f9v88gvdxw8vlzj0dsr3rwmp72c8v0,81702 +umee,umee1u94ez32tezl9r89k8zq7njglph6yjrxf0s6xyt,81711 +umee,umee1466v4vuvm6uqkyc9nzqh270qvlstzswj4fd5ge,82036 +umee,umee130s0dfqvtpswx5jyw08rtdekhv8pzxfqsf05xx,82314 +umee,umee1ugjpzuekm9h4pzafhg2hzephctm7n5037dqn6f,82438 +umee,umee1pdjxw6gvqplnetythr8pudu2l46q04vs5emnpv,82557 +umee,umee189g9war7xmrl68g4rxjgafjl0e99jnh9hqfjru,82588 +umee,umee1jn5524qrhtlvyddyc07fd763w0459cfhrgv8aw,83208 +umee,umee1aqtlxnkfdzwx0e6ehh5zl3tcctu47sy6urkg7j,83287 +umee,umee152zcrkhxl9wphgxrkz4qm5uvdn04qqc0fxcm0d,83607 +umee,umee1ql6wzmjcrpmms2ehv7r0nkekdahkmqwyxc9pfl,83610 +umee,umee1m90l4hl7hvfa05dpdaprydkg55qxrk3pehfde6,83847 +umee,umee13ytkmq0n87e59xy92d822l5q5r4jfveewm6dwk,84050 +umee,umee1t389qsqj383fkgczlgwvwsrvnf5j60pvpg8cp9,84316 +umee,umee17z66m5kmgq43aqvkruap90e7vcgzt4v9sh4x3c,84355 +umee,umee1uqjg58rwkjfwmmn4jte9v5y4nj5c8t3uyjk6t3,84690 +umee,umee1rlswdyr06499uetccm78xdk8r75s8yya7yy4dl,84809 +umee,umee1nj5kc7eme3t7rernj8dt3mctmse9p0t4cvd3aq,84940 +umee,umee1fuysv6v3s9uyxm2tl6sfrqh20nucyeqd83rh5n,85045 +umee,umee13x9c93w5exxfnmts007q6k8ddracftxvg5evvs,85295 +umee,umee12xdlq75cqrct9awyp9wg9lp5zvt43pjulejr3q,85300 +umee,umee1f5gf0ep9hzmwvf8rc0g50xrcdrkt8dulwt2z95,85726 +umee,umee1cde2vxxw2q89c86ufvhm69fvvzqfyr5lnqvawk,85800 +umee,umee1q9sa0tjv7pswsx2zqaypusx3taksxenpjndt79,85811 +umee,umee10gefawrekgxnmlpwaj5gg8q5vak5chfswkshrn,85920 +umee,umee1u94470zdv3qt6zcfm5kmkyks29f6z36u9awkpd,85990 +umee,umee1j6l7zpwnmkrdkat5f84d79aanr5em9cumxctkc,86000 +umee,umee1mj7lkjsw65d6acaj739gpd0yp3x9htngw68wgw,86078 +umee,umee1h0qtc77yjcwxfd977h9kmsj0v7c5y67fvgkzq6,86208 +umee,umee18a35ds6tm5fqux6unqvsd3je6e9vxfwegzu29a,86371 +umee,umee1lsq36skm8gr326pjm3eqwm40w7lf7wkxl3ghvv,86809 +umee,umee1pnx4s7qtrghv06rzp05cv9u8vjp6yztll50p8m,87096 +umee,umee1wz6n3nrrnvc5qycmlg9s8l3r59lu3w8frtmzxu,87210 +umee,umee1e7aufgrnhqucp5xtg45e4yz7pjwkm8ahd3g59r,87711 +umee,umee1ff5llj8cuj7rvnhlmmyheeawex6e3yp8ld800g,87870 +umee,umee1l4mus0wpzmae3lhzyj72mk4sasd53k9rnxjz9s,88152 +umee,umee1she3mpp43kq8jy9e938etvpr9tkndvhvgdaexz,88294 +umee,umee1ss84c58w4zkg6e6kv6grkq9yluffz7zkejptkt,88456 +umee,umee1s0q9dd2cw0scps2md8xw49462vyqhhs5p4k7tc,88830 +umee,umee1hw0ufdhmgdfdxr32evzk2z40lzll2me9wymum8,88937 +umee,umee13g7s7wrxtmkysl9nzyahm6pvdjcxqyqzjek7eu,89143 +umee,umee1yhymjgzq7lnmkh974lmv6cy8ckl5gxryjyfc0z,89146 +umee,umee1n22d5y7cd980t788x43srtek7sfc6fcfsjycje,89398 +umee,umee1tcvj7jnk44t99h7z58k9ee4yan27xu8c0nem02,89596 +umee,umee1a5776xfhxcjd57xvaw954knhxazctdhrj4pfxz,89643 +umee,umee1dqshdqs6tjy2jpk4k6getaq65zc5ccy2edysg4,90051 +umee,umee1wg5juwze4plye2kk4uqm3rvgqcz7424jtgh9e8,90362 +umee,umee1fgdrq2yulkhx8x86hea8syq8rs94dcpagdx26g,90489 +umee,umee1vlgk7u2smvqqjy4akxrxx9qlpsumj8hrac8dsa,90591 +umee,umee1q04u86dvlpxm53wm8qyteep3d6qq5vjrajaaxg,90686 +umee,umee1s7w78lf77cl656xujjhjkgkghupc709wxhwxjh,91038 +umee,umee1kyts4v5d4p6jl5h5lu6dj4n6prdk3ye8u6qhh5,91103 +umee,umee1mst0fc6249ha9yuxk2yls0nn8nd8w9fw63cc4x,91172 +umee,umee1un7lntu9n9rr5dsaxg5cnxvskryp77n8r5n2la,91353 +umee,umee1pd5v3d5mx52634y5vu3fxy8k5380fenf02u6rx,91479 +umee,umee1h4l0zkefxhs2v8kjprjjj9vrpwfewzvh4x8r04,91513 +umee,umee1lcexe208gql5tglv2c9pfs8ntdrjdwr4jxy0et,91520 +umee,umee133q6m257m0724fp89kjr7drjl5h2dw84xs969h,91546 +umee,umee1q3fygher854ya9zlg3uum7wqy5z8mm6y6f97c2,91583 +umee,umee1xevpq2ptsuxy44a2awhw5slakpfmfrvss28fl4,91600 +umee,umee12gkyuy4732q3udnt20jlcdjsnusqkpe60fsuty,91847 +umee,umee1elen8x09ke4lhum8ca7z4g96sv34jfyn9ujm5r,91855 +umee,umee1fmsmxmlkuk49mgymr4kh2u8fxqcqdu7vkea02x,92000 +umee,umee1jyzxvhnax374luxwgfsg73pfy3ccezlws79tsa,93148 +umee,umee1ewz9sheel36wnmvenlwv9gxyv4uewycz3hw8nd,93349 +umee,umee1rzp4mex4yhtgm945h0sfjv3jgrsrkwtrw833q9,93606 +umee,umee1lh8r50mpt8zjrvrzchkdtdjjn30zhf6ydsu20z,93659 +umee,umee178dcdmhlsqx2nlku2gkjvnmnxkltzwqed3z0nl,93858 +umee,umee17zv3tzqnkv24qjty70pyvcq364yn9dtwzuuhk9,94029 +umee,umee1tcqta8p0jn5ann8sg2vfxj5u373vgaxa9fdfep,94087 +umee,umee16zgym03tnrl9s6ymxhfgd686vxrz54fq3tplex,94201 +umee,umee1swdl0z4gjgf40rgdx4lvvnf8kmejqnfft7t7js,94240 +umee,umee1kxauuat4yn7fuxpunf9q0emxd5rkfjy25snptq,94332 +umee,umee136wa7t9zgk5jsdt4verkq9khj0kq7g32hlzh9q,94428 +umee,umee1lg0ssg53yntf3a76lya0kkqpurkwd32rstf79m,94517 +umee,umee168r35ujldelphr9qrjdqzm9ur8k6ujavz9pm33,94610 +umee,umee1kjd6e0djp7hzeakr9xmgz4zs4q7ez7vvpnf3zu,94720 +umee,umee1anjq8hsjkvjwkjhwfcwe2frpf9ez6srzqwjg4e,94743 +umee,umee1u4evzl5pu3fj2s06ga00cfy3s5ku96zfq3ect0,94886 +umee,umee1rzdu2xaeu20wtfw0rzjuymeazrrshvkmz6663v,94949 +umee,umee1u209tu4v4dwz5t8ewm7w0glnpte0w0ew3p6kw8,94992 +umee,umee1wcuq50j2lzksrwyqaurz5vqw827znpfvhtxhcq,95002 +umee,umee1wmvmkewe43394k9sk2k6awe5jxkwa3p3jkud6a,95144 +umee,umee19whuzap8pywllxknygvk8n3xsq8xp2hpg74yxh,95191 +umee,umee1lugenslekmre4a5e4ep8v7jm48rp6grknps7xs,95261 +umee,umee13gk9j3ush9mpccfrxpadzq4ntlscjjv5m2hcfm,95529 +umee,umee1dkjcas3j43u3v6l94jhhhnjxhlnwxt3m0wx6fm,95694 +umee,umee1t9vhqftprywk2ctyyz0uhkclfspekj7qkkfwhy,95737 +umee,umee1xknd68de0qfjjw3mzacuccjx0djzsvkmdd5ta8,95802 +umee,umee1je5ct4sjqg5hfuu7v4kcjjhv7aak7fx39lywur,96001 +umee,umee1ruuqqmf734xx7qf56xdksu3ulrgfx492wclpe4,96204 +umee,umee1hzf4cqaycqztc72c6jmzffvfjge7qg2edq073w,96290 +umee,umee1et73jw4lqnjp488vd9m423762yjh6e3lyfkp94,97285 +umee,umee1yqvxyhzqd4e6mg6hhd0x08jr5yg6mdzjvg60hc,97753 +umee,umee1xgl757g35nunclwsc4a42uup2eexth3q9czrcq,97988 +umee,umee17rrlqycvnamm4tufsxy3pkkqgs5epdkkrajdew,98066 +umee,umee1etdgtuasken65jw05tchycmcz8cdhrndrqd42k,98090 +umee,umee1233l6c44ummv50al4efzcrwfvh89ueklrcrhau,98324 +umee,umee1l9ywzq9q3xz34htalw0qlgswakq57674dk3u5v,98342 +umee,umee1z44preuj7gqmthfkatsxzuddyddd4hpv4gdyqs,98613 +umee,umee1nkp2rg2evt3gnwv6645f3k06pe5tkwhmsjmz34,98760 +umee,umee12sw0t90d2wp8x2yvmh5x7nxg6c4hg324ca3ejg,99204 +umee,umee1x4qhn656zx06lr6k8xlefy22gnwg3hjzul4v5w,99904 +umee,umee1xp2yntfwmue333xym9v7gl3jz7dg9ddk8nc70x,100000 +umee,umee16jsvh7rdd564vt8hxc2l7x8j8k3hj3qnqjqauj,100000 +umee,umee1f8ty8km3manykju5lh6gulcglvgqeve7xeelvp,100000 +umee,umee1ak67t5jncgnq6cnqyvs4jsn38y7aus45k7d06t,100000 +umee,umee1h6cye0reftal9wylke9l3sydnaap5jtw0dsgdt,100000 +umee,umee1claju2h5p3raat5vpxt2wfjfs6saw2k2hj0e6x,100000 +umee,umee1ge39gkjtvwnh9za8266md0pp306yptn84wehs4,100000 +umee,umee1asj4df96z77s9pem3auhg70t2vyt3h5sx9jrmc,100000 +umee,umee1sm5a00zlr5wkhr2259shqk9lk3w307jazlwqg7,100001 +umee,umee12fum7jh3lfe966h6lqkqmy6mrlre9yyxymlnv6,100015 +umee,umee17eru275l8xe6d6agghmcdlk5wyz9xkmyp6ggd9,100018 +umee,umee1mlq6h5wkzj7l4kj3pv3p60qty7phzntg57hw6n,100020 +umee,umee1rav4dhxpv2882v7aj9ru9krf2t88su9hn9qrqk,100020 +umee,umee1efsj9hrsuhcu6lmamm544n7syfn58kd6aqlqy4,100049 +umee,umee1hdvzqrgjqgm98vrz6jpevx53udwa52l327qefp,100050 +umee,umee123q5hpemzkp6p7pe45898gfssc74watjs2dfm5,100056 +umee,umee127w3clk6m4ckfyrr5memuy4huq55jl437egd6q,100071 +umee,umee1mfpckwrw6s2rvj6vwan3qwpz3et9t0yl0cyx9r,100075 +umee,umee1gvd2e9m28856s954d7z6rk589k0sqhle0ay9ew,100100 +umee,umee17y4vd0wu9ukegxfwes47p5ncd74djf7w2k45cm,100104 +umee,umee1q8a27czlc0ytdg82eaggjpljv4l8t4nu9q3dj2,100122 +umee,umee15tf4e55kfumhse3gt4u9z5k5dj2fl25hapelez,100127 +umee,umee18jkznlnrp0tukeur7ytsz4c2l8fu30cujqf598,100138 +umee,umee19nvfjdqmzlmhl0qz2lvjls5k4h7hftu62cpmra,100140 +umee,umee1u6p7y8myp6wjjcq67t45u26m83nc4fp9td8pak,100140 +umee,umee1esp2ezmxnlzz9agcedze8dzgh8rga08v0fsa8g,100151 +umee,umee1w07qa4msnp5khtz7944nul46hpxn5ha36gz6gv,100154 +umee,umee172hxdt6we3w7qmjelxyf7ul3xuq0nntcpq47ut,100214 +umee,umee1vqcj0wv5vv0r9gzyzsl7jmtuud3vtgqcmvvwel,100336 +umee,umee1pd6t5u3wy2ygwwddcjs0g44akepgzr9cehy8nn,100421 +umee,umee1fdq3gwqvpc3r4yt563ythnm86qr95q742vf0xw,100553 +umee,umee1mq4uw4tm6mguc8jz07dne7uat9eu5aeutanr6w,100745 +umee,umee1uqw6upqd0twmt9hwdr3pjns042dau2ss24xzy4,100751 +umee,umee124rxmmffm329znr5ww8tats35gjq2jzjddt34n,100873 +umee,umee1hqwhf60933tyjqdry8tp9nxs4sf52sxwpluslv,100878 +umee,umee15g47ackdd88llmqljh0zdgwhny2zzddrsqygnj,100889 +umee,umee1lxy984pf8tmz9qgmyjgzu7swxumcm9xvyre06s,100932 +umee,umee1whjust8tz4saw3g87npkd500c7xtutjh0lrpf3,100951 +umee,umee1nsnrm5vdm0qkjdqfyv7daapf3dw8n3qc6rrqa3,101014 +umee,umee1sf90jcde033tudwa28ce5ec8p5kjtcvzuyjd4a,101100 +umee,umee1axmnnjnr44m3dtunmzkzcqmcu5rqkvm5uh7xal,101429 +umee,umee1a02gxhfxr49c87secnw98sscps02f29ald0zrg,101942 +umee,umee19es95ckjlfh3vq27k37ww5w3p3e6pe6l685vyy,101947 +umee,umee1xppn98w0gg6wl0q2g2nasmkqlf2elwpkdg58sk,102554 +umee,umee1mzarl2e7mkpkhmazmm2ftx5z6q6v4zzhe45jet,102562 +umee,umee1apmwl4yfghpd5vu2r0ysj2rme6uqnw68vzkl32,103005 +umee,umee1mlkm9cqr0jslat7asjqcufa30z209hg24jew82,103054 +umee,umee1rlj6j087x9q989w6ljt4jkcx5mv4l8mtvh6nhs,103058 +umee,umee10vh9ajhjpzgyhjtkwls7sa43gfyfw8mh6j8qpz,103433 +umee,umee10fe57hyufaaxhn4fxz4vv6spgn7q5pm3hv020r,103455 +umee,umee1yeyafzl0nczpdwx2q2wkwkez7za7uwt2mtllc5,103523 +umee,umee1kgqz4y70scue75pef0u9p7v0wgvzqygce0e7fd,103749 +umee,umee1uv2s5wvvs0gqv904c5d666y7kk93rq8exzqljz,103759 +umee,umee1ud6tt6xedrmvj8qfk6962uvr9qyp563gq4vx9h,103781 +umee,umee1y98ttzrqc3784hacu3p03xjrcqurxqjdyrxls2,103819 +umee,umee1slnhfhza3ccp9mmfc26njn0ddl253qgdytnsv9,103846 +umee,umee1gzsrhvslt8lgu9xgaf7ha8ctgzj0xdd9u83txm,103865 +umee,umee1npwmzrsu0guh5rzvh7cqg3g8ymjk2rfhn4k9fx,104012 +umee,umee1ufuhq4tetc229wst20ug9udf3xn8uvfpxj5f2e,104396 +umee,umee1fg4llkum2wyh7fyygzvns795eaew4n0nlqgep8,104491 +umee,umee15c43032045zh7eamsgl9yhvdzc7tk88k4prye7,105000 +umee,umee14x93fhqwawsjkyxjuwh6kds844u0zxh9gtp58y,105166 +umee,umee1rc49a0ssmqktq456zkljw95qg0ghz3g6j989zy,105320 +umee,umee1r0k4t2wdksrtnzhpm49lu7fgz8gvprywu43vmv,105400 +umee,umee1v63csjzvqluyj049cfc8vtmaz24a2p23wz434u,105516 +umee,umee1yxpl8dgfm2w77wkr9dl70zfa2vyrrrkwue5gfn,105681 +umee,umee162remzujvxnkcueuqvgp9wkxyq59hhuj0d7x33,105704 +umee,umee1z3rzz4tygxf5wlketqacm60ap73f55dcutg082,105980 +umee,umee1y224xs6lf6jw3xfxrn9seqv4ar4h0mm22mj8an,106036 +umee,umee1yytqyq5jj0uwcu994zsn6agd7c3emvrz0zrq7m,106070 +umee,umee1t73mdlqcsaah9sqddmfrtd9jnwx5gqmkah0tmx,106649 +umee,umee1cf393cdvda7k6h9d9szv2h52uhqvzdyk9lnfev,106715 +umee,umee14ez7s75ch67kvzc8c444kn9r4twarmrq5plcaw,106755 +umee,umee1rgwrxw3w9k3ztg4z8j29e8cvwpyxmq8qk0ns8p,106814 +umee,umee1m54x03lr0e8t2xrwjshs8yzvqh0xs4ucr48swf,106970 +umee,umee1ka0z9capd9wqdyry8wzqjgdp4hpqdm40gzu9hy,107085 +umee,umee1607uvwad7ur798dh8cztwdcp235aaevrc8l8ea,107090 +umee,umee1yjclqmnaxumqjq8ypztmwlqg4ycywlhekzut6n,107252 +umee,umee1letf3u40v9wkceecny7d9uqamr20gyz5admhlc,107360 +umee,umee15tk5lzt82dgc637kw9hnnl4l6ynaknzhuewx92,107425 +umee,umee13pw2eflhygv2rll337fze6m24gu04h5855ygj2,107603 +umee,umee1rmtl6nme2czsqxjxdljfuu7rdzm7t43alzy4w0,108452 +umee,umee15966xthwykqqgaxtutwc3w2parh9nrtsv0ay6f,108768 +umee,umee1lf3hqvgtyr6lszt2qvxv8l5k00tsxca8edmkmt,108812 +umee,umee1ufl5wt7rf9d8w32lfv7h3dqurrfzqksc04skvk,108984 +umee,umee10fyl77rrv4uvut94t9ent63g3uxa3su269p8yy,108998 +umee,umee17mnnvuzq0ecndg54ezzqqchqazhjxmq4xxfktt,109031 +umee,umee1zu0k0e8e56gx67ukveypc0tqudkl4kgnga5kqx,109052 +umee,umee1c4jkw4mj3vefd92n63xv9snq7hsvdzx0elwqmk,109079 +umee,umee1qfv7khxqlpgtx897c0d6mrf26s9ma3kcx257h7,109179 +umee,umee1gheuudvkycj9qtdxjv0zupr5rqkdzx8nkk3xkq,109322 +umee,umee1jjx2tc9vtzefjla6j3yxsx5ck0rfw63h3zpje2,109392 +umee,umee13grq0khf58lhu2ult3kqrc2ec39mad5ua8p6xj,109665 +umee,umee1k9cephy5r5amqrzcr4xm56pq5j4c6vur0y0uyt,109861 +umee,umee1vr59ktf5yehvxz06qe889sl4eg0dtak8lwr8gm,110037 +umee,umee1gcg05pcveaqf0muaarshhlhwd93nnr057q4g96,110067 +umee,umee1d9zu8dpk2dha29pjx7vlpqz2dslxqzn6d3j0mj,110420 +umee,umee1saamvlup6sf4hvqvels0umplvz8gdd9tvxdcj5,110423 +umee,umee1e5pfa582fyypuh9c8quasdh3f40a6yt76fz6sf,110557 +umee,umee19cc5k7vvww00ljg2ynvx0fahkcccmjgc44367h,110815 +umee,umee1yksfhwv54ygyy3a3ffxt93teknec476rmpjm4s,111145 +umee,umee1gdhpu9hlrucjqtrasgkt2kvycf669v9krus53q,111512 +umee,umee1t8el4nvfxeg3wx3c07fmqf9a04jsu9uvuam3hr,111528 +umee,umee176gvuknzukrar98has4uhgayzqlm5dt9xtsd3f,112130 +umee,umee1tujt230lg3rrv2ajrrftj4n7kr6c09esuxr76e,112221 +umee,umee185yv4ka7ymn3f6meq7k3g42nxrgfeykjskhk2m,112643 +umee,umee1pkhh9e2yjuszdp0yw7sv5754anl48lz47mf3ke,112702 +umee,umee1lv69lp5mpsz2uucv65848cvjuxhn3c8rtu3gwh,112813 +umee,umee14hsdy6p2gq55ms5jfs5v5vc267q6rxfupkswfx,113035 +umee,umee1ycuvgafl03rp28lhu0ygwzaxyrw567dejuczlu,113202 +umee,umee1g53ghvzf988yj0mepdlqge8ce64e2d0h00l0pn,113515 +umee,umee1qgdhdhu47hgx8j7qkdcsneu5e2saypml5xyych,113704 +umee,umee1hmszx6xqdd6jtnkq5f8xwa2c94uns2wryfald0,113761 +umee,umee1lt24hrj607q09pqyth0mpw0gj4kww7zaemesvp,113877 +umee,umee1f9vamz9kp8t6gycevzjxkcwus0zsxn24zfagxf,113955 +umee,umee1e2sy9m8et295qv49tk2mmrs8z832he4clxsv00,113977 +umee,umee1549mrgnlahufmfj4scleqa9z5f6jr2h3ue7ncm,114043 +umee,umee1xyu0tj37c5yjr2l024747ckx28cs90sga6d4pr,114087 +umee,umee1gac6asqc7fv9ec6kyuuf0p355fuy9rn4r7vpu7,114210 +umee,umee1ekskf4we689t88p4ers20486dnncz0wqazu72j,114245 +umee,umee1c5ptfwpj9430kl5mpzcld5zagc2v7x04f065xy,114311 +umee,umee1axzcdln69qetlhnecajrhjhl7w00x3p7mpfnuz,114909 +umee,umee19a7q9zhch0rcrayj42zemhfyh0rm5lwyu3adk0,115078 +umee,umee1jv40w6g7t7kvgv7v8nu5q7e9d3ecnvmzyvwnx9,115140 +umee,umee17szl2u0fy682ma5u9y4wk7np49txh8mz8v4c0w,115700 +umee,umee10z5a8ftsce2348x3cu5eh5a8dkw2xjk3uvdsk5,115912 +umee,umee1lnyq46zxya3ytxeyjk8xsnpvguhd6tde5yp577,115945 +umee,umee16ucm0e38gnzm3a5phxcjd90x6ly2aea7qpyqts,116085 +umee,umee1sfj6e2375ezu4zq94qhh6nectfpk7j3kg33avx,116421 +umee,umee128h6rn4v64g80p436y0fn4m53svhhvenhu64xl,116796 +umee,umee137gjv724cxfpe7crw73046jv4053npcvk3545j,116993 +umee,umee1nlsvx2cl4wksknfx9dk7svn0rushylzj4vqstg,117000 +umee,umee1gpapfkd4760pz3pev0wspgumx07f97hxq3g3sm,117048 +umee,umee18yq6kpt3l8ndhnkrphl3lgudn6ppn58fscaf7e,117171 +umee,umee1qgccj7vmzhagxk7uyfsym6mq9qc0p3xvmmxwaw,117199 +umee,umee1g5ajd5p70pku5gvt860fkxef478e6tww2f59uw,117204 +umee,umee1k33te4jc3hxy79eaegx3l92sxyc90j6ld9ympz,117296 +umee,umee10hthfuzgprgcwr9rfatlcn7ngw7wrw9u95mpn0,117306 +umee,umee1746mj9fup3cg09hkw6ldu8zqy9wzfm3jjkrc27,117439 +umee,umee1q2t6kfmvak2sh6h9gn576h6xmeqa5xn6f6k592,117481 +umee,umee1x3rnads9fk8vptl5ptdyr22dnkese6fedea0sn,117551 +umee,umee1r9h0zq7z6lrl592h8mtkq639yp3zcl0y0d3sx5,117558 +umee,umee1v0vp3zz7hr9fasxh82rek030wfdfnqpf3l9ksl,117761 +umee,umee14rcn5s80v2fthgzw0pkvkwgke4ss8ew8urppfl,117826 +umee,umee1pscxe3xz26qrmd4u5tfglvacey8ls3uukzm0p9,118004 +umee,umee1r7ekz8tldt3j457m7e867rzspfmsnclnad7qer,118023 +umee,umee1eg6qmr5xkqc3dlp8ed28v239kcx4kmjnp5rw4s,118087 +umee,umee1nk4w9qvym5xml49xn4gasmdpc2snuvp2u8clk8,118156 +umee,umee17wftw85fcv4swavvdgp6d0dlrgekmm5myx8hhq,118200 +umee,umee1pn3sx7778dwvdtrp8djstjwpsjq6cr7d7zjsns,118501 +umee,umee1d3elu4dxsdgn9c2mr3gthp6e5df9up4qgf9tqu,118741 +umee,umee1jg6rw2rkdlfa3cs4swa3gul5mnz76mv2wfgkej,118941 +umee,umee10tjj4kwg072zh4mzx8uux0pslqszfk78u3v4j2,119091 +umee,umee1vamr5r9vuae4ttnsnwjyhpnewdnrfw98dclvth,119279 +umee,umee1s6zqqgmvg8l5sd38087pjrurq8ndut42ryy2kp,119375 +umee,umee1gs53kp8d25n6gq87wrh0wm2sku32a7styp4cac,119555 +umee,umee1rujnynaanpaf433sea84qw70mcqkajv5laz42u,119999 +umee,umee102ygywmgf258p8xk3v0vw0nc4l38cr83d3777u,120000 +umee,umee1qu85d04kk0t7cq9h3pq57qjxmc3h38h32n88ur,120042 +umee,umee1urp858n70jdrz84zsj9qsyjq4nrpa2d9nlk8sk,120048 +umee,umee1f8vy9p7uuyzdj7tqrgzyqw70zn8z9aqjv73j6v,120537 +umee,umee1wt24ag3jqzp334j4cxtsu0vrguxykcq57et737,120636 +umee,umee13x95n9s3v9k92qxjv2efzdstexkpzn3pwrjufn,120674 +umee,umee1tv94f3u46sq72pjrm29xwwdvz6epwhz7z9r8kw,120711 +umee,umee1rjy30fkcntfw5zhqcm5x2vall3re2lrpkhltuy,121042 +umee,umee1gv90gl5ys5zl082gtqxk802yya7ksmlzr3a6vx,121169 +umee,umee136kkh05hy9m2usfuyra696xnhm5jm023977xfd,121587 +umee,umee1yny3vsnezcy6wtgaget0klvs9fm8l2ju5k704c,121932 +umee,umee1gqkmzjnh7225ym3d43d6nuxlyc9dz373jre4j9,121990 +umee,umee16l5tz09v7ahhwr4jh2km0pzmkt5n2x20mp3d2g,122015 +umee,umee1q9e5gpnuwwqgdqej5mg9ghn5w6t52kp4za4kut,122144 +umee,umee1d3cmglj7wd6qc5ez75jl64pjklccvpc5x0yeaf,122363 +umee,umee1ra42fdzqsjrpez6fuhlcl3gl677crtp503d9zl,122396 +umee,umee174fvcvrl2e3dveue2ev3vnjqxa6ewze0rgvtv9,122926 +umee,umee17x5su6nw2cwvg2pwytdxqg72wdxrc99rmzf4uf,123036 +umee,umee1nquafl4d5544v8ugp2c5w30x98szg5f6an533f,123240 +umee,umee1dp82cysvmlla0q7hrz43scaj8g8guptgh3xawd,123376 +umee,umee1td0t6py4uknhr04e5fjtp9w4ssq5jgeavku8ne,123607 +umee,umee1e6ec2n8zgx604csuzhqdm83utj8x899vrs3yw8,123649 +umee,umee1mn8uf8fxqv2zlcct4q7x0aqn8evy63trm4l43y,124294 +umee,umee16cevy0m6lplj7f8mksa4g02cnegmaakae425vl,124344 +umee,umee1lrrax0unp7g4xj3ck9q3c8kym5ewjfzlm77ym9,124384 +umee,umee17rc233gvs8z9keef0evp94znfhdf208s9fdpcd,124437 +umee,umee1ayp9ga949jfeu9d73gtge0mz29978eyruk3gkn,124844 +umee,umee1tdzmdy37d4wce3kkyf8fk3kgjedzftwrrzg0ka,125489 +umee,umee1p9xm0lxh28zc0d0g35v3fh99ws2e3ytcyh4824,125704 +umee,umee1djf4playf0ukfgc73hutmdl3cv9ml759nt6726,125924 +umee,umee1kayg7sradk3xestlapqmlm7pv8hfkutptmvf78,125983 +umee,umee10zda3pkvzvls6cq2qeppsw0f4zc002qyhq5wed,126305 +umee,umee1dsmhalpwhammk973xsnrpr24gfhyzm0vf8tu02,126435 +umee,umee10mgegddyjkexzvdf7mzr7800vl832lsekdllma,127012 +umee,umee173d3t47xyq2xdwek4qmad6r5kny9ch2378m6ea,127219 +umee,umee1pjeujks4kdg5uj07yfuht4cedpeam0nnlaj4er,127632 +umee,umee1vk6rrst7t7hq5jlnqw02dsndxsr050qezmfzvk,128134 +umee,umee1328gyvra77p777ypsyw5nj370vu2rz0cva7pd3,128190 +umee,umee1c4rmspc03d2xp2kqf2f82yw480jdpsxvpl2rqc,128282 +umee,umee10h8n6d2ak5ajgm8ua6smjw5y6qmxsqxa95hskc,128607 +umee,umee1qc5sc7f9usdl5eeveqmcuc707jjf8wn3ne5zxx,128774 +umee,umee1qgdz7jdsv746j809jylwuzekgp6pdk93ssc7zh,128898 +umee,umee14kqp2lp9f9awguznrq3fj0tat8mhyhrk0fdjf3,129100 +umee,umee1zrmwvawvxu0h8zcw4yw407mhqw0rzm8a4x9r0k,129123 +umee,umee12h8fpmg5qs570rmlem27km5xu4l2gv0la9mkw6,129161 +umee,umee16ve9eqqrvgyr0n862e8dvplt4e8h9hd4gyat3v,129564 +umee,umee10hl66y7f90g9rkrhlzukg5nv55wzam2eft3rkm,129582 +umee,umee1dyssemggx5gshnlgmw5tygvlzqrlr5q27kejlg,129772 +umee,umee17sqnp2la5lthcccdl6jpmeh4sd43fq48t4q99p,129901 +umee,umee1037h0f30r4cz9zcfsuwt3wc2t9vxqr82kq8rrj,130015 +umee,umee1fczxh8zuq40rq30kr2ddwxyqay2slh8kkwpepp,130026 +umee,umee1q9u3nud7zyjtjgs36m8z8vd50wvs8paeexn5dr,130099 +umee,umee19g7a87ynms3fakzx54hp4hlasp07lqr6pjga9g,130857 +umee,umee1nwtts64fpawmu84dne8zptu73apm6wmglxj94d,130909 +umee,umee1d4qu9uynhyez9qvmlsanyq8lscm6xysntj7t0z,131189 +umee,umee1cawwvpnjc3nv9gr8pcsrcr5jfrn4fn2cg0axsg,131549 +umee,umee1srd69vz6eaypm4wyhfuegfwx27xa739m3z5v5q,131895 +umee,umee1t3egsnypejx9xv5jcl4jq6hvrz5zwx635fzrzs,132155 +umee,umee14v9ydnusz7tfrzk9l7em6due8jk0h88wpk48fs,132179 +umee,umee1zvprhwcpttxxh7eyx3fydqmccwweg4hwz76awh,132333 +umee,umee10a8ax69dc47x4u807ctn8eqwnwnjjujwxcnxh9,132336 +umee,umee1y8f646fdh86aj5vzg55mmpu76qhnnpeqx2yylr,132783 +umee,umee1tyr934fw7gmkwxusnfmy7gy8tjyy23w8lpm9wd,132815 +umee,umee109h6mwykrv4zxq0f43cea8anqqvnw72mk3ysfy,133280 +umee,umee1esvfu5787mp20hqpmkak00f3h3gr72lkhma7kq,133482 +umee,umee13ewg7lwmvy0gkw7ncaksxwy765c0jnny5j09p9,133767 +umee,umee1ga2qvmz6zlckc9wxfnmqelrvpcrdpp8lal778z,133895 +umee,umee15ul4ayz9zsw5vytju2ec8lz2cpsm8prdrcngdy,134269 +umee,umee1qc4pg4t2ajhhlapht40g25lalh5kxzakpx3h30,135316 +umee,umee17d80xdcckpanq2qj5gasyxl3whq9nac5wj8fy0,136114 +umee,umee12spcwcnc7hupnngkx49dxhf5ljn2vt3h33uky8,136153 +umee,umee1xmnsjghk24v62hdm6n92ynqljwuaelwxcspljj,136919 +umee,umee1fl7tk28744nr4x0lats0gxv5znwmzdqvsutwxl,137056 +umee,umee1mx49hpxlta0zp8kgpq20ermnjsayd63shfwj4a,137176 +umee,umee1afdwxpgnqwz002ynkqtu6vxnyqpqymrr48qjsf,137395 +umee,umee1ehh0nc20cxrflq98ktuzhpnt9q2sew7lsstvgk,137466 +umee,umee1nv62m5drpx25vsy2rpc7qr4zmpyppk2cavgjja,137778 +umee,umee1pehx7rd5rg6x0q54t9jredfjuue70ehv5k6zzw,137878 +umee,umee1w4nstx0z4x9j7pg7u3e2llk64vau22eprrhlv6,138315 +umee,umee1ld4ncwq7x4474ye9etfrfdr4fe3fjkx3x4uy23,138464 +umee,umee1gxxdadh2fn8dt4fe66t252k2503tvkcw8up72t,139045 +umee,umee1g70w2wnlnzvgj53yccwm0nflndm0g0ezje649j,139120 +umee,umee1u6xtjwgecdew87pt39kluckamnnuxyr66zufly,139446 +umee,umee1fqamltjys0r67x4pjdcppsagfrakqz54pvpe99,139757 +umee,umee1dlsvamr677n96ppqa3hqsu5ncug52qurcnznr9,140021 +umee,umee16c582tvzntez8erkw32gm7u6h0uyeeg22209cg,140025 +umee,umee1603fn3x8zye4wfpl36lt320fnckax05hcq0grp,140064 +umee,umee1cxdhwfzpzxv7cyjpyac76pttg908hntl2at7th,140557 +umee,umee1t8trrmrsu9lk5nsv7ldaf0n8rh3sp39a34ferf,141215 +umee,umee1na3m6auc0xex5aehty5dczm6uqhxsddg27vxar,141241 +umee,umee1d3a4gvaxywy93guz4vl7w0eccx4mq4nzz6km7c,141491 +umee,umee1few3jle0yjl32ap89j35d5y8xzt644zghaznfw,141571 +umee,umee136f2d990uzvqj6p0qvz03fds4kz79xx47vkv47,141803 +umee,umee18xlms8jh4e30xm7fz6znlgevshhcfcdcd80lw7,141863 +umee,umee1h8n4qh8u66psn6jf55vtq232rhjkr6wxltfgjk,141982 +umee,umee1qaz38dnp38s5939h87w3jxt99fjq786mhz0pqu,142000 +umee,umee1824hnyyxxp25tgmj77sw36755xyq4mf4epesvr,142152 +umee,umee1mvscapes0acdkgc2tnvutzu7nxu5pl97d36xgs,143047 +umee,umee160c4hf65fcxewuf7efhum8p78e2y9wz34u0jkl,143352 +umee,umee18jy3dvdwv3usn7m4urglldj4tdsf6ldnsvjf09,143388 +umee,umee1u3ckspdc0saz346u8ckpngltchjapufy2mn64j,143623 +umee,umee1prc9fsd5n509fx3z7ngnsuzx7ppw3zxt69rdxd,143704 +umee,umee1zjcl66m59apljqus7mdvjgfklwd7qdgk05yetd,143828 +umee,umee17nmppyq0ezxpy59rt2wqr2grjj4236mhvpk678,143957 +umee,umee1fetyurjl8rwftyrv8ur3etf6pd2set2qtuvq4q,143983 +umee,umee19f7nq7cs5lxgartse9u3jutaz98w20lctvpah5,145299 +umee,umee1e03dwgyxsgcnhdhdxdl5y8txj3mjgg92xjctw6,145300 +umee,umee1dh7p3dvvjst60h62fymrqdcwx6tmatyye0ddve,145379 +umee,umee1mtgku0rkw7stdc5tz7kv4kmhp3ycne6z8w96n4,145847 +umee,umee1dmahqt84r9je3sqvljzjrttjj78cmrf39jndx6,145856 +umee,umee1e6wzvqe7ascglgdvkgwac57s05v6yy2m2ud4uk,146255 +umee,umee1adq7u86q8pj8fmqav0da77rtu4e074qtqwat9m,146572 +umee,umee15qakj5t9z84pax27sky6rlsggyaajykqxeykvr,146576 +umee,umee1fypqwxqn94c763grn0lhejjxzjlpawrmumvl2r,147319 +umee,umee1rrn636u3vc3qvuu9lyg8eef7yqemn2t6kapf4e,148295 +umee,umee1ls9ws9mvdc86t6r5q8hvzj62q9lzm24vkhjtgv,149772 +umee,umee1uy3efc0t599rsemaars94ve0x6m80fgctmqyjc,149972 +umee,umee1f0ve4ywdf6jurmkr5zhy47pggrznjmea0p074z,150000 +umee,umee14vmuhgm04ffvzts9jxm2wy5d538g96ru9dh89x,150000 +umee,umee1qxadeqmkflz3tlmrkqg37c4xcxehctwqwe4wpy,150000 +umee,umee1na9hl8y655q62sjjyewg3pn3gvc5j4c0sy7tcq,150030 +umee,umee1wldwugdj79dhaf7df54xk8zzzm65dmtsw7w8ye,150101 +umee,umee172z29yegg8vn5p5k80gmujehu8420wnsqa2ryu,150120 +umee,umee1wg5w2l8az9cgg8ahm4zrvajh9at39feupnrrk7,150632 +umee,umee15ucydnzg76mlt6kc3j4qmqtxh733k383pqndfp,150944 +umee,umee1cj04yyxqr5gpr75wwvlez2cpj6e3heluaz5vdu,151268 +umee,umee1qmeqntmkms34yzgevgpa8g8me8jutdgdsyytm0,151820 +umee,umee1amj44fdnnlqs7c5wc5mu7278ae7t08z33aff2g,151868 +umee,umee1qr97jr05ftqfnly7hegw4q03g3sctzwj337rmz,152348 +umee,umee1rj3606frw4skry0w7nzdmle46p5tku40np4v7m,152397 +umee,umee1wrm8mevp36k9cyer2qxxafjga3za0mqam7r528,152580 +umee,umee1fpvc62k3lga2g8h5ctyyzst5y64uf932kyx5uq,153024 +umee,umee1y86f4qj6gs8fzcrdgh7ye335hkp75czsq5ha36,153147 +umee,umee1xpfvgskzr5uuamvwdl5l2u86mjx3rxfqlg8gj8,153254 +umee,umee1g7g2uywqx52aju5ra9amhfkckyyaand90j0s84,154183 +umee,umee1us9y0pj7tc3nhv64rckmxgxy3qvpld07jwkrul,154410 +umee,umee1l0tw4t9wga9er0c3g8dzku2tyttcugvg3h3xeq,154445 +umee,umee1eeeugd9er5e8yvfe9udar4aj7k0w9nphtj29j9,154667 +umee,umee1x6rvcacf9p8nc0h2235d2hml5r725hq7mdj4f5,155617 +umee,umee1vn5ysf7u9dssn2pm6h8agmqerxc5mq79p472zw,157035 +umee,umee158ddh954pzt3etjh0yqe8lp7ax0pz6pcw9lhyk,157142 +umee,umee1l66ndzkk57nv4df8znk6mppe5zdnu0r2jqzerf,157309 +umee,umee16x79v3h2qrtcj0376am9zlt05c85njzwsd7ydx,157413 +umee,umee1wnpak7sfawsfv9c8vqe7naxfa4g99lv70gh54h,158158 +umee,umee199z6nlryqq4j4y4ljzdl6vf8knfhjzcd0d2yl8,158329 +umee,umee1tmarkr6ta2sge625udkl6rfgqnarn4h5cvaxap,158716 +umee,umee1u6lld4x6rgc47r39dhuwfpu9px50nw7qqh5kc8,158938 +umee,umee10uc0vz5hqzx8w2smlfv8kcm6fp6m3tn8aj6yqh,159292 +umee,umee1fd3qxst8cwvvxh7gdr3gmrt524danjmgmy3mk3,160168 +umee,umee1qvcy2gqxrdgnnypgsjcr2xz57lf4cs6ncx79dq,160387 +umee,umee1ysuawk4whv508npnz8p9dwsvjus2hlu0m7prds,160554 +umee,umee1fnd772gjha0kxldh5npcr0v7vcmc94ca58zcy3,162099 +umee,umee1y9hj5rus5mctmcv536spd46vgm6h3n2ugejxv8,162488 +umee,umee188rs3nnqnp6nyc3cyrx0p8ly4tdcwgsfng6k5u,162676 +umee,umee1mw5f8pq59278h6ncfwdryechkr2vuzn885ft8q,163297 +umee,umee13jhywp677gtnpuhlmxz35m6s42wl4psz6vm82d,163824 +umee,umee1cujhq72xqa5t5pvz3zjn0rfqmdl2sl0hhzxu2r,163944 +umee,umee16hta9rs58tyqtst8dczwm0me9zyksx669knzef,164701 +umee,umee18lgx2jf4hccfvyq9wkgfxcfxyusth7dk6y3jr5,164988 +umee,umee1tytgncgf28x84pcd56qp9ezlqe9r0676e3llne,165107 +umee,umee1vmkg7sjxpp8dlvz9ar6eumypj3h7uw2vkkps2t,165480 +umee,umee1ys4epfu986cclh8z7sja6uex8ee3we7fruat42,166162 +umee,umee1xgj609nvu5vl40yxeaj06nfgsjx9gz8djj9ld9,166650 +umee,umee1ysm7n4vlujux2le7a2cysj3rlggtnlhlcpwtxx,167203 +umee,umee1deasx4890tvw55u5ecfey6y6x4gwamm3gynfqw,167456 +umee,umee1ge30tkzumaqgeyer4arh3mtl0745dpkxwegj9j,167516 +umee,umee16vm532zcgxerwddhj9wpjcc29aum5ektghncj8,168100 +umee,umee1ca09p8mapys5a0rfzzswlt9ua7rtd0686m25f9,168231 +umee,umee1xhjjrwx30qrwxsksgwqjl2qez0z9mhwk2w9a25,168345 +umee,umee10eslh95naf6k93j7rnj5pp5n8feq3ee6er5t0q,168566 +umee,umee10nsnc7uk2e2ryaq3aacnum0klhhv5fzzwxn5gc,169123 +umee,umee1w2hrty7nkrlqmml99lag4eu9seehd3c50mv24s,170160 +umee,umee1uhe7kesfm6gngxvv2kper6qc8t3sq2awfjmm0a,171314 +umee,umee1ztqxj0v9hl8xr0kvqllk3lxtp669cd7jg5raw0,171353 +umee,umee1ux8apnt5unupg7r3f2cdxh8smgpun4479knvvx,171417 +umee,umee1md6c33e9ajze8m3p7mksyyxmv865f3drnxymgs,172242 +umee,umee1y3rkk4jpl7t2fv4ewvjrhlgxsv3vuy40hgd4nu,172632 +umee,umee1u2fcgat0c4xa6238t2ugx6aax56x5x7zw0ysgn,173131 +umee,umee1w4mug2gvdguqulcntz3g78pynu83jdnxelk4lj,173296 +umee,umee1jq2r2kmtyclgw5gtapvzwfulcd2ph5cpgjw2d5,174534 +umee,umee1mcrnf2n2vmmut5j7upluehstxh4yenzt9thcns,174979 +umee,umee1lt8cprqtkdz6zq9h8j3nn6c8yqxvk7xxr3mnxh,175157 +umee,umee1gk4se6xffpterq00vr2g5tysrxzvgq4sg9tvug,176750 +umee,umee1tqrfmdymqlr7lkprs0pr8ursesends7n230tc4,176958 +umee,umee1df7ysq5du0nuwurxn3rue2jz02zm4cyre0ntek,177011 +umee,umee1hsxt3lpluk65l6h2yyw9hknycy3pxnv305eze4,177657 +umee,umee1n9jfr9j5fq7ptn7qv8rz7yljmfwjfszsvdjtze,178802 +umee,umee1w875kdjh3yxxdurrctu2ze7hjm8mdp9q5xhxpz,180233 +umee,umee13al3765u4gd9zpks0n7de8x2edvza4lw33c36y,181554 +umee,umee1agc7wrv9fx9u9zaqu0xk48ekp76ulrevaprrfa,183566 +umee,umee1cj0ugl95gcmtyytukaj2mzs7pcu2r4kh8ertgm,184498 +umee,umee17h0p77udrhtz63t9jem4gu3v89nspzs7x3vmfs,184505 +umee,umee13r9fymrwdx3zrf7ne69s37dr5zua6erm3sc377,184585 +umee,umee1swek7a5nvsluv6enhnvjqjm0wph9nrqr2xz5hv,184587 +umee,umee18tsm3v9ntgw7z46kzml39fz83xezut398v3wne,185488 +umee,umee1ym9guccydzgqhqrutyphe6g72f0as0njqrft0z,187253 +umee,umee1w3w9njhg5wshq3ed28lh9hd0sc6fvpjqp4dug4,187320 +umee,umee1u5juxgp52cg7afgt5fhgmh6tt6298pkkhq3jng,187344 +umee,umee1ylrq682754fkx5twhrgq0jdl2kc6gfemp3pxec,187441 +umee,umee1m9gjtz2py9xrccef5tcl8xxf3neufcqzp9ahne,188369 +umee,umee13g6lzq6mfa8l86lgnsnxacltsssel6h0dg2r55,189007 +umee,umee1c969z8643q34dq6weea8cejxpyjqr27rxdgdgw,189272 +umee,umee1ljyvhwz807xxqagesfsfwunc5y9j8gprj34h0m,189561 +umee,umee1yeqwsd47tm7mjd3g6t89f7juhp367lpxphgcte,190511 +umee,umee1ftyyc8ljeyftjwlpz78tcuwwfvq653azyfd5dl,191155 +umee,umee1h57zffgt0kgspxwmvkat80lxl6r3fcfqhmzewf,191309 +umee,umee1j2nkmkuepv9dn0lns9359l3ehwv7gqwak6a40y,191757 +umee,umee1q5y5s7kshz8duyf6kz0zza2q0ejmh95d3w6pat,191884 +umee,umee1n00svuw806ujdq4uq0dv0ls4uv6e8h8qq49sxr,193049 +umee,umee1uzvk0z47wykqj09gu9fpx7rmsc2r96v69mqnkj,193702 +umee,umee1xtler9puevvrz5p499yltzlkqnv6gtmcuqccz6,194163 +umee,umee1ulrfc5m0f0e223lwxvu7rtmhd6em72gsuzhrlj,194369 +umee,umee1a8045z4784xsvg8ruv3qex3stk2ul4x42raz40,195366 +umee,umee1m6rah5hjclypksx6ldqsplhukej3uskc2gcz65,195378 +umee,umee1rznfdsumu98qddtlhg9gpr0089y22s0r0yz58s,196555 +umee,umee1jqz090u5225avkvkj63jr2dhx0xejvv3qxl3dv,197023 +umee,umee1aevcu0r2zce60pesnlqymqnhe9sufazf7tm8xj,198434 +umee,umee15lqq9cagtux3pcek5xz8ufhhrnwu3lul2hqacm,198674 +umee,umee1f44ygkpt06y2lmt88mf0dldfun0atapewg620x,200000 +umee,umee1q4c4v460lnfezw4p2jzt85d7mahxu9skg85e22,200000 +umee,umee1f7cjfqrn5ly5ck54lwmcz0xpjyd533vkgj7pa8,200000 +umee,umee1s6v46klx4h5jjhydd7vqv54e6eq3eu695p0crj,200000 +umee,umee1capc6hg8pa65slth4jpw3qkwtuce7e8dh0pawe,200000 +umee,umee1eqcle4u5e9nxk4z2uwzujpgfrjelqlzyqs7dph,200000 +umee,umee1w5lep3d53p5dtkg37gerq6qxdlagykyr3jzc6q,200000 +umee,umee1spv48ml9wj55k9ljgn64rjg4ygd38pps5u49tn,200000 +umee,umee1ljshtjztapmuyap6gdt8q9snyzznxh0k4em520,200000 +umee,umee1y78wjew5dpygh79tyurd36gzcdstc2mxvqnh66,200000 +umee,umee1kmn7av6v5gs84dwur98tu57jgyzykkprssak23,200000 +umee,umee1u9549h25a40ml2kmu4ezzjzekq8eyjuvquhrxn,200015 +umee,umee1ncucqq9gh6fmrps9ecd4xsh8enanmzkcry468e,200030 +umee,umee1rcy27tz8edk5udhtrqwymws5vymr5ne4djwnmt,200040 +umee,umee104c73yza5366smu3hgwwh0adtdvngfgv5k954y,200253 +umee,umee122ql523rlupajfyufyye7pllq2m4te6mfpy60h,202264 +umee,umee145pzdg00v6xehppy3qzv72v7d55np4f25ky4rn,202315 +umee,umee1exvvpcvnnra3k80mdcz78lmcv38y2teuaept98,203565 +umee,umee15f2qfkkttlnp3vwnjeaxcqf7zjzzufamtprnhd,203693 +umee,umee1y9hd7mjruvdg9j02765hcy8ewv6r368tgtph6p,203759 +umee,umee1ugt8y755xcv6yf9tgrx35872f8tetta38mqfex,204240 +umee,umee1q5z5vdxtvqmf4eq37pm2xnytc69st382ce2x7v,205709 +umee,umee19ch6puyhspt594jmuwrks0cucsasnx73ad3u0s,206000 +umee,umee1sa54sdl5nrr6p5d0ksrceapur7f9awf2zv0dny,206209 +umee,umee1xyw402jzrnag68m0dljhx7t4xdacvfuyzsjy98,206917 +umee,umee1w6ft8xf5zj7llrwm8lfrqgylvdcaflusayw64f,207820 +umee,umee1nlpdy2956txlkahqzyv9yhnldkpdy4utl55gd7,209255 +umee,umee14apwjgc6sq2sv7wla3r7rlap5w09zpg0k0e7vw,209308 +umee,umee1d2dnkh8pru4p0zutrapjx6sls0wlygyprg88cg,209598 +umee,umee15yvgvylrg2qaww80fu8plj767hnyqgktzu7jsd,210666 +umee,umee1mgps65tsfl7xpeg37t3hae8lx7r3p7getuk3mf,211256 +umee,umee1n5nr6pu5a78z47ftmztyxxrykllzd27l6deqq6,212849 +umee,umee1qjec034jl78llwwun0s0gj4h66fy860fgeuzsh,213239 +umee,umee15d5az69v5nr9h2x0cume43q7kq8tp2rdf8njz4,214144 +umee,umee1r5vertut0knplj4l882y28pw8mp7ceys2dzlg0,214542 +umee,umee14dqvnrmwthl8cewf6rtv7csrx9ucuwpkneqq6s,214601 +umee,umee1ljv3plae2ze498x0fqrrkmzx29506nnc4pduua,214739 +umee,umee1ckfwyldzxwrjf80x0x62zxg7q4j9u56mc7ttzj,215342 +umee,umee1qpumnd6p76pejdem8mxmfrk9humwer8g9w6yke,215520 +umee,umee149yvqwvtccpvye28hvl896yuggm9gr70rrcd5n,217089 +umee,umee1te376l4697d5ta7rhxmrc0xqky74s40zgmzpw8,217185 +umee,umee1fk8xy9xy4lkuqjdsj380capumn30wlsmsuu8pm,217285 +umee,umee1k6cwwkdpdxshx9nyna8pz57pemjs2uaa6glrrv,217568 +umee,umee19eeqdwac8tarqs7x426hjeaenfyu5rta7jtyn0,217718 +umee,umee1sny3f3mqpkze0ae6shtm2v0mg3tjzwjpft4q39,218102 +umee,umee1vkd8320mrlcll8wpkpn5u8rt4qedma3pg4mh2l,219534 +umee,umee1r6cxvlwwu0j8tzmx24m2ad8zjzfjp9yv74pxk7,221419 +umee,umee1hvxrs57jhyk6mg54dxep2a7q244ec9h8ysu95f,222052 +umee,umee1y4jjwr9d4w0dg8wve6fn9wfgrgr3armj7usw9c,222133 +umee,umee1ygarrkevfqehg4hlgwtw3mdzygm3rzpc04ywt5,222751 +umee,umee152tdm0wja6p6pq309y5sacwfr92ce3f9thm28v,223480 +umee,umee147yp7geqtq3v5h68mcl45z07l48n88tpv5ulzv,224505 +umee,umee16hhv8vwj2phs88zqpm7lvx9vzvwtanr2hyn9p9,225315 +umee,umee153yzgctzq900kjq2jq6gzs99fyhdw7a5yn74gl,225320 +umee,umee1pxedkfv8ra5wtk69dn96jtzxm6mrkf8q7ckkzx,225341 +umee,umee12shvtzhs82sa06qn2hhmu5yeu4534l2rn9c0d9,227527 +umee,umee1t4ssv0wcd3hrl3h5hpjay40tsrar4qywh6rkq2,227750 +umee,umee17ndu750v23z370vdzegf5fcxdu2y6qh7rqme8r,227907 +umee,umee1tapjtvaas6h7aludtf59zfq5s8u6y9nj577eag,228210 +umee,umee18suweqrppd9hg3ykdxuzn9gw8y9df2x8vug87d,229223 +umee,umee1t8cgwzfcfcdlzqnxn4us6dhq90l0tradh7yd4c,231014 +umee,umee1y7n8qm70vvyx59s8a8hxxter28tjj29aarprt7,231449 +umee,umee1lkznpljvglyfehzngujl93l0d3elfvuaxqsnqh,231740 +umee,umee14gm58wncn3w6gegjqx6h77mhdfw97etd7lp6d4,231799 +umee,umee1pxf9fjn2qkneg393857h34q4kq326lz50ml2j2,233051 +umee,umee143de92kvypafazd200r7fw4pwqjhnlsm8cc5sv,233211 +umee,umee1wgnu6jfuhzh2sljedl8kl66rrqczkq7x69urkr,233329 +umee,umee18s567a3dxf09q7erpcp8q20dpauugxwx8zhvfj,233627 +umee,umee1gccham0tpwtqllxakz92q0u22d64hlxy0tne3a,234888 +umee,umee1cm2yyecl0mfk4pw9tl8urscln05wuzfl5hu3dq,235812 +umee,umee10yyrcvpvfe5zph4pcct9pg35d0glsfjklpuqtk,238819 +umee,umee18rkn6z4wrclts4n0nhtelcrsnnyl797xlz0cjq,239691 +umee,umee1rcuft35qpjzpezpg6ytcrf0nmvk3l96q5muy99,240673 +umee,umee12ctg3ztj92qtea7na5nx4cgw7qvgm3l4zpwrw8,241210 +umee,umee1xg6763u7yrnk26a6wecd0xrs3r8tggkmhe5ayv,243043 +umee,umee1dp7jlwnlhrmu2we0nnpt9j54ukryk23n3ttfhg,243428 +umee,umee10qx02y62v9ynwe9yz4qxvdx2sq7wm8gwhsdxfd,243780 +umee,umee1x245gpc8a4w7m9t8wltmekwdvs3m5qvhmacvl8,243804 +umee,umee1jyxtpmuh9wvqn7qp57hf3r4tlhavh5k5fzq2qf,243822 +umee,umee1449e6qd0cur0rzghxx44xn30v036tkq06j0y0d,245011 +umee,umee1pa9rqy8e2wct65v0ku2pzf9egpdynl3cgphuep,246048 +umee,umee1uvh6tw6d60cgjk90648mzrhzj430vc42qwaslw,246161 +umee,umee1yv90e23nh7xkgt9z4yajgyan0xeka5ztmnvpsd,247257 +umee,umee1r3uy396xge02nrnp8dp4xc4nnw273gn76ws43h,248424 +umee,umee17s88pt6t8jck9xscczhh8tpkuwn45284vdjzy0,248672 +umee,umee1dzv8fmctxx5pz5nxcmgwn8a4tjlqt8w9q0q9s8,248812 +umee,umee1x8958xm5el05p4thmg3vajv883z2w434zuuhl0,249999 +umee,umee16kukyg8l6qse6n2rq24qr6qd3ylgnnzmu0qrqk,251277 +umee,umee1pmjp7aj0nuut3x0w579uhjm6hylffgqwjhj7tq,254044 +umee,umee1fcxywvkt3t5y34vayjy7r9zyqnczu06sxn5psx,256614 +umee,umee1jthu90g8ltzgs2rxfdfv98cc53wuhckl5mla3p,257265 +umee,umee1599krj2kyp6a3fwdzhraueku3vrctqypgv8k5v,262811 +umee,umee1k6g8m7wu4p3qmxf32pfzzwlqxe5vd7cdpd6u3j,263399 +umee,umee16dm9asuj73k920wap874uqearn6phsk7qk5xj2,265421 +umee,umee1kst2uerd3xk7ecm0t52mca9h7vp2katw3vkkal,265554 +umee,umee150dwazycwx2gr6xc8506d3rkm6kqv2xvgvhwfv,267022 +umee,umee1k5n7y7smdg4t33ve8ypy6rm530cnu9tpgzjg2a,268020 +umee,umee1znjnzqpm226axr483992pqrplk4zjjt56xm7fz,268448 +umee,umee1ejqvaxm8704mcehazxuzzm4uhx4hhl43mddf0u,268471 +umee,umee1r2gsdm9zuj9a2j00mna57k9yuj3y03ypdxzgpm,268520 +umee,umee1j3xxz8xtz6dr9vx0su4cndwxns6vwyqcm2fj5s,269446 +umee,umee1qfqznkzcmzupsnqrsmtu9x6xr2cn5rfpk3053f,270088 +umee,umee1ks6syr3cf9h9senkqz0j2q7lxvujankeyqxdx0,272543 +umee,umee1zxd53zy2zug02pfkg36yr2jupydr8pv6lsd9z9,273540 +umee,umee1000ya26q2cmh399q4c5aaacd9lmmdqp9c58q6j,275425 +umee,umee1pt8m9um6gd66cgkxa4klpwrs0k6vcpmqep4hwt,275642 +umee,umee1yrewl3jl2q8rrdtj97e5nse6hnn7yhm76m2lvf,277393 +umee,umee1artar64tu4f3jusuana6v965nh6tvqdt0zl7jt,278829 +umee,umee1gq5fvkv479n26x63dkh8zscqahxu4tz4pnkaz0,280121 +umee,umee1sex685w68vvv563nsyv8nezawq4hhg7qjjrcnz,281866 +umee,umee157sqchv7cakl4r3pc7avrr83sryzuxe4hj9w5s,285101 +umee,umee1pvsa5eu3lmh3g60ufqpfyrqh9uvjy3252x8jt3,285202 +umee,umee15mdrjxah4nvzsr9ql7u74h87lvm7vz73fr4s9t,285396 +umee,umee130mdyavxa5lcqjlyv0y0sxphgv56rpv43san4d,286044 +umee,umee1t8730qqv58s6849t2pw75k2w3kfffnhuj60q9g,286169 +umee,umee17hdcc9j56mjw4g2rd5qdjk65nhnp2hs0z8hy0w,286841 +umee,umee16negggxcs5ad93z6f2tvpfnyz6nnydsk267a23,287292 +umee,umee1djkltp58l2rwa4v58n2ppw8ev0tfc4ka9tmf77,287760 +umee,umee1lezscq4dexmlqmeqf6xgfyc5ppextay84nuxzh,287925 +umee,umee12v75vckyvm9pl59clc78yg879xzlgpwrxm2k4u,293323 +umee,umee1fa7v2jq5xr5xpxngx0nc6mlpz4u8d4xnh570ut,294173 +umee,umee107l5tj4py75ntrvjl8x7a54mwph6sps3apxrtv,295278 +umee,umee16vw63em8pjf20shm95rc0lcghzt396ykywfgam,295505 +umee,umee1e8yj6geqq0g349fy4k9n2gf66l6yu4n49xvldk,299314 +umee,umee148gnqljly02e28es9w9x4kxjddnljj3cplact8,300000 +umee,umee1spynk5y2wz96dq4z73snpgqhr4l49n4zz7aqxl,300000 +umee,umee1dsfk49eglk547yxqr2ewed7a5yz8pu5f9596da,300000 +umee,umee1em4nxa4jth00wquxmyegsuggpjk9hfyvu2hyxf,300194 +umee,umee1wf4e85apre6se900seja8h0pwwtd898c0drdpp,301560 +umee,umee1dh2c9svrkahv4szpn5wm9wwpxfcy8cy2vvxakd,302000 +umee,umee1920stafatl2rnvmnwgkeacdcxmysgn50y6mgfy,303634 +umee,umee1v7jvvqmas43gjsd9429296p0g8p4jj5xsptkxs,305244 +umee,umee1sjttq35hj4emazhhxw97w68csgcpp7zlyzajgj,309617 +umee,umee1kyh6zqz0v4z0l8ld9pj57ampaz5w5yjhsyv3hp,310495 +umee,umee1lquwwyhaf4pa8hw7xwwtvdduvhleaykymgyc20,310602 +umee,umee1d8pwj29kze0m35grea4z9qkdgl9e54en3qc02w,311367 +umee,umee1v0cdwvq00w03088ht45taq9wc962uw4khtg7qe,311472 +umee,umee14yth8x4a77q5rytxhv67e43p2hdzyguuw8mspd,319982 +umee,umee1m9twlqtpmqr5fy7s4westfnjvqhegvkedg6g24,323667 +umee,umee1jyp82fnv8m86we607047dlpeqcfc23xpnlc72q,324211 +umee,umee1ldrsmjsuwk7z78430hsjmny3z89d7pxe5kcqz0,324746 +umee,umee1rpz0ptv8wd5vgk6dgpr9rtwlzp2grhtyutsu9g,328532 +umee,umee1e3ad8wggxy079pfacnnm7guc7wu9zvmvl6n4w4,328673 +umee,umee16v897g6x5dns3ctavncyr7s3lex8h99rjf5ca5,329295 +umee,umee1hg77ms8erd88xvatvstqq2qwag48k0e7ek7p7p,330296 +umee,umee1kghfutamtxxhwnf5xkw5aflx42clt36m2tjkjz,335688 +umee,umee1v9j4segy437typg99wdnmcemprv9ypnsfh99ee,336503 +umee,umee1lxvzd4sr55tsqlwk6v8n0ay6t0dja4zrzpy7sy,338027 +umee,umee1wjgzwwrdelmz6t6dglhx84e96vkwptt2k2he5t,338433 +umee,umee1vx8r6x3lh6vh8wd4z2gt42sm359087e5ef8vmr,342798 +umee,umee1v3lqg7yypys4la7hmqjuz6p4uuhyhz5jn5nu00,344339 +umee,umee18nvzkc48042mkks8p98nk7dsrmzygsdqvdz67x,347545 +umee,umee1hmp3v5j25z9m4zsrlv892vvx7e6ff6c457xh96,352202 +umee,umee15xq28alrsk6plt4dp7ag7pjvtyangmx6gx288c,353010 +umee,umee16jntgthfessfhavkrfexalnccc2u3qgcxpfjcw,353643 +umee,umee1693q2x6leyyskwcuf5fza95msquj3vn89httv2,354306 +umee,umee1zl6j0kae5rpkzn7hhgys4j65rrdljl9v07ytak,354865 +umee,umee17y5uhr09dav5228qq4psqf8nmft5y6uzkyew2w,355025 +umee,umee172rn4rntpsmtuwg6q2j4avy3e5vkhjsfmd8225,356374 +umee,umee10fdvkczl76m040smd33lh9xn9j0cf26kj3wwsq,356937 +umee,umee1uu28exgfjl9amfcfr7wvfgsqaufx336kwdapzt,360135 +umee,umee1fk7c4nzlddph5wtptwz8yxnx5hug34fwh68x78,361713 +umee,umee1l5fl0x0mz0euezyyww846ufs4znlw9cysufpng,369357 +umee,umee150v968r2mmr9xe5rcmt8xa57u7m6v35te2mz9e,374426 +umee,umee1ty5grk0x29pxdp9k4la4p7hsc59z5rf77yqzy6,374974 +umee,umee142xnwdgpmpzgsyckxwyd5c9ppmmvqa9k7ujxxd,377458 +umee,umee1r7uht54clesurp27dfgg9s2fa4vf4t5hf9yr2h,386204 +umee,umee1aemsvk345fsyr2fpr0tlfdkhp60ucjl4h2c4t5,386248 +umee,umee1wnmxmrkdae7a4qrgtk4takg0aj96zj2su326s5,388479 +umee,umee1apumhyrx2ha45lg0gjndsstxccu3r3cxfph7em,392632 +umee,umee12rkhjgjhal6xavlgln0m0pyvp9maepdpvzn36a,392672 +umee,umee1ma2uvudu2ulk62df0y668899nxgz52xj3t0geg,393722 +umee,umee1wvglw0ayegzc7a9pqss2n425g7kjeleld7d3ry,393797 +umee,umee1jns3wj8q88d7qy0zxh35jy2qmx55f0h99xd9xd,394494 +umee,umee1um62ve4a6vnsdcnquel0dmt9ly5f567ajnsrj6,395234 +umee,umee147svk58r7xy774cdknkzj3qyn7tm9v9jjtppvz,395795 +umee,umee1tam7rtw2n2trjhnsjkl3yx7ncyfxvs2r7d72d3,397954 +umee,umee1t2r9g9fq7x3lpf9wl23vnnv4gmh63lqtdqj5hr,398169 +umee,umee1ytg3crmdxpm7amn2s6hs699f0sz7cws42c7e2j,400285 +umee,umee19w9hcn73e0cyq73fgy8az7rjjyzzfxdcxvptsr,400520 +umee,umee1s8vv2ycrwvewyaw9n6lasvv2t2mth9g8m54j4y,400919 +umee,umee1m20wyugxnse56q2lfmm9txyk2fx39s6fue7f4f,401356 +umee,umee12vhskj879r564lv4a4ayqnm5gm2tssn675n8qm,406559 +umee,umee1dwqyx7ltwqy4jqac8luml4e7xt58gl4nd7l2z4,408410 +umee,umee10gqywxdcrpz6vnekxs7fqfs2hjclntq4cma0xv,411151 +umee,umee1p4800m98dghv9u7tywvu45qmxc27kddasyfccu,414279 +umee,umee158gffeys5xh8ytf3f7x57yuaajzhm6fau0edgq,416522 +umee,umee1ja6e093lal4zqw7s8f3xjyj4m2jql8t4v7lq0c,417849 +umee,umee16nps6v9j3ten2ndjpmg6fdd87dwpjuagnd7lyf,423803 +umee,umee1z6wc0p8s8sanvyr05ur7vqlvkq3f60302s8ljz,424340 +umee,umee1dzz0hlf8uznvxwmgdd4su4euk8tmpys2ztynu2,424574 +umee,umee17allvlajrryj3gpfsud04nhgkuc7hyr758yutw,428569 +umee,umee18adxx2qcg9nf9uw48v462yys0wqvrq7krd2p5l,431790 +umee,umee1t95vd23m4w6vlzzkx06lgyflyfn0f64va220p0,438461 +umee,umee1gzq6j20gmgu2vvcyxelh64dy6c6w8ykynpz2jf,446417 +umee,umee1vpptxarg7zlyg5dhe2np5t6xrdn0j40py9lxpx,446450 +umee,umee147hx86yas46aflx4slg34cq49qp7dmdpqh4u90,446923 +umee,umee17vz8hvg96lddwawdfygvu89ua4v7qgd6mu423y,447496 +umee,umee1za0tttjznkg2dfll33s9c59zxs5uxjlpuyrjeu,450583 +umee,umee14z7lngdvxrzaj9a3rhhgy0vtt8dyx45zvvsx9e,453794 +umee,umee1gm5n6j7luqk7ylqr5sp4unajktqxjhq8annz23,461678 +umee,umee1ezsh0exzzwjuvmkzch2nctenpv2s0wq6w0pw4d,463742 +umee,umee12ef4yghj0ptvdtt2k0evuhpfen9tttf5v32cpj,465195 +umee,umee1wn600vqf2gvp8dw6hp9fc5f9r5te68cqet0pck,465456 +umee,umee16qahwls38s58e0kfmydcklcnww8wdrsxp7hpnz,467117 +umee,umee135awv8fgm6lvdumynslq3t4072tsk2l3fj3fgq,468221 +umee,umee14mpsqtvnkcc2654cpsz28tpmn6yce9uxjyl4sq,471388 +umee,umee102q3m4rlkaltxwnfztfgcam672mnu40kgdfpg3,473409 +umee,umee1hdeemspqtxaw5pk3ddmtzju3xtk0euj5xf2v7j,478439 +umee,umee1ykljwfz60g8thc64n8hmm0e450fjwfr2hthefw,479879 +umee,umee1mj4c3whfpphcsw0m2vu6g9r0d6pgv8cf59dkqv,481367 +umee,umee1ky0ajds5f2l59t8lgjrsfh09xpumcufh2xp02e,483305 +umee,umee1vv06crzl53yv5kp2w56hcmt30cmflnt7tdl9mu,486782 +umee,umee1twsp4qtg29hke50c44r8xdpkfqnazke38jymhd,486907 +umee,umee1ds5m0n3fn34xfjkelchy7y2ldzmue0pa8mh0gl,488165 +umee,umee1y0xw8apwzffagd9cgehswecgzr2c07ww8r3zaq,489669 +umee,umee15lujn202ar6cw2s6ys0enuyg08jytjc8n7l5k4,500000 +umee,umee1lucch767n6ykc6n087zxgpxph8xhkrj2cegzeh,500179 +umee,umee1cdg4kgs2ekaedpj626nhrfk99n6plm7dy7tn3l,500301 +umee,umee1hd2evedvt9tggmalwfj3emvd67ln7u5p00jc4r,504834 +umee,umee1maecsvnr5l3g8ypc9e0gws46jgecwamnuhspyx,508092 +umee,umee1fzlzpw5g52telfj9x79wlappf7ufjdg7xch24l,514069 +umee,umee1nm50zycnm9yf33rv8n6lpks24usxzahk9j5dr4,515066 +umee,umee1mxtepzwtdtvq3agfzwk960g5ypkfex34d4ga3p,519216 +umee,umee184zc62cg4j25cjefhnru5l8we9ssdegj7kl57k,522481 +umee,umee1e3ukvtjmrqhmwje70dhmqnvvt3tjpkrkzvslfh,533800 +umee,umee1ty9v8q54pmxff5xfjlqv6qjexe6kqeyk4mvan5,550453 +umee,umee18jnrd4knfwxvqeyj3ppwp5pw8527egy4uwpnzl,560000 +umee,umee15e47t2utfx4ryweyxdpj6xlp4dtcvkx425euma,560108 +umee,umee1urfxn7hpkweqfdaeukdr8q2puvvq54kg24n3ru,566114 +umee,umee1p06guptkql3eannp5cl5qeqh27xwhzjqc083f3,568922 +umee,umee1uj4pajjtrgg6gmdaj8t7v9uywwvsr3srpnqxcp,572290 +umee,umee1qyeprtn65ds59yhk9uj5g8ru3ulsjxx5upz7n0,574517 +umee,umee138897rghcgukk8vumm9u2z7q950mwksahjy68a,578648 +umee,umee1v0nf48pnsrdva0kcn67ev6nsdwd82nk56c93fd,579629 +umee,umee1nw0t6qfa6yr46x3rnd0zxpp34wy9cqa360xjlv,585608 +umee,umee1qzulky8hacycvxrz2jcts28zg7nypce88szqnt,592811 +umee,umee1gakeuauc2akv9rs0c3ezws3qa46hhuj4x9twrc,593054 +umee,umee1qcqx6jv7sysqgfec5fjps3umtnf42v8xwl7t24,599999 +umee,umee1ujkestmvckey9drdr7n5agnrdqeaf27es002rg,600840 +umee,umee12dqxvhevslkx2ylmguawau9gj0wug9nak5q8mr,610423 +umee,umee1eslm0n3ypkd6f67n6ymf08m2t6kt9cypfm8rrd,614890 +umee,umee14w3wm9wxvrfpr28keaswlwxvpjkyxnnsju86fs,626669 +umee,umee10r34gu8mfqcmwag7rx3ugtdfc0rgxzs9aj5x5g,635782 +umee,umee1r6adyawdqkjl055xylhzhvdc5mdt44lad755gt,641075 +umee,umee199ldped04tru9sl2f3zaakyln554aqnrlj24sq,646959 +umee,umee1g2tr5xdsr90fp4n44tefgfgs7qug2w6dj2qjul,649894 +umee,umee1345fue0f2zwmfef4d48qfe38k0wfvca6wnuef0,671423 +umee,umee1tl9reau6fgmc96fhsmef3awqk5jp067n4q5ple,674113 +umee,umee1ankptgj493x97raecqd6l0hc9sgmv4e5ewqnqe,676489 +umee,umee1q3wa3xnuyqmwqru6g52k24wk9nfdz4t6u2f3hg,680019 +umee,umee1ag3wcndp6s6k555x79rzukqd5znshpc6edw5aq,683388 +umee,umee1gp957czryfgyvxwn3tfnyy2f0t9g2p4phms3wx,690015 +umee,umee1qna2jews4p4kyd53fg9qkg4q6zgeer88rrvrqd,694715 +umee,umee1l4xvfq5uj7624m73nn8j4mgra7xq4cpf0r89hc,700000 +umee,umee1650kd9sqn2dh57yu3arvtu28q2xvxvnv7wnnhm,706027 +umee,umee1ttl7u8aje4q4muhrd9g9m7jxyq5gadjdfpx87f,706582 +umee,umee1sn85cdy8avdps4jjpdc8hvrpq67wr3gt32xwzr,714783 +umee,umee1ehkfl7palwrh6w2hhr2yfrgrq8jetguct0tppc,718856 +umee,umee1wwal2dy5arq9x5fjqdtxs2ad0dazsyxweafu5e,720000 +umee,umee1e359lxpgfecty7qhtuzwhg8qzyen484gnv50y6,720000 +umee,umee1vxhen8e73dr4j0m562zz0gwfqx0emylr9rsu09,745783 +umee,umee19jqfve8ql3l58cgwvw2934u5ccdmdxtuv7kutx,750240 +umee,umee12smny8tkhp562z3xd3hl478ruxcjauz9vmedqc,756218 +umee,umee1xwpngs5v2hx9p8ye6l3ydcr2q490txjuu4qas7,771079 +umee,umee198yet2yly5w2tf07rhs3phk79q268dncn227rr,780000 +umee,umee1klp6kc9kmmfq4eztg0fejrdfrvywd6k7kvrgn5,783934 +umee,umee1hdec9a4gl4n7tlf85vzynzdqd5qeljv23znlt5,789694 +umee,umee1sdtq00hdfp2e3kurpw7hnmdlhm0lfxltwp2wnz,810483 +umee,umee1rn406q5ylqmkhhwjeftr28cpv07nc3704ge3l7,831520 +umee,umee12usue8q9w5mmvuteh0k40h0zzutlm9k0zu5jf2,847693 +umee,umee1wztll868gprnnwykctuwaqf6rrtdc0wu33jqn3,852963 +umee,umee13l5pwylwg9w8jh4a4gr50nt359u4ylkcx0azny,915791 +umee,umee19yhhakvf5lz8j8ztenlnl5amfxzn5j9xqxyxhf,940496 +umee,umee1zu47e76gf46uqgv9mcvkacul9jl9l2alq3n0ln,960000 +umee,umee1drf4elmdm5qr3ywp0l6e2zf9l7adu0qej2lm2x,966514 +umee,umee14t6c7lpfuyfqknqpfhnhyycuxq5kr6tx7g04we,975343 +umee,umee1pjmngrwcsatsuyy8m3qrunaun67sr9x74k2qg3,998868 +umee,umee1chlmc3um9qrs66g3afvcpwtexfnhdf3aj42v6s,1000059 +umee,umee1mehq2em82mqrzdqdwk4pyquwg8u9nzt8mpgdlw,1000278 +umee,umee1gayj3vhg0tud5z4rpujr2lwvglkqzgzhmqtewu,1000280 +umee,umee1mfzjp29yukaxtycfk5jj0c7u6ltx0a4gmum47d,1000741 +umee,umee1xezhv5ntwtnt8gxzrj8lp455d2446rpcakvle6,1001301 +umee,umee1ng478yy6kay6dvjndn8cz2jty80xphxxnwhfyk,1002004 +umee,umee1p4y5f6y2l0p2a4lz3xupjltn93s43x2uxlg3ek,1002394 +umee,umee165yaj52tqhsw0spzhhycmjcp2hc2sg6mgepms6,1003374 +umee,umee1xgqr7pn80g6w398wzdmye3lu6wsgk32swqcrul,1003814 +umee,umee1agzky2ak6xs5vve3c2wzjtqdq7fwadcgj2mxf9,1024233 +umee,umee14jkqgv2qhmjafvg5pynt49uq2ejjelmkj7kvnm,1063847 +umee,umee1anqy2sjer5mu206j30dnfk277gz05uqtghuqyv,1080213 +umee,umee1afs7l9mwvz4gs23lk7l3fazfdxkxz6djh7p0v2,1101710 +umee,umee1ycfh3lwhatggcxnu3kmylrhy4w2sr06f4tpr98,1102186 +umee,umee10jej4dvnnj4wn5nfegx3js2lhaya7yd3lsl52w,1122164 +umee,umee1hxrgdmnkf30lgxrsewg5kuyujngxu2thd29y6a,1143318 +umee,umee1eajgwe5y9lprlcmthuke2kda69cg4qah6ft6dt,1150602 +umee,umee17cp6yyzex49xn38l4dllharjj0r9vg8y9wwqjw,1155189 +umee,umee14pm3fllv6gasm6sdutukk75zu8cdmr6u8q95w3,1190878 +umee,umee1xgnr5hh2xdd20wte2nl3wfsay2r5fj5m9wwphh,1194670 +umee,umee13xwunnfcrnj2kjht5edw7xsxlj3za7udfm87t5,1195712 +umee,umee15kywkhdljlkfvvzwkshnquz2x63nrxewf8jseh,1223876 +umee,umee1tnmn565dvpg87v92sd7ds7lkleam4h35lv6tcz,1226467 +umee,umee10ueglh7cf53lterlcjrfupug526w5zty7c6ph3,1300279 +umee,umee1pfxkckpcpcc5su5kydwsqa9kwnflfurlnvfcgj,1330154 +umee,umee1yjpg3fcdr5ynqfdgpahjv7wfl2a2w2wvrj3a67,1355673 +umee,umee1twegecwkgjy0ghgmvl5qwq7ntwnghmv89k8tp3,1470000 +umee,umee1vzktwpuycfxk3f3wthw5lej0zfnh3msj4agfeg,1503756 +umee,umee10wlcf6ekee03d9dm2cc2qm58nqwzgsxq87mhks,1510144 +umee,umee1aeewtytlmsac92mpcsup6pczymmch4ytyfhd9d,1510832 +umee,umee1g7hft34dlq98enqj9vnekvkqhgj8vng3508gc9,1532393 +umee,umee13lcdnj8dgmaug4k5azydxvrclvmvqxkqn685r7,1539736 +umee,umee1tazan7sv7qsp0fff8jqha9t65zdf4y5n55czuw,1617792 +umee,umee1gdgx34jhu0hjvaq5wuzwaapa8cg8mc2j4muw8m,1631154 +umee,umee1d3yvuzk27vtrsqprr4cdylls6j25ua2mkluc3l,1648011 +umee,umee1tm5lt2y6sw62dptctecq9g9wjv7hwzkfp55fry,1658532 +umee,umee1n3mhyp9fvcmuu8l0q8qvjy07x0rql8q4dtsqwh,1749306 +umee,umee1g7ddsx97qj4tfvm7u22xe5h6y3efdup6s9hfzy,1779727 +umee,umee1s94zajex46mfufkgs0hmdmwncecpagz3uqzp2f,1895767 +umee,umee12zwknmzc56ucn2gqz4q0fr8prr4uhzuuess0hc,1943758 +umee,umee1laqefwck8mkxt44jfn7fnpynfv9f2utyuzf0nk,1949323 +umee,umee1f7dqv80zxjgu6n907lpjl08e3adv2e6sm0p7zj,2000000 +umee,umee1dcv3ut53aneksf5sr7dtklfy2fada6m6ywsfnh,2000000 +umee,umee12luppuxdlw4qev2mkzv8x6z95xs9z3xfh73kas,2002602 +umee,umee1g4gtaw3s6hhg352563sedrms2vummj5erx8vpu,2096906 +umee,umee13yufths840y72wvq7gm6pmev49tcl0hssmydtw,2187199 +umee,umee1hqkepnakshax7mv5mu6qvavw5yvmawz4l93c0t,2250800 +umee,umee15j9krevxx3pswa69mqcseghqyearjljxmzf37p,2279586 +umee,umee15nrhfcmkywhs29gs72f3tskhuq09cu9de7a9uc,2500000 +umee,umee1e4vye322gkjx8n85jgcclnc7nvdvu82a3327h7,2623189 +umee,umee103ct60ckac2m7n3v8qy4h38c78kv9secckrrz0,2799463 +umee,umee15t597ks085gthp4zpx47phgfhs3q69n0xz23f2,2799999 +umee,umee1505uv3ptssj4u4fhvw98960w96xf9fzvk0409p,2837660 +umee,umee1pumtu9qmxw5d3wfvwfxyfj2syu3e6sw77pa2a6,3003597 +umee,umee1htsua87k7ldulckal8c706yl3wnswknm6qjx84,3180245 +umee,umee1f9za87n7shn3exl83ajet4vtu8flyre7g9khs8,3334318 +umee,umee18tzene5kjaj2z6ry7tj67h9a80mjmrd66xs0vy,3541049 +umee,umee10905rstxf5tzj0w6gguaa76ma7s32v48d7uzlh,3596527 +umee,umee1u84rx3way3fzqw767xspn8d57nrxvx2mcksz87,3700999 +umee,umee1faz2d57qu5vy6kua35ajad84sm8ppwrw0xq9dx,3868307 +umee,umee15srde3entztcsw9c4eg9dp2hk07vwx9s3mh7sk,4000000 +umee,umee185yp3kj8r4ghzp9lunpdn0xqyaz856kkev2jga,4005205 +umee,umee1s4vvmz0tgnuulpucckcnjjc0p6t5tpkzg58208,4006985 +umee,umee1afk9k6ulxp2phrlgk9aje6necvyqpr3zcyzte9,4062625 +umee,umee1x3rhderemr703f4lxktk2da99vl5crs2427wzd,4068895 +umee,umee1jfscy6pcyy9m79p0d75qhje7anvuxcq2zcxa04,4166666 +umee,umee1urlqkccvv23pqmx6ffjswgx8w59z209edufmsp,4229044 +umee,umee1n44v26kauqr7cqrypg9ypy9xg8yv2hlmdjwmf3,4401760 +umee,umee1pxnh2jgx6myf62vdp6gkgn7xw2f548nme69dzx,4983775 +umee,umee1esltdreda2thhjkqv8c5rjdvnxlxp94mcg4zas,5031250 +umee,umee1glkwwjmd75j9a8rg5m6xxk7lzzzdakf0hlt7wd,5834965 +umee,umee1vjrx0lks65yefnsz4xk92vugda2z25eskdfm9n,6414749 +umee,umee10swwh0ys0pq8lqpur92e4kxe30e9vc836dfzsq,6526881 +umee,umee1g6ncr88sz30cvya46lq6xtf2fpufammasf70jq,6749546 +umee,umee1q6kc78s7s9khkmgh6988ztvv5gvguajhsnqdfg,7000000 +umee,umee1apwn7s9qv7v90uqj8qnqd7ht0xs3qe7nz473jz,7000000 +umee,umee1x3g09trxpe9yl965y9x0c2gz54y77wvcuva23y,7000000 +umee,umee1xdgy8p3z5f2xhu0tsl8lv6keflhy9s5jkducsf,7000000 +umee,umee1zlwdkpxk2k0ghsnvt5reds5mmwqnjg29mtkx0a,7000000 +umee,umee1nrfas2v4yhkcana6qpck66n2jy4k08yv5ywwz8,7000000 +umee,umee1rrtmtplfrjgv39z4q02rky97sgmsparekzqct4,7000000 +umee,umee1wqr08242ysrepqgzm6q0mn7ndcnjlsf6vdxd0v,7000000 +umee,umee1vtgnc3xr5e4mjmywhq4pwa6skxzfvu8sjkasne,7000000 +umee,umee1v0cz2s3trxtyjmj75dy3hf3psqgrp65kfx9zt6,7000000 +umee,umee1p2x2sn7zjdltwvvcu2xj4p4jmrmzl5tk6vuf5v,7000000 +umee,umee1u5fnrzss6ffcde4jsqqcr4qyv783e4lg0kjl3k,7000000 +umee,umee1hvpzhd8jx7lgyfla9t4yz4exqmxmmcraky63dx,7000000 +umee,umee1gcz2tjuel4w6q3v4ec92eu4nvey6fkgnp3g5rd,7000000 +umee,umee1zh7fwxxmh8p2qstzxpdt3l5jvcz77y6ce36rjw,7000000 +umee,umee1r73f7rjms44ed7u6neqw5thwjhuu5s43f5up54,7000000 +umee,umee10n6rsv9vwxs46vtt8sjx9sc8sefr4mgvj52xt3,7000000 +umee,umee1yuz4fct5cc3td6fp7he055mut0d4ukcskjxwyg,7000000 +umee,umee1lg80fgyel47tlt8hnhxx2akh4dr2e0jcp7d3yp,7000000 +umee,umee1ctkj6cfvrynrxuwz3kq6ayes4xt3y6c6xa4qmg,7000000 +umee,umee1z4fyf82un7c8h2ye7cnskanzf7rp0fkmlslz5h,7000000 +umee,umee10a8s4ahyfez0rqk5arqtuz4cljrkz2rr6nulve,7000000 +umee,umee1h0w24fa8tzm40jeqf7c5rvnnsa0f7589jsx7ye,7000000 +umee,umee1453aclvrj7zavf9a8amy6n54z42af3e4fv4qh9,7000000 +umee,umee1hls4u0st506fn45a82t5rd883gnltk7ensflt8,7000000 +umee,umee10h3xkqs3za09k4xu7rcg43zmuqkzwrwt39zva4,7000000 +umee,umee1nhndltsp2vm234kpuczryuf9c7skqqj2n6nw47,7000000 +umee,umee1puhljyv555kc3vsp9tethzzas02m2a6nd8z7gc,7000000 +umee,umee126aa62y7rz7hvhw7pg79rjc3mgwggmdshknecy,7000000 +umee,umee1hq7e8qm24ep6644mj682caeq96vu9xckyqcvhw,7000000 +umee,umee1pn8x9rv4823cgwmyh07z230mllg2prdxku97c7,7000000 +umee,umee1u9hhq89u6ppp4gut8ah9dmu5djlwm9t9r7rl05,7000000 +` \ No newline at end of file diff --git a/app/upgrades/v14/upgrades.go b/app/upgrades/v14/upgrades.go new file mode 100644 index 0000000000..a9b889d8f0 --- /dev/null +++ b/app/upgrades/v14/upgrades.go @@ -0,0 +1,554 @@ +package v14 + +import ( + "fmt" + "time" + + errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" + errortypes "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/module" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + sdkvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + vesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + ccvconsumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper" + evmosvestingkeeper "github.com/evmos/vesting/x/vesting/keeper" + "github.com/evmos/vesting/x/vesting/types" + evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" + + "github.com/Stride-Labs/stride/v13/utils" + claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +var ( + UpgradeName = "v14" + + GaiaChainId = "cosmoshub-4" + + // Vesting + VestingStartTimeAccount1 = int64(1662350400) // Sept 4, 2022 + VestingEndTimeAccount1 = int64(1788512452) + VestingStartTimeAccount2 = int64(1662350400) // Sept 4, 2022 + VestingEndTimeAccount2 = int64(1820016452) + Account1 = "stride12z83xmrkr7stjk4q2vn95c02n7jryj55gd3aq3" + Account1VestingUstrd = int64(187_500_000_000) + Account2 = "stride1nwyvkxm89yg8e3fyxgruyct4zp90mg4nlk87lg" + Account2VestingUstrd = int64(375_000_000_000) + FunderAddress = "stride1avdulp2p7jjv37valeyt4c6fn6qtfhevr2ej3r" + + // ICS + DistributionTransmissionChannel = "channel-0" + // Module account address for consumer_rewards_pool (see: https://github.com/cosmos/interchain-security/blob/main/x/ccv/provider/types/keys.go#L33C25-L33C46) + ProviderFeePoolAddrStr = "cosmos1ap0mh6xzfn8943urr84q6ae7zfnar48am2erhd" + ConsumerRedistributionFraction = "0.85" + Enabled = true + RefundFraction = "0.4" + // strided q auth module-account cons_to_send_to_provider + ConsToSendToProvider = "stride1ywtansy6ss0jtq8ckrcv6jzkps8yh8mfmvxqvv" + FeeCollector = "stride17xpfvakm2amg962yls6f84z3kell8c5lnjrul3" + + // Airdrop params + AirdropDuration = time.Hour * 24 * 30 * 12 * 3 // 3 years + AirdropStartTime = time.Date(2023, 9, 4, 16, 0, 0, 0, time.UTC) // Sept 4, 2023 @ 16:00 UTC (12:00 EST) + + InjectiveAirdropDistributor = "stride1gxy4qnm7pg2wzfpc3j7rk7ggvyq2ls944f0wus" + InjectiveAirdropIdentifier = "injective" + InjectiveChainId = "injective-1" + + ComdexAirdropDistributor = "stride1quag8me3n7h7qw2z0fm7khdemwummep6lnn3ja" + ComdexAirdropIdentifier = "comdex" + ComdexChainId = "comdex-1" + + SommAirdropDistributor = "stride13xxegkegnezayceeqdy98v2k8xyat5ah4umdwk" + SommAirdropIdentifier = "sommelier" + SommChainId = "sommelier-3" + + UmeeAirdropDistributor = "stride1qkj9hh08zk44zrw2krv5vn34qn8cwt7h2ppfxu" + UmeeAirdropIdentifier = "umee" + UmeeChainId = "umee-1" +) + +// CreateUpgradeHandler creates an SDK upgrade handler for v14 +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + cdc codec.Codec, + accountKeeper authkeeper.AccountKeeper, + bankKeeper bankkeeper.Keeper, + claimKeeper claimkeeper.Keeper, + consumerKeeper *ccvconsumerkeeper.Keeper, + icqKeeper icqkeeper.Keeper, + stakeibcKeeper stakeibckeeper.Keeper, + stakingKeeper stakingkeeper.Keeper, + evmosvestingKeeper evmosvestingkeeper.Keeper, + stakeibcStoreKey storetypes.StoreKey, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + ctx.Logger().Info("Starting upgrade v14...") + + evk := evmosvestingKeeper + sk := stakingKeeper + ak := accountKeeper + bk := bankKeeper + ck := consumerKeeper + sibc := stakeibcKeeper + currentVersions := mm.GetVersionMap() + + // Migrate the Validator and HostZone structs from stakeibc + utils.LogModuleMigration(ctx, currentVersions, stakeibctypes.ModuleName) + if err := stakeibcmigration.MigrateStore(ctx, stakeibcStoreKey, cdc); err != nil { + return vm, errorsmod.Wrapf(err, "unable to migrate stakeibc store") + } + + // Update Stakeibc Params + MigrateStakeibcParams(ctx, stakeibcKeeper) + + // Clear out any pending queries since the Query type updated + // There shouldn't be any queries here unless the upgrade happened right at the epoch + ClearPendingQueries(ctx, icqKeeper) + + // Enable LSM for the Gaia + err := EnableLSMForGaia(ctx, stakeibcKeeper) + if err != nil { + return vm, errorsmod.Wrapf(err, "unable to enable LSM for Gaia") + } + + // Add airdrops for Injective, Comedex, Somm, and Umee + if err := InitAirdrops(ctx, claimKeeper); err != nil { + return vm, errorsmod.Wrapf(err, "unable to migrate airdrop") + } + + // VESTING CHANGES + // Migrate SL employee pool Account1 to evmos vesting account + if err := MigrateAccount1(ctx, evk, sk, ak, bk); err != nil { + return vm, errorsmod.Wrapf(err, "unable to migrate account 12z83x") + } + + // Update vesting schedule - SL employee pool tokens were mistankenly assigned an investor vesting schedule + // migrate Account2 from a ContinuousVestingAccount that starts on Sept 4, 2023 to a continuous vesting account that starts on Sept 4, 2022 + if err := MigrateAccount2(ctx, ak); err != nil { + return vm, errorsmod.Wrapf(err, "unable to migrate account 1nwyvk") + } + + // ICS CHANGES + // In the v13 upgrade, params were reset to genesis. In v12, the version map wasn't updated. So when mm.RunMigrations(ctx, configurator, vm) ran + // in v13, InitGenesis was run for ccvconsumer. + if err := SetConsumerParams(ctx, ck, sibc); err != nil { + return vm, errorsmod.Wrapf(err, "unable to set consumer params") + } + // Since the last upgrade (which is also when rewards stopped accumulating), to much STRD has been sent to the consumer fee pool. This is because + // ConsumerRedistributionFraction was updated from 0.85 to 0.75 in the last upgrade. 25% of inflation (instead of 15%) was being sent there. So, + // we need to send 1-(15/25) = 40% of the STRD in the fee pool back to the fee distribution account. + if err := SendConsumerFeePoolToFeeDistribution(ctx, ck, bk, ak, sk); err != nil { + return vm, errorsmod.Wrapf(err, "unable to send consumer fee pool to fee distribution") + } + + // `RunMigrations` (below) checks the old consensus version of each module (found in + // the store) and compares it against the updated consensus version in the binary + // If the old and new consensus versions are not the same, it attempts to call that + // module's migration function that must be registered ahead of time + // + // Since the migrations above were executed directly (instead of being registered + // and invoked through a Migrator), we need to set the module versions in the versionMap + // to the new version, to prevent RunMigrations from attempting to re-run each migrations + vm[stakeibctypes.ModuleName] = currentVersions[stakeibctypes.ModuleName] + + return mm.RunMigrations(ctx, configurator, vm) + } +} + +func InitAirdrops(ctx sdk.Context, claimKeeper claimkeeper.Keeper) error { + duration := uint64(AirdropDuration.Seconds()) + startTime := uint64(AirdropStartTime.Unix()) + + // Add the Injective Airdrop + ctx.Logger().Info("Adding Injective airdrop...") + if err := claimKeeper.CreateAirdropAndEpoch(ctx, claimtypes.MsgCreateAirdrop{ + Distributor: InjectiveAirdropDistributor, + Identifier: InjectiveAirdropIdentifier, + ChainId: InjectiveChainId, + Denom: claimtypes.DefaultClaimDenom, + StartTime: startTime, + Duration: duration, + AutopilotEnabled: true, + }); err != nil { + return err + } + + // Add the Comdex Airdrop + ctx.Logger().Info("Adding Comdex airdrop...") + if err := claimKeeper.CreateAirdropAndEpoch(ctx, claimtypes.MsgCreateAirdrop{ + Distributor: ComdexAirdropDistributor, + Identifier: ComdexAirdropIdentifier, + ChainId: ComdexChainId, + Denom: claimtypes.DefaultClaimDenom, + StartTime: startTime, + Duration: duration, + AutopilotEnabled: false, + }); err != nil { + return err + } + + // Add the Somm Airdrop + ctx.Logger().Info("Adding Somm airdrop...") + if err := claimKeeper.CreateAirdropAndEpoch(ctx, claimtypes.MsgCreateAirdrop{ + Distributor: SommAirdropDistributor, + Identifier: SommAirdropIdentifier, + ChainId: SommChainId, + Denom: claimtypes.DefaultClaimDenom, + StartTime: startTime, + Duration: duration, + AutopilotEnabled: false, + }); err != nil { + return err + } + + // Add the Umee Airdrop + ctx.Logger().Info("Adding Umee airdrop...") + if err := claimKeeper.CreateAirdropAndEpoch(ctx, claimtypes.MsgCreateAirdrop{ + Distributor: UmeeAirdropDistributor, + Identifier: UmeeAirdropIdentifier, + ChainId: UmeeChainId, + Denom: claimtypes.DefaultClaimDenom, + StartTime: startTime, + Duration: duration, + AutopilotEnabled: false, + }); err != nil { + return err + } + + ctx.Logger().Info("Loading airdrop allocations...") + claimKeeper.LoadAllocationData(ctx, allocations) + return nil +} + +func MigrateAccount1(ctx sdk.Context, evk evmosvestingkeeper.Keeper, sk stakingkeeper.Keeper, ak authkeeper.AccountKeeper, bk bankkeeper.Keeper) error { + // fetch the account + account := ak.GetAccount(ctx, sdk.MustAccAddressFromBech32(Account1)) + if account == nil { + // account must be initialized + return errorsmod.Wrapf(errortypes.ErrInvalidRequest, "account %s not found", Account1) + } + // First, reset the account as a base account. Only accounts that conform to the BaseAccount interface can be converted to ClawbackVestingAccounts + baseVestingAcc := account.(*vesting.ContinuousVestingAccount).BaseVestingAccount + baseAcc := baseVestingAcc.BaseAccount + ak.SetAccount(ctx, baseAcc) + + // Then, create the clawback vesting account. This will reset the account type + createClawbackMsg := &types.MsgCreateClawbackVestingAccount{ + FunderAddress: FunderAddress, + VestingAddress: Account1, + EnableGovClawback: false, + } + _, err := evk.CreateClawbackVestingAccount(sdk.WrapSDKContext(ctx), createClawbackMsg) + if err != nil { + return err + } + + // TODO: verify sk.BondDenom(ctx) is ustrd by querying the account after running localstride + // NOTE: LockupPeriods adds a transfer restriction. Unvested tokens are also transfer restricted. The behavior we want is + // Vested: + // - transferable + // - delegatable + // - votable + // Unvested: + // - not transferable + // - delegatable + // - votable + // This is the default behavior (without a lockup). So, we don't add LockupPeriods. + fundAccMsg := &types.MsgFundVestingAccount{ + FunderAddress: FunderAddress, + VestingAddress: Account1, + StartTime: time.Unix(VestingStartTimeAccount1, 0), + VestingPeriods: sdkvesting.Periods{ + // Period is 3 years + // 60*60*24*365*3 seconds + {Length: 94608000, Amount: sdk.NewCoins(sdk.NewCoin(sk.BondDenom(ctx), sdk.NewInt(Account1VestingUstrd)))}, + }, + } + + // Then, fund the account + err = FundVestingAccount(ctx, evk, sk, ak, bk, fundAccMsg) + if err != nil { + return err + } + + return nil +} + +// Migrate the stakeibc params, specifically: +// - Remove SafetyNumValidators +// - Remove SafetyMaxSlashPercentage +// - Add ValidatorSlashQueryThreshold +// +// NOTE: If a parameter is added, the old params cannot be unmarshalled +// to the new schema. To get around this, we have to set each parameter explicitly +// Considering all mainnet stakeibc params are set to the default, we can just use that +func MigrateStakeibcParams(ctx sdk.Context, k stakeibckeeper.Keeper) { + params := stakeibctypes.DefaultParams() + k.SetParams(ctx, params) +} + +// Since the Query struct was updated, it's easier to just clear out any pending +// queries rather than attempt to migrate them +func ClearPendingQueries(ctx sdk.Context, k icqkeeper.Keeper) { + for _, query := range k.AllQueries(ctx) { + k.DeleteQuery(ctx, query.Id) + } +} + +// Enable LSM liquid stakes for Gaia +func EnableLSMForGaia(ctx sdk.Context, k stakeibckeeper.Keeper) error { + hostZone, found := k.GetHostZone(ctx, GaiaChainId) + if !found { + return stakeibctypes.ErrHostZoneNotFound.Wrapf(GaiaChainId) + } + + hostZone.LsmLiquidStakeEnabled = true + k.SetHostZone(ctx, hostZone) + + return nil +} +func MigrateAccount2(ctx sdk.Context, ak authkeeper.AccountKeeper) error { + // Get account + account := ak.GetAccount(ctx, sdk.MustAccAddressFromBech32(Account2)) + if account == nil { + return nil + } + // change the start_time to Sept 4, 2022. The ugprade goes live on or after Sept 4, 2023, so the first year vest is still enforced + // (the account was previously set to start on Sept 4, 2023) + account.(*vesting.ContinuousVestingAccount).StartTime = VestingStartTimeAccount2 + // NOTE: we shouldn't have to update delegated_vesting on the BaseAccount. That's because, + // DF (delegated free) and DV (delegated vesting) coins are set on (un)delegation and are point-in-time. + // So, delegated_vesting overcounts how many tokens are vesting. Whenever an undelegation occurs, DF and DV should be set correctly. + // See: https://github.com/cosmos/cosmos-sdk/commit/c5238b0d1ecfef8be3ccdaee02d23ee93ef9c69b + // set the account + ak.SetAccount(ctx, account) + return nil +} + +func SetConsumerParams(ctx sdk.Context, ck *ccvconsumerkeeper.Keeper, sibc stakeibckeeper.Keeper) error { + + // Pre-upgrade params + // "params": { + // "enabled": false, Set to true + // "blocks_per_distribution_transmission": "1000", OK + // "distribution_transmission_channel": "", Set to channel-0 + // "provider_fee_pool_addr_str": "", Set to address + // "ccv_timeout_period": "2419200s", OK + // "transfer_timeout_period": "3600s", OK + // "consumer_redistribution_fraction": "0.75", Set to 0.85 + // "historical_entries": "10000", OK + // "unbonding_period": "1728000s", reset in proposal: + // "soft_opt_out_threshold": "0.05", OK + // "reward_denoms": [], Set to stTokens and revert change + // "provider_reward_denoms": [] Leave unset + // } + // Params should match https://dev.mintscan.io/cosmos/proposals/799 + + ccvconsumerparams := ck.GetConsumerParams(ctx) + ccvconsumerparams.Enabled = true + ccvconsumerparams.DistributionTransmissionChannel = DistributionTransmissionChannel + ccvconsumerparams.ProviderFeePoolAddrStr = ProviderFeePoolAddrStr + ccvconsumerparams.ConsumerRedistributionFraction = ConsumerRedistributionFraction + ck.SetParams(ctx, ccvconsumerparams) + + // Then, add the stTokens to the reward list + ctx.Logger().Info("Registering stTokens to consumer reward denom whitelist...") + hostZones := sibc.GetAllHostZone(ctx) + allDenoms := []string{} + + // get all stToken denoms + for _, zone := range hostZones { + allDenoms = append(allDenoms, stakeibctypes.StAssetDenomFromHostZoneDenom(zone.HostDenom)) + } + + err := sibc.RegisterStTokenDenomsToWhitelist(ctx, allDenoms) + if err != nil { + return errorsmod.Wrapf(err, "unable to register stTokens to whitelist") + } + + return nil +} + +func SendConsumerFeePoolToFeeDistribution(ctx sdk.Context, ck *ccvconsumerkeeper.Keeper, bk bankkeeper.Keeper, ak authkeeper.AccountKeeper, sk stakingkeeper.Keeper) error { + // Read account balance of consumer fee account + address := sdk.MustAccAddressFromBech32(ConsToSendToProvider) + frac, err := sdk.NewDecFromStr(RefundFraction) + if err != nil { + // ConsumerRedistributionFrac was already validated when set as a param + panic(fmt.Errorf("ConsumerRedistributionFrac is invalid: %w", err)) + } + + total := bk.GetBalance(ctx, address, sk.BondDenom(ctx)) + totalTokens := sdk.NewDecCoinsFromCoins(total) + // truncated decimals are implicitly added to provider + refundTokens, _ := totalTokens.MulDec(frac).TruncateDecimal() + for _, token := range refundTokens { + // Send tokens back to the fee distributinon address + // NOTE: This is technically not a module account because it's removed from maccPerms (in order to allow ibc transfers, see: https://github.com/cosmos/ibc-go/issues/1889) + // But conceptually it's a module account + err := bk.SendCoinsFromAccountToModule(ctx, address, authtypes.FeeCollectorName, sdk.NewCoins(token)) + if err != nil { + return errorsmod.Wrapf(err, "unable to send consumer fee pool to fee distribution") + } + } + return nil +} + +// ---------------------------- Evmos vesting logic ------------------------------------ +// NOTE: This is mostly copy+pasted from Evmos vesting module +// However, some of the functions were private so couldn't be used directly and the token transfer (funding) logic was removed + +// FundVestingAccount funds a ClawbackVestingAccount with the provided amount. +// This can only be executed by the funder of the vesting account. +// +// Checks performed on the ValidateBasic include: +// - funder and vesting addresses are correct bech32 format +// - vesting address is not the zero address +// - both vesting and lockup periods are non-empty +// - both lockup and vesting periods contain valid amounts and lengths +// - both vesting and lockup periods describe the same total amount +func FundVestingAccount(ctx sdk.Context, k evmosvestingkeeper.Keeper, stakingKeeper stakingkeeper.Keeper, accountKeeper authkeeper.AccountKeeper, bankKeeper bankkeeper.Keeper, msg *types.MsgFundVestingAccount) error { + ak := accountKeeper + bk := bankKeeper + + // Error checked during msg validation + // CHANGE: funderAddr isn't used because we're doing a migration + // funderAddr := sdk.MustAccAddressFromBech32(msg.FunderAddress) + vestingAddr := sdk.MustAccAddressFromBech32(msg.VestingAddress) + + if bk.BlockedAddr(vestingAddr) { + return errorsmod.Wrapf(errortypes.ErrUnauthorized, + "%s is not allowed to receive funds", msg.VestingAddress, + ) + } + + // Check if vesting account exists + vestingAcc, err := k.GetClawbackVestingAccount(ctx, vestingAddr) + if err != nil { + return err + } + + vestingCoins := msg.VestingPeriods.TotalAmount() + lockupCoins := msg.LockupPeriods.TotalAmount() + + fmt.Println("vestingCoins: ", vestingCoins) + fmt.Println("lockupCoins: ", lockupCoins) + + // If lockup absent, default to an instant unlock schedule + if !vestingCoins.IsZero() && len(msg.LockupPeriods) == 0 { + msg.LockupPeriods = sdkvesting.Periods{ + {Length: 0, Amount: vestingCoins}, + } + lockupCoins = vestingCoins + } + + // If vesting absent, default to an instant vesting schedule + if !lockupCoins.IsZero() && len(msg.VestingPeriods) == 0 { + msg.VestingPeriods = sdkvesting.Periods{ + {Length: 0, Amount: lockupCoins}, + } + vestingCoins = lockupCoins + } + + if msg.FunderAddress != vestingAcc.FunderAddress { + return errorsmod.Wrapf(errortypes.ErrInvalidRequest, "account %s can only accept grants from account %s", msg.VestingAddress, vestingAcc.FunderAddress) + } + + // CHANGE: redefine addGrant below and pass in the vesting/staking keepers + err = addGrant(ctx, k, stakingKeeper, vestingAcc, msg.GetStartTime().Unix(), msg.GetLockupPeriods(), msg.GetVestingPeriods(), vestingCoins) + if err != nil { + return err + } + ak.SetAccount(ctx, vestingAcc) + + // CHANGE: because we're doing a migration, we don't need to send coins from the funder to the vesting account + // Send coins from the funder to vesting account + // if err = bk.SendCoins(ctx, funderAddr, vestingAddr, vestingCoins); err != nil { + // return nil, err + // } + + telemetry.IncrCounter( + float32(ctx.GasMeter().GasConsumed()), + "tx", "fund_vesting_account", "gas_used", + ) + ctx.EventManager().EmitEvents( + sdk.Events{ + sdk.NewEvent( + evmosvestingtypes.EventTypeFundVestingAccount, + sdk.NewAttribute(sdk.AttributeKeySender, msg.FunderAddress), + sdk.NewAttribute(evmosvestingtypes.AttributeKeyCoins, vestingCoins.String()), + sdk.NewAttribute(evmosvestingtypes.AttributeKeyStartTime, msg.StartTime.String()), + sdk.NewAttribute(evmosvestingtypes.AttributeKeyAccount, msg.VestingAddress), + ), + }, + ) + + return nil +} + +// addGrant merges a new clawback vesting grant into an existing +// ClawbackVestingAccount. +func addGrant( + ctx sdk.Context, + k evmosvestingkeeper.Keeper, + stakingKeeper stakingkeeper.Keeper, + va *types.ClawbackVestingAccount, + grantStartTime int64, + grantLockupPeriods, grantVestingPeriods sdkvesting.Periods, + grantCoins sdk.Coins, +) error { + // check if the clawback vesting account has only been initialized and not yet funded -- + // in that case it's necessary to update the vesting account with the given start time because this is set to zero in the initialization + if len(va.LockupPeriods) == 0 && len(va.VestingPeriods) == 0 { + va.StartTime = time.Unix(grantStartTime, 0).UTC() + } + + // how much is really delegated? + bondedAmt := stakingKeeper.GetDelegatorBonded(ctx, va.GetAddress()) + unbondingAmt := stakingKeeper.GetDelegatorUnbonding(ctx, va.GetAddress()) + delegatedAmt := bondedAmt.Add(unbondingAmt) + delegated := sdk.NewCoins(sdk.NewCoin(stakingKeeper.BondDenom(ctx), delegatedAmt)) + + // modify schedules for the new grant + newLockupStart, newLockupEnd, newLockupPeriods := types.DisjunctPeriods(va.GetStartTime(), grantStartTime, va.LockupPeriods, grantLockupPeriods) + newVestingStart, newVestingEnd, newVestingPeriods := types.DisjunctPeriods( + va.GetStartTime(), + grantStartTime, + va.GetVestingPeriods(), + grantVestingPeriods, + ) + + if newLockupStart != newVestingStart { + return errorsmod.Wrapf( + types.ErrVestingLockup, + "vesting start time calculation should match lockup start (%d ≠ %d)", + newVestingStart, newLockupStart, + ) + } + + va.StartTime = time.Unix(newLockupStart, 0).UTC() + va.EndTime = types.Max64(newLockupEnd, newVestingEnd) + va.LockupPeriods = newLockupPeriods + va.VestingPeriods = newVestingPeriods + va.OriginalVesting = va.OriginalVesting.Add(grantCoins...) + + // cap DV at the current unvested amount, DF rounds out to current delegated + unvested := va.GetVestingCoins(ctx.BlockTime()) + va.DelegatedVesting = delegated.Min(unvested) + va.DelegatedFree = delegated.Sub(va.DelegatedVesting...) + return nil +} diff --git a/app/upgrades/v14/upgrades_test.go b/app/upgrades/v14/upgrades_test.go new file mode 100644 index 0000000000..021262de8a --- /dev/null +++ b/app/upgrades/v14/upgrades_test.go @@ -0,0 +1,366 @@ +package v14_test + +import ( + "fmt" + "testing" + "time" + + sdkmath "cosmossdk.io/math" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" + "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v13/app/apptesting" + v14 "github.com/Stride-Labs/stride/v13/app/upgrades/v14" + claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + interchainquerytypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +var ( + dummyUpgradeHeight = int64(5) + // Shortly after the upgrade - 9/25/23 + AfterUpgrade = int64(1695677732) + Account2End = int64(1820016452) + InitCoins = int64(100) + + osmoAirdropId = "osmosis" + ustrd = "ustrd" + + testHostZones = []struct { + chainId string + denom string + }{ + {chainId: "cosmoshub-4", denom: "uatom"}, + {chainId: "osmosis-1", denom: "uosmo"}, + {chainId: "juno-1", denom: "ujuno"}, + } +) + +type UpgradeTestSuite struct { + apptesting.AppTestHelper +} + +func (s *UpgradeTestSuite) SetupTest() { + s.Setup() +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +func (s *UpgradeTestSuite) TestUpgrade() { + // Setup + s.SetupAirdrops() + s.SetupVestingStoreBeforeUpgrade() + s.FundConsToSendToProviderModuleAccount() + s.SetupConsumerRewards() + checkStakeibcStoreAfterUpgrade := s.SetupOldStakeibcStore() + checkPendingQueriesRemoved := s.SetupPendingQueries() + + // Upgrade + s.ConfirmUpgradeSucceededs("v14", dummyUpgradeHeight) + + // Post-upgrade checks + s.CheckVestingStoreAfterUpgrade() + s.CheckCcvConsumerParamsAfterUpgrade() + s.CheckRefundAfterUpgrade() + s.CheckAirdropsInitialized() + s.VerifyConsumerRewards() + s.CheckAirdropsInitialized() + checkStakeibcStoreAfterUpgrade() + checkPendingQueriesRemoved() +} + +func (s *UpgradeTestSuite) SetupConsumerRewards() { + // Clear the reward denoms in the consumer keeper + consumerParams := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + consumerParams.RewardDenoms = []string{"denomA", "denomB"} + s.App.ConsumerKeeper.SetParams(s.Ctx, consumerParams) + + // The new host zones are added in the SetupStakeibcStore function +} + +func (s *UpgradeTestSuite) VerifyConsumerRewards() { + // Confirm the new reward denoms were registered + expectedRewardDenoms := []string{"denomA", "denomB", "stuatom", "stuosmo", "stujuno"} + consumerParams := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + s.Require().ElementsMatch(expectedRewardDenoms, consumerParams.RewardDenoms) +} + +func (s *UpgradeTestSuite) FundConsToSendToProviderModuleAccount() { + // Fund the cons_to_send_to_provider module account + address := sdk.MustAccAddressFromBech32(v14.ConsToSendToProvider) + s.FundAccount(address, sdk.NewCoin(s.App.StakingKeeper.BondDenom(s.Ctx), sdkmath.NewInt(InitCoins))) +} + +func (s *UpgradeTestSuite) CheckRefundAfterUpgrade() { + afterCtx := s.Ctx.WithBlockHeight(dummyUpgradeHeight) + // Verify the correct number of tokens were sent out of the cons_to_send_to_provider module account + icsFeeAddress := sdk.MustAccAddressFromBech32(v14.ConsToSendToProvider) + // Check the account balance + balance := s.App.BankKeeper.GetBalance(afterCtx, icsFeeAddress, s.App.StakingKeeper.BondDenom(afterCtx)) + refundFrac, err := sdk.NewDecFromStr(v14.RefundFraction) + s.Require().NoError(err) + remainingFrac := sdk.NewDec(int64(1)).Sub(refundFrac) + expectedNumCoins := remainingFrac.Mul(sdk.NewDec(InitCoins)).TruncateInt64() + s.Require().Equal(sdk.NewInt64Coin(s.App.StakingKeeper.BondDenom(s.Ctx), expectedNumCoins), balance) + +} + +func (s *UpgradeTestSuite) CheckCcvConsumerParamsAfterUpgrade() { + afterCtx := s.Ctx.WithBlockHeight(dummyUpgradeHeight) + // Verify the ccv consumer params are set correctly + ccvConsumerParams := s.App.ConsumerKeeper.GetConsumerParams(afterCtx) + // Verify DistributionTransmissionChannel is set + s.Require().Equal(v14.DistributionTransmissionChannel, ccvConsumerParams.DistributionTransmissionChannel) + // Verify ProviderFeePoolAddrStr is set + s.Require().Equal(v14.ProviderFeePoolAddrStr, ccvConsumerParams.ProviderFeePoolAddrStr) + // Verify ConsumerRedistributionFraction is set + s.Require().Equal(v14.ConsumerRedistributionFraction, ccvConsumerParams.ConsumerRedistributionFraction) + // Verify Enabled is set + s.Require().Equal(v14.Enabled, ccvConsumerParams.Enabled) + + // TODO: verify reward denoms are set correctly +} + +func (s *UpgradeTestSuite) SetupVestingStoreBeforeUpgrade() { + // Initialize the two accounts as continuous vesting accounts + // Create the ContinuousVestingAccount + address1, err := sdk.AccAddressFromBech32(v14.Account1) + s.Require().NoError(err) + address2, err := sdk.AccAddressFromBech32(v14.Account2) + s.Require().NoError(err) + account1 := s.CreateContinuousVestingAccount(address1, v14.VestingStartTimeAccount1, v14.VestingEndTimeAccount1, v14.Account1VestingUstrd) + account2 := s.CreateContinuousVestingAccount(address2, v14.VestingStartTimeAccount2, v14.VestingEndTimeAccount2, v14.Account2VestingUstrd) + + // Fund accounts 1 and 2 + s.FundAccount(address1, sdk.NewCoin(s.App.StakingKeeper.BondDenom(s.Ctx), sdkmath.NewInt(v14.Account1VestingUstrd))) + s.FundAccount(address2, sdk.NewCoin(s.App.StakingKeeper.BondDenom(s.Ctx), sdkmath.NewInt(v14.Account2VestingUstrd))) + + // Store the accounts as ContinuousVestingAccounts + s.App.AccountKeeper.SetAccount(s.Ctx, account1) + s.App.AccountKeeper.SetAccount(s.Ctx, account2) +} + +func (s *UpgradeTestSuite) CheckVestingStoreAfterUpgrade() { + afterCtx := s.Ctx.WithBlockHeight(dummyUpgradeHeight) + address1, err := sdk.AccAddressFromBech32(v14.Account1) + s.Require().NoError(err) + address2, err := sdk.AccAddressFromBech32(v14.Account2) + s.Require().NoError(err) + // Verify account1 is now a ClawbackVestingAccount + account1 := s.App.AccountKeeper.GetAccount(afterCtx, address1) + s.Require().IsType(&evmosvestingtypes.ClawbackVestingAccount{}, account1) + + // And that no tokens are vested after the upgrade + vestingAccount1 := account1.(*evmosvestingtypes.ClawbackVestingAccount) + afterUpgrade := time.Unix(AfterUpgrade, 0) + coins := vestingAccount1.GetVestedOnly(afterUpgrade) + s.Require().Equal(int64(0), coins.AmountOf(s.App.StakingKeeper.BondDenom(s.Ctx)).Int64()) + + // Verify account2 is still a ContinuousVestingAccount + account2 := s.App.AccountKeeper.GetAccount(afterCtx, address2) + s.Require().IsType(&types.ContinuousVestingAccount{}, account2) + // Verify the correct number of tokens is vested after the upgrade + vestingAccount2 := account2.(*types.ContinuousVestingAccount) + coins = vestingAccount2.GetVestedCoins(afterUpgrade) + expectedVestedCoins := int64(float64(v14.Account2VestingUstrd)*(float64(AfterUpgrade-v14.VestingStartTimeAccount2)/float64(v14.VestingEndTimeAccount2-v14.VestingStartTimeAccount2))) + 1 // add 1, rounding + s.Require().Equal(expectedVestedCoins, coins.AmountOf(s.App.StakingKeeper.BondDenom(s.Ctx)).Int64()) +} + +func initBaseAccount(address sdk.AccAddress) *authtypes.BaseAccount { + bacc := authtypes.NewBaseAccountWithAddress(address) + return bacc +} + +func (s *UpgradeTestSuite) CreateContinuousVestingAccount(address sdk.AccAddress, start int64, end int64, coins int64) *types.ContinuousVestingAccount { + startTime := time.Unix(start, 0) + endTime := time.Unix(end, 0) + + // init a base account + // send tokens to the base account + bacc := initBaseAccount(address) + origCoins := sdk.Coins{sdk.NewInt64Coin(s.App.StakingKeeper.BondDenom(s.Ctx), coins)} + cva := types.NewContinuousVestingAccount(bacc, origCoins, start, end) + + // Sanity check the vesting schedule + // require no coins vested in the very beginning of the vesting schedule + vestedCoins := cva.GetVestedCoins(startTime) + s.Require().Nil(vestedCoins) + + // require all coins vested at the end of the vesting schedule) + vestedCoins = cva.GetVestedCoins(endTime) + s.Require().Equal(origCoins, vestedCoins) + + // require 50% of coins vested + midpoint := time.Unix((start+end)/2, 0) + vestedCoins = cva.GetVestedCoins(midpoint) + s.Require().Equal(sdk.Coins{sdk.NewInt64Coin(s.App.StakingKeeper.BondDenom(s.Ctx), coins/2)}, vestedCoins) + + return cva +} + +func (s *UpgradeTestSuite) SetupAirdrops() { + // Add a test aidrop to the store + params := claimtypes.Params{ + Airdrops: []*claimtypes.Airdrop{ + { + AirdropIdentifier: osmoAirdropId, + ClaimedSoFar: sdkmath.NewInt(1000000), + }, + }, + } + err := s.App.ClaimKeeper.SetParams(s.Ctx, params) + s.Require().NoError(err, "no error expected when setting claim params") + + // Set vesting to 0s + claimtypes.DefaultVestingInitialPeriod, err = time.ParseDuration("0s") + s.Require().NoError(err, "no error expected when setting vesting initial period") +} + +func (s *UpgradeTestSuite) CheckAirdropsInitialized() { + afterCtx := s.Ctx.WithBlockHeight(dummyUpgradeHeight) + + // Check that all airdrops were added, osmosis airdrop wasn't removed + claimParams, err := s.App.ClaimKeeper.GetParams(s.Ctx) + s.Require().NoError(err, "no error expected when getting params") + s.Require().Len(claimParams.Airdrops, 5, "there should be exactly 5 airdrops") + + // ------ OSMO ------- + osmoAirdrop := claimParams.Airdrops[0] + s.Require().Equal(osmoAirdropId, osmoAirdrop.AirdropIdentifier, "osmo airdrop identifier") // verify this wasn't deleted + + // ------ INJECTIVE ------- + injectiveAirdrop := claimParams.Airdrops[1] + s.CheckAirdropAdded(afterCtx, injectiveAirdrop, v14.InjectiveAirdropDistributor, v14.InjectiveAirdropIdentifier, v14.InjectiveChainId, true) + + // ------ COMDEX ------- + comdexAirdrop := claimParams.Airdrops[2] + s.CheckAirdropAdded(afterCtx, comdexAirdrop, v14.ComdexAirdropDistributor, v14.ComdexAirdropIdentifier, v14.ComdexChainId, false) + + // ------ SOMM ------- + sommAirdrop := claimParams.Airdrops[3] + s.CheckAirdropAdded(afterCtx, sommAirdrop, v14.SommAirdropDistributor, v14.SommAirdropIdentifier, v14.SommChainId, false) + + // ------ UMEE ------- + umeeAirdrop := claimParams.Airdrops[4] + s.CheckAirdropAdded(afterCtx, umeeAirdrop, v14.UmeeAirdropDistributor, v14.UmeeAirdropIdentifier, v14.UmeeChainId, false) +} + +// Helper function to check the attributes of the new Airdrop +func (s *UpgradeTestSuite) CheckAirdropAdded(ctx sdk.Context, airdrop *claimtypes.Airdrop, distributor string, identifier string, chainId string, autopilotEnabled bool) { + // Check that the params of the airdrop were initialized + s.Require().Equal(identifier, airdrop.AirdropIdentifier, fmt.Sprintf("%s airdrop identifier", identifier)) + s.Require().Equal(chainId, airdrop.ChainId, fmt.Sprintf("%s airdrop chain-id", identifier)) + s.Require().Zero(airdrop.ClaimedSoFar.Int64(), fmt.Sprintf("%s claimed so far", identifier)) + s.Require().Equal(distributor, airdrop.DistributorAddress, fmt.Sprintf("%s airdrop distributor", identifier)) + s.Require().Equal(v14.AirdropDuration, airdrop.AirdropDuration, fmt.Sprintf("%s airdrop duration", identifier)) + s.Require().Equal(ustrd, airdrop.ClaimDenom, fmt.Sprintf("%s airdrop claim denom", identifier)) + s.Require().Equal(v14.AirdropStartTime, airdrop.AirdropStartTime, fmt.Sprintf("%s airdrop start time", identifier)) + s.Require().Equal(autopilotEnabled, airdrop.AutopilotEnabled, fmt.Sprintf("%s airdrop autopilot enabled", identifier)) + + claimRecords := s.App.ClaimKeeper.GetClaimRecords(ctx, identifier) + s.Require().Positive(len(claimRecords), fmt.Sprintf("there should be at least one claim record for %s", identifier)) + + // Check that an epoch was created + epochInfo, found := s.App.EpochsKeeper.GetEpochInfo(ctx, fmt.Sprintf("airdrop-%s", identifier)) + s.Require().True(found, "epoch tracker should be found") + s.Require().Zero(epochInfo.CurrentEpoch, "epoch should be zero") + s.Require().Equal(epochInfo.Duration, claimtypes.DefaultEpochDuration, "epoch duration should be equal to airdrop duration") +} + +// Setups up the stakeibc store with old host zones before the upgrade +// Returns a callback function that verifies the expected state after the upgrade +func (s *UpgradeTestSuite) SetupOldStakeibcStore() func() { + codec := app.MakeEncodingConfig().Marshaler + stakeibcStore := s.Ctx.KVStore(s.App.GetKey(stakeibctypes.StoreKey)) + hostzoneStore := prefix.NewStore(stakeibcStore, stakeibctypes.KeyPrefix(stakeibctypes.HostZoneKey)) + + // Add two host zones with the old type + for i, host := range testHostZones { + hostZone := oldstakeibctypes.HostZone{ + ChainId: host.chainId, + HostDenom: host.denom, + Address: fmt.Sprintf("address-%d", i), + UnbondingFrequency: 3, + DelegationAccount: &oldstakeibctypes.ICAAccount{ + Address: fmt.Sprintf("delegation-%d", i), + }, + BlacklistedValidators: []*oldstakeibctypes.Validator{ + {Name: "val", Address: "address"}, + }, + StakedBal: sdkmath.NewInt(int64(i)), + Validators: []*oldstakeibctypes.Validator{ + { + Address: fmt.Sprintf("val-%d", i), + InternalExchangeRate: &oldstakeibctypes.ValidatorExchangeRate{ + InternalTokensToSharesRate: sdk.NewDec(int64(i)), + }, + DelegationAmt: sdkmath.NewInt(int64(i)), + }, + }, + } + + hostZoneBz := codec.MustMarshal(&hostZone) + hostzoneStore.Set([]byte(hostZone.ChainId), hostZoneBz) + } + + return func() { + // Confirm the host zones have been migrated properly + for i, host := range testHostZones { + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, host.chainId) + s.Require().True(found) + + // Check new host zone attributes + s.Require().Equal(host.chainId, hostZone.ChainId, "chain-id") + s.Require().Equal(host.denom, hostZone.HostDenom, "denom") + s.Require().Equal(fmt.Sprintf("address-%d", i), hostZone.DepositAddress, "deposit address") + s.Require().Equal(fmt.Sprintf("delegation-%d", i), hostZone.DelegationIcaAddress, "delegation address") + s.Require().Equal(uint64(14), hostZone.UnbondingPeriod, "unbonding period") + s.Require().Equal(sdkmath.NewInt(int64(i)), hostZone.TotalDelegations, "total delegations") + + // Confirm gaia has LSM enabled + expectedLSMEnabled := false + if host.chainId == v14.GaiaChainId { + expectedLSMEnabled = true + } + s.Require().Equal(expectedLSMEnabled, hostZone.LsmLiquidStakeEnabled) + + // Check new validator attributes + validator := hostZone.Validators[0] + s.Require().Equal(fmt.Sprintf("val-%d", i), validator.Address, "validator address") + s.Require().Equal(sdk.NewDec(int64(i)), validator.SharesToTokensRate, "validator shares to tokens rate") + s.Require().Equal(false, validator.SlashQueryInProgress, "validator slash query in progress") + s.Require().Equal(int64(0), validator.DelegationChangesInProgress, "validator delegations in progress") + s.Require().Equal(sdk.ZeroInt(), validator.SlashQueryProgressTracker, "validator delegations in progress") + } + + // Finally check that the new params were set + params := s.App.StakeibcKeeper.GetParams(s.Ctx) + s.Require().Equal(stakeibctypes.DefaultParams(), params, "new params set after upgrade") + } +} + +// Setups pending queries in the store to test that the queries were removed +// Returns a callback function to verify they were removed +func (s *UpgradeTestSuite) SetupPendingQueries() func() { + for i := 0; i < 3; i++ { + s.App.InterchainqueryKeeper.SetQuery(s.Ctx, interchainquerytypes.Query{ + Id: fmt.Sprintf("query-%d", i), + }) + } + + numQueries := len(s.App.InterchainqueryKeeper.AllQueries(s.Ctx)) + s.Require().Equal(3, numQueries, "number of queres before the upgrade") + + return func() { + numQueries := len(s.App.InterchainqueryKeeper.AllQueries(s.Ctx)) + s.Require().Zero(numQueries, "number of queres after the upgrade") + } +} diff --git a/build/.gitignore b/build/.gitignore deleted file mode 100644 index 94548af5be..0000000000 --- a/build/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -*/ -!.gitignore diff --git a/cmd/strided/root.go b/cmd/strided/root.go index 346d506091..815703443d 100644 --- a/cmd/strided/root.go +++ b/cmd/strided/root.go @@ -265,6 +265,7 @@ func txCommand() *cobra.Command { app.ModuleBasics.AddTxCommands(cmd) cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") + cmd.PersistentFlags().String(flags.FlagFrom, "", "Name or address of private key with which to sign") return cmd } diff --git a/dockernet/build.sh b/dockernet/build.sh index 166130f765..a9a038601e 100755 --- a/dockernet/build.sh +++ b/dockernet/build.sh @@ -54,7 +54,7 @@ build_local_and_docker() { image=dockernet/dockerfiles/Dockerfile.$module fi - DOCKER_BUILDKIT=1 docker build --tag stridezone:$module -f $image . + DOCKER_BUILDKIT=1 docker build --tag stridezone:$module -f $image . docker_build_succeeded=${PIPESTATUS[0]} if [[ "$docker_build_succeeded" == "0" ]]; then diff --git a/go.mod b/go.mod index bf405852a4..9914d90a87 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,8 @@ require ( github.com/cosmos/ibc-go/v7 v7.2.0 github.com/cosmos/ics23/go v0.10.0 github.com/cosmos/interchain-security/v3 v3.1.0 - github.com/gogo/protobuf v1.3.2 + github.com/evmos/vesting v0.0.0-20230818101748-9ea561e4529c + github.com/gogo/protobuf v1.3.3 github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 @@ -23,6 +24,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230629202037-9506855d4529 google.golang.org/grpc v1.57.0 gopkg.in/yaml.v2 v2.4.0 + ) require github.com/linxGnu/grocksdb v1.7.16 // indirect @@ -93,7 +95,7 @@ require ( github.com/golang/glog v1.1.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/snappy v0.0.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/orderedcode v0.0.1 // indirect @@ -163,7 +165,7 @@ require ( golang.org/x/sys v0.10.0 // indirect golang.org/x/term v0.10.0 // indirect golang.org/x/text v0.11.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect; indirect ustrd google.golang.org/api v0.126.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.31.0 // indirect @@ -172,17 +174,28 @@ require ( nhooyr.io/websocket v1.8.6 // indirect pgregory.net/rapid v0.5.5 // indirect sigs.k8s.io/yaml v1.3.0 // indirect + ) replace ( // Use the keyring specified by the cosmos-sdk github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 github.com/btcsuite/btcd => github.com/btcsuite/btcd v0.22.2 //indirect - // fork SDK to fix SDKv0.47 Distribution Bug // TODO - Remove this patch and update Tokens in a subsequent upgrade handler github.com/cosmos/cosmos-sdk => github.com/Stride-Labs/cosmos-sdk v0.47.4-stride-distribution-fix-1 - github.com/cosmos/interchain-security/v3 => github.com/Stride-Labs/interchain-security/v3 v3.1.1-0.20230713175550-227e13e60bac + + // Two changes + // (1) Testing infra + // (2) Fix bech32 bug + github.com/cosmos/interchain-security/v3 => github.com/Stride-Labs/interchain-security/v3 v3.1.0-remove-validation-bug-7d3d9d + + // Add additional verification check to ensure an account is a BaseAccount type before converting + // it to a vesting account: https://github.com/Stride-Labs/vesting/pull/1 + github.com/evmos/vesting => github.com/Stride-Labs/vesting v1.0.0-check-base-account + + //github.com/evmos/vesting => ../vesting + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 // fork cast to add additional error checking github.com/spf13/cast => github.com/Stride-Labs/cast v0.0.3 diff --git a/go.sum b/go.sum index 660d505e7f..05ef56d097 100644 --- a/go.sum +++ b/go.sum @@ -223,8 +223,10 @@ github.com/Stride-Labs/cast v0.0.3 h1:eM3n/t3hSxb+iw9LDo3r/uGBp3w4U7wPv40GKMtJ1d github.com/Stride-Labs/cast v0.0.3/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/Stride-Labs/cosmos-sdk v0.47.4-stride-distribution-fix-1 h1:AFXHtq6Zb4aTwYhU+DiBGiHGi0kxYA/8hTD+Hcm5U/E= github.com/Stride-Labs/cosmos-sdk v0.47.4-stride-distribution-fix-1/go.mod h1:R5n+uM7vguVPFap4pgkdvQCT1nVo/OtPwrlAU40rvok= -github.com/Stride-Labs/interchain-security/v3 v3.1.1-0.20230713175550-227e13e60bac h1:k1ef68RNRHMtekRusOh9bu5DmHEdvxPyKwotzFu9giU= -github.com/Stride-Labs/interchain-security/v3 v3.1.1-0.20230713175550-227e13e60bac/go.mod h1:2fILBgypEZcwR3BSzKDw+EsYtMKv9Z6cYXfouh4xTYU= +github.com/Stride-Labs/interchain-security/v3 v3.1.0-remove-validation-bug-7d3d9d h1:xKJRWjDVuwc9UfkHJ3Xw7Cs4csRnNzyxW3D4lXqMlvA= +github.com/Stride-Labs/interchain-security/v3 v3.1.0-remove-validation-bug-7d3d9d/go.mod h1:2fILBgypEZcwR3BSzKDw+EsYtMKv9Z6cYXfouh4xTYU= +github.com/Stride-Labs/vesting v1.0.0-check-base-account h1:eFlSH1itTVb0y4DKIlukSzawfwi2XidQ8+gcwZJRxnA= +github.com/Stride-Labs/vesting v1.0.0-check-base-account/go.mod h1:sR5uUxxee8EhXEyqTmq06y5j2Nku1u9l4GJbxeRjlpw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= @@ -451,12 +453,6 @@ github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFG github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= @@ -498,8 +494,9 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= @@ -672,8 +669,6 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= @@ -854,6 +849,8 @@ github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqn github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGnWA97M= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -1264,10 +1261,8 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1418,6 +1413,7 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= diff --git a/utils/utils.go b/utils/utils.go index 4194916e2a..5a14cb896f 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -10,6 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/address" "github.com/cosmos/cosmos-sdk/types/bech32" + "github.com/cosmos/cosmos-sdk/types/module" errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -270,3 +271,9 @@ func LogHeader(s string, a ...any) string { pad := strings.Repeat("-", (lineLength-len(header))/2) return fmt.Sprintf("%s %s %s", pad, header, pad) } + +// Logs a module's migration info +func LogModuleMigration(ctx sdk.Context, versionMap module.VersionMap, moduleName string) { + currentVersion := versionMap[moduleName] + ctx.Logger().Info(fmt.Sprintf("migrating module %s from version %d to version %d", moduleName, currentVersion-1, currentVersion)) +} diff --git a/x/records/keeper/callback_lsm_transfer.go b/x/records/keeper/callback_lsm_transfer.go index c61d89e999..d74f5d5a7a 100644 --- a/x/records/keeper/callback_lsm_transfer.go +++ b/x/records/keeper/callback_lsm_transfer.go @@ -7,8 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/golang/protobuf/proto" //nolint:staticcheck ) // Callback after an LSM token is IBC tranferred to the host zone diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index 1c5ed0c0b8..e1c51fbb76 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -12,13 +12,8 @@ func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { _, err := s.GetMsgServer().RegisterHostZone(sdk.WrapSDKContext(s.Ctx), &tc.validMsg) s.Require().NoError(err, "able to successfully register host zone") - // TODO: Remove this change after ICS consumer keeper validation is fixed - params := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) - params.RewardDenoms = []string{"stuatom"} - s.App.ConsumerKeeper.SetParams(s.Ctx, params) - // RegisterHostZone should have already registered stToken to consumer reward denom whitelist - params = s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) + params := s.App.ConsumerKeeper.GetConsumerParams(s.Ctx) stDenom := stakeibctypes.StAssetDenomFromHostZoneDenom(tc.validMsg.HostDenom) expectedWhitelist := []string{stDenom} s.Require().Equal([]string{stDenom}, params.RewardDenoms) diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index 1d878812b0..ee88d32f57 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -1,6 +1,7 @@ package keeper import ( + "errors" "fmt" "github.com/spf13/cast" @@ -66,6 +67,12 @@ func (k Keeper) DelegateCallback(ctx sdk.Context, packet channeltypes.Packet, ac // Regardless of failure/success/timeout, indicate that this ICA has completed for _, splitDelegation := range delegateCallback.SplitDelegations { if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + // TODO: Revert after v14 upgrade + if errors.Is(err, types.ErrInvalidValidatorDelegationUpdates) { + k.Logger(ctx).Error(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Delegate, + "Invariant failed - delegation changes in progress fell below 0 for %s", splitDelegation.Validator)) + continue + } return err } } diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go index 397682d05e..bad93d376a 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -3,8 +3,8 @@ package keeper import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/Stride-Labs/stride/v13/utils" icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index 37ebb79415..b5b60f7ec3 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -1,6 +1,7 @@ package keeper import ( + "errors" "fmt" "time" @@ -47,6 +48,12 @@ func (k Keeper) UndelegateCallback(ctx sdk.Context, packet channeltypes.Packet, } for _, splitDelegation := range undelegateCallback.SplitDelegations { if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + // TODO: Revert after v14 upgrade + if errors.Is(err, types.ErrInvalidValidatorDelegationUpdates) { + k.Logger(ctx).Error(utils.LogICACallbackWithHostZone(chainId, ICACallbackID_Undelegate, + "Invariant failed - delegation changes in progress fell below 0 for %s", splitDelegation.Validator)) + continue + } return err } } diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index 4788c259e2..66a4e2667c 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" "github.com/Stride-Labs/stride/v13/utils" diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index f0f506040f..16f2ccda11 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -8,8 +8,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/gogo/protobuf/proto" //nolint:staticcheck icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index 46b469287c..87e9b16a51 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -5,7 +5,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index e531183c83..bb8da83564 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -7,7 +7,7 @@ import ( sdkmath "cosmossdk.io/math" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/bech32" diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go index a3926de0f3..dd767771a9 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go @@ -9,7 +9,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - proto "github.com/cosmos/gogoproto/proto" + "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go index 0550ada5a0..8dcc4df007 100644 --- a/x/stakeibc/keeper/lsm_test.go +++ b/x/stakeibc/keeper/lsm_test.go @@ -13,7 +13,7 @@ import ( "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" ) func (s *KeeperTestSuite) TestValidateLSMLiquidStake() { diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go index 993fca3b34..a37e346e2e 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go @@ -6,8 +6,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go index 8a4b39b2e2..f569cdf45e 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 45ddd5e35a..32c7694331 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -187,6 +187,15 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste } k.RecordsKeeper.AppendDepositRecord(ctx, depositRecord) + // register stToken to consumer reward denom whitelist so that + // stToken rewards can be distributed to provider validators + err = k.RegisterStTokenDenomsToWhitelist(ctx, []string{types.StAssetDenomFromHostZoneDenom(zone.HostDenom)}) + if err != nil { + errMsg := fmt.Sprintf("unable to register reward denom, err: %s", err.Error()) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) + } + // emit events ctx.EventManager().EmitEvent( sdk.NewEvent( diff --git a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go index 95ead055e9..c6f997563f 100644 --- a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go +++ b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go @@ -4,8 +4,8 @@ import ( "fmt" sdkmath "cosmossdk.io/math" + "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/gogo/protobuf/proto" //nolint:staticcheck _ "github.com/stretchr/testify/suite" "github.com/Stride-Labs/stride/v13/x/stakeibc/types" diff --git a/x/stakeibc/keeper/validator_selection_test.go b/x/stakeibc/keeper/validator_selection_test.go index 2f9b5639f7..4bf33f47ff 100644 --- a/x/stakeibc/keeper/validator_selection_test.go +++ b/x/stakeibc/keeper/validator_selection_test.go @@ -5,7 +5,7 @@ import ( "math/rand" sdkmath "cosmossdk.io/math" - "github.com/gogo/protobuf/proto" //nolint:staticcheck + "github.com/cosmos/gogoproto/proto" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" diff --git a/x/stakeibc/migrations/v3/convert.go b/x/stakeibc/migrations/v3/convert.go new file mode 100644 index 0000000000..2c841b4108 --- /dev/null +++ b/x/stakeibc/migrations/v3/convert.go @@ -0,0 +1,87 @@ +package v3 + +import ( + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +var ( + // The threshold, denominated in percentage of TVL, of when a slash query should + // be submitted (1 => 1%) + ValidatorSlashQueryThreshold uint64 = 1 + // The exchange rate here does not matter since it will be updated after the slash query + // Setting it to this value makes it easier to verify that we've submitted the query + DefaultExchangeRate = sdk.MustNewDecFromStr("0.999999999999999999") +) + +// Converts an old validator data type to the new schema +// Changes are as follows: +// - Added SlashQueryProgressTracker field +// - Added SlashQueryCheckpoint field +// - Added DelegationsInProgress field +// - Added SlashQueryInProgress field +// - InternalExchangeRate is now a decimal named SharesToTokensRate +// - DelegationAmt renamed to Delegation +func convertToNewValidator(oldValidator oldstakeibctypes.Validator, totalDelegations sdkmath.Int) newstakeibctypes.Validator { + queryThreshold := sdk.NewDecWithPrec(int64(ValidatorSlashQueryThreshold), 2) // percentage + slashQueryCheckpoint := queryThreshold.Mul(sdk.NewDecFromInt(totalDelegations)).TruncateInt() + + // Note: The old name of "TokensToShares" was slightly misleading - it represents the conversion of shares to tokens + sharesToTokensRate := DefaultExchangeRate + if oldValidator.InternalExchangeRate != nil && !oldValidator.InternalExchangeRate.InternalTokensToSharesRate.IsNil() { + sharesToTokensRate = oldValidator.InternalExchangeRate.InternalTokensToSharesRate + } + + return newstakeibctypes.Validator{ + Name: oldValidator.Name, + Address: oldValidator.Address, + Weight: oldValidator.Weight, + Delegation: oldValidator.DelegationAmt, + SlashQueryProgressTracker: sdkmath.ZeroInt(), + SlashQueryCheckpoint: slashQueryCheckpoint, + SharesToTokensRate: sharesToTokensRate, + DelegationChangesInProgress: 0, + SlashQueryInProgress: false, + } +} + +// Converts an old host zone data type to the new schema +// Changes are as follows: +// - ICA Accounts are now strings +// - Address has been renamed to DepositAddress +// - UnbondingFrequency has been changed to UnbondingPeriod +// - StakedBal has been renamed to TotalDelegations +// - Removed blacklisted validators +func convertToNewHostZone(oldHostZone oldstakeibctypes.HostZone) newstakeibctypes.HostZone { + var validators []*newstakeibctypes.Validator + for _, oldValidator := range oldHostZone.Validators { + newValidator := convertToNewValidator(*oldValidator, oldHostZone.StakedBal) + validators = append(validators, &newValidator) + } + + return newstakeibctypes.HostZone{ + ChainId: oldHostZone.ChainId, + Bech32Prefix: oldHostZone.Bech32Prefix, + ConnectionId: oldHostZone.ConnectionId, + TransferChannelId: oldHostZone.TransferChannelId, + IbcDenom: oldHostZone.IbcDenom, + HostDenom: oldHostZone.HostDenom, + UnbondingPeriod: (oldHostZone.UnbondingFrequency - 1) * 7, + Validators: validators, + DepositAddress: oldHostZone.Address, + WithdrawalIcaAddress: oldHostZone.WithdrawalAccount.GetAddress(), + FeeIcaAddress: oldHostZone.FeeAccount.GetAddress(), + DelegationIcaAddress: oldHostZone.DelegationAccount.GetAddress(), + RedemptionIcaAddress: oldHostZone.RedemptionAccount.GetAddress(), + TotalDelegations: oldHostZone.StakedBal, + LastRedemptionRate: oldHostZone.LastRedemptionRate, + RedemptionRate: oldHostZone.RedemptionRate, + MinRedemptionRate: oldHostZone.MinRedemptionRate, + MaxRedemptionRate: oldHostZone.MaxRedemptionRate, + LsmLiquidStakeEnabled: false, + Halted: oldHostZone.Halted, + } +} diff --git a/x/stakeibc/migrations/v3/convert_test.go b/x/stakeibc/migrations/v3/convert_test.go new file mode 100644 index 0000000000..fe1f05f8cf --- /dev/null +++ b/x/stakeibc/migrations/v3/convert_test.go @@ -0,0 +1,188 @@ +package v3 + +import ( + "testing" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/stretchr/testify/require" + + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +func TestConvertToNewValidator(t *testing.T) { + name := "name" + address := "address" + weight := uint64(3) + delegation := sdk.NewInt(4) + sharesToTokensRate := sdk.NewDec(5) + tvl := sdk.NewInt(1_000_000) + slashCheckpoint := sdk.NewInt(10_000) // 1% of TVL + + // First convert a validator with no exchange rate + // It should get filled in with the default + oldValidator := oldstakeibctypes.Validator{ + Name: name, + Address: address, + DelegationAmt: delegation, + Weight: weight, + } + expectedNewValidator := newstakeibctypes.Validator{ + Name: name, + Address: address, + Weight: weight, + Delegation: delegation, + SlashQueryProgressTracker: sdkmath.ZeroInt(), + SlashQueryCheckpoint: slashCheckpoint, + DelegationChangesInProgress: 0, + SharesToTokensRate: DefaultExchangeRate, + SlashQueryInProgress: false, + } + + actualNewValidator := convertToNewValidator(oldValidator, tvl) + require.Equal(t, expectedNewValidator, actualNewValidator) + + // Then add an exchange rate and convert again + oldValidator.InternalExchangeRate = &oldstakeibctypes.ValidatorExchangeRate{ + InternalTokensToSharesRate: sharesToTokensRate, + EpochNumber: 1, + } + expectedNewValidator.SharesToTokensRate = sharesToTokensRate + + actualNewValidator = convertToNewValidator(oldValidator, tvl) + require.Equal(t, expectedNewValidator, actualNewValidator) +} + +func TestConvertToNewHostZone(t *testing.T) { + chainId := "chain" + connectionId := "connection" + bechPrefix := "bech" + channelId := "channel" + ibcDenom := "ibc" + hostDenom := "host" + + depositAddress := "address" + withdrawalAddress := "withdrawal" + feeAddress := "fee" + delegationAddress := "delegation" + redemptionAddress := "redemption" + + redemptionRate := sdk.NewDec(1) + lastRedemptionRate := sdk.NewDec(2) + minRedemptionRate := sdk.MustNewDecFromStr("0.95") + maxRedemptionRate := sdk.MustNewDecFromStr("1.25") + unbondingFrequency := uint64(4) + unbondingPeriod := uint64(21) + + halted := true + + valAddress := "val" + valDelegation := sdk.NewInt(5) + valWeight := uint64(6) + totalDelegations := sdk.NewInt(1_000_000) + slashCheckpoint := sdk.NewInt(10_000) // 1% of TVL + sharesToTokensRate := sdk.MustNewDecFromStr("0.99") + + // The stakedBal field and validators get updated on the host zone + oldHostZone := oldstakeibctypes.HostZone{ + ChainId: chainId, + ConnectionId: connectionId, + Bech32Prefix: bechPrefix, + TransferChannelId: channelId, + Validators: []*oldstakeibctypes.Validator{ + { + // Validator with an exchange rate + Address: valAddress, + DelegationAmt: valDelegation, + Weight: valWeight, + InternalExchangeRate: &oldstakeibctypes.ValidatorExchangeRate{ + InternalTokensToSharesRate: sharesToTokensRate, + EpochNumber: 1, + }, + }, + { + // Validator without an exchange rate + Address: valAddress, + DelegationAmt: valDelegation, + Weight: valWeight, + InternalExchangeRate: nil, + }, + }, + BlacklistedValidators: []*oldstakeibctypes.Validator{ + {Address: "black", DelegationAmt: valDelegation}, + }, + WithdrawalAccount: &oldstakeibctypes.ICAAccount{ + Address: withdrawalAddress, Target: oldstakeibctypes.ICAAccountType_WITHDRAWAL, + }, + FeeAccount: &oldstakeibctypes.ICAAccount{ + Address: feeAddress, Target: oldstakeibctypes.ICAAccountType_FEE, + }, + DelegationAccount: &oldstakeibctypes.ICAAccount{ + Address: delegationAddress, Target: oldstakeibctypes.ICAAccountType_DELEGATION, + }, + RedemptionAccount: &oldstakeibctypes.ICAAccount{ + Address: redemptionAddress, Target: oldstakeibctypes.ICAAccountType_REDEMPTION, + }, + IbcDenom: ibcDenom, + HostDenom: hostDenom, + RedemptionRate: redemptionRate, + LastRedemptionRate: lastRedemptionRate, + UnbondingFrequency: unbondingFrequency, + StakedBal: totalDelegations, + Address: depositAddress, + Halted: halted, + MinRedemptionRate: minRedemptionRate, + MaxRedemptionRate: maxRedemptionRate, + } + + expectedNewHostZone := newstakeibctypes.HostZone{ + ChainId: chainId, + ConnectionId: connectionId, + Bech32Prefix: bechPrefix, + TransferChannelId: channelId, + IbcDenom: ibcDenom, + HostDenom: hostDenom, + UnbondingPeriod: unbondingPeriod, + Validators: []*newstakeibctypes.Validator{ + { + // Validator with an exchange rate + Address: valAddress, + Weight: valWeight, + Delegation: valDelegation, + SlashQueryProgressTracker: sdkmath.ZeroInt(), + SlashQueryCheckpoint: slashCheckpoint, + SharesToTokensRate: sharesToTokensRate, + DelegationChangesInProgress: 0, + SlashQueryInProgress: false, + }, + { + // Validator with nil exchange rate coalesced with 1 + Address: valAddress, + Weight: valWeight, + Delegation: valDelegation, + SlashQueryProgressTracker: sdkmath.ZeroInt(), + SlashQueryCheckpoint: slashCheckpoint, + SharesToTokensRate: DefaultExchangeRate, + DelegationChangesInProgress: 0, + SlashQueryInProgress: false, + }, + }, + DepositAddress: depositAddress, + WithdrawalIcaAddress: withdrawalAddress, + FeeIcaAddress: feeAddress, + DelegationIcaAddress: delegationAddress, + RedemptionIcaAddress: redemptionAddress, + TotalDelegations: totalDelegations, + RedemptionRate: redemptionRate, + LastRedemptionRate: lastRedemptionRate, + MinRedemptionRate: minRedemptionRate, + MaxRedemptionRate: maxRedemptionRate, + LsmLiquidStakeEnabled: false, + Halted: halted, + } + + actualNewHostZone := convertToNewHostZone(oldHostZone) + require.Equal(t, expectedNewHostZone, actualNewHostZone) +} diff --git a/x/stakeibc/migrations/v3/migrations.go b/x/stakeibc/migrations/v3/migrations.go new file mode 100644 index 0000000000..ddf0f3d60d --- /dev/null +++ b/x/stakeibc/migrations/v3/migrations.go @@ -0,0 +1,46 @@ +package v3 + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/store/prefix" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" +) + +func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { + stakeibcStore := prefix.NewStore(store, []byte(stakeibctypes.HostZoneKey)) + + iterator := stakeibcStore.Iterator(nil, nil) + defer iterator.Close() + + for ; iterator.Valid(); iterator.Next() { + // Deserialize using the old type + var oldHostZone oldstakeibctypes.HostZone + err := cdc.Unmarshal(iterator.Value(), &oldHostZone) + if err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal host zone (%v) using old data type", iterator.Key()) + } + + // Convert and serialize using the new type + newHostZone := convertToNewHostZone(oldHostZone) + newHostZoneBz, err := cdc.Marshal(&newHostZone) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal host zone (%v) using new data type", iterator.Key()) + } + + // Store new type + stakeibcStore.Set(iterator.Key(), newHostZoneBz) + } + + return nil +} + +func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { + store := ctx.KVStore(storeKey) + return migrateHostZone(store, cdc) +} diff --git a/x/stakeibc/migrations/v3/types/host_zone.pb.go b/x/stakeibc/migrations/v3/types/host_zone.pb.go index fac2e8b3ca..dcddc842bc 100644 --- a/x/stakeibc/migrations/v3/types/host_zone.pb.go +++ b/x/stakeibc/migrations/v3/types/host_zone.pb.go @@ -200,49 +200,49 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 672 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcf, 0x4e, 0xdb, 0x4a, - 0x14, 0xc6, 0xe3, 0x0b, 0x17, 0x92, 0x09, 0xff, 0x32, 0x01, 0x64, 0x40, 0x37, 0xc9, 0x4d, 0xa5, - 0x2a, 0x8b, 0xe2, 0x88, 0xb0, 0x43, 0x6c, 0xf8, 0xa3, 0xaa, 0x41, 0x74, 0x51, 0x57, 0x62, 0xc1, - 0xc6, 0x1a, 0xcf, 0x9c, 0x24, 0x23, 0x9c, 0x99, 0xd4, 0x33, 0x81, 0xd0, 0x47, 0xe8, 0xaa, 0x0f, - 0xd3, 0x87, 0x60, 0x89, 0xba, 0xaa, 0xba, 0x40, 0x15, 0xbc, 0x41, 0x9f, 0xa0, 0xca, 0xd8, 0x4e, - 0x4c, 0xb2, 0x80, 0x4a, 0xac, 0xec, 0x39, 0xdf, 0x77, 0x7e, 0xdf, 0xe8, 0x8c, 0x3d, 0xa8, 0xac, - 0x74, 0xc8, 0x19, 0xd4, 0x95, 0x26, 0x17, 0xc0, 0x7d, 0x5a, 0xef, 0x48, 0xa5, 0xbd, 0xcf, 0x52, - 0x80, 0xd3, 0x0b, 0xa5, 0x96, 0x78, 0x39, 0x32, 0x38, 0x89, 0x61, 0x73, 0xaa, 0xe3, 0x92, 0x04, - 0x9c, 0x11, 0x2d, 0xc3, 0xa8, 0x63, 0xf3, 0xff, 0x49, 0x03, 0xa7, 0xc4, 0x23, 0x94, 0xca, 0xbe, - 0xd0, 0xb1, 0x65, 0xb5, 0x2d, 0xdb, 0xd2, 0xbc, 0xd6, 0x87, 0x6f, 0x71, 0x75, 0x83, 0x4a, 0xd5, - 0x95, 0xca, 0x8b, 0x84, 0x68, 0x11, 0x49, 0xd5, 0x2f, 0x08, 0x65, 0xdf, 0x49, 0xa5, 0xcf, 0xa5, - 0x00, 0xbc, 0x81, 0xb2, 0xb4, 0x43, 0xb8, 0xf0, 0x38, 0xb3, 0xad, 0x8a, 0x55, 0xcb, 0xb9, 0xf3, - 0x66, 0xdd, 0x64, 0xf8, 0x15, 0x5a, 0xa4, 0x52, 0x08, 0xa0, 0x9a, 0x4b, 0xa3, 0xff, 0x63, 0xf4, - 0x85, 0x71, 0xb1, 0xc9, 0x70, 0x15, 0x2d, 0xf8, 0x40, 0x3b, 0xbb, 0x8d, 0x5e, 0x08, 0x2d, 0x3e, - 0xb0, 0x0b, 0x91, 0x27, 0x5d, 0xc3, 0x0e, 0x2a, 0xea, 0x90, 0x08, 0xd5, 0x82, 0xd0, 0xa3, 0x1d, - 0x22, 0x04, 0x04, 0x43, 0xdc, 0x82, 0xb1, 0x16, 0x12, 0xe9, 0x28, 0x52, 0x9a, 0x0c, 0xef, 0x21, - 0x34, 0x9a, 0x83, 0xb2, 0x67, 0x2a, 0x33, 0xb5, 0x7c, 0x63, 0xd3, 0x99, 0x98, 0x9d, 0x73, 0x96, - 0x58, 0xdc, 0x94, 0x1b, 0x7f, 0x40, 0xeb, 0x7e, 0x40, 0xe8, 0x45, 0xc0, 0x95, 0x06, 0xe6, 0xa5, - 0x38, 0xb3, 0x4f, 0x72, 0xd6, 0x52, 0x9d, 0x67, 0x63, 0xe4, 0x09, 0xc2, 0x57, 0x5c, 0x77, 0x58, - 0x48, 0xae, 0x48, 0x90, 0x0c, 0xdf, 0xfe, 0xb7, 0x62, 0xd5, 0xf2, 0x8d, 0xad, 0x29, 0x5c, 0xf3, - 0xe8, 0xe0, 0x20, 0xb2, 0xb8, 0x85, 0x71, 0x5b, 0x5c, 0xc2, 0xfb, 0x28, 0xdf, 0x02, 0x18, 0x41, - 0xe6, 0x9e, 0x86, 0xa0, 0x16, 0x40, 0xd2, 0x7d, 0x82, 0x30, 0x83, 0x00, 0xda, 0xc4, 0x9c, 0x48, - 0x02, 0x99, 0x7f, 0xc6, 0x4e, 0xc6, 0x6d, 0x29, 0x56, 0x08, 0x0c, 0xba, 0xbd, 0x47, 0xac, 0x95, - 0x67, 0xb0, 0xc6, 0x6d, 0x09, 0x6b, 0x0b, 0xe5, 0xb8, 0x4f, 0x3d, 0x06, 0x42, 0x76, 0xed, 0xac, - 0x39, 0xd6, 0x2c, 0xf7, 0xe9, 0xf1, 0x70, 0x8d, 0xff, 0x43, 0xc8, 0xfc, 0x07, 0x91, 0x9a, 0x33, - 0x6a, 0x6e, 0x58, 0x89, 0x64, 0x81, 0x56, 0x03, 0xa2, 0xb4, 0x97, 0xda, 0x4c, 0x48, 0x34, 0xd8, - 0x68, 0x68, 0x3c, 0xdc, 0xbf, 0xb9, 0x2b, 0x67, 0x7e, 0xde, 0x95, 0x5f, 0xb7, 0xb9, 0xee, 0xf4, - 0x7d, 0x87, 0xca, 0x6e, 0xfc, 0x31, 0xc7, 0x8f, 0x6d, 0xc5, 0x2e, 0xea, 0xfa, 0xba, 0x07, 0xca, - 0x39, 0x06, 0xfa, 0xfd, 0xdb, 0x36, 0x8a, 0xbf, 0xf5, 0x63, 0xa0, 0x2e, 0x1e, 0x92, 0xdd, 0x11, - 0xd8, 0x25, 0x1a, 0x30, 0xa0, 0xe5, 0xc9, 0xa8, 0xfc, 0x0b, 0x44, 0x2d, 0x85, 0x8f, 0x63, 0xea, - 0xa8, 0xd8, 0x17, 0xbe, 0x14, 0x8c, 0x8b, 0xb6, 0xd7, 0x0a, 0xe1, 0x53, 0x1f, 0x04, 0xbd, 0xb6, - 0x97, 0x2a, 0x56, 0x6d, 0xd6, 0xc5, 0x23, 0xe9, 0x6d, 0xa2, 0xe0, 0xf7, 0x08, 0x99, 0x69, 0x33, - 0xcf, 0x27, 0x81, 0xbd, 0x68, 0xb6, 0xe4, 0xfc, 0xc5, 0x96, 0x9a, 0x42, 0xbb, 0xb9, 0x88, 0x70, - 0x48, 0x02, 0xfc, 0x06, 0xcd, 0x13, 0xc6, 0x42, 0x50, 0xca, 0xc6, 0x86, 0x85, 0x7f, 0xdf, 0x95, - 0x97, 0xae, 0x49, 0x37, 0xd8, 0xab, 0xc6, 0x42, 0xd5, 0x4d, 0x2c, 0x78, 0x1d, 0xcd, 0x75, 0x48, - 0xa0, 0x81, 0xd9, 0xc5, 0x8a, 0x55, 0xcb, 0xba, 0xf1, 0x0a, 0x07, 0xa8, 0xd8, 0xe5, 0x62, 0xea, - 0x6c, 0x56, 0x5f, 0x60, 0x60, 0x85, 0x2e, 0x17, 0x13, 0x47, 0x33, 0x4c, 0x23, 0x83, 0xa9, 0xb4, - 0xb5, 0x17, 0x49, 0x23, 0x83, 0xc7, 0x69, 0x27, 0xb3, 0xd9, 0xe5, 0x95, 0x95, 0xc3, 0xd3, 0x9b, - 0xfb, 0x92, 0x75, 0x7b, 0x5f, 0xb2, 0x7e, 0xdd, 0x97, 0xac, 0xaf, 0x0f, 0xa5, 0xcc, 0xed, 0x43, - 0x29, 0xf3, 0xe3, 0xa1, 0x94, 0x39, 0x6f, 0xa4, 0x82, 0x3e, 0x9a, 0xdf, 0x61, 0xfb, 0x94, 0xf8, - 0xaa, 0x1e, 0xdf, 0xc8, 0x97, 0x3b, 0x3b, 0xf5, 0xc1, 0xf8, 0x5e, 0x36, 0xc1, 0xfe, 0x9c, 0xb9, - 0x61, 0x77, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x0a, 0x02, 0x65, 0x0a, 0x06, 0x00, 0x00, + // 671 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcd, 0x4e, 0xdb, 0x4e, + 0x14, 0xc5, 0xe3, 0x3f, 0xfc, 0x21, 0x99, 0xf0, 0x95, 0x09, 0x20, 0x03, 0x6a, 0x92, 0xa6, 0x52, + 0x95, 0x45, 0x71, 0xd4, 0xb0, 0x43, 0x6c, 0xf8, 0x50, 0xd5, 0x20, 0xba, 0xa8, 0x2b, 0xb1, 0x60, + 0x63, 0x8d, 0x67, 0x6e, 0x92, 0x11, 0xce, 0x4c, 0xea, 0x99, 0x40, 0xe8, 0x23, 0x74, 0xd5, 0x87, + 0xe9, 0x43, 0xb0, 0x44, 0x5d, 0x55, 0x5d, 0xa0, 0x0a, 0xde, 0xa0, 0x4f, 0x50, 0x65, 0x6c, 0x27, + 0x26, 0x59, 0x40, 0x25, 0x56, 0xf6, 0xdc, 0x73, 0xee, 0xef, 0x8c, 0xee, 0xd8, 0x83, 0xca, 0x4a, + 0x87, 0x9c, 0x41, 0x5d, 0x69, 0x72, 0x0e, 0xdc, 0xa7, 0xf5, 0x8e, 0x54, 0xda, 0xfb, 0x22, 0x05, + 0x38, 0xbd, 0x50, 0x6a, 0x89, 0x97, 0x23, 0x83, 0x93, 0x18, 0x36, 0xa7, 0x3a, 0x2e, 0x48, 0xc0, + 0x19, 0xd1, 0x32, 0x8c, 0x3a, 0x36, 0x5f, 0x4e, 0x1a, 0x38, 0x25, 0x1e, 0xa1, 0x54, 0xf6, 0x85, + 0x8e, 0x2d, 0xab, 0x6d, 0xd9, 0x96, 0xe6, 0xb5, 0x3e, 0x7c, 0x8b, 0xab, 0x1b, 0x54, 0xaa, 0xae, + 0x54, 0x5e, 0x24, 0x44, 0x8b, 0x48, 0xaa, 0x7e, 0x45, 0x28, 0xfb, 0x5e, 0x2a, 0x7d, 0x26, 0x05, + 0xe0, 0x0d, 0x94, 0xa5, 0x1d, 0xc2, 0x85, 0xc7, 0x99, 0x6d, 0x55, 0xac, 0x5a, 0xce, 0x9d, 0x37, + 0xeb, 0x26, 0xc3, 0xaf, 0xd0, 0x22, 0x95, 0x42, 0x00, 0xd5, 0x5c, 0x1a, 0xfd, 0x3f, 0xa3, 0x2f, + 0x8c, 0x8b, 0x4d, 0x86, 0xab, 0x68, 0xc1, 0x07, 0xda, 0xd9, 0x69, 0xf4, 0x42, 0x68, 0xf1, 0x81, + 0x5d, 0x88, 0x3c, 0xe9, 0x1a, 0x76, 0x50, 0x51, 0x87, 0x44, 0xa8, 0x16, 0x84, 0x1e, 0xed, 0x10, + 0x21, 0x20, 0x18, 0xe2, 0x16, 0x8c, 0xb5, 0x90, 0x48, 0x87, 0x91, 0xd2, 0x64, 0x78, 0x17, 0xa1, + 0xd1, 0x1c, 0x94, 0x3d, 0x53, 0x99, 0xa9, 0xe5, 0x1b, 0x9b, 0xce, 0xc4, 0xec, 0x9c, 0xd3, 0xc4, + 0xe2, 0xa6, 0xdc, 0xf8, 0x23, 0x5a, 0xf7, 0x03, 0x42, 0xcf, 0x03, 0xae, 0x34, 0x30, 0x2f, 0xc5, + 0x99, 0x7d, 0x94, 0xb3, 0x96, 0xea, 0x3c, 0x1d, 0x23, 0x8f, 0x11, 0xbe, 0xe4, 0xba, 0xc3, 0x42, + 0x72, 0x49, 0x82, 0x64, 0xf8, 0xf6, 0xff, 0x15, 0xab, 0x96, 0x6f, 0x6c, 0x4d, 0xe1, 0x9a, 0x87, + 0xfb, 0xfb, 0x91, 0xc5, 0x2d, 0x8c, 0xdb, 0xe2, 0x12, 0xde, 0x43, 0xf9, 0x16, 0xc0, 0x08, 0x32, + 0xf7, 0x38, 0x04, 0xb5, 0x00, 0x92, 0xee, 0x63, 0x84, 0x19, 0x04, 0xd0, 0x26, 0xe6, 0x44, 0x12, + 0xc8, 0xfc, 0x13, 0x76, 0x32, 0x6e, 0x4b, 0xb1, 0x42, 0x60, 0xd0, 0xed, 0x3d, 0x60, 0xad, 0x3c, + 0x81, 0x35, 0x6e, 0x4b, 0x58, 0x5b, 0x28, 0xc7, 0x7d, 0xea, 0x31, 0x10, 0xb2, 0x6b, 0x67, 0xcd, + 0xb1, 0x66, 0xb9, 0x4f, 0x8f, 0x86, 0x6b, 0xfc, 0x02, 0x21, 0xf3, 0x1f, 0x44, 0x6a, 0xce, 0xa8, + 0xb9, 0x61, 0x25, 0x92, 0x05, 0x5a, 0x0d, 0x88, 0xd2, 0x5e, 0x6a, 0x33, 0x21, 0xd1, 0x60, 0xa3, + 0xa1, 0xf1, 0x60, 0xef, 0xfa, 0xb6, 0x9c, 0xf9, 0x75, 0x5b, 0x7e, 0xdd, 0xe6, 0xba, 0xd3, 0xf7, + 0x1d, 0x2a, 0xbb, 0xf1, 0xc7, 0x1c, 0x3f, 0xb6, 0x15, 0x3b, 0xaf, 0xeb, 0xab, 0x1e, 0x28, 0xe7, + 0x08, 0xe8, 0x8f, 0xef, 0xdb, 0x28, 0xfe, 0xd6, 0x8f, 0x80, 0xba, 0x78, 0x48, 0x76, 0x47, 0x60, + 0x97, 0x68, 0xc0, 0x80, 0x96, 0x27, 0xa3, 0xf2, 0xcf, 0x10, 0xb5, 0x14, 0x3e, 0x8c, 0xa9, 0xa3, + 0x62, 0x5f, 0xf8, 0x52, 0x30, 0x2e, 0xda, 0x5e, 0x2b, 0x84, 0xcf, 0x7d, 0x10, 0xf4, 0xca, 0x5e, + 0xaa, 0x58, 0xb5, 0x59, 0x17, 0x8f, 0xa4, 0x77, 0x89, 0x82, 0x3f, 0x20, 0x64, 0xa6, 0xcd, 0x3c, + 0x9f, 0x04, 0xf6, 0xa2, 0xd9, 0x92, 0xf3, 0x0f, 0x5b, 0x6a, 0x0a, 0xed, 0xe6, 0x22, 0xc2, 0x01, + 0x09, 0xf0, 0x1b, 0x34, 0x4f, 0x18, 0x0b, 0x41, 0x29, 0x1b, 0x1b, 0x16, 0xfe, 0x73, 0x5b, 0x5e, + 0xba, 0x22, 0xdd, 0x60, 0xb7, 0x1a, 0x0b, 0x55, 0x37, 0xb1, 0xe0, 0x75, 0x34, 0xd7, 0x21, 0x81, + 0x06, 0x66, 0x17, 0x2b, 0x56, 0x2d, 0xeb, 0xc6, 0x2b, 0x1c, 0xa0, 0x62, 0x97, 0x8b, 0xa9, 0xb3, + 0x59, 0x7d, 0x86, 0x81, 0x15, 0xba, 0x5c, 0x4c, 0x1c, 0xcd, 0x30, 0x8d, 0x0c, 0xa6, 0xd2, 0xd6, + 0x9e, 0x25, 0x8d, 0x0c, 0x1e, 0xa6, 0x1d, 0xcf, 0x66, 0x97, 0x57, 0x56, 0x0e, 0x4e, 0xae, 0xef, + 0x4a, 0xd6, 0xcd, 0x5d, 0xc9, 0xfa, 0x7d, 0x57, 0xb2, 0xbe, 0xdd, 0x97, 0x32, 0x37, 0xf7, 0xa5, + 0xcc, 0xcf, 0xfb, 0x52, 0xe6, 0xac, 0x91, 0x0a, 0xfa, 0x64, 0x7e, 0x87, 0xed, 0x13, 0xe2, 0xab, + 0x7a, 0x7c, 0x23, 0x5f, 0xbc, 0xdd, 0xa9, 0x0f, 0xc6, 0xf7, 0xb2, 0x09, 0xf6, 0xe7, 0xcc, 0x0d, + 0xbb, 0xf3, 0x37, 0x00, 0x00, 0xff, 0xff, 0x99, 0x41, 0x48, 0x70, 0x0a, 0x06, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/migrations/v3/types/ica_account.pb.go b/x/stakeibc/migrations/v3/types/ica_account.pb.go index 6ec4d873af..003919641f 100644 --- a/x/stakeibc/migrations/v3/types/ica_account.pb.go +++ b/x/stakeibc/migrations/v3/types/ica_account.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_2976ae6e7f6ce824 = []byte{ 0x9d, 0x7c, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xec, 0x3a, 0x5d, 0x9f, 0xc4, 0xa4, - 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xea, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, - 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3d, 0x51, 0x58, 0xe1, + 0x62, 0x7d, 0x68, 0x58, 0x96, 0x19, 0x1a, 0xeb, 0x57, 0x20, 0x42, 0xb4, 0xa4, 0xb2, 0x20, 0xb5, + 0x38, 0x89, 0x0d, 0x1c, 0x40, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x52, 0x1a, 0x12, 0xf4, 0x71, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/migrations/v3/types/validator.pb.go b/x/stakeibc/migrations/v3/types/validator.pb.go index 885350d5ef..bbc61b60ce 100644 --- a/x/stakeibc/migrations/v3/types/validator.pb.go +++ b/x/stakeibc/migrations/v3/types/validator.pb.go @@ -150,7 +150,7 @@ var fileDescriptor_5d2f32e16bd6ab8f = []byte{ // 439 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x3d, 0x6f, 0xdb, 0x30, 0x10, 0x35, 0x53, 0xc5, 0x89, 0x99, 0x7e, 0x04, 0x84, 0x1b, 0xa8, 0x1e, 0x64, 0x37, 0x43, 0xe0, - 0xc5, 0x12, 0xe2, 0xae, 0x5d, 0x62, 0xa4, 0x43, 0x83, 0xa0, 0x83, 0x9c, 0x76, 0x28, 0x0a, 0x08, + 0xc5, 0x12, 0xea, 0xac, 0x5d, 0x62, 0xa4, 0x43, 0x83, 0xa0, 0x83, 0x9c, 0x76, 0x28, 0x0a, 0x08, 0x94, 0x74, 0x90, 0x08, 0x5b, 0xa4, 0x41, 0x5e, 0xd2, 0x74, 0xeb, 0x4f, 0xe8, 0x0f, 0xe9, 0x98, 0xb5, 0x7b, 0xc6, 0x20, 0x53, 0xd1, 0x21, 0x28, 0xec, 0x3f, 0x52, 0x94, 0xa2, 0x92, 0xa0, 0xe8, 0x92, 0x89, 0xe4, 0xe3, 0xe3, 0xbd, 0xf7, 0x78, 0x47, 0xfb, 0x06, 0xb5, 0xc8, 0x21, 0x32, 0xc8, @@ -173,9 +173,9 @@ var fileDescriptor_5d2f32e16bd6ab8f = []byte{ 0xe1, 0x3f, 0x7d, 0x0e, 0xff, 0xdb, 0xb2, 0xb8, 0xdb, 0x54, 0xb9, 0x8f, 0x1e, 0x79, 0x9b, 0x8f, 0xb6, 0xbd, 0x23, 0x6f, 0xd3, 0xdb, 0x5e, 0x9f, 0x1c, 0x5f, 0x2e, 0x03, 0x72, 0xb5, 0x0c, 0xc8, 0xef, 0x65, 0x40, 0xbe, 0xad, 0x82, 0xd6, 0xd5, 0x2a, 0x68, 0xfd, 0x5c, 0x05, 0xad, 0x8f, 0xe3, - 0x7b, 0x91, 0xa6, 0x56, 0x6d, 0x74, 0xcc, 0x53, 0x13, 0xb9, 0x11, 0x3c, 0xdb, 0xdf, 0x8f, 0xce, - 0xef, 0x06, 0xd1, 0x46, 0x4c, 0xdb, 0x76, 0x86, 0x5e, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x91, - 0x62, 0x30, 0xab, 0xa8, 0x02, 0x00, 0x00, + 0x7b, 0x91, 0xa6, 0x56, 0x6d, 0x74, 0xcc, 0x53, 0x13, 0xb9, 0x11, 0x3c, 0x7b, 0xb5, 0x1f, 0x9d, + 0xdf, 0x0d, 0xa2, 0x8d, 0x98, 0xb6, 0xed, 0x0c, 0xed, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xfe, + 0x29, 0x7a, 0xbe, 0xa8, 0x02, 0x00, 0x00, } func (m *ValidatorExchangeRate) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index ee92e5c6c4..57db5e43a0 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -163,7 +163,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // ConsensusVersion implements ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 2 } +func (AppModule) ConsensusVersion() uint64 { return 3 } // BeginBlock executes all ABCI BeginBlock logic respective to the capability module. func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { From 0a80d4801d4ac45ba3aac494b46b353caa94d8aa Mon Sep 17 00:00:00 2001 From: sampocs Date: Sun, 27 Aug 2023 21:39:44 -0500 Subject: [PATCH 24/44] added icaoracle license (#901) --- x/icaoracle/LICENSE | 334 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 x/icaoracle/LICENSE diff --git a/x/icaoracle/LICENSE b/x/icaoracle/LICENSE new file mode 100644 index 0000000000..dd7cc112bb --- /dev/null +++ b/x/icaoracle/LICENSE @@ -0,0 +1,334 @@ +Stride BSL License Grant + +Business Source License 1.1 https://mariadb.com/bsl11/ + +License text copyright © 2023 MariaDB plc, All Rights Reserved. +“Business Source License” is a trademark of MariaDB plc. + +------------------------------------------------------------------------------------------- + +Licensor: Stride Labs, Inc. + +Licensed Work: Stride Multichain Liquid Staking + ICA Oracle core Cosmos SDK module software + +Additional Use Grant: You may make production use of the Licensed Work only + as part of the Stride blockchain approved by the Stride + on-chain token governance protocols. + +Change Date: For each version, [4] years from the date of release of that version. + +Change License: GNU General Public License version 2 + +------------------------------------------------------------------------------------------- + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative works, +redistribute, and make non-production use of the Licensed Work. The Licensor may make +an Additional Use Grant, above, permitting limited production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly available +distribution of a specific version of the Licensed Work under this License, whichever +comes first, the Licensor hereby grants you rights under the terms of the Change License, +and the rights granted in the paragraph above terminate. + +If your use of the Licensed Work does not comply with the requirements currently in effect +as described in this License, you must purchase a commercial license from the Licensor, +its affiliated entities, or authorized resellers, or you must refrain from using the +Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works of the +Licensed Work, are subject to this License. This License applies separately for each +version of the Licensed Work and the Change Date may vary for each version of the Licensed +Work released by Licensor. + +You must conspicuously display this License on each original or modified copy of the +Licensed Work. If you receive the Licensed Work in original or modified form from a +third party, the terms and conditions set forth in this License apply to your use of +that work. + +Any use of the Licensed Work in violation of this License will automatically terminate +your rights under this License for the current and all other versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of Licensor or its +affiliates (provided that you may use a trademark or logo of Licensor as expressly required +by this License).TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED +ON AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR +IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE. MariaDB hereby grants you permission to +use this License’s text to license your works, and to refer to it using the trademark +“Business Source License”, as long as you comply with the Covenants of Licensor below. + +------------------------------------------------------------------------------------------- + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business Source License” +name and trademark, Licensor covenants to MariaDB, and to all other recipients of the +licensed work to be provided by Licensor: + +To specify as the Change License the GPL Version 2.0 or any later version, or a license +that is compatible with GPL Version 2.0 or a later version, where “compatible” means that +software provided under the Change License can be included in a program with software +provided under GPL Version 2.0 or a later version. Licensor may specify additional Change +Licenses without limitation. +To either: (a) specify an additional grant of rights to use that does not impose any + additional restriction on the right granted in this License, as the + Additional Use Grant; or + (b) insert the text “None” to specify a Change Date. Not to modify this + License in any other way. + +------------------------------------------------------------------------------------------- + +Notice + +The Business Source License (this document, or the “License”) is not an Open Source license. +However, the Licensed Work will eventually be made available under an Open Source License, +as stated in this License. + +------------------------------------------------------------------------------------------- + +This license applies retroactively to the following commits: + +d1a0eae43fa08f3e54910c8f3381af4f3e83aca7 +66ee28b05a5ef086c6924b06e96cb2550e778141 +b2312b8bc5421e857c8ad70f779847aa58330947 +089cfc5d2036f71ab2cd935fb7641d89adafb330 +983a129996acbe2224a406f824d4d08e3b135425 +5ba8816aa89c683154d55900ce22166c406ab8df +bd182094742ca4ae4df654ca8a432362a61d9871 +827e1361c438b08c3b4dec2ecc4a58a3c81643dd +558d25ad8286bde00ec3f63c459eb960a587acfe +e0e98e43140cef0ba78107eb77b5aefcba6e48bd +f7a353ba153cf68aa527239309de5a00206e9017 +f5c4cf7c4f70c371d3e44baabe276dfb72df7149 +59913b1d3f693c70c2aff032fb9c9622e3c2a0d7 +f1c024b1532eccfcf4e6c9e8b365f5d3b75e396f +c277b784d25f8c5ad9da2541216a0530637476ec +d3eb4344e4706be7f0d0b57a60f146ec0d701abd +d61959e77337e3b687b46d8bdbd47fe146eb2ab9 +0e6a03f64447a36d712f8c49642be95f029ed78f +080c326c82dab53a33bb1cba77bb6c4806286664 +624bf8b3649d13d76c30357baa5ea536afd80e3f +9d9ca03bfe7f8d7e59bbec5cb07e24616f1f360e +eacbe486ee428359ee1b80f221991372ce4f9440 +d38e9b4b6cae3ee31c7197601b6cadc40a95ea8d +a69e8a78dc64301079824db9740aaa02ddbde0b0 +d6404304bd962dc5d5f677130b921c4a2c453f39 +885444ccfaba1d5d832c0db15c4ccf8d3a9c16d3 +96182bedd27607ccb11878fbd1e031678a3ab030 +851a4168239aab68366569d56c5be563bc6d2cf7 +a04e6177561969612349605722a2969f8767c271 +6574198cb6223631e6d001d86aa80fe9e7afe766 +608d5de19b8a262feaf295f4b89bf7622b7ab761 +09194a23200e77b7a5502719127a9d6dcee3cd24 +7d7ef654a5891f1371c76ab0eaaf84f6c90c04b7 +71d06f039e565946bffceef89ee75a2a984c94ea +a13239f2949a8a359846e4bbc05b9b87551ae4b3 +bed4b5fe52cb2c936674450c43226345c933960e +2e0911f33b3c70d573c3d482dade6aa90b68943a +05968335993aab7cf9db7f843633449241ebc090 +b8f62e520fd765fe052cbfb684d44f1c3f52c449 +4611788dece762e182f9fe1eb63e3e563ad33696 +8ae50d38d1e307332cf73a9660502418f5b269b7 +89b7604114e201ba5ef5d41f73dc883445d190c7 +4aa716fb3c76e4c46d58683927f7463c94e6a997 +3123f4db2b870ba0e0c52363682d9686609c389f +f02f2dd99036cc28c8e47eeaafc525ecdff06d11 +1a4413ebe139e107b207a1043cf6587be47e5ddc +91d5473d03b59e3cce1645c7ad42a54fc395dbf2 +9c6e796539df223f7e0b8614a1fba6a091070c69 +d6f68acc60c3d3e572bc3e0ac73bdf7825cbb09e +d51949b3400039e2f037c91a12285a2056e375c4 +234d8ac641a82e21c1b762d0965891eb81b8bdfc +3d17661c97ab95a86a690c39600e672afa17eb98 +cca0da9d4a2fe4bb77228437353a064385573f43 +7640b14f58c539847ff7d8758726dd88151eb95a +92b4af44206d71122ca4da0502d7e97ef45e8d36 +e1d1b633078f773d07a1f80f88e094df57d8c8cb +91541b267e1b0f61fab26c1e5a6cb210df096a64 +0c1343865fb8ac255733e559855d40503dec5a41 +e9af246d4c151dfd2b7dfe04fc398c70cde00188 +b44bd1663af0bff06bbc850a1a7bdabf3257554b +fc7fe43674fb9850b4135620bc51a02b3ca96ab8 +95ad02c74440b7c581a6e138a0294f229203c015 +a8eb76937569cb285bb6e870af30afbddfcf1def +c62cfc2c7b11d3d86b1967a5e1a5233298c5d10a +1d5da15cedcda1ea6d707980e024d7b93c684cc5 +2de3b6070c33cbd57471309ca74ea25d4ffaa19d +00fedb03e3579d92b97006ac185b7ed9f6477eb8 +1889bd7ab54834fbc0e639b32b0225e913623268 +bbf0bb7f52878f3205c76bb1e96662fe7bd7af8d +b4abd61a1d2af18c057bb1aa64e992cd456307ec +2a9ead570a02cb0ad34040fe6949814bbfcaa6ec +de99fa592f5624a68fba71bf6913a283231c84d5 +1e641f99d0bd703fdf3ddcf8dcf6e63932316f42 +cd0b74fb7014925d200214cee75691bcb8166632 +2d2f647a35350e3a7ae82b3f095236ff87bbb150 +95fd8085e52ce3b3f52d65d69c011715ead732ee +4db410ed17e17988339d44afe97174ee663e8392 +e75913c837c7de4c25db4a0a477479ff7fbcd65c +b6afb511e1691a4f12a229fb7a0e321c947af493 +050b79eb51066fd2c416001facd75800b102f05f +d4b3e0fbbe1cca74534b73e76deb18deafd7591c +192e9673e3ae97a38491204b9924b43cec529253 +332d797e1cc527dd009d98ecbf9a2bb62179f7eb +882126243ec7b0bcc345a991327a0d4453c428b6 +dfd716634439a253a96fd81dd844a46046955230 +1ea27fe060a0bf37161d75c303bcada84dbf346f +436bf6fc5b979ca669f10b433237b2c5d64bef26 +efbe18edad8a1222bfb5b088985c3226e5d0fd21 +70bfad42f6fe0a789b5ae2c3d6eb42d9f9989078 +055b8f0e93dfd848fa8c2981c0cfea6d0525f1bf +2e7b4a175fd63473af80a528b5556021dc43421c +7bb9b4b3dce4d5f62b2aba98822647b257cdf6fe +94262082d288ac14cc398424d37b563bed97ab24 +2f54693aaa34054d80761aaf8f22fad6891b01cd +ff714bf6999549a82fe61806f7a9c69aef966d9a +4b5d80ac5cafb418debc8a860959d4a6c6797cfb +f61119edb643300bed3b5dd250a393733092daee +995bfb355660a0a86ecbdbc6f0d77c0dd3386507 +6719a44bc2366f675a96d4df3c82a73ab475c314 +a3eff2dc5a33a64bd86341b40f980ce58a736b11 +6a0c44ad1fa5dd50802fba214657d7e35972421f +c9667a85ce282fdca84dcc5467001253ec26d02c +5514e479035cd11e34fed21000479ce659bad0de +5383d57ab52092d8f03dba58e9b126db309d6344 +b49bf45ebb2da5dae4feb12621103d35675556ef +4de878d15a3c4b73ec1d7c4cfb5a02d7d1e1cebf +c74f8f28c9bbc794e70f5ded0af6930d2d10a3a8 +7eea5eea66973241edbb4261c1408410bfffc4e3 +7a332fc5e690b71c10b48b6630cba1488fa2f90b +b89d88ce02a23ca01fc574ae1c1a0226a9b2ef74 +4871518a47d1fc0e570e13d11f2c6bf5ece775eb +eddf1eae49e669432dfcce56d28ec71f67f8cff6 +6aac1d5bb2c4f6cbc00ed0c31793cfc091f7550f +fc7052268cd21c941dfebcb9560123e40e14e5b8 +59b0480e13de4680ab464efc1ee4eda338ccf934 +0f8b0da4b4f3803e7cf4346a93fcadf53131cb80 +e50637c3c9dd52c152583df42d806db01f254d7d +0fb5fb6c014338a7837a569ba5b081235fd9af8a +3aeb075f36cb12711201a7f17e8b8d856bd99a01 +c6c05e5294074ccb2aea486110a45a103bb61a99 +3b968fef62e2d886117f0b70fb94984c44b2be80 +2172b238c4ca2a1f8daf9bf88a430695943edc3d +936c33fa39350c6fe2aeba8813057a1a03575595 +778ed925150730902a40c4cbf749a51ddacfa52e +2c406549d8c91ebd483896e0973cb37d025fff05 +d59a8a099d09b7356d4d2b2ca2358bb229c8385b +6df1ba5787d52a34b45daef45a5a65ea8d847d8e +c88b52e34a484fe1e055b58abfce86bc19932990 +b8d51526d30e947a9b17a74b93d551380632b79c +62295e3818de10c13295855d8fc8a224aff3bc70 +332394936f57b87ad0b2987572eaa1cade5ce68b +3a5c7bfcc3b8c5e7dd870f01bebeb9d949492203 +edeffb320bc93c3cc6f3cabc5d2ce18448bebae0 +16dee3e4e3645f3118aa30a45159801873cd8bd4 +3c69e7644859981b1fd9313eb1f0c5e5886e4a0d +f305dc16fb91ec6526292ab039c8dd29a66f619b +a7ebe87c7d133b1d40de6d6c3297777f233d61fd +d16d7f2676dc6182dd0fd655530136ff3e5780ad +31c5dc412019e2e69ccf9cba8fcc5d793ccd6a64 +0a42766e900310ce31a9b0b62354229924cb1ee9 +29fce22718002c5bcc76e0dc889f80cd4e392804 +4ce1317073f4119a891229530677603c10e5700c +7e7335a6466abc13fd51aed1f7c76d621fb3d524 +75f6b6b06fa9058b200eba9395f4b516941bba69 +5868b82b60e8548f8e791f1d90dfa9c05031127f +4febc230f40dba8c7e1d6443677f8eb0ba34c00a +26aaf00e636c317e5a57cc29a973e1f476072976 +ef4808d4095c3da3c4f35e1b37495b5813624d14 +0510592d5bc000ad555717ac524e1d081d01aa7b +563bc25b341c85c8e09d4499f5b3f810338ded60 +9bc47dc4efb3ebbbbb8a50fd5b371cb5a37bfb14 +bdd05b0f39317e9ce428508fdcda0d66bd2a0ce1 +3d4ba729cfd2529730fdccdb8ee0fdfe151413bd +0a325deddc0bac58cc43e650773cc3408eabc011 +ddc951a7656423c7277671ea89a4fff9b8d0be6f +f07ff73bd957a6e23afb5c7ec48a6d2334e0d5d7 +b3196d2b3fca62b72b2ba451237379b0747f7b1c +616b1503dfd97e349208d5e2b3180fb386615ae4 +5ff42a93b189a240f8cc0ac0a750ac4cd26272f7 +1c173fed57418bea8fbb19240245757708f25472 +85e76ec9b932f0b5bf5617677d1b8306fd33298f +9b17edfe62a752865eaa9b7b95103345d5c66448 +b7371d7b4e02e40cc979d0a0e417113276e3b8a3 +d4822a528d596ec86b4891c4ae0783ec386fa687 +e71ef6ccdf42ac87ca0e36dcf3200aa521b9ca11 +7b6c260d9c9670b254ace3cdb61254b5f419f3fb +1a950623255621d1c81011e6d6530db1988e5704 +353998347af20ae14967e5da73a3f9059c0e1826 +79817ae6defe15f90dfa70136423a19897d7d781 +25d0284ccdd26e64bcd3b3054304bc46403b1736 +4021f78bf37dd3c3b78b692220a6ec7982dadc00 +18c8293514004daf7dcf190c067f4fa2b6688a05 +314e233d75169223765dc8ba0e0d51401398f9cc +15460fc280d3f70dbecd3cea777ad932b3e06768 +c3df52d178ebe1e7e3ccf0a697bec3a9fecfdc48 +692fecc777402951d0df24b1456dca0255b2f9c5 +4cf5bb43130aabb194f022c8bae9526b0b9ca8f6 +f38c2bea4e997751d520388c47382219ed052e76 +b145bbfd7536c4ba4b791c0dd3a56a481dca28ac +4cfce957d948354787f2a8b5224ed92f0612ac09 +831d1a89aece783c3b06b6d5ebefacd94c171574 +7414ce9a4c273a92f7a033cb2552eff651c25143 +c7ae1f558fd4773c6ffbf948ff996976ed45ce5a +645430c514953203ec284e9f1d224f32e516b2b0 +57170c43486e99e0d1c66ae81a43d447e2c5ca72 +3f6816ba8e2de8615660ee67cf11ef4a249d0f44 +46886422ad2bd467732f468130b45ddc54fcf578 +8bce92c2d07c17dfdd242a60c53efea11dd2149a +be3363590b32ecc5fe20b283d9ed790c3cff2838 +94e3a91dc582218a477771d9a694966bf901fdf5 +f95e0bbf9f76b1cc676945b4f55cdc1f53101cb4 +60320e3b2d62879e1f74ee2a9cfa202e665f7d8e +cafe83839a368bb5943226adc8086ba0a192caef +b3a8faf1ea6f5e312e7e4134adff2e563d0d46f7 +827a5c72befd1fb7464f6a1b33acd74f46b2840f +5391e3295d2a8636cc975ac36bfc03fab9e45dcb +bcd228d680f74da19a10eba070575c40de724404 +7e9e7c703f3f36887647caf5b7956b2c869a711a +abc704a9039d5dfd11d12205f42e1c28b05ab4a2 +b746e63906b13b47ff719a60c907f87b8648eaed +26b1c05a8fdd3729121170ad5b546cd63bf0931b +8bad60bb7d0d9922f0fa991fc7ee061a5e78a527 +533bb921e8add98bd110d658aa42f920dec5b5be +4b1c63332452b2772dc1b26b47547975b8cbd8e0 +65a10d6dea3a95833c0df6d894a889219cd10d66 +54358c34cb31d2363c0af24ded9b809f000a8835 +058f58ae3d92c3f1c83feb5bbf028f6f0f4ebc18 +7d212ae5bc2a3453f2dc5158fd20890129295e63 +e6c9032cb0836d95da61158e6cefde0b09acfdc7 +089cfc5d2036f71ab2cd935fb7641d89adafb330 +bd182094742ca4ae4df654ca8a432362a61d9871 +827e1361c438b08c3b4dec2ecc4a58a3c81643dd +558d25ad8286bde00ec3f63c459eb960a587acfe +e0e98e43140cef0ba78107eb77b5aefcba6e48bd +f7a353ba153cf68aa527239309de5a00206e9017 +f5c4cf7c4f70c371d3e44baabe276dfb72df7149 +2e0911f33b3c70d573c3d482dade6aa90b68943a +05968335993aab7cf9db7f843633449241ebc090 +4611788dece762e182f9fe1eb63e3e563ad33696 +91d5473d03b59e3cce1645c7ad42a54fc395dbf2 +9c6e796539df223f7e0b8614a1fba6a091070c69 +e9af246d4c151dfd2b7dfe04fc398c70cde00188 +b44bd1663af0bff06bbc850a1a7bdabf3257554b +fc7fe43674fb9850b4135620bc51a02b3ca96ab8 +95ad02c74440b7c581a6e138a0294f229203c015 +c62cfc2c7b11d3d86b1967a5e1a5233298c5d10a +1d5da15cedcda1ea6d707980e024d7b93c684cc5 +2de3b6070c33cbd57471309ca74ea25d4ffaa19d +1889bd7ab54834fbc0e639b32b0225e913623268 +22537f60fe249d744387cfbd338766f982d1cbcd +e8cf6ac80afdefcd2c13f5eb433eacbf61c7c84c +533bb921e8add98bd110d658aa42f920dec5b5be +1e8fa3465fea99f092b49d53ee71e0f8db06c390 +0336771c560990b30d8beef4c56f74bafed7478b +13bc64c16db6a3bd4b4923b52cc9d8378bc43fd3 +a136c6e5e417f995f477eb6e8e68e636c6a39c09 +f4d748a3d013c5b36b608769d779409b933a2062 +dfb27c6a0ece3b3f6af4a6c4213c03273bdbf6bd +13da90899d75f15ae493f7516a87d54975bca84c +219311d74cc14006ef6f327683a12d243b57546e +4b1c63332452b2772dc1b26b47547975b8cbd8e0 \ No newline at end of file From 0ca3bbb5eed49bdbb578cf742a23850b4776a5f6 Mon Sep 17 00:00:00 2001 From: Aidan Salzmann Date: Sun, 27 Aug 2023 22:47:57 -0400 Subject: [PATCH 25/44] Bump version v13 to v14 (#913) Co-authored-by: shellvish <104537253+shellvish@users.noreply.github.com> --- app/app.go | 76 ++++---- app/apptesting/test_helpers.go | 4 +- app/proposals_whitelisting.go | 6 +- app/test_setup.go | 4 +- app/upgrades.go | 40 ++--- app/upgrades/v10/upgrades.go | 24 +-- app/upgrades/v10/upgrades_test.go | 24 +-- app/upgrades/v13/upgrades.go | 2 +- app/upgrades/v13/upgrades_test.go | 2 +- app/upgrades/v14/upgrades.go | 14 +- app/upgrades/v14/upgrades_test.go | 14 +- app/upgrades/v3/upgrades.go | 6 +- app/upgrades/v3/upgrades_test.go | 2 +- app/upgrades/v4/upgrades_test.go | 2 +- app/upgrades/v5/upgrades.go | 20 +-- app/upgrades/v5/upgrades_test.go | 30 ++-- app/upgrades/v6/upgrades.go | 2 +- app/upgrades/v6/upgrades_test.go | 8 +- app/upgrades/v7/upgrades.go | 16 +- app/upgrades/v7/upgrades_test.go | 14 +- app/upgrades/v8/upgrades.go | 12 +- app/upgrades/v8/upgrades_test.go | 10 +- app/upgrades/v9/upgrades.go | 2 +- app/upgrades/v9/upgrades_test.go | 14 +- cmd/consumer.go | 2 +- cmd/strided/main.go | 6 +- cmd/strided/root.go | 4 +- deps/gaia | 2 +- deps/hermes | 2 +- deps/osmosis | 2 +- deps/relayer | 2 +- go.mod | 2 +- proto/cosmos/staking/v1beta1/lsm_tx.proto | 2 +- proto/cosmwasm/wasm/v1/cosmwasm.proto | 2 +- proto/stride/autopilot/genesis.proto | 2 +- proto/stride/autopilot/params.proto | 2 +- proto/stride/autopilot/query.proto | 2 +- proto/stride/claim/claim.proto | 2 +- proto/stride/claim/genesis.proto | 2 +- proto/stride/claim/params.proto | 2 +- proto/stride/claim/query.proto | 2 +- proto/stride/claim/tx.proto | 2 +- proto/stride/epochs/genesis.proto | 2 +- proto/stride/epochs/query.proto | 4 +- proto/stride/icacallbacks/callback_data.proto | 2 +- proto/stride/icacallbacks/genesis.proto | 2 +- proto/stride/icacallbacks/packet.proto | 2 +- proto/stride/icacallbacks/params.proto | 2 +- proto/stride/icacallbacks/query.proto | 2 +- proto/stride/icacallbacks/tx.proto | 2 +- proto/stride/icaoracle/callbacks.proto | 2 +- proto/stride/icaoracle/contract.proto | 2 +- proto/stride/icaoracle/genesis.proto | 2 +- proto/stride/icaoracle/icaoracle.proto | 2 +- proto/stride/icaoracle/query.proto | 2 +- proto/stride/icaoracle/tx.proto | 2 +- proto/stride/interchainquery/v1/genesis.proto | 2 +- .../stride/interchainquery/v1/messages.proto | 2 +- proto/stride/interchainquery/v1/query.proto | 2 +- proto/stride/mint/v1beta1/genesis.proto | 2 +- proto/stride/mint/v1beta1/mint.proto | 2 +- proto/stride/mint/v1beta1/query.proto | 2 +- proto/stride/ratelimit/genesis.proto | 2 +- proto/stride/ratelimit/gov.proto | 2 +- proto/stride/ratelimit/params.proto | 2 +- proto/stride/ratelimit/query.proto | 2 +- proto/stride/ratelimit/ratelimit.proto | 2 +- proto/stride/records/callbacks.proto | 2 +- proto/stride/records/genesis.proto | 2 +- proto/stride/records/params.proto | 2 +- proto/stride/records/query.proto | 2 +- proto/stride/records/records.proto | 2 +- proto/stride/stakeibc/address_unbonding.proto | 2 +- proto/stride/stakeibc/callbacks.proto | 2 +- proto/stride/stakeibc/epoch_tracker.proto | 2 +- proto/stride/stakeibc/genesis.proto | 2 +- proto/stride/stakeibc/gov.proto | 2 +- proto/stride/stakeibc/host_zone.proto | 2 +- proto/stride/stakeibc/ica_account.proto | 2 +- proto/stride/stakeibc/packet.proto | 2 +- proto/stride/stakeibc/params.proto | 2 +- proto/stride/stakeibc/query.proto | 2 +- proto/stride/stakeibc/tx.proto | 2 +- proto/stride/stakeibc/validator.proto | 2 +- proto/stride/vesting/tx.proto | 2 +- proto/stride/vesting/vesting.proto | 2 +- scripts/protocgen.sh | 2 +- scripts/safe_delete_pb_go_files.sh | 13 ++ testutil/keeper/claim.go | 4 +- testutil/keeper/epochs.go | 4 +- testutil/keeper/icacallbacks.go | 4 +- testutil/keeper/interchainquery.go | 4 +- testutil/keeper/records.go | 4 +- testutil/keeper/stakeibc.go | 4 +- testutil/network/network.go | 4 +- utils/cache_ctx_test.go | 2 +- utils/module_account_test.go | 2 +- utils/utils.go | 6 +- utils/utils_test.go | 2 +- x/autopilot/client/cli/query.go | 2 +- x/autopilot/genesis.go | 4 +- x/autopilot/genesis_test.go | 6 +- x/autopilot/handler.go | 4 +- x/autopilot/keeper/airdrop.go | 8 +- x/autopilot/keeper/airdrop_test.go | 10 +- x/autopilot/keeper/grpc_query_params.go | 2 +- x/autopilot/keeper/grpc_query_params_test.go | 2 +- x/autopilot/keeper/keeper.go | 6 +- x/autopilot/keeper/keeper_test.go | 4 +- x/autopilot/keeper/liquidstake.go | 6 +- x/autopilot/keeper/liquidstake_test.go | 14 +- x/autopilot/keeper/params.go | 2 +- x/autopilot/keeper/params_test.go | 2 +- x/autopilot/module.go | 6 +- x/autopilot/module_ibc.go | 4 +- x/autopilot/types/genesis.pb.go | 4 +- x/autopilot/types/genesis_test.go | 2 +- x/autopilot/types/params.pb.go | 4 +- x/autopilot/types/parser_test.go | 4 +- x/autopilot/types/query.pb.go | 6 +- x/claim/client/cli/cli_test.go | 14 +- x/claim/client/cli/query.go | 2 +- x/claim/client/cli/tx.go | 2 +- x/claim/client/cli/tx_claim_free_amount.go | 2 +- x/claim/client/cli/tx_create_airdrop.go | 2 +- x/claim/client/cli/tx_delete_airdrop.go | 2 +- .../client/cli/tx_set_airdrop_allocations.go | 2 +- x/claim/genesis_test.go | 6 +- x/claim/handler.go | 4 +- x/claim/keeper/claim.go | 8 +- x/claim/keeper/claim_test.go | 10 +- x/claim/keeper/genesis.go | 2 +- x/claim/keeper/grpc_query.go | 2 +- x/claim/keeper/hooks.go | 6 +- x/claim/keeper/hooks_test.go | 6 +- x/claim/keeper/keeper.go | 2 +- x/claim/keeper/keeper_test.go | 6 +- x/claim/keeper/msg_server.go | 2 +- x/claim/keeper/msg_server_test.go | 4 +- x/claim/keeper/params.go | 2 +- x/claim/migrations/v2/convert.go | 4 +- x/claim/migrations/v2/convert_test.go | 4 +- x/claim/migrations/v2/migrations.go | 4 +- x/claim/module.go | 6 +- x/claim/types/claim.pb.go | 52 +++--- x/claim/types/expected_keepers.go | 2 +- x/claim/types/genesis.pb.go | 6 +- x/claim/types/msgs.go | 2 +- x/claim/types/params.pb.go | 60 +++---- x/claim/types/query.pb.go | 158 ++++++++-------- x/claim/types/tx.pb.go | 78 ++++---- x/claim/vesting/client/cli/tx.go | 2 +- x/claim/vesting/client/testutil/suite.go | 2 +- x/claim/vesting/handler.go | 2 +- x/claim/vesting/module.go | 4 +- x/claim/vesting/msg_server.go | 2 +- x/claim/vesting/types/codec.go | 2 +- x/claim/vesting/types/common_test.go | 2 +- x/claim/vesting/types/tx.pb.go | 4 +- x/claim/vesting/types/vesting.pb.go | 40 ++--- x/claim/vesting/types/vesting_account.go | 4 +- x/claim/vesting/types/vesting_account_test.go | 2 +- x/epochs/client/cli/query.go | 2 +- x/epochs/genesis.go | 4 +- x/epochs/genesis_test.go | 8 +- x/epochs/handler.go | 4 +- x/epochs/keeper/abci.go | 4 +- x/epochs/keeper/abci_test.go | 4 +- x/epochs/keeper/epoch.go | 2 +- x/epochs/keeper/epoch_test.go | 2 +- x/epochs/keeper/grpc_query.go | 2 +- x/epochs/keeper/grpc_query_test.go | 2 +- x/epochs/keeper/hooks.go | 2 +- x/epochs/keeper/keeper.go | 2 +- x/epochs/keeper/keeper_test.go | 4 +- x/epochs/module.go | 8 +- x/epochs/simulation/genesis.go | 2 +- x/epochs/types/genesis.pb.go | 22 +-- x/epochs/types/query.pb.go | 26 +-- x/icacallbacks/client/cli/query.go | 2 +- .../client/cli/query_callback_data.go | 2 +- .../client/cli/query_callback_data_test.go | 8 +- x/icacallbacks/client/cli/query_params.go | 2 +- x/icacallbacks/client/cli/tx.go | 2 +- x/icacallbacks/genesis.go | 4 +- x/icacallbacks/genesis_test.go | 8 +- x/icacallbacks/handler.go | 4 +- x/icacallbacks/ibc_module.go | 4 +- x/icacallbacks/icacallbacks.go | 2 +- x/icacallbacks/icacallbacks_test.go | 6 +- x/icacallbacks/keeper/callback_data.go | 2 +- x/icacallbacks/keeper/callback_data_test.go | 8 +- x/icacallbacks/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_callback_data.go | 2 +- .../keeper/grpc_query_callback_data_test.go | 6 +- x/icacallbacks/keeper/grpc_query_params.go | 2 +- .../keeper/grpc_query_params_test.go | 4 +- x/icacallbacks/keeper/keeper.go | 2 +- x/icacallbacks/keeper/msg_server.go | 2 +- x/icacallbacks/keeper/params.go | 2 +- x/icacallbacks/keeper/params_test.go | 4 +- x/icacallbacks/migrations/v2/convert.go | 6 +- x/icacallbacks/migrations/v2/convert_test.go | 4 +- x/icacallbacks/migrations/v2/migrations.go | 2 +- x/icacallbacks/module.go | 6 +- x/icacallbacks/module_simulation.go | 6 +- x/icacallbacks/types/callback_data.pb.go | 4 +- x/icacallbacks/types/genesis.pb.go | 6 +- x/icacallbacks/types/genesis_test.go | 2 +- x/icacallbacks/types/packet.pb.go | 4 +- x/icacallbacks/types/params.pb.go | 4 +- x/icacallbacks/types/query.pb.go | 66 +++---- x/icacallbacks/types/tx.pb.go | 4 +- x/icaoracle/client/cli/cli_test.go | 10 +- x/icaoracle/client/cli/query.go | 2 +- x/icaoracle/client/cli/query_test.go | 2 +- x/icaoracle/client/cli/tx.go | 2 +- x/icaoracle/client/cli/tx_test.go | 2 +- x/icaoracle/ibc_middleware.go | 2 +- x/icaoracle/keeper/events.go | 2 +- x/icaoracle/keeper/genesis.go | 2 +- x/icaoracle/keeper/genesis_test.go | 2 +- x/icaoracle/keeper/grpc_query.go | 2 +- x/icaoracle/keeper/grpc_query_test.go | 2 +- x/icaoracle/keeper/ibc.go | 4 +- x/icaoracle/keeper/ibc_test.go | 4 +- x/icaoracle/keeper/icacallbacks.go | 2 +- .../keeper/icacallbacks_instantiate_oracle.go | 6 +- .../icacallbacks_instantiate_oracle_test.go | 4 +- .../keeper/icacallbacks_update_oracle.go | 6 +- .../keeper/icacallbacks_update_oracle_test.go | 4 +- x/icaoracle/keeper/icaoracle.go | 2 +- x/icaoracle/keeper/icaoracle_test.go | 6 +- x/icaoracle/keeper/keeper.go | 2 +- x/icaoracle/keeper/keeper_test.go | 6 +- x/icaoracle/keeper/metric.go | 2 +- x/icaoracle/keeper/metric_test.go | 2 +- x/icaoracle/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_oracle_test.go | 2 +- .../msg_server_instantiate_oracle_test.go | 4 +- .../keeper/msg_server_remove_oracle_test.go | 2 +- .../msg_server_restore_oracle_ica_test.go | 2 +- .../keeper/msg_server_toggle_oracle_test.go | 2 +- x/icaoracle/keeper/oracle.go | 2 +- x/icaoracle/keeper/oracle_test.go | 2 +- x/icaoracle/module.go | 6 +- x/icaoracle/types/callbacks.pb.go | 6 +- x/icaoracle/types/contract.pb.go | 44 ++--- x/icaoracle/types/cosmwasm.pb.go | 52 +++--- x/icaoracle/types/expected_keepers.go | 2 +- x/icaoracle/types/genesis.pb.go | 4 +- x/icaoracle/types/genesis_test.go | 4 +- x/icaoracle/types/ica_test.go | 2 +- x/icaoracle/types/icaoracle.pb.go | 72 ++++---- x/icaoracle/types/message_add_oracle.go | 2 +- x/icaoracle/types/message_add_oracle_test.go | 4 +- .../types/message_instantiate_oracle.go | 2 +- .../types/message_instantiate_oracle_test.go | 4 +- .../types/message_remove_oracle_test.go | 4 +- ..._restore_oracle_interchain_account_test.go | 4 +- .../types/message_toggle_oracle_test.go | 4 +- x/icaoracle/types/metric_test.go | 2 +- x/icaoracle/types/oracle_test.go | 2 +- x/icaoracle/types/query.pb.go | 64 +++---- x/icaoracle/types/tx.pb.go | 82 ++++----- x/interchainquery/client/cli/query.go | 2 +- x/interchainquery/genesis.go | 4 +- x/interchainquery/handler.go | 4 +- x/interchainquery/keeper/abci.go | 2 +- x/interchainquery/keeper/grpc_query.go | 2 +- x/interchainquery/keeper/keeper.go | 4 +- x/interchainquery/keeper/keeper_test.go | 6 +- x/interchainquery/keeper/msg_server.go | 4 +- .../keeper/msg_submit_query_response_test.go | 4 +- x/interchainquery/keeper/queries.go | 2 +- x/interchainquery/keeper/queries_test.go | 8 +- x/interchainquery/module.go | 6 +- x/interchainquery/types/genesis.pb.go | 86 ++++----- x/interchainquery/types/messages.pb.go | 52 +++--- x/interchainquery/types/query.pb.go | 4 +- x/mint/client/cli/cli_test.go | 4 +- x/mint/client/cli/query.go | 2 +- x/mint/client/rest/grpc_query_test.go | 4 +- x/mint/genesis.go | 4 +- x/mint/keeper/grpc_query.go | 2 +- x/mint/keeper/hooks.go | 4 +- x/mint/keeper/keeper.go | 2 +- x/mint/module.go | 8 +- x/mint/types/expected_keepers.go | 2 +- x/mint/types/genesis.pb.go | 36 ++-- x/mint/types/mint.pb.go | 82 ++++----- x/mint/types/params.go | 2 +- x/mint/types/query.pb.go | 46 ++--- x/ratelimit/client/cli/query.go | 2 +- x/ratelimit/client/cli/tx.go | 2 +- x/ratelimit/client/proposal_handler.go | 2 +- x/ratelimit/genesis.go | 4 +- x/ratelimit/genesis_test.go | 8 +- x/ratelimit/handler.go | 6 +- x/ratelimit/ibc_middleware.go | 2 +- x/ratelimit/keeper/gov/gov.go | 4 +- x/ratelimit/keeper/gov/gov_test.go | 8 +- x/ratelimit/keeper/grpc_query.go | 2 +- x/ratelimit/keeper/grpc_query_test.go | 2 +- x/ratelimit/keeper/hooks.go | 2 +- x/ratelimit/keeper/hooks_test.go | 4 +- x/ratelimit/keeper/keeper.go | 2 +- x/ratelimit/keeper/keeper_test.go | 4 +- x/ratelimit/keeper/packet.go | 6 +- x/ratelimit/keeper/packet_test.go | 4 +- x/ratelimit/keeper/params.go | 2 +- x/ratelimit/keeper/rate_limit.go | 2 +- x/ratelimit/keeper/rate_limit_test.go | 6 +- x/ratelimit/module.go | 6 +- x/ratelimit/types/flow_test.go | 2 +- x/ratelimit/types/genesis.pb.go | 50 +++--- x/ratelimit/types/gov.pb.go | 56 +++--- x/ratelimit/types/gov_add_rate_limit_test.go | 4 +- .../types/gov_remove_rate_limit_test.go | 4 +- .../types/gov_reset_rate_limit_test.go | 4 +- .../types/gov_update_rate_limit_test.go | 4 +- x/ratelimit/types/params.pb.go | 4 +- x/ratelimit/types/query.pb.go | 90 +++++----- x/ratelimit/types/quota_test.go | 2 +- x/ratelimit/types/ratelimit.pb.go | 68 +++---- x/records/client/cli/query.go | 2 +- x/records/client/cli/query_deposit_record.go | 2 +- .../client/cli/query_deposit_record_test.go | 8 +- .../cli/query_epoch_unbonding_record.go | 2 +- x/records/client/cli/query_lsm_deposits.go | 2 +- x/records/client/cli/query_params.go | 2 +- .../cli/query_user_redemption_record.go | 2 +- .../cli/query_user_redemption_record_test.go | 8 +- x/records/client/cli/tx.go | 2 +- x/records/genesis.go | 4 +- x/records/genesis_test.go | 8 +- x/records/handler.go | 4 +- x/records/keeper/callback_lsm_transfer.go | 6 +- .../keeper/callback_lsm_transfer_test.go | 4 +- x/records/keeper/callback_native_transfer.go | 4 +- .../keeper/callback_native_transfer_test.go | 6 +- x/records/keeper/callbacks.go | 2 +- x/records/keeper/deposit_record.go | 2 +- x/records/keeper/epoch_unbonding_record.go | 4 +- .../keeper/epoch_unbonding_record_test.go | 8 +- x/records/keeper/grpc_query.go | 2 +- x/records/keeper/grpc_query_deposit_record.go | 2 +- .../keeper/grpc_query_deposit_record_test.go | 8 +- .../grpc_query_epoch_unbonding_record.go | 2 +- .../grpc_query_epoch_unbonding_record_test.go | 6 +- x/records/keeper/grpc_query_lsm_deposits.go | 2 +- .../keeper/grpc_query_lsm_deposits_test.go | 2 +- x/records/keeper/grpc_query_params.go | 2 +- x/records/keeper/grpc_query_params_test.go | 4 +- .../grpc_query_user_redemption_record.go | 2 +- ...c_query_user_redemption_record_for_user.go | 2 +- .../grpc_query_user_redemption_record_test.go | 6 +- x/records/keeper/ibc.go | 4 +- x/records/keeper/keeper.go | 4 +- x/records/keeper/keeper_test.go | 2 +- x/records/keeper/lsm_token_deposit.go | 2 +- x/records/keeper/lsm_token_deposit_test.go | 2 +- x/records/keeper/params.go | 2 +- x/records/keeper/params_test.go | 4 +- x/records/keeper/transfer.go | 6 +- x/records/keeper/transfer_test.go | 4 +- x/records/keeper/user_redemption_record.go | 2 +- .../keeper/user_redemption_record_test.go | 8 +- x/records/migrations/v2/convert.go | 4 +- x/records/migrations/v2/convert_test.go | 4 +- x/records/migrations/v2/migrations.go | 4 +- x/records/module.go | 6 +- x/records/module_ibc.go | 2 +- x/records/module_simulation.go | 6 +- x/records/types/callbacks.pb.go | 4 +- x/records/types/genesis.pb.go | 38 ++-- x/records/types/genesis_test.go | 2 +- x/records/types/params.pb.go | 4 +- x/records/types/query.pb.go | 148 +++++++-------- x/records/types/records.pb.go | 50 +++--- x/stakeibc/client/cli/query.go | 2 +- x/stakeibc/client/cli/query_epoch_tracker.go | 2 +- .../client/cli/query_epoch_tracker_test.go | 6 +- x/stakeibc/client/cli/query_host_zone.go | 2 +- x/stakeibc/client/cli/query_module_address.go | 2 +- .../client/cli/query_next_packet_sequence.go | 2 +- x/stakeibc/client/cli/query_params.go | 2 +- x/stakeibc/client/cli/query_register_ica.go | 2 +- x/stakeibc/client/cli/query_validator.go | 2 +- x/stakeibc/client/cli/tx.go | 2 +- x/stakeibc/client/cli/tx_add_validators.go | 2 +- .../client/cli/tx_add_validators_proposal.go | 2 +- .../client/cli/tx_change_validator_weight.go | 2 +- .../client/cli/tx_claim_undelegated_tokens.go | 2 +- x/stakeibc/client/cli/tx_clear_balance.go | 2 +- x/stakeibc/client/cli/tx_delete_validator.go | 2 +- x/stakeibc/client/cli/tx_liquid_stake.go | 2 +- x/stakeibc/client/cli/tx_lsm_liquid_stake.go | 2 +- .../client/cli/tx_rebalance_validators.go | 2 +- x/stakeibc/client/cli/tx_redeem_stake.go | 2 +- .../client/cli/tx_register_host_zone.go | 2 +- .../cli/tx_restore_interchain_account.go | 2 +- .../client/cli/tx_toggle_lsm_proposal.go | 2 +- x/stakeibc/client/cli/tx_update_delegation.go | 2 +- x/stakeibc/client/proposal_handler.go | 2 +- x/stakeibc/genesis.go | 4 +- x/stakeibc/genesis_test.go | 8 +- x/stakeibc/handler.go | 4 +- x/stakeibc/ibc_middleware.go | 4 +- x/stakeibc/keeper/abci.go | 2 +- x/stakeibc/keeper/consumer.go | 2 +- x/stakeibc/keeper/consumer_test.go | 2 +- x/stakeibc/keeper/deposit_records.go | 6 +- x/stakeibc/keeper/deposit_records_test.go | 8 +- .../keeper/epoch_elapsed_shares_test.go | 4 +- x/stakeibc/keeper/epoch_tracker.go | 2 +- x/stakeibc/keeper/epoch_tracker_test.go | 8 +- x/stakeibc/keeper/events.go | 4 +- x/stakeibc/keeper/gov.go | 2 +- x/stakeibc/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_address_unbondings.go | 4 +- x/stakeibc/keeper/grpc_query_epoch_tracker.go | 2 +- .../keeper/grpc_query_epoch_tracker_test.go | 6 +- x/stakeibc/keeper/grpc_query_host_zone.go | 2 +- .../keeper/grpc_query_host_zone_test.go | 6 +- .../keeper/grpc_query_module_address.go | 2 +- .../keeper/grpc_query_next_packet_sequence.go | 2 +- .../grpc_query_next_packet_sequence_test.go | 2 +- x/stakeibc/keeper/grpc_query_params.go | 2 +- x/stakeibc/keeper/grpc_query_params_test.go | 4 +- x/stakeibc/keeper/grpc_query_register_ica.go | 2 +- x/stakeibc/keeper/grpc_query_validator.go | 2 +- .../keeper/grpc_query_validator_test.go | 6 +- x/stakeibc/keeper/hooks.go | 10 +- x/stakeibc/keeper/host_zone.go | 4 +- x/stakeibc/keeper/host_zone_test.go | 8 +- x/stakeibc/keeper/icacallbacks.go | 2 +- x/stakeibc/keeper/icacallbacks_claim.go | 8 +- x/stakeibc/keeper/icacallbacks_claim_test.go | 6 +- x/stakeibc/keeper/icacallbacks_delegate.go | 8 +- .../keeper/icacallbacks_delegate_test.go | 6 +- x/stakeibc/keeper/icacallbacks_detokenize.go | 8 +- .../keeper/icacallbacks_detokenize_test.go | 6 +- x/stakeibc/keeper/icacallbacks_rebalance.go | 6 +- .../keeper/icacallbacks_rebalance_test.go | 6 +- x/stakeibc/keeper/icacallbacks_redemption.go | 8 +- .../keeper/icacallbacks_redemption_test.go | 6 +- x/stakeibc/keeper/icacallbacks_reinvest.go | 12 +- .../keeper/icacallbacks_reinvest_test.go | 16 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 8 +- .../keeper/icacallbacks_undelegate_test.go | 6 +- x/stakeibc/keeper/icqcallbacks.go | 2 +- .../keeper/icqcallbacks_delegator_shares.go | 6 +- .../icqcallbacks_delegator_shares_test.go | 6 +- x/stakeibc/keeper/icqcallbacks_fee_balance.go | 10 +- .../keeper/icqcallbacks_fee_balance_test.go | 8 +- .../icqcallbacks_validator_exchange_rate.go | 6 +- ...qcallbacks_validator_exchange_rate_test.go | 8 +- .../keeper/icqcallbacks_withdrawal_balance.go | 8 +- .../icqcallbacks_withdrawal_balance_test.go | 10 +- x/stakeibc/keeper/invariants.go | 2 +- x/stakeibc/keeper/keeper.go | 10 +- x/stakeibc/keeper/keeper_test.go | 6 +- x/stakeibc/keeper/lsm.go | 4 +- x/stakeibc/keeper/lsm_test.go | 6 +- x/stakeibc/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_validators.go | 2 +- .../keeper/msg_server_add_validators_test.go | 2 +- .../msg_server_change_validator_weight.go | 2 +- .../msg_server_claim_undelegated_tokens.go | 6 +- ...sg_server_claim_undelegated_tokens_test.go | 8 +- x/stakeibc/keeper/msg_server_clear_balance.go | 2 +- .../keeper/msg_server_clear_balance_test.go | 4 +- .../keeper/msg_server_delete_validator.go | 2 +- .../msg_server_delete_validator_test.go | 2 +- x/stakeibc/keeper/msg_server_liquid_stake.go | 4 +- .../keeper/msg_server_liquid_stake_test.go | 6 +- .../keeper/msg_server_lsm_liquid_stake.go | 6 +- .../msg_server_lsm_liquid_stake_test.go | 8 +- .../keeper/msg_server_rebalance_validators.go | 2 +- x/stakeibc/keeper/msg_server_redeem_stake.go | 6 +- .../keeper/msg_server_redeem_stake_test.go | 6 +- .../keeper/msg_server_register_host_zone.go | 8 +- .../msg_server_register_host_zone_test.go | 8 +- .../msg_server_restore_interchain_account.go | 4 +- ..._server_restore_interchain_account_test.go | 4 +- x/stakeibc/keeper/msg_server_submit_tx.go | 12 +- ...erver_update_validator_shares_exch_rate.go | 2 +- x/stakeibc/keeper/params.go | 2 +- x/stakeibc/keeper/params_test.go | 4 +- x/stakeibc/keeper/reward_allocation.go | 2 +- x/stakeibc/keeper/reward_allocation_test.go | 6 +- x/stakeibc/keeper/unbonding_records.go | 6 +- .../keeper/unbonding_records_cleanup_test.go | 4 +- ...ords_get_host_zone_unbondings_msgs_test.go | 8 +- ...ng_records_initiate_all_unbondings_test.go | 4 +- ...ding_records_sweep_unbonded_tokens_test.go | 6 +- .../keeper/update_redemption_rates_test.go | 6 +- .../update_validator_shares_exch_rate_test.go | 2 +- x/stakeibc/keeper/validator_selection.go | 6 +- x/stakeibc/keeper/validator_selection_test.go | 6 +- x/stakeibc/migrations/v2/convert.go | 4 +- x/stakeibc/migrations/v2/convert_test.go | 4 +- x/stakeibc/migrations/v2/migrations.go | 4 +- x/stakeibc/migrations/v3/convert.go | 4 +- x/stakeibc/migrations/v3/convert_test.go | 4 +- x/stakeibc/migrations/v3/migrations.go | 4 +- x/stakeibc/module.go | 6 +- x/stakeibc/module_simulation.go | 6 +- x/stakeibc/simulation/add_validator.go | 4 +- .../simulation/change_validator_weight.go | 4 +- .../simulation/claim_undelegated_tokens.go | 4 +- x/stakeibc/simulation/delete_validator.go | 4 +- x/stakeibc/simulation/liquid_stake.go | 4 +- x/stakeibc/simulation/rebalance_validators.go | 4 +- .../simulation/restore_interchain_account.go | 4 +- x/stakeibc/simulation/update_delegation.go | 4 +- x/stakeibc/types/address_unbonding.pb.go | 44 ++--- x/stakeibc/types/callbacks.pb.go | 104 +++++------ x/stakeibc/types/epoch_tracker.pb.go | 4 +- x/stakeibc/types/expected_keepers.go | 2 +- x/stakeibc/types/genesis.pb.go | 40 ++--- x/stakeibc/types/genesis_test.go | 2 +- x/stakeibc/types/gov.pb.go | 4 +- x/stakeibc/types/host_zone.pb.go | 90 +++++----- x/stakeibc/types/host_zone_test.go | 2 +- x/stakeibc/types/ica_account.pb.go | 6 +- x/stakeibc/types/lsm_tx.pb.go | 6 +- x/stakeibc/types/message_add_validators.go | 2 +- .../types/message_add_validators_test.go | 4 +- .../types/message_change_validator_weight.go | 2 +- .../message_change_validator_weight_test.go | 2 +- .../types/message_claim_undelegated_tokens.go | 2 +- .../message_claim_undelegated_tokens_test.go | 2 +- x/stakeibc/types/message_clear_balance.go | 2 +- x/stakeibc/types/message_delete_validator.go | 2 +- .../types/message_delete_validator_test.go | 2 +- x/stakeibc/types/message_liquid_stake_test.go | 2 +- .../types/message_lsm_liquid_stake_test.go | 4 +- .../types/message_rebalance_validators.go | 2 +- .../message_rebalance_validators_test.go | 4 +- x/stakeibc/types/message_redeem_stake_test.go | 2 +- .../types/message_register_host_zone.go | 2 +- ...message_restore_interchain_account_test.go | 2 +- x/stakeibc/types/packet.pb.go | 4 +- x/stakeibc/types/params.pb.go | 72 ++++---- x/stakeibc/types/query.pb.go | 128 ++++++------- x/stakeibc/types/tx.pb.go | 168 +++++++++--------- x/stakeibc/types/validator.pb.go | 56 +++--- 549 files changed, 2259 insertions(+), 2246 deletions(-) create mode 100644 scripts/safe_delete_pb_go_files.sh diff --git a/app/app.go b/app/app.go index b008dc3349..7138c1a7c4 100644 --- a/app/app.go +++ b/app/app.go @@ -13,7 +13,7 @@ import ( nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -66,12 +66,12 @@ import ( evmosvestingkeeper "github.com/evmos/vesting/x/vesting/keeper" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - claimvesting "github.com/Stride-Labs/stride/v13/x/claim/vesting" - claimvestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + claimvesting "github.com/Stride-Labs/stride/v14/x/claim/vesting" + claimvestingtypes "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" - "github.com/Stride-Labs/stride/v13/x/mint" - mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/mint" + mintkeeper "github.com/Stride-Labs/stride/v14/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" dbm "github.com/cometbft/cometbft-db" abci "github.com/cometbft/cometbft/abci/types" @@ -118,38 +118,38 @@ import ( // monitoringp "github.com/tendermint/spn/x/monitoringp" // monitoringpkeeper "github.com/tendermint/spn/x/monitoringp/keeper" - epochsmodule "github.com/Stride-Labs/stride/v13/x/epochs" - epochsmodulekeeper "github.com/Stride-Labs/stride/v13/x/epochs/keeper" - epochsmoduletypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - - "github.com/Stride-Labs/stride/v13/x/interchainquery" - interchainquerykeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - interchainquerytypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - - "github.com/Stride-Labs/stride/v13/x/autopilot" - autopilotkeeper "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" - - "github.com/Stride-Labs/stride/v13/x/claim" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - icacallbacksmodule "github.com/Stride-Labs/stride/v13/x/icacallbacks" - icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - icacallbacksmoduletypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - icaoracle "github.com/Stride-Labs/stride/v13/x/icaoracle" - icaoraclekeeper "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" - icaoracletypes "github.com/Stride-Labs/stride/v13/x/icaoracle/types" - ratelimitmodule "github.com/Stride-Labs/stride/v13/x/ratelimit" - ratelimitclient "github.com/Stride-Labs/stride/v13/x/ratelimit/client" - ratelimitmodulekeeper "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - ratelimitmoduletypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" - recordsmodule "github.com/Stride-Labs/stride/v13/x/records" - recordsmodulekeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" - recordsmoduletypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibcmodule "github.com/Stride-Labs/stride/v13/x/stakeibc" - stakeibcclient "github.com/Stride-Labs/stride/v13/x/stakeibc/client" - stakeibcmodulekeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibcmoduletypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochsmodule "github.com/Stride-Labs/stride/v14/x/epochs" + epochsmodulekeeper "github.com/Stride-Labs/stride/v14/x/epochs/keeper" + epochsmoduletypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + + "github.com/Stride-Labs/stride/v14/x/interchainquery" + interchainquerykeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + interchainquerytypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + + "github.com/Stride-Labs/stride/v14/x/autopilot" + autopilotkeeper "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" + + "github.com/Stride-Labs/stride/v14/x/claim" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + icacallbacksmodule "github.com/Stride-Labs/stride/v14/x/icacallbacks" + icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + icacallbacksmoduletypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icaoracle "github.com/Stride-Labs/stride/v14/x/icaoracle" + icaoraclekeeper "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" + icaoracletypes "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + ratelimitmodule "github.com/Stride-Labs/stride/v14/x/ratelimit" + ratelimitclient "github.com/Stride-Labs/stride/v14/x/ratelimit/client" + ratelimitmodulekeeper "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + ratelimitmoduletypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + recordsmodule "github.com/Stride-Labs/stride/v14/x/records" + recordsmodulekeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" + recordsmoduletypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibcmodule "github.com/Stride-Labs/stride/v14/x/stakeibc" + stakeibcclient "github.com/Stride-Labs/stride/v14/x/stakeibc/client" + stakeibcmodulekeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibcmoduletypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ccvconsumer "github.com/cosmos/interchain-security/v3/x/ccv/consumer" ccvconsumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper" diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 70fbe992f9..41b2e15325 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -32,8 +32,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/utils" ) var ( diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index 4caea2ef98..ab752cacd6 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -17,9 +17,9 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" - autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var WhiteListModule = map[string]struct{}{ diff --git a/app/test_setup.go b/app/test_setup.go index 51ce479a86..7720706edd 100644 --- a/app/test_setup.go +++ b/app/test_setup.go @@ -21,9 +21,9 @@ import ( ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing" consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - testutil "github.com/Stride-Labs/stride/v13/testutil" + testutil "github.com/Stride-Labs/stride/v14/testutil" - cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" ) const Bech32Prefix = "stride" diff --git a/app/upgrades.go b/app/upgrades.go index 33eb810b97..407e297284 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -13,26 +13,26 @@ import ( consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - v10 "github.com/Stride-Labs/stride/v13/app/upgrades/v10" - v11 "github.com/Stride-Labs/stride/v13/app/upgrades/v11" - v12 "github.com/Stride-Labs/stride/v13/app/upgrades/v12" - v13 "github.com/Stride-Labs/stride/v13/app/upgrades/v13" - v14 "github.com/Stride-Labs/stride/v13/app/upgrades/v14" - v2 "github.com/Stride-Labs/stride/v13/app/upgrades/v2" - v3 "github.com/Stride-Labs/stride/v13/app/upgrades/v3" - v4 "github.com/Stride-Labs/stride/v13/app/upgrades/v4" - v5 "github.com/Stride-Labs/stride/v13/app/upgrades/v5" - v6 "github.com/Stride-Labs/stride/v13/app/upgrades/v6" - v7 "github.com/Stride-Labs/stride/v13/app/upgrades/v7" - v8 "github.com/Stride-Labs/stride/v13/app/upgrades/v8" - v9 "github.com/Stride-Labs/stride/v13/app/upgrades/v9" - autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - icaoracletypes "github.com/Stride-Labs/stride/v13/x/icaoracle/types" - ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + v10 "github.com/Stride-Labs/stride/v14/app/upgrades/v10" + v11 "github.com/Stride-Labs/stride/v14/app/upgrades/v11" + v12 "github.com/Stride-Labs/stride/v14/app/upgrades/v12" + v13 "github.com/Stride-Labs/stride/v14/app/upgrades/v13" + v14 "github.com/Stride-Labs/stride/v14/app/upgrades/v14" + v2 "github.com/Stride-Labs/stride/v14/app/upgrades/v2" + v3 "github.com/Stride-Labs/stride/v14/app/upgrades/v3" + v4 "github.com/Stride-Labs/stride/v14/app/upgrades/v4" + v5 "github.com/Stride-Labs/stride/v14/app/upgrades/v5" + v6 "github.com/Stride-Labs/stride/v14/app/upgrades/v6" + v7 "github.com/Stride-Labs/stride/v14/app/upgrades/v7" + v8 "github.com/Stride-Labs/stride/v14/app/upgrades/v8" + v9 "github.com/Stride-Labs/stride/v14/app/upgrades/v9" + autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icaoracletypes "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { diff --git a/app/upgrades/v10/upgrades.go b/app/upgrades/v10/upgrades.go index 8fc6769627..3c57cb6f5f 100644 --- a/app/upgrades/v10/upgrades.go +++ b/app/upgrades/v10/upgrades.go @@ -25,18 +25,18 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibctmmigrations "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint/migrations" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - ratelimitkeeper "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - ratelimitgov "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper/gov" - ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + mintkeeper "github.com/Stride-Labs/stride/v14/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + ratelimitkeeper "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + ratelimitgov "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper/gov" + ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index da1630ae64..11c6f19ab0 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -16,22 +16,22 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/app/apptesting" - v10 "github.com/Stride-Labs/stride/v13/app/upgrades/v10" - "github.com/Stride-Labs/stride/v13/utils" - - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + v10 "github.com/Stride-Labs/stride/v14/app/upgrades/v10" + "github.com/Stride-Labs/stride/v14/utils" + + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) var initialRateLimitChannelValue = sdk.NewInt(1_000_000) diff --git a/app/upgrades/v13/upgrades.go b/app/upgrades/v13/upgrades.go index 7ac6af306e..19d3424bb2 100644 --- a/app/upgrades/v13/upgrades.go +++ b/app/upgrades/v13/upgrades.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v13/upgrades_test.go b/app/upgrades/v13/upgrades_test.go index 9dc889375f..4750cde54d 100644 --- a/app/upgrades/v13/upgrades_test.go +++ b/app/upgrades/v13/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v14/app/apptesting" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v14/upgrades.go b/app/upgrades/v14/upgrades.go index a9b889d8f0..36a014c764 100644 --- a/app/upgrades/v14/upgrades.go +++ b/app/upgrades/v14/upgrades.go @@ -23,13 +23,13 @@ import ( "github.com/evmos/vesting/x/vesting/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - "github.com/Stride-Labs/stride/v13/utils" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v14/upgrades_test.go b/app/upgrades/v14/upgrades_test.go index 021262de8a..b8081ed44b 100644 --- a/app/upgrades/v14/upgrades_test.go +++ b/app/upgrades/v14/upgrades_test.go @@ -13,13 +13,13 @@ import ( evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/app/apptesting" - v14 "github.com/Stride-Labs/stride/v13/app/upgrades/v14" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - interchainquerytypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/app/apptesting" + v14 "github.com/Stride-Labs/stride/v14/app/upgrades/v14" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + interchainquerytypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go index c72a9fb954..1d001796bb 100644 --- a/app/upgrades/v3/upgrades.go +++ b/app/upgrades/v3/upgrades.go @@ -7,9 +7,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v3/upgrades_test.go b/app/upgrades/v3/upgrades_test.go index ac014a2582..a74a741787 100644 --- a/app/upgrades/v3/upgrades_test.go +++ b/app/upgrades/v3/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v14/app/apptesting" ) var ( diff --git a/app/upgrades/v4/upgrades_test.go b/app/upgrades/v4/upgrades_test.go index f8df2252b9..8024894f46 100644 --- a/app/upgrades/v4/upgrades_test.go +++ b/app/upgrades/v4/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v14/app/apptesting" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 7e6ed84054..449ac34aa2 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -12,16 +12,16 @@ import ( authz "github.com/cosmos/cosmos-sdk/x/authz" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimmigration "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - icacallbacksmigration "github.com/Stride-Labs/stride/v13/x/icacallbacks/migrations/v2" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - interchainquerykeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - recordsmigration "github.com/Stride-Labs/stride/v13/x/records/migrations/v2" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + claimmigration "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + icacallbacksmigration "github.com/Stride-Labs/stride/v14/x/icacallbacks/migrations/v2" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + interchainquerykeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + recordsmigration "github.com/Stride-Labs/stride/v14/x/records/migrations/v2" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index dcd5489e34..a50a0a0cac 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -12,21 +12,21 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - - "github.com/Stride-Labs/stride/v13/app/apptesting" - upgradev5 "github.com/Stride-Labs/stride/v13/app/upgrades/v5" - oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - recordkeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" - oldrecordtypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app" + + "github.com/Stride-Labs/stride/v14/app/apptesting" + upgradev5 "github.com/Stride-Labs/stride/v14/app/upgrades/v5" + oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + recordkeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" + oldrecordtypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v6/upgrades.go b/app/upgrades/v6/upgrades.go index 0839644a3d..0d25b49916 100644 --- a/app/upgrades/v6/upgrades.go +++ b/app/upgrades/v6/upgrades.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v6/upgrades_test.go b/app/upgrades/v6/upgrades_test.go index a6586ba05d..4fe1ce08dc 100644 --- a/app/upgrades/v6/upgrades_test.go +++ b/app/upgrades/v6/upgrades_test.go @@ -10,11 +10,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index 06ad914b5b..5ebce3590b 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -23,14 +23,14 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v13/utils" - epochskeeper "github.com/Stride-Labs/stride/v13/x/epochs/keeper" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - mintkeeper "github.com/Stride-Labs/stride/v13/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + epochskeeper "github.com/Stride-Labs/stride/v14/x/epochs/keeper" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + mintkeeper "github.com/Stride-Labs/stride/v14/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v7 diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index f35f4a2cf6..68fee9939b 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -9,17 +9,17 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/app/apptesting" - v7 "github.com/Stride-Labs/stride/v13/app/upgrades/v7" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/app/apptesting" + v7 "github.com/Stride-Labs/stride/v14/app/upgrades/v7" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" ) var ( diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index f9cda7e072..51931e5ef5 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/Stride-Labs/stride/v13/utils" - autopilotkeeper "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/utils" + autopilotkeeper "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) var ( diff --git a/app/upgrades/v8/upgrades_test.go b/app/upgrades/v8/upgrades_test.go index 939dfbf062..b671cd38bd 100644 --- a/app/upgrades/v8/upgrades_test.go +++ b/app/upgrades/v8/upgrades_test.go @@ -9,11 +9,11 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - v8 "github.com/Stride-Labs/stride/v13/app/upgrades/v8" - autopilottypes "github.com/Stride-Labs/stride/v13/x/autopilot/types" - "github.com/Stride-Labs/stride/v13/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + v8 "github.com/Stride-Labs/stride/v14/app/upgrades/v8" + autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) var ( diff --git a/app/upgrades/v9/upgrades.go b/app/upgrades/v9/upgrades.go index 0b37f66bf1..01eb2247f4 100644 --- a/app/upgrades/v9/upgrades.go +++ b/app/upgrades/v9/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" ) // CreateUpgradeHandler creates an SDK upgrade handler for v29 diff --git a/app/upgrades/v9/upgrades_test.go b/app/upgrades/v9/upgrades_test.go index e529abf752..380cc83807 100644 --- a/app/upgrades/v9/upgrades_test.go +++ b/app/upgrades/v9/upgrades_test.go @@ -6,18 +6,18 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/app/apptesting" - v9 "github.com/Stride-Labs/stride/v13/app/upgrades/v9" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/app/apptesting" + v9 "github.com/Stride-Labs/stride/v14/app/upgrades/v9" + "github.com/Stride-Labs/stride/v14/utils" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" - oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" + "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" + oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" ) type UpgradeTestSuite struct { diff --git a/cmd/consumer.go b/cmd/consumer.go index 4c282ff3c9..bcfdaa0a8b 100644 --- a/cmd/consumer.go +++ b/cmd/consumer.go @@ -18,7 +18,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/testutil" + "github.com/Stride-Labs/stride/v14/testutil" ) func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { diff --git a/cmd/strided/main.go b/cmd/strided/main.go index cd0301872a..453e83cbc6 100644 --- a/cmd/strided/main.go +++ b/cmd/strided/main.go @@ -5,10 +5,10 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/cmd" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/cmd" - cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" ) func main() { diff --git a/cmd/strided/root.go b/cmd/strided/root.go index 815703443d..6013a87706 100644 --- a/cmd/strided/root.go +++ b/cmd/strided/root.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/snapshots" "gopkg.in/yaml.v2" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" cometbftdb "github.com/cometbft/cometbft-db" "github.com/cometbft/cometbft/libs/cli" @@ -47,7 +47,7 @@ import ( genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/Stride-Labs/stride/v13/app" + "github.com/Stride-Labs/stride/v14/app" ) var ChainID string diff --git a/deps/gaia b/deps/gaia index 3b9a281247..321d15a574 160000 --- a/deps/gaia +++ b/deps/gaia @@ -1 +1 @@ -Subproject commit 3b9a281247ab9bd87483ad7fc1dcea9f26c4b8f6 +Subproject commit 321d15a574def0f338ceacc5c060159ebba95edc diff --git a/deps/hermes b/deps/hermes index 6583d69703..fd92eb6d17 160000 --- a/deps/hermes +++ b/deps/hermes @@ -1 +1 @@ -Subproject commit 6583d697034764dc463c3949fc1f732d63e9f193 +Subproject commit fd92eb6d17342bc83003f2067d6a9cd8261f2884 diff --git a/deps/osmosis b/deps/osmosis index 3e2c326301..08669da850 160000 --- a/deps/osmosis +++ b/deps/osmosis @@ -1 +1 @@ -Subproject commit 3e2c326301aff138214c1d25630edb360459c0fd +Subproject commit 08669da8509059980dc964976ee1ca60c84f5c8a diff --git a/deps/relayer b/deps/relayer index 0136134766..e95dd80608 160000 --- a/deps/relayer +++ b/deps/relayer @@ -1 +1 @@ -Subproject commit 0136134766142f133f263f3bba72d7077e7bc2c1 +Subproject commit e95dd80608536c31d37354bdd7f7ec46a2172009 diff --git a/go.mod b/go.mod index 9914d90a87..12e752a244 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Stride-Labs/stride/v13 +module github.com/Stride-Labs/stride/v14 go 1.19 diff --git a/proto/cosmos/staking/v1beta1/lsm_tx.proto b/proto/cosmos/staking/v1beta1/lsm_tx.proto index d6db580e26..a2df937995 100644 --- a/proto/cosmos/staking/v1beta1/lsm_tx.proto +++ b/proto/cosmos/staking/v1beta1/lsm_tx.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; // Given SDK version conflicts between gaia with LSM and Stride, // we can't import the RedeemTokensForShares type diff --git a/proto/cosmwasm/wasm/v1/cosmwasm.proto b/proto/cosmwasm/wasm/v1/cosmwasm.proto index 4f33841f7f..c0e0c27a86 100644 --- a/proto/cosmwasm/wasm/v1/cosmwasm.proto +++ b/proto/cosmwasm/wasm/v1/cosmwasm.proto @@ -4,7 +4,7 @@ package cosmwasm.wasm.v1; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // MsgExecuteContract submits the given message data to a smart contract message MsgExecuteContract { diff --git a/proto/stride/autopilot/genesis.proto b/proto/stride/autopilot/genesis.proto index 69b7ab39fb..b968ba022c 100644 --- a/proto/stride/autopilot/genesis.proto +++ b/proto/stride/autopilot/genesis.proto @@ -4,7 +4,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/autopilot/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/autopilot/params.proto b/proto/stride/autopilot/params.proto index 7ca29d1850..da9993cbc7 100644 --- a/proto/stride/autopilot/params.proto +++ b/proto/stride/autopilot/params.proto @@ -3,7 +3,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/autopilot/types"; // Params defines the parameters for the module. // next id: 1 diff --git a/proto/stride/autopilot/query.proto b/proto/stride/autopilot/query.proto index 8e6a41474c..298d603af2 100644 --- a/proto/stride/autopilot/query.proto +++ b/proto/stride/autopilot/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/autopilot/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/claim.proto b/proto/stride/claim/claim.proto index a604e9375e..7e59c1d032 100644 --- a/proto/stride/claim/claim.proto +++ b/proto/stride/claim/claim.proto @@ -3,7 +3,7 @@ package stride.claim; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; enum Action { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/claim/genesis.proto b/proto/stride/claim/genesis.proto index 7a905ee4d0..46055bbb6f 100644 --- a/proto/stride/claim/genesis.proto +++ b/proto/stride/claim/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/claim/claim.proto"; import "stride/claim/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/claim/params.proto b/proto/stride/claim/params.proto index 45654bea5e..2d88f661bc 100644 --- a/proto/stride/claim/params.proto +++ b/proto/stride/claim/params.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; // Params defines the claim module's parameters. message Params { repeated Airdrop airdrops = 1; } diff --git a/proto/stride/claim/query.proto b/proto/stride/claim/query.proto index 8c5a10e26e..bd772fedcb 100644 --- a/proto/stride/claim/query.proto +++ b/proto/stride/claim/query.proto @@ -9,7 +9,7 @@ import "stride/claim/params.proto"; import "stride/vesting/vesting.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/tx.proto b/proto/stride/claim/tx.proto index 2dff99bb8b..76b7ee2205 100644 --- a/proto/stride/claim/tx.proto +++ b/proto/stride/claim/tx.proto @@ -4,7 +4,7 @@ package stride.claim; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/epochs/genesis.proto b/proto/stride/epochs/genesis.proto index 5d97665214..8f9a5b5d66 100755 --- a/proto/stride/epochs/genesis.proto +++ b/proto/stride/epochs/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/epochs/types"; message EpochInfo { string identifier = 1; diff --git a/proto/stride/epochs/query.proto b/proto/stride/epochs/query.proto index 01fe42f902..342f903d6d 100644 --- a/proto/stride/epochs/query.proto +++ b/proto/stride/epochs/query.proto @@ -6,7 +6,7 @@ import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "stride/epochs/genesis.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/epochs/types"; // Query defines the gRPC querier service. service Query { @@ -51,7 +51,7 @@ message QueryEpochInfoResponse { // import "epochs/params.proto"; // // this line is used by starport scaffolding # 1 -// option go_package = "github.com/Stride-Labs/stride/v13/x/epochs/types"; +// option go_package = "github.com/Stride-Labs/stride/v14/x/epochs/types"; // // Query defines the gRPC querier service. // service Query { diff --git a/proto/stride/icacallbacks/callback_data.proto b/proto/stride/icacallbacks/callback_data.proto index b4925f91e6..1277b4064c 100755 --- a/proto/stride/icacallbacks/callback_data.proto +++ b/proto/stride/icacallbacks/callback_data.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icacallbacks; -option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; message CallbackData { string callback_key = 1; diff --git a/proto/stride/icacallbacks/genesis.proto b/proto/stride/icacallbacks/genesis.proto index 1495664e4f..a37a2e5e52 100755 --- a/proto/stride/icacallbacks/genesis.proto +++ b/proto/stride/icacallbacks/genesis.proto @@ -6,7 +6,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; // GenesisState defines the icacallbacks module's genesis state. message GenesisState { diff --git a/proto/stride/icacallbacks/packet.proto b/proto/stride/icacallbacks/packet.proto index 4210959642..188a3d42be 100755 --- a/proto/stride/icacallbacks/packet.proto +++ b/proto/stride/icacallbacks/packet.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; message IcacallbacksPacketData { oneof packet { diff --git a/proto/stride/icacallbacks/params.proto b/proto/stride/icacallbacks/params.proto index b247fd1854..ee846c7ed1 100755 --- a/proto/stride/icacallbacks/params.proto +++ b/proto/stride/icacallbacks/params.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; // Params defines the parameters for the module. message Params { option (gogoproto.goproto_stringer) = false; } diff --git a/proto/stride/icacallbacks/query.proto b/proto/stride/icacallbacks/query.proto index 776d3017d6..82c28af0ee 100644 --- a/proto/stride/icacallbacks/query.proto +++ b/proto/stride/icacallbacks/query.proto @@ -8,7 +8,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icacallbacks/tx.proto b/proto/stride/icacallbacks/tx.proto index 9f162ad81b..4a3c247b25 100755 --- a/proto/stride/icacallbacks/tx.proto +++ b/proto/stride/icacallbacks/tx.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/tx/import -option go_package = "github.com/Stride-Labs/stride/v13/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/icaoracle/callbacks.proto b/proto/stride/icaoracle/callbacks.proto index 024ae6952c..6f22b692c9 100644 --- a/proto/stride/icaoracle/callbacks.proto +++ b/proto/stride/icaoracle/callbacks.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // Callback data for instantiating an oracle message InstantiateOracleCallback { string oracle_chain_id = 1; } diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto index 3f396f3ef6..2f0137a566 100644 --- a/proto/stride/icaoracle/contract.proto +++ b/proto/stride/icaoracle/contract.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icaoracle; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // InstanitateOracleContract is the contract-specific instantiate message message MsgInstantiateOracleContract { diff --git a/proto/stride/icaoracle/genesis.proto b/proto/stride/icaoracle/genesis.proto index ffeb32f5b1..9b699ae95b 100644 --- a/proto/stride/icaoracle/genesis.proto +++ b/proto/stride/icaoracle/genesis.proto @@ -4,7 +4,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // Params defines the icaoracle module parameters. message Params {} diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto index 1bf9b5a279..4bbee1d959 100644 --- a/proto/stride/icaoracle/icaoracle.proto +++ b/proto/stride/icaoracle/icaoracle.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // Oracle structure stores context about the CW oracle sitting a different chain message Oracle { diff --git a/proto/stride/icaoracle/query.proto b/proto/stride/icaoracle/query.proto index 5a8d21a4d0..1b56cc2516 100644 --- a/proto/stride/icaoracle/query.proto +++ b/proto/stride/icaoracle/query.proto @@ -5,7 +5,7 @@ import "stride/icaoracle/icaoracle.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto index 76745b9530..1413c8109b 100644 --- a/proto/stride/icaoracle/tx.proto +++ b/proto/stride/icaoracle/tx.proto @@ -5,7 +5,7 @@ import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/genesis.proto b/proto/stride/interchainquery/v1/genesis.proto index cabc3ff306..23edd61403 100644 --- a/proto/stride/interchainquery/v1/genesis.proto +++ b/proto/stride/interchainquery/v1/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/interchainquery/types"; enum TimeoutPolicy { REJECT_QUERY_RESPONSE = 0; diff --git a/proto/stride/interchainquery/v1/messages.proto b/proto/stride/interchainquery/v1/messages.proto index 0d4461c85f..18cbe785cc 100755 --- a/proto/stride/interchainquery/v1/messages.proto +++ b/proto/stride/interchainquery/v1/messages.proto @@ -6,7 +6,7 @@ import "cosmos_proto/cosmos.proto"; import "google/api/annotations.proto"; import "tendermint/crypto/proof.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/interchainquery/types"; // Msg defines the interchainquery Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/query.proto b/proto/stride/interchainquery/v1/query.proto index 47f36057d5..805e348816 100644 --- a/proto/stride/interchainquery/v1/query.proto +++ b/proto/stride/interchainquery/v1/query.proto @@ -5,7 +5,7 @@ import "stride/interchainquery/v1/genesis.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/interchainquery/types"; service QueryService { rpc PendingQueries(QueryPendingQueriesRequest) diff --git a/proto/stride/mint/v1beta1/genesis.proto b/proto/stride/mint/v1beta1/genesis.proto index d6859d3b79..932a071705 100755 --- a/proto/stride/mint/v1beta1/genesis.proto +++ b/proto/stride/mint/v1beta1/genesis.proto @@ -4,7 +4,7 @@ package stride.mint.v1beta1; import "gogoproto/gogo.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/mint/types"; // GenesisState defines the mint module's genesis state. message GenesisState { diff --git a/proto/stride/mint/v1beta1/mint.proto b/proto/stride/mint/v1beta1/mint.proto index deea92eebb..c65080ca1f 100755 --- a/proto/stride/mint/v1beta1/mint.proto +++ b/proto/stride/mint/v1beta1/mint.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.mint.v1beta1; -option go_package = "github.com/Stride-Labs/stride/v13/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/mint/types"; import "gogoproto/gogo.proto"; diff --git a/proto/stride/mint/v1beta1/query.proto b/proto/stride/mint/v1beta1/query.proto index 3b3f9efe64..957b26cb4d 100755 --- a/proto/stride/mint/v1beta1/query.proto +++ b/proto/stride/mint/v1beta1/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/mint/types"; // Query provides defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/genesis.proto b/proto/stride/ratelimit/genesis.proto index a5191bb812..d4bbf84c82 100644 --- a/proto/stride/ratelimit/genesis.proto +++ b/proto/stride/ratelimit/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/ratelimit/params.proto"; import "stride/ratelimit/ratelimit.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; // GenesisState defines the ratelimit module's genesis state. message GenesisState { diff --git a/proto/stride/ratelimit/gov.proto b/proto/stride/ratelimit/gov.proto index 67192df01f..a7d0cddcbc 100644 --- a/proto/stride/ratelimit/gov.proto +++ b/proto/stride/ratelimit/gov.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; message AddRateLimitProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/ratelimit/params.proto b/proto/stride/ratelimit/params.proto index 20d7ac6e2a..841536ef97 100644 --- a/proto/stride/ratelimit/params.proto +++ b/proto/stride/ratelimit/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.ratelimit; -option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; // Params defines the ratelimit module's parameters. message Params {} diff --git a/proto/stride/ratelimit/query.proto b/proto/stride/ratelimit/query.proto index f550ca2606..00e699ec9b 100644 --- a/proto/stride/ratelimit/query.proto +++ b/proto/stride/ratelimit/query.proto @@ -5,7 +5,7 @@ import "stride/ratelimit/ratelimit.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/ratelimit.proto b/proto/stride/ratelimit/ratelimit.proto index 97d1a97657..549dbe39df 100644 --- a/proto/stride/ratelimit/ratelimit.proto +++ b/proto/stride/ratelimit/ratelimit.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; enum PacketDirection { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/records/callbacks.proto b/proto/stride/records/callbacks.proto index f13d2e9cef..f10fe832af 100644 --- a/proto/stride/records/callbacks.proto +++ b/proto/stride/records/callbacks.proto @@ -3,7 +3,7 @@ package stride.records; import "stride/records/records.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; message TransferCallback { uint64 deposit_record_id = 1; } diff --git a/proto/stride/records/genesis.proto b/proto/stride/records/genesis.proto index 6e17afa2db..c4a18d67ed 100644 --- a/proto/stride/records/genesis.proto +++ b/proto/stride/records/genesis.proto @@ -5,7 +5,7 @@ import "stride/records/params.proto"; import "stride/records/records.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; // GenesisState defines the records module's genesis state. message GenesisState { diff --git a/proto/stride/records/params.proto b/proto/stride/records/params.proto index d870958081..58042d0824 100644 --- a/proto/stride/records/params.proto +++ b/proto/stride/records/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.records; -option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; // Params defines the parameters for the module. message Params {} \ No newline at end of file diff --git a/proto/stride/records/query.proto b/proto/stride/records/query.proto index 2e7c0a2ea5..1037ed74be 100644 --- a/proto/stride/records/query.proto +++ b/proto/stride/records/query.proto @@ -8,7 +8,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto index 89965f17da..4b897278e1 100644 --- a/proto/stride/records/records.proto +++ b/proto/stride/records/records.proto @@ -4,7 +4,7 @@ package stride.records; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; message UserRedemptionRecord { string id = 1; // {chain_id}.{epoch}.{sender} diff --git a/proto/stride/stakeibc/address_unbonding.proto b/proto/stride/stakeibc/address_unbonding.proto index b327a02709..db6e84a5a1 100644 --- a/proto/stride/stakeibc/address_unbonding.proto +++ b/proto/stride/stakeibc/address_unbonding.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message AddressUnbonding { string address = 1; diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 49ab8a4375..11738336df 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -6,7 +6,7 @@ import "stride/records/records.proto"; import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message SplitDelegation { string validator = 1; diff --git a/proto/stride/stakeibc/epoch_tracker.proto b/proto/stride/stakeibc/epoch_tracker.proto index f7e1957a36..fca1ad90e9 100755 --- a/proto/stride/stakeibc/epoch_tracker.proto +++ b/proto/stride/stakeibc/epoch_tracker.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message EpochTracker { string epoch_identifier = 1; diff --git a/proto/stride/stakeibc/genesis.proto b/proto/stride/stakeibc/genesis.proto index ed9cdbf243..dc761f2be1 100644 --- a/proto/stride/stakeibc/genesis.proto +++ b/proto/stride/stakeibc/genesis.proto @@ -7,7 +7,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; // GenesisState defines the stakeibc module's genesis state. message GenesisState { diff --git a/proto/stride/stakeibc/gov.proto b/proto/stride/stakeibc/gov.proto index 1826ba4c71..fb86685ff2 100644 --- a/proto/stride/stakeibc/gov.proto +++ b/proto/stride/stakeibc/gov.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "gogoproto/gogo.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message AddValidatorsProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index 06a26e3fa5..c8e72aff7c 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -5,7 +5,7 @@ import "stride/stakeibc/validator.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message HostZone { string chain_id = 1; diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto index fc260fb9dd..d28e68be3f 100755 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; enum ICAAccountType { DELEGATION = 0; diff --git a/proto/stride/stakeibc/packet.proto b/proto/stride/stakeibc/packet.proto index 478cd2b46d..75b4a954f3 100755 --- a/proto/stride/stakeibc/packet.proto +++ b/proto/stride/stakeibc/packet.proto @@ -3,7 +3,7 @@ package stride.stakeibc; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message StakeibcPacketData { oneof packet { diff --git a/proto/stride/stakeibc/params.proto b/proto/stride/stakeibc/params.proto index 45605cdbd8..ae9e3ec62f 100755 --- a/proto/stride/stakeibc/params.proto +++ b/proto/stride/stakeibc/params.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; // Params defines the parameters for the module. // next id: 20 diff --git a/proto/stride/stakeibc/query.proto b/proto/stride/stakeibc/query.proto index 43c88eb5a8..f1b3afaaeb 100644 --- a/proto/stride/stakeibc/query.proto +++ b/proto/stride/stakeibc/query.proto @@ -10,7 +10,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; import "stride/stakeibc/address_unbonding.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index df49589925..d73a785298 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -4,7 +4,7 @@ package stride.stakeibc; import "stride/stakeibc/ica_account.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/stride/stakeibc/validator.proto b/proto/stride/stakeibc/validator.proto index 7fb7d6af1b..29b43dfecf 100644 --- a/proto/stride/stakeibc/validator.proto +++ b/proto/stride/stakeibc/validator.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; message Validator { string name = 1; diff --git a/proto/stride/vesting/tx.proto b/proto/stride/vesting/tx.proto index 02fc80c276..7a4f3958c1 100644 --- a/proto/stride/vesting/tx.proto +++ b/proto/stride/vesting/tx.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.vesting; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/vesting/types"; // Msg defines the bank Msg service. service Msg {} diff --git a/proto/stride/vesting/vesting.proto b/proto/stride/vesting/vesting.proto index ee04ebec56..616ec9bdad 100644 --- a/proto/stride/vesting/vesting.proto +++ b/proto/stride/vesting/vesting.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/auth/v1beta1/auth.proto"; -option go_package = "github.com/Stride-Labs/stride/v13/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v14/x/claim/vesting/types"; // BaseVestingAccount implements the VestingAccount interface. It contains all // the necessary fields needed for any vesting account implementation. diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 6181e13c46..b3afd78b24 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -26,5 +26,5 @@ cd .. # move proto files to the right places # # Note: Proto files are suffixed with the current binary version. -cp -r github.com/Stride-Labs/stride/v13/* ./ +cp -r github.com/Stride-Labs/stride/v14/* ./ rm -rf github.com diff --git a/scripts/safe_delete_pb_go_files.sh b/scripts/safe_delete_pb_go_files.sh new file mode 100644 index 0000000000..319abd640c --- /dev/null +++ b/scripts/safe_delete_pb_go_files.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Find all .pb.go files and loop through them +find . -name '*.pb.go' | while read -r file; do + # Check if the file's path contains "/migrations/" + if [[ $file != *"/migrations/"* ]]; then + # Delete the file if it's not in a migrations directory + echo "Deleting $file" + rm "$file" + else + echo "Skipping $file" + fi +done diff --git a/testutil/keeper/claim.go b/testutil/keeper/claim.go index 2a8d055b85..a9750be90f 100644 --- a/testutil/keeper/claim.go +++ b/testutil/keeper/claim.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/claim/keeper" + strideapp "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/claim/keeper" ) func ClaimKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/epochs.go b/testutil/keeper/epochs.go index 1726ffca0a..b3160684ba 100644 --- a/testutil/keeper/epochs.go +++ b/testutil/keeper/epochs.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/epochs/keeper" + strideapp "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/epochs/keeper" ) func EpochsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/icacallbacks.go b/testutil/keeper/icacallbacks.go index 8061be572f..14c4cbcefd 100644 --- a/testutil/keeper/icacallbacks.go +++ b/testutil/keeper/icacallbacks.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + strideapp "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" ) func IcacallbacksKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/interchainquery.go b/testutil/keeper/interchainquery.go index 4d79592829..471333b42b 100644 --- a/testutil/keeper/interchainquery.go +++ b/testutil/keeper/interchainquery.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + strideapp "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" ) func InterchainqueryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/records.go b/testutil/keeper/records.go index a52c43b41a..16498c2e14 100644 --- a/testutil/keeper/records.go +++ b/testutil/keeper/records.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/records/keeper" + strideapp "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/records/keeper" ) func RecordsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/stakeibc.go b/testutil/keeper/stakeibc.go index 17ae2aa427..7ecb2f521a 100644 --- a/testutil/keeper/stakeibc.go +++ b/testutil/keeper/stakeibc.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + strideapp "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" ) func StakeibcKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/network/network.go b/testutil/network/network.go index bd39e0bb48..1e202f4d73 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -25,8 +25,8 @@ import ( genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - "github.com/Stride-Labs/stride/v13/app" - testutil "github.com/Stride-Labs/stride/v13/testutil" + "github.com/Stride-Labs/stride/v14/app" + testutil "github.com/Stride-Labs/stride/v14/testutil" ) type ( diff --git a/utils/cache_ctx_test.go b/utils/cache_ctx_test.go index fd053b916e..b4d2bd028e 100644 --- a/utils/cache_ctx_test.go +++ b/utils/cache_ctx_test.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) var expectedOutOfGasError = types.ErrorOutOfGas{Descriptor: "my func"} diff --git a/utils/module_account_test.go b/utils/module_account_test.go index 685999a007..c6b7ebbc5d 100644 --- a/utils/module_account_test.go +++ b/utils/module_account_test.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) func (s *UtilsTestSuite) TestCreateModuleAccount() { diff --git a/utils/utils.go b/utils/utils.go index 5a14cb896f..0ce82b7b3f 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -17,9 +17,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - config "github.com/Stride-Labs/stride/v13/cmd/strided/config" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + config "github.com/Stride-Labs/stride/v14/cmd/strided/config" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" ) func FilterDepositRecords(arr []recordstypes.DepositRecord, condition func(recordstypes.DepositRecord) bool) (ret []recordstypes.DepositRecord) { diff --git a/utils/utils_test.go b/utils/utils_test.go index 488a65cae1..b1c1cd1be8 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v14/app/apptesting" ) type UtilsTestSuite struct { diff --git a/x/autopilot/client/cli/query.go b/x/autopilot/client/cli/query.go index dea0acf6ee..17de7873fa 100644 --- a/x/autopilot/client/cli/query.go +++ b/x/autopilot/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" "github.com/cosmos/cosmos-sdk/client/flags" ) diff --git a/x/autopilot/genesis.go b/x/autopilot/genesis.go index bf979e517f..bd17e02671 100644 --- a/x/autopilot/genesis.go +++ b/x/autopilot/genesis.go @@ -3,8 +3,8 @@ package autopilot import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/autopilot/genesis_test.go b/x/autopilot/genesis_test.go index c39f328c1d..ee0d75879c 100644 --- a/x/autopilot/genesis_test.go +++ b/x/autopilot/genesis_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/autopilot" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/autopilot" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) func TestGenesis(t *testing.T) { diff --git a/x/autopilot/handler.go b/x/autopilot/handler.go index d48c1ca4ca..a706b60f0c 100644 --- a/x/autopilot/handler.go +++ b/x/autopilot/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) // NewHandler returns autopilot module messages diff --git a/x/autopilot/keeper/airdrop.go b/x/autopilot/keeper/airdrop.go index 161d88f92a..d59f5eccfe 100644 --- a/x/autopilot/keeper/airdrop.go +++ b/x/autopilot/keeper/airdrop.go @@ -11,10 +11,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) TryUpdateAirdropClaim( diff --git a/x/autopilot/keeper/airdrop_test.go b/x/autopilot/keeper/airdrop_test.go index b981a1fb60..d146d67c89 100644 --- a/x/autopilot/keeper/airdrop_test.go +++ b/x/autopilot/keeper/airdrop_test.go @@ -12,11 +12,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/autopilot" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/autopilot" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // TODO: Separate out tests cases that are not necessarily Claim or Stakeibc related, diff --git a/x/autopilot/keeper/grpc_query_params.go b/x/autopilot/keeper/grpc_query_params.go index 0199e6e070..721486d4dd 100644 --- a/x/autopilot/keeper/grpc_query_params.go +++ b/x/autopilot/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/autopilot/keeper/grpc_query_params_test.go b/x/autopilot/keeper/grpc_query_params_test.go index ea8d79b57a..ad2af8c12a 100644 --- a/x/autopilot/keeper/grpc_query_params_test.go +++ b/x/autopilot/keeper/grpc_query_params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "context" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) func (s *KeeperTestSuite) TestParamsQuery() { diff --git a/x/autopilot/keeper/keeper.go b/x/autopilot/keeper/keeper.go index 4ff8d275ea..9fc4a00581 100644 --- a/x/autopilot/keeper/keeper.go +++ b/x/autopilot/keeper/keeper.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" ) type ( diff --git a/x/autopilot/keeper/keeper_test.go b/x/autopilot/keeper/keeper_test.go index 56cd2a6b27..2d3d309012 100644 --- a/x/autopilot/keeper/keeper_test.go +++ b/x/autopilot/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) type KeeperTestSuite struct { diff --git a/x/autopilot/keeper/liquidstake.go b/x/autopilot/keeper/liquidstake.go index 18acf8e738..e33dfb754c 100644 --- a/x/autopilot/keeper/liquidstake.go +++ b/x/autopilot/keeper/liquidstake.go @@ -11,9 +11,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) TryLiquidStaking( diff --git a/x/autopilot/keeper/liquidstake_test.go b/x/autopilot/keeper/liquidstake_test.go index 1c7c8f541f..ee56b05fcf 100644 --- a/x/autopilot/keeper/liquidstake_test.go +++ b/x/autopilot/keeper/liquidstake_test.go @@ -10,16 +10,16 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordsmodule "github.com/Stride-Labs/stride/v13/x/records" + recordsmodule "github.com/Stride-Labs/stride/v14/x/records" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/autopilot" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/autopilot" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func getStakeibcPacketMetadata(address, action string) string { diff --git a/x/autopilot/keeper/params.go b/x/autopilot/keeper/params.go index 2b0e504efa..8383931403 100644 --- a/x/autopilot/keeper/params.go +++ b/x/autopilot/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) // GetParams get all parameters as types.Params diff --git a/x/autopilot/keeper/params_test.go b/x/autopilot/keeper/params_test.go index 9ddac8e487..fb3694a33a 100644 --- a/x/autopilot/keeper/params_test.go +++ b/x/autopilot/keeper/params_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) func (s *KeeperTestSuite) TestGetParams() { diff --git a/x/autopilot/module.go b/x/autopilot/module.go index 06ddc6b52e..757a48ba38 100644 --- a/x/autopilot/module.go +++ b/x/autopilot/module.go @@ -18,9 +18,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/autopilot/client/cli" - "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/client/cli" + "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) var ( diff --git a/x/autopilot/module_ibc.go b/x/autopilot/module_ibc.go index e3b3e58c08..941f5fa3a2 100644 --- a/x/autopilot/module_ibc.go +++ b/x/autopilot/module_ibc.go @@ -12,8 +12,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/Stride-Labs/stride/v13/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" ) diff --git a/x/autopilot/types/genesis.pb.go b/x/autopilot/types/genesis.pb.go index 3dd273128c..748b928f19 100644 --- a/x/autopilot/types/genesis.pb.go +++ b/x/autopilot/types/genesis.pb.go @@ -88,8 +88,8 @@ var fileDescriptor_a7e087b21fd12e65 = []byte{ 0xbb, 0x93, 0xef, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x0d, 0xd7, 0xf5, 0x49, 0x4c, - 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x37, 0x28, 0x33, 0x75, + 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, + 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb1, 0x6e, 0xe6, 0xa7, 0x17, 0x01, 0x00, 0x00, } diff --git a/x/autopilot/types/genesis_test.go b/x/autopilot/types/genesis_test.go index c9ad962c08..5bf2f2db33 100644 --- a/x/autopilot/types/genesis_test.go +++ b/x/autopilot/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/autopilot/types/params.pb.go b/x/autopilot/types/params.pb.go index e2d8895e39..36ae63ec15 100644 --- a/x/autopilot/types/params.pb.go +++ b/x/autopilot/types/params.pb.go @@ -96,8 +96,8 @@ var fileDescriptor_b0b993e9f5195319 = []byte{ 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x0e, 0xd5, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xfa, - 0xa9, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, - 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x42, 0x80, 0xf0, 0xfa, 0x00, 0x00, 0x00, + 0xa9, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, + 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x75, 0x04, 0x55, 0x22, 0xfa, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/autopilot/types/parser_test.go b/x/autopilot/types/parser_test.go index 592d42cd4d..b647d06ae4 100644 --- a/x/autopilot/types/parser_test.go +++ b/x/autopilot/types/parser_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/autopilot/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/autopilot/types" ) func init() { diff --git a/x/autopilot/types/query.pb.go b/x/autopilot/types/query.pb.go index 94a554c057..80b9c7de47 100644 --- a/x/autopilot/types/query.pb.go +++ b/x/autopilot/types/query.pb.go @@ -136,9 +136,9 @@ var fileDescriptor_1dd160550c308365 = []byte{ 0xfd, 0x60, 0xb0, 0x72, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0x1c, 0x5e, 0x77, 0xf2, 0x3d, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xe3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, - 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x1a, 0xeb, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x8a, - 0xc2, 0x9b, 0xcf, 0x01, 0x00, 0x00, + 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x9a, 0xe8, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x21, 0xcc, + 0x17, 0x49, 0xcf, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/client/cli/cli_test.go b/x/claim/client/cli/cli_test.go index 563de46a51..3a08a10396 100644 --- a/x/claim/client/cli/cli_test.go +++ b/x/claim/client/cli/cli_test.go @@ -14,23 +14,23 @@ import ( clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - strideclitestutil "github.com/Stride-Labs/stride/v13/testutil/cli" + strideclitestutil "github.com/Stride-Labs/stride/v14/testutil/cli" - "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v14/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/Stride-Labs/stride/v13/x/claim/client/cli" + "github.com/Stride-Labs/stride/v14/x/claim/client/cli" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/app" - cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" - "github.com/Stride-Labs/stride/v13/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/app" + cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" + "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) var addr1 sdk.AccAddress diff --git a/x/claim/client/cli/query.go b/x/claim/client/cli/query.go index 106e78d6c8..55e82581bf 100644 --- a/x/claim/client/cli/query.go +++ b/x/claim/client/cli/query.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/claim/client/cli/tx.go b/x/claim/client/cli/tx.go index 6ddbe5c8b0..8a6c96e832 100644 --- a/x/claim/client/cli/tx.go +++ b/x/claim/client/cli/tx.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/claim/client/cli/tx_claim_free_amount.go b/x/claim/client/cli/tx_claim_free_amount.go index 627e2da066..b9b7fa49f4 100644 --- a/x/claim/client/cli/tx_claim_free_amount.go +++ b/x/claim/client/cli/tx_claim_free_amount.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func CmdClaimFreeAmount() *cobra.Command { diff --git a/x/claim/client/cli/tx_create_airdrop.go b/x/claim/client/cli/tx_create_airdrop.go index 6255cfdbb0..cbaee23274 100644 --- a/x/claim/client/cli/tx_create_airdrop.go +++ b/x/claim/client/cli/tx_create_airdrop.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func CmdCreateAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_delete_airdrop.go b/x/claim/client/cli/tx_delete_airdrop.go index 75abd63a9f..34c3ed94ab 100644 --- a/x/claim/client/cli/tx_delete_airdrop.go +++ b/x/claim/client/cli/tx_delete_airdrop.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func CmdDeleteAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_set_airdrop_allocations.go b/x/claim/client/cli/tx_set_airdrop_allocations.go index 2fc7c45988..7227f980ce 100644 --- a/x/claim/client/cli/tx_set_airdrop_allocations.go +++ b/x/claim/client/cli/tx_set_airdrop_allocations.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func CmdSetAirdropAllocations() *cobra.Command { diff --git a/x/claim/genesis_test.go b/x/claim/genesis_test.go index ed3cf05cc9..3053af0488 100644 --- a/x/claim/genesis_test.go +++ b/x/claim/genesis_test.go @@ -9,9 +9,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/claim/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func TestGenesis(t *testing.T) { diff --git a/x/claim/handler.go b/x/claim/handler.go index 84496a6490..ddec768243 100644 --- a/x/claim/handler.go +++ b/x/claim/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/claim/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/keeper" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) // NewHandler returns claim module messages diff --git a/x/claim/keeper/claim.go b/x/claim/keeper/claim.go index adf0afc99d..14d7be0eaa 100644 --- a/x/claim/keeper/claim.go +++ b/x/claim/keeper/claim.go @@ -14,10 +14,10 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/claim/types" - vestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/claim/types" + vestingtypes "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" ) func (k Keeper) LoadAllocationData(ctx sdk.Context, allocationData string) bool { diff --git a/x/claim/keeper/claim_test.go b/x/claim/keeper/claim_test.go index 5fcc036121..5c6345860e 100644 --- a/x/claim/keeper/claim_test.go +++ b/x/claim/keeper/claim_test.go @@ -11,12 +11,12 @@ import ( vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/utils" - claimkeeper "github.com/Stride-Labs/stride/v13/x/claim/keeper" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/utils" + claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/types" - stridevestingtypes "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" + stridevestingtypes "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" ) // Test functionality for loading allocation data(csv) diff --git a/x/claim/keeper/genesis.go b/x/claim/keeper/genesis.go index ba94a8473a..25c916f340 100644 --- a/x/claim/keeper/genesis.go +++ b/x/claim/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/claim/keeper/grpc_query.go b/x/claim/keeper/grpc_query.go index 6539cd6a51..b1f95320b3 100644 --- a/x/claim/keeper/grpc_query.go +++ b/x/claim/keeper/grpc_query.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/claim/keeper/hooks.go b/x/claim/keeper/hooks.go index 820e4045ec..696ee7a709 100644 --- a/x/claim/keeper/hooks.go +++ b/x/claim/keeper/hooks.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - stakingibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + stakingibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func (k Keeper) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { diff --git a/x/claim/keeper/hooks_test.go b/x/claim/keeper/hooks_test.go index 272116361a..4a5c3a3dd8 100644 --- a/x/claim/keeper/hooks_test.go +++ b/x/claim/keeper/hooks_test.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/claim/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/claim/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" ) func (s *KeeperTestSuite) TestAfterEpochEnd() { diff --git a/x/claim/keeper/keeper.go b/x/claim/keeper/keeper.go index 87dc2d67f9..9cbc6f6aff 100644 --- a/x/claim/keeper/keeper.go +++ b/x/claim/keeper/keeper.go @@ -9,7 +9,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) // Keeper struct diff --git a/x/claim/keeper/keeper_test.go b/x/claim/keeper/keeper_test.go index 6542d73d6e..d9bae83d4f 100644 --- a/x/claim/keeper/keeper_test.go +++ b/x/claim/keeper/keeper_test.go @@ -12,9 +12,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/claim/types" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/claim/types" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" ) type KeeperTestSuite struct { diff --git a/x/claim/keeper/msg_server.go b/x/claim/keeper/msg_server.go index 24203b695b..4cc95a46d9 100644 --- a/x/claim/keeper/msg_server.go +++ b/x/claim/keeper/msg_server.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) type msgServer struct { diff --git a/x/claim/keeper/msg_server_test.go b/x/claim/keeper/msg_server_test.go index 9f415f14e5..cd8ca16281 100644 --- a/x/claim/keeper/msg_server_test.go +++ b/x/claim/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/claim/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/keeper" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) func (suite *KeeperTestSuite) TestSetAirdropAllocationsForMultiAirdrops() { diff --git a/x/claim/keeper/params.go b/x/claim/keeper/params.go index b6fced202c..3cacf5ae78 100644 --- a/x/claim/keeper/params.go +++ b/x/claim/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) // GetParams get params diff --git a/x/claim/migrations/v2/convert.go b/x/claim/migrations/v2/convert.go index 8eeb2827c7..80fe5c7a44 100644 --- a/x/claim/migrations/v2/convert.go +++ b/x/claim/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) func convertToNewAirdrop(oldAirdrop oldclaimtypes.Airdrop) claimtypes.Airdrop { diff --git a/x/claim/migrations/v2/convert_test.go b/x/claim/migrations/v2/convert_test.go index 94d6a74796..6206a95d98 100644 --- a/x/claim/migrations/v2/convert_test.go +++ b/x/claim/migrations/v2/convert_test.go @@ -10,8 +10,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) func TestConvertToNewAirdrop(t *testing.T) { diff --git a/x/claim/migrations/v2/migrations.go b/x/claim/migrations/v2/migrations.go index 0d925ea19d..fac6c458d6 100644 --- a/x/claim/migrations/v2/migrations.go +++ b/x/claim/migrations/v2/migrations.go @@ -7,8 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldclaimtypes "github.com/Stride-Labs/stride/v13/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v13/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" ) func migrateClaimParams(store sdk.KVStore, cdc codec.Codec) error { diff --git a/x/claim/module.go b/x/claim/module.go index e44a6ed4f9..e81e4e1832 100644 --- a/x/claim/module.go +++ b/x/claim/module.go @@ -16,9 +16,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/claim/client/cli" - "github.com/Stride-Labs/stride/v13/x/claim/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/types" + "github.com/Stride-Labs/stride/v14/x/claim/client/cli" + "github.com/Stride-Labs/stride/v14/x/claim/keeper" + "github.com/Stride-Labs/stride/v14/x/claim/types" ) var ( diff --git a/x/claim/types/claim.pb.go b/x/claim/types/claim.pb.go index bc4799dba4..69ac0afed3 100644 --- a/x/claim/types/claim.pb.go +++ b/x/claim/types/claim.pb.go @@ -127,32 +127,32 @@ func init() { func init() { proto.RegisterFile("stride/claim/claim.proto", fileDescriptor_b4747d999b9dc0da) } var fileDescriptor_b4747d999b9dc0da = []byte{ - // 392 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0xcf, 0x0e, 0xd2, 0x30, - 0x00, 0xc6, 0x37, 0x20, 0xa8, 0x45, 0x05, 0xab, 0x86, 0x81, 0x71, 0x23, 0x3b, 0x18, 0x62, 0x64, - 0x8b, 0xe1, 0xe6, 0xc5, 0x0c, 0x18, 0x66, 0x71, 0xd1, 0x38, 0x30, 0x26, 0x5e, 0x96, 0xb1, 0xd6, - 0xd1, 0xc8, 0xe8, 0xb2, 0xd6, 0x3f, 0xbc, 0x81, 0x47, 0xdf, 0xc1, 0x9b, 0x4f, 0xc2, 0x91, 0xa3, - 0xf1, 0xb0, 0x18, 0x78, 0x83, 0x3d, 0x81, 0xa1, 0x2b, 0xc6, 0xe8, 0x65, 0x5b, 0x7e, 0xbf, 0x2f, - 0x5f, 0xd6, 0x7e, 0x40, 0x63, 0x3c, 0x27, 0x08, 0xdb, 0xf1, 0x26, 0x22, 0x69, 0xf5, 0xb4, 0xb2, - 0x9c, 0x72, 0x0a, 0xaf, 0x57, 0xc6, 0x12, 0xac, 0x7f, 0x27, 0xa1, 0x09, 0x15, 0xc2, 0x3e, 0x7f, - 0x55, 0x19, 0xf3, 0x7b, 0x0d, 0xb4, 0xa6, 0x67, 0x1f, 0xe0, 0x98, 0xe6, 0x08, 0xfa, 0x00, 0x46, - 0x24, 0x47, 0x39, 0xcd, 0x42, 0x82, 0xf0, 0x96, 0x93, 0x77, 0x04, 0xe7, 0x9a, 0x3a, 0x50, 0x87, - 0xd7, 0x26, 0xf7, 0xcb, 0xc2, 0xe8, 0xed, 0xa2, 0x74, 0xf3, 0xc4, 0xfc, 0x3f, 0x63, 0x06, 0xb7, - 0x24, 0xf4, 0xfe, 0x30, 0xf8, 0x08, 0x5c, 0x89, 0x10, 0xca, 0x31, 0x63, 0x5a, 0x4d, 0x54, 0xc0, - 0xb2, 0x30, 0x6e, 0xca, 0x8a, 0x4a, 0x98, 0xc1, 0x25, 0x02, 0xdf, 0x80, 0xe6, 0x27, 0x4c, 0x92, - 0x35, 0xd7, 0xea, 0x22, 0xfc, 0x74, 0x5f, 0x18, 0xca, 0xcf, 0xc2, 0x78, 0x90, 0x10, 0xbe, 0xfe, - 0xb0, 0xb2, 0x62, 0x9a, 0xda, 0x31, 0x65, 0x29, 0x65, 0xf2, 0x35, 0x62, 0xe8, 0xbd, 0xcd, 0x77, - 0x19, 0x66, 0xd6, 0x0c, 0xc7, 0x65, 0x61, 0xdc, 0xa8, 0xaa, 0xab, 0x16, 0x33, 0x90, 0x75, 0x70, - 0x0e, 0x3a, 0x51, 0xcc, 0x09, 0xdd, 0x86, 0x31, 0x4d, 0xb3, 0x0d, 0xe6, 0x18, 0x69, 0x8d, 0x41, - 0x7d, 0x78, 0x75, 0x72, 0xaf, 0x2c, 0x8c, 0xae, 0xfc, 0x9f, 0x7f, 0x12, 0x66, 0xd0, 0xae, 0xd0, - 0xf4, 0x42, 0x1e, 0x2e, 0x40, 0xd3, 0x11, 0x08, 0xb6, 0x41, 0xcb, 0x99, 0x2e, 0xbd, 0x97, 0x2f, - 0xc2, 0x79, 0xe0, 0xba, 0x1d, 0x05, 0x76, 0xc1, 0x6d, 0x09, 0x7c, 0xef, 0xd5, 0x6b, 0x6f, 0x16, - 0x2e, 0x96, 0xce, 0x73, 0xb7, 0xa3, 0xc2, 0x1e, 0xb8, 0x2b, 0xc5, 0xcc, 0xf5, 0xdd, 0x67, 0xce, - 0xd2, 0x95, 0xaa, 0xd6, 0x6f, 0x7c, 0xf9, 0xa6, 0x2b, 0x13, 0x6f, 0x7f, 0xd4, 0xd5, 0xc3, 0x51, - 0x57, 0x7f, 0x1d, 0x75, 0xf5, 0xeb, 0x49, 0x57, 0x0e, 0x27, 0x5d, 0xf9, 0x71, 0xd2, 0x95, 0xb7, - 0xf6, 0x5f, 0xe7, 0x5e, 0x88, 0x29, 0x47, 0x7e, 0xb4, 0x62, 0xb6, 0x1c, 0xfc, 0xe3, 0xe3, 0xb1, - 0xfd, 0x59, 0xce, 0x2e, 0x2e, 0x61, 0xd5, 0x14, 0x9b, 0x8e, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, - 0xe3, 0x33, 0x39, 0xfe, 0x13, 0x02, 0x00, 0x00, + // 394 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0xce, 0xd2, 0x40, + 0x00, 0xc5, 0x5b, 0x20, 0xa8, 0x83, 0x0a, 0x8e, 0x1a, 0x0a, 0xc6, 0x96, 0x74, 0x61, 0x88, 0x91, + 0x36, 0x46, 0x57, 0x6e, 0x4c, 0x81, 0x62, 0x1a, 0x1b, 0x8d, 0x05, 0x63, 0xe2, 0xa6, 0x29, 0x9d, + 0xb1, 0x4c, 0xa4, 0x4c, 0xd3, 0x19, 0xff, 0x70, 0x03, 0x97, 0xde, 0xc1, 0x9d, 0x27, 0x61, 0xc9, + 0xd2, 0xb8, 0x68, 0x0c, 0xdc, 0xa0, 0x27, 0x30, 0x4c, 0x07, 0x63, 0xbe, 0x6f, 0xd3, 0x36, 0xbf, + 0xdf, 0xcb, 0x4b, 0x67, 0x1e, 0xd0, 0x18, 0xcf, 0x09, 0xc2, 0x76, 0xbc, 0x8e, 0x48, 0x5a, 0x3d, + 0xad, 0x2c, 0xa7, 0x9c, 0xc2, 0xeb, 0x95, 0xb1, 0x04, 0xeb, 0xdf, 0x49, 0x68, 0x42, 0x85, 0xb0, + 0x4f, 0x5f, 0x55, 0xc6, 0xfc, 0x59, 0x03, 0xad, 0xc9, 0xc9, 0x07, 0x38, 0xa6, 0x39, 0x82, 0x3e, + 0x80, 0x11, 0xc9, 0x51, 0x4e, 0xb3, 0x90, 0x20, 0xbc, 0xe1, 0xe4, 0x03, 0xc1, 0xb9, 0xa6, 0x0e, + 0xd4, 0xe1, 0xb5, 0xf1, 0xfd, 0xb2, 0x30, 0x7a, 0xdb, 0x28, 0x5d, 0x3f, 0x33, 0x2f, 0x67, 0xcc, + 0xe0, 0x96, 0x84, 0xde, 0x3f, 0x06, 0x1f, 0x81, 0x2b, 0x11, 0x42, 0x39, 0x66, 0x4c, 0xab, 0x89, + 0x0a, 0x58, 0x16, 0xc6, 0x4d, 0x59, 0x51, 0x09, 0x33, 0x38, 0x47, 0xe0, 0x3b, 0xd0, 0xfc, 0x82, + 0x49, 0xb2, 0xe2, 0x5a, 0x5d, 0x84, 0x9f, 0xef, 0x0a, 0x43, 0xf9, 0x5d, 0x18, 0x0f, 0x12, 0xc2, + 0x57, 0x9f, 0x96, 0x56, 0x4c, 0x53, 0x3b, 0xa6, 0x2c, 0xa5, 0x4c, 0xbe, 0x46, 0x0c, 0x7d, 0xb4, + 0xf9, 0x36, 0xc3, 0xcc, 0x9a, 0xe2, 0xb8, 0x2c, 0x8c, 0x1b, 0x55, 0x75, 0xd5, 0x62, 0x06, 0xb2, + 0x0e, 0xce, 0x40, 0x27, 0x8a, 0x39, 0xa1, 0x9b, 0x30, 0xa6, 0x69, 0xb6, 0xc6, 0x1c, 0x23, 0xad, + 0x31, 0xa8, 0x0f, 0xaf, 0x8e, 0xef, 0x95, 0x85, 0xd1, 0x95, 0xff, 0x73, 0x21, 0x61, 0x06, 0xed, + 0x0a, 0x4d, 0xce, 0xe4, 0xe1, 0x1c, 0x34, 0x1d, 0x81, 0x60, 0x1b, 0xb4, 0x9c, 0xc9, 0xc2, 0x7b, + 0xfd, 0x2a, 0x9c, 0x05, 0xae, 0xdb, 0x51, 0x60, 0x17, 0xdc, 0x96, 0xc0, 0xf7, 0xde, 0xbc, 0xf5, + 0xa6, 0xe1, 0x7c, 0xe1, 0xbc, 0x74, 0x3b, 0x2a, 0xec, 0x81, 0xbb, 0x52, 0x4c, 0x5d, 0xdf, 0x7d, + 0xe1, 0x2c, 0x5c, 0xa9, 0x6a, 0xfd, 0xc6, 0xb7, 0x1f, 0xba, 0x32, 0xf6, 0x76, 0x07, 0x5d, 0xdd, + 0x1f, 0x74, 0xf5, 0xcf, 0x41, 0x57, 0xbf, 0x1f, 0x75, 0x65, 0x7f, 0xd4, 0x95, 0x5f, 0x47, 0x5d, + 0x79, 0x6f, 0xff, 0x77, 0xee, 0xb9, 0x98, 0x72, 0xe4, 0x47, 0x4b, 0x66, 0xcb, 0xc1, 0x3f, 0x3f, + 0x7e, 0x6a, 0x7f, 0x95, 0xb3, 0x8b, 0x4b, 0x58, 0x36, 0xc5, 0xa6, 0x4f, 0xfe, 0x06, 0x00, 0x00, + 0xff, 0xff, 0x4d, 0xab, 0x80, 0x88, 0x13, 0x02, 0x00, 0x00, } func (m *ClaimRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/expected_keepers.go b/x/claim/types/expected_keepers.go index cfd727cf20..fc210f4177 100644 --- a/x/claim/types/expected_keepers.go +++ b/x/claim/types/expected_keepers.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // BankKeeper defines the banking contract that must be fulfilled when diff --git a/x/claim/types/genesis.pb.go b/x/claim/types/genesis.pb.go index 31e44b4221..25eaeec05e 100644 --- a/x/claim/types/genesis.pb.go +++ b/x/claim/types/genesis.pb.go @@ -100,9 +100,9 @@ var fileDescriptor_ecf5648202726596 = []byte{ 0xa1, 0xb4, 0xd8, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x56, 0xe9, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xac, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xce, 0xd7, - 0xbd, 0x0a, 0x7c, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xa2, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x60, 0x4f, + 0x04, 0x7c, 0x7c, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/msgs.go b/x/claim/types/msgs.go index 197a8d543b..db0031d208 100644 --- a/x/claim/types/msgs.go +++ b/x/claim/types/msgs.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) // Msg type for MsgSetAirdropAllocations diff --git a/x/claim/types/params.pb.go b/x/claim/types/params.pb.go index fa276af671..de6c84c15c 100644 --- a/x/claim/types/params.pb.go +++ b/x/claim/types/params.pb.go @@ -183,36 +183,36 @@ var fileDescriptor_dd7ac871d3875dc3 = []byte{ // 516 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x6d, 0xd8, 0x68, 0x8b, 0x3b, 0xc1, 0x66, 0x40, 0xa4, 0x95, 0x48, 0xaa, 0x48, 0xa0, 0x4a, - 0xb0, 0x58, 0xdb, 0x6e, 0x70, 0x6a, 0x35, 0x90, 0x2a, 0xed, 0x80, 0xd2, 0x9d, 0xb8, 0x44, 0x4e, - 0xed, 0x76, 0x16, 0x4d, 0x1c, 0xd9, 0x2e, 0xa2, 0xbf, 0x80, 0xeb, 0x8e, 0xfc, 0x1e, 0x4e, 0x3b, - 0xee, 0x88, 0x38, 0x04, 0xd4, 0xde, 0x38, 0xee, 0x17, 0x20, 0x3b, 0x4e, 0xd7, 0xad, 0xa7, 0xd6, - 0xef, 0xbd, 0xef, 0x7b, 0xef, 0xf3, 0x17, 0x83, 0xb6, 0x54, 0x82, 0x11, 0x8a, 0xc6, 0x33, 0xcc, - 0x52, 0x94, 0x63, 0x81, 0x53, 0x19, 0xe6, 0x82, 0x2b, 0x0e, 0xf7, 0x4a, 0x2a, 0x34, 0x54, 0xe7, - 0xd9, 0x94, 0x4f, 0xb9, 0x21, 0x90, 0xfe, 0x57, 0x6a, 0x3a, 0xde, 0x94, 0xf3, 0xe9, 0x8c, 0x22, - 0x73, 0x4a, 0xe6, 0x13, 0x44, 0xe6, 0x02, 0x2b, 0xc6, 0x33, 0xcb, 0xfb, 0xf7, 0x79, 0xc5, 0x52, - 0x2a, 0x15, 0x4e, 0xf3, 0x52, 0x10, 0xbc, 0x07, 0xf5, 0x4f, 0xc6, 0x14, 0x1e, 0x81, 0x26, 0x66, - 0x82, 0x08, 0x9e, 0x4b, 0xd7, 0xe9, 0xee, 0xf4, 0x5a, 0xc7, 0xcf, 0xc3, 0xcd, 0x04, 0x61, 0xbf, - 0x64, 0xa3, 0xb5, 0x2c, 0xf8, 0xb9, 0x0b, 0x1a, 0x16, 0x85, 0x67, 0x00, 0x5a, 0x3c, 0x66, 0x84, - 0x66, 0x8a, 0x4d, 0x18, 0x15, 0xae, 0xd3, 0x75, 0x7a, 0x8f, 0x06, 0x2f, 0x6f, 0x0a, 0xbf, 0xbd, - 0xc0, 0xe9, 0xec, 0x5d, 0xb0, 0xad, 0x09, 0xa2, 0x03, 0x0b, 0x0e, 0xd7, 0x18, 0x6c, 0x83, 0xe6, - 0xf8, 0x02, 0xb3, 0x2c, 0x66, 0xc4, 0x6d, 0xe8, 0x1e, 0x51, 0xc3, 0x9c, 0x87, 0x04, 0xf2, 0x5b, - 0x23, 0xa9, 0xb0, 0x50, 0xb1, 0x1e, 0xc9, 0x7d, 0xd0, 0x75, 0x7a, 0xad, 0xe3, 0x4e, 0x58, 0xce, - 0x1b, 0x56, 0xf3, 0x86, 0xe7, 0xd5, 0xbc, 0x83, 0x57, 0x57, 0x85, 0x5f, 0xdb, 0x0e, 0x72, 0xdb, - 0x23, 0xb8, 0xfc, 0xe3, 0x3b, 0xd1, 0xbe, 0x25, 0x46, 0x1a, 0xd7, 0xd5, 0xf0, 0xbb, 0x03, 0x2a, - 0x30, 0xae, 0xae, 0xd7, 0xdd, 0x31, 0x7e, 0xed, 0x2d, 0xbf, 0x53, 0x2b, 0x18, 0xf4, 0xb5, 0xdd, - 0xbf, 0xc2, 0xef, 0xdc, 0x2f, 0x7d, 0xcb, 0x53, 0xa6, 0x68, 0x9a, 0xab, 0xc5, 0x4d, 0xe1, 0xbf, - 0xb8, 0x1b, 0xa6, 0xd2, 0x04, 0x3f, 0x74, 0x94, 0x27, 0x16, 0xae, 0x7a, 0x42, 0x1f, 0xb4, 0xcc, - 0x2a, 0x62, 0x42, 0x33, 0x9e, 0xba, 0xbb, 0xe6, 0x62, 0x80, 0x81, 0x4e, 0x35, 0x02, 0x11, 0x78, - 0x4a, 0x98, 0x5e, 0x5a, 0x32, 0x57, 0x5c, 0xc4, 0x98, 0x10, 0x41, 0xa5, 0x74, 0x1f, 0x1a, 0x21, - 0xdc, 0xa0, 0xfa, 0x25, 0x03, 0xcf, 0xc1, 0x63, 0x53, 0x4e, 0x49, 0x2c, 0x79, 0x3c, 0xc1, 0xc2, - 0xad, 0x9b, 0x8d, 0x85, 0x3a, 0xfd, 0xef, 0xc2, 0x7f, 0x3d, 0x65, 0xea, 0x62, 0x9e, 0x84, 0x63, - 0x9e, 0xa2, 0x31, 0x97, 0x29, 0x97, 0xf6, 0xe7, 0x50, 0x92, 0x2f, 0x48, 0x2d, 0x72, 0x2a, 0xc3, - 0x61, 0xa6, 0xa2, 0x3d, 0xdb, 0x65, 0xc4, 0x3f, 0x62, 0x01, 0xdf, 0x80, 0x03, 0x3c, 0x57, 0x3c, - 0x67, 0x33, 0xae, 0x62, 0x9a, 0xe1, 0x64, 0x46, 0x89, 0xdb, 0xec, 0x3a, 0xbd, 0x66, 0xb4, 0xbf, - 0x26, 0x3e, 0x94, 0xf8, 0x60, 0x78, 0xb5, 0xf4, 0x9c, 0xeb, 0xa5, 0xe7, 0xfc, 0x5d, 0x7a, 0xce, - 0xe5, 0xca, 0xab, 0x5d, 0xaf, 0xbc, 0xda, 0xaf, 0x95, 0x57, 0xfb, 0x8c, 0x36, 0xcc, 0x47, 0xe6, - 0x4b, 0x3c, 0x3c, 0xc3, 0x89, 0x44, 0xf6, 0xc9, 0x7c, 0x3d, 0x3a, 0x41, 0xdf, 0xec, 0xc3, 0x31, - 0x49, 0x92, 0xba, 0x59, 0xc3, 0xc9, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xa1, 0xd8, 0xdc, + 0xb0, 0x58, 0x1b, 0x9c, 0xe0, 0xd4, 0x6a, 0x20, 0x55, 0xda, 0x01, 0xa5, 0x3b, 0x71, 0x89, 0x9c, + 0xda, 0xed, 0x2c, 0x9a, 0x38, 0xb2, 0x5d, 0x44, 0x7f, 0x01, 0xd7, 0x1d, 0xf9, 0x3d, 0x9c, 0x76, + 0xdc, 0x11, 0x71, 0x08, 0xa8, 0xbd, 0x71, 0xdc, 0x2f, 0x40, 0x76, 0x9c, 0xae, 0x5b, 0x4f, 0xad, + 0xdf, 0x7b, 0xdf, 0xf7, 0xde, 0xe7, 0x2f, 0x06, 0x6d, 0xa9, 0x04, 0x23, 0x14, 0x8d, 0x67, 0x98, + 0xa5, 0x28, 0xc7, 0x02, 0xa7, 0x32, 0xcc, 0x05, 0x57, 0x1c, 0xee, 0x95, 0x54, 0x68, 0xa8, 0xce, + 0x93, 0x29, 0x9f, 0x72, 0x43, 0x20, 0xfd, 0xaf, 0xd4, 0x74, 0xbc, 0x29, 0xe7, 0xd3, 0x19, 0x45, + 0xe6, 0x94, 0xcc, 0x27, 0x88, 0xcc, 0x05, 0x56, 0x8c, 0x67, 0x96, 0xf7, 0xef, 0xf2, 0x8a, 0xa5, + 0x54, 0x2a, 0x9c, 0xe6, 0xa5, 0x20, 0x78, 0x0f, 0xea, 0x9f, 0x8c, 0x29, 0x3c, 0x02, 0x4d, 0xcc, + 0x04, 0x11, 0x3c, 0x97, 0xae, 0xd3, 0xdd, 0xe9, 0xb5, 0x8e, 0x9f, 0x86, 0x9b, 0x09, 0xc2, 0x7e, + 0xc9, 0x46, 0x6b, 0x59, 0xf0, 0x73, 0x17, 0x34, 0x2c, 0x0a, 0x4f, 0x01, 0xb4, 0x78, 0xcc, 0x08, + 0xcd, 0x14, 0x9b, 0x30, 0x2a, 0x5c, 0xa7, 0xeb, 0xf4, 0x1e, 0x0c, 0x9e, 0x5f, 0x17, 0x7e, 0x7b, + 0x81, 0xd3, 0xd9, 0xbb, 0x60, 0x5b, 0x13, 0x44, 0x07, 0x16, 0x1c, 0xae, 0x31, 0xd8, 0x06, 0xcd, + 0xf1, 0x39, 0x66, 0x59, 0xcc, 0x88, 0xdb, 0xd0, 0x3d, 0xa2, 0x86, 0x39, 0x0f, 0x09, 0xe4, 0x37, + 0x46, 0x52, 0x61, 0xa1, 0x62, 0x3d, 0x92, 0x7b, 0xaf, 0xeb, 0xf4, 0x5a, 0xc7, 0x9d, 0xb0, 0x9c, + 0x37, 0xac, 0xe6, 0x0d, 0xcf, 0xaa, 0x79, 0x07, 0x2f, 0x2e, 0x0b, 0xbf, 0xb6, 0x1d, 0xe4, 0xa6, + 0x47, 0x70, 0xf1, 0xc7, 0x77, 0xa2, 0x7d, 0x4b, 0x8c, 0x34, 0xae, 0xab, 0xe1, 0x77, 0x07, 0x54, + 0x60, 0x5c, 0x5d, 0xaf, 0xbb, 0x63, 0xfc, 0xda, 0x5b, 0x7e, 0x27, 0x56, 0x30, 0xe8, 0x6b, 0xbb, + 0x7f, 0x85, 0xdf, 0xb9, 0x5b, 0xfa, 0x9a, 0xa7, 0x4c, 0xd1, 0x34, 0x57, 0x8b, 0xeb, 0xc2, 0x7f, + 0x76, 0x3b, 0x4c, 0xa5, 0x09, 0x7e, 0xe8, 0x28, 0x8f, 0x2c, 0x5c, 0xf5, 0x84, 0x3e, 0x68, 0x99, + 0x55, 0xc4, 0x84, 0x66, 0x3c, 0x75, 0x77, 0xcd, 0xc5, 0x00, 0x03, 0x9d, 0x68, 0x04, 0x22, 0xf0, + 0x98, 0x30, 0xbd, 0xb4, 0x64, 0xae, 0xb8, 0x88, 0x31, 0x21, 0x82, 0x4a, 0xe9, 0xde, 0x37, 0x42, + 0xb8, 0x41, 0xf5, 0x4b, 0x06, 0x9e, 0x81, 0x87, 0xa6, 0x9c, 0x92, 0x58, 0xf2, 0x78, 0x82, 0x85, + 0x5b, 0x37, 0x1b, 0x0b, 0x75, 0xfa, 0xdf, 0x85, 0xff, 0x72, 0xca, 0xd4, 0xf9, 0x3c, 0x09, 0xc7, + 0x3c, 0x45, 0x63, 0x2e, 0x53, 0x2e, 0xed, 0xcf, 0xa1, 0x24, 0x5f, 0x90, 0x5a, 0xe4, 0x54, 0x86, + 0xc3, 0x4c, 0x45, 0x7b, 0xb6, 0xcb, 0x88, 0x7f, 0xc4, 0x02, 0xbe, 0x02, 0x07, 0x78, 0xae, 0x78, + 0xce, 0x66, 0x5c, 0xc5, 0x34, 0xc3, 0xc9, 0x8c, 0x12, 0xb7, 0xd9, 0x75, 0x7a, 0xcd, 0x68, 0x7f, + 0x4d, 0x7c, 0x28, 0xf1, 0xc1, 0xf0, 0x72, 0xe9, 0x39, 0x57, 0x4b, 0xcf, 0xf9, 0xbb, 0xf4, 0x9c, + 0x8b, 0x95, 0x57, 0xbb, 0x5a, 0x79, 0xb5, 0x5f, 0x2b, 0xaf, 0xf6, 0x19, 0x6d, 0x98, 0x8f, 0xcc, + 0x97, 0x78, 0x78, 0x8a, 0x13, 0x89, 0xec, 0x93, 0xf9, 0x7a, 0xf4, 0x16, 0x7d, 0xb3, 0x0f, 0xc7, + 0x24, 0x49, 0xea, 0x66, 0x0d, 0x6f, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x39, 0x61, 0xaa, 0x55, 0x03, 0x00, 0x00, } diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index af59e53a34..6ca64fb70c 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - types2 "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + types2 "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -924,84 +924,84 @@ func init() { func init() { proto.RegisterFile("stride/claim/query.proto", fileDescriptor_baa87682a02846df) } var fileDescriptor_baa87682a02846df = []byte{ - // 1225 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x36, 0xa9, 0xbd, 0x69, 0x6c, 0x33, 0x90, - 0xc4, 0x48, 0xcd, 0x2e, 0x49, 0x10, 0x07, 0x2e, 0x80, 0xc3, 0x47, 0x83, 0x8a, 0x54, 0x36, 0x25, - 0x12, 0x5c, 0xac, 0xf1, 0xee, 0xc4, 0xac, 0xb0, 0x77, 0x9d, 0x9d, 0xd9, 0x8a, 0xa8, 0xaa, 0x10, - 0x70, 0xe0, 0x06, 0x91, 0x80, 0x1f, 0x01, 0x12, 0x07, 0x7e, 0x02, 0x07, 0xa4, 0x1e, 0x2b, 0x71, - 0xe1, 0x00, 0x29, 0x4a, 0xf8, 0x05, 0x91, 0xe0, 0x8c, 0x76, 0xe6, 0x5d, 0x67, 0xd7, 0x59, 0xd7, - 0x09, 0x12, 0xa2, 0x97, 0x38, 0x3b, 0xef, 0xd7, 0xf3, 0x7e, 0xcc, 0x33, 0x33, 0xb8, 0x28, 0x64, - 0xe8, 0xb9, 0xdc, 0x72, 0xda, 0xcc, 0xeb, 0x58, 0xbb, 0x11, 0x0f, 0xf7, 0xcc, 0x6e, 0x18, 0xc8, - 0x80, 0x4c, 0x6a, 0x89, 0xa9, 0x24, 0xc6, 0xb5, 0x56, 0xd0, 0x0a, 0x94, 0xc0, 0x8a, 0xff, 0xd3, - 0x3a, 0xc6, 0x8d, 0x56, 0x10, 0xb4, 0xda, 0xdc, 0x62, 0x5d, 0xcf, 0x62, 0xbe, 0x1f, 0x48, 0x26, - 0xbd, 0xc0, 0x17, 0x20, 0x2d, 0x3b, 0x81, 0xe8, 0x04, 0xc2, 0x6a, 0x32, 0xc1, 0xad, 0x7b, 0xab, - 0x4d, 0x2e, 0xd9, 0xaa, 0xe5, 0x04, 0x9e, 0x0f, 0xf2, 0x6c, 0x6c, 0xf5, 0x17, 0x24, 0xa5, 0x8c, - 0xa4, 0xcb, 0x42, 0xd6, 0x49, 0x9c, 0xde, 0x00, 0xd1, 0x3d, 0x2e, 0xa4, 0xe7, 0xb7, 0x92, 0x5f, - 0x90, 0x56, 0x00, 0x90, 0xfa, 0x6a, 0x46, 0x3b, 0x96, 0xf4, 0x3a, 0x5c, 0x48, 0xd6, 0xe9, 0x6a, - 0x05, 0xba, 0x8d, 0x27, 0x36, 0x62, 0xa7, 0x5b, 0x92, 0xc9, 0x48, 0x90, 0x15, 0x4c, 0x98, 0x17, - 0xba, 0x61, 0xd0, 0x6d, 0x78, 0x2e, 0xf7, 0xa5, 0xb7, 0xe3, 0xf1, 0xb0, 0x88, 0xaa, 0xa8, 0x76, - 0xc5, 0x9e, 0x01, 0xc9, 0x66, 0x4f, 0x40, 0x8a, 0xf8, 0x92, 0x82, 0xc4, 0xdd, 0xe2, 0x68, 0x15, - 0xd5, 0x2e, 0xdb, 0xc9, 0x27, 0x7d, 0x0b, 0x5f, 0x7f, 0x37, 0x2e, 0x5e, 0xca, 0xb9, 0xcd, 0x77, - 0x23, 0x2e, 0x24, 0xb9, 0x89, 0x2f, 0x31, 0xd7, 0x0d, 0xb9, 0x10, 0xda, 0x71, 0x9d, 0x1c, 0x1f, - 0x54, 0x0a, 0x7b, 0xac, 0xd3, 0x7e, 0x99, 0x82, 0x80, 0xda, 0x89, 0x0a, 0x8d, 0x70, 0xf1, 0xb4, - 0x23, 0xd1, 0x0d, 0x7c, 0xc1, 0xc9, 0xfb, 0x78, 0x52, 0xc5, 0x6b, 0x08, 0xb5, 0x5e, 0x44, 0xd5, - 0xb1, 0xda, 0xc4, 0x5a, 0xc9, 0x4c, 0x77, 0xca, 0x4c, 0x19, 0xd6, 0xe7, 0x1f, 0x1e, 0x54, 0x46, - 0x8e, 0x0f, 0x2a, 0x57, 0x75, 0xb4, 0xb4, 0x31, 0xb5, 0x27, 0x9c, 0x13, 0x4d, 0xfa, 0xf3, 0x28, - 0x9e, 0x52, 0x96, 0xef, 0x70, 0xc9, 0x5c, 0x26, 0xd9, 0x79, 0x4b, 0xf3, 0x2c, 0x9e, 0x72, 0xa2, - 0x30, 0xe4, 0xbe, 0x6c, 0x84, 0x41, 0xe4, 0xeb, 0x02, 0x5d, 0xb1, 0x27, 0x61, 0xd1, 0x8e, 0xd7, - 0x48, 0x88, 0xaf, 0x66, 0x94, 0x62, 0x2c, 0xa1, 0x2c, 0x8e, 0x55, 0x51, 0x6d, 0x62, 0xcd, 0x30, - 0x75, 0xf3, 0xcc, 0xa4, 0x79, 0xe6, 0xdd, 0xa4, 0x79, 0xf5, 0x25, 0x48, 0xc4, 0x80, 0x44, 0x4e, - 0x3b, 0xa1, 0xfb, 0x8f, 0x2b, 0xc8, 0x9e, 0x49, 0x87, 0xdb, 0x8a, 0xd7, 0x49, 0x1b, 0xcf, 0x64, - 0xd5, 0xb9, 0xef, 0x16, 0x2f, 0x0c, 0x8d, 0xf8, 0x1c, 0x44, 0x2c, 0xe6, 0x45, 0xe4, 0xbe, 0xab, - 0xe3, 0x4d, 0xa7, 0xe3, 0xbd, 0xe1, 0xbb, 0x74, 0x1e, 0x97, 0x4e, 0xda, 0x97, 0xd4, 0x12, 0x26, - 0x81, 0x7e, 0x82, 0x8d, 0x3c, 0x21, 0x74, 0x97, 0xe1, 0x82, 0x6e, 0x50, 0x07, 0x24, 0xd0, 0xdf, - 0xf9, 0x9c, 0xfe, 0x26, 0xc6, 0xf5, 0x05, 0x80, 0x39, 0x9b, 0xee, 0x70, 0xe2, 0x80, 0xda, 0x53, - 0x4e, 0x5a, 0x9b, 0x46, 0x78, 0x51, 0x01, 0x78, 0xdd, 0x8b, 0x5d, 0x36, 0x23, 0x19, 0x84, 0xaf, - 0x39, 0x4e, 0x10, 0xf9, 0xb2, 0xce, 0xda, 0xcc, 0x77, 0x78, 0x32, 0xb3, 0xb7, 0x07, 0x37, 0xbf, - 0xbe, 0x70, 0x7c, 0x50, 0x29, 0xc1, 0xf8, 0x9e, 0xd2, 0xa1, 0x39, 0xb3, 0x41, 0x7f, 0x43, 0x78, - 0x69, 0x58, 0x5c, 0x28, 0xc2, 0x8f, 0x08, 0xcf, 0xbb, 0x27, 0x5a, 0x0d, 0xa6, 0xd5, 0x1a, 0x4d, - 0xad, 0xd7, 0x1b, 0x79, 0x4d, 0x2d, 0x66, 0x4c, 0x2d, 0x26, 0x50, 0x8b, 0xb9, 0x11, 0x78, 0x7e, - 0x7d, 0x1b, 0x0a, 0x42, 0x35, 0xc2, 0x27, 0xf8, 0xa2, 0xdf, 0x3f, 0xae, 0xd4, 0x5a, 0x9e, 0xfc, - 0x30, 0x6a, 0x9a, 0x4e, 0xd0, 0xb1, 0x80, 0xad, 0xf4, 0xcf, 0x8a, 0x70, 0x3f, 0xb2, 0xe4, 0x5e, - 0x97, 0x0b, 0xe5, 0x56, 0xd8, 0x25, 0x77, 0x10, 0x76, 0x7a, 0x0d, 0x13, 0x95, 0xdd, 0x1d, 0xc5, - 0x53, 0x49, 0xb3, 0x37, 0xf1, 0xd5, 0xcc, 0x2a, 0x24, 0xb8, 0x86, 0xc7, 0x35, 0x9f, 0xa9, 0x6a, - 0x4e, 0xac, 0x5d, 0xcb, 0x76, 0x57, 0x6b, 0xd7, 0x2f, 0xc4, 0x59, 0xd8, 0xa0, 0x49, 0xbf, 0x45, - 0x69, 0x76, 0xb1, 0xb9, 0x13, 0x84, 0xee, 0x7f, 0xd2, 0xa9, 0x34, 0x57, 0x8d, 0x9e, 0x93, 0xab, - 0x12, 0x58, 0xfd, 0x5c, 0x15, 0xaa, 0x75, 0xc8, 0x36, 0x8f, 0xab, 0xb4, 0x61, 0x3e, 0x57, 0x69, - 0xe3, 0x84, 0xab, 0xb4, 0x26, 0xfd, 0x1d, 0xe1, 0xf2, 0x49, 0x5c, 0xd6, 0x6c, 0xf3, 0x37, 0xe3, - 0x9e, 0xc4, 0x47, 0xcf, 0x53, 0x50, 0x15, 0xf2, 0x0a, 0x1e, 0x67, 0x0a, 0x8c, 0xe2, 0xb5, 0x42, - 0x7f, 0x87, 0x35, 0xd0, 0xfa, 0xcc, 0xf1, 0x41, 0x65, 0x0a, 0x5c, 0xa8, 0x15, 0x6a, 0x83, 0x19, - 0xfd, 0x06, 0xe1, 0xca, 0xc0, 0xfc, 0xa0, 0xbc, 0xbb, 0xf8, 0x62, 0x7c, 0x92, 0x8a, 0xe1, 0x1b, - 0xe2, 0x55, 0xa8, 0xeb, 0x24, 0xd4, 0x35, 0xb6, 0x3a, 0xdf, 0xe8, 0xeb, 0x48, 0xf4, 0x27, 0x04, - 0xf4, 0x75, 0x37, 0x90, 0xac, 0xdd, 0xc3, 0xf6, 0x34, 0x94, 0x7c, 0x19, 0x4f, 0x7b, 0xbe, 0xd3, - 0x8e, 0x5c, 0xde, 0x48, 0xce, 0xe7, 0x31, 0x75, 0x3e, 0x17, 0x60, 0x79, 0x03, 0x8e, 0xe9, 0x7d, - 0x84, 0xe7, 0x73, 0x73, 0xf8, 0xff, 0xca, 0x7a, 0x0b, 0x36, 0xd1, 0x7b, 0x82, 0x87, 0xdb, 0xfa, - 0x32, 0xf3, 0x2f, 0xaf, 0x0e, 0x7f, 0x23, 0x38, 0x7c, 0xb2, 0xae, 0x20, 0xb5, 0x2f, 0x11, 0x9e, - 0x16, 0x5d, 0xee, 0xbb, 0x71, 0xc2, 0x0d, 0x9d, 0xe5, 0xd8, 0xb0, 0x2c, 0xdf, 0x86, 0x2c, 0xe7, - 0x74, 0xcc, 0x3e, 0xfb, 0xf3, 0xe5, 0x5b, 0xe8, 0x59, 0xab, 0x6f, 0x72, 0x0b, 0x5f, 0xea, 0xf2, - 0xd0, 0x0b, 0xdc, 0xa4, 0xda, 0x73, 0xc9, 0x46, 0x49, 0xee, 0x74, 0x77, 0x94, 0xb8, 0x3e, 0x07, - 0x20, 0x20, 0x71, 0x30, 0xa2, 0x76, 0x62, 0xbe, 0xf6, 0xd7, 0x65, 0x7c, 0x51, 0x25, 0x4e, 0x7e, - 0x40, 0xb8, 0x34, 0xf0, 0x90, 0x21, 0xeb, 0xd9, 0x9d, 0x78, 0xa6, 0xa3, 0xd0, 0x78, 0xf1, 0x7c, - 0x46, 0xba, 0xda, 0x74, 0xf1, 0xb3, 0x5f, 0xfe, 0xfc, 0x7a, 0xb4, 0x42, 0x16, 0xe0, 0x0e, 0xdb, - 0x09, 0xdc, 0xa8, 0xcd, 0xfb, 0x8f, 0x20, 0xe2, 0xe2, 0x71, 0xcd, 0xf8, 0xa4, 0x9a, 0x13, 0x26, - 0x73, 0xa0, 0x18, 0xcf, 0x3c, 0x41, 0x03, 0xa2, 0xce, 0xaa, 0xa8, 0xd3, 0x64, 0x2a, 0x73, 0x73, - 0x26, 0x9f, 0x23, 0xb8, 0xf5, 0x6a, 0x02, 0x25, 0x8b, 0x39, 0x9e, 0x4e, 0x1f, 0x2d, 0xc6, 0xd2, - 0x30, 0xb5, 0x01, 0xb9, 0xa6, 0xa9, 0xdb, 0xba, 0x0f, 0xd3, 0xf9, 0x80, 0x7c, 0x87, 0x30, 0x39, - 0xcd, 0x68, 0xe4, 0xe6, 0xa0, 0x28, 0x79, 0xc4, 0x6e, 0xac, 0x9c, 0x51, 0x1b, 0xa0, 0xbd, 0xa4, - 0xa0, 0xbd, 0x40, 0xcc, 0x34, 0x34, 0x35, 0xc0, 0x3b, 0xea, 0x42, 0x10, 0x2b, 0x9f, 0x40, 0xb4, - 0xee, 0xeb, 0x95, 0x07, 0xe4, 0x2b, 0x84, 0x0b, 0x59, 0x8a, 0x20, 0xb5, 0x9c, 0xc8, 0xb9, 0x4c, - 0x68, 0x3c, 0x7f, 0x06, 0x4d, 0xc0, 0x57, 0x53, 0xf8, 0x28, 0xa9, 0x02, 0x3e, 0x19, 0xab, 0x35, - 0x7a, 0x28, 0x53, 0xd5, 0xfb, 0x02, 0xe1, 0xc9, 0xf4, 0xbe, 0x26, 0x79, 0xdd, 0xc9, 0xe1, 0x10, - 0x63, 0x79, 0xa8, 0x1e, 0x60, 0x59, 0x52, 0x58, 0xaa, 0xa4, 0x0c, 0x58, 0x22, 0xc1, 0xc3, 0x06, - 0x6c, 0x45, 0x91, 0x42, 0xd2, 0x9b, 0x26, 0x78, 0x43, 0x0d, 0x9c, 0xa6, 0xcc, 0x33, 0x68, 0xf0, - 0x34, 0x65, 0x1f, 0x39, 0x03, 0xa6, 0x49, 0x3f, 0x5a, 0x52, 0x28, 0x3e, 0x45, 0xfd, 0x0f, 0x96, - 0xe5, 0x41, 0x01, 0xfa, 0xae, 0xe1, 0x46, 0x6d, 0xb8, 0x22, 0x60, 0x59, 0x50, 0x58, 0xae, 0x93, - 0xd9, 0x0c, 0x96, 0xe4, 0x7a, 0x5d, 0xdf, 0x7c, 0x78, 0x58, 0x46, 0x8f, 0x0e, 0xcb, 0xe8, 0x8f, - 0xc3, 0x32, 0xda, 0x3f, 0x2a, 0x8f, 0x3c, 0x3a, 0x2a, 0x8f, 0xfc, 0x7a, 0x54, 0x1e, 0xf9, 0xc0, - 0x4a, 0xb1, 0xe2, 0x96, 0x0a, 0xb6, 0x72, 0x9b, 0x35, 0x85, 0x95, 0x3c, 0x5e, 0x57, 0xd7, 0xad, - 0x8f, 0x93, 0x96, 0xc7, 0x14, 0xd9, 0x1c, 0x57, 0x4f, 0x90, 0xf5, 0x7f, 0x02, 0x00, 0x00, 0xff, - 0xff, 0xb8, 0xe9, 0x39, 0xf1, 0x90, 0x0f, 0x00, 0x00, + // 1227 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0xc5, + 0x1b, 0xcf, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x26, 0xa9, 0xbd, 0x69, 0x6c, 0xff, 0xe7, + 0x4f, 0x12, 0x23, 0x35, 0xbb, 0x24, 0xad, 0x38, 0x70, 0x01, 0x1c, 0x5e, 0x1a, 0x54, 0xa4, 0xb2, + 0x29, 0x91, 0xe0, 0x62, 0x8d, 0x77, 0x27, 0x66, 0x85, 0xbd, 0xeb, 0xec, 0xcc, 0x56, 0x44, 0x55, + 0x85, 0x80, 0x03, 0x37, 0x88, 0x04, 0x7c, 0x08, 0x90, 0x38, 0xf0, 0x11, 0x38, 0x20, 0xf5, 0x58, + 0x89, 0x0b, 0x07, 0x48, 0x51, 0xc2, 0x27, 0x88, 0x04, 0x67, 0xb4, 0x33, 0xcf, 0x3a, 0xbb, 0xce, + 0xba, 0x4e, 0x90, 0x10, 0xbd, 0xc4, 0xd9, 0x79, 0xde, 0x7e, 0xcf, 0xcb, 0xfc, 0x66, 0x06, 0x17, + 0x85, 0x0c, 0x3d, 0x97, 0x5b, 0x4e, 0x9b, 0x79, 0x1d, 0x6b, 0x37, 0xe2, 0xe1, 0x9e, 0xd9, 0x0d, + 0x03, 0x19, 0x90, 0x49, 0x2d, 0x31, 0x95, 0xc4, 0x98, 0x6d, 0x05, 0xad, 0x40, 0x09, 0xac, 0xf8, + 0x3f, 0xad, 0x63, 0x5c, 0x6f, 0x05, 0x41, 0xab, 0xcd, 0x2d, 0xd6, 0xf5, 0x2c, 0xe6, 0xfb, 0x81, + 0x64, 0xd2, 0x0b, 0x7c, 0x01, 0xd2, 0xb2, 0x13, 0x88, 0x4e, 0x20, 0xac, 0x26, 0x13, 0xdc, 0xba, + 0xbf, 0xd6, 0xe4, 0x92, 0xad, 0x59, 0x4e, 0xe0, 0xf9, 0x20, 0xcf, 0xc6, 0x56, 0x7f, 0x41, 0x52, + 0xca, 0x48, 0xba, 0x2c, 0x64, 0x9d, 0xc4, 0xe9, 0x75, 0x10, 0xdd, 0xe7, 0x42, 0x7a, 0x7e, 0x2b, + 0xf9, 0x05, 0x69, 0x05, 0x00, 0xa9, 0xaf, 0x66, 0xb4, 0x63, 0x49, 0xaf, 0xc3, 0x85, 0x64, 0x9d, + 0xae, 0x56, 0xa0, 0xdb, 0x78, 0x62, 0x23, 0x76, 0xba, 0x25, 0x99, 0x8c, 0x04, 0x59, 0xc5, 0x84, + 0x79, 0xa1, 0x1b, 0x06, 0xdd, 0x86, 0xe7, 0x72, 0x5f, 0x7a, 0x3b, 0x1e, 0x0f, 0x8b, 0xa8, 0x8a, + 0x6a, 0x57, 0xec, 0x19, 0x90, 0x6c, 0xf6, 0x04, 0xa4, 0x88, 0x2f, 0x29, 0x48, 0xdc, 0x2d, 0x8e, + 0x56, 0x51, 0xed, 0xb2, 0x9d, 0x7c, 0xd2, 0x37, 0xf1, 0xb5, 0x77, 0xe2, 0xe2, 0xa5, 0x9c, 0xdb, + 0x7c, 0x37, 0xe2, 0x42, 0x92, 0x1b, 0xf8, 0x12, 0x73, 0xdd, 0x90, 0x0b, 0xa1, 0x1d, 0xd7, 0xc9, + 0xf1, 0x41, 0xa5, 0xb0, 0xc7, 0x3a, 0xed, 0x97, 0x28, 0x08, 0xa8, 0x9d, 0xa8, 0xd0, 0x08, 0x17, + 0x4f, 0x3b, 0x12, 0xdd, 0xc0, 0x17, 0x9c, 0xbc, 0x87, 0x27, 0x55, 0xbc, 0x86, 0x50, 0xeb, 0x45, + 0x54, 0x1d, 0xab, 0x4d, 0xac, 0x97, 0xcc, 0x74, 0xa7, 0xcc, 0x94, 0x61, 0x7d, 0xe1, 0xd1, 0x41, + 0x65, 0xe4, 0xf8, 0xa0, 0x72, 0x55, 0x47, 0x4b, 0x1b, 0x53, 0x7b, 0xc2, 0x39, 0xd1, 0xa4, 0x3f, + 0x8d, 0xe2, 0x29, 0x65, 0xf9, 0x36, 0x97, 0xcc, 0x65, 0x92, 0x9d, 0xb7, 0x34, 0xff, 0xc7, 0x53, + 0x4e, 0x14, 0x86, 0xdc, 0x97, 0x8d, 0x30, 0x88, 0x7c, 0x5d, 0xa0, 0x2b, 0xf6, 0x24, 0x2c, 0xda, + 0xf1, 0x1a, 0x09, 0xf1, 0xd5, 0x8c, 0x52, 0x8c, 0x25, 0x94, 0xc5, 0xb1, 0x2a, 0xaa, 0x4d, 0xac, + 0x1b, 0xa6, 0x6e, 0x9e, 0x99, 0x34, 0xcf, 0xbc, 0x97, 0x34, 0xaf, 0xbe, 0x0c, 0x89, 0x18, 0x90, + 0xc8, 0x69, 0x27, 0x74, 0xff, 0x49, 0x05, 0xd9, 0x33, 0xe9, 0x70, 0x5b, 0xf1, 0x3a, 0x69, 0xe3, + 0x99, 0xac, 0x3a, 0xf7, 0xdd, 0xe2, 0x85, 0xa1, 0x11, 0x9f, 0x83, 0x88, 0xc5, 0xbc, 0x88, 0xdc, + 0x77, 0x75, 0xbc, 0xe9, 0x74, 0xbc, 0xd7, 0x7d, 0x97, 0x2e, 0xe0, 0xd2, 0x49, 0xfb, 0x92, 0x5a, + 0xc2, 0x24, 0xd0, 0x8f, 0xb1, 0x91, 0x27, 0x84, 0xee, 0x32, 0x5c, 0xd0, 0x0d, 0xea, 0x80, 0x04, + 0xfa, 0xbb, 0x90, 0xd3, 0xdf, 0xc4, 0xb8, 0xbe, 0x08, 0x30, 0xe7, 0xd2, 0x1d, 0x4e, 0x1c, 0x50, + 0x7b, 0xca, 0x49, 0x6b, 0xd3, 0x08, 0x2f, 0x29, 0x00, 0xaf, 0x79, 0xb1, 0xcb, 0x66, 0x24, 0x83, + 0xf0, 0x55, 0xc7, 0x09, 0x22, 0x5f, 0xd6, 0x59, 0x9b, 0xf9, 0x0e, 0x4f, 0x66, 0xf6, 0xce, 0xe0, + 0xe6, 0xd7, 0x17, 0x8f, 0x0f, 0x2a, 0x25, 0x18, 0xdf, 0x53, 0x3a, 0x34, 0x67, 0x36, 0xe8, 0xaf, + 0x08, 0x2f, 0x0f, 0x8b, 0x0b, 0x45, 0xf8, 0x01, 0xe1, 0x05, 0xf7, 0x44, 0xab, 0xc1, 0xb4, 0x5a, + 0xa3, 0xa9, 0xf5, 0x7a, 0x23, 0xaf, 0xa9, 0xc5, 0x8c, 0xa9, 0xc5, 0x04, 0x6a, 0x31, 0x37, 0x02, + 0xcf, 0xaf, 0x6f, 0x43, 0x41, 0xa8, 0x46, 0xf8, 0x14, 0x5f, 0xf4, 0xbb, 0x27, 0x95, 0x5a, 0xcb, + 0x93, 0x1f, 0x44, 0x4d, 0xd3, 0x09, 0x3a, 0x16, 0xb0, 0x95, 0xfe, 0x59, 0x15, 0xee, 0x87, 0x96, + 0xdc, 0xeb, 0x72, 0xa1, 0xdc, 0x0a, 0xbb, 0xe4, 0x0e, 0xc2, 0x4e, 0x67, 0x31, 0x51, 0xd9, 0xdd, + 0x55, 0x3c, 0x95, 0x34, 0x7b, 0x13, 0x5f, 0xcd, 0xac, 0x42, 0x82, 0xeb, 0x78, 0x5c, 0xf3, 0x99, + 0xaa, 0xe6, 0xc4, 0xfa, 0x6c, 0xb6, 0xbb, 0x5a, 0xbb, 0x7e, 0x21, 0xce, 0xc2, 0x06, 0x4d, 0xfa, + 0x0d, 0x4a, 0xb3, 0x8b, 0xcd, 0x9d, 0x20, 0x74, 0xff, 0x95, 0x4e, 0xa5, 0xb9, 0x6a, 0xf4, 0x9c, + 0x5c, 0x95, 0xc0, 0xea, 0xe7, 0xaa, 0x50, 0xad, 0x43, 0xb6, 0x79, 0x5c, 0xa5, 0x0d, 0xf3, 0xb9, + 0x4a, 0x1b, 0x27, 0x5c, 0xa5, 0x35, 0xe9, 0x6f, 0x08, 0x97, 0x4f, 0xe2, 0xb2, 0x66, 0x9b, 0xbf, + 0x11, 0xf7, 0x24, 0x3e, 0x7a, 0x9e, 0x81, 0xaa, 0x90, 0x97, 0xf1, 0x38, 0x53, 0x60, 0x14, 0xaf, + 0x15, 0xfa, 0x3b, 0xac, 0x81, 0xd6, 0x67, 0x8e, 0x0f, 0x2a, 0x53, 0xe0, 0x42, 0xad, 0x50, 0x1b, + 0xcc, 0xe8, 0xd7, 0x08, 0x57, 0x06, 0xe6, 0x07, 0xe5, 0xdd, 0xc5, 0x17, 0xe3, 0x93, 0x54, 0x0c, + 0xdf, 0x10, 0xaf, 0x40, 0x5d, 0x27, 0xa1, 0xae, 0xb1, 0xd5, 0xf9, 0x46, 0x5f, 0x47, 0xa2, 0x3f, + 0x22, 0xa0, 0xaf, 0x7b, 0x81, 0x64, 0xed, 0x1e, 0xb6, 0x67, 0xa1, 0xe4, 0x2b, 0x78, 0xda, 0xf3, + 0x9d, 0x76, 0xe4, 0xf2, 0x46, 0x72, 0x3e, 0x8f, 0xa9, 0xf3, 0xb9, 0x00, 0xcb, 0x1b, 0x70, 0x4c, + 0xef, 0x23, 0xbc, 0x90, 0x9b, 0xc3, 0x7f, 0x57, 0xd6, 0xdb, 0xb0, 0x89, 0xde, 0x15, 0x3c, 0xdc, + 0xd6, 0x97, 0x99, 0x7f, 0x78, 0x75, 0xf8, 0x0b, 0xc1, 0xe1, 0x93, 0x75, 0x05, 0xa9, 0x7d, 0x81, + 0xf0, 0xb4, 0xe8, 0x72, 0xdf, 0x8d, 0x13, 0x6e, 0xe8, 0x2c, 0xc7, 0x86, 0x65, 0xf9, 0x16, 0x64, + 0x39, 0xaf, 0x63, 0xf6, 0xd9, 0x9f, 0x2f, 0xdf, 0x42, 0xcf, 0x5a, 0x7d, 0x93, 0xdb, 0xf8, 0x52, + 0x97, 0x87, 0x5e, 0xe0, 0x26, 0xd5, 0x9e, 0x4f, 0x36, 0x4a, 0x72, 0xa7, 0xbb, 0xab, 0xc4, 0xf5, + 0x79, 0x00, 0x01, 0x89, 0x83, 0x11, 0xb5, 0x13, 0xf3, 0xf5, 0x3f, 0x2f, 0xe3, 0x8b, 0x2a, 0x71, + 0xf2, 0x3d, 0xc2, 0xa5, 0x81, 0x87, 0x0c, 0xb9, 0x99, 0xdd, 0x89, 0x67, 0x3a, 0x0a, 0x8d, 0x5b, + 0xe7, 0x33, 0xd2, 0xd5, 0xa6, 0x4b, 0x9f, 0xfe, 0xfc, 0xc7, 0x57, 0xa3, 0x15, 0xb2, 0x08, 0x77, + 0xd8, 0x4e, 0xe0, 0x46, 0x6d, 0xde, 0x7f, 0x04, 0x11, 0x17, 0x8f, 0x6b, 0xc6, 0x27, 0xd5, 0x9c, + 0x30, 0x99, 0x03, 0xc5, 0xf8, 0xdf, 0x53, 0x34, 0x20, 0xea, 0x9c, 0x8a, 0x3a, 0x4d, 0xa6, 0x32, + 0x37, 0x67, 0xf2, 0x19, 0x82, 0x5b, 0xaf, 0x26, 0x50, 0xb2, 0x94, 0xe3, 0xe9, 0xf4, 0xd1, 0x62, + 0x2c, 0x0f, 0x53, 0x1b, 0x90, 0x6b, 0x9a, 0xba, 0xad, 0x07, 0x30, 0x9d, 0x0f, 0xc9, 0xb7, 0x08, + 0x93, 0xd3, 0x8c, 0x46, 0x6e, 0x0c, 0x8a, 0x92, 0x47, 0xec, 0xc6, 0xea, 0x19, 0xb5, 0x01, 0xda, + 0x8b, 0x0a, 0xda, 0x0b, 0xc4, 0x4c, 0x43, 0x53, 0x03, 0xbc, 0xa3, 0x2e, 0x04, 0xb1, 0xf2, 0x09, + 0x44, 0xeb, 0x81, 0x5e, 0x79, 0x48, 0xbe, 0x44, 0xb8, 0x90, 0xa5, 0x08, 0x52, 0xcb, 0x89, 0x9c, + 0xcb, 0x84, 0xc6, 0xf3, 0x67, 0xd0, 0x04, 0x7c, 0x35, 0x85, 0x8f, 0x92, 0x2a, 0xe0, 0x93, 0xb1, + 0x5a, 0xa3, 0x87, 0x32, 0x55, 0xbd, 0xcf, 0x11, 0x9e, 0x4c, 0xef, 0x6b, 0x92, 0xd7, 0x9d, 0x1c, + 0x0e, 0x31, 0x56, 0x86, 0xea, 0x01, 0x96, 0x65, 0x85, 0xa5, 0x4a, 0xca, 0x80, 0x25, 0x12, 0x3c, + 0x6c, 0xc0, 0x56, 0x14, 0x29, 0x24, 0xbd, 0x69, 0x82, 0x37, 0xd4, 0xc0, 0x69, 0xca, 0x3c, 0x83, + 0x06, 0x4f, 0x53, 0xf6, 0x91, 0x33, 0x60, 0x9a, 0xf4, 0xa3, 0x25, 0x85, 0xe2, 0x13, 0xd4, 0xff, + 0x60, 0x59, 0x19, 0x14, 0xa0, 0xef, 0x1a, 0x6e, 0xd4, 0x86, 0x2b, 0x02, 0x96, 0x45, 0x85, 0xe5, + 0x1a, 0x99, 0xcb, 0x60, 0x49, 0xae, 0xd7, 0xf5, 0xcd, 0x47, 0x87, 0x65, 0xf4, 0xf8, 0xb0, 0x8c, + 0x7e, 0x3f, 0x2c, 0xa3, 0xfd, 0xa3, 0xf2, 0xc8, 0xe3, 0xa3, 0xf2, 0xc8, 0x2f, 0x47, 0xe5, 0x91, + 0xf7, 0xad, 0x14, 0x2b, 0x6e, 0xa9, 0x60, 0xab, 0x77, 0x58, 0x53, 0x58, 0xc9, 0xe3, 0x75, 0xed, + 0x96, 0xf5, 0x51, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xea, 0x09, 0x72, 0xf3, 0xef, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x16, 0x71, 0x80, 0x87, 0x90, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/tx.pb.go b/x/claim/types/tx.pb.go index e97d41328f..4da6be531f 100644 --- a/x/claim/types/tx.pb.go +++ b/x/claim/types/tx.pb.go @@ -448,45 +448,45 @@ var fileDescriptor_9d435242bf328977 = []byte{ // 645 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x4e, 0x10, 0x8d, 0x7f, 0x09, 0x7f, 0xb2, 0xfc, 0xa0, 0xb0, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x7c, 0x40, - 0x96, 0x2a, 0xec, 0x02, 0xb7, 0x9e, 0x4a, 0xa0, 0x95, 0x90, 0xe0, 0x62, 0x90, 0x2a, 0x21, 0x55, - 0xd1, 0xda, 0x9e, 0x9a, 0x55, 0x6d, 0x6f, 0xe4, 0xdd, 0x50, 0xf8, 0x04, 0xbd, 0xf2, 0x39, 0xfa, - 0x49, 0x38, 0x72, 0xac, 0x7a, 0x48, 0x2b, 0x38, 0xf7, 0xc2, 0xa9, 0xc7, 0xca, 0xbb, 0x4e, 0x70, - 0x48, 0x68, 0x39, 0xf4, 0x64, 0xcf, 0x7b, 0xb3, 0x6f, 0x77, 0xe6, 0xcd, 0x2e, 0x5a, 0xe1, 0x22, - 0xa7, 0x11, 0x78, 0x61, 0x42, 0x68, 0xea, 0x89, 0x73, 0xb7, 0x9b, 0x33, 0xc1, 0xf0, 0xff, 0x0a, - 0x76, 0x25, 0x6c, 0x2c, 0xc7, 0x2c, 0x66, 0x92, 0xf0, 0x8a, 0x3f, 0x95, 0x63, 0x98, 0x21, 0xe3, - 0x29, 0xe3, 0x5e, 0x40, 0x38, 0x78, 0x67, 0x9b, 0x01, 0x08, 0xb2, 0xe9, 0x85, 0x8c, 0x66, 0x8a, - 0xb7, 0x7f, 0x69, 0x48, 0x3f, 0xe4, 0xf1, 0x11, 0x88, 0x1d, 0x9a, 0x47, 0x39, 0xeb, 0xee, 0x24, - 0x09, 0x0b, 0x89, 0xa0, 0x2c, 0xe3, 0xf8, 0x39, 0x6a, 0x12, 0x15, 0xb2, 0x5c, 0xd7, 0x2c, 0xcd, - 0x69, 0xfa, 0xf7, 0x00, 0x3e, 0x40, 0x98, 0xa8, 0x35, 0x1d, 0x1a, 0x41, 0x26, 0xe8, 0x07, 0x0a, - 0xb9, 0xfe, 0x5f, 0x91, 0xd6, 0x5e, 0xbb, 0xeb, 0xb7, 0x56, 0x2f, 0x48, 0x9a, 0xbc, 0xb2, 0xc7, - 0x73, 0x6c, 0x7f, 0xa9, 0x04, 0xf7, 0x87, 0x18, 0x5e, 0x46, 0x53, 0x3d, 0x0e, 0x39, 0xd7, 0xeb, - 0x56, 0xdd, 0x69, 0xfa, 0x2a, 0xc0, 0x27, 0x68, 0xe6, 0x13, 0xd0, 0xf8, 0x54, 0x70, 0xbd, 0x51, - 0xe0, 0xed, 0xd7, 0x57, 0xfd, 0x56, 0xed, 0x5b, 0xbf, 0xb5, 0x1e, 0x53, 0x71, 0xda, 0x0b, 0xdc, - 0x90, 0xa5, 0x5e, 0x59, 0xa2, 0xfa, 0x6c, 0xf0, 0xe8, 0xa3, 0x27, 0x2e, 0xba, 0xc0, 0xdd, 0x3d, - 0x08, 0xef, 0xfa, 0xad, 0x05, 0x75, 0x8c, 0x52, 0xc6, 0xf6, 0x07, 0x82, 0xb6, 0x8d, 0xac, 0xc7, - 0x2a, 0xf7, 0x81, 0x77, 0x59, 0xc6, 0xc1, 0x76, 0x10, 0x3e, 0xe4, 0xf1, 0x6e, 0xd1, 0xe0, 0xb7, - 0x39, 0xc0, 0x4e, 0xca, 0x7a, 0x99, 0xc0, 0x18, 0x35, 0x8a, 0xe3, 0x95, 0x2d, 0x91, 0xff, 0xf6, - 0xa5, 0x86, 0x8c, 0xf1, 0xd4, 0x81, 0x10, 0xce, 0xd1, 0x82, 0xb4, 0x09, 0xa2, 0x0e, 0x91, 0x8c, - 0xac, 0x73, 0x6e, 0x6b, 0xd5, 0x55, 0xc7, 0x76, 0x0b, 0x83, 0xdc, 0xd2, 0x20, 0x77, 0x97, 0xd1, - 0xac, 0xfd, 0xb2, 0x28, 0xf5, 0xcb, 0xf7, 0x96, 0xf3, 0x84, 0x52, 0x8b, 0x05, 0xdc, 0x9f, 0x2f, - 0xb7, 0x50, 0x7b, 0xdb, 0x3f, 0x35, 0xb4, 0x58, 0x1c, 0x29, 0x07, 0x22, 0xa0, 0x2c, 0x12, 0x5b, - 0x68, 0x2e, 0xa2, 0xc5, 0xe0, 0x04, 0xbd, 0x7b, 0x57, 0xab, 0x10, 0x36, 0x11, 0x7a, 0xe8, 0xa7, - 0x5f, 0x41, 0xf0, 0x2a, 0x9a, 0x0d, 0x4f, 0x09, 0xcd, 0x3a, 0x34, 0xd2, 0xa7, 0x25, 0x3b, 0x23, - 0xe3, 0xfd, 0xa8, 0x30, 0x31, 0x82, 0x8c, 0xa5, 0xfa, 0x94, 0xc4, 0x55, 0x80, 0xd7, 0x10, 0xe2, - 0x82, 0xe4, 0xa2, 0x23, 0x68, 0x0a, 0x7a, 0xdd, 0xd2, 0x9c, 0x86, 0xdf, 0x94, 0xc8, 0x31, 0x4d, - 0x01, 0x1b, 0x68, 0x36, 0xea, 0xe5, 0xb2, 0xf1, 0x7a, 0x43, 0x92, 0xc3, 0x18, 0xbf, 0x40, 0x4b, - 0xa4, 0x27, 0x58, 0x97, 0x26, 0x4c, 0x74, 0x20, 0x23, 0x41, 0x02, 0x91, 0x3e, 0x63, 0x69, 0xce, - 0xac, 0xbf, 0x38, 0x24, 0xde, 0x28, 0xdc, 0x36, 0xe4, 0x28, 0x8f, 0x94, 0x3b, 0x34, 0xf2, 0x58, - 0xb6, 0x62, 0x0f, 0x12, 0xf8, 0x87, 0xad, 0x28, 0x77, 0x1c, 0x51, 0x1d, 0xec, 0xb8, 0xf5, 0xb9, - 0x8e, 0xea, 0x87, 0x3c, 0xc6, 0x0c, 0xad, 0x4c, 0xbe, 0x5d, 0xeb, 0x6e, 0xf5, 0xfe, 0xba, 0x8f, - 0xcd, 0xa2, 0xe1, 0x3e, 0x2d, 0x6f, 0x38, 0x6a, 0xef, 0xd1, 0xb3, 0x87, 0x03, 0x6b, 0x8d, 0x49, - 0x3c, 0xc8, 0x30, 0x9c, 0xbf, 0x65, 0x0c, 0xe5, 0xdf, 0xa1, 0xf9, 0xd1, 0x89, 0x32, 0xc7, 0x97, - 0x56, 0x79, 0x63, 0xfd, 0xcf, 0x7c, 0x55, 0x78, 0xd4, 0x9f, 0x71, 0xe1, 0x11, 0x7e, 0x82, 0xf0, - 0x44, 0x27, 0xda, 0xfb, 0x57, 0x37, 0xa6, 0x76, 0x7d, 0x63, 0x6a, 0x3f, 0x6e, 0x4c, 0xed, 0xf2, - 0xd6, 0xac, 0x5d, 0xdf, 0x9a, 0xb5, 0xaf, 0xb7, 0x66, 0xed, 0xc4, 0xab, 0x5c, 0xad, 0x23, 0xa9, - 0xb5, 0x71, 0x40, 0x02, 0xee, 0x95, 0xef, 0xed, 0xd9, 0xe6, 0xb6, 0x77, 0x3e, 0x78, 0x75, 0x8b, - 0x7b, 0x16, 0x4c, 0xcb, 0x57, 0x73, 0xfb, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x1f, 0x67, - 0x5d, 0x92, 0x05, 0x00, 0x00, + 0x96, 0x2a, 0xec, 0x42, 0x7b, 0xea, 0xa9, 0x04, 0x5a, 0x09, 0x09, 0x2e, 0x06, 0xa9, 0x12, 0x52, + 0x15, 0xad, 0xed, 0xa9, 0x59, 0xd5, 0xf6, 0x46, 0xde, 0x0d, 0x85, 0x4f, 0xd0, 0x2b, 0x9f, 0xa3, + 0x9f, 0x84, 0x23, 0xc7, 0xaa, 0x87, 0xb4, 0x82, 0x73, 0x2f, 0x9c, 0x7a, 0xac, 0xbc, 0xeb, 0x04, + 0x87, 0x84, 0x96, 0x43, 0x4f, 0xf6, 0xbc, 0x37, 0xfb, 0x76, 0x67, 0xde, 0xec, 0xa2, 0x15, 0x2e, + 0x72, 0x1a, 0x81, 0x17, 0x26, 0x84, 0xa6, 0x9e, 0x38, 0x73, 0xbb, 0x39, 0x13, 0x0c, 0xff, 0xaf, + 0x60, 0x57, 0xc2, 0xc6, 0x72, 0xcc, 0x62, 0x26, 0x09, 0xaf, 0xf8, 0x53, 0x39, 0x86, 0x19, 0x32, + 0x9e, 0x32, 0xee, 0x05, 0x84, 0x83, 0x77, 0xba, 0x19, 0x80, 0x20, 0x9b, 0x5e, 0xc8, 0x68, 0xa6, + 0x78, 0xfb, 0x97, 0x86, 0xf4, 0x03, 0x1e, 0x1f, 0x82, 0xd8, 0xa6, 0x79, 0x94, 0xb3, 0xee, 0x76, + 0x92, 0xb0, 0x90, 0x08, 0xca, 0x32, 0x8e, 0x9f, 0xa2, 0x26, 0x51, 0x21, 0xcb, 0x75, 0xcd, 0xd2, + 0x9c, 0xa6, 0x7f, 0x07, 0xe0, 0x7d, 0x84, 0x89, 0x5a, 0xd3, 0xa1, 0x11, 0x64, 0x82, 0x7e, 0xa0, + 0x90, 0xeb, 0xff, 0x15, 0x69, 0xed, 0xb5, 0xdb, 0x7e, 0x6b, 0xf5, 0x9c, 0xa4, 0xc9, 0x2b, 0x7b, + 0x3c, 0xc7, 0xf6, 0x97, 0x4a, 0x70, 0x6f, 0x88, 0xe1, 0x65, 0x34, 0xd5, 0xe3, 0x90, 0x73, 0xbd, + 0x6e, 0xd5, 0x9d, 0xa6, 0xaf, 0x02, 0x7c, 0x8c, 0x66, 0x3e, 0x01, 0x8d, 0x4f, 0x04, 0xd7, 0x1b, + 0x05, 0xde, 0x7e, 0x7d, 0xd9, 0x6f, 0xd5, 0xbe, 0xf5, 0x5b, 0xeb, 0x31, 0x15, 0x27, 0xbd, 0xc0, + 0x0d, 0x59, 0xea, 0x95, 0x25, 0xaa, 0xcf, 0x06, 0x8f, 0x3e, 0x7a, 0xe2, 0xbc, 0x0b, 0xdc, 0xdd, + 0x85, 0xf0, 0xb6, 0xdf, 0x5a, 0x50, 0xc7, 0x28, 0x65, 0x6c, 0x7f, 0x20, 0x68, 0xdb, 0xc8, 0x7a, + 0xa8, 0x72, 0x1f, 0x78, 0x97, 0x65, 0x1c, 0x6c, 0x07, 0xe1, 0x03, 0x1e, 0xef, 0x14, 0x0d, 0x7e, + 0x9b, 0x03, 0x6c, 0xa7, 0xac, 0x97, 0x09, 0x8c, 0x51, 0xa3, 0x38, 0x5e, 0xd9, 0x12, 0xf9, 0x6f, + 0x5f, 0x68, 0xc8, 0x18, 0x4f, 0x1d, 0x08, 0xe1, 0x1c, 0x2d, 0x48, 0x9b, 0x20, 0xea, 0x10, 0xc9, + 0xc8, 0x3a, 0xe7, 0xb6, 0x56, 0x5d, 0x75, 0x6c, 0xb7, 0x30, 0xc8, 0x2d, 0x0d, 0x72, 0x77, 0x18, + 0xcd, 0xda, 0xcf, 0x8b, 0x52, 0xbf, 0x7c, 0x6f, 0x39, 0x8f, 0x28, 0xb5, 0x58, 0xc0, 0xfd, 0xf9, + 0x72, 0x0b, 0xb5, 0xb7, 0xfd, 0x53, 0x43, 0x8b, 0xc5, 0x91, 0x72, 0x20, 0x02, 0xca, 0x22, 0xb1, + 0x85, 0xe6, 0x22, 0x5a, 0x0c, 0x4e, 0xd0, 0xbb, 0x73, 0xb5, 0x0a, 0x61, 0x13, 0xa1, 0xfb, 0x7e, + 0xfa, 0x15, 0x04, 0xaf, 0xa2, 0xd9, 0xf0, 0x84, 0xd0, 0xac, 0x43, 0x23, 0x7d, 0x5a, 0xb2, 0x33, + 0x32, 0xde, 0x8b, 0x0a, 0x13, 0x23, 0xc8, 0x58, 0xaa, 0x4f, 0x49, 0x5c, 0x05, 0x78, 0x0d, 0x21, + 0x2e, 0x48, 0x2e, 0x3a, 0x82, 0xa6, 0xa0, 0xd7, 0x2d, 0xcd, 0x69, 0xf8, 0x4d, 0x89, 0x1c, 0xd1, + 0x14, 0xb0, 0x81, 0x66, 0xa3, 0x5e, 0x2e, 0x1b, 0xaf, 0x37, 0x24, 0x39, 0x8c, 0xf1, 0x33, 0xb4, + 0x44, 0x7a, 0x82, 0x75, 0x69, 0xc2, 0x44, 0x07, 0x32, 0x12, 0x24, 0x10, 0xe9, 0x33, 0x96, 0xe6, + 0xcc, 0xfa, 0x8b, 0x43, 0xe2, 0x8d, 0xc2, 0x6d, 0x43, 0x8e, 0xf2, 0x48, 0xb9, 0x43, 0x23, 0x8f, + 0x64, 0x2b, 0x76, 0x21, 0x81, 0x7f, 0xd8, 0x8a, 0x72, 0xc7, 0x11, 0xd5, 0xc1, 0x8e, 0x5b, 0x9f, + 0xeb, 0xa8, 0x7e, 0xc0, 0x63, 0xcc, 0xd0, 0xca, 0xe4, 0xdb, 0xb5, 0xee, 0x56, 0xef, 0xaf, 0xfb, + 0xd0, 0x2c, 0x1a, 0xee, 0xe3, 0xf2, 0x86, 0xa3, 0xf6, 0x1e, 0x3d, 0xb9, 0x3f, 0xb0, 0xd6, 0x98, + 0xc4, 0xbd, 0x0c, 0xc3, 0xf9, 0x5b, 0xc6, 0x50, 0xfe, 0x1d, 0x9a, 0x1f, 0x9d, 0x28, 0x73, 0x7c, + 0x69, 0x95, 0x37, 0xd6, 0xff, 0xcc, 0x57, 0x85, 0x47, 0xfd, 0x19, 0x17, 0x1e, 0xe1, 0x27, 0x08, + 0x4f, 0x74, 0xa2, 0xbd, 0x77, 0x79, 0x6d, 0x6a, 0x57, 0xd7, 0xa6, 0xf6, 0xe3, 0xda, 0xd4, 0x2e, + 0x6e, 0xcc, 0xda, 0xd5, 0x8d, 0x59, 0xfb, 0x7a, 0x63, 0xd6, 0x8e, 0xbd, 0xca, 0xd5, 0x3a, 0x94, + 0x5a, 0x1b, 0xfb, 0x24, 0xe0, 0x5e, 0xf9, 0xde, 0x9e, 0x6e, 0xbe, 0xf4, 0xce, 0x06, 0xaf, 0x6e, + 0x71, 0xcf, 0x82, 0x69, 0xf9, 0x6a, 0xbe, 0xf8, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x50, 0x87, 0xde, + 0x2b, 0x92, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/client/cli/tx.go b/x/claim/vesting/client/cli/tx.go index f4c86be871..d9f761b51e 100644 --- a/x/claim/vesting/client/cli/tx.go +++ b/x/claim/vesting/client/cli/tx.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" ) // GetTxCmd returns stride vesting module's transaction commands. diff --git a/x/claim/vesting/client/testutil/suite.go b/x/claim/vesting/client/testutil/suite.go index 3b41a4e3d4..8ffd320096 100644 --- a/x/claim/vesting/client/testutil/suite.go +++ b/x/claim/vesting/client/testutil/suite.go @@ -3,7 +3,7 @@ package testutil import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/testutil/network" + "github.com/Stride-Labs/stride/v14/testutil/network" ) type IntegrationTestSuite struct { diff --git a/x/claim/vesting/handler.go b/x/claim/vesting/handler.go index c6b31ab87d..7635fcc976 100644 --- a/x/claim/vesting/handler.go +++ b/x/claim/vesting/handler.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" ) // NewHandler returns a handler for x/auth message types. diff --git a/x/claim/vesting/module.go b/x/claim/vesting/module.go index a27bfd47c3..59c84e68bd 100644 --- a/x/claim/vesting/module.go +++ b/x/claim/vesting/module.go @@ -15,8 +15,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/client/cli" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/client/cli" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" ) var ( diff --git a/x/claim/vesting/msg_server.go b/x/claim/vesting/msg_server.go index b514adb742..2238632ca8 100644 --- a/x/claim/vesting/msg_server.go +++ b/x/claim/vesting/msg_server.go @@ -3,7 +3,7 @@ package vesting import ( "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" ) type msgServer struct { diff --git a/x/claim/vesting/types/codec.go b/x/claim/vesting/types/codec.go index 975988cb06..a97e61330d 100644 --- a/x/claim/vesting/types/codec.go +++ b/x/claim/vesting/types/codec.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/msgservice" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/exported" ) // RegisterLegacyAminoCodec registers the vesting interfaces and concrete types on the diff --git a/x/claim/vesting/types/common_test.go b/x/claim/vesting/types/common_test.go index d2160dc68a..e935d4439d 100644 --- a/x/claim/vesting/types/common_test.go +++ b/x/claim/vesting/types/common_test.go @@ -1,7 +1,7 @@ package types_test import ( - strideApp "github.com/Stride-Labs/stride/v13/app" + strideApp "github.com/Stride-Labs/stride/v14/app" ) var ( diff --git a/x/claim/vesting/types/tx.pb.go b/x/claim/vesting/types/tx.pb.go index fa56ef6100..f2790098b3 100644 --- a/x/claim/vesting/types/tx.pb.go +++ b/x/claim/vesting/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_5ebed07aad5e90bd = []byte{ 0xd3, 0x9d, 0x02, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x3c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xac, 0x57, 0xd7, 0x27, 0x31, - 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0xb1, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, + 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0x89, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, 0xb2, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x85, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x29, 0xf7, 0xb6, 0x98, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x6d, 0x01, 0xb0, 0x8b, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/vesting.pb.go b/x/claim/vesting/types/vesting.pb.go index b61e82d72d..c6ddacbb50 100644 --- a/x/claim/vesting/types/vesting.pb.go +++ b/x/claim/vesting/types/vesting.pb.go @@ -187,41 +187,41 @@ var fileDescriptor_41f0278a453c26b3 = []byte{ // 590 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x3e, 0x1c, 0x8d, 0xd7, 0xae, 0xff, 0xfd, 0x5d, 0xd8, 0x46, 0x18, 0x25, 0x4c, 0x23, 0xa9, 0x72, 0xea, - 0x65, 0x09, 0xdd, 0x0e, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, + 0x65, 0x09, 0x1d, 0x48, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, 0x9c, 0xc4, 0xa4, 0x16, 0x4d, 0x5c, 0xc5, 0xee, 0x44, 0xbf, 0x01, 0x12, 0x17, 0x90, 0x38, 0x70, 0xdc, 0x99, 0x4f, 0x32, 0x89, 0x4b, 0xc5, 0x89, 0x53, 0x41, 0xad, 0xf8, 0x02, 0xfb, 0x04, 0x28, 0xb6, 0xd3, 0xb2, 0xec, 0x50, 0x8d, 0x53, 0x62, 0xff, 0xfc, 0x9e, 0xdf, 0xef, 0xd9, 0xcf, 0x70, - 0x8f, 0xf1, 0x9c, 0xc4, 0xd8, 0x3d, 0xc3, 0x8c, 0x93, 0x2c, 0x29, 0xbf, 0xce, 0x30, 0xa7, 0x9c, + 0x8f, 0xf1, 0x9c, 0xc4, 0xd8, 0x3d, 0xc5, 0x8c, 0x93, 0x2c, 0x29, 0xbf, 0xce, 0x30, 0xa7, 0x9c, 0xea, 0x9b, 0xb2, 0xea, 0xa8, 0xd9, 0xdd, 0x9d, 0x84, 0x26, 0x54, 0x94, 0xdc, 0xe2, 0x4f, 0xae, - 0xda, 0x35, 0x23, 0xca, 0x52, 0xca, 0xdc, 0x10, 0x31, 0xec, 0x9e, 0x75, 0x43, 0xcc, 0x51, 0xd7, + 0xda, 0x35, 0x23, 0xca, 0x52, 0xca, 0xdc, 0x10, 0x31, 0xec, 0x9e, 0x76, 0x43, 0xcc, 0x51, 0xd7, 0x8d, 0x28, 0xc9, 0x2a, 0x75, 0x34, 0xe2, 0xfd, 0x45, 0xbd, 0x18, 0xc8, 0xba, 0xfd, 0xbd, 0x0e, - 0x75, 0x0f, 0x31, 0xfc, 0x5a, 0xee, 0xf2, 0x24, 0x8a, 0xe8, 0x28, 0xe3, 0xfa, 0x11, 0xbc, 0x55, + 0x75, 0x0f, 0x31, 0xfc, 0x5a, 0xee, 0xf2, 0x24, 0x8a, 0xe8, 0x28, 0xe3, 0xfa, 0x21, 0xbc, 0x51, 0x30, 0x06, 0x48, 0x8e, 0x0d, 0xd0, 0x06, 0x9d, 0xe6, 0x41, 0xdb, 0x91, 0x6c, 0x8e, 0x20, 0x50, 0x6c, 0x4e, 0x01, 0x57, 0x38, 0xaf, 0x3e, 0x99, 0x5a, 0xc0, 0x6f, 0x86, 0xcb, 0x29, 0xfd, 0x13, 0x80, 0xdb, 0x34, 0x27, 0x09, 0xc9, 0xd0, 0x20, 0x50, 0xcd, 0x18, 0x6b, 0xed, 0x5a, 0xa7, 0x79, - 0xf0, 0xa0, 0xe4, 0x2b, 0xd6, 0x2f, 0xf8, 0x9e, 0x52, 0x92, 0x79, 0xcf, 0x2f, 0xa6, 0x96, 0x76, - 0x39, 0xb5, 0xee, 0x8f, 0x51, 0x3a, 0xe8, 0xd9, 0x55, 0x02, 0xfb, 0xeb, 0x4f, 0xab, 0x93, 0x10, + 0x70, 0xaf, 0xe4, 0x2b, 0xd6, 0x2f, 0xf8, 0x9e, 0x52, 0x92, 0x79, 0xcf, 0xcf, 0xa7, 0x96, 0x76, + 0x31, 0xb5, 0xee, 0x8e, 0x51, 0x3a, 0xe8, 0xd9, 0x55, 0x02, 0xfb, 0xeb, 0x4f, 0xab, 0x93, 0x10, 0xde, 0x1f, 0x85, 0x4e, 0x44, 0x53, 0x57, 0x75, 0x29, 0x3f, 0xfb, 0x2c, 0x7e, 0xeb, 0xf2, 0xf1, 0x10, 0x33, 0xc1, 0xc5, 0xfc, 0xad, 0x12, 0xae, 0xba, 0xd4, 0x3f, 0x00, 0xb8, 0x19, 0xe3, 0x01, - 0x4e, 0x10, 0xc7, 0x71, 0xf0, 0x26, 0xc7, 0xd8, 0xa8, 0xad, 0x52, 0x74, 0xa4, 0x14, 0xdd, 0x93, - 0x8a, 0xae, 0xc2, 0x6f, 0xa6, 0xe7, 0xf6, 0x02, 0xfc, 0x2c, 0xc7, 0x58, 0xff, 0x0c, 0xe0, 0x9d, - 0x25, 0x5d, 0x69, 0x51, 0x7d, 0x95, 0xa0, 0x63, 0x25, 0xc8, 0xa8, 0x0a, 0xfa, 0x27, 0x8f, 0xb6, + 0x4e, 0x10, 0xc7, 0x71, 0xf0, 0x26, 0xc7, 0xd8, 0xa8, 0xad, 0x52, 0x74, 0xa8, 0x14, 0xdd, 0x91, + 0x8a, 0x2e, 0xc3, 0xaf, 0xa7, 0xe7, 0xe6, 0x02, 0xfc, 0x2c, 0xc7, 0x58, 0xff, 0x0c, 0xe0, 0xad, + 0x25, 0x5d, 0x69, 0x51, 0x7d, 0x95, 0xa0, 0x23, 0x25, 0xc8, 0xa8, 0x0a, 0xfa, 0x27, 0x8f, 0xb6, 0x17, 0xf8, 0xd2, 0x24, 0x07, 0x6e, 0xe0, 0x2c, 0x0e, 0x38, 0x49, 0xb1, 0xb1, 0xde, 0x06, 0x9d, - 0x9a, 0x77, 0xf7, 0x72, 0x6a, 0x6d, 0xc9, 0xdd, 0xca, 0x8a, 0xed, 0xff, 0x87, 0xb3, 0xf8, 0x84, - 0xa4, 0xb8, 0xb7, 0xf1, 0xfe, 0xdc, 0xd2, 0xbe, 0x9c, 0x5b, 0x9a, 0xfd, 0x0d, 0xc0, 0xc6, 0x0b, - 0x9c, 0x13, 0x1a, 0xeb, 0x0f, 0x21, 0x64, 0x1c, 0xe5, 0x5c, 0xd2, 0x14, 0xd7, 0xa8, 0xe6, 0xff, + 0x9a, 0x77, 0xfb, 0x62, 0x6a, 0x6d, 0xc9, 0xdd, 0xca, 0x8a, 0xed, 0xff, 0x87, 0xb3, 0xf8, 0x98, + 0xa4, 0xb8, 0xb7, 0xf1, 0xfe, 0xcc, 0xd2, 0xbe, 0x9c, 0x59, 0x9a, 0xfd, 0x0d, 0xc0, 0xc6, 0x0b, + 0x9c, 0x13, 0x1a, 0xeb, 0xf7, 0x21, 0x64, 0x1c, 0xe5, 0x5c, 0xd2, 0x14, 0xd7, 0xa8, 0xe6, 0xff, 0x2f, 0x66, 0x0a, 0x8c, 0xde, 0x82, 0x8d, 0x01, 0xce, 0x12, 0xde, 0x37, 0xd6, 0x44, 0x49, 0x8d, - 0xf4, 0x08, 0x36, 0x50, 0x2a, 0x6e, 0xde, 0xca, 0x73, 0x79, 0x54, 0xd8, 0x70, 0xa3, 0x56, 0x15, + 0xf4, 0x08, 0x36, 0x50, 0x2a, 0x6e, 0xde, 0xca, 0x73, 0x79, 0x50, 0xd8, 0x70, 0xad, 0x56, 0x15, 0xb5, 0x6e, 0xc1, 0x26, 0x8a, 0x38, 0xa1, 0x59, 0x50, 0x54, 0x8d, 0x7a, 0x1b, 0x74, 0xd6, 0x7d, - 0x28, 0xa7, 0x4e, 0xc6, 0x43, 0xdc, 0xab, 0x8b, 0x6e, 0x7e, 0x03, 0xb8, 0xf7, 0x4a, 0x64, 0x51, - 0xf6, 0x44, 0xa2, 0x4a, 0x58, 0x4e, 0xe1, 0x8e, 0x08, 0x8b, 0xf2, 0xbd, 0x12, 0x1a, 0xdb, 0xb9, - 0x1a, 0x64, 0xe7, 0x7a, 0xdc, 0x54, 0x6c, 0xf4, 0xf0, 0x7a, 0x10, 0x03, 0xb8, 0x55, 0xd2, 0x0e, + 0x28, 0xa7, 0x8e, 0xc7, 0x43, 0xdc, 0xab, 0x8b, 0x6e, 0x7e, 0x03, 0xb8, 0xf7, 0x4a, 0x64, 0x51, + 0xf6, 0x44, 0xa2, 0x4a, 0x58, 0x4e, 0xe0, 0x8e, 0x08, 0x8b, 0xf2, 0xbd, 0x12, 0x1a, 0xdb, 0xb9, + 0x1c, 0x64, 0xe7, 0x6a, 0xdc, 0x54, 0x6c, 0xf4, 0xf0, 0x6a, 0x10, 0x03, 0xb8, 0x55, 0xd2, 0x0e, 0xc5, 0xee, 0x4c, 0x39, 0xd2, 0xaa, 0xd2, 0x4a, 0x71, 0x9e, 0xa9, 0x6e, 0x45, 0x4b, 0x9e, 0x53, - 0x05, 0x6c, 0xfb, 0x9b, 0x6a, 0x46, 0x2e, 0x67, 0xcb, 0x53, 0xf3, 0x5e, 0x5e, 0xcc, 0x4c, 0x30, + 0x05, 0x6c, 0xfb, 0x9b, 0x6a, 0x46, 0x2e, 0x67, 0xcb, 0x53, 0xf3, 0x5e, 0x9e, 0xcf, 0x4c, 0x30, 0x99, 0x99, 0xe0, 0xd7, 0xcc, 0x04, 0x1f, 0xe7, 0xa6, 0x36, 0x99, 0x9b, 0xda, 0x8f, 0xb9, 0xa9, - 0x9d, 0x3e, 0xfe, 0xcb, 0x5a, 0xe9, 0xc4, 0xfe, 0x31, 0x0a, 0x99, 0x5b, 0xbe, 0x5f, 0xdd, 0x43, - 0xf7, 0x9d, 0x1b, 0x0d, 0x10, 0x49, 0x17, 0x6f, 0x99, 0xf0, 0x3b, 0x6c, 0x88, 0x47, 0xe6, 0xf0, - 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x64, 0x23, 0x78, 0xaf, 0xea, 0x04, 0x00, 0x00, + 0x9d, 0x3c, 0xfe, 0xcb, 0x5a, 0xe9, 0xc4, 0xfe, 0x11, 0x0a, 0x99, 0x5b, 0xbe, 0x5f, 0xdd, 0x47, + 0xee, 0x3b, 0x37, 0x1a, 0x20, 0x92, 0x2e, 0xde, 0x32, 0xe1, 0x77, 0xd8, 0x10, 0x8f, 0xcc, 0xc3, + 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x53, 0xb9, 0xcf, 0x87, 0xea, 0x04, 0x00, 0x00, } func (m *BaseVestingAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/vesting/types/vesting_account.go b/x/claim/vesting/types/vesting_account.go index b0a1be5cb0..d3566d1f9e 100644 --- a/x/claim/vesting/types/vesting_account.go +++ b/x/claim/vesting/types/vesting_account.go @@ -12,8 +12,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/utils" - vestexported "github.com/Stride-Labs/stride/v13/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v14/utils" + vestexported "github.com/Stride-Labs/stride/v14/x/claim/vesting/exported" ) // Compile-time type assertions diff --git a/x/claim/vesting/types/vesting_account_test.go b/x/claim/vesting/types/vesting_account_test.go index c74961e0f3..ff2c891d10 100644 --- a/x/claim/vesting/types/vesting_account_test.go +++ b/x/claim/vesting/types/vesting_account_test.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v13/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" ) var ( diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go index 8f8cd7e3e8..6543534a6b 100644 --- a/x/epochs/client/cli/query.go +++ b/x/epochs/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/epochs/genesis.go b/x/epochs/genesis.go index 96eb5a0c65..3ff139034d 100644 --- a/x/epochs/genesis.go +++ b/x/epochs/genesis.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/epochs/keeper" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/keeper" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/epochs/genesis_test.go b/x/epochs/genesis_test.go index cae5b4308e..5042b8995e 100644 --- a/x/epochs/genesis_test.go +++ b/x/epochs/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/epochs" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/epochs" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) func TestGenesis(t *testing.T) { diff --git a/x/epochs/handler.go b/x/epochs/handler.go index d0484519ed..2c3063f534 100644 --- a/x/epochs/handler.go +++ b/x/epochs/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/epochs/keeper" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/keeper" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // NewHandler returns a handler for epochs module messages diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index 6ebb3a9ce6..5e35bc4e32 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -9,8 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // BeginBlocker of epochs module diff --git a/x/epochs/keeper/abci_test.go b/x/epochs/keeper/abci_test.go index 0f0d5275e1..e434dadf0f 100644 --- a/x/epochs/keeper/abci_test.go +++ b/x/epochs/keeper/abci_test.go @@ -4,8 +4,8 @@ import ( "fmt" "time" - "github.com/Stride-Labs/stride/v13/x/epochs" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochInfoChangesBeginBlockerAndInitGenesis() { diff --git a/x/epochs/keeper/epoch.go b/x/epochs/keeper/epoch.go index d81f701083..97bc568296 100644 --- a/x/epochs/keeper/epoch.go +++ b/x/epochs/keeper/epoch.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // GetEpochInfo returns epoch info by identifier diff --git a/x/epochs/keeper/epoch_test.go b/x/epochs/keeper/epoch_test.go index 6efe468feb..d2761ed056 100644 --- a/x/epochs/keeper/epoch_test.go +++ b/x/epochs/keeper/epoch_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochLifeCycle() { diff --git a/x/epochs/keeper/grpc_query.go b/x/epochs/keeper/grpc_query.go index 94e2795f73..fe819c240c 100644 --- a/x/epochs/keeper/grpc_query.go +++ b/x/epochs/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/epochs/keeper/grpc_query_test.go b/x/epochs/keeper/grpc_query_test.go index 94a7ec7eed..6c89dd3fa4 100644 --- a/x/epochs/keeper/grpc_query_test.go +++ b/x/epochs/keeper/grpc_query_test.go @@ -6,7 +6,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) func (suite *KeeperTestSuite) TestQueryEpochInfos() { diff --git a/x/epochs/keeper/hooks.go b/x/epochs/keeper/hooks.go index 72d50d948c..45b5cfa35f 100644 --- a/x/epochs/keeper/hooks.go +++ b/x/epochs/keeper/hooks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // AfterEpochEnd executes the indicated hook after epochs ends diff --git a/x/epochs/keeper/keeper.go b/x/epochs/keeper/keeper.go index bd0791695d..0194e74823 100644 --- a/x/epochs/keeper/keeper.go +++ b/x/epochs/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // Keeper of this module maintains collections of epochs and hooks. diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index cc1a6b5c07..c335efca41 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) type KeeperTestSuite struct { diff --git a/x/epochs/module.go b/x/epochs/module.go index a8244f8aaa..376290dc14 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -20,10 +20,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/epochs/client/cli" - "github.com/Stride-Labs/stride/v13/x/epochs/keeper" - "github.com/Stride-Labs/stride/v13/x/epochs/simulation" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/client/cli" + "github.com/Stride-Labs/stride/v14/x/epochs/keeper" + "github.com/Stride-Labs/stride/v14/x/epochs/simulation" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) var ( diff --git a/x/epochs/simulation/genesis.go b/x/epochs/simulation/genesis.go index 0f39be2d64..1ee1ef2d7a 100644 --- a/x/epochs/simulation/genesis.go +++ b/x/epochs/simulation/genesis.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // RandomizedGenState generates a random GenesisState for mint diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 2c8f531542..050e7138b5 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -175,7 +175,7 @@ var fileDescriptor_92af8154b2eb736d = []byte{ // 468 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x6f, 0xd3, 0x40, 0x14, 0xc7, 0x73, 0x24, 0x84, 0xe6, 0xda, 0x0a, 0x71, 0x2a, 0x70, 0x04, 0x61, 0x5b, 0x66, 0xb1, - 0x04, 0xd8, 0xb4, 0x45, 0x0c, 0xb0, 0x85, 0xdf, 0x88, 0xc9, 0x61, 0x40, 0x2c, 0x91, 0x93, 0x5c, + 0x04, 0xd8, 0xb4, 0x54, 0x0c, 0xb0, 0x85, 0xdf, 0x88, 0xc9, 0x61, 0x40, 0x2c, 0x91, 0x93, 0x5c, 0xce, 0x27, 0xd5, 0x3e, 0xcb, 0xf7, 0x8c, 0xc8, 0xc6, 0xcc, 0xd4, 0x91, 0x3f, 0xa9, 0x63, 0x47, 0x26, 0x83, 0x92, 0x8d, 0xb1, 0x7f, 0x01, 0xf2, 0x9d, 0x1d, 0x52, 0x02, 0xea, 0x66, 0xdf, 0xe7, 0xfb, 0xbe, 0xdf, 0x7b, 0x4f, 0xef, 0xf0, 0x6d, 0x05, 0xb9, 0x98, 0xb2, 0x80, 0x65, 0x72, 0x12, @@ -192,16 +192,16 @@ var fileDescriptor_92af8154b2eb736d = []byte{ 0x2b, 0xed, 0xab, 0x26, 0xac, 0x61, 0xee, 0xb7, 0x2a, 0x6a, 0xe5, 0x4e, 0xee, 0xe2, 0xdd, 0x49, 0x91, 0xe7, 0x2c, 0x85, 0x91, 0x1e, 0x2d, 0xed, 0x38, 0xc8, 0x6b, 0x87, 0x3b, 0xf5, 0xa1, 0x1e, 0x06, 0xf9, 0x82, 0x30, 0x3d, 0xa7, 0x1a, 0xad, 0xf5, 0x7d, 0xf9, 0xc2, 0xbe, 0xef, 0xd5, 0x7d, - 0xdb, 0xe6, 0x2a, 0xff, 0x73, 0x32, 0x53, 0xb8, 0xbe, 0x9e, 0x3c, 0x5c, 0x4d, 0xe4, 0x11, 0xbe, - 0x61, 0xf4, 0x13, 0x59, 0xa4, 0x20, 0x52, 0x6e, 0x0a, 0xd9, 0x94, 0x76, 0x1d, 0xe4, 0x6d, 0x85, - 0x7b, 0x9a, 0x3e, 0xab, 0xe1, 0xd0, 0x30, 0xf2, 0x14, 0xf7, 0xff, 0x95, 0x16, 0x33, 0xc1, 0x63, - 0xa0, 0x57, 0x74, 0xab, 0x37, 0x37, 0x02, 0x5f, 0x6b, 0xec, 0xbe, 0xc4, 0x3b, 0xaf, 0xcc, 0x0e, - 0x0e, 0x21, 0x02, 0x46, 0x1e, 0xe3, 0xae, 0xd9, 0x3e, 0x8a, 0x9c, 0xb6, 0xb7, 0x7d, 0x40, 0xfd, - 0x73, 0x3b, 0xe9, 0xaf, 0x16, 0x67, 0xd0, 0xa9, 0x1a, 0x0e, 0x6b, 0xf5, 0xe0, 0xed, 0xc9, 0xc2, - 0x42, 0xa7, 0x0b, 0x0b, 0xfd, 0x5c, 0x58, 0xe8, 0x78, 0x69, 0xb5, 0x4e, 0x97, 0x56, 0xeb, 0xfb, - 0xd2, 0x6a, 0x7d, 0x7c, 0xc8, 0x05, 0xc4, 0xc5, 0xd8, 0x9f, 0xc8, 0x24, 0x18, 0x6a, 0xaf, 0x07, - 0xef, 0xa2, 0xb1, 0x0a, 0xea, 0x87, 0xf0, 0x69, 0xff, 0x30, 0xf8, 0xdc, 0x3c, 0x07, 0x98, 0x67, - 0x4c, 0x8d, 0xbb, 0x7a, 0xbc, 0x87, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc4, 0xd4, 0xb5, 0xac, + 0xdb, 0xe6, 0x2a, 0xff, 0x73, 0x32, 0x53, 0xb8, 0xbe, 0x9e, 0x3c, 0x5c, 0x4d, 0xe4, 0x10, 0xdf, + 0x30, 0xfa, 0x89, 0x2c, 0x52, 0x10, 0x29, 0x37, 0x85, 0x6c, 0x4a, 0xbb, 0x0e, 0xf2, 0xb6, 0xc2, + 0x3d, 0x4d, 0x9f, 0xd5, 0x70, 0x68, 0x18, 0x79, 0x8a, 0xfb, 0xff, 0x4a, 0x8b, 0x99, 0xe0, 0x31, + 0xd0, 0x2b, 0xba, 0xd5, 0x9b, 0x1b, 0x81, 0xaf, 0x35, 0x76, 0x5f, 0xe2, 0x9d, 0x57, 0x66, 0x07, + 0x87, 0x10, 0x01, 0x23, 0x8f, 0x71, 0xd7, 0x6c, 0x1f, 0x45, 0x4e, 0xdb, 0xdb, 0x3e, 0xa0, 0xfe, + 0xb9, 0x9d, 0xf4, 0x57, 0x8b, 0x33, 0xe8, 0x54, 0x0d, 0x87, 0xb5, 0x7a, 0xf0, 0xf6, 0x64, 0x61, + 0xa1, 0xd3, 0x85, 0x85, 0x7e, 0x2e, 0x2c, 0x74, 0xbc, 0xb4, 0x5a, 0xa7, 0x4b, 0xab, 0xf5, 0x7d, + 0x69, 0xb5, 0x3e, 0x3e, 0xe4, 0x02, 0xe2, 0x62, 0xec, 0x4f, 0x64, 0x12, 0x0c, 0xb5, 0xd7, 0x83, + 0x77, 0xd1, 0x58, 0x05, 0xf5, 0x43, 0xf8, 0xb4, 0x7f, 0x18, 0x7c, 0x6e, 0x9e, 0x03, 0xcc, 0x33, + 0xa6, 0xc6, 0x5d, 0x3d, 0xde, 0x47, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb3, 0xe3, 0xad, 0x9d, 0x2c, 0x03, 0x00, 0x00, } diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index 104ba551bc..af2fafc930 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -317,7 +317,7 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ // 508 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x4d, 0x6f, 0xd3, 0x30, 0x18, 0xae, 0x57, 0x36, 0x69, 0xef, 0xb6, 0x8b, 0xc5, 0x47, 0xdb, 0xa1, 0x30, 0xc2, 0xd6, 0x16, - 0x04, 0x36, 0xed, 0x10, 0x48, 0x9c, 0x10, 0x08, 0x10, 0x08, 0x21, 0x08, 0x37, 0x2e, 0x23, 0xc9, + 0x04, 0x36, 0x2d, 0x13, 0x48, 0x9c, 0x10, 0x08, 0x10, 0x08, 0x21, 0x08, 0x37, 0x2e, 0x23, 0xc9, 0xbc, 0xcc, 0xd2, 0x66, 0x67, 0xb1, 0x3b, 0xb1, 0x0b, 0x07, 0x0e, 0x9c, 0x11, 0xdc, 0xb8, 0xf3, 0x5f, 0x76, 0x9c, 0xc4, 0x85, 0x13, 0x42, 0x2d, 0x3f, 0x04, 0xc5, 0xf6, 0xd6, 0x04, 0x52, 0xe5, 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x33, 0xbe, 0xcd, 0x28, 0x4b, 0x65, @@ -335,18 +335,18 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ 0xb2, 0x3d, 0x1a, 0x65, 0x19, 0x13, 0xda, 0xf8, 0x9d, 0x16, 0xe0, 0x01, 0xf0, 0x6d, 0x26, 0x34, 0xdf, 0xe1, 0x2c, 0x33, 0x05, 0x2c, 0x06, 0x85, 0x13, 0xff, 0x01, 0xb4, 0x2b, 0xb8, 0xee, 0x66, 0xd7, 0x60, 0x25, 0xb6, 0xe7, 0x5b, 0x26, 0xb3, 0xe1, 0x37, 0x83, 0xe5, 0xb8, 0x00, 0xf6, 0xef, - 0xc1, 0x85, 0x69, 0x33, 0xc5, 0xee, 0xeb, 0xac, 0x5f, 0x16, 0xb7, 0x56, 0x6a, 0xf4, 0x0e, 0xcc, - 0x4f, 0xfd, 0xea, 0x0b, 0xb5, 0xe0, 0xe1, 0xf7, 0x26, 0xcc, 0x1b, 0x41, 0xfc, 0x01, 0xe0, 0x0c, - 0xa3, 0xf0, 0xc6, 0x3f, 0xf4, 0xea, 0xa7, 0xd2, 0xe9, 0xd6, 0xc1, 0x6c, 0x38, 0xff, 0xea, 0xc7, - 0x1f, 0x7f, 0xbe, 0xce, 0xad, 0xe2, 0x36, 0x7d, 0x63, 0xf0, 0x7b, 0x61, 0xa4, 0x68, 0xe9, 0x75, - 0xe2, 0x2f, 0x08, 0x96, 0x8b, 0x85, 0xe2, 0x5e, 0x95, 0x76, 0xc5, 0xba, 0x3a, 0xfd, 0x7a, 0xa0, - 0x8b, 0x41, 0x4d, 0x8c, 0xeb, 0xb8, 0x37, 0x33, 0x06, 0x2d, 0xed, 0x0e, 0x7f, 0x42, 0xb0, 0x78, - 0xd6, 0x0a, 0x5e, 0x9f, 0x79, 0xdb, 0x62, 0x27, 0x1b, 0x35, 0x28, 0x97, 0xe5, 0xa6, 0xc9, 0xd2, - 0xc5, 0xeb, 0xb3, 0xb3, 0x98, 0x9f, 0x2d, 0x9e, 0x2f, 0xed, 0xf9, 0xf1, 0xd8, 0x43, 0x27, 0x63, - 0x0f, 0xfd, 0x1e, 0x7b, 0xe8, 0xf3, 0xc4, 0x6b, 0x9c, 0x4c, 0xbc, 0xc6, 0xcf, 0x89, 0xd7, 0x78, - 0x7b, 0x3b, 0xe1, 0x7a, 0x77, 0x14, 0x91, 0x58, 0xee, 0x3b, 0xa5, 0x5b, 0x2f, 0x0a, 0x52, 0x87, - 0x83, 0x4d, 0xfa, 0xfe, 0x54, 0x50, 0x1f, 0xa5, 0x4c, 0x45, 0x0b, 0xe6, 0x03, 0xb0, 0xf9, 0x37, - 0x00, 0x00, 0xff, 0xff, 0x5c, 0x2b, 0xf3, 0xdf, 0xa9, 0x04, 0x00, 0x00, + 0xc1, 0x85, 0x69, 0x33, 0xc5, 0xee, 0xeb, 0xac, 0x5f, 0x16, 0xb7, 0x56, 0x6a, 0x74, 0x13, 0xe6, + 0xa7, 0x7e, 0xf5, 0x85, 0x5a, 0xf0, 0xf0, 0x7b, 0x13, 0xe6, 0x8d, 0x20, 0xfe, 0x00, 0x70, 0x86, + 0x51, 0x78, 0xe3, 0x1f, 0x7a, 0xf5, 0x53, 0xe9, 0x74, 0xeb, 0x60, 0x36, 0x9c, 0x7f, 0xf5, 0xe3, + 0x8f, 0x3f, 0x5f, 0xe7, 0x56, 0x71, 0x9b, 0xbe, 0x31, 0xf8, 0xbd, 0x30, 0x52, 0xb4, 0xf4, 0x3a, + 0xf1, 0x17, 0x04, 0xcb, 0xc5, 0x42, 0x71, 0xaf, 0x4a, 0xbb, 0x62, 0x5d, 0x9d, 0x7e, 0x3d, 0xd0, + 0xc5, 0xa0, 0x26, 0xc6, 0x75, 0xdc, 0x9b, 0x19, 0x83, 0x96, 0x76, 0x87, 0x3f, 0x21, 0x58, 0x3c, + 0x6b, 0x05, 0xaf, 0xcf, 0xbc, 0x6d, 0xb1, 0x93, 0x8d, 0x1a, 0x94, 0xcb, 0x72, 0xd3, 0x64, 0xe9, + 0xe2, 0xf5, 0xd9, 0x59, 0xcc, 0xcf, 0x16, 0xcf, 0x97, 0xf6, 0xfc, 0x78, 0xec, 0xa1, 0x93, 0xb1, + 0x87, 0x7e, 0x8f, 0x3d, 0xf4, 0x79, 0xe2, 0x35, 0x4e, 0x26, 0x5e, 0xe3, 0xe7, 0xc4, 0x6b, 0xbc, + 0xbd, 0x9d, 0x70, 0xbd, 0x3b, 0x8a, 0x48, 0x2c, 0xf7, 0x9d, 0xd2, 0xad, 0x17, 0x05, 0xa9, 0xc3, + 0xc1, 0x26, 0x7d, 0x7f, 0x2a, 0xa8, 0x8f, 0x52, 0xa6, 0xa2, 0x05, 0xf3, 0x01, 0xb8, 0xf3, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x2b, 0x1c, 0xeb, 0xee, 0xa9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/client/cli/query.go b/x/icacallbacks/client/cli/query.go index 7d1ca4f016..c606f7eceb 100644 --- a/x/icacallbacks/client/cli/query.go +++ b/x/icacallbacks/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/icacallbacks/client/cli/query_callback_data.go b/x/icacallbacks/client/cli/query_callback_data.go index fc8780cb4c..a22cbe60e6 100644 --- a/x/icacallbacks/client/cli/query_callback_data.go +++ b/x/icacallbacks/client/cli/query_callback_data.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func CmdListCallbackData() *cobra.Command { diff --git a/x/icacallbacks/client/cli/query_callback_data_test.go b/x/icacallbacks/client/cli/query_callback_data_test.go index 4c3048aeef..d8b57f60bc 100644 --- a/x/icacallbacks/client/cli/query_callback_data_test.go +++ b/x/icacallbacks/client/cli/query_callback_data_test.go @@ -12,10 +12,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/testutil/network" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/client/cli/query_params.go b/x/icacallbacks/client/cli/query_params.go index c22d157bd0..c2bd38d209 100644 --- a/x/icacallbacks/client/cli/query_params.go +++ b/x/icacallbacks/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/icacallbacks/client/cli/tx.go b/x/icacallbacks/client/cli/tx.go index ec8243dc34..49a3c8e575 100644 --- a/x/icacallbacks/client/cli/tx.go +++ b/x/icacallbacks/client/cli/tx.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icacallbacks/genesis.go b/x/icacallbacks/genesis.go index 273962925e..48f3877769 100644 --- a/x/icacallbacks/genesis.go +++ b/x/icacallbacks/genesis.go @@ -3,8 +3,8 @@ package icacallbacks import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icacallbacks/genesis_test.go b/x/icacallbacks/genesis_test.go index 8974563704..2abb69e997 100644 --- a/x/icacallbacks/genesis_test.go +++ b/x/icacallbacks/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/icacallbacks" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/icacallbacks" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func TestGenesis(t *testing.T) { diff --git a/x/icacallbacks/handler.go b/x/icacallbacks/handler.go index 4158df9804..b039427912 100644 --- a/x/icacallbacks/handler.go +++ b/x/icacallbacks/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // NewHandler ... diff --git a/x/icacallbacks/ibc_module.go b/x/icacallbacks/ibc_module.go index 5e2292a63e..b5b3636fc4 100644 --- a/x/icacallbacks/ibc_module.go +++ b/x/icacallbacks/ibc_module.go @@ -10,8 +10,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) var _ porttypes.IBCModule = &IBCModule{} diff --git a/x/icacallbacks/icacallbacks.go b/x/icacallbacks/icacallbacks.go index 83f896149b..e964685fc1 100644 --- a/x/icacallbacks/icacallbacks.go +++ b/x/icacallbacks/icacallbacks.go @@ -11,7 +11,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // Parses ICA tx responses and returns a list of each serialized response diff --git a/x/icacallbacks/icacallbacks_test.go b/x/icacallbacks/icacallbacks_test.go index 8fdebd0efc..dd5a701f77 100644 --- a/x/icacallbacks/icacallbacks_test.go +++ b/x/icacallbacks/icacallbacks_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func TestParseTxMsgDataCurrent(t *testing.T) { diff --git a/x/icacallbacks/keeper/callback_data.go b/x/icacallbacks/keeper/callback_data.go index 37ac435062..7ed522a7c5 100644 --- a/x/icacallbacks/keeper/callback_data.go +++ b/x/icacallbacks/keeper/callback_data.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // SetCallbackData set a specific callbackData in the store from its index diff --git a/x/icacallbacks/keeper/callback_data_test.go b/x/icacallbacks/keeper/callback_data_test.go index 8067dd81a4..f34f03089c 100644 --- a/x/icacallbacks/keeper/callback_data_test.go +++ b/x/icacallbacks/keeper/callback_data_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query.go b/x/icacallbacks/keeper/grpc_query.go index ee837e6016..5802836474 100644 --- a/x/icacallbacks/keeper/grpc_query.go +++ b/x/icacallbacks/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icacallbacks/keeper/grpc_query_callback_data.go b/x/icacallbacks/keeper/grpc_query_callback_data.go index 290a2ffb30..728c75da81 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func (k Keeper) CallbackDataAll(c context.Context, req *types.QueryAllCallbackDataRequest) (*types.QueryAllCallbackDataResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_callback_data_test.go b/x/icacallbacks/keeper/grpc_query_callback_data_test.go index f809e51d5f..88fea17022 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data_test.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query_params.go b/x/icacallbacks/keeper/grpc_query_params.go index 42dbcc9ae1..bcf6dd412a 100644 --- a/x/icacallbacks/keeper/grpc_query_params.go +++ b/x/icacallbacks/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_params_test.go b/x/icacallbacks/keeper/grpc_query_params_test.go index 457d722c8b..3752c0f827 100644 --- a/x/icacallbacks/keeper/grpc_query_params_test.go +++ b/x/icacallbacks/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/icacallbacks/keeper/keeper.go b/x/icacallbacks/keeper/keeper.go index efa676ddb3..caed9fc1af 100644 --- a/x/icacallbacks/keeper/keeper.go +++ b/x/icacallbacks/keeper/keeper.go @@ -13,7 +13,7 @@ import ( ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" diff --git a/x/icacallbacks/keeper/msg_server.go b/x/icacallbacks/keeper/msg_server.go index 7dde2de518..f9094acae0 100644 --- a/x/icacallbacks/keeper/msg_server.go +++ b/x/icacallbacks/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) type msgServer struct { diff --git a/x/icacallbacks/keeper/params.go b/x/icacallbacks/keeper/params.go index 1405986491..16a74ce3cd 100644 --- a/x/icacallbacks/keeper/params.go +++ b/x/icacallbacks/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // GetParams get all parameters as types.Params diff --git a/x/icacallbacks/keeper/params_test.go b/x/icacallbacks/keeper/params_test.go index cdb40dc0b4..498072960a 100644 --- a/x/icacallbacks/keeper/params_test.go +++ b/x/icacallbacks/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func TestGetParams(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/convert.go b/x/icacallbacks/migrations/v2/convert.go index aebec1f800..1580500366 100644 --- a/x/icacallbacks/migrations/v2/convert.go +++ b/x/icacallbacks/migrations/v2/convert.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" "github.com/golang/protobuf/proto" //nolint:staticcheck - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const ( diff --git a/x/icacallbacks/migrations/v2/convert_test.go b/x/icacallbacks/migrations/v2/convert_test.go index 3683a6207f..81f8b54333 100644 --- a/x/icacallbacks/migrations/v2/convert_test.go +++ b/x/icacallbacks/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/stretchr/testify/require" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" ) func TestConvertDelegateCallback(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/migrations.go b/x/icacallbacks/migrations/v2/migrations.go index 7ae3ea6203..b551f0a824 100644 --- a/x/icacallbacks/migrations/v2/migrations.go +++ b/x/icacallbacks/migrations/v2/migrations.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func migrateCallbacks(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/icacallbacks/module.go b/x/icacallbacks/module.go index 0c8d9f2083..aec48d6c2a 100644 --- a/x/icacallbacks/module.go +++ b/x/icacallbacks/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) var ( diff --git a/x/icacallbacks/module_simulation.go b/x/icacallbacks/module_simulation.go index cd0075acec..3b6bce9636 100644 --- a/x/icacallbacks/module_simulation.go +++ b/x/icacallbacks/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v13/testutil/sample" - icacallbackssimulation "github.com/Stride-Labs/stride/v13/x/icacallbacks/simulation" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/testutil/sample" + icacallbackssimulation "github.com/Stride-Labs/stride/v14/x/icacallbacks/simulation" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // avoid unused import issue diff --git a/x/icacallbacks/types/callback_data.pb.go b/x/icacallbacks/types/callback_data.pb.go index ce23a8cae4..abb089177f 100644 --- a/x/icacallbacks/types/callback_data.pb.go +++ b/x/icacallbacks/types/callback_data.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_19b6f19ce856679b = []byte{ 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0x38, 0x1c, 0x74, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x81, 0x57, 0x66, 0x68, - 0xac, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xc5, 0xcc, 0x26, 0x66, 0x01, 0x00, 0x00, + 0xa2, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, + 0x04, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x6c, 0xee, 0x93, 0x66, 0x01, 0x00, 0x00, } func (m *CallbackData) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis.pb.go b/x/icacallbacks/types/genesis.pb.go index 82c01253ab..df9eccdb85 100644 --- a/x/icacallbacks/types/genesis.pb.go +++ b/x/icacallbacks/types/genesis.pb.go @@ -107,9 +107,9 @@ var fileDescriptor_8c333baddfa20681 = []byte{ 0x32, 0x8b, 0x4b, 0x9c, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0x6c, 0xbc, 0xae, - 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x8d, 0xf5, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, - 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfa, - 0xe6, 0x6b, 0xfd, 0xaf, 0x01, 0x00, 0x00, + 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x4d, 0xf4, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc2, + 0x4f, 0x49, 0x48, 0xaf, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis_test.go b/x/icacallbacks/types/genesis_test.go index 19695657f6..62f186384e 100644 --- a/x/icacallbacks/types/genesis_test.go +++ b/x/icacallbacks/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/icacallbacks/types/packet.pb.go b/x/icacallbacks/types/packet.pb.go index 1336299e8d..155522c31f 100644 --- a/x/icacallbacks/types/packet.pb.go +++ b/x/icacallbacks/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_e68b4c401320f2a0 = []byte{ 0x14, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x66, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0x60, 0xe3, 0x75, 0x7d, 0x12, 0x93, 0x8a, - 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd6, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0xb2, 0x51, 0xec, 0xf7, + 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd1, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x40, 0x1b, 0x73, 0x59, 0xf7, 0x00, 0x00, 0x00, } diff --git a/x/icacallbacks/types/params.pb.go b/x/icacallbacks/types/params.pb.go index 7a6aaa412b..46f57c0d9f 100644 --- a/x/icacallbacks/types/params.pb.go +++ b/x/icacallbacks/types/params.pb.go @@ -75,8 +75,8 @@ var fileDescriptor_4c402599e6cfed62 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xb3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0xf9, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0xd7, 0x94, 0x19, 0x1a, 0xeb, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, - 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xae, 0xae, 0x06, 0xfa, 0xb7, 0x00, 0x00, 0x00, + 0xd7, 0x94, 0x19, 0x9a, 0xe8, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, + 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x96, 0x07, 0x24, 0x4f, 0xb7, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/query.pb.go b/x/icacallbacks/types/query.pb.go index c322256632..1f49bdd9c7 100644 --- a/x/icacallbacks/types/query.pb.go +++ b/x/icacallbacks/types/query.pb.go @@ -310,39 +310,39 @@ func init() { proto.RegisterFile("stride/icacallbacks/query.proto", fileDescript var fileDescriptor_5e73b99abb7e91c2 = []byte{ // 521 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4f, 0x6b, 0x14, 0x31, - 0x18, 0xc6, 0x37, 0xb5, 0x2e, 0x98, 0x56, 0x84, 0xb4, 0x07, 0xd9, 0x96, 0x69, 0x3b, 0x07, 0xb7, - 0x0a, 0x26, 0xdd, 0x16, 0x0a, 0x1e, 0x44, 0x5b, 0xff, 0xf4, 0x60, 0x0f, 0xeb, 0x7a, 0xf3, 0x22, - 0xef, 0x4c, 0xc3, 0x38, 0x34, 0x3b, 0x99, 0x6e, 0xb2, 0xc5, 0x45, 0xbc, 0x88, 0x47, 0x0f, 0x82, - 0xdf, 0xc3, 0x9b, 0x17, 0x3f, 0x41, 0x8f, 0x05, 0x2f, 0x9e, 0x44, 0x76, 0xfd, 0x20, 0xb2, 0x49, - 0xb6, 0xce, 0xd0, 0x4c, 0x97, 0xf6, 0x16, 0x92, 0xe7, 0x7d, 0x9e, 0xdf, 0x3b, 0xef, 0xcb, 0xe0, - 0x15, 0xa5, 0x7b, 0xe9, 0x01, 0x67, 0x69, 0x0c, 0x31, 0x08, 0x11, 0x41, 0x7c, 0xa8, 0xd8, 0x51, - 0x9f, 0xf7, 0x06, 0x34, 0xef, 0x49, 0x2d, 0xc9, 0x82, 0x15, 0xd0, 0xa2, 0xa0, 0xb1, 0x98, 0xc8, - 0x44, 0x9a, 0x77, 0x36, 0x3e, 0x59, 0x69, 0x63, 0x39, 0x91, 0x32, 0x11, 0x9c, 0x41, 0x9e, 0x32, - 0xc8, 0x32, 0xa9, 0x41, 0xa7, 0x32, 0x53, 0xee, 0xf5, 0x5e, 0x2c, 0x55, 0x57, 0x2a, 0x16, 0x81, - 0xe2, 0x36, 0x81, 0x1d, 0xb7, 0x22, 0xae, 0xa1, 0xc5, 0x72, 0x48, 0xd2, 0xcc, 0x88, 0x9d, 0x76, - 0xd5, 0x47, 0x95, 0x43, 0x0f, 0xba, 0x13, 0xb7, 0xa6, 0x4f, 0x31, 0x39, 0xbd, 0x39, 0x00, 0x0d, - 0x56, 0x18, 0x2e, 0x62, 0xf2, 0x72, 0x1c, 0xd6, 0x36, 0xd5, 0x1d, 0x7e, 0xd4, 0xe7, 0x4a, 0x87, - 0x6d, 0xbc, 0x50, 0xba, 0x55, 0xb9, 0xcc, 0x14, 0x27, 0x0f, 0x70, 0xdd, 0xa6, 0xdc, 0x46, 0xab, - 0x68, 0x7d, 0x6e, 0x73, 0x89, 0x7a, 0xba, 0xa7, 0xb6, 0x68, 0x77, 0xf6, 0xe4, 0xf7, 0x4a, 0xad, - 0xe3, 0x0a, 0xc2, 0xc7, 0x78, 0xc9, 0x38, 0xee, 0x71, 0xfd, 0xc4, 0x29, 0x9f, 0x82, 0x06, 0x17, - 0x48, 0xd6, 0xf0, 0xfc, 0x19, 0xdd, 0x21, 0x1f, 0x18, 0xff, 0x1b, 0x9d, 0xb9, 0xc9, 0xdd, 0x0b, - 0x3e, 0x08, 0x05, 0x5e, 0xf6, 0x3b, 0x38, 0xb8, 0x7d, 0x7c, 0xb3, 0xd4, 0xa0, 0x63, 0x5c, 0xf3, - 0x32, 0x16, 0x1d, 0x1c, 0xe9, 0x19, 0xc0, 0xf8, 0x2e, 0xe4, 0x8e, 0x77, 0x47, 0x08, 0x1f, 0xef, - 0x73, 0x8c, 0xff, 0x4f, 0xc5, 0x25, 0xdd, 0xa1, 0x76, 0x84, 0x74, 0x3c, 0x42, 0x6a, 0x97, 0xc4, - 0x8d, 0x90, 0xb6, 0x21, 0xe1, 0xae, 0xb6, 0x53, 0xa8, 0x0c, 0xbf, 0x23, 0xd7, 0xd5, 0xb9, 0x9c, - 0xea, 0xae, 0xae, 0x5d, 0xb9, 0x2b, 0xb2, 0x57, 0xc2, 0x9e, 0x31, 0xd8, 0xcd, 0xa9, 0xd8, 0x16, - 0xa5, 0xc8, 0xbd, 0xf9, 0x69, 0x16, 0x5f, 0x37, 0xdc, 0xe4, 0x33, 0xc2, 0x75, 0x3b, 0x71, 0xd2, - 0xf4, 0x42, 0x9d, 0x5f, 0xaf, 0xc6, 0xfa, 0x74, 0xa1, 0xcd, 0x0c, 0xd9, 0xc7, 0x9f, 0x7f, 0xbf, - 0xce, 0xdc, 0x25, 0x4d, 0xf6, 0xca, 0x54, 0xdc, 0xdf, 0x87, 0x48, 0xb1, 0xea, 0xf5, 0x27, 0x3f, - 0x10, 0x9e, 0x2f, 0x7e, 0x06, 0xb2, 0x51, 0x9d, 0xe5, 0xdf, 0xc5, 0x46, 0xeb, 0x12, 0x15, 0x0e, - 0xf3, 0x99, 0xc1, 0x7c, 0x44, 0x1e, 0x4e, 0xc5, 0x2c, 0x0d, 0x93, 0xbd, 0x2f, 0x2e, 0xfd, 0x07, - 0xf2, 0x0d, 0xe1, 0x5b, 0x45, 0xff, 0x1d, 0x21, 0x2e, 0xe2, 0xf7, 0xef, 0xe6, 0x45, 0xfc, 0x15, - 0x5b, 0x16, 0x6e, 0x1b, 0xfe, 0x0d, 0x42, 0x2f, 0xc7, 0xbf, 0xdb, 0x3e, 0x19, 0x06, 0xe8, 0x74, - 0x18, 0xa0, 0x3f, 0xc3, 0x00, 0x7d, 0x19, 0x05, 0xb5, 0xd3, 0x51, 0x50, 0xfb, 0x35, 0x0a, 0x6a, - 0xaf, 0xb7, 0x93, 0x54, 0xbf, 0xed, 0x47, 0x34, 0x96, 0x5d, 0x9f, 0xe7, 0x71, 0x6b, 0x8b, 0xbd, - 0x2b, 0x3b, 0xeb, 0x41, 0xce, 0x55, 0x54, 0x37, 0xbf, 0xa5, 0xad, 0x7f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x96, 0xfd, 0xef, 0xd6, 0x79, 0x05, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0x13, 0x31, + 0x18, 0xc6, 0xe3, 0x52, 0x22, 0xe1, 0x16, 0x21, 0xb9, 0x1d, 0x50, 0x5a, 0x5d, 0xdb, 0x1b, 0x48, + 0x41, 0xc2, 0x6e, 0x0a, 0xaa, 0xc4, 0x80, 0xa0, 0xe5, 0x4f, 0x07, 0x3a, 0x84, 0xb0, 0xb1, 0xa0, + 0xf7, 0xae, 0xd6, 0x71, 0xaa, 0x73, 0xbe, 0xc6, 0x4e, 0x45, 0x84, 0x58, 0x10, 0x23, 0x03, 0x12, + 0xdf, 0x83, 0x8d, 0x85, 0x4f, 0xd0, 0xb1, 0x12, 0x0b, 0x13, 0x42, 0x09, 0x1f, 0x04, 0xc5, 0x76, + 0xca, 0x9d, 0xea, 0x6b, 0xd4, 0x6e, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, + 0x45, 0xe9, 0x5e, 0xba, 0xcf, 0x59, 0x1a, 0x43, 0x0c, 0x42, 0x44, 0x10, 0x1f, 0x28, 0x76, 0xd8, + 0xe7, 0xbd, 0x01, 0xcd, 0x7b, 0x52, 0x4b, 0xb2, 0x60, 0x05, 0xb4, 0x28, 0x68, 0x2c, 0x26, 0x32, + 0x91, 0xe6, 0x9d, 0x8d, 0x4f, 0x56, 0xda, 0x58, 0x4e, 0xa4, 0x4c, 0x04, 0x67, 0x90, 0xa7, 0x0c, + 0xb2, 0x4c, 0x6a, 0xd0, 0xa9, 0xcc, 0x94, 0x7b, 0xbd, 0x13, 0x4b, 0xd5, 0x95, 0x8a, 0x45, 0xa0, + 0xb8, 0x4d, 0x60, 0x47, 0xad, 0x88, 0x6b, 0x68, 0xb1, 0x1c, 0x92, 0x34, 0x33, 0x62, 0xa7, 0x5d, + 0xf5, 0x51, 0xe5, 0xd0, 0x83, 0xee, 0xc4, 0xad, 0xe9, 0x53, 0x4c, 0x4e, 0x6f, 0xf6, 0x41, 0x83, + 0x15, 0x86, 0x8b, 0x98, 0xbc, 0x1c, 0x87, 0xb5, 0x4d, 0x75, 0x87, 0x1f, 0xf6, 0xb9, 0xd2, 0x61, + 0x1b, 0x2f, 0x94, 0x6e, 0x55, 0x2e, 0x33, 0xc5, 0xc9, 0x03, 0x5c, 0xb7, 0x29, 0x37, 0xd1, 0x2a, + 0x5a, 0x9f, 0xdb, 0x5c, 0xa2, 0x9e, 0xee, 0xa9, 0x2d, 0xda, 0x99, 0x3d, 0xfe, 0xbd, 0x52, 0xeb, + 0xb8, 0x82, 0xf0, 0x31, 0x5e, 0x32, 0x8e, 0xbb, 0x5c, 0x3f, 0x71, 0xca, 0xa7, 0xa0, 0xc1, 0x05, + 0x92, 0x35, 0x3c, 0x7f, 0x4a, 0x77, 0xc0, 0x07, 0xc6, 0xff, 0x5a, 0x67, 0x6e, 0x72, 0xf7, 0x82, + 0x0f, 0x42, 0x81, 0x97, 0xfd, 0x0e, 0x0e, 0x6e, 0x0f, 0x5f, 0x2f, 0x35, 0xe8, 0x18, 0xd7, 0xbc, + 0x8c, 0x45, 0x07, 0x47, 0x7a, 0x0a, 0x30, 0xbe, 0x0b, 0xb9, 0xe3, 0xdd, 0x16, 0xc2, 0xc7, 0xfb, + 0x1c, 0xe3, 0xff, 0x53, 0x71, 0x49, 0xb7, 0xa8, 0x1d, 0x21, 0x1d, 0x8f, 0x90, 0xda, 0x25, 0x71, + 0x23, 0xa4, 0x6d, 0x48, 0xb8, 0xab, 0xed, 0x14, 0x2a, 0xc3, 0xef, 0xc8, 0x75, 0x75, 0x26, 0xa7, + 0xba, 0xab, 0x2b, 0x97, 0xee, 0x8a, 0xec, 0x96, 0xb0, 0x67, 0x0c, 0x76, 0x73, 0x2a, 0xb6, 0x45, + 0x29, 0x72, 0x6f, 0x7e, 0x9a, 0xc5, 0x57, 0x0d, 0x37, 0xf9, 0x8c, 0x70, 0xdd, 0x4e, 0x9c, 0x34, + 0xbd, 0x50, 0x67, 0xd7, 0xab, 0xb1, 0x3e, 0x5d, 0x68, 0x33, 0x43, 0xf6, 0xf1, 0xe7, 0xdf, 0xaf, + 0x33, 0xb7, 0x49, 0x93, 0xbd, 0x32, 0x15, 0x77, 0xf7, 0x20, 0x52, 0xac, 0x7a, 0xfd, 0xc9, 0x0f, + 0x84, 0xe7, 0x8b, 0x9f, 0x81, 0x6c, 0x54, 0x67, 0xf9, 0x77, 0xb1, 0xd1, 0xba, 0x40, 0x85, 0xc3, + 0x7c, 0x66, 0x30, 0x1f, 0x91, 0x87, 0x53, 0x31, 0x4b, 0xc3, 0x64, 0xef, 0x8b, 0x4b, 0xff, 0x81, + 0x7c, 0x43, 0xf8, 0x46, 0xd1, 0x7f, 0x5b, 0x88, 0xf3, 0xf8, 0xfd, 0xbb, 0x79, 0x1e, 0x7f, 0xc5, + 0x96, 0x85, 0x5b, 0x86, 0x7f, 0x83, 0xd0, 0x8b, 0xf1, 0xef, 0xb4, 0x8f, 0x87, 0x01, 0x3a, 0x19, + 0x06, 0xe8, 0xcf, 0x30, 0x40, 0x5f, 0x46, 0x41, 0xed, 0x64, 0x14, 0xd4, 0x7e, 0x8d, 0x82, 0xda, + 0xeb, 0xad, 0x24, 0xd5, 0x6f, 0xfb, 0x11, 0x8d, 0x65, 0xd7, 0xe7, 0x79, 0xd4, 0xba, 0xcf, 0xde, + 0x95, 0x9d, 0xf5, 0x20, 0xe7, 0x2a, 0xaa, 0x9b, 0xdf, 0xd2, 0xbd, 0x7f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0xae, 0x54, 0xcd, 0x63, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/tx.pb.go b/x/icacallbacks/types/tx.pb.go index b35a46b91c..bcbe1d1bc5 100644 --- a/x/icacallbacks/types/tx.pb.go +++ b/x/icacallbacks/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_c4981fec5f7fee51 = []byte{ 0xb1, 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, - 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0xc6, 0xfa, 0x15, 0x68, + 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0x26, 0xfa, 0x15, 0x68, 0x16, 0x56, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x2d, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xcf, 0x3a, 0x97, 0x74, 0x94, 0x00, 0x00, 0x00, + 0xf7, 0x93, 0xb5, 0xc1, 0x94, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/client/cli/cli_test.go b/x/icaoracle/client/cli/cli_test.go index 4c036a9aaf..94a793a6dd 100644 --- a/x/icaoracle/client/cli/cli_test.go +++ b/x/icaoracle/client/cli/cli_test.go @@ -11,11 +11,11 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - cmdcfg "github.com/Stride-Labs/stride/v13/cmd/strided/config" - strideclitestutil "github.com/Stride-Labs/stride/v13/testutil/cli" - "github.com/Stride-Labs/stride/v13/testutil/network" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app" + cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" + strideclitestutil "github.com/Stride-Labs/stride/v14/testutil/cli" + "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/client/cli/query.go b/x/icaoracle/client/cli/query.go index 76f9b99353..f8c6b575a1 100644 --- a/x/icaoracle/client/cli/query.go +++ b/x/icaoracle/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/gogo/protobuf/proto" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) const ( diff --git a/x/icaoracle/client/cli/query_test.go b/x/icaoracle/client/cli/query_test.go index 42e2073f0e..e52eccef48 100644 --- a/x/icaoracle/client/cli/query_test.go +++ b/x/icaoracle/client/cli/query_test.go @@ -1,6 +1,6 @@ package cli_test -import "github.com/Stride-Labs/stride/v13/x/icaoracle/client/cli" +import "github.com/Stride-Labs/stride/v14/x/icaoracle/client/cli" func (s *ClientTestSuite) TestCmdQueryOracle() { args := []string{ diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go index 7bacb224b3..93bf38e7f6 100644 --- a/x/icaoracle/client/cli/tx.go +++ b/x/icaoracle/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icaoracle/client/cli/tx_test.go b/x/icaoracle/client/cli/tx_test.go index 9220937284..5cf284ab14 100644 --- a/x/icaoracle/client/cli/tx_test.go +++ b/x/icaoracle/client/cli/tx_test.go @@ -1,7 +1,7 @@ package cli_test import ( - "github.com/Stride-Labs/stride/v13/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v14/x/icaoracle/client/cli" ) func (s *ClientTestSuite) TestCmdRestoreOracleICA() { diff --git a/x/icaoracle/ibc_middleware.go b/x/icaoracle/ibc_middleware.go index 7d9ea72b7e..d9e1dfef31 100644 --- a/x/icaoracle/ibc_middleware.go +++ b/x/icaoracle/ibc_middleware.go @@ -11,7 +11,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/icaoracle/keeper/events.go b/x/icaoracle/keeper/events.go index d19cf04269..0c51ccf8e8 100644 --- a/x/icaoracle/keeper/events.go +++ b/x/icaoracle/keeper/events.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // Emits an event for an oracle update diff --git a/x/icaoracle/keeper/genesis.go b/x/icaoracle/keeper/genesis.go index 9a5d2a22a6..d06866d3ee 100644 --- a/x/icaoracle/keeper/genesis.go +++ b/x/icaoracle/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icaoracle/keeper/genesis_test.go b/x/icaoracle/keeper/genesis_test.go index 394ac977b2..49d2e4a996 100644 --- a/x/icaoracle/keeper/genesis_test.go +++ b/x/icaoracle/keeper/genesis_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGenesis() { diff --git a/x/icaoracle/keeper/grpc_query.go b/x/icaoracle/keeper/grpc_query.go index dafe3e1f21..054d817e2e 100644 --- a/x/icaoracle/keeper/grpc_query.go +++ b/x/icaoracle/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icaoracle/keeper/grpc_query_test.go b/x/icaoracle/keeper/grpc_query_test.go index 99cf725ca1..9f669839d9 100644 --- a/x/icaoracle/keeper/grpc_query_test.go +++ b/x/icaoracle/keeper/grpc_query_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) TestQueryOracle() { diff --git a/x/icaoracle/keeper/ibc.go b/x/icaoracle/keeper/ibc.go index 9c84d2e280..5efcea3679 100644 --- a/x/icaoracle/keeper/ibc.go +++ b/x/icaoracle/keeper/ibc.go @@ -10,8 +10,8 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go index 1371377458..06193a7879 100644 --- a/x/icaoracle/keeper/ibc_test.go +++ b/x/icaoracle/keeper/ibc_test.go @@ -10,9 +10,9 @@ import ( proto "github.com/cosmos/gogoproto/proto" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // ------------------------------------------ diff --git a/x/icaoracle/keeper/icacallbacks.go b/x/icaoracle/keeper/icacallbacks.go index 5b981a882a..8a20f3a3f8 100644 --- a/x/icaoracle/keeper/icacallbacks.go +++ b/x/icaoracle/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) const ( diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go index 85e6b7e061..dd8cc00c83 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go index 6a9b3a1700..ef8e3b68a3 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) type InstantiateOracleCallbackTestCase struct { diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle.go b/x/icaoracle/keeper/icacallbacks_update_oracle.go index 1393ebf3d1..c48a12addb 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go index db1c1598c1..378e6b4e9f 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestUpdateOracleCallback() types.Metric { diff --git a/x/icaoracle/keeper/icaoracle.go b/x/icaoracle/keeper/icaoracle.go index 5f22e393b1..5df6a0c073 100644 --- a/x/icaoracle/keeper/icaoracle.go +++ b/x/icaoracle/keeper/icaoracle.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go index 9b74a4534f..cbee85bc82 100644 --- a/x/icaoracle/keeper/icaoracle_test.go +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -5,9 +5,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) type SubmitMetricUpdateTestCase struct { diff --git a/x/icaoracle/keeper/keeper.go b/x/icaoracle/keeper/keeper.go index 186ec1dfdb..83aae9054b 100644 --- a/x/icaoracle/keeper/keeper.go +++ b/x/icaoracle/keeper/keeper.go @@ -10,7 +10,7 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) type Keeper struct { diff --git a/x/icaoracle/keeper/keeper_test.go b/x/icaoracle/keeper/keeper_test.go index 6be5254c14..c480c39835 100644 --- a/x/icaoracle/keeper/keeper_test.go +++ b/x/icaoracle/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/metric.go b/x/icaoracle/keeper/metric.go index 2be15aeb55..ad39d90015 100644 --- a/x/icaoracle/keeper/metric.go +++ b/x/icaoracle/keeper/metric.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // Stores a metric in the main metric store and then either diff --git a/x/icaoracle/keeper/metric_test.go b/x/icaoracle/keeper/metric_test.go index 02b9311ec8..553ed6c422 100644 --- a/x/icaoracle/keeper/metric_test.go +++ b/x/icaoracle/keeper/metric_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "strconv" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // Helper function to create 5 metric objects with various attributes diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go index 363f3aee04..5b8785729e 100644 --- a/x/icaoracle/keeper/msg_server.go +++ b/x/icaoracle/keeper/msg_server.go @@ -12,7 +12,7 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) type msgServer struct { diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go index b74a14c31a..f5ef37f71e 100644 --- a/x/icaoracle/keeper/msg_server_add_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestAddOracle() types.MsgAddOracle { diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go index cc3a6f8383..d23deb2f34 100644 --- a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) type InstantiateOracleTestCase struct { diff --git a/x/icaoracle/keeper/msg_server_remove_oracle_test.go b/x/icaoracle/keeper/msg_server_remove_oracle_test.go index e91b3af72b..8f737bcfa4 100644 --- a/x/icaoracle/keeper/msg_server_remove_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_remove_oracle_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovRemoveOracle() { diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go index 69e4e2d0c6..ab5ccba8f2 100644 --- a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -8,7 +8,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) type RestoreOracleICATestCase struct { diff --git a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go index e1ea5f220e..08f47ecb64 100644 --- a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovToggleOracle() { diff --git a/x/icaoracle/keeper/oracle.go b/x/icaoracle/keeper/oracle.go index 06a6541759..8890ced92e 100644 --- a/x/icaoracle/keeper/oracle.go +++ b/x/icaoracle/keeper/oracle.go @@ -7,7 +7,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // Stores/updates an oracle object in the store diff --git a/x/icaoracle/keeper/oracle_test.go b/x/icaoracle/keeper/oracle_test.go index 72f64c67b9..1676e64ef5 100644 --- a/x/icaoracle/keeper/oracle_test.go +++ b/x/icaoracle/keeper/oracle_test.go @@ -5,7 +5,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGetOracle() { diff --git a/x/icaoracle/module.go b/x/icaoracle/module.go index 21e36f23b7..99c85e2322 100644 --- a/x/icaoracle/module.go +++ b/x/icaoracle/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/icaoracle/client/cli" - "github.com/Stride-Labs/stride/v13/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/types/callbacks.pb.go b/x/icaoracle/types/callbacks.pb.go index 29cc1e2818..ca2f4ec8c6 100644 --- a/x/icaoracle/types/callbacks.pb.go +++ b/x/icaoracle/types/callbacks.pb.go @@ -141,9 +141,9 @@ var fileDescriptor_7b4c39df2554f0a2 = []byte{ 0x08, 0xaa, 0xce, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0xa6, 0xe8, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xd6, - 0x55, 0xf3, 0x64, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x90, + 0x80, 0x21, 0x64, 0x01, 0x00, 0x00, } func (m *InstantiateOracleCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go index 9445914569..fd33fe03ca 100644 --- a/x/icaoracle/types/contract.pb.go +++ b/x/icaoracle/types/contract.pb.go @@ -217,28 +217,28 @@ var fileDescriptor_8bf036e49b48ee03 = []byte{ // 375 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xc1, 0xae, 0xd2, 0x40, 0x14, 0x86, 0xa9, 0x08, 0x89, 0x53, 0x48, 0x70, 0x74, 0xd1, 0x85, 0x29, 0x88, 0x1b, 0x36, 0xb6, - 0x51, 0x5e, 0x40, 0x25, 0x26, 0x92, 0xd8, 0x68, 0x90, 0x95, 0x9b, 0x3a, 0x9d, 0x1e, 0xdb, 0x09, - 0x6d, 0xa7, 0x99, 0x39, 0x25, 0xf0, 0x16, 0x3e, 0x90, 0x0f, 0xe0, 0x92, 0xa5, 0xcb, 0x1b, 0x78, - 0x91, 0x1b, 0x66, 0x7a, 0xe1, 0xde, 0xbb, 0x3b, 0xe7, 0xfb, 0xff, 0x93, 0xff, 0xcc, 0x1c, 0x32, - 0xd6, 0xa8, 0x44, 0x0a, 0xa1, 0xe0, 0x4c, 0x2a, 0xc6, 0x0b, 0x08, 0xb9, 0xac, 0x50, 0x31, 0x8e, - 0x41, 0xad, 0x24, 0x4a, 0x3a, 0xb2, 0x86, 0xe0, 0x62, 0x98, 0x6a, 0xf2, 0x2a, 0xd2, 0xd9, 0xb2, - 0xd2, 0xc8, 0x2a, 0x14, 0x0c, 0xe1, 0x9b, 0xe1, 0x8b, 0x76, 0x8e, 0xbe, 0x21, 0x43, 0x96, 0x96, - 0xa2, 0x8a, 0x59, 0x9a, 0x2a, 0xd0, 0xda, 0x73, 0x26, 0xce, 0xec, 0xd9, 0x6a, 0x60, 0xe0, 0x47, - 0xcb, 0x68, 0x40, 0x5e, 0xa0, 0x62, 0x95, 0xfe, 0x0d, 0x2a, 0xe6, 0x39, 0xab, 0x2a, 0x28, 0x62, - 0x91, 0x7a, 0x4f, 0x8c, 0xf5, 0xf9, 0x9d, 0xb4, 0xb0, 0xca, 0x32, 0x9d, 0xfe, 0x32, 0xa1, 0x9f, - 0x77, 0xc0, 0x1b, 0xbc, 0x44, 0x7d, 0x97, 0x1a, 0x23, 0x40, 0x25, 0x38, 0xfd, 0x40, 0xdc, 0x5a, - 0x6a, 0x8c, 0x4b, 0xd3, 0x9a, 0x48, 0xf7, 0xfd, 0x38, 0x78, 0xbc, 0x7c, 0x10, 0xe9, 0xec, 0x3a, - 0xb5, 0x22, 0xf5, 0xa5, 0x9e, 0xfe, 0x75, 0xc8, 0xf0, 0x81, 0x4a, 0x47, 0xa4, 0xbb, 0x81, 0x7d, - 0xbb, 0xfe, 0xb9, 0xa4, 0x2f, 0x49, 0x6f, 0xcb, 0x8a, 0x06, 0xda, 0x3d, 0x6d, 0x43, 0xc7, 0xc4, - 0xb5, 0xb1, 0x31, 0xee, 0x6b, 0xf0, 0xba, 0x46, 0x23, 0x16, 0xad, 0xf7, 0xb5, 0x31, 0x34, 0x75, - 0xca, 0x10, 0x62, 0x14, 0x25, 0x78, 0x4f, 0x27, 0xce, 0xac, 0xbb, 0x22, 0x16, 0xad, 0x45, 0x09, - 0xf4, 0x35, 0x19, 0x24, 0x85, 0xe4, 0x9b, 0x38, 0x07, 0x91, 0xe5, 0xe8, 0xf5, 0x8c, 0xc3, 0x35, - 0xec, 0x8b, 0x41, 0xd4, 0x27, 0x84, 0x21, 0x2a, 0x91, 0x34, 0x08, 0xda, 0xeb, 0xdb, 0x8c, 0x2b, - 0xf9, 0x14, 0xfd, 0x3b, 0xfa, 0xce, 0xe1, 0xe8, 0x3b, 0x37, 0x47, 0xdf, 0xf9, 0x73, 0xf2, 0x3b, - 0x87, 0x93, 0xdf, 0xf9, 0x7f, 0xf2, 0x3b, 0x3f, 0xe7, 0x99, 0xc0, 0xbc, 0x49, 0x02, 0x2e, 0xcb, - 0xf0, 0x87, 0xf9, 0x8f, 0xb7, 0x5f, 0x59, 0xa2, 0xc3, 0xf6, 0xf2, 0xdb, 0x77, 0xf3, 0x70, 0x77, - 0xef, 0xfe, 0xe7, 0x37, 0xe8, 0xa4, 0x6f, 0xae, 0x3f, 0xbf, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x51, - 0xef, 0xb0, 0x04, 0x20, 0x02, 0x00, 0x00, + 0x51, 0x7c, 0x00, 0x95, 0x98, 0x48, 0x62, 0xa3, 0x41, 0x56, 0x6e, 0xea, 0x74, 0x7a, 0x6c, 0x27, + 0xb4, 0x9d, 0x66, 0xe6, 0x94, 0xc0, 0x5b, 0xf8, 0x40, 0x3e, 0x80, 0x4b, 0x96, 0x2e, 0x0d, 0xbc, + 0xc8, 0x0d, 0x33, 0xbd, 0x70, 0xef, 0xdd, 0x9d, 0xf3, 0xfd, 0xff, 0xc9, 0x7f, 0x66, 0x0e, 0x19, + 0x6b, 0x54, 0x22, 0x85, 0x50, 0x70, 0x26, 0x15, 0xe3, 0x05, 0x84, 0x5c, 0x56, 0xa8, 0x18, 0xc7, + 0xa0, 0x56, 0x12, 0x25, 0x1d, 0x59, 0x43, 0x70, 0x31, 0x4c, 0x35, 0x79, 0x11, 0xe9, 0x6c, 0x59, + 0x69, 0x64, 0x15, 0x0a, 0x86, 0xf0, 0xd5, 0xf0, 0x45, 0x3b, 0x47, 0x5f, 0x91, 0x21, 0x4b, 0x4b, + 0x51, 0xc5, 0x2c, 0x4d, 0x15, 0x68, 0xed, 0x39, 0x13, 0x67, 0xf6, 0x64, 0x35, 0x30, 0xf0, 0x83, + 0x65, 0x34, 0x20, 0xcf, 0x50, 0xb1, 0x4a, 0xff, 0x02, 0x15, 0xf3, 0x9c, 0x55, 0x15, 0x14, 0xb1, + 0x48, 0xbd, 0x47, 0xc6, 0xfa, 0xf4, 0x56, 0x5a, 0x58, 0x65, 0x99, 0x4e, 0x7f, 0x9a, 0xd0, 0x4f, + 0x3b, 0xe0, 0x0d, 0x5e, 0xa2, 0xbe, 0x49, 0x8d, 0x11, 0xa0, 0x12, 0x9c, 0xbe, 0x27, 0x6e, 0x2d, + 0x35, 0xc6, 0xa5, 0x69, 0x4d, 0xa4, 0xfb, 0x76, 0x1c, 0x3c, 0x5c, 0x3e, 0x88, 0x74, 0x76, 0x9d, + 0x5a, 0x91, 0xfa, 0x52, 0x4f, 0xff, 0x38, 0x64, 0x78, 0x4f, 0xa5, 0x23, 0xd2, 0xdd, 0xc0, 0xbe, + 0x5d, 0xff, 0x5c, 0xd2, 0xe7, 0xa4, 0xb7, 0x65, 0x45, 0x03, 0xed, 0x9e, 0xb6, 0xa1, 0x63, 0xe2, + 0xda, 0xd8, 0x18, 0xf7, 0x35, 0x78, 0x5d, 0xa3, 0x11, 0x8b, 0xd6, 0xfb, 0xda, 0x18, 0x9a, 0x3a, + 0x65, 0x08, 0x31, 0x8a, 0x12, 0xbc, 0xc7, 0x13, 0x67, 0xd6, 0x5d, 0x11, 0x8b, 0xd6, 0xa2, 0x04, + 0xfa, 0x92, 0x0c, 0x92, 0x42, 0xf2, 0x4d, 0x9c, 0x83, 0xc8, 0x72, 0xf4, 0x7a, 0xc6, 0xe1, 0x1a, + 0xf6, 0xd9, 0x20, 0xea, 0x13, 0xc2, 0x10, 0x95, 0x48, 0x1a, 0x04, 0xed, 0xf5, 0x6d, 0xc6, 0x95, + 0x7c, 0x8c, 0xfe, 0x1e, 0x7d, 0xe7, 0x70, 0xf4, 0x9d, 0xff, 0x47, 0xdf, 0xf9, 0x7d, 0xf2, 0x3b, + 0x87, 0x93, 0xdf, 0xf9, 0x77, 0xf2, 0x3b, 0x3f, 0xe6, 0x99, 0xc0, 0xbc, 0x49, 0x02, 0x2e, 0xcb, + 0xf0, 0xbb, 0xf9, 0x8f, 0xd7, 0x5f, 0x58, 0xa2, 0xc3, 0xf6, 0xf2, 0xdb, 0x37, 0xef, 0xc2, 0xdd, + 0x9d, 0xfb, 0x9f, 0xdf, 0xa0, 0x93, 0xbe, 0xb9, 0xfe, 0xfc, 0x26, 0x00, 0x00, 0xff, 0xff, 0xd7, + 0xa9, 0x65, 0xd6, 0x20, 0x02, 0x00, 0x00, } func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/cosmwasm.pb.go b/x/icaoracle/types/cosmwasm.pb.go index 33f54c3444..9d0592a090 100644 --- a/x/icaoracle/types/cosmwasm.pb.go +++ b/x/icaoracle/types/cosmwasm.pb.go @@ -254,34 +254,34 @@ func init() { func init() { proto.RegisterFile("cosmwasm/wasm/v1/cosmwasm.proto", fileDescriptor_42aeb672f768be80) } var fileDescriptor_42aeb672f768be80 = []byte{ - // 427 bytes of a gzipped FileDescriptorProto + // 428 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xb1, 0x8e, 0xd3, 0x40, 0x10, 0x8d, 0x2f, 0x89, 0x0f, 0x96, 0x2b, 0xd0, 0xea, 0x14, 0x99, 0x14, 0x76, 0x74, 0x34, 0x6e, - 0xce, 0x4b, 0xc8, 0x1f, 0x24, 0x50, 0x44, 0x22, 0x14, 0xa6, 0xa3, 0x41, 0x63, 0xef, 0x60, 0x2c, - 0xe2, 0xdd, 0xc8, 0xb3, 0xc9, 0x1d, 0x3f, 0x81, 0xf8, 0x0e, 0xbe, 0xe4, 0xca, 0x6b, 0x90, 0xa8, - 0x02, 0x4a, 0xfe, 0x82, 0x0a, 0x79, 0xd7, 0x3e, 0x51, 0x50, 0x40, 0x71, 0xcd, 0x78, 0x9e, 0xe7, - 0xcd, 0xe8, 0xbd, 0xa7, 0x65, 0x51, 0xae, 0xa9, 0xba, 0x02, 0xaa, 0x84, 0x2d, 0xbb, 0xa9, 0xe8, - 0x7e, 0x24, 0x9b, 0x5a, 0x1b, 0xcd, 0x1f, 0xdf, 0x61, 0x5b, 0x76, 0xd3, 0xf1, 0x79, 0xa1, 0x0b, - 0x6d, 0x87, 0xa2, 0xe9, 0x1c, 0x6f, 0x1c, 0x36, 0x3c, 0x4d, 0x22, 0x03, 0x42, 0xb1, 0x9b, 0x66, - 0x68, 0xa0, 0xb9, 0x55, 0x2a, 0x37, 0xbf, 0xf8, 0xe6, 0x31, 0xbe, 0xa2, 0xe2, 0xe5, 0x35, 0xe6, - 0x5b, 0x83, 0x0b, 0xad, 0x4c, 0x0d, 0xb9, 0xe1, 0x23, 0xe6, 0x13, 0x2a, 0x89, 0x75, 0xe0, 0x4d, - 0xbc, 0xf8, 0x61, 0xda, 0x22, 0x3e, 0x66, 0x0f, 0xf2, 0x96, 0x13, 0x9c, 0xd8, 0xc9, 0x1d, 0xe6, - 0x31, 0xeb, 0x57, 0x54, 0x04, 0xfd, 0x89, 0x17, 0x9f, 0xcd, 0x47, 0xbf, 0xf6, 0x11, 0x4f, 0xe1, - 0xaa, 0xbb, 0xb8, 0x42, 0x22, 0x28, 0x30, 0x6d, 0x28, 0x1c, 0xd8, 0xf0, 0xfd, 0x56, 0x49, 0x0a, - 0x86, 0x93, 0x7e, 0xfc, 0xe8, 0xf9, 0x93, 0xc4, 0x89, 0x4c, 0x1a, 0x91, 0x49, 0x2b, 0x32, 0x59, - 0xe8, 0x52, 0xcd, 0x9f, 0xdd, 0xec, 0xa3, 0xde, 0xd7, 0x1f, 0x51, 0x5c, 0x94, 0xe6, 0xc3, 0x36, - 0x4b, 0x72, 0x5d, 0x89, 0xd6, 0x91, 0xfb, 0x5c, 0x92, 0xfc, 0x28, 0xcc, 0xa7, 0x0d, 0x92, 0x5d, - 0xa0, 0xd4, 0x5d, 0xbe, 0xf8, 0x7c, 0xc2, 0x46, 0x2b, 0x2a, 0x96, 0x8a, 0x0c, 0x28, 0x53, 0xc2, - 0x3f, 0x78, 0x3b, 0x67, 0x43, 0x90, 0x55, 0xa9, 0x5a, 0x63, 0x0e, 0xf0, 0xa7, 0xec, 0x34, 0xd7, - 0x12, 0xdf, 0x95, 0xd2, 0x3a, 0x1b, 0xcc, 0xd9, 0x61, 0x1f, 0xf9, 0x0b, 0x2d, 0x71, 0xf9, 0x22, - 0xf5, 0x9b, 0xd1, 0x52, 0x36, 0xab, 0x6b, 0xc8, 0x70, 0x1d, 0x0c, 0xdc, 0xaa, 0x05, 0x5d, 0x20, - 0xc3, 0xff, 0x08, 0xc4, 0xbf, 0xb7, 0x40, 0x5e, 0xb3, 0xf0, 0xef, 0x79, 0xa4, 0x48, 0x1b, 0xad, - 0x08, 0x79, 0xc0, 0x4e, 0x41, 0xca, 0x1a, 0x89, 0xda, 0x60, 0x3a, 0xc8, 0x39, 0x1b, 0x48, 0x30, - 0x60, 0x83, 0x39, 0x4b, 0x6d, 0x3f, 0x5f, 0xdd, 0x1c, 0x42, 0xef, 0xf6, 0x10, 0x7a, 0x3f, 0x0f, - 0xa1, 0xf7, 0xe5, 0x18, 0xf6, 0x6e, 0x8f, 0x61, 0xef, 0xfb, 0x31, 0xec, 0xbd, 0x9d, 0xfd, 0x21, - 0xed, 0x8d, 0xa9, 0x4b, 0x89, 0x97, 0xaf, 0x20, 0x23, 0x41, 0xb6, 0x17, 0xbb, 0xe9, 0x4c, 0x5c, - 0x8b, 0x32, 0x07, 0x5d, 0x43, 0xbe, 0x46, 0xa7, 0x35, 0xf3, 0xed, 0x73, 0x9c, 0xfd, 0x0e, 0x00, - 0x00, 0xff, 0xff, 0x5b, 0x42, 0x39, 0x27, 0xf9, 0x02, 0x00, 0x00, + 0xce, 0x4b, 0x38, 0xbe, 0x20, 0x81, 0x22, 0x12, 0xa1, 0x30, 0x1d, 0x0d, 0x1a, 0x7b, 0x07, 0x63, + 0x11, 0xef, 0x46, 0x9e, 0x4d, 0xee, 0xf8, 0x09, 0xc4, 0x77, 0xf0, 0x25, 0x57, 0x5e, 0x83, 0x44, + 0x15, 0x50, 0xf2, 0x17, 0x54, 0xc8, 0xbb, 0x76, 0x44, 0x41, 0x01, 0x05, 0xcd, 0x78, 0x9e, 0xe7, + 0xcd, 0xe8, 0xbd, 0xa7, 0x65, 0x51, 0xae, 0xa9, 0xba, 0x06, 0xaa, 0x84, 0x2d, 0xdb, 0xa9, 0xe8, + 0x7e, 0x24, 0xeb, 0x5a, 0x1b, 0xcd, 0x1f, 0x1e, 0xb1, 0x2d, 0xdb, 0xe9, 0xf8, 0xbc, 0xd0, 0x85, + 0xb6, 0x43, 0xd1, 0x74, 0x8e, 0x37, 0x0e, 0x1b, 0x9e, 0x26, 0x91, 0x01, 0xa1, 0xd8, 0x4e, 0x33, + 0x34, 0xd0, 0xdc, 0x2a, 0x95, 0x9b, 0x5f, 0x7c, 0xf5, 0x18, 0x5f, 0x52, 0xf1, 0xe2, 0x06, 0xf3, + 0x8d, 0xc1, 0xb9, 0x56, 0xa6, 0x86, 0xdc, 0xf0, 0x11, 0xf3, 0x09, 0x95, 0xc4, 0x3a, 0xf0, 0x26, + 0x5e, 0x7c, 0x3f, 0x6d, 0x11, 0x1f, 0xb3, 0x7b, 0x79, 0xcb, 0x09, 0x4e, 0xec, 0xe4, 0x88, 0x79, + 0xcc, 0xfa, 0x15, 0x15, 0x41, 0x7f, 0xe2, 0xc5, 0x67, 0xb3, 0xd1, 0xcf, 0x5d, 0xc4, 0x53, 0xb8, + 0xee, 0x2e, 0x2e, 0x91, 0x08, 0x0a, 0x4c, 0x1b, 0x0a, 0x07, 0x36, 0x7c, 0xb7, 0x51, 0x92, 0x82, + 0xe1, 0xa4, 0x1f, 0x3f, 0x78, 0xfa, 0x28, 0x71, 0x22, 0x93, 0x46, 0x64, 0xd2, 0x8a, 0x4c, 0xe6, + 0xba, 0x54, 0xb3, 0x27, 0xb7, 0xbb, 0xa8, 0xf7, 0xe5, 0x7b, 0x14, 0x17, 0xa5, 0x79, 0xbf, 0xc9, + 0x92, 0x5c, 0x57, 0xa2, 0x75, 0xe4, 0x3e, 0x97, 0x24, 0x3f, 0x08, 0xf3, 0x71, 0x8d, 0x64, 0x17, + 0x28, 0x75, 0x97, 0x2f, 0x3e, 0x9d, 0xb0, 0xd1, 0x92, 0x8a, 0x85, 0x22, 0x03, 0xca, 0x94, 0xf0, + 0x17, 0xde, 0xce, 0xd9, 0x10, 0x64, 0x55, 0xaa, 0xd6, 0x98, 0x03, 0xfc, 0x31, 0x3b, 0xcd, 0xb5, + 0xc4, 0xb7, 0xa5, 0xb4, 0xce, 0x06, 0x33, 0xb6, 0xdf, 0x45, 0xfe, 0x5c, 0x4b, 0x5c, 0x3c, 0x4f, + 0xfd, 0x66, 0xb4, 0x90, 0xcd, 0xea, 0x0a, 0x32, 0x5c, 0x05, 0x03, 0xb7, 0x6a, 0x41, 0x17, 0xc8, + 0xf0, 0x1f, 0x02, 0xf1, 0xff, 0x5b, 0x20, 0xaf, 0x58, 0xf8, 0xe7, 0x3c, 0x52, 0xa4, 0xb5, 0x56, + 0x84, 0x3c, 0x60, 0xa7, 0x20, 0x65, 0x8d, 0x44, 0x6d, 0x30, 0x1d, 0xe4, 0x9c, 0x0d, 0x24, 0x18, + 0xb0, 0xc1, 0x9c, 0xa5, 0xb6, 0x9f, 0x2d, 0x6f, 0xf7, 0xa1, 0x77, 0xb7, 0x0f, 0xbd, 0x1f, 0xfb, + 0xd0, 0xfb, 0x7c, 0x08, 0x7b, 0x77, 0x87, 0xb0, 0xf7, 0xed, 0x10, 0xf6, 0xde, 0x5c, 0xfd, 0x26, + 0xed, 0xb5, 0xa9, 0x4b, 0x89, 0x97, 0x2f, 0x21, 0x23, 0x41, 0xb6, 0x17, 0xdb, 0xe9, 0x33, 0x71, + 0x23, 0xca, 0x1c, 0x74, 0x0d, 0xf9, 0x0a, 0x9d, 0xd6, 0xcc, 0xb7, 0xcf, 0xf1, 0xea, 0x57, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xdd, 0x04, 0xec, 0xf5, 0xf9, 0x02, 0x00, 0x00, } func (m *MsgExecuteContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/expected_keepers.go b/x/icaoracle/types/expected_keepers.go index 30788590f6..4f0e283b67 100644 --- a/x/icaoracle/types/expected_keepers.go +++ b/x/icaoracle/types/expected_keepers.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // ClientKeeper defines the expected IBC client keeper diff --git a/x/icaoracle/types/genesis.pb.go b/x/icaoracle/types/genesis.pb.go index a9463e34e7..66f1deac39 100644 --- a/x/icaoracle/types/genesis.pb.go +++ b/x/icaoracle/types/genesis.pb.go @@ -145,8 +145,8 @@ var fileDescriptor_89fd81957c6adfb8 = []byte{ 0xdf, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x1b, 0xaf, 0xeb, 0x93, 0x98, 0x54, 0xac, - 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x63, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, - 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x85, 0x04, 0x67, 0xbd, 0x01, + 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x13, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, + 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xc3, 0xd1, 0xb5, 0xbd, 0x01, 0x00, 0x00, } diff --git a/x/icaoracle/types/genesis_test.go b/x/icaoracle/types/genesis_test.go index 4621f262fe..517c63822e 100644 --- a/x/icaoracle/types/genesis_test.go +++ b/x/icaoracle/types/genesis_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestValidateGenesis(t *testing.T) { diff --git a/x/icaoracle/types/ica_test.go b/x/icaoracle/types/ica_test.go index e6145d6d93..9f5a4a01c3 100644 --- a/x/icaoracle/types/ica_test.go +++ b/x/icaoracle/types/ica_test.go @@ -9,7 +9,7 @@ import ( proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestValidateICATx(t *testing.T) { diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go index 12904b207a..bd3f52fc1e 100644 --- a/x/icaoracle/types/icaoracle.pb.go +++ b/x/icaoracle/types/icaoracle.pb.go @@ -302,42 +302,42 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/icaoracle.proto", fileDescriptor_842e38c1f0da9e66) } var fileDescriptor_842e38c1f0da9e66 = []byte{ - // 555 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x41, 0x6f, 0xd3, 0x30, - 0x14, 0xc7, 0x9b, 0x95, 0x65, 0xdb, 0x5b, 0xc7, 0x82, 0x35, 0x41, 0x57, 0x89, 0x10, 0x3a, 0x0e, - 0x05, 0x69, 0xa9, 0xa0, 0x12, 0x57, 0x54, 0xd6, 0x00, 0x91, 0xe8, 0x36, 0x92, 0xf6, 0xc2, 0x25, - 0x72, 0x6d, 0xab, 0xb5, 0xda, 0xc4, 0x51, 0xe2, 0x56, 0xf4, 0x2b, 0xec, 0xc4, 0x81, 0x23, 0xfb, - 0x3e, 0x1c, 0x77, 0xe4, 0x88, 0x5a, 0x3e, 0x08, 0x8a, 0x93, 0x6e, 0x01, 0x6e, 0x7e, 0xbf, 0xff, - 0x3f, 0x4f, 0xf9, 0x3f, 0xfb, 0x81, 0x95, 0xca, 0x84, 0x53, 0xd6, 0xe6, 0x04, 0x8b, 0x04, 0x93, - 0x59, 0xe9, 0x64, 0xc7, 0x89, 0x90, 0x02, 0x19, 0xb9, 0xc3, 0xbe, 0xe5, 0x8d, 0xa3, 0xb1, 0x18, - 0x0b, 0x25, 0xb6, 0xb3, 0x53, 0xee, 0x6b, 0xfe, 0xd6, 0x40, 0xbf, 0x50, 0x06, 0x74, 0x0c, 0xbb, - 0x64, 0x82, 0x79, 0x14, 0x70, 0x5a, 0xd7, 0x2c, 0xad, 0xb5, 0xe7, 0xed, 0xa8, 0xda, 0xa5, 0xe8, - 0x04, 0x0e, 0x88, 0x88, 0x22, 0x46, 0x24, 0x17, 0x4a, 0xdf, 0x52, 0x7a, 0xed, 0x0e, 0xba, 0x14, - 0x3d, 0x06, 0x20, 0x13, 0x1c, 0x45, 0x6c, 0x96, 0x39, 0xaa, 0xca, 0xb1, 0x57, 0x10, 0x97, 0xa2, - 0x47, 0xb0, 0x13, 0x8b, 0x44, 0x66, 0xda, 0x3d, 0xa5, 0xe9, 0x59, 0xe9, 0x52, 0xf4, 0x04, 0xf6, - 0x39, 0xc1, 0x01, 0xa6, 0x34, 0x61, 0x69, 0x5a, 0xdf, 0x56, 0x22, 0x70, 0x82, 0xbb, 0x39, 0x41, - 0xcf, 0xc1, 0x20, 0x22, 0x92, 0x09, 0x26, 0xf2, 0xd6, 0xa5, 0x2b, 0xd7, 0xe1, 0x86, 0x6f, 0xac, - 0x0f, 0x41, 0xc7, 0x44, 0xf2, 0x05, 0xab, 0xef, 0x58, 0x5a, 0x6b, 0xd7, 0x2b, 0xaa, 0xe6, 0xf7, - 0x2d, 0xd0, 0xfb, 0x4c, 0x26, 0x9c, 0x20, 0x03, 0xaa, 0x53, 0xb6, 0x2c, 0x12, 0x66, 0x47, 0x74, - 0x04, 0xdb, 0x0b, 0x3c, 0x9b, 0xb3, 0x22, 0x55, 0x5e, 0x64, 0xbf, 0x15, 0xaa, 0x2f, 0x02, 0xb9, - 0x8c, 0x59, 0x91, 0x07, 0x72, 0x34, 0x58, 0xc6, 0xca, 0x30, 0x8f, 0x29, 0x96, 0x2c, 0x90, 0x3c, - 0x64, 0x2a, 0x54, 0xd5, 0x83, 0x1c, 0x0d, 0x78, 0xc8, 0xd0, 0x53, 0xa8, 0x8d, 0x66, 0x82, 0x4c, - 0x83, 0x09, 0xe3, 0xe3, 0x89, 0x54, 0xc9, 0xaa, 0xde, 0xbe, 0x62, 0x1f, 0x14, 0x42, 0x26, 0x00, - 0x96, 0x32, 0xe1, 0xa3, 0xb9, 0x64, 0x9b, 0x50, 0x25, 0x82, 0x4e, 0x01, 0x51, 0x96, 0x4a, 0x1e, - 0x61, 0x35, 0xf9, 0xfc, 0x2a, 0x55, 0xb6, 0x3d, 0xef, 0x41, 0x49, 0x29, 0xae, 0xf0, 0x35, 0xe8, - 0xa9, 0xc4, 0x72, 0x9e, 0xd6, 0x77, 0x2d, 0xad, 0x75, 0xff, 0x95, 0x69, 0xff, 0xfb, 0x0c, 0xec, - 0x7c, 0x0a, 0xbe, 0x72, 0x79, 0x85, 0xbb, 0xf9, 0x06, 0xea, 0x1e, 0xa3, 0x2c, 0x8c, 0xb3, 0x5e, - 0x1e, 0x96, 0xac, 0x7b, 0xf7, 0x0b, 0x27, 0x70, 0x90, 0x4a, 0x29, 0xa6, 0x2c, 0x0a, 0x28, 0x8b, - 0x44, 0x58, 0x4c, 0xae, 0x56, 0xc0, 0x5e, 0xc6, 0x5e, 0x7c, 0xd3, 0xa0, 0x56, 0xee, 0x8c, 0x6c, - 0x38, 0xee, 0x3b, 0x03, 0xcf, 0x3d, 0x0b, 0xfc, 0x41, 0x77, 0x30, 0xf4, 0x83, 0xe1, 0xb9, 0x7f, - 0xe9, 0x9c, 0xb9, 0xef, 0x5c, 0xa7, 0x67, 0x54, 0x1a, 0x87, 0x57, 0xd7, 0xd6, 0x7e, 0x09, 0xa1, - 0x67, 0x70, 0xf4, 0xb7, 0xff, 0xd3, 0xd0, 0x19, 0x3a, 0x3d, 0x43, 0x6b, 0xc0, 0xd5, 0xb5, 0xa5, - 0xe7, 0xd5, 0xff, 0x5d, 0xdd, 0xf3, 0xe0, 0xd2, 0xbb, 0x78, 0xef, 0x39, 0xbe, 0x6f, 0x6c, 0xe5, - 0x5d, 0x4b, 0xe8, 0x6d, 0xff, 0xc7, 0xca, 0xd4, 0x6e, 0x56, 0xa6, 0xf6, 0x6b, 0x65, 0x6a, 0x5f, - 0xd7, 0x66, 0xe5, 0x66, 0x6d, 0x56, 0x7e, 0xae, 0xcd, 0xca, 0xe7, 0xce, 0x98, 0xcb, 0xc9, 0x7c, - 0x64, 0x13, 0x11, 0xb6, 0x7d, 0x35, 0xa3, 0xd3, 0x8f, 0x78, 0x94, 0xb6, 0x8b, 0xc5, 0x5a, 0xbc, - 0xec, 0xb4, 0xbf, 0x94, 0xd6, 0x2b, 0x7b, 0x02, 0xe9, 0x48, 0x57, 0x3b, 0xd3, 0xf9, 0x13, 0x00, - 0x00, 0xff, 0xff, 0x20, 0xd4, 0x9e, 0xc6, 0x7f, 0x03, 0x00, 0x00, + // 557 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0xc1, 0x6e, 0xd3, 0x4c, + 0x14, 0x85, 0xe3, 0xe6, 0xaf, 0xdb, 0xde, 0xa6, 0x7f, 0xcd, 0x28, 0x82, 0x34, 0x12, 0xc6, 0xa4, + 0x2c, 0x02, 0x52, 0x1d, 0x41, 0x11, 0x5b, 0x14, 0x1a, 0x03, 0x96, 0x48, 0x5b, 0xec, 0x64, 0xc3, + 0xc6, 0x9a, 0xcc, 0x8c, 0x92, 0x51, 0x62, 0x8f, 0x65, 0x4f, 0x22, 0xf2, 0x0a, 0x5d, 0xb1, 0x60, + 0x49, 0xdf, 0x87, 0x65, 0x97, 0x2c, 0x51, 0xc2, 0x83, 0x20, 0x8f, 0x9d, 0xd6, 0xc0, 0x6e, 0xee, + 0x77, 0x8e, 0xaf, 0x7c, 0xee, 0xcc, 0x05, 0x2b, 0x95, 0x09, 0xa7, 0xac, 0xc3, 0x09, 0x16, 0x09, + 0x26, 0xb3, 0xd2, 0xc9, 0x8e, 0x13, 0x21, 0x05, 0x32, 0x72, 0x87, 0x7d, 0xcb, 0x9b, 0xf5, 0xb1, + 0x18, 0x0b, 0x25, 0x76, 0xb2, 0x53, 0xee, 0x6b, 0xfd, 0xd2, 0x40, 0xbf, 0x50, 0x06, 0x74, 0x04, + 0xbb, 0x64, 0x82, 0x79, 0x14, 0x70, 0xda, 0xd0, 0x2c, 0xad, 0xbd, 0xe7, 0xed, 0xa8, 0xda, 0xa5, + 0xe8, 0x18, 0x0e, 0x88, 0x88, 0x22, 0x46, 0x24, 0x17, 0x4a, 0xdf, 0x52, 0x7a, 0xed, 0x0e, 0xba, + 0x14, 0x3d, 0x04, 0x20, 0x13, 0x1c, 0x45, 0x6c, 0x96, 0x39, 0xaa, 0xca, 0xb1, 0x57, 0x10, 0x97, + 0xa2, 0x07, 0xb0, 0x13, 0x8b, 0x44, 0x66, 0xda, 0x7f, 0x4a, 0xd3, 0xb3, 0xd2, 0xa5, 0xe8, 0x11, + 0xec, 0x73, 0x82, 0x03, 0x4c, 0x69, 0xc2, 0xd2, 0xb4, 0xb1, 0xad, 0x44, 0xe0, 0x04, 0x77, 0x73, + 0x82, 0x9e, 0x82, 0x41, 0x44, 0x24, 0x13, 0x4c, 0xe4, 0xad, 0x4b, 0x57, 0xae, 0xc3, 0x0d, 0xdf, + 0x58, 0xef, 0x83, 0x8e, 0x89, 0xe4, 0x0b, 0xd6, 0xd8, 0xb1, 0xb4, 0xf6, 0xae, 0x57, 0x54, 0xad, + 0x6f, 0x5b, 0xa0, 0xf7, 0x99, 0x4c, 0x38, 0x41, 0x06, 0x54, 0xa7, 0x6c, 0x59, 0x24, 0xcc, 0x8e, + 0xa8, 0x0e, 0xdb, 0x0b, 0x3c, 0x9b, 0xb3, 0x22, 0x55, 0x5e, 0x64, 0xbf, 0x15, 0xaa, 0x2f, 0x02, + 0xb9, 0x8c, 0x59, 0x91, 0x07, 0x72, 0x34, 0x58, 0xc6, 0xca, 0x30, 0x8f, 0x29, 0x96, 0x2c, 0x90, + 0x3c, 0x64, 0x2a, 0x54, 0xd5, 0x83, 0x1c, 0x0d, 0x78, 0xc8, 0xd0, 0x63, 0xa8, 0x8d, 0x66, 0x82, + 0x4c, 0x83, 0x09, 0xe3, 0xe3, 0x89, 0x54, 0xc9, 0xaa, 0xde, 0xbe, 0x62, 0xef, 0x15, 0x42, 0x26, + 0x00, 0x96, 0x32, 0xe1, 0xa3, 0xb9, 0x64, 0x9b, 0x50, 0x25, 0x82, 0x4e, 0x00, 0x51, 0x96, 0x4a, + 0x1e, 0x61, 0x35, 0xf9, 0xfc, 0x2a, 0x55, 0xb6, 0x3d, 0xef, 0x5e, 0x49, 0x29, 0xae, 0xf0, 0x15, + 0xe8, 0xa9, 0xc4, 0x72, 0x9e, 0x36, 0x76, 0x2d, 0xad, 0xfd, 0xff, 0x0b, 0xd3, 0xfe, 0xfb, 0x19, + 0xd8, 0xf9, 0x14, 0x7c, 0xe5, 0xf2, 0x0a, 0x77, 0xeb, 0x35, 0x34, 0x3c, 0x46, 0x59, 0x18, 0x67, + 0xbd, 0x3c, 0x2c, 0x59, 0xf7, 0xee, 0x17, 0x8e, 0xe1, 0x20, 0x95, 0x52, 0x4c, 0x59, 0x14, 0x50, + 0x16, 0x89, 0xb0, 0x98, 0x5c, 0xad, 0x80, 0xbd, 0x8c, 0x3d, 0xfb, 0xaa, 0x41, 0xad, 0xdc, 0x19, + 0xd9, 0x70, 0xd4, 0x77, 0x06, 0x9e, 0x7b, 0x16, 0xf8, 0x83, 0xee, 0x60, 0xe8, 0x07, 0xc3, 0x73, + 0xff, 0xd2, 0x39, 0x73, 0xdf, 0xba, 0x4e, 0xcf, 0xa8, 0x34, 0x0f, 0xaf, 0xae, 0xad, 0xfd, 0x12, + 0x42, 0x4f, 0xa0, 0xfe, 0xa7, 0xff, 0xe3, 0xd0, 0x19, 0x3a, 0x3d, 0x43, 0x6b, 0xc2, 0xd5, 0xb5, + 0xa5, 0xe7, 0xd5, 0xbf, 0x5d, 0xdd, 0xf3, 0xe0, 0xd2, 0xbb, 0x78, 0xe7, 0x39, 0xbe, 0x6f, 0x6c, + 0xe5, 0x5d, 0x4b, 0xe8, 0x4d, 0xff, 0xfb, 0xca, 0xd4, 0x6e, 0x56, 0xa6, 0xf6, 0x73, 0x65, 0x6a, + 0x5f, 0xd6, 0x66, 0xe5, 0x66, 0x6d, 0x56, 0x7e, 0xac, 0xcd, 0xca, 0xa7, 0xd3, 0x31, 0x97, 0x93, + 0xf9, 0xc8, 0x26, 0x22, 0xec, 0xf8, 0x6a, 0x46, 0x27, 0x1f, 0xf0, 0x28, 0xed, 0x14, 0x8b, 0xb5, + 0x78, 0xfe, 0xb2, 0xf3, 0xb9, 0xb4, 0x5e, 0xd9, 0x13, 0x48, 0x47, 0xba, 0xda, 0x99, 0xd3, 0xdf, + 0x01, 0x00, 0x00, 0xff, 0xff, 0xa6, 0x92, 0x4b, 0x14, 0x7f, 0x03, 0x00, 0x00, } func (m *Oracle) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index 704ed9750e..ea48277617 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgAddOracle = "add_oracle" diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go index 74eccbc92f..122c200245 100644 --- a/x/icaoracle/types/message_add_oracle_test.go +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestMsgAddOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index 8996dc852c..d01e14907a 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgInstantiateOracle = "instantiate_oracle" diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go index 46b75f8897..edb424bde0 100644 --- a/x/icaoracle/types/message_instantiate_oracle_test.go +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestMsgInstantiateOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go index 61e9153c3d..abab651a83 100644 --- a/x/icaoracle/types/message_remove_oracle_test.go +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestMsgRemoveOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go index 05b008f5e3..44657728c1 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestMsgRestoreOracleICA(t *testing.T) { diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go index d443fa84be..78e780371f 100644 --- a/x/icaoracle/types/message_toggle_oracle_test.go +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestMsgMsgToggleOracle(t *testing.T) { diff --git a/x/icaoracle/types/metric_test.go b/x/icaoracle/types/metric_test.go index b7ade46b7d..9960d4b63f 100644 --- a/x/icaoracle/types/metric_test.go +++ b/x/icaoracle/types/metric_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) // Tests NewMetric and GetMetricID diff --git a/x/icaoracle/types/oracle_test.go b/x/icaoracle/types/oracle_test.go index be53cfdc8f..b4966cf6f3 100644 --- a/x/icaoracle/types/oracle_test.go +++ b/x/icaoracle/types/oracle_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/icaoracle/types" + "github.com/Stride-Labs/stride/v14/x/icaoracle/types" ) func TestValidateICASetup(t *testing.T) { diff --git a/x/icaoracle/types/query.pb.go b/x/icaoracle/types/query.pb.go index 34f6cdd786..f1457049b6 100644 --- a/x/icaoracle/types/query.pb.go +++ b/x/icaoracle/types/query.pb.go @@ -399,40 +399,40 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/query.proto", fileDescriptor_d4d4563f64cd9510) } var fileDescriptor_d4d4563f64cd9510 = []byte{ - // 518 bytes of a gzipped FileDescriptorProto + // 519 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xce, 0xd4, 0x9a, 0xb4, 0x4f, 0x8a, 0xf2, 0x2c, 0x35, 0x5d, 0xea, 0x1a, 0x16, 0x5b, 0x2b, - 0xda, 0x1d, 0xdb, 0x1c, 0xf4, 0x6a, 0x3d, 0x88, 0x68, 0x51, 0x53, 0xf0, 0x20, 0x42, 0xd8, 0x6c, - 0x86, 0xed, 0x60, 0xba, 0x93, 0xee, 0x4c, 0x8a, 0x8b, 0x78, 0xf1, 0xe2, 0x4d, 0x0a, 0xfe, 0x04, - 0xff, 0x4c, 0x8f, 0x05, 0x2f, 0x82, 0x20, 0x92, 0xf8, 0x43, 0xa4, 0x33, 0x93, 0xad, 0xeb, 0x26, - 0x6d, 0xd4, 0x53, 0x66, 0xdf, 0xfb, 0xde, 0xf7, 0x7d, 0xf3, 0xe6, 0x23, 0xb0, 0x24, 0x55, 0xc2, - 0xdb, 0x8c, 0xf2, 0x30, 0x10, 0x49, 0x10, 0x76, 0x18, 0xdd, 0xeb, 0xb1, 0x24, 0xf5, 0xbb, 0x89, - 0x50, 0x02, 0x2f, 0x99, 0xae, 0x9f, 0x75, 0x9d, 0x5a, 0x01, 0x9f, 0x9d, 0xcc, 0x8c, 0xb3, 0x14, - 0x09, 0x11, 0x75, 0x18, 0x0d, 0xba, 0x9c, 0x06, 0x71, 0x2c, 0x54, 0xa0, 0xb8, 0x88, 0xa5, 0xed, - 0xce, 0x47, 0x22, 0x12, 0xfa, 0x48, 0x8f, 0x4f, 0xa6, 0xea, 0x51, 0xc0, 0xe7, 0xc7, 0xb2, 0x4f, - 0x35, 0x51, 0x83, 0xed, 0xf5, 0x98, 0x54, 0xb8, 0x08, 0x33, 0xe1, 0x4e, 0xc0, 0xe3, 0x26, 0x6f, - 0x57, 0x49, 0x8d, 0xac, 0xce, 0x36, 0x2a, 0xfa, 0xfb, 0x51, 0xdb, 0x7b, 0x08, 0x97, 0x73, 0x03, - 0xb2, 0x2b, 0x62, 0xc9, 0xf0, 0x0e, 0x94, 0x8d, 0x17, 0x8d, 0xbf, 0xb0, 0x51, 0xf5, 0xff, 0xbc, - 0x80, 0x6f, 0x27, 0x2c, 0xce, 0xab, 0xc2, 0x82, 0x26, 0xba, 0xdf, 0xe9, 0x98, 0x8e, 0xb4, 0xea, - 0xde, 0x36, 0x5c, 0x29, 0x74, 0xac, 0xcc, 0x3d, 0xa8, 0x98, 0x71, 0x59, 0x25, 0xb5, 0x73, 0xa7, - 0xe9, 0x6c, 0x4e, 0x1f, 0x7e, 0xbf, 0x56, 0x6a, 0x0c, 0xe1, 0x5e, 0x1d, 0x16, 0x0d, 0x69, 0xa8, - 0xf8, 0x3e, 0xcb, 0x2b, 0xe2, 0x02, 0x94, 0x03, 0x5d, 0xd7, 0xee, 0x67, 0x1a, 0xf6, 0xcb, 0x7b, - 0x01, 0xce, 0xa8, 0xa1, 0xff, 0x36, 0xf3, 0xca, 0x2e, 0x71, 0x8b, 0xa9, 0x84, 0x87, 0x99, 0x8d, - 0xab, 0x00, 0xbb, 0xba, 0xd2, 0x7c, 0xcd, 0x52, 0xbb, 0xf8, 0x59, 0x53, 0x79, 0xcc, 0x52, 0x5c, - 0x81, 0x8b, 0x86, 0xa0, 0x99, 0x3d, 0xce, 0x94, 0xc6, 0xcc, 0x99, 0xf2, 0x03, 0xfb, 0x44, 0xcf, - 0x60, 0x3e, 0xcf, 0x7e, 0xe2, 0xd7, 0x90, 0x9d, 0xe2, 0xd7, 0xcc, 0x0c, 0xfd, 0x5a, 0xf8, 0xc6, - 0xb7, 0x69, 0x38, 0xaf, 0x29, 0xf1, 0x23, 0x81, 0xb2, 0xb9, 0x13, 0x5e, 0x2f, 0x4e, 0x17, 0xa3, - 0xe4, 0x2c, 0x9f, 0x81, 0x32, 0xde, 0xbc, 0xbb, 0xef, 0xbf, 0xfc, 0xfc, 0x34, 0xb5, 0x8e, 0x94, - 0x6e, 0x6b, 0xf8, 0xda, 0x93, 0xa0, 0x25, 0x69, 0x21, 0xf2, 0xf6, 0xe7, 0xed, 0x70, 0x01, 0xef, - 0xf0, 0x80, 0x00, 0x9c, 0x04, 0x05, 0x57, 0xc7, 0xc8, 0x15, 0x52, 0xe6, 0xdc, 0x9c, 0x00, 0x69, - 0xcd, 0xad, 0x69, 0x73, 0x37, 0x70, 0x79, 0x12, 0x73, 0x12, 0x3f, 0x13, 0x98, 0xcb, 0x25, 0x06, - 0x6f, 0x8d, 0xd3, 0x1a, 0x11, 0x46, 0xe7, 0xf6, 0x64, 0xe0, 0x7f, 0x59, 0x9c, 0xa4, 0xad, 0xb4, - 0x69, 0xb2, 0x8d, 0x1f, 0x08, 0x54, 0x6c, 0x42, 0x70, 0xdc, 0x23, 0xe5, 0xf3, 0xe9, 0xac, 0x9c, - 0x05, 0xfb, 0xbb, 0x7d, 0xd9, 0x74, 0x6d, 0x6e, 0x1d, 0xf6, 0x5d, 0x72, 0xd4, 0x77, 0xc9, 0x8f, - 0xbe, 0x4b, 0x0e, 0x06, 0x6e, 0xe9, 0x68, 0xe0, 0x96, 0xbe, 0x0e, 0xdc, 0xd2, 0xcb, 0x7a, 0xc4, - 0xd5, 0x4e, 0xaf, 0xe5, 0x87, 0x62, 0x77, 0x14, 0xd5, 0xfe, 0x7a, 0x9d, 0xbe, 0xf9, 0x8d, 0x50, - 0xa5, 0x5d, 0x26, 0x5b, 0x65, 0xfd, 0xcf, 0x56, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x5e, - 0x5d, 0x26, 0x61, 0x05, 0x00, 0x00, + 0xda, 0x1d, 0xdb, 0x08, 0x7a, 0xb5, 0x1e, 0x44, 0xb4, 0xa8, 0x29, 0x78, 0x10, 0x21, 0x6c, 0x36, + 0xc3, 0x76, 0x30, 0xdd, 0x49, 0x77, 0x26, 0xc5, 0x45, 0xbc, 0x78, 0xf1, 0x26, 0x05, 0x7f, 0x82, + 0x7f, 0xa6, 0xc7, 0x82, 0x17, 0x41, 0x10, 0x49, 0xfc, 0x21, 0xd2, 0x99, 0x49, 0xea, 0xba, 0x49, + 0x13, 0xed, 0x29, 0xb3, 0xef, 0x7d, 0xef, 0xfb, 0xbe, 0x79, 0xf3, 0x11, 0x58, 0x92, 0x2a, 0xe1, + 0x4d, 0x46, 0x79, 0x18, 0x88, 0x24, 0x08, 0x5b, 0x8c, 0xee, 0x75, 0x58, 0x92, 0xfa, 0xed, 0x44, + 0x28, 0x81, 0x97, 0x4c, 0xd7, 0x1f, 0x74, 0x9d, 0x4a, 0x0e, 0x3f, 0x38, 0x99, 0x19, 0x67, 0x29, + 0x12, 0x22, 0x6a, 0x31, 0x1a, 0xb4, 0x39, 0x0d, 0xe2, 0x58, 0xa8, 0x40, 0x71, 0x11, 0x4b, 0xdb, + 0x9d, 0x8f, 0x44, 0x24, 0xf4, 0x91, 0x1e, 0x9f, 0x4c, 0xd5, 0xa3, 0x80, 0x2f, 0x8e, 0x65, 0x9f, + 0x69, 0xa2, 0x1a, 0xdb, 0xeb, 0x30, 0xa9, 0x70, 0x11, 0x66, 0xc2, 0x9d, 0x80, 0xc7, 0x75, 0xde, + 0x2c, 0x93, 0x0a, 0x59, 0x9d, 0xad, 0x95, 0xf4, 0xf7, 0xe3, 0xa6, 0xf7, 0x08, 0x2e, 0x67, 0x06, + 0x64, 0x5b, 0xc4, 0x92, 0xe1, 0x1d, 0x28, 0x1a, 0x2f, 0x1a, 0x7f, 0x61, 0xa3, 0xec, 0xff, 0x7d, + 0x01, 0xdf, 0x4e, 0x58, 0x9c, 0x57, 0x86, 0x05, 0x4d, 0xf4, 0xa0, 0xd5, 0x32, 0x1d, 0x69, 0xd5, + 0xbd, 0x6d, 0xb8, 0x92, 0xeb, 0x58, 0x99, 0xfb, 0x50, 0x32, 0xe3, 0xb2, 0x4c, 0x2a, 0xe7, 0x4e, + 0xd3, 0xd9, 0x9c, 0x3e, 0xfc, 0x71, 0xad, 0x50, 0xeb, 0xc3, 0xbd, 0x2a, 0x2c, 0x1a, 0xd2, 0x50, + 0xf1, 0x7d, 0x96, 0x55, 0xc4, 0x05, 0x28, 0x06, 0xba, 0xae, 0xdd, 0xcf, 0xd4, 0xec, 0x97, 0xf7, + 0x12, 0x9c, 0x61, 0x43, 0x67, 0x36, 0xf3, 0xda, 0x2e, 0x71, 0x8b, 0xa9, 0x84, 0x87, 0x03, 0x1b, + 0x57, 0x01, 0x76, 0x75, 0xa5, 0xfe, 0x86, 0xa5, 0x76, 0xf1, 0xb3, 0xa6, 0xf2, 0x84, 0xa5, 0xb8, + 0x02, 0x17, 0x0d, 0x41, 0x7d, 0xf0, 0x38, 0x53, 0x1a, 0x33, 0x67, 0xca, 0x0f, 0xed, 0x13, 0x3d, + 0x87, 0xf9, 0x2c, 0xfb, 0x89, 0x5f, 0x43, 0x76, 0x8a, 0x5f, 0x33, 0xd3, 0xf7, 0x6b, 0xe1, 0x1b, + 0xdf, 0xa7, 0xe1, 0xbc, 0xa6, 0xc4, 0x4f, 0x04, 0x8a, 0xe6, 0x4e, 0x78, 0x3d, 0x3f, 0x9d, 0x8f, + 0x92, 0xb3, 0x3c, 0x06, 0x65, 0xbc, 0x79, 0xf7, 0x3e, 0x7c, 0xfd, 0xf5, 0x79, 0x6a, 0x1d, 0x29, + 0xdd, 0xd6, 0xf0, 0xb5, 0xa7, 0x41, 0x43, 0xd2, 0x5c, 0xe4, 0xed, 0xcf, 0xbb, 0xfe, 0x02, 0xde, + 0xe3, 0x01, 0x01, 0x38, 0x09, 0x0a, 0xae, 0x8e, 0x90, 0xcb, 0xa5, 0xcc, 0xb9, 0x39, 0x01, 0xd2, + 0x9a, 0x5b, 0xd3, 0xe6, 0x6e, 0xe0, 0xf2, 0x24, 0xe6, 0x24, 0x7e, 0x21, 0x30, 0x97, 0x49, 0x0c, + 0xde, 0x1a, 0xa5, 0x35, 0x24, 0x8c, 0xce, 0xed, 0xc9, 0xc0, 0xff, 0xb3, 0x38, 0x49, 0x1b, 0x69, + 0xdd, 0x64, 0x1b, 0x3f, 0x12, 0x28, 0xd9, 0x84, 0xe0, 0xa8, 0x47, 0xca, 0xe6, 0xd3, 0x59, 0x19, + 0x07, 0xfb, 0xb7, 0x7d, 0xd9, 0x74, 0x6d, 0x6e, 0x1d, 0x76, 0x5d, 0x72, 0xd4, 0x75, 0xc9, 0xcf, + 0xae, 0x4b, 0x0e, 0x7a, 0x6e, 0xe1, 0xa8, 0xe7, 0x16, 0xbe, 0xf5, 0xdc, 0xc2, 0xab, 0x6a, 0xc4, + 0xd5, 0x4e, 0xa7, 0xe1, 0x87, 0x62, 0x77, 0x18, 0xd5, 0xfe, 0xfa, 0x5d, 0xfa, 0xf6, 0x0f, 0x42, + 0x95, 0xb6, 0x99, 0x6c, 0x14, 0xf5, 0x3f, 0x5b, 0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8b, + 0x18, 0x88, 0xf4, 0x61, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go index 64eef3de68..8d95c7df4f 100644 --- a/x/icaoracle/types/tx.pb.go +++ b/x/icaoracle/types/tx.pb.go @@ -519,47 +519,47 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/tx.proto", fileDescriptor_6e58a377bb8520d3) } var fileDescriptor_6e58a377bb8520d3 = []byte{ - // 626 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3d, 0x6f, 0xd3, 0x40, - 0x18, 0xc7, 0xeb, 0xb6, 0x2a, 0xf4, 0xd4, 0xd2, 0xd6, 0x54, 0x4d, 0x62, 0xc0, 0xb4, 0x46, 0x84, - 0x50, 0x29, 0x36, 0x6d, 0xc4, 0x8b, 0xc2, 0x94, 0x66, 0x8a, 0x44, 0x54, 0xc9, 0x61, 0x42, 0x48, - 0xd6, 0xe5, 0x7c, 0x38, 0x16, 0xc9, 0x5d, 0x74, 0x77, 0x8d, 0xda, 0x95, 0x91, 0x09, 0x89, 0x89, - 0x6f, 0x80, 0x98, 0x3a, 0xf0, 0x01, 0x18, 0x19, 0x2b, 0x26, 0x46, 0x94, 0x0c, 0x9d, 0xf8, 0x0e, - 0xc8, 0xaf, 0x71, 0x1c, 0x97, 0x06, 0x21, 0x58, 0x12, 0xdd, 0xf3, 0xfc, 0xef, 0x7f, 0xcf, 0xef, - 0xee, 0xb9, 0x33, 0x28, 0x70, 0xc1, 0x5c, 0x1b, 0x1b, 0x2e, 0x82, 0x94, 0x41, 0xd4, 0xc5, 0x86, - 0x38, 0xd6, 0xfb, 0x8c, 0x0a, 0x2a, 0xaf, 0x07, 0x29, 0x3d, 0x4e, 0x29, 0x05, 0x44, 0x79, 0x8f, - 0x72, 0xcb, 0xcf, 0x1b, 0xc1, 0x20, 0x10, 0x2b, 0xb9, 0x60, 0x64, 0xf4, 0xb8, 0x63, 0x0c, 0xf6, - 0xbc, 0xbf, 0x30, 0xb1, 0x01, 0x7b, 0x2e, 0xa1, 0x86, 0xff, 0x1b, 0x84, 0xb4, 0x0f, 0x12, 0x58, - 0x69, 0x72, 0xa7, 0x66, 0xdb, 0x87, 0xbe, 0xaf, 0xbc, 0x0f, 0xae, 0x20, 0x86, 0xa1, 0xa0, 0x2c, - 0x2f, 0x6d, 0x4b, 0xa5, 0xe5, 0x83, 0xfc, 0xb7, 0xcf, 0xe5, 0xcd, 0xd0, 0xbf, 0x66, 0xdb, 0x0c, - 0x73, 0xde, 0x12, 0xcc, 0x25, 0x8e, 0x19, 0x09, 0xe5, 0x3b, 0x60, 0x15, 0x51, 0x42, 0x30, 0x12, - 0x2e, 0x25, 0x96, 0x6b, 0xe7, 0xe7, 0xbd, 0x99, 0xe6, 0xca, 0x38, 0xd8, 0xb0, 0xab, 0x0f, 0xde, - 0x9c, 0x9f, 0xee, 0x46, 0x53, 0xde, 0x9e, 0x9f, 0xee, 0xde, 0x0e, 0x71, 0x8f, 0x13, 0xc0, 0xc9, - 0x52, 0xb4, 0x2d, 0xb0, 0x99, 0x1c, 0x9b, 0x98, 0xf7, 0x29, 0xe1, 0x58, 0x7b, 0x3f, 0xef, 0x27, - 0x1a, 0x84, 0x0b, 0x48, 0x84, 0x0b, 0x05, 0xfe, 0x8b, 0xda, 0x8b, 0x60, 0x2d, 0x58, 0xdb, 0x42, - 0x1d, 0xe8, 0x26, 0xaa, 0x5f, 0x0d, 0xc2, 0x75, 0x2f, 0xda, 0xb0, 0xe5, 0x12, 0x58, 0x47, 0x94, - 0x08, 0x06, 0x91, 0xb0, 0x10, 0xb5, 0xb1, 0x27, 0x5c, 0xd8, 0x96, 0x4a, 0x8b, 0xe6, 0xb5, 0x28, - 0x5e, 0xa7, 0x36, 0x6e, 0xd8, 0xf2, 0x53, 0xa0, 0x08, 0x06, 0x09, 0x7f, 0x85, 0x99, 0xe7, 0x49, - 0x08, 0xee, 0x5a, 0x94, 0x58, 0x81, 0x5d, 0x7e, 0xd1, 0x37, 0xcf, 0x45, 0x8a, 0x7a, 0x20, 0x38, - 0x24, 0x01, 0x42, 0xf5, 0x49, 0x7a, 0x97, 0xee, 0x65, 0xef, 0xd2, 0x14, 0xbc, 0xa6, 0x82, 0x9b, - 0x59, 0xf1, 0x78, 0xd7, 0x3e, 0x49, 0xe0, 0x7a, 0x93, 0x3b, 0x26, 0xe6, 0x82, 0xb2, 0x30, 0xd9, - 0xa8, 0xd7, 0xfe, 0xe5, 0xa6, 0x55, 0x1f, 0xa7, 0x69, 0x8a, 0xd9, 0x34, 0xe9, 0xa2, 0xb4, 0x5b, - 0xe0, 0x46, 0x46, 0x38, 0x66, 0xf9, 0x22, 0x81, 0xb5, 0x26, 0x77, 0x9e, 0x53, 0xc7, 0xe9, 0x46, - 0x87, 0xff, 0x08, 0x2c, 0xc3, 0x23, 0xd1, 0xa1, 0xcc, 0x15, 0x27, 0x97, 0x92, 0x8c, 0xa5, 0x33, - 0x37, 0xc0, 0x16, 0x58, 0x82, 0x48, 0xb8, 0x03, 0xec, 0x1f, 0xfb, 0x55, 0x33, 0x1c, 0x55, 0x1f, - 0x7a, 0x8c, 0x63, 0x3f, 0x8f, 0x52, 0xcb, 0xa6, 0x4c, 0x96, 0xab, 0x15, 0x40, 0x2e, 0x15, 0x8a, - 0xe9, 0x3e, 0x06, 0x74, 0x26, 0xee, 0xd1, 0xc1, 0x7f, 0xa2, 0xfb, 0x03, 0x8a, 0x64, 0x59, 0x21, - 0x45, 0x32, 0x14, 0x51, 0xec, 0xff, 0x5c, 0x00, 0x0b, 0x4d, 0xee, 0xc8, 0x2d, 0xb0, 0x3c, 0x7e, - 0x5d, 0x54, 0x3d, 0xfd, 0x90, 0xe9, 0xc9, 0x2b, 0xae, 0x14, 0x7f, 0x9f, 0x8f, 0xcc, 0xe5, 0xd7, - 0x60, 0x63, 0xfa, 0xfa, 0x67, 0x4f, 0x9e, 0xd2, 0x29, 0xfa, 0x6c, 0xba, 0x78, 0xb1, 0x0e, 0x58, - 0x9f, 0xba, 0x35, 0x77, 0x33, 0x3d, 0xd2, 0x32, 0xa5, 0x3c, 0x93, 0x2c, 0x5e, 0xe9, 0x25, 0x58, - 0x99, 0xe8, 0xe9, 0x9d, 0xcc, 0xe9, 0x49, 0x89, 0x72, 0xff, 0x52, 0x49, 0xd2, 0x7d, 0xa2, 0xa7, - 0x76, 0x2e, 0x28, 0x6e, 0x2c, 0xb9, 0xc0, 0x3d, 0xeb, 0xbc, 0x0f, 0x9a, 0x5f, 0x87, 0xaa, 0x74, - 0x36, 0x54, 0xa5, 0x1f, 0x43, 0x55, 0x7a, 0x37, 0x52, 0xe7, 0xce, 0x46, 0xea, 0xdc, 0xf7, 0x91, - 0x3a, 0xf7, 0xa2, 0xe2, 0xb8, 0xa2, 0x73, 0xd4, 0xd6, 0x11, 0xed, 0x19, 0x2d, 0xdf, 0xae, 0xfc, - 0x0c, 0xb6, 0xb9, 0x11, 0xf6, 0xd7, 0x60, 0xaf, 0x32, 0xd1, 0x63, 0xe2, 0xa4, 0x8f, 0x79, 0x7b, - 0xc9, 0xff, 0x3e, 0x55, 0x7e, 0x05, 0x00, 0x00, 0xff, 0xff, 0xe4, 0xa5, 0xd7, 0xcc, 0x15, 0x07, - 0x00, 0x00, + // 628 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3f, 0x6f, 0xd3, 0x4e, + 0x18, 0xc7, 0xeb, 0xb6, 0xea, 0xef, 0xd7, 0x53, 0x4b, 0x53, 0x53, 0x35, 0x89, 0x01, 0xd3, 0x1a, + 0x11, 0x42, 0xa5, 0xd8, 0xb4, 0xe5, 0x9f, 0xc2, 0x94, 0x66, 0x8a, 0x44, 0x54, 0xc9, 0x61, 0x42, + 0x48, 0xd6, 0xe5, 0x7c, 0x38, 0x16, 0xc9, 0x5d, 0x74, 0x77, 0x8d, 0xda, 0x95, 0x91, 0x09, 0x89, + 0x89, 0x77, 0x80, 0x98, 0x3a, 0xf0, 0x02, 0x18, 0x19, 0x2b, 0x26, 0x46, 0x94, 0x0c, 0x9d, 0x78, + 0x0f, 0xc8, 0x7f, 0xe3, 0x38, 0x2e, 0x0d, 0x42, 0xb0, 0x24, 0xba, 0xe7, 0xf9, 0xde, 0xf7, 0x9e, + 0xcf, 0xdd, 0x73, 0x67, 0x50, 0xe4, 0x82, 0xb9, 0x36, 0x36, 0x5c, 0x04, 0x29, 0x83, 0xa8, 0x8b, + 0x0d, 0x71, 0xac, 0xf7, 0x19, 0x15, 0x54, 0xce, 0x05, 0x29, 0x3d, 0x4e, 0x29, 0x45, 0x44, 0x79, + 0x8f, 0x72, 0xcb, 0xcf, 0x1b, 0xc1, 0x20, 0x10, 0x2b, 0xf9, 0x60, 0x64, 0xf4, 0xb8, 0x63, 0x0c, + 0x76, 0xbd, 0xbf, 0x30, 0xb1, 0x0e, 0x7b, 0x2e, 0xa1, 0x86, 0xff, 0x1b, 0x84, 0xb4, 0xf7, 0x12, + 0x58, 0x69, 0x72, 0xa7, 0x66, 0xdb, 0x87, 0xbe, 0xaf, 0xbc, 0x07, 0xfe, 0x43, 0x0c, 0x43, 0x41, + 0x59, 0x41, 0xda, 0x92, 0xca, 0xcb, 0x07, 0x85, 0xaf, 0x9f, 0x2a, 0x1b, 0xa1, 0x7f, 0xcd, 0xb6, + 0x19, 0xe6, 0xbc, 0x25, 0x98, 0x4b, 0x1c, 0x33, 0x12, 0xca, 0xb7, 0xc0, 0x2a, 0xa2, 0x84, 0x60, + 0x24, 0x5c, 0x4a, 0x2c, 0xd7, 0x2e, 0xcc, 0x7b, 0x33, 0xcd, 0x95, 0x71, 0xb0, 0x61, 0x57, 0xef, + 0xbd, 0x3e, 0x3f, 0xdd, 0x89, 0xa6, 0xbc, 0x39, 0x3f, 0xdd, 0xb9, 0x19, 0xe2, 0x1e, 0x27, 0x80, + 0x93, 0xa5, 0x68, 0x9b, 0x60, 0x23, 0x39, 0x36, 0x31, 0xef, 0x53, 0xc2, 0xb1, 0xf6, 0x6e, 0xde, + 0x4f, 0x34, 0x08, 0x17, 0x90, 0x08, 0x17, 0x0a, 0xfc, 0x07, 0xb5, 0x97, 0xc0, 0x5a, 0xb0, 0xb6, + 0x85, 0x3a, 0xd0, 0x4d, 0x54, 0xbf, 0x1a, 0x84, 0xeb, 0x5e, 0xb4, 0x61, 0xcb, 0x65, 0x90, 0x43, + 0x94, 0x08, 0x06, 0x91, 0xb0, 0x10, 0xb5, 0xb1, 0x27, 0x5c, 0xd8, 0x92, 0xca, 0x8b, 0xe6, 0x95, + 0x28, 0x5e, 0xa7, 0x36, 0x6e, 0xd8, 0xf2, 0x13, 0xa0, 0x08, 0x06, 0x09, 0x7f, 0x89, 0x99, 0xe7, + 0x49, 0x08, 0xee, 0x5a, 0x94, 0x58, 0x81, 0x5d, 0x61, 0xd1, 0x37, 0xcf, 0x47, 0x8a, 0x7a, 0x20, + 0x38, 0x24, 0x01, 0x42, 0xf5, 0x71, 0x7a, 0x97, 0xee, 0x64, 0xef, 0xd2, 0x14, 0xbc, 0xa6, 0x82, + 0xeb, 0x59, 0xf1, 0x78, 0xd7, 0x3e, 0x4a, 0xe0, 0x6a, 0x93, 0x3b, 0x26, 0xe6, 0x82, 0xb2, 0x30, + 0xd9, 0xa8, 0xd7, 0xfe, 0xe6, 0xa6, 0x55, 0x1f, 0xa5, 0x69, 0x4a, 0xd9, 0x34, 0xe9, 0xa2, 0xb4, + 0x1b, 0xe0, 0x5a, 0x46, 0x38, 0x66, 0xf9, 0x2c, 0x81, 0xb5, 0x26, 0x77, 0x9e, 0x51, 0xc7, 0xe9, + 0x46, 0x87, 0xff, 0x10, 0x2c, 0xc3, 0x23, 0xd1, 0xa1, 0xcc, 0x15, 0x27, 0x97, 0x92, 0x8c, 0xa5, + 0x33, 0x37, 0xc0, 0x26, 0x58, 0x82, 0x48, 0xb8, 0x03, 0xec, 0x1f, 0xfb, 0xff, 0x66, 0x38, 0xaa, + 0x3e, 0xf0, 0x18, 0xc7, 0x7e, 0x1e, 0xa5, 0x96, 0x4d, 0x99, 0x2c, 0x57, 0x2b, 0x82, 0x7c, 0x2a, + 0x14, 0xd3, 0x7d, 0x08, 0xe8, 0x4c, 0xdc, 0xa3, 0x83, 0x7f, 0x44, 0xf7, 0x1b, 0x14, 0xc9, 0xb2, + 0x42, 0x8a, 0x64, 0x28, 0xa2, 0xd8, 0xfb, 0xb1, 0x00, 0x16, 0x9a, 0xdc, 0x91, 0x5b, 0x60, 0x79, + 0xfc, 0xba, 0xa8, 0x7a, 0xfa, 0x21, 0xd3, 0x93, 0x57, 0x5c, 0x29, 0xfd, 0x3a, 0x1f, 0x99, 0xcb, + 0xaf, 0xc0, 0xfa, 0xf4, 0xf5, 0xcf, 0x9e, 0x3c, 0xa5, 0x53, 0xf4, 0xd9, 0x74, 0xf1, 0x62, 0x1d, + 0x90, 0x9b, 0xba, 0x35, 0xb7, 0x33, 0x3d, 0xd2, 0x32, 0xa5, 0x32, 0x93, 0x2c, 0x5e, 0xe9, 0x05, + 0x58, 0x99, 0xe8, 0xe9, 0xed, 0xcc, 0xe9, 0x49, 0x89, 0x72, 0xf7, 0x52, 0x49, 0xd2, 0x7d, 0xa2, + 0xa7, 0xb6, 0x2f, 0x28, 0x6e, 0x2c, 0xb9, 0xc0, 0x3d, 0xeb, 0xbc, 0x0f, 0x9a, 0x5f, 0x86, 0xaa, + 0x74, 0x36, 0x54, 0xa5, 0xef, 0x43, 0x55, 0x7a, 0x3b, 0x52, 0xe7, 0xce, 0x46, 0xea, 0xdc, 0xb7, + 0x91, 0x3a, 0xf7, 0x7c, 0xdf, 0x71, 0x45, 0xe7, 0xa8, 0xad, 0x23, 0xda, 0x33, 0x5a, 0xbe, 0x5d, + 0xe5, 0x29, 0x6c, 0x73, 0x23, 0xec, 0xaf, 0xc1, 0xee, 0xfd, 0x89, 0x1e, 0x13, 0x27, 0x7d, 0xcc, + 0xdb, 0x4b, 0xfe, 0xf7, 0x69, 0xff, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0xe3, 0x02, 0x1e, + 0x15, 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/client/cli/query.go b/x/interchainquery/client/cli/query.go index 782ac08678..44b8798bc2 100644 --- a/x/interchainquery/client/cli/query.go +++ b/x/interchainquery/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) // GetQueryCmd returns the cli query commands for this module. diff --git a/x/interchainquery/genesis.go b/x/interchainquery/genesis.go index 5fe7121727..0d8840d602 100644 --- a/x/interchainquery/genesis.go +++ b/x/interchainquery/genesis.go @@ -3,8 +3,8 @@ package interchainquery import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/interchainquery/handler.go b/x/interchainquery/handler.go index 3d72e3cbd3..f186818904 100644 --- a/x/interchainquery/handler.go +++ b/x/interchainquery/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) // NewHandler returns a handler for interchainquery module messages diff --git a/x/interchainquery/keeper/abci.go b/x/interchainquery/keeper/abci.go index 697acfaaff..1234347ea2 100644 --- a/x/interchainquery/keeper/abci.go +++ b/x/interchainquery/keeper/abci.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) // EndBlocker of interchainquery module diff --git a/x/interchainquery/keeper/grpc_query.go b/x/interchainquery/keeper/grpc_query.go index 7909a1369d..4c0b20cd38 100644 --- a/x/interchainquery/keeper/grpc_query.go +++ b/x/interchainquery/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) var _ types.QueryServiceServer = Keeper{} diff --git a/x/interchainquery/keeper/keeper.go b/x/interchainquery/keeper/keeper.go index 1dfc5c3b03..87eddb25f3 100644 --- a/x/interchainquery/keeper/keeper.go +++ b/x/interchainquery/keeper/keeper.go @@ -13,8 +13,8 @@ import ( connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) // Keeper of this module maintains collections of registered zones. diff --git a/x/interchainquery/keeper/keeper_test.go b/x/interchainquery/keeper/keeper_test.go index 791712e032..a7b363adc6 100644 --- a/x/interchainquery/keeper/keeper_test.go +++ b/x/interchainquery/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) type KeeperTestSuite struct { diff --git a/x/interchainquery/keeper/msg_server.go b/x/interchainquery/keeper/msg_server.go index a5b9d8bfc6..082e71fdb3 100644 --- a/x/interchainquery/keeper/msg_server.go +++ b/x/interchainquery/keeper/msg_server.go @@ -16,8 +16,8 @@ import ( ics23 "github.com/cosmos/ics23/go" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) type msgServer struct { diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index 41db6dcfb3..c770d6c5bc 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -10,8 +10,8 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const ( diff --git a/x/interchainquery/keeper/queries.go b/x/interchainquery/keeper/queries.go index d54d20b63b..2a3b6ec29a 100644 --- a/x/interchainquery/keeper/queries.go +++ b/x/interchainquery/keeper/queries.go @@ -16,7 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store/prefix" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) // Generates a query ID based on the request information diff --git a/x/interchainquery/keeper/queries_test.go b/x/interchainquery/keeper/queries_test.go index a6a7b37213..1dbb1a7df9 100644 --- a/x/interchainquery/keeper/queries_test.go +++ b/x/interchainquery/keeper/queries_test.go @@ -10,10 +10,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (s *KeeperTestSuite) TestGetQueryId() { diff --git a/x/interchainquery/module.go b/x/interchainquery/module.go index 0286650d6c..b550d71e1f 100644 --- a/x/interchainquery/module.go +++ b/x/interchainquery/module.go @@ -19,10 +19,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/x/interchainquery/client/cli" - "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/interchainquery/client/cli" + "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) var ( diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index 5174f9066e..d082837339 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -311,49 +311,49 @@ var fileDescriptor_74cd646eb05658fd = []byte{ // 716 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, 0x10, 0x8e, 0xd3, 0xf4, 0x6f, 0xb2, 0x71, 0xd2, 0xfc, 0x4b, 0x01, 0xa7, 0x12, 0x89, 0x29, 0x12, - 0xb5, 0x0a, 0xb5, 0xd5, 0xf6, 0x84, 0xc4, 0x81, 0x26, 0xb5, 0x20, 0x50, 0xda, 0xd4, 0x49, 0x25, - 0xca, 0xc5, 0x72, 0xec, 0x25, 0x59, 0xd5, 0xf6, 0xa6, 0xde, 0x75, 0x44, 0x9e, 0x81, 0x0b, 0x47, - 0x9e, 0x80, 0x27, 0xe0, 0x21, 0x7a, 0xac, 0x38, 0x21, 0x0e, 0x05, 0xb5, 0x37, 0x9e, 0x02, 0x79, - 0xed, 0x6d, 0x0b, 0x15, 0x9c, 0x38, 0xd9, 0x3b, 0xdf, 0x37, 0xdf, 0x8c, 0x67, 0x3e, 0x2f, 0x58, - 0xa6, 0x2c, 0xc2, 0x1e, 0x32, 0x70, 0xc8, 0x50, 0xe4, 0x8e, 0x1c, 0x1c, 0x1e, 0xc5, 0x28, 0x9a, - 0x1a, 0x93, 0x35, 0x63, 0x88, 0x42, 0x44, 0x31, 0xd5, 0xc7, 0x11, 0x61, 0x04, 0xd6, 0x53, 0xa2, - 0xfe, 0x1b, 0x51, 0x9f, 0xac, 0x2d, 0x2e, 0x0c, 0xc9, 0x90, 0x70, 0x96, 0x91, 0xbc, 0xa5, 0x09, - 0x8b, 0x8d, 0x21, 0x21, 0x43, 0x1f, 0x19, 0xfc, 0x34, 0x88, 0xdf, 0x18, 0x5e, 0x1c, 0x39, 0x0c, - 0x93, 0x30, 0xc3, 0xeb, 0x2e, 0xa1, 0x01, 0xa1, 0x76, 0x9a, 0x98, 0x1e, 0x52, 0x68, 0xe9, 0x63, - 0x01, 0xcc, 0xee, 0x25, 0xea, 0xb0, 0x0a, 0xf2, 0xd8, 0x53, 0x24, 0x55, 0xd2, 0x4a, 0x56, 0x1e, - 0x7b, 0xf0, 0x1e, 0xa8, 0xb8, 0x24, 0x0c, 0x91, 0x9b, 0x08, 0xd9, 0xd8, 0x53, 0xf2, 0x1c, 0x92, - 0x2f, 0x83, 0x1d, 0x0f, 0xd6, 0x41, 0x91, 0x37, 0x98, 0xe0, 0x33, 0x1c, 0x9f, 0xe3, 0xe7, 0x8e, - 0x07, 0xef, 0x00, 0xc0, 0xdb, 0xb6, 0xd9, 0x74, 0x8c, 0x94, 0x02, 0x07, 0x4b, 0x3c, 0xd2, 0x9f, - 0x8e, 0x11, 0xbc, 0x0b, 0xe4, 0x08, 0x1d, 0xc5, 0x88, 0x32, 0xdb, 0x73, 0x98, 0xa3, 0xcc, 0xaa, - 0x92, 0x26, 0x5b, 0xe5, 0x2c, 0xb6, 0xe5, 0x30, 0x07, 0x2e, 0x83, 0x79, 0xd7, 0xf1, 0xfd, 0x81, - 0xe3, 0x1e, 0xda, 0x01, 0xf1, 0x62, 0x1f, 0x29, 0x15, 0x2e, 0x53, 0x15, 0xe1, 0x97, 0x3c, 0x0a, - 0x9b, 0xa0, 0x7c, 0x41, 0xc4, 0x9e, 0x52, 0xe4, 0x24, 0x20, 0x42, 0x9d, 0xf4, 0x5b, 0x04, 0x81, - 0x57, 0x93, 0x79, 0x35, 0x59, 0x04, 0x79, 0xb9, 0x5d, 0x50, 0x65, 0x38, 0x40, 0x24, 0x66, 0xf6, - 0x98, 0xf8, 0xd8, 0x9d, 0x2a, 0xf3, 0xaa, 0xa4, 0x55, 0xd7, 0x35, 0xfd, 0x8f, 0xfb, 0xd0, 0xfb, - 0x69, 0x42, 0x97, 0xf3, 0xad, 0x0a, 0xbb, 0x7a, 0x84, 0x3b, 0xa0, 0x26, 0x04, 0xc5, 0x42, 0x94, - 0xaa, 0x2a, 0x69, 0xe5, 0xf5, 0xba, 0x9e, 0x6e, 0x4c, 0x17, 0x1b, 0xd3, 0xb7, 0x32, 0x42, 0xab, - 0x78, 0x7c, 0xda, 0xcc, 0x7d, 0xf8, 0xd6, 0x94, 0xac, 0xf9, 0x2c, 0x59, 0x40, 0xf0, 0x01, 0xf8, - 0x5f, 0xe8, 0x25, 0x4f, 0xca, 0x9c, 0x60, 0xac, 0x94, 0x54, 0x49, 0x2b, 0x58, 0xa2, 0x50, 0x5f, - 0xc4, 0xaf, 0xce, 0x97, 0xa2, 0x90, 0x29, 0x65, 0x55, 0xd2, 0x8a, 0x17, 0xf3, 0xed, 0xa1, 0x90, - 0x25, 0x7a, 0x34, 0x1e, 0x04, 0x98, 0xd2, 0x64, 0xc3, 0x23, 0x84, 0x87, 0x23, 0xa6, 0xd4, 0x52, - 0xbd, 0x4b, 0xe0, 0x19, 0x8f, 0x2f, 0xbd, 0xcb, 0x83, 0x52, 0x32, 0xa6, 0x2e, 0xc1, 0x21, 0xbb, - 0x66, 0x16, 0x07, 0x54, 0x22, 0x14, 0x10, 0x86, 0x84, 0x0c, 0x37, 0x4b, 0xeb, 0x71, 0xf2, 0x31, - 0x5f, 0x4f, 0x9b, 0xf7, 0x87, 0x98, 0x8d, 0xe2, 0x81, 0xee, 0x92, 0x20, 0xb3, 0x5f, 0xf6, 0x58, - 0xa5, 0xde, 0xa1, 0x91, 0x18, 0x84, 0xea, 0x9d, 0x90, 0x7d, 0xfe, 0xb4, 0x0a, 0x32, 0x77, 0x76, - 0x42, 0x66, 0xc9, 0xa9, 0x64, 0xda, 0x00, 0xb4, 0x81, 0xec, 0x13, 0xd7, 0xf1, 0x45, 0x85, 0x99, - 0x7f, 0x50, 0xa1, 0xcc, 0x15, 0xb3, 0x02, 0x2b, 0x60, 0x76, 0xe2, 0xf8, 0x71, 0xea, 0x55, 0xb9, - 0xb5, 0xf0, 0xe3, 0xb4, 0x59, 0x8b, 0x10, 0x8d, 0x7d, 0xf6, 0x90, 0x04, 0x98, 0xa1, 0x60, 0xcc, - 0xa6, 0x56, 0x4a, 0x59, 0xea, 0x02, 0xf9, 0x69, 0xfa, 0xcf, 0xf6, 0x98, 0xc3, 0x10, 0x7c, 0x02, - 0xe6, 0x12, 0x4f, 0x60, 0x44, 0x15, 0x49, 0x9d, 0xd1, 0xca, 0xeb, 0xea, 0x5f, 0x4c, 0xc3, 0xff, - 0xb7, 0x56, 0x21, 0xe9, 0xdc, 0x12, 0x69, 0x2b, 0x36, 0xa8, 0xfc, 0x62, 0x26, 0x58, 0x07, 0x37, - 0x2d, 0xf3, 0xb9, 0xd9, 0xee, 0xdb, 0x7b, 0xfb, 0xa6, 0x75, 0x60, 0x5b, 0x66, 0xaf, 0xbb, 0xbb, - 0xd3, 0x33, 0x6b, 0x39, 0x78, 0x1b, 0xdc, 0xb0, 0xcc, 0xbe, 0x75, 0x70, 0x81, 0xec, 0xed, 0x9b, - 0xbd, 0x7e, 0x4d, 0x82, 0x8b, 0xe0, 0x96, 0xf9, 0xca, 0x6c, 0xef, 0xf7, 0xcd, 0x0c, 0x6a, 0x6f, - 0x6e, 0x6f, 0xb7, 0x36, 0xdb, 0x2f, 0x6a, 0xf9, 0x56, 0xef, 0xf8, 0xac, 0x21, 0x9d, 0x9c, 0x35, - 0xa4, 0xef, 0x67, 0x0d, 0xe9, 0xfd, 0x79, 0x23, 0x77, 0x72, 0xde, 0xc8, 0x7d, 0x39, 0x6f, 0xe4, - 0x5e, 0x3f, 0xba, 0x32, 0xbb, 0x1e, 0xef, 0x7a, 0x75, 0xdb, 0x19, 0x50, 0x23, 0xbb, 0xaf, 0x26, - 0x6b, 0x1b, 0xc6, 0xdb, 0x6b, 0xb7, 0x16, 0x1f, 0xe9, 0xe0, 0x3f, 0x6e, 0xe0, 0x8d, 0x9f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xf2, 0x96, 0x0c, 0x51, 0xdc, 0x04, 0x00, 0x00, + 0xb5, 0x0a, 0xb5, 0xd5, 0xc2, 0x05, 0x89, 0x03, 0x4d, 0x6a, 0x41, 0xa0, 0xb4, 0xa9, 0x93, 0x4a, + 0x94, 0x8b, 0xe5, 0xd8, 0x4b, 0xb2, 0xaa, 0xed, 0x4d, 0xbd, 0xeb, 0x88, 0x3c, 0x03, 0x17, 0x8e, + 0x3c, 0x01, 0x4f, 0xc0, 0x43, 0xf4, 0x58, 0x71, 0x42, 0x1c, 0x0a, 0x6a, 0x6f, 0x3c, 0x05, 0xf2, + 0xda, 0xdb, 0x16, 0x2a, 0x38, 0x71, 0xb2, 0x77, 0xbe, 0x6f, 0xbe, 0x19, 0xcf, 0x7c, 0x5e, 0xb0, + 0x4c, 0x59, 0x84, 0x3d, 0x64, 0xe0, 0x90, 0xa1, 0xc8, 0x1d, 0x39, 0x38, 0x3c, 0x8c, 0x51, 0x34, + 0x35, 0x26, 0x6b, 0xc6, 0x10, 0x85, 0x88, 0x62, 0xaa, 0x8f, 0x23, 0xc2, 0x08, 0xac, 0xa7, 0x44, + 0xfd, 0x37, 0xa2, 0x3e, 0x59, 0x5b, 0x5c, 0x18, 0x92, 0x21, 0xe1, 0x2c, 0x23, 0x79, 0x4b, 0x13, + 0x16, 0x1b, 0x43, 0x42, 0x86, 0x3e, 0x32, 0xf8, 0x69, 0x10, 0xbf, 0x31, 0xbc, 0x38, 0x72, 0x18, + 0x26, 0x61, 0x86, 0xd7, 0x5d, 0x42, 0x03, 0x42, 0xed, 0x34, 0x31, 0x3d, 0xa4, 0xd0, 0xd2, 0xc7, + 0x02, 0x98, 0xdd, 0x4d, 0xd4, 0x61, 0x15, 0xe4, 0xb1, 0xa7, 0x48, 0xaa, 0xa4, 0x95, 0xac, 0x3c, + 0xf6, 0xe0, 0x1d, 0x50, 0x71, 0x49, 0x18, 0x22, 0x37, 0x11, 0xb2, 0xb1, 0xa7, 0xe4, 0x39, 0x24, + 0x5f, 0x04, 0x3b, 0x1e, 0xac, 0x83, 0x22, 0x6f, 0x30, 0xc1, 0x67, 0x38, 0x3e, 0xc7, 0xcf, 0x1d, + 0x0f, 0xde, 0x02, 0x80, 0xb7, 0x6d, 0xb3, 0xe9, 0x18, 0x29, 0x05, 0x0e, 0x96, 0x78, 0xa4, 0x3f, + 0x1d, 0x23, 0x78, 0x1b, 0xc8, 0x11, 0x3a, 0x8c, 0x11, 0x65, 0xb6, 0xe7, 0x30, 0x47, 0x99, 0x55, + 0x25, 0x4d, 0xb6, 0xca, 0x59, 0x6c, 0xd3, 0x61, 0x0e, 0x5c, 0x06, 0xf3, 0xae, 0xe3, 0xfb, 0x03, + 0xc7, 0x3d, 0xb0, 0x03, 0xe2, 0xc5, 0x3e, 0x52, 0x2a, 0x5c, 0xa6, 0x2a, 0xc2, 0x2f, 0x79, 0x14, + 0x36, 0x41, 0xf9, 0x9c, 0x88, 0x3d, 0xa5, 0xc8, 0x49, 0x40, 0x84, 0x3a, 0xe9, 0xb7, 0x08, 0x02, + 0xaf, 0x26, 0xf3, 0x6a, 0xb2, 0x08, 0xf2, 0x72, 0x3b, 0xa0, 0xca, 0x70, 0x80, 0x48, 0xcc, 0xec, + 0x31, 0xf1, 0xb1, 0x3b, 0x55, 0xe6, 0x55, 0x49, 0xab, 0xae, 0x6b, 0xfa, 0x1f, 0xf7, 0xa1, 0xf7, + 0xd3, 0x84, 0x2e, 0xe7, 0x5b, 0x15, 0x76, 0xf9, 0x08, 0xb7, 0x41, 0x4d, 0x08, 0x8a, 0x85, 0x28, + 0x55, 0x55, 0xd2, 0xca, 0xeb, 0x75, 0x3d, 0xdd, 0x98, 0x2e, 0x36, 0xa6, 0x6f, 0x66, 0x84, 0x56, + 0xf1, 0xe8, 0xa4, 0x99, 0xfb, 0xf0, 0xad, 0x29, 0x59, 0xf3, 0x59, 0xb2, 0x80, 0xe0, 0x3d, 0xf0, + 0xbf, 0xd0, 0x4b, 0x9e, 0x94, 0x39, 0xc1, 0x58, 0x29, 0xa9, 0x92, 0x56, 0xb0, 0x44, 0xa1, 0xbe, + 0x88, 0x5f, 0x9e, 0x2f, 0x45, 0x21, 0x53, 0xca, 0xaa, 0xa4, 0x15, 0xcf, 0xe7, 0xdb, 0x43, 0x21, + 0x4b, 0xf4, 0x68, 0x3c, 0x08, 0x30, 0xa5, 0xc9, 0x86, 0x47, 0x08, 0x0f, 0x47, 0x4c, 0xa9, 0xa5, + 0x7a, 0x17, 0xc0, 0x33, 0x1e, 0x5f, 0x7a, 0x97, 0x07, 0xa5, 0x64, 0x4c, 0x5d, 0x82, 0x43, 0x76, + 0xc5, 0x2c, 0x0e, 0xa8, 0x44, 0x28, 0x20, 0x0c, 0x09, 0x19, 0x6e, 0x96, 0xd6, 0xe3, 0xe4, 0x63, + 0xbe, 0x9e, 0x34, 0xef, 0x0e, 0x31, 0x1b, 0xc5, 0x03, 0xdd, 0x25, 0x41, 0x66, 0xbf, 0xec, 0xb1, + 0x4a, 0xbd, 0x03, 0x23, 0x31, 0x08, 0xd5, 0x3b, 0x21, 0xfb, 0xfc, 0x69, 0x15, 0x64, 0xee, 0xec, + 0x84, 0xcc, 0x92, 0x53, 0xc9, 0xb4, 0x01, 0x68, 0x03, 0xd9, 0x27, 0xae, 0xe3, 0x8b, 0x0a, 0x33, + 0xff, 0xa0, 0x42, 0x99, 0x2b, 0x66, 0x05, 0x56, 0xc0, 0xec, 0xc4, 0xf1, 0xe3, 0xd4, 0xab, 0x72, + 0x6b, 0xe1, 0xc7, 0x49, 0xb3, 0x16, 0x21, 0x1a, 0xfb, 0xec, 0x3e, 0x09, 0x30, 0x43, 0xc1, 0x98, + 0x4d, 0xad, 0x94, 0xb2, 0xd4, 0x05, 0xf2, 0xd3, 0xf4, 0x9f, 0xed, 0x31, 0x87, 0x21, 0xf8, 0x04, + 0xcc, 0x25, 0x9e, 0xc0, 0x88, 0x2a, 0x92, 0x3a, 0xa3, 0x95, 0xd7, 0xd5, 0xbf, 0x98, 0x86, 0xff, + 0x6f, 0xad, 0x42, 0xd2, 0xb9, 0x25, 0xd2, 0x56, 0x6c, 0x50, 0xf9, 0xc5, 0x4c, 0xb0, 0x0e, 0xae, + 0x5b, 0xe6, 0x73, 0xb3, 0xdd, 0xb7, 0x77, 0xf7, 0x4c, 0x6b, 0xdf, 0xb6, 0xcc, 0x5e, 0x77, 0x67, + 0xbb, 0x67, 0xd6, 0x72, 0xf0, 0x26, 0xb8, 0x66, 0x99, 0x7d, 0x6b, 0xff, 0x1c, 0xd9, 0xdd, 0x33, + 0x7b, 0xfd, 0x9a, 0x04, 0x17, 0xc1, 0x0d, 0xf3, 0x95, 0xd9, 0xde, 0xeb, 0x9b, 0x19, 0xd4, 0xde, + 0xd8, 0xda, 0x6a, 0x6d, 0xb4, 0x5f, 0xd4, 0xf2, 0xad, 0xde, 0xd1, 0x69, 0x43, 0x3a, 0x3e, 0x6d, + 0x48, 0xdf, 0x4f, 0x1b, 0xd2, 0xfb, 0xb3, 0x46, 0xee, 0xf8, 0xac, 0x91, 0xfb, 0x72, 0xd6, 0xc8, + 0xbd, 0x7e, 0x74, 0x69, 0x76, 0x3d, 0xde, 0xf5, 0xea, 0x96, 0x33, 0xa0, 0x46, 0x76, 0x5f, 0x4d, + 0xd6, 0x1e, 0x1a, 0x6f, 0xaf, 0xdc, 0x5a, 0x7c, 0xa4, 0x83, 0xff, 0xb8, 0x81, 0x1f, 0xfc, 0x0c, + 0x00, 0x00, 0xff, 0xff, 0x2b, 0x64, 0xd1, 0xd1, 0xdc, 0x04, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { diff --git a/x/interchainquery/types/messages.pb.go b/x/interchainquery/types/messages.pb.go index 53952d4dc5..dc3acd6fc2 100644 --- a/x/interchainquery/types/messages.pb.go +++ b/x/interchainquery/types/messages.pb.go @@ -123,38 +123,38 @@ func init() { var fileDescriptor_25adad4f8ed32400 = []byte{ // 512 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x6f, 0xd3, 0x4e, - 0x18, 0xc7, 0x73, 0xc9, 0xef, 0x97, 0xb6, 0x6e, 0x10, 0xe0, 0x46, 0xc8, 0x0d, 0x60, 0x47, 0xb7, - 0x10, 0x10, 0xbd, 0x93, 0xd3, 0xa9, 0x61, 0x22, 0x5b, 0x25, 0xca, 0x1f, 0x67, 0x63, 0x89, 0x9c, - 0xf8, 0x7a, 0x39, 0x29, 0xf6, 0x99, 0xbb, 0x4b, 0xd4, 0xac, 0x4c, 0x8c, 0x48, 0x2c, 0x8c, 0x79, - 0x11, 0x48, 0x8c, 0xac, 0x8c, 0x15, 0x2c, 0x4c, 0x11, 0x4a, 0x18, 0x60, 0xcd, 0x2b, 0x40, 0xbe, - 0xb3, 0x01, 0xb5, 0x61, 0x60, 0xba, 0xc7, 0xcf, 0xf7, 0xf3, 0xfc, 0xf3, 0x3d, 0x67, 0xb5, 0xa4, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x8f, 0xd3, 0x3e, + 0x18, 0xc7, 0xeb, 0xf6, 0xf7, 0xeb, 0xdd, 0xe5, 0x8a, 0x80, 0x5c, 0x85, 0x72, 0x05, 0x92, 0xca, + 0x0b, 0x05, 0x71, 0xb6, 0x52, 0x58, 0xae, 0x4c, 0x74, 0x3b, 0x89, 0xe3, 0x4f, 0xba, 0xb1, 0x54, + 0x69, 0xe3, 0x73, 0x2d, 0x35, 0x71, 0xb0, 0xdd, 0xea, 0xba, 0x32, 0x31, 0x22, 0xb1, 0x30, 0xf6, + 0x45, 0x20, 0x31, 0xb2, 0x32, 0x9e, 0x60, 0x61, 0xaa, 0x50, 0xcb, 0x00, 0x6b, 0x5f, 0x01, 0x8a, + 0x9d, 0x00, 0xba, 0x2b, 0x03, 0x93, 0x9f, 0x3c, 0xdf, 0xcf, 0xf3, 0x2f, 0x7e, 0x6c, 0xb5, 0xa4, 0x12, 0x2c, 0x22, 0x98, 0x25, 0x8a, 0x88, 0xe1, 0x28, 0x64, 0xc9, 0x8b, 0x09, 0x11, 0x33, 0x3c, - 0xf5, 0x71, 0x4c, 0xa4, 0x0c, 0x29, 0x91, 0x28, 0x15, 0x5c, 0x71, 0x7b, 0xdf, 0x90, 0xe8, 0x02, + 0xf5, 0x71, 0x4c, 0xa4, 0x0c, 0x29, 0x91, 0x28, 0x15, 0x5c, 0x71, 0x7b, 0xdf, 0x90, 0xe8, 0x1c, 0x89, 0xa6, 0x7e, 0xa3, 0x4e, 0x39, 0xe5, 0x9a, 0xc2, 0x99, 0x65, 0x02, 0x1a, 0xfb, 0x43, 0x2e, - 0x63, 0x2e, 0xfb, 0x46, 0x30, 0x1f, 0xb9, 0x74, 0x8b, 0x72, 0x4e, 0xc7, 0x04, 0x87, 0x29, 0xc3, - 0x61, 0x92, 0x70, 0x15, 0x2a, 0xc6, 0x93, 0x42, 0xbd, 0xad, 0x48, 0x12, 0x11, 0x11, 0xb3, 0x44, - 0xe1, 0xa1, 0x98, 0xa5, 0x8a, 0xe3, 0x54, 0x70, 0x7e, 0x6a, 0x64, 0xf8, 0xa3, 0x6c, 0xdd, 0x38, - 0x91, 0xb4, 0x37, 0x19, 0xc4, 0x4c, 0x3d, 0xcb, 0x7a, 0x08, 0x88, 0x4c, 0x79, 0x22, 0x89, 0x8d, - 0xac, 0x6d, 0xdd, 0x59, 0x9f, 0x45, 0x0e, 0x68, 0x82, 0xd6, 0x4e, 0x77, 0x6f, 0xbd, 0xf0, 0xae, - 0xce, 0xc2, 0x78, 0xdc, 0x81, 0x85, 0x02, 0x83, 0x2d, 0x6d, 0x1e, 0x47, 0x19, 0xaf, 0x87, 0xc8, - 0xf8, 0xf2, 0x45, 0xbe, 0x50, 0x60, 0xb0, 0xa5, 0xcd, 0xe3, 0xc8, 0xbe, 0x6b, 0x55, 0x05, 0x91, - 0x93, 0xb1, 0x72, 0x2a, 0x4d, 0xd0, 0xaa, 0x75, 0xaf, 0xaf, 0x17, 0xde, 0x15, 0x43, 0x1b, 0x3f, + 0x63, 0x2e, 0xfb, 0x46, 0x30, 0x1f, 0xb9, 0x74, 0x83, 0x72, 0x4e, 0xc7, 0x04, 0x87, 0x29, 0xc3, + 0x61, 0x92, 0x70, 0x15, 0x2a, 0xc6, 0x93, 0x42, 0xbd, 0xa9, 0x48, 0x12, 0x11, 0x11, 0xb3, 0x44, + 0xe1, 0xa1, 0x98, 0xa5, 0x8a, 0xe3, 0x54, 0x70, 0x7e, 0x62, 0x64, 0xf8, 0xa3, 0x6c, 0x5d, 0x3b, + 0x96, 0xb4, 0x37, 0x19, 0xc4, 0x4c, 0x3d, 0xcb, 0x7a, 0x08, 0x88, 0x4c, 0x79, 0x22, 0x89, 0x8d, + 0xac, 0x6d, 0xdd, 0x59, 0x9f, 0x45, 0x0e, 0x68, 0x82, 0xd6, 0x4e, 0x77, 0x6f, 0xbd, 0xf0, 0x2e, + 0xcf, 0xc2, 0x78, 0xdc, 0x81, 0x85, 0x02, 0x83, 0x2d, 0x6d, 0x1e, 0x45, 0x19, 0xaf, 0x87, 0xc8, + 0xf8, 0xf2, 0x79, 0xbe, 0x50, 0x60, 0xb0, 0xa5, 0xcd, 0xa3, 0xc8, 0xbe, 0x6d, 0x55, 0x05, 0x91, + 0x93, 0xb1, 0x72, 0x2a, 0x4d, 0xd0, 0xaa, 0x75, 0xaf, 0xae, 0x17, 0xde, 0x25, 0x43, 0x1b, 0x3f, 0x0c, 0x72, 0xc0, 0x7e, 0x6c, 0xed, 0xe8, 0xa6, 0xfb, 0x3c, 0x95, 0xce, 0x7f, 0x4d, 0xd0, 0xda, - 0x6d, 0xdf, 0x44, 0xbf, 0x07, 0x43, 0x66, 0x30, 0xf4, 0x34, 0x63, 0x9e, 0xa4, 0xb2, 0x5b, 0x5f, - 0x2f, 0xbc, 0x6b, 0x26, 0xd5, 0xaf, 0x38, 0x18, 0x6c, 0xa7, 0xb9, 0x9e, 0x95, 0x1e, 0x11, 0x46, + 0x6d, 0x5f, 0x47, 0xbf, 0x07, 0x43, 0x66, 0x30, 0xf4, 0x34, 0x63, 0x9e, 0xa4, 0xb2, 0x5b, 0x5f, + 0x2f, 0xbc, 0x2b, 0x26, 0xd5, 0xaf, 0x38, 0x18, 0x6c, 0xa7, 0xb9, 0x9e, 0x95, 0x1e, 0x11, 0x46, 0x47, 0xca, 0xf9, 0xbf, 0x09, 0x5a, 0x95, 0x3f, 0x4b, 0x1b, 0x3f, 0x0c, 0x72, 0xc0, 0x7e, 0x60, - 0xd5, 0x4e, 0x05, 0x8f, 0xfb, 0x61, 0x14, 0x09, 0x22, 0xa5, 0x53, 0xd5, 0x93, 0x39, 0x9f, 0xde, + 0xd5, 0x4e, 0x04, 0x8f, 0xfb, 0x61, 0x14, 0x09, 0x22, 0xa5, 0x53, 0xd5, 0x93, 0x39, 0x9f, 0xde, 0x1d, 0xd4, 0xf3, 0x5b, 0x78, 0x68, 0x94, 0x9e, 0x12, 0x2c, 0xa1, 0xc1, 0x6e, 0x46, 0xe7, 0xae, 0x4e, 0xed, 0xd5, 0xdc, 0x2b, 0xbd, 0x9d, 0x7b, 0xe0, 0xfb, 0xdc, 0x2b, 0xc1, 0xa6, 0xe5, 0x6e, - 0xfe, 0xd5, 0xc5, 0xd9, 0xfe, 0x00, 0xac, 0xca, 0x89, 0xa4, 0xf6, 0x7b, 0x60, 0xed, 0x6d, 0xba, - 0x12, 0x1f, 0xfd, 0x75, 0x6f, 0xd0, 0xe6, 0xd4, 0x8d, 0xa3, 0x7f, 0x0e, 0x29, 0x4e, 0xd8, 0x7e, - 0xf9, 0xf9, 0xdb, 0x9b, 0xf2, 0xfd, 0x0e, 0xb8, 0x07, 0xef, 0x5c, 0xda, 0x69, 0x75, 0x86, 0xa7, - 0xfe, 0x80, 0xa8, 0xd0, 0xc7, 0x52, 0xe7, 0xd0, 0xee, 0x6e, 0xef, 0xe3, 0xd2, 0x05, 0xe7, 0x4b, - 0x17, 0x7c, 0x5d, 0xba, 0xe0, 0xf5, 0xca, 0x2d, 0x9d, 0xaf, 0xdc, 0xd2, 0x97, 0x95, 0x5b, 0x7a, - 0x7e, 0x44, 0x99, 0x1a, 0x4d, 0x06, 0x68, 0xc8, 0x63, 0xdc, 0xd3, 0x2d, 0x1d, 0x3c, 0x0a, 0x07, - 0x12, 0xe7, 0x6f, 0x66, 0xea, 0x1f, 0xe2, 0xb3, 0xcb, 0x55, 0x66, 0x29, 0x91, 0x83, 0xaa, 0xde, - 0xd5, 0xc3, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x78, 0x91, 0x0b, 0xce, 0x60, 0x03, 0x00, 0x00, + 0xfe, 0xd5, 0xc5, 0xd9, 0xfe, 0x00, 0xac, 0xca, 0xb1, 0xa4, 0xf6, 0x7b, 0x60, 0xed, 0x6d, 0xba, + 0x12, 0x1f, 0xfd, 0x75, 0x6f, 0xd0, 0xe6, 0xd4, 0x8d, 0xc3, 0x7f, 0x0e, 0x29, 0x4e, 0xd8, 0x7e, + 0xf9, 0xf9, 0xdb, 0x9b, 0xf2, 0xdd, 0x0e, 0xb8, 0x03, 0x6f, 0x5d, 0xd8, 0x69, 0x75, 0x8a, 0xa7, + 0xfe, 0x80, 0xa8, 0xd0, 0xc7, 0x52, 0xe7, 0xd0, 0xee, 0x6e, 0xef, 0xe3, 0xd2, 0x05, 0x67, 0x4b, + 0x17, 0x7c, 0x5d, 0xba, 0xe0, 0xf5, 0xca, 0x2d, 0x9d, 0xad, 0xdc, 0xd2, 0x97, 0x95, 0x5b, 0x7a, + 0x7e, 0x48, 0x99, 0x1a, 0x4d, 0x06, 0x68, 0xc8, 0x63, 0xdc, 0xd3, 0x2d, 0x1d, 0x3c, 0x0a, 0x07, + 0x12, 0xe7, 0x6f, 0x66, 0xea, 0xdf, 0xc7, 0xa7, 0x17, 0xab, 0xcc, 0x52, 0x22, 0x07, 0x55, 0xbd, + 0xab, 0xf7, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x63, 0xd6, 0x4e, 0x60, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/types/query.pb.go b/x/interchainquery/types/query.pb.go index 8e7948c0e3..635a0a3a7a 100644 --- a/x/interchainquery/types/query.pb.go +++ b/x/interchainquery/types/query.pb.go @@ -137,9 +137,9 @@ var fileDescriptor_b720c147b9144d5b = []byte{ 0x85, 0x8c, 0xf5, 0x83, 0xc1, 0xfa, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0x71, 0x44, 0x09, 0x5a, 0x68, 0x38, 0x05, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x65, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x8d, 0xf5, 0x2b, + 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x4d, 0xf4, 0x2b, 0x30, 0x8c, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xc7, 0x9c, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0x01, 0xbe, 0x12, 0x1f, 0x5a, 0x02, 0x00, 0x00, + 0xff, 0xff, 0xd8, 0x4c, 0xcf, 0x9f, 0x5a, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index 3f3cd646de..b48afdc8c7 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -11,8 +11,8 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - "github.com/Stride-Labs/stride/v13/x/mint/client/cli" + "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v14/x/mint/client/cli" "github.com/cosmos/cosmos-sdk/client/flags" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go index e9824bd6a8..9a88633720 100644 --- a/x/mint/client/cli/query.go +++ b/x/mint/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/mint/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index 807ef60fda..d6cf783240 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -14,8 +14,8 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/app" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" "github.com/cosmos/cosmos-sdk/testutil/network" ) diff --git a/x/mint/genesis.go b/x/mint/genesis.go index 85234ea2da..d30d1e135c 100644 --- a/x/mint/genesis.go +++ b/x/mint/genesis.go @@ -3,8 +3,8 @@ package mint import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/mint/keeper" - "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/mint/keeper" + "github.com/Stride-Labs/stride/v14/x/mint/types" ) // InitGenesis new mint genesis. diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go index b86ec98da4..dfc5730050 100644 --- a/x/mint/keeper/grpc_query.go +++ b/x/mint/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/mint/types" ) var _ types.QueryServer = Querier{} diff --git a/x/mint/keeper/hooks.go b/x/mint/keeper/hooks.go index a4e6ccd8ef..f0b468ffb1 100644 --- a/x/mint/keeper/hooks.go +++ b/x/mint/keeper/hooks.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/mint/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/mint/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go index 0077a599f5..985094d409 100644 --- a/x/mint/keeper/keeper.go +++ b/x/mint/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v13/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/mint/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/x/mint/module.go b/x/mint/module.go index 0805741e6a..649f1e9fe1 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -17,11 +17,11 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/mint/client/cli" - "github.com/Stride-Labs/stride/v13/x/mint/keeper" + "github.com/Stride-Labs/stride/v14/x/mint/client/cli" + "github.com/Stride-Labs/stride/v14/x/mint/keeper" - //"github.com/Stride-Labs/stride/v13/x/mint/simulation" - "github.com/Stride-Labs/stride/v13/x/mint/types" + //"github.com/Stride-Labs/stride/v14/x/mint/simulation" + "github.com/Stride-Labs/stride/v14/x/mint/types" ) var ( diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index 69daf937fd..b5c4bb68b8 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -1,7 +1,7 @@ package types // noalias import ( - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/x/mint/types/genesis.pb.go b/x/mint/types/genesis.pb.go index 7b93a093b3..f4e695e7bf 100644 --- a/x/mint/types/genesis.pb.go +++ b/x/mint/types/genesis.pb.go @@ -95,24 +95,24 @@ func init() { proto.RegisterFile("stride/mint/v1beta1/genesis.proto", fileDescri var fileDescriptor_f4521d63f51851f3 = []byte{ // 283 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x31, 0x4e, 0xc3, 0x30, - 0x14, 0x40, 0x63, 0x8a, 0x3a, 0x04, 0xa6, 0x00, 0x22, 0x2a, 0x92, 0x5b, 0x32, 0x75, 0xc1, 0x56, - 0xe8, 0x04, 0x63, 0x24, 0x04, 0x03, 0x48, 0xa8, 0xd9, 0xba, 0x54, 0x4e, 0x62, 0xa5, 0x91, 0x48, - 0x1c, 0xd9, 0xbf, 0x15, 0xbd, 0x05, 0xc7, 0xea, 0xd8, 0x91, 0xa9, 0xaa, 0x92, 0x1b, 0x70, 0x02, - 0x64, 0x3b, 0x30, 0x15, 0x36, 0xcb, 0xef, 0xbd, 0x6f, 0xeb, 0xbb, 0xd7, 0x0a, 0x64, 0x91, 0x71, - 0x5a, 0x16, 0x15, 0xd0, 0x55, 0x98, 0x70, 0x60, 0x21, 0xcd, 0x79, 0xc5, 0x55, 0xa1, 0x48, 0x2d, - 0x05, 0x08, 0xef, 0xcc, 0x2a, 0x44, 0x2b, 0xa4, 0x53, 0x06, 0xe7, 0xb9, 0xc8, 0x85, 0xe1, 0x54, - 0x9f, 0xac, 0x3a, 0xc0, 0x87, 0xa6, 0x99, 0xce, 0xf0, 0x60, 0x8f, 0xdc, 0xd3, 0x47, 0x3b, 0x3c, - 0x06, 0x06, 0xdc, 0xbb, 0x73, 0xfb, 0x1a, 0x73, 0xe9, 0xa3, 0x11, 0x1a, 0x9f, 0xdc, 0x5e, 0x91, - 0x03, 0x8f, 0x91, 0x17, 0xa3, 0x44, 0xc7, 0x9b, 0xdd, 0xd0, 0x99, 0x76, 0x81, 0x4e, 0x6b, 0x26, - 0x59, 0xa9, 0xfc, 0xa3, 0x7f, 0xd2, 0x57, 0xa3, 0xfc, 0xa4, 0x36, 0xf0, 0x66, 0xee, 0xa5, 0xe4, - 0xd9, 0x32, 0x85, 0x42, 0x54, 0x73, 0x05, 0x4c, 0x02, 0xcf, 0xe6, 0xbc, 0x16, 0xe9, 0xc2, 0xef, - 0x8d, 0xd0, 0xb8, 0x17, 0x05, 0x5f, 0xbb, 0x21, 0x5e, 0xb3, 0xf2, 0xed, 0x3e, 0xf8, 0x43, 0x0c, - 0xa6, 0x17, 0xbf, 0x24, 0xb6, 0xe0, 0x41, 0xdf, 0x47, 0x4f, 0x9b, 0x06, 0xa3, 0x6d, 0x83, 0xd1, - 0xbe, 0xc1, 0xe8, 0xa3, 0xc5, 0xce, 0xb6, 0xc5, 0xce, 0x67, 0x8b, 0x9d, 0x19, 0xc9, 0x0b, 0x58, - 0x2c, 0x13, 0x92, 0x8a, 0x92, 0xc6, 0xe6, 0xab, 0x37, 0xcf, 0x2c, 0x51, 0xb4, 0xdb, 0xd9, 0x2a, - 0x9c, 0xd0, 0x77, 0xbb, 0x39, 0x58, 0xd7, 0x5c, 0x25, 0x7d, 0xb3, 0xb3, 0xc9, 0x77, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x58, 0x0d, 0xe4, 0xba, 0xa3, 0x01, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x2e, 0x29, 0xca, + 0x4c, 0x49, 0xd5, 0xcf, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, + 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x86, + 0x28, 0xd1, 0x03, 0x29, 0xd1, 0x83, 0x2a, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xcb, 0xeb, + 0x83, 0x58, 0x10, 0xa5, 0x52, 0x72, 0xd8, 0x4c, 0x03, 0xeb, 0x03, 0xcb, 0x2b, 0x3d, 0x60, 0xe4, + 0xe2, 0x71, 0x87, 0x18, 0x1e, 0x5c, 0x92, 0x58, 0x92, 0x2a, 0x64, 0xc9, 0xc5, 0x06, 0x92, 0x4e, + 0x2d, 0x92, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x36, 0x92, 0xd6, 0xc3, 0x62, 0x99, 0x9e, 0x2f, 0x58, + 0x89, 0x13, 0xcb, 0x89, 0x7b, 0xf2, 0x0c, 0x41, 0x50, 0x0d, 0x20, 0xad, 0x05, 0x89, 0x45, 0x89, + 0xb9, 0xc5, 0x12, 0x4c, 0x78, 0xb4, 0x06, 0x80, 0x95, 0xc0, 0xb4, 0x42, 0x34, 0x08, 0x45, 0x71, + 0x89, 0x17, 0xa5, 0xa6, 0x94, 0x26, 0x97, 0x64, 0xe6, 0xe7, 0xc5, 0x17, 0x97, 0x24, 0x16, 0x95, + 0xa4, 0xa6, 0xc4, 0xa7, 0x16, 0xe4, 0x27, 0x67, 0x48, 0x30, 0x2b, 0x30, 0x6a, 0x30, 0x3b, 0x29, + 0x7d, 0xba, 0x27, 0x2f, 0x57, 0x99, 0x98, 0x9b, 0x63, 0xa5, 0x84, 0x43, 0xa1, 0x52, 0x90, 0x28, + 0x5c, 0x26, 0x18, 0x22, 0xe1, 0x0a, 0x12, 0x77, 0xf2, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, + 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, + 0x63, 0x39, 0x86, 0x28, 0xbd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, + 0x60, 0xb0, 0x53, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x61, 0x56, 0x66, 0x68, 0xa2, 0x5f, + 0x01, 0x09, 0xb9, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x98, 0x19, 0x03, 0x02, 0x00, + 0x00, 0xff, 0xff, 0x18, 0x33, 0x3d, 0xdf, 0xa3, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index 8039561cb8..a4661949c0 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -206,47 +206,47 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/mint.proto", fileDescriptor_5ad5fa4b1fdb702f) } var fileDescriptor_5ad5fa4b1fdb702f = []byte{ - // 632 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0x8d, 0x69, 0x9b, 0xaa, 0x8b, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, 0x7a, - 0xa0, 0xb6, 0x4a, 0x6f, 0x3d, 0xa1, 0xa8, 0xb4, 0x44, 0x02, 0x29, 0x38, 0xb7, 0x5e, 0x2c, 0x7f, - 0x6c, 0x9d, 0x55, 0xe3, 0x5d, 0x6b, 0x77, 0x9d, 0x12, 0x21, 0xf1, 0x07, 0xca, 0x81, 0x23, 0x47, - 0x7e, 0x4e, 0x8f, 0x3d, 0xa2, 0x1e, 0x22, 0x94, 0xfc, 0x83, 0x5c, 0xb8, 0xa2, 0xdd, 0x75, 0x3e, - 0x21, 0x12, 0x11, 0x3d, 0xc5, 0xfb, 0x66, 0x76, 0xde, 0xcb, 0xdb, 0x99, 0x01, 0x26, 0xe3, 0x14, - 0xc5, 0xd0, 0x4d, 0x11, 0xe6, 0x6e, 0xfb, 0x20, 0x84, 0x3c, 0x38, 0x90, 0x07, 0x27, 0xa3, 0x84, - 0x13, 0x7d, 0x53, 0xc5, 0x1d, 0x09, 0x15, 0xf1, 0xed, 0x47, 0x09, 0x49, 0x88, 0x8c, 0xbb, 0xe2, - 0x4b, 0xa5, 0xda, 0x9f, 0x41, 0xf9, 0x3d, 0xc2, 0x1c, 0x52, 0x9d, 0x83, 0x0d, 0x98, 0x91, 0xa8, - 0xe9, 0x67, 0x94, 0xb4, 0x11, 0x43, 0x04, 0x33, 0x43, 0xdb, 0xd5, 0xf6, 0xd6, 0xaa, 0xb5, 0xeb, - 0xae, 0x55, 0xba, 0xed, 0x5a, 0x2f, 0x12, 0xc4, 0x9b, 0x79, 0xe8, 0x44, 0x24, 0x75, 0x23, 0xc2, - 0x52, 0xc2, 0x8a, 0x9f, 0x7d, 0x16, 0x5f, 0xb8, 0xbc, 0x93, 0x41, 0xe6, 0x1c, 0xc3, 0x68, 0xd0, - 0xb5, 0x2a, 0x9d, 0x20, 0x6d, 0x1d, 0xd9, 0xb3, 0xf5, 0x6c, 0x6f, 0x5d, 0x42, 0xf5, 0x31, 0xf2, - 0x6b, 0x09, 0x54, 0x8e, 0x91, 0xd0, 0x1b, 0xe6, 0x1c, 0x11, 0x5c, 0xa7, 0x24, 0x23, 0x54, 0x7c, - 0x31, 0xfd, 0x0c, 0xac, 0x32, 0x1e, 0x5c, 0x20, 0x9c, 0x14, 0x42, 0x5e, 0x2f, 0x2c, 0xe4, 0x81, - 0x12, 0x52, 0x94, 0xb1, 0xbd, 0x61, 0x41, 0xfd, 0x13, 0xd8, 0x8a, 0x48, 0x9a, 0xe6, 0x18, 0xf1, - 0x8e, 0x9f, 0x11, 0xd2, 0xf2, 0x13, 0x4a, 0x2e, 0x79, 0xd3, 0xb8, 0x27, 0x99, 0x4e, 0x17, 0x66, - 0xda, 0x52, 0x4c, 0xd3, 0x45, 0x6d, 0x6f, 0x73, 0x04, 0xd4, 0x09, 0x69, 0x9d, 0x4a, 0x0e, 0xfd, - 0x8b, 0x06, 0xcc, 0x19, 0x76, 0x06, 0xa3, 0x9c, 0x8a, 0x53, 0x98, 0xc7, 0x09, 0xe4, 0xc6, 0xd2, - 0xdd, 0xca, 0xd8, 0x99, 0x92, 0xd1, 0x28, 0xc8, 0xaa, 0x92, 0x4b, 0xe7, 0xe0, 0x21, 0xe3, 0x34, - 0xe0, 0x30, 0x41, 0x91, 0x4f, 0x21, 0x83, 0xb4, 0x0d, 0x8d, 0xe5, 0xbb, 0x15, 0xb0, 0x31, 0x62, - 0xf0, 0x14, 0x81, 0x7d, 0xbb, 0x02, 0xca, 0xf5, 0x80, 0x06, 0x29, 0xd3, 0x9f, 0x00, 0x20, 0x5a, - 0xd5, 0x8f, 0x21, 0x26, 0xa9, 0x7a, 0x6b, 0x6f, 0x4d, 0x20, 0xc7, 0x02, 0xd0, 0xaf, 0x34, 0x60, - 0x24, 0x10, 0x43, 0x86, 0x98, 0xff, 0x47, 0x8b, 0xaa, 0xf7, 0xfa, 0xb0, 0xb0, 0x4e, 0x4b, 0xe9, - 0x9c, 0x57, 0xd7, 0xf6, 0x1e, 0x17, 0xa1, 0x37, 0xd3, 0x1d, 0xab, 0x9f, 0x0c, 0xe7, 0x04, 0xc5, - 0x10, 0x73, 0x74, 0x8e, 0x20, 0x2d, 0x5e, 0x6b, 0x67, 0xb6, 0xf3, 0xc7, 0x19, 0xc3, 0xce, 0xaf, - 0x8d, 0x10, 0x3d, 0x04, 0xdb, 0x14, 0xc6, 0x79, 0x24, 0x7a, 0xdd, 0xcf, 0x20, 0x45, 0x24, 0xf6, - 0x11, 0x56, 0x42, 0x98, 0xb4, 0x7f, 0xa9, 0xfa, 0x7c, 0xd0, 0xb5, 0x9e, 0xaa, 0x8a, 0xf3, 0x73, - 0x6d, 0xaf, 0x32, 0x0a, 0xd6, 0x65, 0xac, 0x86, 0xa5, 0x68, 0x26, 0x66, 0x7a, 0x7c, 0xef, 0x3c, - 0x88, 0x38, 0xa1, 0xc6, 0xca, 0xff, 0xcd, 0xf4, 0x6c, 0x3d, 0xdb, 0x5b, 0x1f, 0x41, 0x27, 0x12, - 0xd1, 0x53, 0x60, 0xc4, 0x13, 0x23, 0x2d, 0x5c, 0x1d, 0xce, 0xb4, 0x51, 0xde, 0xd5, 0xf6, 0xee, - 0xbf, 0x7a, 0xe9, 0xfc, 0x65, 0x43, 0x39, 0x73, 0xf6, 0x40, 0x75, 0x59, 0x68, 0xf5, 0x2a, 0xf1, - 0x9c, 0x35, 0x71, 0xa5, 0x81, 0x3d, 0x51, 0x07, 0xe1, 0xc4, 0xa7, 0xf0, 0x32, 0xa0, 0x31, 0xf3, - 0xa7, 0xf8, 0x19, 0x0f, 0x28, 0x57, 0x66, 0x19, 0xab, 0xd2, 0xd7, 0xc3, 0x41, 0xd7, 0x72, 0xd5, - 0xff, 0xf9, 0xd7, 0x9b, 0xb6, 0xf7, 0xac, 0x48, 0xf5, 0x54, 0xe6, 0xa4, 0xda, 0x86, 0xc8, 0x93, - 0x9e, 0x1f, 0x2d, 0x7f, 0xfb, 0x6e, 0x95, 0xaa, 0x6f, 0xaf, 0x7b, 0xa6, 0x76, 0xd3, 0x33, 0xb5, - 0x9f, 0x3d, 0x53, 0xfb, 0xda, 0x37, 0x4b, 0x37, 0x7d, 0xb3, 0xf4, 0xa3, 0x6f, 0x96, 0xce, 0x9c, - 0x09, 0xc3, 0x1b, 0xd2, 0x84, 0xfd, 0x77, 0x41, 0xc8, 0xdc, 0x62, 0xa5, 0xb7, 0x0f, 0x0e, 0xdd, - 0x8f, 0x6a, 0xb1, 0x4b, 0xf3, 0xc3, 0xb2, 0xdc, 0xd3, 0x87, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, - 0x91, 0x7b, 0x91, 0x3f, 0xf4, 0x05, 0x00, 0x00, + // 634 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0x8d, 0xbf, 0xb6, 0xa9, 0x3a, 0x9f, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, + 0xba, 0xa0, 0xb6, 0x4a, 0x59, 0x75, 0x85, 0xa2, 0xd2, 0x12, 0x09, 0xa4, 0xe0, 0xec, 0xba, 0xb1, + 0xfc, 0x33, 0x75, 0x46, 0x8d, 0x67, 0xac, 0x99, 0x71, 0x4a, 0x84, 0xc4, 0x0b, 0x94, 0x05, 0x4b, + 0x96, 0x3c, 0x4e, 0x97, 0x5d, 0xa2, 0x2e, 0x22, 0x94, 0xbc, 0x41, 0x36, 0x6c, 0xd1, 0xcc, 0x38, + 0xbf, 0x10, 0x89, 0x88, 0xae, 0xe2, 0x39, 0xf7, 0xce, 0x3d, 0x27, 0x67, 0xee, 0xbd, 0xc0, 0x64, + 0x9c, 0xa2, 0x18, 0xba, 0x29, 0xc2, 0xdc, 0x6d, 0x1f, 0x84, 0x90, 0x07, 0x07, 0xf2, 0xe0, 0x64, + 0x94, 0x70, 0xa2, 0x6f, 0xaa, 0xb8, 0x23, 0xa1, 0x22, 0xbe, 0xfd, 0x20, 0x21, 0x09, 0x91, 0x71, + 0x57, 0x7c, 0xa9, 0x54, 0xfb, 0x13, 0x28, 0xbf, 0x43, 0x98, 0x43, 0xaa, 0x73, 0xb0, 0x01, 0x33, + 0x12, 0x35, 0xfd, 0x8c, 0x92, 0x36, 0x62, 0x88, 0x60, 0x66, 0x68, 0xbb, 0xda, 0xde, 0x5a, 0xb5, + 0x76, 0xdd, 0xb5, 0x4a, 0xb7, 0x5d, 0xeb, 0x59, 0x82, 0x78, 0x33, 0x0f, 0x9d, 0x88, 0xa4, 0x6e, + 0x44, 0x58, 0x4a, 0x58, 0xf1, 0xb3, 0xcf, 0xe2, 0x0b, 0x97, 0x77, 0x32, 0xc8, 0x9c, 0x63, 0x18, + 0x0d, 0xba, 0x56, 0xa5, 0x13, 0xa4, 0xad, 0x23, 0x7b, 0xb6, 0x9e, 0xed, 0xad, 0x4b, 0xa8, 0x3e, + 0x46, 0x7e, 0x2e, 0x81, 0xca, 0x31, 0x12, 0x7a, 0xc3, 0x9c, 0x23, 0x82, 0xeb, 0x94, 0x64, 0x84, + 0x8a, 0x2f, 0xa6, 0x9f, 0x81, 0x55, 0xc6, 0x83, 0x0b, 0x84, 0x93, 0x42, 0xc8, 0xab, 0x85, 0x85, + 0xdc, 0x53, 0x42, 0x8a, 0x32, 0xb6, 0x37, 0x2c, 0xa8, 0x7f, 0x04, 0x5b, 0x11, 0x49, 0xd3, 0x1c, + 0x23, 0xde, 0xf1, 0x33, 0x42, 0x5a, 0x7e, 0x42, 0xc9, 0x25, 0x6f, 0x1a, 0xff, 0x49, 0xa6, 0xd3, + 0x85, 0x99, 0xb6, 0x14, 0xd3, 0x74, 0x51, 0xdb, 0xdb, 0x1c, 0x01, 0x75, 0x42, 0x5a, 0xa7, 0x92, + 0x43, 0xff, 0xac, 0x01, 0x73, 0x86, 0x9d, 0xc1, 0x28, 0xa7, 0xe2, 0x14, 0xe6, 0x71, 0x02, 0xb9, + 0xb1, 0x74, 0xb7, 0x32, 0x76, 0xa6, 0x64, 0x34, 0x0a, 0xb2, 0xaa, 0xe4, 0xd2, 0x39, 0xb8, 0xcf, + 0x38, 0x0d, 0x38, 0x4c, 0x50, 0xe4, 0x53, 0xc8, 0x20, 0x6d, 0x43, 0x63, 0xf9, 0x6e, 0x05, 0x6c, + 0x8c, 0x18, 0x3c, 0x45, 0x60, 0xdf, 0xae, 0x80, 0x72, 0x3d, 0xa0, 0x41, 0xca, 0xf4, 0x47, 0x00, + 0x88, 0x56, 0xf5, 0x63, 0x88, 0x49, 0xaa, 0xde, 0xda, 0x5b, 0x13, 0xc8, 0xb1, 0x00, 0xf4, 0x2b, + 0x0d, 0x18, 0x09, 0xc4, 0x90, 0x21, 0xe6, 0xff, 0xd6, 0xa2, 0xea, 0xbd, 0xde, 0x2f, 0xac, 0xd3, + 0x52, 0x3a, 0xe7, 0xd5, 0xb5, 0xbd, 0x87, 0x45, 0xe8, 0xf5, 0x74, 0xc7, 0xea, 0x27, 0xc3, 0x39, + 0x41, 0x31, 0xc4, 0x1c, 0x9d, 0x23, 0x48, 0x8b, 0xd7, 0xda, 0x99, 0xed, 0xfc, 0x71, 0xc6, 0xb0, + 0xf3, 0x6b, 0x23, 0x44, 0x0f, 0xc1, 0x36, 0x85, 0x71, 0x1e, 0x89, 0x5e, 0xf7, 0x33, 0x48, 0x11, + 0x89, 0x7d, 0x84, 0x95, 0x10, 0x26, 0xed, 0x5f, 0xaa, 0x3e, 0x1d, 0x74, 0xad, 0xc7, 0xaa, 0xe2, + 0xfc, 0x5c, 0xdb, 0xab, 0x8c, 0x82, 0x75, 0x19, 0xab, 0x61, 0x29, 0x9a, 0x89, 0x99, 0x1e, 0xdf, + 0x3b, 0x0f, 0x22, 0x4e, 0xa8, 0xb1, 0xf2, 0x6f, 0x33, 0x3d, 0x5b, 0xcf, 0xf6, 0xd6, 0x47, 0xd0, + 0x89, 0x44, 0xf4, 0x14, 0x18, 0xf1, 0xc4, 0x48, 0x0b, 0x57, 0x87, 0x33, 0x6d, 0x94, 0x77, 0xb5, + 0xbd, 0xff, 0x5f, 0x3c, 0x77, 0xfe, 0xb0, 0xa1, 0x9c, 0x39, 0x7b, 0xa0, 0xba, 0x2c, 0xb4, 0x7a, + 0x95, 0x78, 0xce, 0x9a, 0xb8, 0xd2, 0xc0, 0x9e, 0xa8, 0x83, 0x70, 0xe2, 0x53, 0x78, 0x19, 0xd0, + 0x98, 0xf9, 0x53, 0xfc, 0x8c, 0x07, 0x94, 0x2b, 0xb3, 0x8c, 0x55, 0xe9, 0xeb, 0xe1, 0xa0, 0x6b, + 0xb9, 0xea, 0xff, 0xfc, 0xed, 0x4d, 0xdb, 0x7b, 0x52, 0xa4, 0x7a, 0x2a, 0x73, 0x52, 0x6d, 0x43, + 0xe4, 0x49, 0xcf, 0x8f, 0x96, 0xbf, 0x7e, 0xb3, 0x4a, 0xd5, 0x37, 0xd7, 0x3d, 0x53, 0xbb, 0xe9, + 0x99, 0xda, 0x8f, 0x9e, 0xa9, 0x7d, 0xe9, 0x9b, 0xa5, 0x9b, 0xbe, 0x59, 0xfa, 0xde, 0x37, 0x4b, + 0x67, 0xce, 0x84, 0xe1, 0x0d, 0x69, 0xc2, 0xfe, 0xdb, 0x20, 0x64, 0x6e, 0xb1, 0xd2, 0xdb, 0x07, + 0x2f, 0xdd, 0x0f, 0x6a, 0xb1, 0x4b, 0xf3, 0xc3, 0xb2, 0xdc, 0xd3, 0x87, 0xbf, 0x02, 0x00, 0x00, + 0xff, 0xff, 0xd1, 0x45, 0x48, 0x5a, 0xf4, 0x05, 0x00, 0x00, } func (m *Minter) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/params.go b/x/mint/types/params.go index 11cc830599..278b476574 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -7,7 +7,7 @@ import ( yaml "gopkg.in/yaml.v2" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index 39289cccf2..c2c86cf96b 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -204,29 +204,29 @@ var fileDescriptor_b5a371e09ad2a41a = []byte{ // 392 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xfa, 0x40, 0x1c, 0x6d, 0xc9, 0xff, 0xcf, 0x70, 0x9a, 0x60, 0x0e, 0x62, 0x4c, 0xc1, 0x83, 0x74, 0x40, 0x16, - 0xee, 0x2c, 0x4c, 0xae, 0x44, 0x13, 0x07, 0x07, 0xc4, 0x49, 0x17, 0xd3, 0x96, 0x4b, 0x69, 0xb4, - 0xbd, 0xd2, 0x3b, 0x88, 0x5d, 0xfd, 0x04, 0x26, 0xee, 0x2e, 0x7e, 0x19, 0x46, 0x12, 0x17, 0xe3, - 0x40, 0x0c, 0xf8, 0x41, 0x4c, 0xaf, 0xd5, 0x58, 0xac, 0x31, 0x4e, 0x6d, 0xee, 0xbd, 0xdf, 0x7b, - 0xef, 0xf7, 0xee, 0x40, 0x9d, 0x8b, 0xd0, 0x1d, 0x52, 0xe2, 0xb9, 0xbe, 0x20, 0x53, 0xc3, 0xa2, - 0xc2, 0x34, 0xc8, 0x78, 0x42, 0xc3, 0x08, 0x07, 0x21, 0x13, 0x0c, 0x96, 0x13, 0x02, 0x8e, 0x09, - 0x38, 0x25, 0x68, 0x15, 0x87, 0x39, 0x4c, 0xe2, 0x24, 0xfe, 0x4b, 0xa8, 0x5a, 0xcd, 0x61, 0xcc, - 0xb9, 0xa6, 0xc4, 0x0c, 0x5c, 0x62, 0xfa, 0x3e, 0x13, 0xa6, 0x70, 0x99, 0xcf, 0x53, 0x14, 0xe5, - 0x39, 0x49, 0x55, 0x89, 0xeb, 0x15, 0x00, 0x4f, 0x63, 0xdf, 0xbe, 0x19, 0x9a, 0x1e, 0x1f, 0xd0, - 0xf1, 0x84, 0x72, 0xa1, 0xf7, 0x41, 0x39, 0x73, 0xca, 0x03, 0xe6, 0x73, 0x0a, 0x0f, 0x40, 0x31, - 0x90, 0x27, 0x3b, 0x6a, 0x43, 0x6d, 0x6d, 0x74, 0xaa, 0x38, 0x27, 0x26, 0x4e, 0x86, 0x7a, 0xff, - 0x66, 0x8b, 0xba, 0x32, 0x48, 0x07, 0xf4, 0x5d, 0x50, 0x95, 0x8a, 0x47, 0x01, 0xb3, 0x47, 0xfd, - 0x90, 0x4d, 0x5d, 0x1e, 0xa7, 0xfc, 0x30, 0x8c, 0x40, 0x2d, 0x1f, 0x4e, 0x9d, 0xcf, 0xc1, 0x16, - 0x8d, 0xa1, 0xcb, 0xe0, 0x13, 0x93, 0x19, 0x36, 0x7b, 0x38, 0xb6, 0x79, 0x59, 0xd4, 0x9b, 0x8e, - 0x2b, 0x46, 0x13, 0x0b, 0xdb, 0xcc, 0x23, 0x36, 0xe3, 0x1e, 0xe3, 0xe9, 0xa7, 0xcd, 0x87, 0x57, - 0x44, 0x44, 0x01, 0xe5, 0xf8, 0x90, 0xda, 0x83, 0x12, 0xcd, 0x5a, 0x74, 0x1e, 0x0b, 0xe0, 0xbf, - 0xf4, 0x86, 0x11, 0x28, 0x26, 0xd9, 0xe1, 0x5e, 0xee, 0x62, 0xdf, 0x8b, 0xd2, 0x5a, 0xbf, 0x13, - 0x93, 0x0d, 0xf4, 0xda, 0xed, 0xd3, 0xdb, 0x7d, 0x61, 0x1b, 0x56, 0xb2, 0x57, 0x91, 0xd4, 0x03, - 0x1f, 0x54, 0x50, 0x5a, 0xdb, 0x1d, 0xee, 0xff, 0xac, 0x9d, 0xdf, 0xa2, 0x66, 0xfc, 0x61, 0x22, - 0x8d, 0xd5, 0x94, 0xb1, 0x1a, 0x10, 0x65, 0x63, 0xad, 0x97, 0xdd, 0x3b, 0x9e, 0x2d, 0x91, 0x3a, - 0x5f, 0x22, 0xf5, 0x75, 0x89, 0xd4, 0xbb, 0x15, 0x52, 0xe6, 0x2b, 0xa4, 0x3c, 0xaf, 0x90, 0x72, - 0x81, 0xbf, 0x14, 0x7f, 0x26, 0xed, 0xdb, 0x27, 0xa6, 0xc5, 0x49, 0xfa, 0xf0, 0xa6, 0x46, 0x97, - 0xdc, 0x24, 0xe2, 0xf2, 0x12, 0xac, 0xa2, 0x7c, 0x78, 0xdd, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x42, 0x1d, 0x98, 0xd4, 0x04, 0x03, 0x00, 0x00, + 0xee, 0x2c, 0xba, 0xb8, 0x12, 0x4d, 0x1c, 0x1c, 0x10, 0x27, 0x5d, 0x4c, 0x5b, 0x2e, 0xa5, 0xd1, + 0xf6, 0x4a, 0xef, 0x20, 0x76, 0xf5, 0x13, 0x98, 0xb8, 0xbb, 0xf8, 0x65, 0x18, 0x49, 0x5c, 0x8c, + 0x03, 0x31, 0xe0, 0x07, 0x31, 0xbd, 0x56, 0x63, 0xb1, 0xc6, 0x38, 0xb5, 0xb9, 0xf7, 0x7e, 0xef, + 0xbd, 0xdf, 0xbb, 0x03, 0x75, 0x2e, 0x42, 0x77, 0x40, 0x89, 0xe7, 0xfa, 0x82, 0x4c, 0x0c, 0x8b, + 0x0a, 0xd3, 0x20, 0xa3, 0x31, 0x0d, 0x23, 0x1c, 0x84, 0x4c, 0x30, 0x58, 0x4e, 0x08, 0x38, 0x26, + 0xe0, 0x94, 0xa0, 0x55, 0x1c, 0xe6, 0x30, 0x89, 0x93, 0xf8, 0x2f, 0xa1, 0x6a, 0x35, 0x87, 0x31, + 0xe7, 0x9a, 0x12, 0x33, 0x70, 0x89, 0xe9, 0xfb, 0x4c, 0x98, 0xc2, 0x65, 0x3e, 0x4f, 0x51, 0x94, + 0xe7, 0x24, 0x55, 0x25, 0xae, 0x57, 0x00, 0x3c, 0x8d, 0x7d, 0x7b, 0x66, 0x68, 0x7a, 0xbc, 0x4f, + 0x47, 0x63, 0xca, 0x85, 0xde, 0x03, 0xe5, 0xcc, 0x29, 0x0f, 0x98, 0xcf, 0x29, 0x3c, 0x00, 0xc5, + 0x40, 0x9e, 0x6c, 0xa9, 0x0d, 0xb5, 0xb5, 0xd6, 0xa9, 0xe2, 0x9c, 0x98, 0x38, 0x19, 0xea, 0xfe, + 0x9b, 0xce, 0xeb, 0x4a, 0x3f, 0x1d, 0xd0, 0xb7, 0x41, 0x55, 0x2a, 0x1e, 0x05, 0xcc, 0x1e, 0xf6, + 0x42, 0x36, 0x71, 0x79, 0x9c, 0xf2, 0xc3, 0x30, 0x02, 0xb5, 0x7c, 0x38, 0x75, 0x3e, 0x07, 0x1b, + 0x34, 0x86, 0x2e, 0x83, 0x4f, 0x4c, 0x66, 0x58, 0xef, 0xe2, 0xd8, 0xe6, 0x65, 0x5e, 0x6f, 0x3a, + 0xae, 0x18, 0x8e, 0x2d, 0x6c, 0x33, 0x8f, 0xd8, 0x8c, 0x7b, 0x8c, 0xa7, 0x9f, 0x36, 0x1f, 0x5c, + 0x11, 0x11, 0x05, 0x94, 0xe3, 0x43, 0x6a, 0xf7, 0x4b, 0x34, 0x6b, 0xd1, 0x79, 0x2c, 0x80, 0xff, + 0xd2, 0x1b, 0x46, 0xa0, 0x98, 0x64, 0x87, 0x3b, 0xb9, 0x8b, 0x7d, 0x2f, 0x4a, 0x6b, 0xfd, 0x4e, + 0x4c, 0x36, 0xd0, 0x6b, 0xb7, 0x4f, 0x6f, 0xf7, 0x85, 0x4d, 0x58, 0xc9, 0x5e, 0x45, 0x52, 0x0f, + 0x7c, 0x50, 0x41, 0x69, 0x65, 0x77, 0xb8, 0xfb, 0xb3, 0x76, 0x7e, 0x8b, 0x9a, 0xf1, 0x87, 0x89, + 0x34, 0x56, 0x53, 0xc6, 0x6a, 0x40, 0x94, 0x8d, 0xb5, 0x5a, 0x76, 0xf7, 0x78, 0xba, 0x40, 0xea, + 0x6c, 0x81, 0xd4, 0xd7, 0x05, 0x52, 0xef, 0x96, 0x48, 0x99, 0x2d, 0x91, 0xf2, 0xbc, 0x44, 0xca, + 0x05, 0xfe, 0x52, 0xfc, 0x99, 0xb4, 0x6f, 0x9f, 0x98, 0x16, 0x27, 0xe9, 0xc3, 0x9b, 0x18, 0xfb, + 0xe4, 0x26, 0x11, 0x97, 0x97, 0x60, 0x15, 0xe5, 0xc3, 0xdb, 0x7b, 0x0f, 0x00, 0x00, 0xff, 0xff, + 0x02, 0x23, 0x41, 0xb1, 0x04, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/client/cli/query.go b/x/ratelimit/client/cli/query.go index 0638a8530f..56b94bb0a7 100644 --- a/x/ratelimit/client/cli/query.go +++ b/x/ratelimit/client/cli/query.go @@ -11,7 +11,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/client/cli/tx.go b/x/ratelimit/client/cli/tx.go index 90124f88d4..03fe4f660b 100644 --- a/x/ratelimit/client/cli/tx.go +++ b/x/ratelimit/client/cli/tx.go @@ -19,7 +19,7 @@ import ( govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // Parse the gov proposal file into a proto message diff --git a/x/ratelimit/client/proposal_handler.go b/x/ratelimit/client/proposal_handler.go index e9c1472773..d37dff06ea 100644 --- a/x/ratelimit/client/proposal_handler.go +++ b/x/ratelimit/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v13/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v14/x/ratelimit/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/ratelimit/genesis.go b/x/ratelimit/genesis.go index 3494c9ba2f..9778ef8ef6 100644 --- a/x/ratelimit/genesis.go +++ b/x/ratelimit/genesis.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/ratelimit/genesis_test.go b/x/ratelimit/genesis_test.go index 2852342e53..0b4961b8ff 100644 --- a/x/ratelimit/genesis_test.go +++ b/x/ratelimit/genesis_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/ratelimit" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/ratelimit" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func createRateLimits() []types.RateLimit { diff --git a/x/ratelimit/handler.go b/x/ratelimit/handler.go index c052032359..f5bf7f5851 100644 --- a/x/ratelimit/handler.go +++ b/x/ratelimit/handler.go @@ -10,9 +10,9 @@ import ( channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // NewMessageHandler returns ratelimit module messages diff --git a/x/ratelimit/ibc_middleware.go b/x/ratelimit/ibc_middleware.go index 29a49043d7..c04e2fcf2c 100644 --- a/x/ratelimit/ibc_middleware.go +++ b/x/ratelimit/ibc_middleware.go @@ -3,7 +3,7 @@ package ratelimit import ( "fmt" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" diff --git a/x/ratelimit/keeper/gov/gov.go b/x/ratelimit/keeper/gov/gov.go index e0656cceb0..5e78e848c6 100644 --- a/x/ratelimit/keeper/gov/gov.go +++ b/x/ratelimit/keeper/gov/gov.go @@ -6,8 +6,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // Adds a new rate limit. Fails if the rate limit already exists or the channel value is 0 diff --git a/x/ratelimit/keeper/gov/gov_test.go b/x/ratelimit/keeper/gov/gov_test.go index 9aadf57407..bc1b08ba42 100644 --- a/x/ratelimit/keeper/gov/gov_test.go +++ b/x/ratelimit/keeper/gov/gov_test.go @@ -12,10 +12,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/app/apptesting" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/grpc_query.go b/x/ratelimit/keeper/grpc_query.go index 0b9e59ec5b..5b53c696b4 100644 --- a/x/ratelimit/keeper/grpc_query.go +++ b/x/ratelimit/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/ratelimit/keeper/grpc_query_test.go b/x/ratelimit/keeper/grpc_query_test.go index cc4c7ac2da..bca2384449 100644 --- a/x/ratelimit/keeper/grpc_query_test.go +++ b/x/ratelimit/keeper/grpc_query_test.go @@ -11,7 +11,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // Add three rate limits on different channels diff --git a/x/ratelimit/keeper/hooks.go b/x/ratelimit/keeper/hooks.go index 263c8ccde6..7c8059679a 100644 --- a/x/ratelimit/keeper/hooks.go +++ b/x/ratelimit/keeper/hooks.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // Before each hour epoch, check if any of the rate limits have expired, diff --git a/x/ratelimit/keeper/hooks_test.go b/x/ratelimit/keeper/hooks_test.go index 2742b27f02..84b1ad2f65 100644 --- a/x/ratelimit/keeper/hooks_test.go +++ b/x/ratelimit/keeper/hooks_test.go @@ -5,8 +5,8 @@ import ( sdkmath "cosmossdk.io/math" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // Store a rate limit with a non-zero flow for each duration diff --git a/x/ratelimit/keeper/keeper.go b/x/ratelimit/keeper/keeper.go index 1ebc5a053a..d9e3ff8d5b 100644 --- a/x/ratelimit/keeper/keeper.go +++ b/x/ratelimit/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) type ( diff --git a/x/ratelimit/keeper/keeper_test.go b/x/ratelimit/keeper/keeper_test.go index bbed50bfbf..599b9c950b 100644 --- a/x/ratelimit/keeper/keeper_test.go +++ b/x/ratelimit/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/packet.go b/x/ratelimit/keeper/packet.go index 04d1e024b2..4937891ff6 100644 --- a/x/ratelimit/keeper/packet.go +++ b/x/ratelimit/keeper/packet.go @@ -14,9 +14,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v13/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) type RateLimitedPacketInfo struct { diff --git a/x/ratelimit/keeper/packet_test.go b/x/ratelimit/keeper/packet_test.go index 89e49f0fad..c9a743a245 100644 --- a/x/ratelimit/keeper/packet_test.go +++ b/x/ratelimit/keeper/packet_test.go @@ -13,8 +13,8 @@ import ( tmbytes "github.com/cometbft/cometbft/libs/bytes" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/keeper/params.go b/x/ratelimit/keeper/params.go index ef7cc7c3a4..28b9c68c64 100644 --- a/x/ratelimit/keeper/params.go +++ b/x/ratelimit/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // GetParams get all parameters as types.Params diff --git a/x/ratelimit/keeper/rate_limit.go b/x/ratelimit/keeper/rate_limit.go index 1b547cabd1..0081937036 100644 --- a/x/ratelimit/keeper/rate_limit.go +++ b/x/ratelimit/keeper/rate_limit.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // Get the rate limit byte key built from the denom and channelId diff --git a/x/ratelimit/keeper/rate_limit_test.go b/x/ratelimit/keeper/rate_limit_test.go index f5c82197e9..57c8babe1e 100644 --- a/x/ratelimit/keeper/rate_limit_test.go +++ b/x/ratelimit/keeper/rate_limit_test.go @@ -7,9 +7,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/module.go b/x/ratelimit/module.go index 57dfd917d3..92ae2539ff 100644 --- a/x/ratelimit/module.go +++ b/x/ratelimit/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/ratelimit/client/cli" - "github.com/Stride-Labs/stride/v13/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) var ( diff --git a/x/ratelimit/types/flow_test.go b/x/ratelimit/types/flow_test.go index 7c82916524..a50e7399f0 100644 --- a/x/ratelimit/types/flow_test.go +++ b/x/ratelimit/types/flow_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func TestAddInflow(t *testing.T) { diff --git a/x/ratelimit/types/genesis.pb.go b/x/ratelimit/types/genesis.pb.go index 146242cc8c..ef23eb4d1f 100644 --- a/x/ratelimit/types/genesis.pb.go +++ b/x/ratelimit/types/genesis.pb.go @@ -107,33 +107,33 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/genesis.proto", fileDescriptor_9e224b293959881c) } var fileDescriptor_9e224b293959881c = []byte{ - // 402 bytes of a gzipped FileDescriptorProto + // 403 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6b, 0xd4, 0x40, 0x18, 0x86, 0x37, 0xae, 0x16, 0x9c, 0x55, 0xd0, 0x41, 0x31, 0xae, 0x98, 0x86, 0xe0, 0x21, 0x97, - 0x26, 0xd8, 0xbd, 0x79, 0x33, 0x08, 0xbd, 0xd4, 0xb2, 0x24, 0x07, 0xc5, 0x4b, 0x98, 0x64, 0x3e, - 0xd2, 0xa1, 0x9b, 0x49, 0x9c, 0x6f, 0xd6, 0xda, 0x3f, 0x21, 0xfe, 0x25, 0x6f, 0x3d, 0xf6, 0xe8, - 0xa9, 0xc8, 0xee, 0x3f, 0xf0, 0x17, 0x48, 0x66, 0xc6, 0xba, 0x18, 0xbd, 0x0d, 0xbc, 0xef, 0xf3, - 0xbc, 0x21, 0x7c, 0x24, 0x40, 0xad, 0x04, 0x87, 0x54, 0x31, 0x0d, 0x2b, 0xd1, 0x0a, 0x9d, 0x36, - 0x20, 0x01, 0x05, 0x26, 0xbd, 0xea, 0x74, 0x47, 0x1f, 0xd8, 0x3c, 0xb9, 0xc9, 0xe7, 0x8f, 0x9a, - 0xae, 0xe9, 0x4c, 0x98, 0x0e, 0x2f, 0xdb, 0x9b, 0x3f, 0x1f, 0x79, 0x7a, 0xa6, 0x58, 0xeb, 0x34, - 0xf3, 0x70, 0x14, 0xdf, 0xbc, 0x6c, 0x23, 0xfa, 0x36, 0x25, 0xf7, 0x8e, 0xec, 0x74, 0xa1, 0x99, - 0x06, 0x7a, 0x44, 0xf6, 0xac, 0xc2, 0xf7, 0x42, 0x2f, 0x9e, 0x1d, 0xfa, 0xc9, 0xdf, 0x9f, 0x92, - 0x2c, 0x4d, 0x9e, 0x3d, 0xbe, 0xbc, 0xde, 0x9f, 0xfc, 0xbc, 0xde, 0xbf, 0x7f, 0xc1, 0xda, 0xd5, - 0xab, 0xc8, 0x52, 0x51, 0xee, 0x70, 0xfa, 0x9e, 0xcc, 0x06, 0xa4, 0x34, 0x0c, 0xfa, 0xb7, 0xc2, - 0x69, 0x3c, 0x3b, 0x7c, 0x36, 0xb6, 0xe5, 0x4c, 0xc3, 0xf1, 0xf0, 0xca, 0xe6, 0x4e, 0x48, 0xad, - 0x70, 0x87, 0x8e, 0x72, 0xa2, 0x7e, 0xd7, 0x90, 0x7e, 0xf1, 0xc8, 0xd3, 0xf3, 0x53, 0x31, 0x08, - 0x50, 0x03, 0x2f, 0x19, 0xe7, 0x0a, 0x10, 0xcb, 0x9e, 0x09, 0x85, 0xfe, 0xd4, 0x0c, 0xc5, 0xe3, - 0xa1, 0x77, 0x7f, 0x90, 0xd7, 0x96, 0x58, 0x32, 0xa1, 0xb2, 0xd8, 0xad, 0x86, 0x76, 0xf5, 0xbf, - 0xe2, 0x28, 0x7f, 0x72, 0xfe, 0x4f, 0x03, 0xd2, 0x03, 0x42, 0xab, 0x15, 0xab, 0xcf, 0x1c, 0xc6, - 0x41, 0x76, 0x2d, 0xfa, 0xb7, 0xc3, 0x69, 0x7c, 0x37, 0x7f, 0xb8, 0x93, 0xbc, 0x31, 0x01, 0x3d, - 0x21, 0x2f, 0x7a, 0x90, 0x5c, 0xc8, 0xa6, 0x44, 0x90, 0xbc, 0xec, 0x59, 0x7d, 0x06, 0xba, 0x44, - 0xf8, 0xb8, 0x06, 0x59, 0x43, 0x29, 0xd7, 0x6d, 0x05, 0x0a, 0xfd, 0x3b, 0x46, 0x10, 0xba, 0x6e, - 0x01, 0x92, 0x2f, 0x4d, 0xb3, 0x70, 0xc5, 0x13, 0xdb, 0xcb, 0xde, 0x5e, 0x6e, 0x02, 0xef, 0x6a, - 0x13, 0x78, 0x3f, 0x36, 0x81, 0xf7, 0x75, 0x1b, 0x4c, 0xae, 0xb6, 0xc1, 0xe4, 0xfb, 0x36, 0x98, - 0x7c, 0x58, 0x34, 0x42, 0x9f, 0xae, 0xab, 0xa4, 0xee, 0xda, 0xb4, 0x30, 0xff, 0xe3, 0xe0, 0x98, - 0x55, 0x98, 0xba, 0xb3, 0xf8, 0xf4, 0x72, 0x91, 0x7e, 0xde, 0x39, 0x0e, 0x7d, 0xd1, 0x03, 0x56, - 0x7b, 0xe6, 0x32, 0x16, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x80, 0xd5, 0x4c, 0xa4, 0x02, - 0x00, 0x00, + 0x26, 0xd8, 0x7a, 0xf2, 0x66, 0x10, 0x7a, 0xa9, 0x65, 0x49, 0x0e, 0x8a, 0x97, 0x30, 0xc9, 0x7c, + 0xa4, 0x43, 0x37, 0x93, 0x38, 0xdf, 0xac, 0xb5, 0x7f, 0x42, 0xfc, 0x4b, 0xde, 0x7a, 0xec, 0xd1, + 0x53, 0x91, 0xdd, 0x7f, 0xe0, 0x2f, 0x90, 0xcc, 0x8c, 0x75, 0x31, 0xf6, 0x36, 0xf0, 0xbe, 0xcf, + 0xf3, 0x86, 0xf0, 0x91, 0x00, 0xb5, 0x12, 0x1c, 0x52, 0xc5, 0x34, 0x2c, 0x45, 0x2b, 0x74, 0xda, + 0x80, 0x04, 0x14, 0x98, 0xf4, 0xaa, 0xd3, 0x1d, 0x7d, 0x60, 0xf3, 0xe4, 0x3a, 0x9f, 0x3f, 0x6a, + 0xba, 0xa6, 0x33, 0x61, 0x3a, 0xbc, 0x6c, 0x6f, 0xfe, 0x7c, 0xe4, 0xe9, 0x99, 0x62, 0xad, 0xd3, + 0xcc, 0xc3, 0x51, 0x7c, 0xfd, 0xb2, 0x8d, 0xe8, 0xfb, 0x94, 0xdc, 0x3b, 0xb4, 0xd3, 0x85, 0x66, + 0x1a, 0xe8, 0x21, 0xd9, 0xb1, 0x0a, 0xdf, 0x0b, 0xbd, 0x78, 0xb6, 0xef, 0x27, 0xff, 0x7e, 0x4a, + 0xb2, 0x30, 0x79, 0xf6, 0xf8, 0xe2, 0x6a, 0x77, 0xf2, 0xeb, 0x6a, 0xf7, 0xfe, 0x39, 0x6b, 0x97, + 0xaf, 0x23, 0x4b, 0x45, 0xb9, 0xc3, 0xe9, 0x07, 0x32, 0x1b, 0x90, 0xd2, 0x30, 0xe8, 0xdf, 0x0a, + 0xa7, 0xf1, 0x6c, 0xff, 0xd9, 0xd8, 0x96, 0x33, 0x0d, 0x47, 0xc3, 0x2b, 0x9b, 0x3b, 0x21, 0xb5, + 0xc2, 0x2d, 0x3a, 0xca, 0x89, 0xfa, 0x53, 0x43, 0xfa, 0xd5, 0x23, 0x4f, 0xcf, 0x4e, 0xc4, 0x20, + 0x40, 0x0d, 0xbc, 0x64, 0x9c, 0x2b, 0x40, 0x2c, 0x7b, 0x26, 0x14, 0xfa, 0x53, 0x33, 0x14, 0x8f, + 0x87, 0xde, 0xff, 0x45, 0xde, 0x58, 0x62, 0xc1, 0x84, 0xca, 0x62, 0xb7, 0x1a, 0xda, 0xd5, 0x1b, + 0xc5, 0x51, 0xfe, 0xe4, 0xec, 0xbf, 0x06, 0xa4, 0x7b, 0x84, 0x56, 0x4b, 0x56, 0x9f, 0x3a, 0x8c, + 0x83, 0xec, 0x5a, 0xf4, 0x6f, 0x87, 0xd3, 0xf8, 0x6e, 0xfe, 0x70, 0x2b, 0x79, 0x6b, 0x02, 0x7a, + 0x4c, 0x5e, 0xf4, 0x20, 0xb9, 0x90, 0x4d, 0x89, 0x20, 0x79, 0xd9, 0xb3, 0xfa, 0x14, 0x74, 0x89, + 0xf0, 0x69, 0x05, 0xb2, 0x86, 0x52, 0xae, 0xda, 0x0a, 0x14, 0xfa, 0x77, 0x8c, 0x20, 0x74, 0xdd, + 0x02, 0x24, 0x5f, 0x98, 0x66, 0xe1, 0x8a, 0xc7, 0xb6, 0x97, 0xbd, 0xbb, 0x58, 0x07, 0xde, 0xe5, + 0x3a, 0xf0, 0x7e, 0xae, 0x03, 0xef, 0xdb, 0x26, 0x98, 0x5c, 0x6e, 0x82, 0xc9, 0x8f, 0x4d, 0x30, + 0xf9, 0x78, 0xd0, 0x08, 0x7d, 0xb2, 0xaa, 0x92, 0xba, 0x6b, 0xd3, 0xc2, 0xfc, 0x8f, 0xbd, 0x23, + 0x56, 0x61, 0xea, 0xce, 0xe2, 0xf3, 0xcb, 0x57, 0xe9, 0x97, 0xad, 0xe3, 0xd0, 0xe7, 0x3d, 0x60, + 0xb5, 0x63, 0x2e, 0xe3, 0xe0, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0xc6, 0x00, 0x9e, 0xa4, + 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/gov.pb.go b/x/ratelimit/types/gov.pb.go index 3c22fc62a1..71860a9e71 100644 --- a/x/ratelimit/types/gov.pb.go +++ b/x/ratelimit/types/gov.pb.go @@ -200,35 +200,35 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/gov.proto", fileDescriptor_3ad7ef7cb59a1c37) } var fileDescriptor_3ad7ef7cb59a1c37 = []byte{ - // 437 bytes of a gzipped FileDescriptorProto + // 438 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x41, 0x6b, 0x13, 0x41, - 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x09, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, - 0x76, 0x17, 0xc9, 0xad, 0x37, 0x7b, 0xb2, 0x50, 0xa1, 0x4c, 0x11, 0xc4, 0x4b, 0x98, 0xec, 0x3c, - 0x92, 0xc1, 0x9d, 0x99, 0x65, 0x66, 0xb2, 0xa4, 0xff, 0xc0, 0xa3, 0x47, 0x11, 0x84, 0xfc, 0x15, - 0x3d, 0xf5, 0xd8, 0xa3, 0x78, 0x08, 0x92, 0x5c, 0x3c, 0xfb, 0x0b, 0x64, 0x67, 0x13, 0x59, 0xf0, - 0x24, 0x1e, 0x54, 0xe8, 0x69, 0xf7, 0x7d, 0xdf, 0xf7, 0xde, 0xf0, 0xf1, 0x1e, 0x1f, 0x3e, 0xb0, - 0xce, 0x08, 0x0e, 0xa9, 0x61, 0x0e, 0x72, 0x21, 0x85, 0x4b, 0xc7, 0xba, 0x4c, 0x0a, 0xa3, 0x9d, - 0x0e, 0xf7, 0x6a, 0x2e, 0xf9, 0xc9, 0x1d, 0x74, 0xc7, 0x7a, 0xac, 0x3d, 0x99, 0x56, 0x7f, 0xb5, - 0xae, 0xff, 0xbe, 0x85, 0xbb, 0x4f, 0x39, 0xa7, 0xcc, 0xc1, 0x59, 0x25, 0x3b, 0x37, 0xba, 0xd0, - 0x96, 0xe5, 0x61, 0x17, 0xb7, 0x9d, 0x70, 0x39, 0x10, 0xd4, 0x43, 0x87, 0xbb, 0xb4, 0x2e, 0xc2, - 0x1e, 0xbe, 0xc3, 0xc1, 0x66, 0x46, 0x14, 0x4e, 0x68, 0x45, 0x6e, 0x79, 0xae, 0x09, 0x55, 0x7d, - 0x1c, 0x94, 0x96, 0xa4, 0x55, 0xf7, 0xf9, 0x22, 0x7c, 0x80, 0x71, 0x36, 0x61, 0x4a, 0x41, 0x3e, - 0x14, 0x9c, 0x6c, 0x79, 0x6a, 0x77, 0x8d, 0x9c, 0xf2, 0xf0, 0x25, 0xde, 0x93, 0x6c, 0x36, 0x2c, - 0xc0, 0x64, 0xa0, 0xdc, 0xd0, 0x82, 0xe2, 0xa4, 0x5d, 0x89, 0x4e, 0x92, 0xab, 0x45, 0x1c, 0x7c, - 0x59, 0xc4, 0x8f, 0xc6, 0xc2, 0x4d, 0xa6, 0xa3, 0x24, 0xd3, 0x32, 0xcd, 0xb4, 0x95, 0xda, 0xae, - 0x3f, 0x47, 0x96, 0xbf, 0x4e, 0xdd, 0x65, 0x01, 0x36, 0x39, 0x55, 0x8e, 0x76, 0x24, 0x9b, 0x9d, - 0xd7, 0x63, 0x2e, 0x40, 0xfd, 0x32, 0xd9, 0x40, 0x56, 0x92, 0xed, 0x3f, 0x9d, 0x4c, 0x21, 0x2b, - 0xc3, 0x87, 0xb8, 0xc3, 0xa7, 0x86, 0x55, 0xa6, 0x87, 0x13, 0x3d, 0x35, 0x96, 0xec, 0xf4, 0xd0, - 0xe1, 0x16, 0xbd, 0xb7, 0x41, 0x9f, 0x55, 0x60, 0xf8, 0x18, 0xef, 0x70, 0x28, 0xb4, 0x15, 0x8e, - 0xdc, 0xf6, 0xef, 0x86, 0xdf, 0x17, 0x71, 0xe7, 0x92, 0xc9, 0xfc, 0xb8, 0xbf, 0x26, 0xfa, 0x74, - 0x23, 0x39, 0xbe, 0xfb, 0x66, 0x1e, 0x07, 0xef, 0xe6, 0x71, 0xf0, 0x6d, 0x1e, 0xa3, 0xfe, 0x87, - 0x16, 0xde, 0x7f, 0x51, 0x70, 0xe6, 0xe0, 0x66, 0x3f, 0xff, 0xe2, 0x7e, 0x3e, 0x21, 0xbc, 0x4f, - 0x41, 0xea, 0xf2, 0x6f, 0xef, 0xa7, 0x61, 0xa2, 0xfd, 0xbb, 0x26, 0x3e, 0x22, 0x7c, 0x9f, 0x82, - 0x05, 0xf7, 0xff, 0x7a, 0x38, 0x79, 0x7e, 0xb5, 0x8c, 0xd0, 0xf5, 0x32, 0x42, 0x5f, 0x97, 0x11, - 0x7a, 0xbb, 0x8a, 0x82, 0xeb, 0x55, 0x14, 0x7c, 0x5e, 0x45, 0xc1, 0xab, 0x41, 0xe3, 0x7a, 0x2e, - 0x7c, 0x24, 0x1e, 0x9d, 0xb1, 0x91, 0x4d, 0xd7, 0xd1, 0x59, 0x3e, 0x19, 0xa4, 0xb3, 0x46, 0x80, - 0xfa, 0x73, 0x1a, 0x6d, 0xfb, 0x6c, 0x1c, 0xfc, 0x08, 0x00, 0x00, 0xff, 0xff, 0x54, 0xfd, 0xf2, - 0xfe, 0x61, 0x05, 0x00, 0x00, + 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x08, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, + 0x76, 0x17, 0xa9, 0xa7, 0xde, 0xec, 0xc9, 0x42, 0x85, 0x32, 0x45, 0x10, 0x2f, 0x61, 0xb2, 0xf3, + 0x48, 0x06, 0x77, 0x66, 0x96, 0x99, 0xc9, 0x92, 0xfe, 0x03, 0x8f, 0x1e, 0x45, 0x10, 0xf2, 0x57, + 0xf4, 0xd4, 0x63, 0x8f, 0xe2, 0x21, 0x48, 0x72, 0xf1, 0xec, 0x2f, 0x90, 0x9d, 0x4d, 0x25, 0xe0, + 0x49, 0x3c, 0xa8, 0xe0, 0x69, 0xf7, 0x7d, 0xdf, 0xf7, 0xde, 0xf0, 0xf1, 0x1e, 0x1f, 0xde, 0x73, + 0xde, 0x4a, 0x01, 0x99, 0xe5, 0x1e, 0x0a, 0xa9, 0xa4, 0xcf, 0x46, 0xa6, 0x4a, 0x4b, 0x6b, 0xbc, + 0x21, 0x3b, 0x0d, 0x97, 0xfe, 0xe0, 0xf6, 0xba, 0x23, 0x33, 0x32, 0x81, 0xcc, 0xea, 0xbf, 0x46, + 0xd7, 0x7f, 0xd7, 0xc2, 0xdd, 0x27, 0x42, 0x30, 0xee, 0xe1, 0xb4, 0x96, 0x9d, 0x59, 0x53, 0x1a, + 0xc7, 0x0b, 0xd2, 0xc5, 0x6d, 0x2f, 0x7d, 0x01, 0x14, 0xf5, 0xd0, 0xfe, 0x36, 0x6b, 0x0a, 0xd2, + 0xc3, 0xb7, 0x04, 0xb8, 0xdc, 0xca, 0xd2, 0x4b, 0xa3, 0xe9, 0x8d, 0xc0, 0xad, 0x43, 0x75, 0x9f, + 0x00, 0x6d, 0x14, 0x6d, 0x35, 0x7d, 0xa1, 0x20, 0xf7, 0x30, 0xce, 0xc7, 0x5c, 0x6b, 0x28, 0x06, + 0x52, 0xd0, 0x8d, 0x40, 0x6d, 0xaf, 0x90, 0x13, 0x41, 0x5e, 0xe0, 0x1d, 0xc5, 0xa7, 0x83, 0x12, + 0x6c, 0x0e, 0xda, 0x0f, 0x1c, 0x68, 0x41, 0xdb, 0xb5, 0xe8, 0x38, 0xbd, 0x9c, 0x27, 0xd1, 0xe7, + 0x79, 0xf2, 0x60, 0x24, 0xfd, 0x78, 0x32, 0x4c, 0x73, 0xa3, 0xb2, 0xdc, 0x38, 0x65, 0xdc, 0xea, + 0x73, 0xe0, 0xc4, 0xab, 0xcc, 0x5f, 0x94, 0xe0, 0xd2, 0x13, 0xed, 0x59, 0x47, 0xf1, 0xe9, 0x59, + 0x33, 0xe6, 0x1c, 0xf4, 0x4f, 0x93, 0x2d, 0xe4, 0x15, 0xdd, 0xfc, 0xdd, 0xc9, 0x0c, 0xf2, 0x8a, + 0xdc, 0xc7, 0x1d, 0x31, 0xb1, 0xbc, 0x36, 0x3d, 0x18, 0x9b, 0x89, 0x75, 0x74, 0xab, 0x87, 0xf6, + 0x37, 0xd8, 0x9d, 0x6b, 0xf4, 0x69, 0x0d, 0x92, 0x87, 0x78, 0x4b, 0x40, 0x69, 0x9c, 0xf4, 0xf4, + 0x66, 0x78, 0x97, 0x7c, 0x9b, 0x27, 0x9d, 0x0b, 0xae, 0x8a, 0xa3, 0xfe, 0x8a, 0xe8, 0xb3, 0x6b, + 0xc9, 0xd1, 0xed, 0xd7, 0xb3, 0x24, 0x7a, 0x3b, 0x4b, 0xa2, 0xaf, 0xb3, 0x04, 0xf5, 0xdf, 0xb7, + 0xf0, 0xee, 0xf3, 0x52, 0x70, 0x0f, 0xff, 0xf7, 0xf3, 0x37, 0xee, 0xe7, 0x23, 0xc2, 0xbb, 0x0c, + 0x94, 0xa9, 0xfe, 0xf4, 0x7e, 0xd6, 0x4c, 0xb4, 0x7f, 0xd5, 0xc4, 0x07, 0x84, 0xef, 0x32, 0x70, + 0xe0, 0xff, 0x5d, 0x0f, 0xc7, 0xcf, 0x2e, 0x17, 0x31, 0xba, 0x5a, 0xc4, 0xe8, 0xcb, 0x22, 0x46, + 0x6f, 0x96, 0x71, 0x74, 0xb5, 0x8c, 0xa3, 0x4f, 0xcb, 0x38, 0x7a, 0x79, 0xb8, 0x76, 0x3d, 0xe7, + 0x21, 0x12, 0x0f, 0x4e, 0xf9, 0xd0, 0x65, 0xab, 0xe8, 0xac, 0x1e, 0x3d, 0xce, 0xa6, 0x6b, 0x01, + 0x1a, 0xce, 0x69, 0xb8, 0x19, 0xb2, 0xf1, 0xf0, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0xbb, + 0x27, 0x2c, 0x61, 0x05, 0x00, 0x00, } func (this *AddRateLimitProposal) Equal(that interface{}) bool { diff --git a/x/ratelimit/types/gov_add_rate_limit_test.go b/x/ratelimit/types/gov_add_rate_limit_test.go index a85adb07fe..f7bfc44821 100644 --- a/x/ratelimit/types/gov_add_rate_limit_test.go +++ b/x/ratelimit/types/gov_add_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func TestGovAddRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_remove_rate_limit_test.go b/x/ratelimit/types/gov_remove_rate_limit_test.go index b7a3f9c887..a34d779208 100644 --- a/x/ratelimit/types/gov_remove_rate_limit_test.go +++ b/x/ratelimit/types/gov_remove_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func TestGovRemoveRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_reset_rate_limit_test.go b/x/ratelimit/types/gov_reset_rate_limit_test.go index b37f888abb..43b0b28d88 100644 --- a/x/ratelimit/types/gov_reset_rate_limit_test.go +++ b/x/ratelimit/types/gov_reset_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func TestGovResetRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_update_rate_limit_test.go b/x/ratelimit/types/gov_update_rate_limit_test.go index c6c00973b2..ca9afd3ada 100644 --- a/x/ratelimit/types/gov_update_rate_limit_test.go +++ b/x/ratelimit/types/gov_update_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func TestGovUpdateRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/params.pb.go b/x/ratelimit/types/params.pb.go index 2990b808c7..532f0b8d2a 100644 --- a/x/ratelimit/types/params.pb.go +++ b/x/ratelimit/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_7af4964ecd08f136 = []byte{ 0x95, 0x38, 0xb8, 0xd8, 0x02, 0xc0, 0x2a, 0x9c, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, - 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x63, 0xfd, 0x0a, + 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x13, 0xfd, 0x0a, 0x24, 0x1b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x36, 0x1a, 0x03, 0x02, 0x00, 0x00, - 0xff, 0xff, 0x76, 0xd3, 0x4c, 0xe4, 0x92, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xf0, 0x95, 0x99, 0x36, 0x92, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/query.pb.go b/x/ratelimit/types/query.pb.go index 17610188eb..b917a27bf7 100644 --- a/x/ratelimit/types/query.pb.go +++ b/x/ratelimit/types/query.pb.go @@ -559,51 +559,51 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/query.proto", fileDescriptor_97a373ef8fcef03b) } var fileDescriptor_97a373ef8fcef03b = []byte{ - // 692 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x4f, 0x13, 0x4f, - 0x18, 0xc7, 0x3b, 0xfc, 0x7e, 0x20, 0x7d, 0x90, 0xc4, 0x8c, 0x80, 0xb0, 0x60, 0xa9, 0xab, 0xc6, - 0xc6, 0x3f, 0x5d, 0x68, 0x45, 0x8d, 0x48, 0x0c, 0x55, 0x0f, 0x24, 0x98, 0x68, 0x31, 0x31, 0xf1, - 0x52, 0xa7, 0xdd, 0xb1, 0x9d, 0xb8, 0xec, 0x96, 0x9d, 0x45, 0x6d, 0x08, 0x17, 0x5f, 0x81, 0x89, - 0x57, 0xaf, 0xbe, 0x08, 0x8f, 0x1e, 0x4c, 0x38, 0x12, 0xbd, 0x78, 0x32, 0x86, 0xfa, 0x42, 0xcc, - 0xce, 0xcc, 0x6e, 0x6d, 0xbb, 0x5b, 0xba, 0x09, 0xb7, 0xe9, 0xcc, 0xf3, 0x7c, 0x9f, 0xcf, 0xf7, - 0xd9, 0x79, 0x26, 0x85, 0x05, 0xee, 0xb9, 0xcc, 0xa4, 0x86, 0x4b, 0x3c, 0x6a, 0xb1, 0x6d, 0xe6, - 0x19, 0x3b, 0xbb, 0xd4, 0x6d, 0xe5, 0x9b, 0xae, 0xe3, 0x39, 0xf8, 0x8c, 0x3c, 0xcd, 0x87, 0xa7, - 0x5a, 0xb6, 0x2f, 0x3e, 0x5c, 0xc9, 0x1c, 0x6d, 0xa1, 0xee, 0x38, 0x75, 0x8b, 0x1a, 0xa4, 0xc9, - 0x0c, 0x62, 0xdb, 0x8e, 0x47, 0x3c, 0xe6, 0xd8, 0x5c, 0x9d, 0x4e, 0xd5, 0x9d, 0xba, 0x23, 0x96, - 0x86, 0xbf, 0x92, 0xbb, 0xfa, 0x3c, 0xcc, 0x3d, 0xf5, 0xcb, 0xae, 0x5b, 0x56, 0x99, 0x78, 0x74, - 0xd3, 0x97, 0xe3, 0x65, 0xba, 0xb3, 0x4b, 0xb9, 0xa7, 0xbf, 0x04, 0x2d, 0xea, 0x90, 0x37, 0x1d, - 0x9b, 0x53, 0x5c, 0x82, 0x09, 0x9f, 0xa0, 0x22, 0x10, 0xf8, 0x2c, 0xca, 0xfe, 0x97, 0x9b, 0x28, - 0xcc, 0xe7, 0x7b, 0xc1, 0xf3, 0x61, 0x6a, 0xe9, 0xff, 0x83, 0x5f, 0x8b, 0xa9, 0x32, 0xb8, 0xa1, - 0x96, 0xbe, 0x09, 0xd3, 0xa2, 0x42, 0x18, 0xa3, 0x4a, 0xe3, 0x29, 0x18, 0x35, 0xa9, 0xed, 0x6c, - 0xcf, 0xa2, 0x2c, 0xca, 0xa5, 0xcb, 0xf2, 0x07, 0x3e, 0x0f, 0x50, 0x6b, 0x10, 0xdb, 0xa6, 0x56, - 0x85, 0x99, 0xb3, 0x23, 0xe2, 0x28, 0xad, 0x76, 0x36, 0x4c, 0xfd, 0x19, 0xcc, 0xf4, 0xaa, 0x29, - 0xd6, 0xbb, 0x00, 0x1d, 0x56, 0xa1, 0x39, 0x18, 0xb5, 0x9c, 0x0e, 0x21, 0xf5, 0x7b, 0xb0, 0xd8, - 0xad, 0xca, 0x4b, 0xad, 0x07, 0x0d, 0xc2, 0xec, 0x0d, 0x33, 0xa0, 0x9d, 0x83, 0xf1, 0x9a, 0xbf, - 0xe3, 0x53, 0x49, 0xe0, 0x53, 0x35, 0x19, 0xa1, 0xbf, 0x82, 0x6c, 0x7c, 0xf6, 0x09, 0x76, 0xb2, - 0x04, 0x17, 0xa2, 0xea, 0xc8, 0xce, 0x04, 0x9c, 0xdd, 0xfd, 0x43, 0xbd, 0xfd, 0x6b, 0x80, 0x3e, - 0x48, 0xe3, 0x04, 0x69, 0x75, 0xd5, 0x95, 0x75, 0xcb, 0x2a, 0x59, 0xa4, 0xf6, 0xda, 0x62, 0xdc, - 0xa3, 0xe6, 0x43, 0xff, 0x23, 0x87, 0xb7, 0x6f, 0x55, 0x39, 0x8a, 0x8e, 0x51, 0x30, 0x33, 0x30, - 0x26, 0xae, 0x86, 0xe4, 0x48, 0x97, 0xd5, 0x2f, 0xfd, 0x32, 0x5c, 0x0c, 0x92, 0x9f, 0x37, 0x98, - 0x8f, 0xe4, 0x27, 0xaf, 0x9b, 0xa6, 0x4b, 0x39, 0xa7, 0x61, 0x8d, 0x3d, 0xb8, 0x34, 0x38, 0x4c, - 0x95, 0xd9, 0x82, 0x49, 0x22, 0x37, 0x2b, 0x4d, 0xc2, 0xdc, 0xc0, 0x75, 0xae, 0xdf, 0x75, 0xbf, - 0xcc, 0x13, 0xc2, 0x5c, 0xd5, 0x82, 0xd3, 0xa4, 0xb3, 0xc5, 0x0b, 0xdf, 0xc7, 0x61, 0x54, 0x54, - 0xc7, 0x9f, 0x10, 0x4c, 0x76, 0x0d, 0x19, 0xbe, 0xd6, 0xaf, 0x1c, 0x3b, 0xa7, 0xda, 0xf5, 0xe1, - 0x82, 0xa5, 0x17, 0x7d, 0xe9, 0xfd, 0x8f, 0x3f, 0x1f, 0x47, 0xae, 0xe2, 0x9c, 0xb1, 0x25, 0xb2, - 0x6e, 0x6c, 0x92, 0x2a, 0x37, 0xe2, 0x5f, 0x17, 0x8e, 0x3f, 0x23, 0x48, 0x87, 0x42, 0xf8, 0x4a, - 0x4c, 0xb5, 0xde, 0x19, 0xd6, 0x72, 0xc7, 0x07, 0x2a, 0xa4, 0x47, 0x02, 0xe9, 0x3e, 0x5e, 0x1b, - 0x12, 0xc9, 0xd8, 0xeb, 0x5c, 0xe3, 0x7d, 0xa3, 0xda, 0xaa, 0xc8, 0xe7, 0xe1, 0x0b, 0x82, 0xb3, - 0x11, 0x73, 0x86, 0x97, 0x8f, 0x03, 0xe9, 0x9b, 0x68, 0xad, 0x90, 0x24, 0x45, 0xb9, 0x58, 0x15, - 0x2e, 0x56, 0x70, 0x71, 0xd8, 0xc6, 0x0a, 0x1b, 0xe2, 0xd5, 0xd8, 0xc7, 0x5f, 0x11, 0x4c, 0x47, - 0xce, 0x1d, 0x2e, 0x0e, 0x87, 0xd2, 0x35, 0xe9, 0xda, 0xcd, 0x64, 0x49, 0xca, 0xc1, 0x9a, 0x70, - 0x70, 0x1b, 0xaf, 0x24, 0x72, 0x10, 0x7c, 0x08, 0xbf, 0xff, 0x53, 0x51, 0xd3, 0x8a, 0x0b, 0xf1, - 0x17, 0x34, 0x6e, 0xfc, 0xb5, 0x62, 0xa2, 0x1c, 0x65, 0xe0, 0x8e, 0x30, 0x50, 0xc0, 0x4b, 0x83, - 0x0d, 0x54, 0x3b, 0x02, 0xf2, 0xea, 0x70, 0xfc, 0x0d, 0xc1, 0xb9, 0x98, 0x57, 0x00, 0xaf, 0xc4, - 0xa3, 0x0c, 0x78, 0x5c, 0xb4, 0x5b, 0x49, 0xd3, 0x92, 0xdd, 0xa3, 0xb7, 0x1d, 0x8d, 0x0a, 0x09, - 0x44, 0x4a, 0x8f, 0x0f, 0x8e, 0x32, 0xe8, 0xf0, 0x28, 0x83, 0x7e, 0x1f, 0x65, 0xd0, 0x87, 0x76, - 0x26, 0x75, 0xd8, 0xce, 0xa4, 0x7e, 0xb6, 0x33, 0xa9, 0x17, 0xc5, 0x3a, 0xf3, 0x1a, 0xbb, 0xd5, - 0x7c, 0xcd, 0xd9, 0x8e, 0x12, 0x7e, 0xb3, 0x5c, 0x34, 0xde, 0xfd, 0x23, 0xef, 0xb5, 0x9a, 0x94, - 0x57, 0xc7, 0xc4, 0xdf, 0x84, 0xe2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6d, 0xfb, 0x49, 0x14, - 0xae, 0x08, 0x00, 0x00, + // 690 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x4f, 0x13, 0x41, + 0x14, 0xc7, 0x3b, 0x28, 0x48, 0x1f, 0x92, 0x98, 0x11, 0x10, 0x16, 0x2c, 0x75, 0xd5, 0xd8, 0xf8, + 0xa3, 0x0b, 0x2d, 0xa8, 0x11, 0x89, 0xa1, 0xea, 0x81, 0x04, 0x13, 0x2d, 0x26, 0x26, 0x5e, 0xea, + 0xb4, 0x3b, 0xb6, 0x13, 0x97, 0xdd, 0xb2, 0xb3, 0xa8, 0x0d, 0xe1, 0xe2, 0x5f, 0x60, 0xe2, 0xd5, + 0xab, 0x7f, 0x84, 0x47, 0x0f, 0x26, 0x1c, 0x89, 0x5e, 0x3c, 0x19, 0x03, 0xfe, 0x21, 0x66, 0x67, + 0x66, 0xb7, 0xb6, 0xdd, 0x2d, 0xdd, 0x84, 0xdb, 0x74, 0xe6, 0xbd, 0xef, 0xfb, 0x7c, 0xdf, 0xce, + 0x9b, 0x14, 0xe6, 0xb8, 0xe7, 0x32, 0x93, 0x1a, 0x2e, 0xf1, 0xa8, 0xc5, 0xb6, 0x98, 0x67, 0x6c, + 0xef, 0x50, 0xb7, 0x95, 0x6f, 0xba, 0x8e, 0xe7, 0xe0, 0x73, 0xf2, 0x34, 0x1f, 0x9e, 0x6a, 0xd9, + 0x9e, 0xf8, 0x70, 0x25, 0x73, 0xb4, 0xb9, 0xba, 0xe3, 0xd4, 0x2d, 0x6a, 0x90, 0x26, 0x33, 0x88, + 0x6d, 0x3b, 0x1e, 0xf1, 0x98, 0x63, 0x73, 0x75, 0x3a, 0x51, 0x77, 0xea, 0x8e, 0x58, 0x1a, 0xfe, + 0x4a, 0xee, 0xea, 0xb3, 0x30, 0xf3, 0xcc, 0x2f, 0xbb, 0x66, 0x59, 0x65, 0xe2, 0xd1, 0x0d, 0x5f, + 0x8e, 0x97, 0xe9, 0xf6, 0x0e, 0xe5, 0x9e, 0xfe, 0x0a, 0xb4, 0xa8, 0x43, 0xde, 0x74, 0x6c, 0x4e, + 0x71, 0x09, 0xc6, 0x7c, 0x82, 0x8a, 0x40, 0xe0, 0xd3, 0x28, 0x7b, 0x2a, 0x37, 0x56, 0x98, 0xcd, + 0x77, 0x83, 0xe7, 0xc3, 0xd4, 0xd2, 0xe9, 0xfd, 0xdf, 0xf3, 0xa9, 0x32, 0xb8, 0xa1, 0x96, 0xbe, + 0x01, 0x93, 0xa2, 0x42, 0x18, 0xa3, 0x4a, 0xe3, 0x09, 0x18, 0x36, 0xa9, 0xed, 0x6c, 0x4d, 0xa3, + 0x2c, 0xca, 0xa5, 0xcb, 0xf2, 0x07, 0xbe, 0x08, 0x50, 0x6b, 0x10, 0xdb, 0xa6, 0x56, 0x85, 0x99, + 0xd3, 0x43, 0xe2, 0x28, 0xad, 0x76, 0xd6, 0x4d, 0xfd, 0x39, 0x4c, 0x75, 0xab, 0x29, 0xd6, 0x7b, + 0x00, 0x6d, 0x56, 0xa1, 0xd9, 0x1f, 0xb5, 0x9c, 0x0e, 0x21, 0xf5, 0xfb, 0x30, 0xdf, 0xa9, 0xca, + 0x4b, 0xad, 0x87, 0x0d, 0xc2, 0xec, 0x75, 0x33, 0xa0, 0x9d, 0x81, 0xd1, 0x9a, 0xbf, 0xe3, 0x53, + 0x49, 0xe0, 0x33, 0x35, 0x19, 0xa1, 0xbf, 0x86, 0x6c, 0x7c, 0xf6, 0x09, 0x76, 0xb2, 0x04, 0x97, + 0xa2, 0xea, 0xc8, 0xce, 0x04, 0x9c, 0x9d, 0xfd, 0x43, 0xdd, 0xfd, 0x6b, 0x80, 0xde, 0x4f, 0xe3, + 0x04, 0x69, 0x75, 0xd5, 0x95, 0x35, 0xcb, 0x2a, 0x59, 0xa4, 0xf6, 0xc6, 0x62, 0xdc, 0xa3, 0xe6, + 0x23, 0xff, 0x23, 0x87, 0xb7, 0x6f, 0x45, 0x39, 0x8a, 0x8e, 0x51, 0x30, 0x53, 0x30, 0x22, 0xae, + 0x86, 0xe4, 0x48, 0x97, 0xd5, 0x2f, 0xfd, 0x2a, 0x5c, 0x0e, 0x92, 0x5f, 0x34, 0x98, 0x8f, 0xe4, + 0x27, 0xaf, 0x99, 0xa6, 0x4b, 0x39, 0xa7, 0x61, 0x8d, 0x5d, 0xb8, 0xd2, 0x3f, 0x4c, 0x95, 0xd9, + 0x84, 0x71, 0x22, 0x37, 0x2b, 0x4d, 0xc2, 0xdc, 0xc0, 0x75, 0xae, 0xd7, 0x75, 0xaf, 0xcc, 0x53, + 0xc2, 0x5c, 0xd5, 0x82, 0xb3, 0xa4, 0xbd, 0xc5, 0x0b, 0x3f, 0x46, 0x61, 0x58, 0x54, 0xc7, 0x9f, + 0x11, 0x8c, 0x77, 0x0c, 0x19, 0xbe, 0xd1, 0xab, 0x1c, 0x3b, 0xa7, 0xda, 0xcd, 0xc1, 0x82, 0xa5, + 0x17, 0x7d, 0xe1, 0xc3, 0xcf, 0xbf, 0x9f, 0x86, 0xae, 0xe3, 0x9c, 0xb1, 0x29, 0xb2, 0x6e, 0x6d, + 0x90, 0x2a, 0x37, 0xe2, 0x5f, 0x17, 0x8e, 0xbf, 0x20, 0x48, 0x87, 0x42, 0xf8, 0x5a, 0x4c, 0xb5, + 0xee, 0x19, 0xd6, 0x72, 0xc7, 0x07, 0x2a, 0xa4, 0xc7, 0x02, 0xe9, 0x01, 0x5e, 0x1d, 0x10, 0xc9, + 0xd8, 0x6d, 0x5f, 0xe3, 0x3d, 0xa3, 0xda, 0xaa, 0xc8, 0xe7, 0xe1, 0x2b, 0x82, 0xf3, 0x11, 0x73, + 0x86, 0x17, 0x8f, 0x03, 0xe9, 0x99, 0x68, 0xad, 0x90, 0x24, 0x45, 0xb9, 0x58, 0x11, 0x2e, 0x96, + 0x71, 0x71, 0xd0, 0xc6, 0x0a, 0x1b, 0xe2, 0xd5, 0xd8, 0xc3, 0xdf, 0x10, 0x4c, 0x46, 0xce, 0x1d, + 0x2e, 0x0e, 0x86, 0xd2, 0x31, 0xe9, 0xda, 0x52, 0xb2, 0x24, 0xe5, 0x60, 0x55, 0x38, 0xb8, 0x83, + 0x97, 0x13, 0x39, 0x08, 0x3e, 0x84, 0xdf, 0xff, 0x89, 0xa8, 0x69, 0xc5, 0x85, 0xf8, 0x0b, 0x1a, + 0x37, 0xfe, 0x5a, 0x31, 0x51, 0x8e, 0x32, 0x70, 0x57, 0x18, 0x28, 0xe0, 0x85, 0xfe, 0x06, 0xaa, + 0x6d, 0x01, 0x79, 0x75, 0x38, 0xfe, 0x8e, 0xe0, 0x42, 0xcc, 0x2b, 0x80, 0x97, 0xe3, 0x51, 0xfa, + 0x3c, 0x2e, 0xda, 0xed, 0xa4, 0x69, 0xc9, 0xee, 0xd1, 0xbb, 0xb6, 0x46, 0x85, 0x04, 0x22, 0xa5, + 0x27, 0xfb, 0x87, 0x19, 0x74, 0x70, 0x98, 0x41, 0x7f, 0x0e, 0x33, 0xe8, 0xe3, 0x51, 0x26, 0x75, + 0x70, 0x94, 0x49, 0xfd, 0x3a, 0xca, 0xa4, 0x5e, 0x16, 0xeb, 0xcc, 0x6b, 0xec, 0x54, 0xf3, 0x35, + 0x67, 0x2b, 0x4a, 0xf8, 0xed, 0xe2, 0x92, 0xf1, 0xfe, 0x3f, 0x79, 0xaf, 0xd5, 0xa4, 0xbc, 0x3a, + 0x22, 0xfe, 0x26, 0x14, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xeb, 0xbd, 0x9c, 0xc6, 0xae, 0x08, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/types/quota_test.go b/x/ratelimit/types/quota_test.go index 41fda7c2c8..cb197a3705 100644 --- a/x/ratelimit/types/quota_test.go +++ b/x/ratelimit/types/quota_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) func TestCheckExceedsQuota(t *testing.T) { diff --git a/x/ratelimit/types/ratelimit.pb.go b/x/ratelimit/types/ratelimit.pb.go index 9996cccab8..a2ea0a70ae 100644 --- a/x/ratelimit/types/ratelimit.pb.go +++ b/x/ratelimit/types/ratelimit.pb.go @@ -310,40 +310,40 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/ratelimit.proto", fileDescriptor_a3e00ee2c967d747) } var fileDescriptor_a3e00ee2c967d747 = []byte{ - // 519 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x4d, 0x6f, 0xd3, 0x40, - 0x10, 0xb5, 0x69, 0x1a, 0xc8, 0x86, 0xb6, 0xd1, 0xaa, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, 0xa8, - 0xaa, 0x14, 0x5b, 0x34, 0x27, 0xc4, 0xa9, 0x1f, 0xa9, 0x5a, 0x11, 0x50, 0x70, 0x50, 0x41, 0x5c, - 0xa2, 0x8d, 0x77, 0x88, 0x57, 0x8d, 0xbd, 0x61, 0x77, 0xed, 0x86, 0x7f, 0xc0, 0x11, 0xf1, 0x17, - 0xf8, 0x33, 0x3d, 0xf6, 0x88, 0x38, 0x54, 0x28, 0x39, 0xf3, 0x1f, 0xd0, 0xae, 0x9d, 0x12, 0x15, - 0x71, 0xa0, 0x9c, 0xbc, 0xf3, 0xe6, 0xed, 0x93, 0xdf, 0xec, 0x1b, 0xd4, 0x90, 0x4a, 0x30, 0x0a, - 0x9e, 0x20, 0x0a, 0xc6, 0x2c, 0x62, 0xea, 0xf7, 0xc9, 0x9d, 0x08, 0xae, 0x38, 0xae, 0x64, 0x0c, - 0xf7, 0x1a, 0xaf, 0x6f, 0x8e, 0xf8, 0x88, 0x9b, 0xa6, 0xa7, 0x4f, 0x19, 0xaf, 0xf9, 0x0c, 0x15, - 0x7a, 0x44, 0x85, 0x78, 0x13, 0xad, 0x52, 0x88, 0x79, 0x54, 0xb3, 0x1b, 0xf6, 0x76, 0xc9, 0xcf, - 0x0a, 0xfc, 0x10, 0xa1, 0x20, 0x24, 0x71, 0x0c, 0xe3, 0x01, 0xa3, 0xb5, 0x3b, 0xa6, 0x55, 0xca, - 0x91, 0x13, 0xda, 0x9c, 0xd9, 0x68, 0xf5, 0x55, 0xc2, 0x15, 0xc1, 0x6f, 0x51, 0x25, 0x22, 0xd3, - 0xc1, 0x04, 0x44, 0x00, 0xb1, 0x1a, 0x48, 0x88, 0x69, 0xa6, 0xb4, 0xef, 0x5e, 0x5c, 0x6d, 0x59, - 0xdf, 0xaf, 0xb6, 0x1e, 0x8f, 0x98, 0x0a, 0x93, 0xa1, 0x1b, 0xf0, 0xc8, 0x0b, 0xb8, 0x8c, 0xb8, - 0xcc, 0x3f, 0x2d, 0x49, 0xcf, 0x3c, 0xf5, 0x71, 0x02, 0xd2, 0x3d, 0x89, 0x95, 0xbf, 0x1e, 0x91, - 0x69, 0x2f, 0x93, 0xe9, 0x43, 0x4c, 0x6f, 0x2a, 0x0b, 0x08, 0xd2, 0xec, 0x47, 0xfe, 0x47, 0xd9, - 0x87, 0x20, 0xc5, 0x8f, 0xd0, 0x3a, 0x4d, 0x04, 0x51, 0x8c, 0xc7, 0x83, 0x90, 0x27, 0x42, 0xd6, - 0x56, 0x1a, 0xf6, 0x76, 0xc1, 0x5f, 0x5b, 0xa0, 0xc7, 0x1a, 0x6c, 0xfe, 0xb4, 0x51, 0xe1, 0x68, - 0xcc, 0xcf, 0xf1, 0x11, 0x2a, 0xb2, 0xf8, 0xfd, 0x98, 0x9f, 0xdf, 0xd2, 0x59, 0x7e, 0x1b, 0x1f, - 0xa3, 0xbb, 0x3c, 0x51, 0x46, 0xe8, 0x76, 0x46, 0x16, 0xd7, 0x71, 0x1f, 0xad, 0x2d, 0x9e, 0x27, - 0x25, 0xe3, 0x04, 0x8c, 0x81, 0x7f, 0xd7, 0xbb, 0x9f, 0x8b, 0x9c, 0x6a, 0x8d, 0xe6, 0x17, 0x1b, - 0x95, 0x7c, 0xa2, 0xa0, 0xab, 0x53, 0x83, 0x77, 0x50, 0x61, 0x42, 0x54, 0x68, 0x2c, 0x97, 0x77, - 0xab, 0xee, 0xcd, 0x58, 0xb9, 0x3a, 0x3d, 0xbe, 0xe1, 0xe0, 0x16, 0x5a, 0xfd, 0xa0, 0xd3, 0x60, - 0x6c, 0x95, 0x77, 0x1f, 0xfc, 0x49, 0x36, 0x61, 0xf1, 0x33, 0x96, 0x96, 0x36, 0x43, 0x58, 0xf9, - 0x9b, 0xb4, 0x9e, 0xba, 0x6f, 0x38, 0xcd, 0x2e, 0xaa, 0xbe, 0x09, 0x99, 0x6e, 0x48, 0x05, 0x74, - 0x8f, 0x52, 0x01, 0x52, 0xf6, 0x08, 0x13, 0xb8, 0x8a, 0x8a, 0x3a, 0x6d, 0x20, 0xf2, 0xe4, 0xe6, - 0x15, 0xae, 0xa3, 0x7b, 0x02, 0x02, 0x60, 0x29, 0x88, 0x3c, 0xb8, 0xd7, 0xf5, 0xce, 0x53, 0xb4, - 0xd1, 0x23, 0xc1, 0x19, 0xa8, 0x43, 0x26, 0x20, 0xd0, 0x4f, 0x8d, 0x37, 0x50, 0xb9, 0xb7, 0x77, - 0xf0, 0xbc, 0xf3, 0x7a, 0xd0, 0xef, 0xbc, 0x3c, 0xac, 0x58, 0x4b, 0x80, 0xdf, 0x39, 0x38, 0xad, - 0xd8, 0xf5, 0xc2, 0xa7, 0xaf, 0x8e, 0xb5, 0xff, 0xe2, 0x62, 0xe6, 0xd8, 0x97, 0x33, 0xc7, 0xfe, - 0x31, 0x73, 0xec, 0xcf, 0x73, 0xc7, 0xba, 0x9c, 0x3b, 0xd6, 0xb7, 0xb9, 0x63, 0xbd, 0x6b, 0x2f, - 0x4d, 0xbb, 0x6f, 0xac, 0xb4, 0xba, 0x64, 0x28, 0xbd, 0x7c, 0x55, 0xd3, 0x27, 0x6d, 0x6f, 0xba, - 0xb4, 0xb0, 0x66, 0xfc, 0xc3, 0xa2, 0xd9, 0xc2, 0xf6, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, - 0x48, 0x7b, 0x62, 0xd1, 0x03, 0x00, 0x00, + // 520 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0xb5, 0xbf, 0x26, 0xf9, 0xc8, 0x84, 0xb6, 0xd1, 0xa8, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, + 0xa8, 0xaa, 0x14, 0x5b, 0xb4, 0x6c, 0x10, 0xab, 0xfe, 0xa4, 0x6a, 0x45, 0x40, 0xc1, 0x41, 0x05, + 0xb1, 0x89, 0x26, 0x9e, 0x4b, 0x3c, 0x6a, 0xec, 0x09, 0x33, 0x63, 0x37, 0xbc, 0x01, 0x4b, 0xc4, + 0x2b, 0xf0, 0x32, 0x5d, 0x76, 0x89, 0x58, 0x54, 0x28, 0x59, 0xf3, 0x0e, 0x68, 0xc6, 0x4e, 0x89, + 0x8a, 0x58, 0x50, 0x56, 0x9e, 0x7b, 0xee, 0x99, 0x23, 0x9f, 0x3b, 0xe7, 0xa2, 0xa6, 0x54, 0x82, + 0x51, 0xf0, 0x04, 0x51, 0x30, 0x66, 0x11, 0x53, 0xbf, 0x4e, 0xee, 0x44, 0x70, 0xc5, 0x71, 0x35, + 0x63, 0xb8, 0xd7, 0x78, 0x63, 0x63, 0xc4, 0x47, 0xdc, 0x34, 0x3d, 0x7d, 0xca, 0x78, 0xad, 0xa7, + 0xa8, 0xd0, 0x23, 0x2a, 0xc4, 0x1b, 0xa8, 0x48, 0x21, 0xe6, 0x51, 0xdd, 0x6e, 0xda, 0x5b, 0x65, + 0x3f, 0x2b, 0xf0, 0x7d, 0x84, 0x82, 0x90, 0xc4, 0x31, 0x8c, 0x07, 0x8c, 0xd6, 0xff, 0x33, 0xad, + 0x72, 0x8e, 0x9c, 0xd0, 0xd6, 0xcc, 0x46, 0xc5, 0x97, 0x09, 0x57, 0x04, 0xbf, 0x41, 0xd5, 0x88, + 0x4c, 0x07, 0x13, 0x10, 0x01, 0xc4, 0x6a, 0x20, 0x21, 0xa6, 0x99, 0xd2, 0xbe, 0x7b, 0x71, 0xb5, + 0x69, 0x7d, 0xbb, 0xda, 0x7c, 0x38, 0x62, 0x2a, 0x4c, 0x86, 0x6e, 0xc0, 0x23, 0x2f, 0xe0, 0x32, + 0xe2, 0x32, 0xff, 0xb4, 0x25, 0x3d, 0xf3, 0xd4, 0x87, 0x09, 0x48, 0xf7, 0x24, 0x56, 0xfe, 0x5a, + 0x44, 0xa6, 0xbd, 0x4c, 0xa6, 0x0f, 0x31, 0xbd, 0xa9, 0x2c, 0x20, 0x48, 0xb3, 0x1f, 0xf9, 0x17, + 0x65, 0x1f, 0x82, 0x14, 0x3f, 0x40, 0x6b, 0x34, 0x11, 0x44, 0x31, 0x1e, 0x0f, 0x42, 0x9e, 0x08, + 0x59, 0x5f, 0x69, 0xda, 0x5b, 0x05, 0x7f, 0x75, 0x81, 0x1e, 0x6b, 0xb0, 0xf5, 0xc3, 0x46, 0x85, + 0xa3, 0x31, 0x3f, 0xc7, 0x47, 0xa8, 0xc4, 0xe2, 0x77, 0x63, 0x7e, 0x7e, 0x4b, 0x67, 0xf9, 0x6d, + 0x7c, 0x8c, 0xfe, 0xe7, 0x89, 0x32, 0x42, 0xb7, 0x33, 0xb2, 0xb8, 0x8e, 0xfb, 0x68, 0x75, 0xf1, + 0x3c, 0x29, 0x19, 0x27, 0x60, 0x0c, 0xfc, 0xbd, 0xde, 0xdd, 0x5c, 0xe4, 0x54, 0x6b, 0xb4, 0x3e, + 0xdb, 0xa8, 0xec, 0x13, 0x05, 0x5d, 0x9d, 0x1a, 0xbc, 0x8d, 0x0a, 0x13, 0xa2, 0x42, 0x63, 0xb9, + 0xb2, 0x53, 0x73, 0x6f, 0xc6, 0xca, 0xd5, 0xe9, 0xf1, 0x0d, 0x07, 0xb7, 0x51, 0xf1, 0xbd, 0x4e, + 0x83, 0xb1, 0x55, 0xd9, 0xb9, 0xf7, 0x3b, 0xd9, 0x84, 0xc5, 0xcf, 0x58, 0x5a, 0xda, 0x0c, 0x61, + 0xe5, 0x4f, 0xd2, 0x7a, 0xea, 0xbe, 0xe1, 0xb4, 0xba, 0xa8, 0xf6, 0x3a, 0x64, 0xba, 0x21, 0x15, + 0xd0, 0x3d, 0x4a, 0x05, 0x48, 0xd9, 0x23, 0x4c, 0xe0, 0x1a, 0x2a, 0xe9, 0xb4, 0x81, 0xc8, 0x93, + 0x9b, 0x57, 0xb8, 0x81, 0xee, 0x08, 0x08, 0x80, 0xa5, 0x20, 0xf2, 0xe0, 0x5e, 0xd7, 0xdb, 0x4f, + 0xd0, 0x7a, 0x8f, 0x04, 0x67, 0xa0, 0x0e, 0x99, 0x80, 0x40, 0x3f, 0x35, 0x5e, 0x47, 0x95, 0xde, + 0xde, 0xc1, 0xb3, 0xce, 0xab, 0x41, 0xbf, 0xf3, 0xe2, 0xb0, 0x6a, 0x2d, 0x01, 0x7e, 0xe7, 0xe0, + 0xb4, 0x6a, 0x37, 0x0a, 0x1f, 0xbf, 0x38, 0xd6, 0xfe, 0xf3, 0x8b, 0x99, 0x63, 0x5f, 0xce, 0x1c, + 0xfb, 0xfb, 0xcc, 0xb1, 0x3f, 0xcd, 0x1d, 0xeb, 0x72, 0xee, 0x58, 0x5f, 0xe7, 0x8e, 0xf5, 0x76, + 0x77, 0x69, 0xda, 0x7d, 0x63, 0xa5, 0xdd, 0x25, 0x43, 0xe9, 0xe5, 0xab, 0x9a, 0x3e, 0x7a, 0xec, + 0x4d, 0x97, 0x16, 0xd6, 0x8c, 0x7f, 0x58, 0x32, 0x5b, 0xb8, 0xfb, 0x33, 0x00, 0x00, 0xff, 0xff, + 0x2b, 0x0e, 0xae, 0xb0, 0xd1, 0x03, 0x00, 0x00, } func (m *Path) Marshal() (dAtA []byte, err error) { diff --git a/x/records/client/cli/query.go b/x/records/client/cli/query.go index b9114d611e..cfd981264b 100644 --- a/x/records/client/cli/query.go +++ b/x/records/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/records/client/cli/query_deposit_record.go b/x/records/client/cli/query_deposit_record.go index 25ea372a48..213b39969a 100644 --- a/x/records/client/cli/query_deposit_record.go +++ b/x/records/client/cli/query_deposit_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func CmdListDepositRecord() *cobra.Command { diff --git a/x/records/client/cli/query_deposit_record_test.go b/x/records/client/cli/query_deposit_record_test.go index 17edd30b73..b9b6852d5c 100644 --- a/x/records/client/cli/query_deposit_record_test.go +++ b/x/records/client/cli/query_deposit_record_test.go @@ -11,10 +11,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/testutil/network" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records/client/cli" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records/client/cli" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func networkWithDepositRecordObjects(t *testing.T, n int) (*network.Network, []types.DepositRecord) { diff --git a/x/records/client/cli/query_epoch_unbonding_record.go b/x/records/client/cli/query_epoch_unbonding_record.go index b455e353c8..ce4a302c4c 100644 --- a/x/records/client/cli/query_epoch_unbonding_record.go +++ b/x/records/client/cli/query_epoch_unbonding_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func CmdListEpochUnbondingRecord() *cobra.Command { diff --git a/x/records/client/cli/query_lsm_deposits.go b/x/records/client/cli/query_lsm_deposits.go index 9fcd40cd6a..0ea292ec32 100644 --- a/x/records/client/cli/query_lsm_deposits.go +++ b/x/records/client/cli/query_lsm_deposits.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) const ( diff --git a/x/records/client/cli/query_params.go b/x/records/client/cli/query_params.go index f93a51f15b..5aa669219c 100644 --- a/x/records/client/cli/query_params.go +++ b/x/records/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record.go b/x/records/client/cli/query_user_redemption_record.go index 02f4129680..caa0171dba 100644 --- a/x/records/client/cli/query_user_redemption_record.go +++ b/x/records/client/cli/query_user_redemption_record.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func CmdListUserRedemptionRecord() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record_test.go b/x/records/client/cli/query_user_redemption_record_test.go index eb5f2167f5..bb96ae0600 100644 --- a/x/records/client/cli/query_user_redemption_record_test.go +++ b/x/records/client/cli/query_user_redemption_record_test.go @@ -14,10 +14,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/testutil/network" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records/client/cli" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records/client/cli" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func networkWithUserRedemptionRecordObjects(t *testing.T, n int) (*network.Network, []types.UserRedemptionRecord) { diff --git a/x/records/client/cli/tx.go b/x/records/client/cli/tx.go index a019910b38..57978a8e9e 100644 --- a/x/records/client/cli/tx.go +++ b/x/records/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/records/genesis.go b/x/records/genesis.go index eaa84469fc..ef664d274a 100644 --- a/x/records/genesis.go +++ b/x/records/genesis.go @@ -3,8 +3,8 @@ package records import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/records/genesis_test.go b/x/records/genesis_test.go index f3c8f509b5..5401d7a5ef 100644 --- a/x/records/genesis_test.go +++ b/x/records/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records" - "github.com/Stride-Labs/stride/v13/x/records/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestGenesis(t *testing.T) { diff --git a/x/records/handler.go b/x/records/handler.go index 8f8ab8ec3e..cbc3b1de8a 100644 --- a/x/records/handler.go +++ b/x/records/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // NewHandler ... diff --git a/x/records/keeper/callback_lsm_transfer.go b/x/records/keeper/callback_lsm_transfer.go index d74f5d5a7a..2b04b6b455 100644 --- a/x/records/keeper/callback_lsm_transfer.go +++ b/x/records/keeper/callback_lsm_transfer.go @@ -1,9 +1,9 @@ package keeper import ( - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_lsm_transfer_test.go b/x/records/keeper/callback_lsm_transfer_test.go index 5172acd84f..fa4f4090c2 100644 --- a/x/records/keeper/callback_lsm_transfer_test.go +++ b/x/records/keeper/callback_lsm_transfer_test.go @@ -9,8 +9,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) var ( diff --git a/x/records/keeper/callback_native_transfer.go b/x/records/keeper/callback_native_transfer.go index dd11fdb68c..7bba9f7242 100644 --- a/x/records/keeper/callback_native_transfer.go +++ b/x/records/keeper/callback_native_transfer.go @@ -5,8 +5,8 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_native_transfer_test.go b/x/records/keeper/callback_native_transfer_test.go index 22d70056e5..1e85e4cfe4 100644 --- a/x/records/keeper/callback_native_transfer_test.go +++ b/x/records/keeper/callback_native_transfer_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" ) const chainId = "GAIA" diff --git a/x/records/keeper/callbacks.go b/x/records/keeper/callbacks.go index 8802672a1b..7a76adb15b 100644 --- a/x/records/keeper/callbacks.go +++ b/x/records/keeper/callbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) const IBCCallbacksID_NativeTransfer = "transfer" diff --git a/x/records/keeper/deposit_record.go b/x/records/keeper/deposit_record.go index dea497d711..a03bceebc1 100644 --- a/x/records/keeper/deposit_record.go +++ b/x/records/keeper/deposit_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // GetDepositRecordCount get the total number of depositRecord diff --git a/x/records/keeper/epoch_unbonding_record.go b/x/records/keeper/epoch_unbonding_record.go index d3eb4f851e..3c99c53030 100644 --- a/x/records/keeper/epoch_unbonding_record.go +++ b/x/records/keeper/epoch_unbonding_record.go @@ -9,9 +9,9 @@ import ( errorsmod "cosmossdk.io/errors" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // SetEpochUnbondingRecord set a specific epochUnbondingRecord in the store diff --git a/x/records/keeper/epoch_unbonding_record_test.go b/x/records/keeper/epoch_unbonding_record_test.go index a7cd34dd59..3a05e8fc0f 100644 --- a/x/records/keeper/epoch_unbonding_record_test.go +++ b/x/records/keeper/epoch_unbonding_record_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func createNEpochUnbondingRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) ([]types.EpochUnbondingRecord, map[string]types.HostZoneUnbonding) { diff --git a/x/records/keeper/grpc_query.go b/x/records/keeper/grpc_query.go index b856da035a..f88e2ac293 100644 --- a/x/records/keeper/grpc_query.go +++ b/x/records/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/records/keeper/grpc_query_deposit_record.go b/x/records/keeper/grpc_query_deposit_record.go index 395237ee11..d263cfe811 100644 --- a/x/records/keeper/grpc_query_deposit_record.go +++ b/x/records/keeper/grpc_query_deposit_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) DepositRecordAll(c context.Context, req *types.QueryAllDepositRecordRequest) (*types.QueryAllDepositRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_deposit_record_test.go b/x/records/keeper/grpc_query_deposit_record_test.go index 22e48ead00..2bada8e88f 100644 --- a/x/records/keeper/grpc_query_deposit_record_test.go +++ b/x/records/keeper/grpc_query_deposit_record_test.go @@ -10,13 +10,13 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func createNDepositRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.DepositRecord { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record.go b/x/records/keeper/grpc_query_epoch_unbonding_record.go index e7f8444ab1..5dac07f0d5 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) EpochUnbondingRecordAll(c context.Context, req *types.QueryAllEpochUnbondingRecordRequest) (*types.QueryAllEpochUnbondingRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go index 7962664560..2cfb912215 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestEpochUnbondingRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/grpc_query_lsm_deposits.go b/x/records/keeper/grpc_query_lsm_deposits.go index f803e0aa4a..91814b7707 100644 --- a/x/records/keeper/grpc_query_lsm_deposits.go +++ b/x/records/keeper/grpc_query_lsm_deposits.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) LSMDeposit(c context.Context, req *types.QueryLSMDepositRequest) (*types.QueryLSMDepositResponse, error) { diff --git a/x/records/keeper/grpc_query_lsm_deposits_test.go b/x/records/keeper/grpc_query_lsm_deposits_test.go index 6ea01fb1d9..2556d8ed91 100644 --- a/x/records/keeper/grpc_query_lsm_deposits_test.go +++ b/x/records/keeper/grpc_query_lsm_deposits_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (s *KeeperTestSuite) TestLSMDeposit() { diff --git a/x/records/keeper/grpc_query_params.go b/x/records/keeper/grpc_query_params.go index 6d70488319..679c60d2e2 100644 --- a/x/records/keeper/grpc_query_params.go +++ b/x/records/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/records/keeper/grpc_query_params_test.go b/x/records/keeper/grpc_query_params_test.go index 83bb0b37ee..9ee2118cd6 100644 --- a/x/records/keeper/grpc_query_params_test.go +++ b/x/records/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/records/keeper/grpc_query_user_redemption_record.go b/x/records/keeper/grpc_query_user_redemption_record.go index 1d6efb49be..60f892dde0 100644 --- a/x/records/keeper/grpc_query_user_redemption_record.go +++ b/x/records/keeper/grpc_query_user_redemption_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) UserRedemptionRecordAll(c context.Context, req *types.QueryAllUserRedemptionRecordRequest) (*types.QueryAllUserRedemptionRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_for_user.go b/x/records/keeper/grpc_query_user_redemption_record_for_user.go index 48acee38cb..9955516f6b 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_for_user.go +++ b/x/records/keeper/grpc_query_user_redemption_record_for_user.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) UserRedemptionRecordForUser(c context.Context, req *types.QueryAllUserRedemptionRecordForUserRequest) (*types.QueryAllUserRedemptionRecordForUserResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_test.go b/x/records/keeper/grpc_query_user_redemption_record_test.go index 40470f2749..45d6d7d814 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_test.go +++ b/x/records/keeper/grpc_query_user_redemption_record_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestUserRedemptionRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/ibc.go b/x/records/keeper/ibc.go index 13d8135977..62899910c4 100644 --- a/x/records/keeper/ibc.go +++ b/x/records/keeper/ibc.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) // OnAcknowledgementPacket unmarshals the acknowledgement object to determine if the ack was successful and diff --git a/x/records/keeper/keeper.go b/x/records/keeper/keeper.go index 9fb615c3f5..37991924b5 100644 --- a/x/records/keeper/keeper.go +++ b/x/records/keeper/keeper.go @@ -11,9 +11,9 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" + icacallbackskeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) type ( diff --git a/x/records/keeper/keeper_test.go b/x/records/keeper/keeper_test.go index 2926b06055..a1e853ab0b 100644 --- a/x/records/keeper/keeper_test.go +++ b/x/records/keeper/keeper_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" + "github.com/Stride-Labs/stride/v14/app/apptesting" ) const ( diff --git a/x/records/keeper/lsm_token_deposit.go b/x/records/keeper/lsm_token_deposit.go index d1da167400..2a13ceea21 100644 --- a/x/records/keeper/lsm_token_deposit.go +++ b/x/records/keeper/lsm_token_deposit.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (k Keeper) SetLSMTokenDeposit(ctx sdk.Context, deposit types.LSMTokenDeposit) { diff --git a/x/records/keeper/lsm_token_deposit_test.go b/x/records/keeper/lsm_token_deposit_test.go index 7ce68513fe..505440e345 100644 --- a/x/records/keeper/lsm_token_deposit_test.go +++ b/x/records/keeper/lsm_token_deposit_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func (s *KeeperTestSuite) createNLSMTokenDeposit(n int) []types.LSMTokenDeposit { diff --git a/x/records/keeper/params.go b/x/records/keeper/params.go index 7b1db292f1..6cedd125f6 100644 --- a/x/records/keeper/params.go +++ b/x/records/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // GetParams get all parameters as types.Params diff --git a/x/records/keeper/params_test.go b/x/records/keeper/params_test.go index a616c05f2f..36f78f59bc 100644 --- a/x/records/keeper/params_test.go +++ b/x/records/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestGetParams(t *testing.T) { diff --git a/x/records/keeper/transfer.go b/x/records/keeper/transfer.go index 30cfb15fb2..93ce51ca37 100644 --- a/x/records/keeper/transfer.go +++ b/x/records/keeper/transfer.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) var ( diff --git a/x/records/keeper/transfer_test.go b/x/records/keeper/transfer_test.go index 4fc0a1e061..ef586a7fec 100644 --- a/x/records/keeper/transfer_test.go +++ b/x/records/keeper/transfer_test.go @@ -9,8 +9,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" ) type TransferTestCase struct { diff --git a/x/records/keeper/user_redemption_record.go b/x/records/keeper/user_redemption_record.go index 7ed5b89c41..0f914db182 100644 --- a/x/records/keeper/user_redemption_record.go +++ b/x/records/keeper/user_redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // SetUserRedemptionRecord set a specific userRedemptionRecord in the store diff --git a/x/records/keeper/user_redemption_record_test.go b/x/records/keeper/user_redemption_record_test.go index a426678c69..9666f17ad7 100644 --- a/x/records/keeper/user_redemption_record_test.go +++ b/x/records/keeper/user_redemption_record_test.go @@ -9,10 +9,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func createNUserRedemptionRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.UserRedemptionRecord { diff --git a/x/records/migrations/v2/convert.go b/x/records/migrations/v2/convert.go index b7439ef546..4c4437c325 100644 --- a/x/records/migrations/v2/convert.go +++ b/x/records/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldrecordstypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" ) func convertToNewDepositRecord(oldDepositRecord oldrecordstypes.DepositRecord) recordstypes.DepositRecord { diff --git a/x/records/migrations/v2/convert_test.go b/x/records/migrations/v2/convert_test.go index 75d916fca0..30bb92ad4a 100644 --- a/x/records/migrations/v2/convert_test.go +++ b/x/records/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - oldrecordstypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestConvertDepositRecord(t *testing.T) { diff --git a/x/records/migrations/v2/migrations.go b/x/records/migrations/v2/migrations.go index 4eeae76865..03ae11b012 100644 --- a/x/records/migrations/v2/migrations.go +++ b/x/records/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldrecordtypes "github.com/Stride-Labs/stride/v13/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + oldrecordtypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" ) func migrateDepositRecord(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/records/module.go b/x/records/module.go index f72d677450..960dfe67cf 100644 --- a/x/records/module.go +++ b/x/records/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/records/client/cli" - "github.com/Stride-Labs/stride/v13/x/records/keeper" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/client/cli" + "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/types" ) var ( diff --git a/x/records/module_ibc.go b/x/records/module_ibc.go index 2971633d7c..9cb3ddf58d 100644 --- a/x/records/module_ibc.go +++ b/x/records/module_ibc.go @@ -12,7 +12,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v13/x/records/keeper" + "github.com/Stride-Labs/stride/v14/x/records/keeper" ) // IBC MODULE IMPLEMENTATION diff --git a/x/records/module_simulation.go b/x/records/module_simulation.go index d34c8a4111..dfdc4a3987 100644 --- a/x/records/module_simulation.go +++ b/x/records/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v13/testutil/sample" - recordssimulation "github.com/Stride-Labs/stride/v13/x/records/simulation" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/testutil/sample" + recordssimulation "github.com/Stride-Labs/stride/v14/x/records/simulation" + "github.com/Stride-Labs/stride/v14/x/records/types" ) // avoid unused import issue diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index d9848bf67c..d1c0f80479 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xc3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0x69, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0x5f, 0x96, 0x19, 0x1a, 0xeb, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, - 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x5a, 0xaa, 0xa4, 0x3a, 0x01, 0x00, 0x00, + 0x5f, 0x96, 0x19, 0x9a, 0xe8, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, + 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa6, 0xfa, 0x6a, 0x3a, 0x01, 0x00, 0x00, } func (m *TransferCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index 01b9cb7c66..6a80c1ea3b 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -134,30 +134,30 @@ var fileDescriptor_98cfd0253c8b6797 = []byte{ // 418 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x8e, 0x93, 0x40, 0x1c, 0xc7, 0xc1, 0xc5, 0xae, 0x3b, 0x6b, 0x4c, 0x64, 0x37, 0x15, 0xdb, 0x4a, 0x89, 0xf1, 0xc0, - 0x45, 0xb0, 0xad, 0x77, 0x93, 0xaa, 0x31, 0xc6, 0x9a, 0x18, 0xb0, 0x97, 0x5e, 0x08, 0x30, 0x13, + 0x45, 0xb0, 0xb5, 0x77, 0x93, 0xaa, 0x31, 0xc6, 0x9a, 0x18, 0xb0, 0x97, 0x5e, 0x08, 0x30, 0x13, 0x3a, 0xb1, 0x30, 0x64, 0x66, 0x30, 0xfa, 0x16, 0x3e, 0x56, 0x8f, 0xbd, 0xe9, 0xc9, 0x98, 0xf6, 0x45, 0x0c, 0x33, 0xd3, 0xa6, 0x10, 0xf6, 0xc4, 0xf0, 0xfb, 0x7d, 0xff, 0x7c, 0x26, 0x19, 0x30, 0x62, 0x9c, 0x62, 0x88, 0x7c, 0x8a, 0x52, 0x42, 0x21, 0xf3, 0x33, 0x54, 0x20, 0x86, 0x99, 0x57, 0x52, 0xc2, 0x89, 0xf9, 0x48, 0x6e, 0x3d, 0xb5, 0x1d, 0x0c, 0x5b, 0xea, 0x32, 0xa6, 0x71, 0xae, 0xc4, 0x83, 0x76, 0x94, 0xfa, 0xaa, 0xed, 0x6d, 0x46, 0x32, 0x22, 0x8e, 0x7e, 0x7d, 0x92, 0xd3, - 0xe7, 0xbf, 0x0d, 0xf0, 0xf0, 0x83, 0xac, 0x0c, 0x79, 0xcc, 0x91, 0xf9, 0x1a, 0xf4, 0x64, 0xa8, - 0xa5, 0x3b, 0xba, 0x7b, 0x3d, 0xed, 0x7b, 0x4d, 0x04, 0xef, 0x8b, 0xd8, 0xce, 0x8d, 0xed, 0xdf, - 0xb1, 0x16, 0x28, 0xad, 0xf9, 0x04, 0x5c, 0x96, 0x84, 0xf2, 0x08, 0x43, 0xeb, 0x9e, 0xa3, 0xbb, - 0x57, 0x41, 0xaf, 0xfe, 0xfd, 0x08, 0x4d, 0x0c, 0x86, 0x15, 0x43, 0x34, 0xa2, 0x08, 0xa2, 0xbc, - 0xe4, 0x98, 0x14, 0x91, 0x0c, 0x8a, 0x36, 0x98, 0x71, 0xeb, 0xc2, 0xb9, 0x70, 0xaf, 0xa7, 0x2f, - 0xda, 0x1d, 0x4b, 0x86, 0x68, 0x70, 0x72, 0x04, 0x62, 0xaa, 0x1a, 0xad, 0xaa, 0x63, 0xb7, 0xc0, - 0x8c, 0x9b, 0x6f, 0xc0, 0xe8, 0x8e, 0xaa, 0x94, 0x54, 0x05, 0xb7, 0x0c, 0x47, 0x77, 0x8d, 0xe0, - 0x69, 0x97, 0xff, 0x6d, 0x2d, 0xa8, 0x59, 0x51, 0x49, 0xd2, 0x75, 0x54, 0x15, 0x09, 0x29, 0x20, - 0x2e, 0xb2, 0x06, 0xeb, 0xfd, 0x6e, 0xd6, 0xf7, 0xb5, 0x65, 0x79, 0x74, 0x34, 0x59, 0x51, 0xc7, - 0x4e, 0xb0, 0x86, 0xe0, 0x06, 0xa2, 0x92, 0x30, 0xcc, 0x1b, 0x15, 0x97, 0xa2, 0xe2, 0x59, 0xbb, - 0xe2, 0x9d, 0x94, 0x36, 0xb2, 0x1f, 0xc3, 0xf3, 0xa1, 0x08, 0x7d, 0x05, 0x6e, 0x5b, 0xa1, 0xf2, - 0xe2, 0x0f, 0xc4, 0xc5, 0xcd, 0x86, 0x41, 0xde, 0x78, 0x05, 0xfa, 0x1b, 0x96, 0x47, 0x9c, 0x7c, - 0x43, 0x45, 0x74, 0xf4, 0x0a, 0x92, 0x2b, 0x41, 0x32, 0x6e, 0x93, 0x2c, 0xc2, 0xcf, 0x5f, 0x6b, - 0xb1, 0x22, 0x52, 0x2c, 0x37, 0x1b, 0x96, 0x9f, 0x8f, 0x6b, 0x9a, 0xf9, 0xa7, 0xed, 0xde, 0xd6, - 0x77, 0x7b, 0x5b, 0xff, 0xb7, 0xb7, 0xf5, 0x5f, 0x07, 0x5b, 0xdb, 0x1d, 0x6c, 0xed, 0xcf, 0xc1, - 0xd6, 0x56, 0x93, 0x0c, 0xf3, 0x75, 0x95, 0x78, 0x29, 0xc9, 0xfd, 0x50, 0xe4, 0xbf, 0x5c, 0xc4, - 0x09, 0xf3, 0xd5, 0xf3, 0xfd, 0x3e, 0x99, 0xf9, 0x3f, 0x4e, 0x8f, 0x98, 0xff, 0x2c, 0x11, 0x4b, - 0x7a, 0xe2, 0xb5, 0xce, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0xec, 0xd2, 0x14, 0x77, 0x2e, 0x03, + 0xe7, 0xbf, 0x0d, 0xf0, 0xf0, 0x83, 0xac, 0x0c, 0x79, 0xcc, 0x91, 0x39, 0x03, 0x3d, 0x19, 0x6a, + 0xe9, 0x8e, 0xee, 0x5e, 0x4f, 0xfb, 0x5e, 0x13, 0xc1, 0xfb, 0x22, 0xb6, 0x73, 0x63, 0xfb, 0x77, + 0xac, 0x05, 0x4a, 0x6b, 0x3e, 0x01, 0x97, 0x25, 0xa1, 0x3c, 0xc2, 0xd0, 0xba, 0xe7, 0xe8, 0xee, + 0x55, 0xd0, 0xab, 0x7f, 0x3f, 0x42, 0x13, 0x83, 0x61, 0xc5, 0x10, 0x8d, 0x28, 0x82, 0x28, 0x2f, + 0x39, 0x26, 0x45, 0x24, 0x83, 0xa2, 0x0d, 0x66, 0xdc, 0xba, 0x70, 0x2e, 0xdc, 0xeb, 0xe9, 0x8b, + 0x76, 0xc7, 0x92, 0x21, 0x1a, 0x9c, 0x1c, 0x81, 0x98, 0xaa, 0x46, 0xab, 0xea, 0xd8, 0x2d, 0x30, + 0xe3, 0xe6, 0x1b, 0x30, 0xba, 0xa3, 0x2a, 0x25, 0x55, 0xc1, 0x2d, 0xc3, 0xd1, 0x5d, 0x23, 0x78, + 0xda, 0xe5, 0x7f, 0x5b, 0x0b, 0x6a, 0x56, 0x54, 0x92, 0x74, 0x1d, 0x55, 0x45, 0x42, 0x0a, 0x88, + 0x8b, 0xac, 0xc1, 0x7a, 0xbf, 0x9b, 0xf5, 0x7d, 0x6d, 0x59, 0x1e, 0x1d, 0x4d, 0x56, 0xd4, 0xb1, + 0x13, 0xac, 0x21, 0xb8, 0x81, 0xa8, 0x24, 0x0c, 0xf3, 0x46, 0xc5, 0xa5, 0xa8, 0x78, 0xd6, 0xae, + 0x78, 0x27, 0xa5, 0x8d, 0xec, 0xc7, 0xf0, 0x7c, 0x28, 0x42, 0x5f, 0x81, 0xdb, 0x56, 0xa8, 0xbc, + 0xf8, 0x03, 0x71, 0x71, 0xb3, 0x61, 0x90, 0x37, 0x5e, 0x81, 0xfe, 0x86, 0xe5, 0x11, 0x27, 0xdf, + 0x50, 0x11, 0x1d, 0xbd, 0x82, 0xe4, 0x4a, 0x90, 0x8c, 0xdb, 0x24, 0x8b, 0xf0, 0xf3, 0xd7, 0x5a, + 0xac, 0x88, 0x14, 0xcb, 0xcd, 0x86, 0xe5, 0xe7, 0xe3, 0x9a, 0x66, 0xfe, 0x69, 0xbb, 0xb7, 0xf5, + 0xdd, 0xde, 0xd6, 0xff, 0xed, 0x6d, 0xfd, 0xd7, 0xc1, 0xd6, 0x76, 0x07, 0x5b, 0xfb, 0x73, 0xb0, + 0xb5, 0xd5, 0x24, 0xc3, 0x7c, 0x5d, 0x25, 0x5e, 0x4a, 0x72, 0x3f, 0x14, 0xf9, 0x2f, 0x17, 0x71, + 0xc2, 0x7c, 0xf5, 0x7c, 0xbf, 0x4f, 0x66, 0xfe, 0x8f, 0xd3, 0x23, 0xe6, 0x3f, 0x4b, 0xc4, 0x92, + 0x9e, 0x78, 0xad, 0xaf, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x44, 0x2e, 0x44, 0xb9, 0x2e, 0x03, 0x00, 0x00, } diff --git a/x/records/types/genesis_test.go b/x/records/types/genesis_test.go index 4455efd114..e94e44ce58 100644 --- a/x/records/types/genesis_test.go +++ b/x/records/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/records/types" + "github.com/Stride-Labs/stride/v14/x/records/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/records/types/params.pb.go b/x/records/types/params.pb.go index 9410ce59a6..11511c9dd7 100644 --- a/x/records/types/params.pb.go +++ b/x/records/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_5d92633ea4bee482 = []byte{ 0xb8, 0xd8, 0x02, 0xc0, 0xf2, 0x4e, 0xde, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x98, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0xd6, - 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x58, 0xbf, 0x02, 0x6e, 0x5b, + 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0x6e, 0x5b, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x36, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xab, 0xe6, 0x6f, 0xd2, 0x8c, 0x00, 0x00, 0x00, + 0x03, 0x1a, 0x3f, 0x1c, 0x8c, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index 77bca53694..83b4a70ad3 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -1120,80 +1120,80 @@ func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25 var fileDescriptor_25e7cc311be81f7b = []byte{ // 1191 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xc7, 0xb3, 0x79, 0x6b, 0xf3, 0xa4, 0x0d, 0x61, 0x6a, 0xa5, 0xc1, 0x4d, 0x9d, 0x74, 0x53, - 0xf5, 0x25, 0x49, 0x3d, 0x38, 0x09, 0xaa, 0x68, 0x85, 0x2a, 0x37, 0x90, 0x26, 0x34, 0xad, 0x8a, - 0x43, 0x2f, 0x91, 0x60, 0xbb, 0xf6, 0x4e, 0x9c, 0x55, 0xec, 0x1d, 0x77, 0x67, 0x1d, 0x61, 0x8c, - 0x2f, 0x9c, 0x38, 0x22, 0xf5, 0x1b, 0x80, 0xf8, 0x06, 0x7c, 0x00, 0xc4, 0x29, 0x07, 0x0e, 0xad, - 0xb8, 0xf4, 0x84, 0x50, 0xc2, 0x47, 0xe0, 0x8c, 0x90, 0x67, 0x66, 0x6d, 0xaf, 0x3d, 0xbb, 0xb6, - 0x23, 0x73, 0xe0, 0x14, 0xef, 0xcc, 0x33, 0xcf, 0xf3, 0xfb, 0x3f, 0xf3, 0xcc, 0x5b, 0x20, 0xce, - 0x3c, 0xd7, 0xb6, 0x08, 0x76, 0x49, 0x8e, 0xba, 0x16, 0xc3, 0x2f, 0xcb, 0xc4, 0xad, 0x24, 0x4b, - 0x2e, 0xf5, 0x28, 0x9a, 0x12, 0x7d, 0x49, 0xd9, 0x17, 0x9f, 0x6b, 0xb3, 0x95, 0x7f, 0x85, 0x75, - 0xfc, 0x4a, 0x5b, 0x6f, 0xc9, 0x74, 0xcd, 0xa2, 0xdf, 0x19, 0xcb, 0xd3, 0x3c, 0xe5, 0x3f, 0x71, - 0xfd, 0x97, 0x6c, 0x9d, 0xcb, 0x53, 0x9a, 0x2f, 0x10, 0x6c, 0x96, 0x6c, 0x6c, 0x3a, 0x0e, 0xf5, - 0x4c, 0xcf, 0xa6, 0x8e, 0x3f, 0x66, 0x29, 0x47, 0x59, 0x91, 0x32, 0x9c, 0x35, 0x19, 0x11, 0x5c, - 0xf8, 0x28, 0x95, 0x25, 0x9e, 0x99, 0xc2, 0x25, 0x33, 0x6f, 0x3b, 0xdc, 0x58, 0xd8, 0xea, 0x31, - 0x40, 0x9f, 0xd5, 0x2d, 0x9e, 0xf1, 0xa0, 0x19, 0xf2, 0xb2, 0x4c, 0x98, 0xa7, 0x3f, 0x86, 0x4b, - 0x81, 0x56, 0x56, 0xa2, 0x0e, 0x23, 0x68, 0x1d, 0xc6, 0x05, 0xdc, 0xac, 0xb6, 0xa0, 0xdd, 0x9a, - 0x5c, 0x9d, 0x49, 0x06, 0x85, 0x26, 0x85, 0xfd, 0xc3, 0xd1, 0xe3, 0x3f, 0xe6, 0x87, 0x32, 0xd2, - 0x56, 0x4f, 0xc2, 0x1c, 0x77, 0xf6, 0x88, 0x78, 0x1f, 0x93, 0x12, 0x65, 0xb6, 0x97, 0xe1, 0xe6, - 0x32, 0x18, 0x9a, 0x82, 0x61, 0xdb, 0xe2, 0x1e, 0x47, 0x33, 0xc3, 0xb6, 0xa5, 0x1f, 0xc2, 0xd5, - 0x10, 0x7b, 0x89, 0xf1, 0x29, 0x4c, 0x59, 0xa2, 0xc3, 0x10, 0x81, 0x25, 0xce, 0xd5, 0x76, 0x9c, - 0xc0, 0x70, 0x49, 0x75, 0xd1, 0x6a, 0x6d, 0xd4, 0xf7, 0x25, 0x5c, 0xba, 0x50, 0x50, 0xc2, 0x6d, - 0x02, 0x34, 0x73, 0x26, 0xe3, 0xdc, 0x48, 0x8a, 0x04, 0x27, 0xeb, 0x09, 0x4e, 0x8a, 0x89, 0x97, - 0x09, 0x4e, 0x3e, 0x33, 0xf3, 0x44, 0x8e, 0xcd, 0xb4, 0x8c, 0xd4, 0x7f, 0xd6, 0xa4, 0xaa, 0xce, - 0x40, 0x11, 0xaa, 0x46, 0xce, 0xa6, 0x0a, 0x3d, 0x0a, 0x50, 0x0f, 0x73, 0xea, 0x9b, 0x5d, 0xa9, - 0x05, 0x48, 0x00, 0x7b, 0x03, 0xe6, 0x39, 0x75, 0x30, 0x66, 0x65, 0x8b, 0x32, 0xcf, 0xcf, 0xd0, - 0x02, 0x5c, 0x38, 0xa0, 0xcc, 0x33, 0xbe, 0xa6, 0x0e, 0x31, 0xe4, 0x44, 0x4e, 0x64, 0xa0, 0xde, - 0xb6, 0x47, 0x1d, 0xb2, 0x6d, 0xe9, 0x0e, 0x2c, 0x84, 0x3b, 0x19, 0xbc, 0x7a, 0xfd, 0x03, 0x58, - 0xf4, 0x0b, 0xe8, 0x39, 0x23, 0x6e, 0x86, 0x58, 0xa4, 0x58, 0xaa, 0xcb, 0x09, 0xab, 0xbb, 0x09, - 0x5e, 0x77, 0xdf, 0x69, 0x70, 0x3d, 0x7a, 0x9c, 0x64, 0x7d, 0x01, 0x33, 0x65, 0x46, 0x5c, 0xc3, - 0x6d, 0x18, 0x04, 0xeb, 0xf0, 0x7a, 0x3b, 0xb3, 0xca, 0x9b, 0x44, 0x8f, 0x95, 0x15, 0x7d, 0x7a, - 0x51, 0x2a, 0x48, 0x17, 0x0a, 0x51, 0x0a, 0x06, 0x55, 0x9c, 0x6f, 0x7c, 0xe5, 0xa1, 0xf1, 0x7a, - 0x50, 0x3e, 0x32, 0x08, 0xe5, 0x83, 0xab, 0xdc, 0x37, 0x1a, 0x2c, 0x45, 0x69, 0xda, 0xa4, 0xae, - 0x68, 0x16, 0xa9, 0x7c, 0x0f, 0xce, 0xe7, 0x0e, 0x4c, 0xdb, 0x69, 0x56, 0xf0, 0x39, 0xfe, 0xbd, - 0x6d, 0xa1, 0x69, 0x18, 0xb1, 0xcc, 0x0a, 0x67, 0x19, 0xcd, 0xd4, 0x7f, 0xa2, 0x59, 0x38, 0x67, - 0x5a, 0x96, 0x4b, 0x18, 0x9b, 0x1d, 0x11, 0xb6, 0xf2, 0x13, 0xc5, 0x60, 0xac, 0x60, 0x17, 0x6d, - 0x6f, 0x76, 0x94, 0x5b, 0x8b, 0x8f, 0xb6, 0x79, 0x1a, 0x3b, 0xf3, 0x3c, 0xbd, 0xd5, 0x60, 0xb9, - 0x27, 0x4d, 0xff, 0xbf, 0xe9, 0xda, 0x6a, 0xae, 0xd9, 0x4f, 0x4a, 0x34, 0x77, 0xf0, 0xdc, 0xc9, - 0x52, 0xc7, 0xb2, 0x9d, 0x7c, 0xb0, 0xe2, 0xaf, 0xc1, 0x05, 0x52, 0xef, 0x36, 0x9c, 0x72, 0x31, - 0x4b, 0x5c, 0x79, 0x6a, 0x4c, 0xf2, 0xb6, 0xa7, 0xbc, 0x29, 0xb0, 0x8c, 0xd5, 0xae, 0x9a, 0xd9, - 0x11, 0xbe, 0xca, 0xbe, 0x41, 0x97, 0x65, 0xac, 0xf2, 0xe6, 0x67, 0x87, 0x28, 0xfa, 0x5a, 0x97, - 0x71, 0x94, 0xa8, 0xff, 0x62, 0x19, 0x9f, 0x59, 0xf9, 0xc8, 0x20, 0x94, 0x0f, 0xae, 0x2e, 0xb6, - 0x61, 0x86, 0x4b, 0xda, 0xd9, 0x7d, 0xd2, 0xd8, 0xf9, 0xbb, 0xae, 0xd8, 0x18, 0x8c, 0x59, 0xc4, - 0xa1, 0x45, 0x1e, 0x78, 0x22, 0x23, 0x3e, 0xf4, 0x3d, 0xb8, 0xdc, 0xe1, 0x4a, 0x26, 0xe4, 0x01, - 0x9c, 0x93, 0x47, 0x88, 0x4c, 0xff, 0x7c, 0x7b, 0x06, 0x76, 0x76, 0x9f, 0x7c, 0x4e, 0x0f, 0x89, - 0x23, 0x47, 0x4a, 0xf1, 0xfe, 0x28, 0xbd, 0xd2, 0xe1, 0x9b, 0xf5, 0xc0, 0xb9, 0x0c, 0xef, 0x1e, - 0x99, 0x05, 0xdb, 0x32, 0x3d, 0xea, 0x1a, 0xfe, 0x8e, 0x22, 0x98, 0xa7, 0x1b, 0x1d, 0x69, 0xb9, - 0xb5, 0xcc, 0xc0, 0x38, 0xf3, 0x4c, 0xaf, 0xec, 0xef, 0x39, 0xf2, 0x4b, 0xff, 0x02, 0x66, 0x3b, - 0x43, 0x4b, 0x5d, 0x69, 0x38, 0x2f, 0x09, 0x99, 0x9c, 0xda, 0x1e, 0x85, 0x35, 0x86, 0xad, 0xfe, - 0xfd, 0x0e, 0x8c, 0x71, 0xff, 0xe8, 0x1b, 0x18, 0x17, 0xf7, 0x3b, 0xa4, 0xb7, 0x3b, 0xe9, 0xbc, - 0x42, 0xc6, 0x17, 0x23, 0x6d, 0x04, 0x9f, 0x7e, 0xfb, 0xdb, 0xdf, 0xff, 0x7a, 0x35, 0xbc, 0x88, - 0xae, 0xe1, 0x5d, 0x6e, 0xbc, 0x63, 0x66, 0x19, 0x56, 0x5e, 0x87, 0xd1, 0xaf, 0x1a, 0xc4, 0x54, - 0xdb, 0x13, 0x5a, 0x53, 0x06, 0x8a, 0x3e, 0xfb, 0xe3, 0xeb, 0xfd, 0x0d, 0x92, 0xb8, 0x0f, 0x38, - 0xee, 0x87, 0xe8, 0xae, 0xc4, 0xbd, 0xa3, 0xe2, 0x55, 0xef, 0xb8, 0xb8, 0x6a, 0x5b, 0x35, 0xf4, - 0x8b, 0x06, 0x97, 0x55, 0x11, 0xd2, 0x85, 0x42, 0x88, 0x8e, 0xe8, 0x1b, 0x40, 0x88, 0x8e, 0x2e, - 0xc7, 0xb8, 0x7e, 0x8f, 0xeb, 0x58, 0x47, 0xab, 0xfd, 0xeb, 0x40, 0xff, 0x68, 0x70, 0x25, 0xe2, - 0xec, 0x41, 0xf7, 0xfa, 0x21, 0x0a, 0x1e, 0xc2, 0xf1, 0xfb, 0x67, 0x1a, 0x2b, 0x45, 0xed, 0x73, - 0x51, 0x2f, 0xd0, 0x97, 0xfd, 0x8b, 0x32, 0xf6, 0xa9, 0x6b, 0xd4, 0xbb, 0x70, 0xd5, 0x5f, 0xaa, - 0x35, 0x5c, 0xb5, 0xcc, 0x4a, 0x0d, 0x57, 0xe5, 0xb2, 0xac, 0xe1, 0x2a, 0x3f, 0xcb, 0x6b, 0xe8, - 0x37, 0x0d, 0x62, 0xaa, 0xfd, 0x30, 0xbc, 0x10, 0x23, 0xf6, 0xfe, 0xf0, 0x42, 0x8c, 0xda, 0xc0, - 0xf5, 0x6d, 0xae, 0x75, 0x03, 0xa5, 0xa3, 0xb4, 0xaa, 0xb7, 0x78, 0x5c, 0x6d, 0x3d, 0x40, 0x45, - 0x49, 0xaa, 0x62, 0x45, 0x96, 0x64, 0xff, 0x8a, 0xba, 0x1c, 0x49, 0xbd, 0x95, 0xa4, 0x5a, 0x11, - 0xfa, 0x49, 0x83, 0x8b, 0x81, 0x67, 0x01, 0x5a, 0x09, 0xcb, 0xaa, 0xea, 0x8d, 0x17, 0xbf, 0xd3, - 0xa3, 0xb5, 0x44, 0xbd, 0xcb, 0x51, 0x53, 0x08, 0x47, 0xa1, 0x06, 0x1f, 0x33, 0x62, 0xf5, 0xff, - 0xa8, 0xc1, 0x74, 0xc0, 0x65, 0x3d, 0xc7, 0x2b, 0x61, 0xe9, 0xea, 0x03, 0x35, 0xec, 0x4d, 0xa9, - 0xaf, 0x72, 0xd4, 0x15, 0xb4, 0xd4, 0x3b, 0x2a, 0x3a, 0xd6, 0xe0, 0x92, 0xe2, 0xa5, 0x86, 0xb0, - 0x32, 0x74, 0xf8, 0xc3, 0x30, 0xfe, 0x7e, 0xef, 0x03, 0x24, 0xee, 0x53, 0x8e, 0xbb, 0x85, 0x36, - 0x7b, 0xc7, 0x35, 0xb2, 0x15, 0xa3, 0xf1, 0xfc, 0xc4, 0xd5, 0xd6, 0x97, 0x68, 0x0d, 0xfd, 0xa0, - 0x01, 0x34, 0x8f, 0x45, 0x74, 0x43, 0x09, 0xd4, 0x71, 0xb3, 0x88, 0xdf, 0xec, 0x6a, 0x27, 0x79, - 0x37, 0x38, 0xef, 0x47, 0xe8, 0xbe, 0x8a, 0x97, 0x79, 0xe6, 0x21, 0xb1, 0xb3, 0x39, 0x5c, 0x60, - 0x45, 0x43, 0x42, 0x07, 0xf7, 0x97, 0xfa, 0xad, 0xa4, 0x86, 0x5e, 0x69, 0x30, 0xd9, 0x72, 0x76, - 0xa3, 0x6e, 0xd1, 0x1b, 0x27, 0xec, 0xad, 0xee, 0x86, 0x92, 0x33, 0xc5, 0x39, 0x97, 0xd1, 0xed, - 0x5e, 0x39, 0xd9, 0xc3, 0xc7, 0xc7, 0x27, 0x09, 0xed, 0xf5, 0x49, 0x42, 0xfb, 0xf3, 0x24, 0xa1, - 0x7d, 0x7f, 0x9a, 0x18, 0x7a, 0x7d, 0x9a, 0x18, 0x7a, 0x7b, 0x9a, 0x18, 0xda, 0x4b, 0xe5, 0x6d, - 0xef, 0xa0, 0x9c, 0x4d, 0xe6, 0x68, 0x51, 0xe5, 0xee, 0x28, 0xb5, 0x86, 0xbf, 0x6a, 0x4c, 0x96, - 0x57, 0x29, 0x11, 0x96, 0x1d, 0xe7, 0xff, 0x6b, 0x5a, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x22, - 0xdb, 0x97, 0x1e, 0x34, 0x13, 0x00, 0x00, + 0x18, 0xc7, 0xb3, 0x79, 0x6d, 0x9e, 0xb4, 0x21, 0x4c, 0xad, 0x34, 0xb8, 0xa9, 0x93, 0x6e, 0xaa, + 0xbe, 0x24, 0xa9, 0x07, 0xa7, 0x41, 0x15, 0xad, 0x50, 0xe5, 0x06, 0xd2, 0x84, 0xa6, 0x55, 0x71, + 0xe8, 0x25, 0x12, 0x6c, 0xd7, 0xde, 0x89, 0xb3, 0x8a, 0xbd, 0xe3, 0xee, 0xac, 0x23, 0x8c, 0xf1, + 0x85, 0x13, 0x47, 0xa4, 0x7e, 0x03, 0x10, 0xdf, 0x80, 0x0f, 0x80, 0x38, 0xe5, 0xc0, 0xa1, 0x15, + 0x97, 0x9e, 0x10, 0x4a, 0xf8, 0x08, 0x9c, 0x11, 0xf2, 0xcc, 0xac, 0xed, 0xb5, 0x67, 0xd7, 0x76, + 0x64, 0x0e, 0x9c, 0xe2, 0x9d, 0x79, 0xe6, 0x79, 0x7e, 0xff, 0x67, 0x9e, 0x79, 0x0b, 0xc4, 0x99, + 0xe7, 0xda, 0x16, 0xc1, 0x2e, 0xc9, 0x51, 0xd7, 0x62, 0xf8, 0x65, 0x99, 0xb8, 0x95, 0x64, 0xc9, + 0xa5, 0x1e, 0x45, 0xd3, 0xa2, 0x2f, 0x29, 0xfb, 0xe2, 0xf3, 0x6d, 0xb6, 0xf2, 0xaf, 0xb0, 0x8e, + 0x5f, 0x6e, 0xeb, 0x2d, 0x99, 0xae, 0x59, 0xf4, 0x3b, 0x63, 0x79, 0x9a, 0xa7, 0xfc, 0x27, 0xae, + 0xff, 0x92, 0xad, 0xf3, 0x79, 0x4a, 0xf3, 0x05, 0x82, 0xcd, 0x92, 0x8d, 0x4d, 0xc7, 0xa1, 0x9e, + 0xe9, 0xd9, 0xd4, 0xf1, 0xc7, 0x2c, 0xe7, 0x28, 0x2b, 0x52, 0x86, 0xb3, 0x26, 0x23, 0x82, 0x0b, + 0x1f, 0xa5, 0xb2, 0xc4, 0x33, 0x53, 0xb8, 0x64, 0xe6, 0x6d, 0x87, 0x1b, 0x0b, 0x5b, 0x3d, 0x06, + 0xe8, 0xb3, 0xba, 0xc5, 0x33, 0x1e, 0x34, 0x43, 0x5e, 0x96, 0x09, 0xf3, 0xf4, 0xc7, 0x70, 0x31, + 0xd0, 0xca, 0x4a, 0xd4, 0x61, 0x04, 0xad, 0xc3, 0xb8, 0x80, 0x9b, 0xd3, 0x16, 0xb5, 0x9b, 0x53, + 0x6b, 0xb3, 0xc9, 0xa0, 0xd0, 0xa4, 0xb0, 0x7f, 0x38, 0x7a, 0xfc, 0xc7, 0xc2, 0x50, 0x46, 0xda, + 0xea, 0x49, 0x98, 0xe7, 0xce, 0x1e, 0x11, 0xef, 0x63, 0x52, 0xa2, 0xcc, 0xf6, 0x32, 0xdc, 0x5c, + 0x06, 0x43, 0xd3, 0x30, 0x6c, 0x5b, 0xdc, 0xe3, 0x68, 0x66, 0xd8, 0xb6, 0xf4, 0x43, 0xb8, 0x12, + 0x62, 0x2f, 0x31, 0x3e, 0x85, 0x69, 0x4b, 0x74, 0x18, 0x22, 0xb0, 0xc4, 0xb9, 0xd2, 0x8e, 0x13, + 0x18, 0x2e, 0xa9, 0x2e, 0x58, 0xad, 0x8d, 0xfa, 0xbe, 0x84, 0x4b, 0x17, 0x0a, 0x4a, 0xb8, 0x4d, + 0x80, 0x66, 0xce, 0x64, 0x9c, 0xeb, 0x49, 0x91, 0xe0, 0x64, 0x3d, 0xc1, 0x49, 0x31, 0xf1, 0x32, + 0xc1, 0xc9, 0x67, 0x66, 0x9e, 0xc8, 0xb1, 0x99, 0x96, 0x91, 0xfa, 0xcf, 0x9a, 0x54, 0xd5, 0x19, + 0x28, 0x42, 0xd5, 0xc8, 0xd9, 0x54, 0xa1, 0x47, 0x01, 0xea, 0x61, 0x4e, 0x7d, 0xa3, 0x2b, 0xb5, + 0x00, 0x09, 0x60, 0x6f, 0xc0, 0x02, 0xa7, 0x0e, 0xc6, 0xac, 0x6c, 0x51, 0xe6, 0xf9, 0x19, 0x5a, + 0x84, 0xf3, 0x07, 0x94, 0x79, 0xc6, 0xd7, 0xd4, 0x21, 0x86, 0x9c, 0xc8, 0xc9, 0x0c, 0xd4, 0xdb, + 0xf6, 0xa8, 0x43, 0xb6, 0x2d, 0xdd, 0x81, 0xc5, 0x70, 0x27, 0x83, 0x57, 0xaf, 0x7f, 0x00, 0x4b, + 0x7e, 0x01, 0x3d, 0x67, 0xc4, 0xcd, 0x10, 0x8b, 0x14, 0x4b, 0x75, 0x39, 0x61, 0x75, 0x37, 0xc9, + 0xeb, 0xee, 0x3b, 0x0d, 0xae, 0x45, 0x8f, 0x93, 0xac, 0x2f, 0x60, 0xb6, 0xcc, 0x88, 0x6b, 0xb8, + 0x0d, 0x83, 0x60, 0x1d, 0x5e, 0x6b, 0x67, 0x56, 0x79, 0x93, 0xe8, 0xb1, 0xb2, 0xa2, 0x4f, 0x2f, + 0x4a, 0x05, 0xe9, 0x42, 0x21, 0x4a, 0xc1, 0xa0, 0x8a, 0xf3, 0x8d, 0xaf, 0x3c, 0x34, 0x5e, 0x0f, + 0xca, 0x47, 0x06, 0xa1, 0x7c, 0x70, 0x95, 0xfb, 0x46, 0x83, 0xe5, 0x28, 0x4d, 0x9b, 0xd4, 0x15, + 0xcd, 0x22, 0x95, 0xef, 0xc1, 0xb9, 0xdc, 0x81, 0x69, 0x3b, 0xcd, 0x0a, 0x9e, 0xe0, 0xdf, 0xdb, + 0x16, 0x9a, 0x81, 0x11, 0xcb, 0xac, 0x70, 0x96, 0xd1, 0x4c, 0xfd, 0x27, 0x9a, 0x83, 0x09, 0xd3, + 0xb2, 0x5c, 0xc2, 0xd8, 0xdc, 0x88, 0xb0, 0x95, 0x9f, 0x28, 0x06, 0x63, 0x05, 0xbb, 0x68, 0x7b, + 0x73, 0xa3, 0xdc, 0x5a, 0x7c, 0xb4, 0xcd, 0xd3, 0xd8, 0x99, 0xe7, 0xe9, 0xad, 0x06, 0x2b, 0x3d, + 0x69, 0xfa, 0xff, 0x4d, 0xd7, 0x56, 0x73, 0xcd, 0x7e, 0x52, 0xa2, 0xb9, 0x83, 0xe7, 0x4e, 0x96, + 0x3a, 0x96, 0xed, 0xe4, 0x83, 0x15, 0x7f, 0x15, 0xce, 0x93, 0x7a, 0xb7, 0xe1, 0x94, 0x8b, 0x59, + 0xe2, 0xca, 0x53, 0x63, 0x8a, 0xb7, 0x3d, 0xe5, 0x4d, 0x81, 0x65, 0xac, 0x76, 0xd5, 0xcc, 0x8e, + 0xf0, 0x55, 0xf6, 0x0d, 0xba, 0x2c, 0x63, 0x95, 0x37, 0x3f, 0x3b, 0x44, 0xd1, 0xd7, 0xba, 0x8c, + 0xa3, 0x44, 0xfd, 0x17, 0xcb, 0xf8, 0xcc, 0xca, 0x47, 0x06, 0xa1, 0x7c, 0x70, 0x75, 0xb1, 0x0d, + 0xb3, 0x5c, 0xd2, 0xce, 0xee, 0x93, 0xc6, 0xce, 0xdf, 0x75, 0xc5, 0xc6, 0x60, 0xcc, 0x22, 0x0e, + 0x2d, 0xf2, 0xc0, 0x93, 0x19, 0xf1, 0xa1, 0xef, 0xc1, 0xa5, 0x0e, 0x57, 0x32, 0x21, 0x0f, 0x60, + 0x42, 0x1e, 0x21, 0x32, 0xfd, 0x0b, 0xed, 0x19, 0xd8, 0xd9, 0x7d, 0xf2, 0x39, 0x3d, 0x24, 0x8e, + 0x1c, 0x29, 0xc5, 0xfb, 0xa3, 0xf4, 0x4a, 0x87, 0x6f, 0xd6, 0x03, 0xe7, 0x0a, 0xbc, 0x7b, 0x64, + 0x16, 0x6c, 0xcb, 0xf4, 0xa8, 0x6b, 0xf8, 0x3b, 0x8a, 0x60, 0x9e, 0x69, 0x74, 0xa4, 0xe5, 0xd6, + 0x32, 0x0b, 0xe3, 0xcc, 0x33, 0xbd, 0xb2, 0xbf, 0xe7, 0xc8, 0x2f, 0xfd, 0x0b, 0x98, 0xeb, 0x0c, + 0x2d, 0x75, 0xa5, 0xe1, 0x9c, 0x24, 0x64, 0x72, 0x6a, 0x7b, 0x14, 0xd6, 0x18, 0xb6, 0xf6, 0xf7, + 0x3b, 0x30, 0xc6, 0xfd, 0xa3, 0x6f, 0x60, 0x5c, 0xdc, 0xef, 0x90, 0xde, 0xee, 0xa4, 0xf3, 0x0a, + 0x19, 0x5f, 0x8a, 0xb4, 0x11, 0x7c, 0xfa, 0xad, 0x6f, 0x7f, 0xff, 0xeb, 0xd5, 0xf0, 0x12, 0xba, + 0x8a, 0x77, 0xb9, 0xf1, 0x8e, 0x99, 0x65, 0x58, 0x79, 0x1d, 0x46, 0xbf, 0x6a, 0x10, 0x53, 0x6d, + 0x4f, 0xe8, 0x8e, 0x32, 0x50, 0xf4, 0xd9, 0x1f, 0x5f, 0xef, 0x6f, 0x90, 0xc4, 0x7d, 0xc0, 0x71, + 0x3f, 0x44, 0x77, 0x25, 0xee, 0x6d, 0x15, 0xaf, 0x7a, 0xc7, 0xc5, 0x55, 0xdb, 0xaa, 0xa1, 0x5f, + 0x34, 0xb8, 0xa4, 0x8a, 0x90, 0x2e, 0x14, 0x42, 0x74, 0x44, 0xdf, 0x00, 0x42, 0x74, 0x74, 0x39, + 0xc6, 0xf5, 0x7b, 0x5c, 0xc7, 0x3a, 0x5a, 0xeb, 0x5f, 0x07, 0xfa, 0x47, 0x83, 0xcb, 0x11, 0x67, + 0x0f, 0xba, 0xd7, 0x0f, 0x51, 0xf0, 0x10, 0x8e, 0xdf, 0x3f, 0xd3, 0x58, 0x29, 0x6a, 0x9f, 0x8b, + 0x7a, 0x81, 0xbe, 0xec, 0x5f, 0x94, 0xb1, 0x4f, 0x5d, 0xa3, 0xde, 0x85, 0xab, 0xfe, 0x52, 0xad, + 0xe1, 0xaa, 0x65, 0x56, 0x6a, 0xb8, 0x2a, 0x97, 0x65, 0x0d, 0x57, 0xf9, 0x59, 0x5e, 0x43, 0xbf, + 0x69, 0x10, 0x53, 0xed, 0x87, 0xe1, 0x85, 0x18, 0xb1, 0xf7, 0x87, 0x17, 0x62, 0xd4, 0x06, 0xae, + 0x6f, 0x73, 0xad, 0x1b, 0x28, 0x1d, 0xa5, 0x55, 0xbd, 0xc5, 0xe3, 0x6a, 0xeb, 0x01, 0x2a, 0x4a, + 0x52, 0x15, 0x2b, 0xb2, 0x24, 0xfb, 0x57, 0xd4, 0xe5, 0x48, 0xea, 0xad, 0x24, 0xd5, 0x8a, 0xd0, + 0x4f, 0x1a, 0x5c, 0x08, 0x3c, 0x0b, 0xd0, 0x6a, 0x58, 0x56, 0x55, 0x6f, 0xbc, 0xf8, 0xed, 0x1e, + 0xad, 0x25, 0xea, 0x5d, 0x8e, 0x9a, 0x42, 0x38, 0x0a, 0x35, 0xf8, 0x98, 0x11, 0xab, 0xff, 0x47, + 0x0d, 0x66, 0x02, 0x2e, 0xeb, 0x39, 0x5e, 0x0d, 0x4b, 0x57, 0x1f, 0xa8, 0x61, 0x6f, 0x4a, 0x7d, + 0x8d, 0xa3, 0xae, 0xa2, 0xe5, 0xde, 0x51, 0xd1, 0xb1, 0x06, 0x17, 0x15, 0x2f, 0x35, 0x84, 0x95, + 0xa1, 0xc3, 0x1f, 0x86, 0xf1, 0xf7, 0x7b, 0x1f, 0x20, 0x71, 0x9f, 0x72, 0xdc, 0x2d, 0xb4, 0xd9, + 0x3b, 0xae, 0x91, 0xad, 0x18, 0x8d, 0xe7, 0x27, 0xae, 0xb6, 0xbe, 0x44, 0x6b, 0xe8, 0x07, 0x0d, + 0xa0, 0x79, 0x2c, 0xa2, 0xeb, 0x4a, 0xa0, 0x8e, 0x9b, 0x45, 0xfc, 0x46, 0x57, 0x3b, 0xc9, 0xbb, + 0xc1, 0x79, 0x3f, 0x42, 0xf7, 0x55, 0xbc, 0xcc, 0x33, 0x0f, 0x89, 0x9d, 0xcd, 0xe1, 0x02, 0x2b, + 0x1a, 0x12, 0x3a, 0xb8, 0xbf, 0xd4, 0x6f, 0x25, 0x35, 0xf4, 0x4a, 0x83, 0xa9, 0x96, 0xb3, 0x1b, + 0x75, 0x8b, 0xde, 0x38, 0x61, 0x6f, 0x76, 0x37, 0x94, 0x9c, 0x29, 0xce, 0xb9, 0x82, 0x6e, 0xf5, + 0xca, 0xc9, 0x1e, 0x3e, 0x3e, 0x3e, 0x49, 0x68, 0xaf, 0x4f, 0x12, 0xda, 0x9f, 0x27, 0x09, 0xed, + 0xfb, 0xd3, 0xc4, 0xd0, 0xeb, 0xd3, 0xc4, 0xd0, 0xdb, 0xd3, 0xc4, 0xd0, 0x5e, 0x2a, 0x6f, 0x7b, + 0x07, 0xe5, 0x6c, 0x32, 0x47, 0x8b, 0x2a, 0x77, 0x47, 0xa9, 0x75, 0xfc, 0x55, 0x63, 0xb2, 0xbc, + 0x4a, 0x89, 0xb0, 0xec, 0x38, 0xff, 0x5f, 0xd3, 0x9d, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8a, + 0x27, 0xc7, 0xd0, 0x34, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go index 32457a7fcb..5253725534 100644 --- a/x/records/types/records.pb.go +++ b/x/records/types/records.pb.go @@ -586,14 +586,14 @@ func init() { func init() { proto.RegisterFile("stride/records/records.proto", fileDescriptor_295ee594cc85d8ca) } var fileDescriptor_295ee594cc85d8ca = []byte{ - // 998 bytes of a gzipped FileDescriptorProto + // 999 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc1, 0x8e, 0xda, 0x46, 0x18, 0x5e, 0x83, 0xd7, 0xc0, 0x9f, 0xc0, 0x7a, 0x67, 0x49, 0xe2, 0xa5, 0x0d, 0x21, 0xa8, 0x89, - 0x90, 0xaa, 0x98, 0xee, 0x46, 0xea, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, + 0x90, 0xaa, 0x98, 0xee, 0xb6, 0xea, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, 0xa0, 0xa9, 0xf6, 0x50, 0xcb, 0xd8, 0xa3, 0x65, 0xb4, 0xc1, 0x83, 0x3c, 0x06, 0xb5, 0xbd, 0xf4, 0x15, 0x7a, 0xe8, 0x2b, 0x54, 0x7d, 0x82, 0xbe, 0x43, 0x4e, 0x55, 0x8e, 0x55, 0x0f, 0x51, 0xb5, 0x7b, 0xe8, 0x6b, 0x54, 0x1e, 0x1b, 0x03, 0x26, 0x69, 0xa4, 0x6d, 0x4f, 0x30, 0xdf, 0x37, 0xf3, - 0x8f, 0xe7, 0x9b, 0xef, 0xff, 0x6c, 0xf8, 0x90, 0x05, 0x3e, 0x71, 0x71, 0xd3, 0xc7, 0x0e, 0xf5, + 0x8f, 0xe7, 0x9b, 0xef, 0xff, 0x6c, 0x78, 0x9f, 0x05, 0x3e, 0x71, 0x71, 0xd3, 0xc7, 0x0e, 0xf5, 0x5d, 0xb6, 0xf8, 0x55, 0xa7, 0x3e, 0x0d, 0x28, 0x2a, 0x45, 0xac, 0x1a, 0xa3, 0x95, 0xaa, 0x43, 0xd9, 0x84, 0xb2, 0xe6, 0xc8, 0x66, 0xb8, 0x39, 0x3f, 0x18, 0xe1, 0xc0, 0x3e, 0x68, 0x3a, 0x94, 0x78, 0xd1, 0xfc, 0x4a, 0xf9, 0x9c, 0x9e, 0x53, 0xfe, 0xb7, 0x19, 0xfe, 0x8b, 0xd0, 0xfa, 0xaf, @@ -601,55 +601,55 @@ var fileDescriptor_295ee594cc85d8ca = []byte{ 0x82, 0x0c, 0x71, 0x15, 0xa1, 0x26, 0x34, 0x0a, 0x66, 0x86, 0xb8, 0xe8, 0x36, 0x48, 0x0c, 0x7b, 0x2e, 0xf6, 0x95, 0x0c, 0xc7, 0xe2, 0x11, 0xaa, 0x40, 0xde, 0xc7, 0x0e, 0x26, 0x73, 0xec, 0x2b, 0x59, 0xce, 0x24, 0x63, 0x74, 0x0c, 0x92, 0x3d, 0xa1, 0x33, 0x2f, 0x50, 0xc4, 0x90, 0x69, 0xa9, - 0xaf, 0xde, 0xdc, 0xdb, 0xfa, 0xf3, 0xcd, 0xbd, 0x87, 0xe7, 0x24, 0x18, 0xcf, 0x46, 0xaa, 0x43, + 0x2f, 0x5f, 0xdf, 0xdb, 0xfa, 0xf3, 0xf5, 0xbd, 0x87, 0xe7, 0x24, 0x18, 0xcf, 0x46, 0xaa, 0x43, 0x27, 0xcd, 0xf8, 0xa9, 0xa3, 0x9f, 0x47, 0xcc, 0xbd, 0x68, 0x06, 0xdf, 0x4f, 0x31, 0x53, 0x0d, 0x2f, 0x30, 0xe3, 0xd5, 0xa8, 0x0c, 0xdb, 0x2e, 0xf6, 0xe8, 0x44, 0xd9, 0xe6, 0x1b, 0x44, 0x03, 0x54, 0x83, 0x9b, 0x63, 0xca, 0x02, 0xeb, 0x07, 0xea, 0x61, 0x8b, 0xb8, 0x8a, 0xc4, 0x49, 0x08, 0xb1, 0x33, 0xea, 0x61, 0xc3, 0x45, 0xf7, 0xe1, 0x26, 0x9e, 0x52, 0x67, 0x6c, 0x79, 0xb3, 0xc9, 0x08, 0xfb, 0x4a, 0xae, 0x26, 0x34, 0x44, 0xf3, 0x06, 0xc7, 0xba, 0x1c, 0x42, 0x0d, 0x90, 0x9d, - 0x97, 0x36, 0x99, 0x58, 0x84, 0x59, 0x53, 0xec, 0xb9, 0xc4, 0x3b, 0x57, 0xf2, 0x35, 0xa1, 0x91, + 0x17, 0x36, 0x99, 0x58, 0x84, 0x59, 0x53, 0xec, 0xb9, 0xc4, 0x3b, 0x57, 0xf2, 0x35, 0xa1, 0x91, 0x37, 0x4b, 0x1c, 0x37, 0xd8, 0x69, 0x84, 0xd6, 0xff, 0xce, 0x42, 0xb1, 0x8d, 0xa7, 0x94, 0x91, 0x60, 0x43, 0x22, 0x91, 0x4b, 0xb4, 0x3c, 0x6e, 0xe6, 0xff, 0x39, 0x6e, 0xf6, 0xdf, 0x8e, 0x2b, - 0x6e, 0x1c, 0xf7, 0x73, 0x90, 0x58, 0x60, 0x07, 0x33, 0xc6, 0xa5, 0x28, 0x1d, 0x7e, 0xa4, 0xae, - 0x5b, 0x44, 0x5d, 0x7b, 0x7c, 0xb5, 0xcf, 0xe7, 0x9a, 0xf1, 0x1a, 0xf4, 0x09, 0x94, 0xdd, 0x88, - 0xb7, 0xde, 0x22, 0x1a, 0x8a, 0x39, 0x7d, 0x45, 0xbb, 0x70, 0x3f, 0x3a, 0xf3, 0x1d, 0xcc, 0x15, - 0x7b, 0xff, 0x7e, 0x7c, 0xae, 0x19, 0xaf, 0xa9, 0x8f, 0x41, 0x8a, 0x9e, 0x00, 0x21, 0x28, 0x0d, + 0x6e, 0x1c, 0xf7, 0x73, 0x90, 0x58, 0x60, 0x07, 0x33, 0xc6, 0xa5, 0x28, 0x1d, 0x7e, 0xa0, 0xae, + 0x5b, 0x44, 0x5d, 0x7b, 0x7c, 0xb5, 0xcf, 0xe7, 0x9a, 0xf1, 0x1a, 0xf4, 0x11, 0x94, 0xdd, 0x88, + 0xb7, 0xde, 0x20, 0x1a, 0x8a, 0x39, 0x7d, 0x45, 0xbb, 0x70, 0x3f, 0x3a, 0xf3, 0x1d, 0xcc, 0x15, + 0x7b, 0xf7, 0x7e, 0x7c, 0xae, 0x19, 0xaf, 0xa9, 0x8f, 0x41, 0x8a, 0x9e, 0x00, 0x21, 0x28, 0x0d, 0x4c, 0xad, 0xdb, 0x3f, 0xd6, 0x4d, 0xeb, 0xab, 0xa1, 0x3e, 0xd4, 0xe5, 0x2d, 0xa4, 0x40, 0x39, 0xc1, 0x8c, 0xae, 0x75, 0x6a, 0xf6, 0x4e, 0x4c, 0xbd, 0xdf, 0x97, 0x33, 0xa8, 0x0c, 0x72, 0x5b, 0xef, 0xe8, 0x27, 0xda, 0xc0, 0xe8, 0x75, 0xe3, 0xf9, 0x02, 0xaa, 0xc0, 0xed, 0x15, 0x74, 0x75, 0x45, 0xb6, 0xde, 0x00, 0x29, 0xda, 0x1b, 0x01, 0x48, 0xfd, 0x81, 0x69, 0xb4, 0xc3, 0x1d, 0x10, - 0x94, 0x5e, 0x18, 0x83, 0x27, 0x6d, 0x53, 0x7b, 0xa1, 0x75, 0x2c, 0xe3, 0x48, 0x93, 0x85, 0xa7, - 0x62, 0x7e, 0x5b, 0x96, 0xea, 0xbf, 0x88, 0xb0, 0xfb, 0x24, 0x96, 0x75, 0xe8, 0x8d, 0x28, 0xbf, + 0x94, 0x9e, 0x1b, 0x83, 0xc7, 0x6d, 0x53, 0x7b, 0xae, 0x75, 0x2c, 0xe3, 0x48, 0x93, 0x85, 0x27, + 0x62, 0x7e, 0x5b, 0x96, 0xea, 0xbf, 0x88, 0xb0, 0xfb, 0x38, 0x96, 0x75, 0xe8, 0x8d, 0x28, 0xbf, 0x7f, 0xf4, 0x35, 0xec, 0xb0, 0xc0, 0x0a, 0xe8, 0x05, 0xf6, 0xac, 0xf8, 0x9a, 0x85, 0x6b, 0x5d, 0x73, 0x91, 0x05, 0x83, 0xb0, 0x8a, 0x16, 0xdd, 0xf6, 0xb7, 0xb0, 0xe7, 0xd9, 0x01, 0x99, 0xe3, 0xf5, 0xda, 0xd7, 0xb3, 0xd0, 0x6e, 0x54, 0x6a, 0xb5, 0xfe, 0x75, 0xdd, 0xf4, 0x00, 0x4a, 0xb3, 0xc5, 0xe1, 0xad, 0x80, 0x4c, 0x30, 0xef, 0x3e, 0xd1, 0x2c, 0x26, 0xe8, 0x80, 0x4c, 0x30, 0xfa, 0x32, 0x65, 0xba, 0x46, 0xda, 0x04, 0x1b, 0x4a, 0xa6, 0x8d, 0xf7, 0x29, 0xdc, 0x99, 0x31, 0xec, - 0x5b, 0x7e, 0x12, 0x41, 0x56, 0xbc, 0x56, 0xc9, 0xd5, 0xb2, 0x8d, 0x82, 0x79, 0x6b, 0xf6, 0x96, + 0x5b, 0x7e, 0x12, 0x41, 0x56, 0xbc, 0x56, 0xc9, 0xd5, 0xb2, 0x8d, 0x82, 0x79, 0x6b, 0xf6, 0x86, 0x80, 0x62, 0xf5, 0x1f, 0x13, 0x03, 0xed, 0xc1, 0xce, 0xb0, 0xdb, 0xea, 0x75, 0xdb, 0x46, 0xf7, 0x24, 0x71, 0xd0, 0x3e, 0xdc, 0x5a, 0x82, 0x6b, 0x86, 0x40, 0x77, 0x60, 0x4f, 0xff, 0xc6, 0x18, 0x58, 0x29, 0xd7, 0x09, 0xe8, 0x2e, 0xec, 0xaf, 0x13, 0xab, 0xeb, 0x44, 0x54, 0x84, 0xc2, 0x51, - 0x47, 0x33, 0x9e, 0x6b, 0xad, 0x8e, 0x2e, 0x67, 0xea, 0x3f, 0x0b, 0x50, 0xe6, 0xfd, 0x90, 0x1c, + 0x47, 0x33, 0x9e, 0x69, 0xad, 0x8e, 0x2e, 0x67, 0xea, 0x3f, 0x0b, 0x50, 0xe6, 0xfd, 0x90, 0x1c, 0x2d, 0x0e, 0x86, 0x74, 0xee, 0x08, 0x9b, 0xb9, 0xd3, 0x87, 0xf2, 0x52, 0xff, 0x44, 0x51, 0xa6, - 0x64, 0x6b, 0xd9, 0xc6, 0x8d, 0xc3, 0xfb, 0xef, 0x15, 0xd1, 0x44, 0xe3, 0x34, 0xc4, 0x9e, 0x8a, - 0xf9, 0x8c, 0x9c, 0xad, 0xff, 0x2e, 0xc2, 0x4e, 0xa7, 0xff, 0x9c, 0x7b, 0x20, 0xee, 0x40, 0x74, + 0x64, 0x6b, 0xd9, 0xc6, 0x8d, 0xc3, 0xfb, 0xef, 0x14, 0xd1, 0x44, 0xe3, 0x34, 0xc4, 0x9e, 0x88, + 0xf9, 0x8c, 0x9c, 0xad, 0xff, 0x2e, 0xc2, 0x4e, 0xa7, 0xff, 0x8c, 0x7b, 0x20, 0xee, 0x40, 0x74, 0x17, 0x60, 0xd1, 0xdc, 0x49, 0xaa, 0x17, 0x62, 0xc4, 0x70, 0xd1, 0x3e, 0xe4, 0x9d, 0xb1, 0x4d, - 0xbc, 0x90, 0x8c, 0xe2, 0x3d, 0xc7, 0xc7, 0x86, 0xfb, 0x0e, 0xfb, 0x7c, 0x00, 0x05, 0x32, 0x72, + 0xbc, 0x90, 0x8c, 0xe2, 0x3d, 0xc7, 0xc7, 0x86, 0xfb, 0x16, 0xfb, 0xbc, 0x07, 0x05, 0x32, 0x72, 0xac, 0x88, 0x89, 0xbc, 0x93, 0x27, 0x23, 0xa7, 0xcd, 0xc9, 0x07, 0x50, 0x62, 0x81, 0x7d, 0x81, - 0x7d, 0xcb, 0x76, 0x5d, 0x1f, 0x33, 0x16, 0xe7, 0x76, 0x31, 0x42, 0xb5, 0x08, 0x44, 0x1f, 0xc3, - 0xee, 0xdc, 0x7e, 0x49, 0x5c, 0x3b, 0xa0, 0xcb, 0x99, 0x51, 0x88, 0xcb, 0x09, 0xb1, 0x98, 0xbc, + 0x7d, 0xcb, 0x76, 0x5d, 0x1f, 0x33, 0x16, 0xe7, 0x76, 0x31, 0x42, 0xb5, 0x08, 0x44, 0x1f, 0xc2, + 0xee, 0xdc, 0x7e, 0x41, 0x5c, 0x3b, 0xa0, 0xcb, 0x99, 0x51, 0x88, 0xcb, 0x09, 0xb1, 0x98, 0xbc, 0xcc, 0xd6, 0xdc, 0x7f, 0xca, 0xd6, 0xcf, 0x20, 0xbf, 0xe8, 0x62, 0x9e, 0x5a, 0x37, 0x0e, 0xf7, 0xd5, 0x68, 0x81, 0x1a, 0xbe, 0x38, 0xd5, 0xf8, 0xc5, 0xa9, 0x1e, 0x51, 0xe2, 0xb5, 0xc4, 0x70, 0x13, 0x33, 0x17, 0xf7, 0x2b, 0xfa, 0x22, 0xb1, 0x7a, 0x81, 0x5b, 0xfd, 0x61, 0xfa, 0x96, 0x52, 0xaa, 0xa7, 0x8c, 0x5e, 0xff, 0x4d, 0x58, 0x75, 0x6c, 0x5b, 0x3f, 0xed, 0xf5, 0x8d, 0x81, 0x75, - 0xaa, 0x73, 0x8b, 0x46, 0x89, 0xb4, 0xe1, 0xc8, 0x77, 0xe7, 0xe0, 0x1e, 0xec, 0x24, 0xcc, 0xb1, - 0x66, 0x74, 0xf4, 0xb6, 0x9c, 0x0d, 0xa7, 0xb7, 0xf5, 0x41, 0xef, 0x99, 0xde, 0x35, 0xce, 0x56, + 0xaa, 0x73, 0x8b, 0x46, 0x89, 0xb4, 0xe1, 0xc8, 0xb7, 0xe7, 0xe0, 0x1e, 0xec, 0x24, 0xcc, 0xb1, + 0x66, 0x74, 0xf4, 0xb6, 0x9c, 0x0d, 0xa7, 0xb7, 0xf5, 0x41, 0xef, 0xa9, 0xde, 0x35, 0xce, 0x56, 0x03, 0x52, 0x44, 0x55, 0xa8, 0xa4, 0x98, 0xd5, 0x72, 0xdb, 0x61, 0xbb, 0xa4, 0xf8, 0xb8, 0xa8, - 0xd4, 0x7a, 0xf6, 0xea, 0xb2, 0x2a, 0xbc, 0xbe, 0xac, 0x0a, 0x7f, 0x5d, 0x56, 0x85, 0x9f, 0xae, - 0xaa, 0x5b, 0xaf, 0xaf, 0xaa, 0x5b, 0x7f, 0x5c, 0x55, 0xb7, 0xce, 0x0e, 0x56, 0xd4, 0xef, 0x73, - 0x2d, 0x1e, 0x75, 0xec, 0x11, 0x6b, 0xc6, 0x1f, 0x2e, 0xf3, 0x83, 0xc7, 0xcd, 0xef, 0x92, 0xcf, - 0x17, 0x7e, 0x19, 0x23, 0x89, 0x7f, 0x77, 0x3c, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0x3e, 0x5a, - 0x2d, 0x2e, 0xdd, 0x08, 0x00, 0x00, + 0xd4, 0x7a, 0xfa, 0xf2, 0xb2, 0x2a, 0xbc, 0xba, 0xac, 0x0a, 0x7f, 0x5d, 0x56, 0x85, 0x9f, 0xae, + 0xaa, 0x5b, 0xaf, 0xae, 0xaa, 0x5b, 0x7f, 0x5c, 0x55, 0xb7, 0xce, 0x0e, 0x56, 0xd4, 0xef, 0x73, + 0x2d, 0x1e, 0x75, 0xec, 0x11, 0x6b, 0xc6, 0x1f, 0x2e, 0xf3, 0x83, 0x4f, 0x9a, 0xdf, 0x25, 0x9f, + 0x2f, 0xfc, 0x32, 0x46, 0x12, 0xff, 0xee, 0xf8, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x96, + 0xa6, 0x7d, 0xe0, 0xdd, 0x08, 0x00, 0x00, } func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/client/cli/query.go b/x/stakeibc/client/cli/query.go index 7279462169..00a7d8db56 100644 --- a/x/stakeibc/client/cli/query.go +++ b/x/stakeibc/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/stakeibc/client/cli/query_epoch_tracker.go b/x/stakeibc/client/cli/query_epoch_tracker.go index a4eed93d2e..7891ee77ca 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker.go +++ b/x/stakeibc/client/cli/query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdListEpochTracker() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_epoch_tracker_test.go b/x/stakeibc/client/cli/query_epoch_tracker_test.go index 91787f3055..4f09f3a82e 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker_test.go +++ b/x/stakeibc/client/cli/query_epoch_tracker_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/testutil/network" - "github.com/Stride-Labs/stride/v13/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v14/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/client/cli/query_host_zone.go b/x/stakeibc/client/cli/query_host_zone.go index 8bf2b8be57..4a281043e1 100644 --- a/x/stakeibc/client/cli/query_host_zone.go +++ b/x/stakeibc/client/cli/query_host_zone.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdListHostZone() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_module_address.go b/x/stakeibc/client/cli/query_module_address.go index 0d6133a523..378a7f7971 100644 --- a/x/stakeibc/client/cli/query_module_address.go +++ b/x/stakeibc/client/cli/query_module_address.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/query_next_packet_sequence.go b/x/stakeibc/client/cli/query_next_packet_sequence.go index 1df7473b10..70efcae51a 100644 --- a/x/stakeibc/client/cli/query_next_packet_sequence.go +++ b/x/stakeibc/client/cli/query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdNextPacketSequence() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_params.go b/x/stakeibc/client/cli/query_params.go index 8e6dc62eb5..e66617ee3f 100644 --- a/x/stakeibc/client/cli/query_params.go +++ b/x/stakeibc/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_register_ica.go b/x/stakeibc/client/cli/query_register_ica.go index 7aeb6eb03c..e19d283f55 100644 --- a/x/stakeibc/client/cli/query_register_ica.go +++ b/x/stakeibc/client/cli/query_register_ica.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdShowInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_validator.go b/x/stakeibc/client/cli/query_validator.go index 5cbaa03595..f36039daa0 100644 --- a/x/stakeibc/client/cli/query_validator.go +++ b/x/stakeibc/client/cli/query_validator.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdShowValidators() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index 30dc4a83cd..4ac08a0077 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/stakeibc/client/cli/tx_add_validators.go b/x/stakeibc/client/cli/tx_add_validators.go index f57489495a..fba4faeeec 100644 --- a/x/stakeibc/client/cli/tx_add_validators.go +++ b/x/stakeibc/client/cli/tx_add_validators.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ValidatorsList struct { diff --git a/x/stakeibc/client/cli/tx_add_validators_proposal.go b/x/stakeibc/client/cli/tx_add_validators_proposal.go index bdd596fe5b..c9bf3e06b6 100644 --- a/x/stakeibc/client/cli/tx_add_validators_proposal.go +++ b/x/stakeibc/client/cli/tx_add_validators_proposal.go @@ -18,7 +18,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func parseAddValidatorsProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.AddValidatorsProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_change_validator_weight.go b/x/stakeibc/client/cli/tx_change_validator_weight.go index 9d7f3cc240..cfd3ae757d 100644 --- a/x/stakeibc/client/cli/tx_change_validator_weight.go +++ b/x/stakeibc/client/cli/tx_change_validator_weight.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go index 1486181a15..140272777c 100644 --- a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go +++ b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_clear_balance.go b/x/stakeibc/client/cli/tx_clear_balance.go index 530da9569b..2f5a0dcee3 100644 --- a/x/stakeibc/client/cli/tx_clear_balance.go +++ b/x/stakeibc/client/cli/tx_clear_balance.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_delete_validator.go b/x/stakeibc/client/cli/tx_delete_validator.go index af004ebe40..5e92a3aa6b 100644 --- a/x/stakeibc/client/cli/tx_delete_validator.go +++ b/x/stakeibc/client/cli/tx_delete_validator.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdDeleteValidator() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_liquid_stake.go b/x/stakeibc/client/cli/tx_liquid_stake.go index 65cfbfa313..e755267f29 100644 --- a/x/stakeibc/client/cli/tx_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_liquid_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go index 701dcfed4b..5fabb919e5 100644 --- a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdLSMLiquidStake() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_rebalance_validators.go b/x/stakeibc/client/cli/tx_rebalance_validators.go index 89b394f9ba..23baae933a 100644 --- a/x/stakeibc/client/cli/tx_rebalance_validators.go +++ b/x/stakeibc/client/cli/tx_rebalance_validators.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_redeem_stake.go b/x/stakeibc/client/cli/tx_redeem_stake.go index 513c9fa204..ed5a9597d2 100644 --- a/x/stakeibc/client/cli/tx_redeem_stake.go +++ b/x/stakeibc/client/cli/tx_redeem_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_register_host_zone.go b/x/stakeibc/client/cli/tx_register_host_zone.go index 6bd4a5acf1..38072bd1c7 100644 --- a/x/stakeibc/client/cli/tx_register_host_zone.go +++ b/x/stakeibc/client/cli/tx_register_host_zone.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/client/cli/tx_restore_interchain_account.go b/x/stakeibc/client/cli/tx_restore_interchain_account.go index d1af695cbc..2022888103 100644 --- a/x/stakeibc/client/cli/tx_restore_interchain_account.go +++ b/x/stakeibc/client/cli/tx_restore_interchain_account.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func CmdRestoreInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go index 6abe543535..9615b48852 100644 --- a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go +++ b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go @@ -16,7 +16,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func parseToggleLSMProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.ToggleLSMProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_update_delegation.go b/x/stakeibc/client/cli/tx_update_delegation.go index 98c84013d2..5fe4dc90b3 100644 --- a/x/stakeibc/client/cli/tx_update_delegation.go +++ b/x/stakeibc/client/cli/tx_update_delegation.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/proposal_handler.go b/x/stakeibc/client/proposal_handler.go index 77019fff06..5f9c1ce50b 100644 --- a/x/stakeibc/client/proposal_handler.go +++ b/x/stakeibc/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v13/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v14/x/stakeibc/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/stakeibc/genesis.go b/x/stakeibc/genesis.go index 7effacd469..1c3c10b0d5 100644 --- a/x/stakeibc/genesis.go +++ b/x/stakeibc/genesis.go @@ -3,8 +3,8 @@ package stakeibc import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/stakeibc/genesis_test.go b/x/stakeibc/genesis_test.go index 2a2f451e92..bd6cd25caf 100644 --- a/x/stakeibc/genesis_test.go +++ b/x/stakeibc/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/stakeibc" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/stakeibc" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestGenesis(t *testing.T) { diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index 7349188572..1f5abd4090 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -9,8 +9,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Handles stakeibc transactions diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index 19bf30b2de..a9b0f26847 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -11,8 +11,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/stakeibc/keeper/abci.go b/x/stakeibc/keeper/abci.go index 9cd784ad07..63d6f5d68e 100644 --- a/x/stakeibc/keeper/abci.go +++ b/x/stakeibc/keeper/abci.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go index 90794cea63..ec6df96e90 100644 --- a/x/stakeibc/keeper/consumer.go +++ b/x/stakeibc/keeper/consumer.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Register new stTokens to the consumer reward denom whitelist diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index e1c51fbb76..8fea68cef0 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { diff --git a/x/stakeibc/keeper/deposit_records.go b/x/stakeibc/keeper/deposit_records.go index 5a3559c246..b0a82e6738 100644 --- a/x/stakeibc/keeper/deposit_records.go +++ b/x/stakeibc/keeper/deposit_records.go @@ -11,9 +11,9 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Create a new deposit record for each host zone for the given epoch diff --git a/x/stakeibc/keeper/deposit_records_test.go b/x/stakeibc/keeper/deposit_records_test.go index 4a2f9de6bf..b8c36ffcd6 100644 --- a/x/stakeibc/keeper/deposit_records_test.go +++ b/x/stakeibc/keeper/deposit_records_test.go @@ -10,10 +10,10 @@ import ( sdkmath "cosmossdk.io/math" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type TestDepositRecords struct { diff --git a/x/stakeibc/keeper/epoch_elapsed_shares_test.go b/x/stakeibc/keeper/epoch_elapsed_shares_test.go index f0da082d40..97d6855a28 100644 --- a/x/stakeibc/keeper/epoch_elapsed_shares_test.go +++ b/x/stakeibc/keeper/epoch_elapsed_shares_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // These are used to indicate that the value does not matter for the sake of the test diff --git a/x/stakeibc/keeper/epoch_tracker.go b/x/stakeibc/keeper/epoch_tracker.go index 9a9e5b093a..f25667a32f 100644 --- a/x/stakeibc/keeper/epoch_tracker.go +++ b/x/stakeibc/keeper/epoch_tracker.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // SetEpochTracker set a specific epochTracker in the store from its index diff --git a/x/stakeibc/keeper/epoch_tracker_test.go b/x/stakeibc/keeper/epoch_tracker_test.go index afeeb855cf..279a789a6c 100644 --- a/x/stakeibc/keeper/epoch_tracker_test.go +++ b/x/stakeibc/keeper/epoch_tracker_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/events.go b/x/stakeibc/keeper/events.go index 39e941162e..2c1c14cd82 100644 --- a/x/stakeibc/keeper/events.go +++ b/x/stakeibc/keeper/events.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Emits a successful liquid stake event, and displays metadata such as the stToken amount diff --git a/x/stakeibc/keeper/gov.go b/x/stakeibc/keeper/gov.go index c9178c9b3c..209823935f 100644 --- a/x/stakeibc/keeper/gov.go +++ b/x/stakeibc/keeper/gov.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) AddValidatorsProposal(ctx sdk.Context, msg *types.AddValidatorsProposal) error { diff --git a/x/stakeibc/keeper/grpc_query.go b/x/stakeibc/keeper/grpc_query.go index e08fa58582..da0679e758 100644 --- a/x/stakeibc/keeper/grpc_query.go +++ b/x/stakeibc/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/stakeibc/keeper/grpc_query_address_unbondings.go b/x/stakeibc/keeper/grpc_query_address_unbondings.go index ffbb86b59e..8d0650abdd 100644 --- a/x/stakeibc/keeper/grpc_query_address_unbondings.go +++ b/x/stakeibc/keeper/grpc_query_address_unbondings.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const nanosecondsInDay = 86400000000000 diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker.go b/x/stakeibc/keeper/grpc_query_epoch_tracker.go index a1d6216da6..9675cb30c8 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) EpochTrackerAll(c context.Context, req *types.QueryAllEpochTrackerRequest) (*types.QueryAllEpochTrackerResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go index f85c3c6b85..8988410b1b 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go @@ -9,9 +9,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/grpc_query_host_zone.go b/x/stakeibc/keeper/grpc_query_host_zone.go index 5f712a179a..74ef304223 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone.go +++ b/x/stakeibc/keeper/grpc_query_host_zone.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) HostZoneAll(c context.Context, req *types.QueryAllHostZoneRequest) (*types.QueryAllHostZoneResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_host_zone_test.go b/x/stakeibc/keeper/grpc_query_host_zone_test.go index 4a0bdc8697..ee5b7463f7 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone_test.go +++ b/x/stakeibc/keeper/grpc_query_host_zone_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestHostZoneQuerySingle(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_module_address.go b/x/stakeibc/keeper/grpc_query_module_address.go index 683c02b01a..99d6fb1de1 100644 --- a/x/stakeibc/keeper/grpc_query_module_address.go +++ b/x/stakeibc/keeper/grpc_query_module_address.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) ModuleAddress(goCtx context.Context, req *types.QueryModuleAddressRequest) (*types.QueryModuleAddressResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go index c012feafad..7cc8c64858 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) NextPacketSequence(c context.Context, req *types.QueryGetNextPacketSequenceRequest) (*types.QueryGetNextPacketSequenceResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go index 5872015518..bcc5546262 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (s *KeeperTestSuite) TestNextPacketSequenceQuery() { diff --git a/x/stakeibc/keeper/grpc_query_params.go b/x/stakeibc/keeper/grpc_query_params.go index 11a97d2e69..71376498ab 100644 --- a/x/stakeibc/keeper/grpc_query_params.go +++ b/x/stakeibc/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_params_test.go b/x/stakeibc/keeper/grpc_query_params_test.go index dbe39124ff..0a0f7a915f 100644 --- a/x/stakeibc/keeper/grpc_query_params_test.go +++ b/x/stakeibc/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_register_ica.go b/x/stakeibc/keeper/grpc_query_register_ica.go index e49b1c65c5..035e662c35 100644 --- a/x/stakeibc/keeper/grpc_query_register_ica.go +++ b/x/stakeibc/keeper/grpc_query_register_ica.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // InterchainAccountFromAddress implements the Query/InterchainAccountFromAddress gRPC method diff --git a/x/stakeibc/keeper/grpc_query_validator.go b/x/stakeibc/keeper/grpc_query_validator.go index 0f09e2b60b..cb93005526 100644 --- a/x/stakeibc/keeper/grpc_query_validator.go +++ b/x/stakeibc/keeper/grpc_query_validator.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k Keeper) Validators(c context.Context, req *types.QueryGetValidatorsRequest) (*types.QueryGetValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_validator_test.go b/x/stakeibc/keeper/grpc_query_validator_test.go index e80bab24ce..a13b8c8bcb 100644 --- a/x/stakeibc/keeper/grpc_query_validator_test.go +++ b/x/stakeibc/keeper/grpc_query_validator_test.go @@ -8,9 +8,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestValidatorQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index 79cdab445a..d87d92dfd7 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icaoracletypes "github.com/Stride-Labs/stride/v13/x/icaoracle/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icaoracletypes "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const StrideEpochsPerDayEpoch = uint64(4) diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index 230b570314..720b4a4a0b 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -13,8 +13,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // SetHostZone set a specific hostZone in the store diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index a03493b63d..f1383b427a 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -9,10 +9,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/testutil/nullify" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/testutil/nullify" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.HostZone { diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index 9b4212f640..a338245cc5 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" ) const ( diff --git a/x/stakeibc/keeper/icacallbacks_claim.go b/x/stakeibc/keeper/icacallbacks_claim.go index 54682c82bb..eb1531bd61 100644 --- a/x/stakeibc/keeper/icacallbacks_claim.go +++ b/x/stakeibc/keeper/icacallbacks_claim.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_claim_test.go b/x/stakeibc/keeper/icacallbacks_claim_test.go index 7f007f93eb..c8a3dc349a 100644 --- a/x/stakeibc/keeper/icacallbacks_claim_test.go +++ b/x/stakeibc/keeper/icacallbacks_claim_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ClaimCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index ee88d32f57..7479b0f413 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -6,11 +6,11 @@ import ( "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index 78fbd03337..04d7c42d0e 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -6,10 +6,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type DelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go index bad93d376a..1cae63e458 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -6,10 +6,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // ICACallback after an LSM token is detokenized into native stake diff --git a/x/stakeibc/keeper/icacallbacks_detokenize_test.go b/x/stakeibc/keeper/icacallbacks_detokenize_test.go index 586db9d3dd..8741e96aa1 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize_test.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize_test.go @@ -5,9 +5,9 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type DetokenizeCallbackTestCase struct { diff --git a/x/stakeibc/keeper/icacallbacks_rebalance.go b/x/stakeibc/keeper/icacallbacks_rebalance.go index e6f2e72423..c0d74b7ec0 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance.go @@ -3,9 +3,9 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_rebalance_test.go b/x/stakeibc/keeper/icacallbacks_rebalance_test.go index d93a4502f1..4e06c80424 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance_test.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance_test.go @@ -6,9 +6,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type RebalanceCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_redemption.go b/x/stakeibc/keeper/icacallbacks_redemption.go index cfc579a318..3ac13d960f 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption.go +++ b/x/stakeibc/keeper/icacallbacks_redemption.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_redemption_test.go b/x/stakeibc/keeper/icacallbacks_redemption_test.go index 9fc080ff7f..ba00408a23 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption_test.go +++ b/x/stakeibc/keeper/icacallbacks_redemption_test.go @@ -7,10 +7,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type RedemptionCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_reinvest.go b/x/stakeibc/keeper/icacallbacks_reinvest.go index 3a1c3d76d4..df240d79b5 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest.go @@ -8,13 +8,13 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/utils" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_reinvest_test.go b/x/stakeibc/keeper/icacallbacks_reinvest_test.go index 5040db4689..47439b5f43 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest_test.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest_test.go @@ -9,16 +9,16 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ReinvestCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index b5b60f7ec3..76e05938b1 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index 9cc584607d..fac8def178 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -10,9 +10,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type UndelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index 287891c384..b27b05518e 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" ) const ( diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index 66a4e2667c..c67979c919 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -12,9 +12,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index 16f2ccda11..bb98b10a70 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -11,9 +11,9 @@ import ( "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type DelegatorSharesICQCallbackArgs struct { diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance.go b/x/stakeibc/keeper/icqcallbacks_fee_balance.go index db83954772..cb3a026f20 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance.go @@ -11,11 +11,11 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/utils" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // FeeBalanceCallback is a callback handler for FeeBalnce queries. diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go index e420e8e268..9b16eceac9 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go @@ -6,10 +6,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type FeeBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index 87e9b16a51..1cc31605c6 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -9,9 +9,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v13/utils" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // ValidatorCallback is a callback handler for validator queries. diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index bb8da83564..572f5fa108 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -13,10 +13,10 @@ import ( "github.com/cosmos/cosmos-sdk/types/bech32" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ValidatorICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go index dd767771a9..fa71dec6c6 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go @@ -12,11 +12,11 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/utils" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // WithdrawalBalanceCallback is a callback handler for WithdrawalBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go index 1b80de3898..9e1731e77f 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go @@ -7,11 +7,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type WithdrawalBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/invariants.go b/x/stakeibc/keeper/invariants.go index 8477fdb37a..c267748624 100644 --- a/x/stakeibc/keeper/invariants.go +++ b/x/stakeibc/keeper/invariants.go @@ -5,7 +5,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" ) // RegisterInvariants registers all governance invariants. diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index d84f1f2575..4d80a063f3 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - icqkeeper "github.com/Stride-Labs/stride/v13/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -23,9 +23,9 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v13/x/icacallbacks/keeper" - recordsmodulekeeper "github.com/Stride-Labs/stride/v13/x/records/keeper" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + recordsmodulekeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" ) type ( diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index bd0aca1de0..90b564ca50 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/lsm.go b/x/stakeibc/keeper/lsm.go index 367a9136bc..ebdbbdec3d 100644 --- a/x/stakeibc/keeper/lsm.go +++ b/x/stakeibc/keeper/lsm.go @@ -16,8 +16,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go index 8dcc4df007..edf7e0b7f2 100644 --- a/x/stakeibc/keeper/lsm_test.go +++ b/x/stakeibc/keeper/lsm_test.go @@ -9,9 +9,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" "github.com/cosmos/gogoproto/proto" ) diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index 88e36b71a9..8971ddbde6 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type msgServer struct { diff --git a/x/stakeibc/keeper/msg_server_add_validators.go b/x/stakeibc/keeper/msg_server_add_validators.go index 4b6f1dffd5..a8edda2f64 100644 --- a/x/stakeibc/keeper/msg_server_add_validators.go +++ b/x/stakeibc/keeper/msg_server_add_validators.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k msgServer) AddValidators(goCtx context.Context, msg *types.MsgAddValidators) (*types.MsgAddValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_add_validators_test.go b/x/stakeibc/keeper/msg_server_add_validators_test.go index 2817954c7f..6596f244b7 100644 --- a/x/stakeibc/keeper/msg_server_add_validators_test.go +++ b/x/stakeibc/keeper/msg_server_add_validators_test.go @@ -11,7 +11,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type AddValidatorsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_change_validator_weight.go b/x/stakeibc/keeper/msg_server_change_validator_weight.go index f58976c333..565ba020dd 100644 --- a/x/stakeibc/keeper/msg_server_change_validator_weight.go +++ b/x/stakeibc/keeper/msg_server_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k msgServer) ChangeValidatorWeight(goCtx context.Context, msg *types.MsgChangeValidatorWeight) (*types.MsgChangeValidatorWeightResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go index 7859f9101f..a2cf440e0b 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go @@ -4,15 +4,15 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" proto "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type IcaTx struct { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go index 42aaf0caed..bc77b3094d 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go @@ -11,10 +11,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ClaimUndelegatedState struct { diff --git a/x/stakeibc/keeper/msg_server_clear_balance.go b/x/stakeibc/keeper/msg_server_clear_balance.go index 6b275abde9..e3aa0f78fd 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance.go +++ b/x/stakeibc/keeper/msg_server_clear_balance.go @@ -10,7 +10,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalance) (*types.MsgClearBalanceResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_clear_balance_test.go b/x/stakeibc/keeper/msg_server_clear_balance_test.go index 265e68b69c..27325a6c1f 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance_test.go +++ b/x/stakeibc/keeper/msg_server_clear_balance_test.go @@ -9,8 +9,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ClearBalanceState struct { diff --git a/x/stakeibc/keeper/msg_server_delete_validator.go b/x/stakeibc/keeper/msg_server_delete_validator.go index 9b19a68b49..69e592298e 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator.go +++ b/x/stakeibc/keeper/msg_server_delete_validator.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k msgServer) DeleteValidator(goCtx context.Context, msg *types.MsgDeleteValidator) (*types.MsgDeleteValidatorResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_delete_validator_test.go b/x/stakeibc/keeper/msg_server_delete_validator_test.go index 90175030ae..4de8c16c12 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator_test.go +++ b/x/stakeibc/keeper/msg_server_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type DeleteValidatorTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_liquid_stake.go b/x/stakeibc/keeper/msg_server_liquid_stake.go index 712436a373..57f4eb2843 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Exchanges a user's native tokens for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_liquid_stake_test.go index 1e4ab5ec65..3816927416 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type Account struct { diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go index a37e346e2e..415a41c5df 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go @@ -8,9 +8,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/gogoproto/proto" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Exchanges a user's LSM tokenized shares for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go index f569cdf45e..4b968438ae 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go @@ -10,10 +10,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type LSMLiquidStakeTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators.go b/x/stakeibc/keeper/msg_server_rebalance_validators.go index 62eaaf01ca..1c620533d9 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k msgServer) RebalanceValidators(goCtx context.Context, msg *types.MsgRebalanceValidators) (*types.MsgRebalanceValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake.go b/x/stakeibc/keeper/msg_server_redeem_stake.go index be4c24af29..7014292c97 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake.go @@ -4,14 +4,14 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake_test.go b/x/stakeibc/keeper/msg_server_redeem_stake_test.go index 978fae0e8c..9af9b3c162 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake_test.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type RedeemStakeState struct { diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 32c7694331..28de4ab7b8 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v13/utils" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/msg_server_register_host_zone_test.go b/x/stakeibc/keeper/msg_server_register_host_zone_test.go index 6ab4ddeba6..7a8485e03b 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone_test.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone_test.go @@ -12,10 +12,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type RegisterHostZoneTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account.go b/x/stakeibc/keeper/msg_server_restore_interchain_account.go index 8f6b6d16e4..385879d29c 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.MsgRestoreInterchainAccount) (*types.MsgRestoreInterchainAccountResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go index 549c1767b1..4215bd078a 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go @@ -6,8 +6,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type DepositRecordStatusUpdate struct { diff --git a/x/stakeibc/keeper/msg_server_submit_tx.go b/x/stakeibc/keeper/msg_server_submit_tx.go index 4eed0ff052..50cfdba142 100644 --- a/x/stakeibc/keeper/msg_server_submit_tx.go +++ b/x/stakeibc/keeper/msg_server_submit_tx.go @@ -11,19 +11,19 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v13/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v14/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v13/x/interchainquery/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" sdk "github.com/cosmos/cosmos-sdk/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" diff --git a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go index e6882de350..6b1a41070e 100644 --- a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go +++ b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // This kicks off two ICQs, each with a callback, that will update the number of tokens on a validator diff --git a/x/stakeibc/keeper/params.go b/x/stakeibc/keeper/params.go index 6605349bab..c96fec425c 100644 --- a/x/stakeibc/keeper/params.go +++ b/x/stakeibc/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // GetParams get all parameters as types.Params diff --git a/x/stakeibc/keeper/params_test.go b/x/stakeibc/keeper/params_test.go index 93d1484f38..c4ed08f09d 100644 --- a/x/stakeibc/keeper/params_test.go +++ b/x/stakeibc/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v13/testutil/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestGetParams(t *testing.T) { diff --git a/x/stakeibc/keeper/reward_allocation.go b/x/stakeibc/keeper/reward_allocation.go index d664bef6f4..47850f8998 100644 --- a/x/stakeibc/keeper/reward_allocation.go +++ b/x/stakeibc/keeper/reward_allocation.go @@ -8,7 +8,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // Liquid Stake Reward Collector Balance diff --git a/x/stakeibc/keeper/reward_allocation_test.go b/x/stakeibc/keeper/reward_allocation_test.go index 042a5507c3..5e83d15c9e 100644 --- a/x/stakeibc/keeper/reward_allocation_test.go +++ b/x/stakeibc/keeper/reward_allocation_test.go @@ -15,9 +15,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func (s *KeeperTestSuite) SetupTestRewardAllocation() { diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index 32186c8bc1..21e6100ea7 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -14,9 +14,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v13/utils" - recordstypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/unbonding_records_cleanup_test.go b/x/stakeibc/keeper/unbonding_records_cleanup_test.go index e69382272d..8487538926 100644 --- a/x/stakeibc/keeper/unbonding_records_cleanup_test.go +++ b/x/stakeibc/keeper/unbonding_records_cleanup_test.go @@ -4,9 +4,9 @@ import ( sdkmath "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + stakeibc "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type CleanupEpochUnbondingRecordsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go index 13a817bc93..aa65cdbe62 100644 --- a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go +++ b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go @@ -9,10 +9,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type ValidatorUnbonding struct { diff --git a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go index 3c57d86b99..434eb98e29 100644 --- a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go +++ b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type InitiateAllHostZoneUnbondingsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go index 5c07d1c2ce..8cbb87bffd 100644 --- a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go +++ b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go @@ -5,10 +5,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - stakeibc "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + stakeibc "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type SweepUnbondedTokensTestCase struct { diff --git a/x/stakeibc/keeper/update_redemption_rates_test.go b/x/stakeibc/keeper/update_redemption_rates_test.go index 84b4ba9357..084046c42d 100644 --- a/x/stakeibc/keeper/update_redemption_rates_test.go +++ b/x/stakeibc/keeper/update_redemption_rates_test.go @@ -8,9 +8,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - minttypes "github.com/Stride-Labs/stride/v13/x/mint/types" - recordtypes "github.com/Stride-Labs/stride/v13/x/records/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type UpdateRedemptionRateTestCase struct { diff --git a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go index c6f997563f..cb8208854e 100644 --- a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go +++ b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go @@ -8,7 +8,7 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // ================================ 1: QueryValidatorSharesToTokensRate ============================================= diff --git a/x/stakeibc/keeper/validator_selection.go b/x/stakeibc/keeper/validator_selection.go index dbb3809387..201fb15730 100644 --- a/x/stakeibc/keeper/validator_selection.go +++ b/x/stakeibc/keeper/validator_selection.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v13/utils" - epochstypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/utils" + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) const RebalanceIcaBatchSize = 5 diff --git a/x/stakeibc/keeper/validator_selection_test.go b/x/stakeibc/keeper/validator_selection_test.go index 4bf33f47ff..7dcd796d67 100644 --- a/x/stakeibc/keeper/validator_selection_test.go +++ b/x/stakeibc/keeper/validator_selection_test.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v13/x/epochs/types" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) type RebalanceDelegationsForHostZoneTestCase struct { diff --git a/x/stakeibc/migrations/v2/convert.go b/x/stakeibc/migrations/v2/convert.go index 31ad30453d..f20be472c9 100644 --- a/x/stakeibc/migrations/v2/convert.go +++ b/x/stakeibc/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" ) func convertToNewValidator(oldValidator oldstakeibctypes.Validator) stakeibctypes.Validator { diff --git a/x/stakeibc/migrations/v2/convert_test.go b/x/stakeibc/migrations/v2/convert_test.go index 7c5dd9ad15..93dcf5073e 100644 --- a/x/stakeibc/migrations/v2/convert_test.go +++ b/x/stakeibc/migrations/v2/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v2/migrations.go b/x/stakeibc/migrations/v2/migrations.go index edc04c5a6b..8f00a8e117 100644 --- a/x/stakeibc/migrations/v2/migrations.go +++ b/x/stakeibc/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/migrations/v3/convert.go b/x/stakeibc/migrations/v3/convert.go index 2c841b4108..e642206e62 100644 --- a/x/stakeibc/migrations/v3/convert.go +++ b/x/stakeibc/migrations/v3/convert.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/migrations/v3/convert_test.go b/x/stakeibc/migrations/v3/convert_test.go index fe1f05f8cf..0336c03ea5 100644 --- a/x/stakeibc/migrations/v3/convert_test.go +++ b/x/stakeibc/migrations/v3/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v3/migrations.go b/x/stakeibc/migrations/v3/migrations.go index ddf0f3d60d..e7c6edb6a4 100644 --- a/x/stakeibc/migrations/v3/migrations.go +++ b/x/stakeibc/migrations/v3/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index 57db5e43a0..2f4a86c952 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -19,9 +19,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v13/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/module_simulation.go b/x/stakeibc/module_simulation.go index f734073dc5..29cfa5adeb 100644 --- a/x/stakeibc/module_simulation.go +++ b/x/stakeibc/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v13/testutil/sample" - stakeibcsimulation "github.com/Stride-Labs/stride/v13/x/stakeibc/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/testutil/sample" + stakeibcsimulation "github.com/Stride-Labs/stride/v14/x/stakeibc/simulation" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) // avoid unused import issue diff --git a/x/stakeibc/simulation/add_validator.go b/x/stakeibc/simulation/add_validator.go index d72ba6b456..30fc904d78 100644 --- a/x/stakeibc/simulation/add_validator.go +++ b/x/stakeibc/simulation/add_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgAddValidator( diff --git a/x/stakeibc/simulation/change_validator_weight.go b/x/stakeibc/simulation/change_validator_weight.go index 023fb23556..cd1764f40a 100644 --- a/x/stakeibc/simulation/change_validator_weight.go +++ b/x/stakeibc/simulation/change_validator_weight.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgChangeValidatorWeight( diff --git a/x/stakeibc/simulation/claim_undelegated_tokens.go b/x/stakeibc/simulation/claim_undelegated_tokens.go index 1cb1ffe294..f1c9ea0b57 100644 --- a/x/stakeibc/simulation/claim_undelegated_tokens.go +++ b/x/stakeibc/simulation/claim_undelegated_tokens.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgClaimUndelegatedTokens( diff --git a/x/stakeibc/simulation/delete_validator.go b/x/stakeibc/simulation/delete_validator.go index ca4a43214d..1ce876d79c 100644 --- a/x/stakeibc/simulation/delete_validator.go +++ b/x/stakeibc/simulation/delete_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgDeleteValidator( diff --git a/x/stakeibc/simulation/liquid_stake.go b/x/stakeibc/simulation/liquid_stake.go index 15d4485ff2..4e4a3de223 100644 --- a/x/stakeibc/simulation/liquid_stake.go +++ b/x/stakeibc/simulation/liquid_stake.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgLiquidStake( diff --git a/x/stakeibc/simulation/rebalance_validators.go b/x/stakeibc/simulation/rebalance_validators.go index f6e4a1192b..505402aa4d 100644 --- a/x/stakeibc/simulation/rebalance_validators.go +++ b/x/stakeibc/simulation/rebalance_validators.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgRebalanceValidators( diff --git a/x/stakeibc/simulation/restore_interchain_account.go b/x/stakeibc/simulation/restore_interchain_account.go index 17e5a90a6b..fbc3818744 100644 --- a/x/stakeibc/simulation/restore_interchain_account.go +++ b/x/stakeibc/simulation/restore_interchain_account.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgRestoreInterchainAccount( diff --git a/x/stakeibc/simulation/update_delegation.go b/x/stakeibc/simulation/update_delegation.go index 071f619056..7cab584aec 100644 --- a/x/stakeibc/simulation/update_delegation.go +++ b/x/stakeibc/simulation/update_delegation.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v13/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func SimulateMsgUpdateValidatorSharesExchRate( diff --git a/x/stakeibc/types/address_unbonding.pb.go b/x/stakeibc/types/address_unbonding.pb.go index 428f8f173c..d5ba8e30e7 100644 --- a/x/stakeibc/types/address_unbonding.pb.go +++ b/x/stakeibc/types/address_unbonding.pb.go @@ -119,28 +119,28 @@ func init() { var fileDescriptor_6491082275bcb473 = []byte{ // 348 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4e, 0xea, 0x40, - 0x18, 0x6d, 0xb9, 0xc0, 0x85, 0xb9, 0x37, 0x4a, 0x26, 0xc4, 0x4c, 0x58, 0x14, 0x74, 0xa1, 0xdd, - 0xd0, 0x46, 0xd9, 0xb8, 0x95, 0x44, 0x13, 0x12, 0x62, 0x4c, 0xd5, 0x8d, 0x9b, 0xa6, 0x3f, 0x5f, - 0xca, 0x04, 0x67, 0xa6, 0xe9, 0x4c, 0x89, 0xbe, 0x85, 0x2f, 0xe2, 0x7b, 0xb0, 0x64, 0x69, 0x5c, - 0x10, 0x03, 0x2f, 0x62, 0x98, 0xb6, 0xe8, 0x6a, 0xe6, 0x3b, 0xe7, 0xcc, 0xf9, 0x4e, 0xe6, 0xa0, - 0x33, 0xa9, 0x32, 0x1a, 0x83, 0x2b, 0x55, 0x30, 0x07, 0x1a, 0x46, 0x6e, 0x10, 0xc7, 0x19, 0x48, - 0xe9, 0xe7, 0x3c, 0x14, 0x3c, 0xa6, 0x3c, 0x71, 0xd2, 0x4c, 0x28, 0x81, 0x0f, 0x0b, 0xa1, 0x53, - 0x09, 0x7b, 0xdd, 0x44, 0x24, 0x42, 0x73, 0xee, 0xee, 0x56, 0xc8, 0x4e, 0xde, 0x6b, 0xa8, 0x73, - 0x55, 0x58, 0x3c, 0x56, 0x0e, 0x98, 0xa0, 0xbf, 0xa5, 0x2d, 0x31, 0x07, 0xa6, 0xdd, 0xf6, 0xaa, - 0x11, 0xf7, 0x50, 0x2b, 0x83, 0x08, 0xe8, 0x02, 0x32, 0x52, 0xd3, 0xd4, 0x7e, 0xc6, 0x97, 0x88, - 0xec, 0x43, 0xf8, 0x20, 0x15, 0x65, 0x81, 0x82, 0xd8, 0x57, 0x94, 0x01, 0xf9, 0xa3, 0xb5, 0x47, - 0x7b, 0xfe, 0xba, 0xa2, 0x1f, 0x28, 0x03, 0x7c, 0x83, 0x9a, 0x01, 0x13, 0x39, 0x57, 0xa4, 0xbe, - 0xd3, 0x8d, 0x9d, 0xe5, 0xba, 0x6f, 0x7c, 0xae, 0xfb, 0xa7, 0x09, 0x55, 0xb3, 0x3c, 0x74, 0x22, - 0xc1, 0xdc, 0x48, 0x48, 0x26, 0x64, 0x79, 0x0c, 0x65, 0x3c, 0x77, 0xd5, 0x6b, 0x0a, 0xd2, 0x99, - 0x70, 0xe5, 0x95, 0xaf, 0x71, 0x17, 0x35, 0x62, 0xe0, 0x82, 0x91, 0x86, 0x5e, 0x57, 0x0c, 0xd8, - 0x46, 0x9d, 0xe8, 0x39, 0xa0, 0xcc, 0xa7, 0xd2, 0x4f, 0x41, 0xaf, 0x27, 0xad, 0x81, 0x69, 0xb7, - 0xbc, 0x03, 0x8d, 0x4f, 0xe4, 0x5d, 0x81, 0xe2, 0x63, 0xf4, 0x1f, 0x52, 0x11, 0xcd, 0x7c, 0x9e, - 0xb3, 0x10, 0x32, 0xd2, 0x1e, 0x98, 0x76, 0xdd, 0xfb, 0xa7, 0xb1, 0x5b, 0x0d, 0x8d, 0xa7, 0xcb, - 0x8d, 0x65, 0xae, 0x36, 0x96, 0xf9, 0xb5, 0xb1, 0xcc, 0xb7, 0xad, 0x65, 0xac, 0xb6, 0x96, 0xf1, - 0xb1, 0xb5, 0x8c, 0xa7, 0x8b, 0x5f, 0x61, 0xef, 0xf5, 0xdf, 0x0f, 0xa7, 0x41, 0x28, 0xdd, 0xb2, - 0xb0, 0xc5, 0xf9, 0xc8, 0x7d, 0xf9, 0xa9, 0x4d, 0x87, 0x0f, 0x9b, 0xba, 0x84, 0xd1, 0x77, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x26, 0x37, 0x90, 0xfe, 0xd6, 0x01, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4a, 0xeb, 0x40, + 0x18, 0x4d, 0x7a, 0xdb, 0xde, 0x76, 0xee, 0x45, 0xcb, 0x50, 0x64, 0xe8, 0x22, 0xad, 0x2e, 0x34, + 0x9b, 0x26, 0xf8, 0xb3, 0x70, 0x6b, 0x41, 0xa1, 0x50, 0x44, 0xa2, 0x6e, 0xdc, 0x84, 0xfc, 0x7c, + 0xa4, 0x43, 0x9d, 0x99, 0x90, 0x99, 0x14, 0x7d, 0x0b, 0x5f, 0xc4, 0xf7, 0xe8, 0xb2, 0x4b, 0x71, + 0x51, 0xa4, 0x7d, 0x11, 0xe9, 0x24, 0xa9, 0xae, 0x66, 0xbe, 0x73, 0xce, 0x9c, 0xef, 0x30, 0x07, + 0x9d, 0x48, 0x95, 0xd1, 0x18, 0x5c, 0xa9, 0x82, 0x19, 0xd0, 0x30, 0x72, 0x83, 0x38, 0xce, 0x40, + 0x4a, 0x3f, 0xe7, 0xa1, 0xe0, 0x31, 0xe5, 0x89, 0x93, 0x66, 0x42, 0x09, 0xbc, 0x5f, 0x08, 0x9d, + 0x4a, 0xd8, 0xeb, 0x26, 0x22, 0x11, 0x9a, 0x73, 0xb7, 0xb7, 0x42, 0x76, 0xf4, 0x5e, 0x43, 0x9d, + 0xab, 0xc2, 0xe2, 0xb1, 0x72, 0xc0, 0x04, 0xfd, 0x2d, 0x6d, 0x89, 0x39, 0x30, 0xed, 0xb6, 0x57, + 0x8d, 0xb8, 0x87, 0x5a, 0x19, 0x44, 0x40, 0xe7, 0x90, 0x91, 0x9a, 0xa6, 0x76, 0x33, 0xbe, 0x44, + 0x64, 0x17, 0xc2, 0x07, 0xa9, 0x28, 0x0b, 0x14, 0xc4, 0xbe, 0xa2, 0x0c, 0xc8, 0x1f, 0xad, 0x3d, + 0xd8, 0xf1, 0xd7, 0x15, 0xfd, 0x40, 0x19, 0xe0, 0x1b, 0xd4, 0x0c, 0x98, 0xc8, 0xb9, 0x22, 0xf5, + 0xad, 0x6e, 0xe4, 0x2c, 0x56, 0x7d, 0xe3, 0x73, 0xd5, 0x3f, 0x4e, 0xa8, 0x9a, 0xe6, 0xa1, 0x13, + 0x09, 0xe6, 0x46, 0x42, 0x32, 0x21, 0xcb, 0x63, 0x28, 0xe3, 0x99, 0xab, 0x5e, 0x53, 0x90, 0xce, + 0x98, 0x2b, 0xaf, 0x7c, 0x8d, 0xbb, 0xa8, 0x11, 0x03, 0x17, 0x8c, 0x34, 0xf4, 0xba, 0x62, 0xc0, + 0x36, 0xea, 0x44, 0xcf, 0x01, 0x65, 0x3e, 0x95, 0x7e, 0x0a, 0x7a, 0x3d, 0x69, 0x0d, 0x4c, 0xbb, + 0xe5, 0xed, 0x69, 0x7c, 0x2c, 0xef, 0x0a, 0x14, 0x1f, 0xa2, 0xff, 0x90, 0x8a, 0x68, 0xea, 0xf3, + 0x9c, 0x85, 0x90, 0x91, 0xf6, 0xc0, 0xb4, 0xeb, 0xde, 0x3f, 0x8d, 0xdd, 0x6a, 0x68, 0x34, 0x59, + 0xac, 0x2d, 0x73, 0xb9, 0xb6, 0xcc, 0xaf, 0xb5, 0x65, 0xbe, 0x6d, 0x2c, 0x63, 0xb9, 0xb1, 0x8c, + 0x8f, 0x8d, 0x65, 0x3c, 0x9d, 0xfd, 0x0a, 0x7b, 0xaf, 0xff, 0x7e, 0x38, 0x09, 0x42, 0xe9, 0x96, + 0x85, 0xcd, 0x4f, 0x2f, 0xdc, 0x97, 0x9f, 0xda, 0x74, 0xf8, 0xb0, 0xa9, 0x4b, 0x38, 0xff, 0x0e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x4c, 0x53, 0x26, 0xd6, 0x01, 0x00, 0x00, } func (m *AddressUnbonding) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index c1b8b9418e..fd9999cd38 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -5,7 +5,7 @@ package types import ( fmt "fmt" - types1 "github.com/Stride-Labs/stride/v13/x/records/types" + types1 "github.com/Stride-Labs/stride/v14/x/records/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -664,59 +664,59 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 823 bytes of a gzipped FileDescriptorProto + // 822 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0xeb, 0x44, 0x10, 0x8f, 0x9b, 0xa7, 0xf7, 0x5e, 0x36, 0x69, 0x93, 0x5a, 0x08, 0xd2, 0x28, 0x4a, 0x82, 0x1f, - 0x82, 0x27, 0xa4, 0xda, 0x6a, 0x2b, 0x21, 0x10, 0x97, 0xd2, 0x56, 0x88, 0x48, 0x29, 0x12, 0x4e, - 0xcb, 0xa1, 0x17, 0x6b, 0xed, 0x5d, 0x25, 0xab, 0xd8, 0xbb, 0xa9, 0x77, 0x93, 0xd2, 0x7e, 0x02, - 0x8e, 0xbd, 0xf2, 0x11, 0xe0, 0xc2, 0x27, 0xe0, 0xc2, 0xa9, 0xc7, 0x1e, 0x11, 0x87, 0x82, 0xda, - 0x2f, 0x82, 0x76, 0xbd, 0xfe, 0x93, 0x04, 0x2a, 0x02, 0xa7, 0xc4, 0x33, 0xbf, 0xd9, 0x99, 0xdf, - 0xfc, 0x66, 0x76, 0x41, 0x97, 0x8b, 0x98, 0x20, 0xec, 0x70, 0x01, 0x27, 0x98, 0xf8, 0x81, 0x13, - 0xc0, 0x30, 0xf4, 0x61, 0x30, 0xe1, 0xf6, 0x34, 0x66, 0x82, 0x99, 0xf5, 0x04, 0x60, 0xa7, 0x80, - 0xd6, 0x3b, 0x23, 0x36, 0x62, 0xca, 0xe7, 0xc8, 0x7f, 0x09, 0xac, 0xd5, 0x09, 0x18, 0x8f, 0x18, - 0x77, 0x7c, 0xc8, 0xb1, 0x33, 0xdf, 0xf3, 0xb1, 0x80, 0x7b, 0x4e, 0xc0, 0x08, 0xd5, 0xfe, 0xb6, - 0xce, 0x13, 0xe3, 0x80, 0xc5, 0x88, 0xa7, 0xbf, 0xda, 0xbb, 0x52, 0xc5, 0x98, 0x71, 0xe1, 0xdd, - 0x30, 0x8a, 0xff, 0x09, 0x30, 0x87, 0x21, 0x41, 0x50, 0xb0, 0x38, 0x01, 0x58, 0x57, 0xa0, 0x3e, - 0x9c, 0x86, 0x44, 0x9c, 0xe0, 0x10, 0x8f, 0xa0, 0x20, 0x8c, 0x9a, 0x6d, 0x50, 0xc9, 0x50, 0x4d, - 0xa3, 0x67, 0xbc, 0xad, 0xb8, 0xb9, 0xc1, 0xfc, 0x12, 0xbc, 0x84, 0x11, 0x9b, 0x51, 0xd1, 0xdc, - 0x90, 0xae, 0x23, 0xfb, 0xee, 0xa1, 0x5b, 0xfa, 0xfd, 0xa1, 0xfb, 0xe1, 0x88, 0x88, 0xf1, 0xcc, - 0xb7, 0x03, 0x16, 0x39, 0x9a, 0x53, 0xf2, 0xb3, 0xcb, 0xd1, 0xc4, 0x11, 0xd7, 0x53, 0xcc, 0xed, - 0x3e, 0x15, 0xae, 0x8e, 0xb6, 0x7e, 0x36, 0x40, 0x43, 0x27, 0xc5, 0xc7, 0xba, 0x77, 0x66, 0x0f, - 0xd4, 0x32, 0x06, 0x1e, 0x41, 0x3a, 0x3b, 0x90, 0xb6, 0x0b, 0x46, 0x71, 0x1f, 0x99, 0x1f, 0x83, - 0x6d, 0x84, 0xa7, 0x8c, 0x13, 0xe1, 0x25, 0xad, 0x90, 0x30, 0x59, 0xc9, 0x0b, 0xb7, 0xae, 0x1d, - 0xae, 0xb2, 0xf7, 0x91, 0x79, 0x0a, 0xb6, 0xb9, 0xe4, 0xe6, 0xa1, 0x8c, 0x1c, 0x6f, 0x96, 0x7b, - 0xe5, 0xb7, 0xd5, 0xfd, 0x9e, 0xbd, 0x24, 0x8f, 0xbd, 0xd4, 0x05, 0xb7, 0xc1, 0x17, 0x0d, 0xdc, - 0xfa, 0xde, 0x00, 0x9b, 0xc7, 0x21, 0x24, 0x51, 0x56, 0xee, 0x67, 0x60, 0x67, 0xc6, 0x71, 0xec, - 0xc5, 0x18, 0xe1, 0x68, 0x2a, 0x51, 0x85, 0xa2, 0x92, 0xda, 0xdf, 0x95, 0x00, 0x37, 0xf3, 0x67, - 0xb5, 0xed, 0x80, 0xd7, 0xc1, 0x18, 0x12, 0x9a, 0x96, 0x5f, 0x71, 0x5f, 0xa9, 0xef, 0x3e, 0x32, - 0xdf, 0x07, 0x35, 0x3c, 0x65, 0xc1, 0xd8, 0xa3, 0xb3, 0xc8, 0xc7, 0x71, 0xb3, 0xac, 0xd8, 0x55, - 0x95, 0xed, 0x6b, 0x65, 0xb2, 0x7e, 0x34, 0x40, 0xc3, 0xc5, 0x84, 0xce, 0x31, 0x17, 0x59, 0x35, - 0x1c, 0xd4, 0x63, 0x6d, 0xf3, 0xb4, 0x44, 0xb2, 0x86, 0xea, 0xfe, 0x8e, 0x9d, 0x28, 0x61, 0xcb, - 0x21, 0xb3, 0xf5, 0x90, 0xd9, 0xc7, 0x8c, 0xd0, 0x23, 0x47, 0xaa, 0xf7, 0xd3, 0x1f, 0xdd, 0x8f, - 0xfe, 0x85, 0x7a, 0x32, 0xc0, 0xdd, 0x4a, 0x53, 0x7c, 0xa1, 0x32, 0xac, 0x28, 0x56, 0x5e, 0x56, - 0xcc, 0xfa, 0xd5, 0x00, 0xe6, 0x39, 0x45, 0xeb, 0x4b, 0xfd, 0xb7, 0xf2, 0x6d, 0xfc, 0x57, 0xf9, - 0xcc, 0xcf, 0x41, 0x2b, 0x69, 0xeb, 0x8c, 0xfa, 0x8c, 0x22, 0x42, 0x47, 0xb9, 0x58, 0xc9, 0x58, - 0xbc, 0x70, 0xdf, 0x53, 0x88, 0xf3, 0x14, 0x90, 0xaa, 0xc5, 0x2d, 0x0e, 0xcc, 0x5c, 0xc4, 0x35, - 0x38, 0x3c, 0x9f, 0x74, 0xe3, 0xf9, 0xa4, 0x3f, 0x18, 0xa0, 0xea, 0x62, 0x1f, 0x86, 0x90, 0x06, - 0x84, 0x8e, 0xcc, 0x37, 0x60, 0x93, 0xc7, 0x81, 0xb7, 0xbc, 0x9c, 0x35, 0x1e, 0x07, 0xdf, 0x66, - 0xfb, 0xf9, 0x06, 0x6c, 0x22, 0x2e, 0x0a, 0xa0, 0x64, 0xba, 0x6a, 0x88, 0x8b, 0x1c, 0x74, 0x08, - 0xca, 0x30, 0x12, 0x89, 0x58, 0x6b, 0x6f, 0xb0, 0x0c, 0xb5, 0xae, 0xc0, 0x76, 0x5a, 0xda, 0x3a, - 0x9a, 0x1e, 0x82, 0x5a, 0x9c, 0x33, 0x4a, 0xe5, 0x6c, 0xaf, 0xc8, 0x59, 0xa0, 0xed, 0x2e, 0x44, - 0x58, 0xe7, 0xa0, 0x79, 0x82, 0x05, 0x9b, 0x60, 0x4a, 0x6e, 0xf0, 0x70, 0x0c, 0x63, 0xcc, 0x0b, - 0xfb, 0xf8, 0x4a, 0xdf, 0x01, 0x7a, 0xf2, 0xbb, 0xe9, 0xc1, 0xe9, 0xb5, 0x39, 0x18, 0x9e, 0x9e, - 0xc9, 0xd8, 0x13, 0x7d, 0x55, 0xa4, 0x78, 0xeb, 0x17, 0x03, 0x6c, 0x0d, 0x86, 0xa7, 0x03, 0x72, - 0x39, 0x23, 0x68, 0x28, 0xcb, 0xf8, 0x1f, 0xa7, 0x99, 0x9f, 0x80, 0x4a, 0xd6, 0x08, 0x25, 0x80, - 0x5c, 0xc2, 0x65, 0x8e, 0x5f, 0xe9, 0xb6, 0xb8, 0xaf, 0xd3, 0x06, 0x99, 0x9f, 0x16, 0xaf, 0xde, - 0xb2, 0x8a, 0x6b, 0xad, 0xc4, 0x65, 0x32, 0x16, 0xae, 0x65, 0xeb, 0x12, 0x7c, 0x90, 0xd9, 0x93, - 0xae, 0x9c, 0x31, 0x55, 0x1b, 0xff, 0x66, 0x86, 0xe3, 0xeb, 0xac, 0x45, 0x7d, 0xd0, 0x08, 0x79, - 0xe4, 0x85, 0x8a, 0xa7, 0xa7, 0xce, 0x5c, 0x66, 0x97, 0x25, 0x5a, 0xec, 0x87, 0xbb, 0x15, 0xf2, - 0xa8, 0xf0, 0x6d, 0xdd, 0x1a, 0xa0, 0xad, 0x17, 0x2c, 0xcd, 0xb9, 0x98, 0x6b, 0x0a, 0xda, 0x84, - 0x12, 0x41, 0x60, 0x98, 0x8f, 0x63, 0x61, 0x99, 0x93, 0xf1, 0x58, 0x7b, 0xfc, 0x5a, 0xfa, 0xcc, - 0x8c, 0x6e, 0xbe, 0xe4, 0x47, 0x83, 0xbb, 0xc7, 0x8e, 0x71, 0xff, 0xd8, 0x31, 0xfe, 0x7c, 0xec, - 0x18, 0xb7, 0x4f, 0x9d, 0xd2, 0xfd, 0x53, 0xa7, 0xf4, 0xdb, 0x53, 0xa7, 0x74, 0xb1, 0x5f, 0x38, - 0x7d, 0xa8, 0x78, 0xee, 0x0e, 0xa0, 0xcf, 0x1d, 0xfd, 0x3e, 0xce, 0xf7, 0x0e, 0x9c, 0xef, 0xf2, - 0x57, 0x52, 0x65, 0xf3, 0x5f, 0xaa, 0x27, 0xf2, 0xe0, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4a, - 0x98, 0x04, 0x00, 0xec, 0x07, 0x00, 0x00, + 0x82, 0x0a, 0xa9, 0xb6, 0x5a, 0x10, 0x02, 0x71, 0x29, 0x6d, 0x85, 0x88, 0x94, 0x22, 0xe1, 0xb4, + 0x1c, 0x7a, 0xb1, 0xd6, 0xde, 0x55, 0xb2, 0x8a, 0xbd, 0x9b, 0x7a, 0x37, 0x29, 0xed, 0x27, 0xe0, + 0xd8, 0x2b, 0x1f, 0x01, 0x2e, 0x7c, 0x02, 0x2e, 0x9c, 0x7a, 0xec, 0x11, 0x71, 0x28, 0xa8, 0xfd, + 0x22, 0x68, 0xd7, 0xeb, 0x3f, 0x49, 0xa0, 0x22, 0x70, 0x4a, 0x3c, 0xf3, 0x9b, 0x9d, 0xf9, 0xcd, + 0x6f, 0x66, 0x17, 0x74, 0xb9, 0x88, 0x09, 0xc2, 0x0e, 0x17, 0x70, 0x82, 0x89, 0x1f, 0x38, 0x01, + 0x0c, 0x43, 0x1f, 0x06, 0x13, 0x6e, 0x4f, 0x63, 0x26, 0x98, 0x59, 0x4f, 0x00, 0x76, 0x0a, 0x68, + 0xbd, 0x35, 0x62, 0x23, 0xa6, 0x7c, 0x8e, 0xfc, 0x97, 0xc0, 0x5a, 0x9d, 0x80, 0xf1, 0x88, 0x71, + 0xc7, 0x87, 0x1c, 0x3b, 0xf3, 0x7d, 0x1f, 0x0b, 0xb8, 0xef, 0x04, 0x8c, 0x50, 0xed, 0x6f, 0xeb, + 0x3c, 0x31, 0x0e, 0x58, 0x8c, 0x78, 0xfa, 0xab, 0xbd, 0x2b, 0x55, 0x8c, 0x19, 0x17, 0xde, 0x0d, + 0xa3, 0xf8, 0x9f, 0x00, 0x73, 0x18, 0x12, 0x04, 0x05, 0x8b, 0x13, 0x80, 0x75, 0x05, 0xea, 0xc3, + 0x69, 0x48, 0xc4, 0x09, 0x0e, 0xf1, 0x08, 0x0a, 0xc2, 0xa8, 0xd9, 0x06, 0x95, 0x0c, 0xd5, 0x34, + 0x7a, 0xc6, 0x6e, 0xc5, 0xcd, 0x0d, 0xe6, 0x97, 0xe0, 0x25, 0x8c, 0xd8, 0x8c, 0x8a, 0xe6, 0x86, + 0x74, 0x1d, 0xd9, 0x77, 0x0f, 0xdd, 0xd2, 0xef, 0x0f, 0xdd, 0xf7, 0x47, 0x44, 0x8c, 0x67, 0xbe, + 0x1d, 0xb0, 0xc8, 0xd1, 0x9c, 0x92, 0x9f, 0x3d, 0x8e, 0x26, 0x8e, 0xb8, 0x9e, 0x62, 0x6e, 0xf7, + 0xa9, 0x70, 0x75, 0xb4, 0xf5, 0xb3, 0x01, 0x1a, 0x3a, 0x29, 0x3e, 0xd6, 0xbd, 0x33, 0x7b, 0xa0, + 0x96, 0x31, 0xf0, 0x08, 0xd2, 0xd9, 0x81, 0xb4, 0x5d, 0x30, 0x8a, 0xfb, 0xc8, 0xfc, 0x10, 0x6c, + 0x23, 0x3c, 0x65, 0x9c, 0x08, 0x2f, 0x69, 0x85, 0x84, 0xc9, 0x4a, 0x5e, 0xb8, 0x75, 0xed, 0x70, + 0x95, 0xbd, 0x8f, 0xcc, 0x53, 0xb0, 0xcd, 0x25, 0x37, 0x0f, 0x65, 0xe4, 0x78, 0xb3, 0xdc, 0x2b, + 0xef, 0x56, 0x0f, 0x7a, 0xf6, 0x92, 0x3c, 0xf6, 0x52, 0x17, 0xdc, 0x06, 0x5f, 0x34, 0x70, 0xeb, + 0x7b, 0x03, 0x6c, 0x1e, 0x87, 0x90, 0x44, 0x59, 0xb9, 0x9f, 0x81, 0x9d, 0x19, 0xc7, 0xb1, 0x17, + 0x63, 0x84, 0xa3, 0xa9, 0x44, 0x15, 0x8a, 0x4a, 0x6a, 0x7f, 0x5b, 0x02, 0xdc, 0xcc, 0x9f, 0xd5, + 0xb6, 0x03, 0x5e, 0x07, 0x63, 0x48, 0x68, 0x5a, 0x7e, 0xc5, 0x7d, 0xa5, 0xbe, 0xfb, 0xc8, 0x7c, + 0x17, 0xd4, 0xf0, 0x94, 0x05, 0x63, 0x8f, 0xce, 0x22, 0x1f, 0xc7, 0xcd, 0xb2, 0x62, 0x57, 0x55, + 0xb6, 0xaf, 0x95, 0xc9, 0xfa, 0xd1, 0x00, 0x0d, 0x17, 0x13, 0x3a, 0xc7, 0x5c, 0x64, 0xd5, 0x70, + 0x50, 0x8f, 0xb5, 0xcd, 0xd3, 0x12, 0xc9, 0x1a, 0xaa, 0x07, 0x3b, 0x76, 0xa2, 0x84, 0x2d, 0x87, + 0xcc, 0xd6, 0x43, 0x66, 0x1f, 0x33, 0x42, 0x8f, 0x1c, 0xa9, 0xde, 0x4f, 0x7f, 0x74, 0x3f, 0xf8, + 0x17, 0xea, 0xc9, 0x00, 0x77, 0x2b, 0x4d, 0xf1, 0x85, 0xca, 0xb0, 0xa2, 0x58, 0x79, 0x59, 0x31, + 0xeb, 0x57, 0x03, 0x98, 0xe7, 0x14, 0xad, 0x2f, 0xf5, 0xdf, 0xca, 0xb7, 0xf1, 0x5f, 0xe5, 0x33, + 0x3f, 0x07, 0xad, 0xa4, 0xad, 0x33, 0xea, 0x33, 0x8a, 0x08, 0x1d, 0xe5, 0x62, 0x25, 0x63, 0xf1, + 0xc2, 0x7d, 0x47, 0x21, 0xce, 0x53, 0x40, 0xaa, 0x16, 0xb7, 0x38, 0x30, 0x73, 0x11, 0xd7, 0xe0, + 0xf0, 0x7c, 0xd2, 0x8d, 0xe7, 0x93, 0xfe, 0x60, 0x80, 0xaa, 0x8b, 0x7d, 0x18, 0x42, 0x1a, 0x10, + 0x3a, 0x32, 0xdf, 0x80, 0x4d, 0x1e, 0x07, 0xde, 0xf2, 0x72, 0xd6, 0x78, 0x1c, 0x7c, 0x9b, 0xed, + 0xe7, 0x1b, 0xb0, 0x89, 0xb8, 0x28, 0x80, 0x92, 0xe9, 0xaa, 0x21, 0x2e, 0x72, 0xd0, 0x21, 0x28, + 0xc3, 0x48, 0x24, 0x62, 0xad, 0xbd, 0xc1, 0x32, 0xd4, 0xba, 0x02, 0xdb, 0x69, 0x69, 0xeb, 0x68, + 0x7a, 0x08, 0x6a, 0x71, 0xce, 0x28, 0x95, 0xb3, 0xbd, 0x22, 0x67, 0x81, 0xb6, 0xbb, 0x10, 0x61, + 0x9d, 0x83, 0xe6, 0x09, 0x16, 0x6c, 0x82, 0x29, 0xb9, 0xc1, 0xc3, 0x31, 0x8c, 0x31, 0x2f, 0xec, + 0xe3, 0x2b, 0x7d, 0x07, 0xe8, 0xc9, 0xef, 0xa6, 0x07, 0xa7, 0xd7, 0xe6, 0x60, 0x78, 0x7a, 0x26, + 0x63, 0x4f, 0xf4, 0x55, 0x91, 0xe2, 0xad, 0x5f, 0x0c, 0xb0, 0x35, 0x18, 0x9e, 0x0e, 0xc8, 0xe5, + 0x8c, 0xa0, 0xa1, 0x2c, 0xe3, 0x7f, 0x9c, 0x66, 0x7e, 0x02, 0x2a, 0x59, 0x23, 0x94, 0x00, 0x72, + 0x09, 0x97, 0x39, 0x7e, 0xa5, 0xdb, 0xe2, 0xbe, 0x4e, 0x1b, 0x64, 0x7e, 0x5a, 0xbc, 0x7a, 0xcb, + 0x2a, 0xae, 0xb5, 0x12, 0x97, 0xc9, 0x58, 0xb8, 0x96, 0xad, 0x4b, 0xf0, 0x5e, 0x66, 0x4f, 0xba, + 0x72, 0xc6, 0x54, 0x6d, 0xfc, 0x9b, 0x19, 0x8e, 0xaf, 0xb3, 0x16, 0xf5, 0x41, 0x23, 0xe4, 0x91, + 0x17, 0x2a, 0x9e, 0x9e, 0x3a, 0x73, 0x99, 0x5d, 0x96, 0x68, 0xb1, 0x1f, 0xee, 0x56, 0xc8, 0xa3, + 0xc2, 0xb7, 0x75, 0x6b, 0x80, 0xb6, 0x5e, 0xb0, 0x34, 0xe7, 0x62, 0xae, 0x29, 0x68, 0x13, 0x4a, + 0x04, 0x81, 0x61, 0x3e, 0x8e, 0x85, 0x65, 0x4e, 0xc6, 0x63, 0xed, 0xf1, 0x6b, 0xe9, 0x33, 0x33, + 0xba, 0xf9, 0x92, 0x1f, 0x0d, 0xee, 0x1e, 0x3b, 0xc6, 0xfd, 0x63, 0xc7, 0xf8, 0xf3, 0xb1, 0x63, + 0xdc, 0x3e, 0x75, 0x4a, 0xf7, 0x4f, 0x9d, 0xd2, 0x6f, 0x4f, 0x9d, 0xd2, 0xc5, 0x41, 0xe1, 0xf4, + 0xa1, 0xe2, 0xb9, 0x37, 0x80, 0x3e, 0x77, 0xf4, 0xfb, 0x38, 0xdf, 0xff, 0xd8, 0xf9, 0x2e, 0x7f, + 0x25, 0x55, 0x36, 0xff, 0xa5, 0x7a, 0x22, 0x3f, 0xfa, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xe3, + 0xc7, 0xd8, 0xec, 0x07, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/epoch_tracker.pb.go b/x/stakeibc/types/epoch_tracker.pb.go index f0bf5a352a..72eff7c45a 100644 --- a/x/stakeibc/types/epoch_tracker.pb.go +++ b/x/stakeibc/types/epoch_tracker.pb.go @@ -114,8 +114,8 @@ var fileDescriptor_e7c48143f24adf66 = []byte{ 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x7e, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, - 0x06, 0x4a, 0x99, 0xa1, 0xb1, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, - 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xda, 0x7e, 0xdc, 0xec, 0x3a, 0x01, 0x00, + 0x06, 0x4a, 0x99, 0xa1, 0x89, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, + 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x05, 0x1f, 0x34, 0x3a, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/expected_keepers.go b/x/stakeibc/types/expected_keepers.go index 416ceb8939..b11db92850 100644 --- a/x/stakeibc/types/expected_keepers.go +++ b/x/stakeibc/types/expected_keepers.go @@ -7,7 +7,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - ratelimittypes "github.com/Stride-Labs/stride/v13/x/ratelimit/types" + ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" ) // AccountKeeper defines the expected account keeper used for simulations (noalias) diff --git a/x/stakeibc/types/genesis.pb.go b/x/stakeibc/types/genesis.pb.go index 156a9ccdc9..b611b11786 100644 --- a/x/stakeibc/types/genesis.pb.go +++ b/x/stakeibc/types/genesis.pb.go @@ -103,26 +103,26 @@ var fileDescriptor_dea81129ed6fb77a = []byte{ // 349 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x4e, 0xea, 0x40, 0x14, 0xc6, 0x5b, 0x18, 0x4a, 0x19, 0xc8, 0xbd, 0x4d, 0x73, 0x13, 0xb8, 0xe4, 0x52, 0xc8, 0x75, - 0xc3, 0xc6, 0x36, 0x42, 0x7c, 0x01, 0x12, 0xa2, 0x36, 0x2c, 0x14, 0x5c, 0xb1, 0x69, 0xda, 0x32, - 0x69, 0x27, 0x08, 0xd3, 0x74, 0x8e, 0x46, 0x7d, 0x0a, 0x57, 0x3e, 0x13, 0x4b, 0x96, 0xae, 0x8c, - 0x81, 0x17, 0x31, 0xed, 0x8c, 0xff, 0xca, 0x6e, 0xce, 0x7c, 0xbf, 0xfc, 0xce, 0x97, 0x83, 0x3b, - 0x1c, 0x52, 0xba, 0x20, 0x0e, 0x07, 0x7f, 0x49, 0x68, 0x10, 0x3a, 0x11, 0x59, 0x13, 0x4e, 0xb9, - 0x9d, 0xa4, 0x0c, 0x98, 0xf9, 0x5b, 0xc4, 0xf6, 0x47, 0xdc, 0xfe, 0x13, 0xb1, 0x88, 0xe5, 0x99, - 0x93, 0xbd, 0x04, 0xd6, 0xfe, 0x57, 0xb4, 0x24, 0x7e, 0xea, 0xaf, 0xa4, 0xa4, 0xdd, 0x2d, 0xa6, - 0x31, 0xe3, 0xe0, 0x3d, 0xb2, 0x35, 0x91, 0xc0, 0x51, 0x11, 0x20, 0x09, 0x0b, 0x63, 0x0f, 0x52, - 0x3f, 0x5c, 0x92, 0x54, 0x40, 0xff, 0x9f, 0x4b, 0xb8, 0x71, 0x26, 0xca, 0xcd, 0xc0, 0x07, 0x62, - 0x9e, 0x62, 0x4d, 0xac, 0x69, 0xa9, 0x3d, 0xb5, 0x5f, 0x1f, 0x34, 0xed, 0x42, 0x59, 0xfb, 0x32, - 0x8f, 0x47, 0x68, 0xf3, 0xda, 0x55, 0xa6, 0x12, 0x36, 0x9b, 0xb8, 0x9a, 0xb0, 0x14, 0x3c, 0xba, - 0x68, 0x95, 0x7a, 0x6a, 0xbf, 0x36, 0xd5, 0xb2, 0xf1, 0x62, 0x61, 0x8e, 0xf1, 0xaf, 0xcf, 0x62, - 0xde, 0x0d, 0xe5, 0xd0, 0xaa, 0xf4, 0xca, 0xfd, 0xfa, 0xe0, 0xef, 0x81, 0xf7, 0x9c, 0x71, 0x98, - 0xb3, 0x35, 0x91, 0xe6, 0x46, 0x2c, 0xe7, 0x09, 0xe5, 0x60, 0x5e, 0x61, 0xf3, 0x47, 0x7d, 0xa1, - 0xc2, 0xb9, 0xaa, 0x73, 0xa0, 0x1a, 0x67, 0xe8, 0xb5, 0x20, 0xa5, 0xce, 0x20, 0xdf, 0xfe, 0x32, - 0xa5, 0x8b, 0xf4, 0xb2, 0x81, 0x5c, 0xa4, 0x23, 0xa3, 0xe2, 0x22, 0x5d, 0x33, 0xaa, 0x2e, 0xd2, - 0x6b, 0x06, 0x76, 0x91, 0x5e, 0x37, 0x1a, 0xa3, 0xc9, 0x66, 0x67, 0xa9, 0xdb, 0x9d, 0xa5, 0xbe, - 0xed, 0x2c, 0xf5, 0x69, 0x6f, 0x29, 0xdb, 0xbd, 0xa5, 0xbc, 0xec, 0x2d, 0x65, 0x3e, 0x88, 0x28, - 0xc4, 0xb7, 0x81, 0x1d, 0xb2, 0x95, 0x33, 0xcb, 0x17, 0x1f, 0x4f, 0xfc, 0x80, 0x3b, 0xf2, 0xdc, - 0x77, 0x27, 0x43, 0xe7, 0xfe, 0xeb, 0xe8, 0xf0, 0x90, 0x10, 0x1e, 0x68, 0xf9, 0xb5, 0x87, 0xef, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xa7, 0x96, 0xcb, 0x19, 0x02, 0x00, 0x00, + 0xc3, 0xc6, 0x36, 0xa2, 0xbe, 0x00, 0x09, 0x51, 0x1b, 0x16, 0x0a, 0xae, 0xd8, 0x34, 0x6d, 0x99, + 0xb4, 0x13, 0x84, 0x69, 0x3a, 0x47, 0xa3, 0x3e, 0x85, 0x2b, 0x9f, 0x89, 0x25, 0x4b, 0x57, 0xc6, + 0xc0, 0x8b, 0x98, 0x76, 0xc6, 0x7f, 0x65, 0x37, 0x67, 0xbe, 0x5f, 0x7e, 0xe7, 0xcb, 0xc1, 0x1d, + 0x0e, 0x29, 0x9d, 0x13, 0x87, 0x83, 0xbf, 0x20, 0x34, 0x08, 0x9d, 0x88, 0xac, 0x08, 0xa7, 0xdc, + 0x4e, 0x52, 0x06, 0xcc, 0xfc, 0x2d, 0x62, 0xfb, 0x23, 0x6e, 0xff, 0x89, 0x58, 0xc4, 0xf2, 0xcc, + 0xc9, 0x5e, 0x02, 0x6b, 0xff, 0x2b, 0x5a, 0x12, 0x3f, 0xf5, 0x97, 0x52, 0xd2, 0xee, 0x16, 0xd3, + 0x98, 0x71, 0xf0, 0x1e, 0xd9, 0x8a, 0x48, 0xe0, 0xa0, 0x08, 0x90, 0x84, 0x85, 0xb1, 0x07, 0xa9, + 0x1f, 0x2e, 0x48, 0x2a, 0xa0, 0xff, 0xcf, 0x25, 0xdc, 0x38, 0x13, 0xe5, 0xa6, 0xe0, 0x03, 0x31, + 0x4f, 0xb1, 0x26, 0xd6, 0xb4, 0xd4, 0x9e, 0xda, 0xaf, 0x0f, 0x9a, 0x76, 0xa1, 0xac, 0x7d, 0x99, + 0xc7, 0x43, 0xb4, 0x7e, 0xed, 0x2a, 0x13, 0x09, 0x9b, 0x4d, 0x5c, 0x4d, 0x58, 0x0a, 0x1e, 0x9d, + 0xb7, 0x4a, 0x3d, 0xb5, 0x5f, 0x9b, 0x68, 0xd9, 0x78, 0x31, 0x37, 0x47, 0xf8, 0xd7, 0x67, 0x31, + 0xef, 0x86, 0x72, 0x68, 0x55, 0x7a, 0xe5, 0x7e, 0x7d, 0xf0, 0x77, 0xcf, 0x7b, 0xce, 0x38, 0xcc, + 0xd8, 0x8a, 0x48, 0x73, 0x23, 0x96, 0xf3, 0x98, 0x72, 0x30, 0xaf, 0xb0, 0xf9, 0xa3, 0xbe, 0x50, + 0xe1, 0x5c, 0xd5, 0xd9, 0x53, 0x8d, 0x32, 0xf4, 0x5a, 0x90, 0x52, 0x67, 0x90, 0x6f, 0x7f, 0x99, + 0xd2, 0x45, 0x7a, 0xd9, 0x40, 0x2e, 0xd2, 0x91, 0x51, 0x71, 0x91, 0xae, 0x19, 0x55, 0x17, 0xe9, + 0x35, 0x03, 0xbb, 0x48, 0xaf, 0x1b, 0x8d, 0xe1, 0x78, 0xbd, 0xb5, 0xd4, 0xcd, 0xd6, 0x52, 0xdf, + 0xb6, 0x96, 0xfa, 0xb4, 0xb3, 0x94, 0xcd, 0xce, 0x52, 0x5e, 0x76, 0x96, 0x32, 0x1b, 0x44, 0x14, + 0xe2, 0xdb, 0xc0, 0x0e, 0xd9, 0xd2, 0x99, 0xe6, 0x8b, 0x0f, 0xc7, 0x7e, 0xc0, 0x1d, 0x79, 0xee, + 0xbb, 0xa3, 0x13, 0xe7, 0xfe, 0xeb, 0xe8, 0xf0, 0x90, 0x10, 0x1e, 0x68, 0xf9, 0xb5, 0x8f, 0xdf, + 0x03, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xdc, 0x55, 0x13, 0x19, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/genesis_test.go b/x/stakeibc/types/genesis_test.go index b8ffe7d3d6..b71c69a1e4 100644 --- a/x/stakeibc/types/genesis_test.go +++ b/x/stakeibc/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index cc7c8d82fe..d3dad439be 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -132,8 +132,8 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x46, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0xe0, 0x80, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xc6, 0x7c, 0x99, 0xa1, - 0xb1, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, - 0x08, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x05, 0x0a, 0xb7, 0x61, 0x02, 0x00, 0x00, + 0x89, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, + 0x08, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x7e, 0xc9, 0x6f, 0x61, 0x02, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index 15c5e8131b..da47a3bb88 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -195,51 +195,51 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 702 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0x4f, 0x4f, 0x22, 0x49, - 0x18, 0xc6, 0x61, 0x6d, 0xb1, 0x29, 0xff, 0xd0, 0x94, 0xc8, 0xb6, 0x98, 0x45, 0xe2, 0x26, 0x1b, - 0xf6, 0x40, 0x93, 0xd5, 0xc3, 0x26, 0x9b, 0x3d, 0xac, 0x2e, 0x9b, 0x2c, 0xc4, 0x98, 0x49, 0x9b, - 0xcc, 0xc1, 0x39, 0x74, 0xaa, 0xbb, 0x5e, 0xa0, 0x62, 0x77, 0x15, 0xd3, 0x55, 0x2a, 0x33, 0x9f, - 0x62, 0x3e, 0x8c, 0x5f, 0x60, 0x6e, 0x1e, 0x8d, 0xa7, 0xc9, 0x1c, 0xcc, 0x44, 0xbf, 0xc8, 0x84, - 0xea, 0xe6, 0x9f, 0x1c, 0xc8, 0x24, 0x9e, 0xa8, 0x7a, 0x9f, 0xe7, 0xfd, 0x3d, 0x55, 0x05, 0xbc, - 0x68, 0x5f, 0xaa, 0x98, 0x51, 0x68, 0x4a, 0x45, 0x2e, 0x81, 0xf9, 0x41, 0xb3, 0x2f, 0xa4, 0xf2, - 0x3e, 0x0a, 0x0e, 0xce, 0x20, 0x16, 0x4a, 0xe0, 0x42, 0x62, 0x70, 0xc6, 0x86, 0xca, 0x42, 0xc7, - 0x35, 0x09, 0x19, 0x25, 0x4a, 0xc4, 0x49, 0x47, 0xa5, 0xd4, 0x13, 0x3d, 0xa1, 0x97, 0xcd, 0xd1, - 0x2a, 0xad, 0xee, 0x06, 0x42, 0x46, 0x42, 0x7a, 0x89, 0x90, 0x6c, 0x12, 0xe9, 0xe0, 0x33, 0x42, - 0xe6, 0xff, 0x42, 0xaa, 0x0b, 0xc1, 0x01, 0xef, 0x22, 0x33, 0xe8, 0x13, 0xc6, 0x3d, 0x46, 0xed, - 0x6c, 0x2d, 0x5b, 0xcf, 0xbb, 0x6b, 0x7a, 0xdf, 0xa6, 0xf8, 0x00, 0x6d, 0xf8, 0x10, 0xf4, 0x8f, - 0x0e, 0x07, 0x31, 0x74, 0xd9, 0xd0, 0x2e, 0x6a, 0x79, 0xae, 0x86, 0x7f, 0x45, 0x9b, 0x81, 0xe0, - 0x1c, 0x02, 0xc5, 0x84, 0x66, 0xfc, 0x94, 0x98, 0xa6, 0xc5, 0x36, 0xc5, 0x0e, 0xda, 0x56, 0x31, - 0xe1, 0xb2, 0x0b, 0xb1, 0x17, 0xf4, 0x09, 0xe7, 0x10, 0x8e, 0xac, 0x1b, 0xda, 0x5a, 0x1c, 0x4b, - 0xff, 0x26, 0x4a, 0x9b, 0xe2, 0x3d, 0x94, 0x67, 0x7e, 0xe0, 0x51, 0xe0, 0x22, 0xb2, 0x4d, 0xed, - 0x32, 0x99, 0x1f, 0xb4, 0x46, 0x7b, 0xfc, 0x0b, 0x42, 0xfa, 0xcd, 0x12, 0x35, 0xaf, 0xd5, 0xfc, - 0xa8, 0x92, 0xc8, 0xbf, 0x23, 0xeb, 0x8a, 0xfb, 0x82, 0x53, 0xc6, 0x7b, 0xde, 0x00, 0x62, 0x26, - 0xa8, 0x5d, 0xa9, 0x65, 0xeb, 0x86, 0x5b, 0x98, 0xd4, 0xdf, 0xe8, 0x32, 0xfe, 0x0b, 0xa1, 0xc9, - 0x5b, 0x4a, 0x7b, 0xa5, 0xb6, 0x52, 0x5f, 0x3f, 0xac, 0x38, 0x2f, 0xde, 0xdf, 0x79, 0x3b, 0xb6, - 0xb8, 0x33, 0x6e, 0x7c, 0x8c, 0x0a, 0x14, 0x06, 0x42, 0x32, 0xe5, 0x11, 0x4a, 0x63, 0x90, 0xd2, - 0xc6, 0xa3, 0xa3, 0x9c, 0xd8, 0x0f, 0xb7, 0x8d, 0x52, 0xfa, 0xdc, 0xc7, 0x89, 0x72, 0xae, 0x62, - 0xc6, 0x7b, 0xee, 0x56, 0xda, 0x90, 0x56, 0xf1, 0x19, 0x2a, 0xdf, 0x30, 0xd5, 0xa7, 0x31, 0xb9, - 0x21, 0xa1, 0xc7, 0x02, 0x32, 0x21, 0x95, 0x97, 0x90, 0x4a, 0xd3, 0xbe, 0x76, 0x40, 0xc6, 0xbc, - 0x7f, 0x50, 0xa1, 0x0b, 0x30, 0x07, 0xfa, 0x79, 0x09, 0x68, 0xb3, 0x0b, 0x30, 0x43, 0x38, 0x43, - 0x65, 0x0a, 0x21, 0xf4, 0x48, 0xf2, 0x65, 0xce, 0x80, 0xec, 0x65, 0x27, 0x9a, 0xf6, 0xcd, 0xf3, - 0x62, 0xa0, 0x10, 0x0d, 0x16, 0x78, 0xbb, 0xcb, 0x78, 0xd3, 0xbe, 0x19, 0xde, 0x3b, 0x54, 0x54, - 0x42, 0x91, 0xd0, 0x9b, 0xa6, 0x49, 0x7b, 0x53, 0xa3, 0x9c, 0xbb, 0xc7, 0xfd, 0xcc, 0xd7, 0xc7, - 0xfd, 0xdf, 0x7a, 0x4c, 0xf5, 0xaf, 0x7c, 0x27, 0x10, 0x51, 0xfa, 0xa3, 0x4f, 0x3f, 0x1a, 0x92, - 0x5e, 0x36, 0xd5, 0x87, 0x01, 0x48, 0xa7, 0xcd, 0x95, 0x6b, 0x69, 0x50, 0x6b, 0xca, 0xc1, 0x1c, - 0x95, 0x42, 0x22, 0x95, 0x37, 0x73, 0xe2, 0x98, 0x28, 0xb0, 0x91, 0xe6, 0xff, 0xfd, 0x03, 0xfc, - 0x16, 0x04, 0x0f, 0xb7, 0x0d, 0x94, 0x5e, 0xac, 0x05, 0x81, 0x8b, 0x47, 0x64, 0x77, 0x02, 0x76, - 0x89, 0x02, 0x0c, 0xa8, 0xf0, 0x32, 0x6a, 0xfd, 0x15, 0xa2, 0xb6, 0xe2, 0xf9, 0x98, 0x10, 0x6d, - 0x47, 0x8c, 0x2f, 0xdc, 0xaa, 0xf4, 0x0a, 0x51, 0xc5, 0x88, 0x71, 0x77, 0x31, 0x8d, 0x0c, 0x17, - 0xd2, 0x76, 0x5e, 0x25, 0x8d, 0x0c, 0x5f, 0xa4, 0xfd, 0x89, 0xec, 0x50, 0x46, 0x5e, 0xc8, 0xde, - 0x5f, 0x31, 0xea, 0xe9, 0x7f, 0xac, 0x07, 0x9c, 0xf8, 0x21, 0x50, 0x7b, 0xaf, 0x96, 0xad, 0x9b, - 0xee, 0x4e, 0x28, 0xa3, 0x53, 0x2d, 0x9f, 0x8f, 0xd4, 0xff, 0x12, 0x11, 0x97, 0x51, 0xae, 0x4f, - 0x42, 0x05, 0xd4, 0xde, 0xd6, 0xb6, 0x74, 0xd7, 0x31, 0x4c, 0xc3, 0x5a, 0xed, 0x18, 0xe6, 0xaa, - 0x95, 0xeb, 0x18, 0x66, 0xce, 0x5a, 0xeb, 0x18, 0xe6, 0x9a, 0x65, 0x76, 0x0c, 0x73, 0xcb, 0x2a, - 0x74, 0x0c, 0xb3, 0x60, 0x59, 0x1d, 0xc3, 0xb4, 0xac, 0xe2, 0xc9, 0xe9, 0xdd, 0x53, 0x35, 0x7b, - 0xff, 0x54, 0xcd, 0x7e, 0x7b, 0xaa, 0x66, 0x3f, 0x3d, 0x57, 0x33, 0xf7, 0xcf, 0xd5, 0xcc, 0x97, - 0xe7, 0x6a, 0xe6, 0xe2, 0x70, 0xe6, 0x76, 0xe7, 0x7a, 0x96, 0x34, 0x4e, 0x89, 0x2f, 0x9b, 0xe9, - 0x18, 0xbf, 0xfe, 0xe3, 0xa8, 0x39, 0x9c, 0x0e, 0x73, 0x7d, 0x5b, 0x3f, 0xa7, 0x07, 0xf3, 0xd1, - 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x24, 0x83, 0x34, 0x9b, 0x1e, 0x06, 0x00, 0x00, + // 699 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0x4f, 0x4f, 0x1a, 0x41, + 0x18, 0xc6, 0xa1, 0xae, 0xb8, 0x8c, 0x7f, 0x58, 0x56, 0xa4, 0x2b, 0xa6, 0x48, 0x6c, 0xd2, 0xd0, + 0x03, 0x4b, 0xaa, 0x4d, 0x9a, 0x34, 0x3d, 0x54, 0x4b, 0x93, 0x42, 0x8c, 0x69, 0xd6, 0xa4, 0x07, + 0x7b, 0xd8, 0xcc, 0xee, 0xbc, 0xc0, 0xc4, 0xdd, 0x19, 0xba, 0x33, 0x2a, 0xed, 0xa7, 0xe8, 0x87, + 0xf1, 0x0b, 0xf4, 0xe6, 0xd1, 0x78, 0x6a, 0x7a, 0x30, 0x8d, 0x7e, 0x91, 0x86, 0xd9, 0xe5, 0x9f, + 0x1c, 0x48, 0x13, 0x4f, 0xcc, 0xbc, 0xcf, 0xf3, 0xfe, 0x9e, 0x99, 0x01, 0x5e, 0xb4, 0x2d, 0x64, + 0x44, 0x09, 0xd4, 0x85, 0xc4, 0xa7, 0x40, 0x3d, 0xbf, 0xde, 0xe5, 0x42, 0xba, 0x3f, 0x38, 0x03, + 0xbb, 0x17, 0x71, 0xc9, 0xcd, 0x5c, 0x6c, 0xb0, 0x87, 0x86, 0xd2, 0x4c, 0xc7, 0x39, 0x0e, 0x28, + 0xc1, 0x92, 0x47, 0x71, 0x47, 0xa9, 0xd0, 0xe1, 0x1d, 0xae, 0x96, 0xf5, 0xc1, 0x2a, 0xa9, 0x6e, + 0xfa, 0x5c, 0x84, 0x5c, 0xb8, 0xb1, 0x10, 0x6f, 0x62, 0x69, 0xe7, 0x17, 0x42, 0xfa, 0x27, 0x2e, + 0xe4, 0x09, 0x67, 0x60, 0x6e, 0x22, 0xdd, 0xef, 0x62, 0xca, 0x5c, 0x4a, 0xac, 0x74, 0x25, 0x5d, + 0xcd, 0x3a, 0x4b, 0x6a, 0xdf, 0x24, 0xe6, 0x0e, 0x5a, 0xf1, 0xc0, 0xef, 0xee, 0xed, 0xf6, 0x22, + 0x68, 0xd3, 0xbe, 0x95, 0x57, 0xf2, 0x54, 0xcd, 0x7c, 0x8e, 0x56, 0x7d, 0xce, 0x18, 0xf8, 0x92, + 0x72, 0xc5, 0x78, 0x12, 0x9b, 0xc6, 0xc5, 0x26, 0x31, 0x6d, 0xb4, 0x2e, 0x23, 0xcc, 0x44, 0x1b, + 0x22, 0xd7, 0xef, 0x62, 0xc6, 0x20, 0x18, 0x58, 0x57, 0x94, 0x35, 0x3f, 0x94, 0x3e, 0xc4, 0x4a, + 0x93, 0x98, 0x5b, 0x28, 0x4b, 0x3d, 0xdf, 0x25, 0xc0, 0x78, 0x68, 0xe9, 0xca, 0xa5, 0x53, 0xcf, + 0x6f, 0x0c, 0xf6, 0xe6, 0x33, 0x84, 0xd4, 0x9b, 0xc5, 0x6a, 0x56, 0xa9, 0xd9, 0x41, 0x25, 0x96, + 0x5f, 0x22, 0xe3, 0x8c, 0x79, 0x9c, 0x11, 0xca, 0x3a, 0x6e, 0x0f, 0x22, 0xca, 0x89, 0x55, 0xaa, + 0xa4, 0xab, 0x9a, 0x93, 0x1b, 0xd5, 0x3f, 0xab, 0xb2, 0xf9, 0x16, 0xa1, 0xd1, 0x5b, 0x0a, 0x6b, + 0xa1, 0xb2, 0x50, 0x5d, 0xde, 0x2d, 0xd9, 0x0f, 0xde, 0xdf, 0xfe, 0x32, 0xb4, 0x38, 0x13, 0x6e, + 0x73, 0x1f, 0xe5, 0x08, 0xf4, 0xb8, 0xa0, 0xd2, 0xc5, 0x84, 0x44, 0x20, 0x84, 0x65, 0x0e, 0x8e, + 0x72, 0x60, 0xdd, 0x5c, 0xd6, 0x0a, 0xc9, 0x73, 0xef, 0xc7, 0xca, 0xb1, 0x8c, 0x28, 0xeb, 0x38, + 0x6b, 0x49, 0x43, 0x52, 0x35, 0x8f, 0x50, 0xf1, 0x82, 0xca, 0x2e, 0x89, 0xf0, 0x05, 0x0e, 0x5c, + 0xea, 0xe3, 0x11, 0xa9, 0x38, 0x87, 0x54, 0x18, 0xf7, 0x35, 0x7d, 0x3c, 0xe4, 0xbd, 0x47, 0xb9, + 0x36, 0xc0, 0x14, 0xe8, 0xe9, 0x1c, 0xd0, 0x6a, 0x1b, 0x60, 0x82, 0x70, 0x84, 0x8a, 0x04, 0x02, + 0xe8, 0xe0, 0xf8, 0xcb, 0x9c, 0x00, 0x59, 0xf3, 0x4e, 0x34, 0xee, 0x9b, 0xe6, 0x45, 0x40, 0x20, + 0xec, 0xcd, 0xf0, 0x36, 0xe7, 0xf1, 0xc6, 0x7d, 0x13, 0xbc, 0xaf, 0x28, 0x2f, 0xb9, 0xc4, 0x81, + 0x3b, 0x4e, 0x13, 0xd6, 0xaa, 0x42, 0xd9, 0x57, 0xb7, 0xdb, 0xa9, 0x3f, 0xb7, 0xdb, 0x2f, 0x3a, + 0x54, 0x76, 0xcf, 0x3c, 0xdb, 0xe7, 0x61, 0xf2, 0xa3, 0x4f, 0x3e, 0x6a, 0x82, 0x9c, 0xd6, 0xe5, + 0xf7, 0x1e, 0x08, 0xbb, 0xc9, 0xa4, 0x63, 0x28, 0x50, 0x63, 0xcc, 0x31, 0x19, 0x2a, 0x04, 0x58, + 0x48, 0x77, 0xe2, 0xc4, 0x11, 0x96, 0x60, 0x21, 0xc5, 0x7f, 0xf7, 0x1f, 0xfc, 0x06, 0xf8, 0x37, + 0x97, 0x35, 0x94, 0x5c, 0xac, 0x01, 0xbe, 0x63, 0x0e, 0xc8, 0xce, 0x08, 0xec, 0x60, 0x09, 0x26, + 0xa0, 0xdc, 0xc3, 0xa8, 0xe5, 0x47, 0x88, 0x5a, 0x8b, 0xa6, 0x63, 0x02, 0xb4, 0x1e, 0x52, 0x36, + 0x73, 0xab, 0xc2, 0x23, 0x44, 0xe5, 0x43, 0xca, 0x9c, 0xd9, 0x34, 0xdc, 0x9f, 0x49, 0xdb, 0x78, + 0x94, 0x34, 0xdc, 0x7f, 0x90, 0xf6, 0x06, 0x59, 0x81, 0x08, 0xdd, 0x80, 0x7e, 0x3b, 0xa3, 0xc4, + 0x55, 0xff, 0x58, 0x17, 0x18, 0xf6, 0x02, 0x20, 0xd6, 0x56, 0x25, 0x5d, 0xd5, 0x9d, 0x8d, 0x40, + 0x84, 0x87, 0x4a, 0x3e, 0x1e, 0xa8, 0x1f, 0x63, 0xd1, 0x2c, 0xa2, 0x4c, 0x17, 0x07, 0x12, 0x88, + 0xb5, 0xae, 0x6c, 0xc9, 0xae, 0xa5, 0xe9, 0x9a, 0xb1, 0xd8, 0xd2, 0xf4, 0x45, 0x23, 0xd3, 0xd2, + 0xf4, 0x8c, 0xb1, 0xd4, 0xd2, 0xf4, 0x25, 0x43, 0x6f, 0x69, 0xfa, 0x9a, 0x91, 0x6b, 0x69, 0x7a, + 0xce, 0x30, 0x5a, 0x9a, 0x6e, 0x18, 0xf9, 0x83, 0xc3, 0xab, 0xbb, 0x72, 0xfa, 0xfa, 0xae, 0x9c, + 0xfe, 0x7b, 0x57, 0x4e, 0xff, 0xbc, 0x2f, 0xa7, 0xae, 0xef, 0xcb, 0xa9, 0xdf, 0xf7, 0xe5, 0xd4, + 0xc9, 0xee, 0xc4, 0xed, 0x8e, 0xd5, 0x2c, 0xa9, 0x1d, 0x62, 0x4f, 0xd4, 0x93, 0x31, 0x7e, 0xfe, + 0xea, 0x75, 0xbd, 0x3f, 0x1e, 0xe6, 0xea, 0xb6, 0x5e, 0x46, 0x0d, 0xe6, 0xbd, 0x7f, 0x01, 0x00, + 0x00, 0xff, 0xff, 0x02, 0xf8, 0xf7, 0x43, 0x1e, 0x06, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/host_zone_test.go b/x/stakeibc/types/host_zone_test.go index 97cc5cca11..0197fed39a 100644 --- a/x/stakeibc/types/host_zone_test.go +++ b/x/stakeibc/types/host_zone_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestHostZoneUnbondingFrequency(t *testing.T) { diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index 4471c4f94f..eb595cf2c3 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -69,7 +69,7 @@ var fileDescriptor_2976ae6e7f6ce824 = []byte{ 0x01, 0x60, 0x85, 0xcc, 0x4e, 0x3e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x94, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0x76, 0x80, - 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0xc6, 0xfa, 0x15, 0x08, 0x57, 0x97, - 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xf8, - 0x5c, 0xae, 0xb5, 0xd5, 0x00, 0x00, 0x00, + 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0x26, 0xfa, 0x15, 0x08, 0x57, 0x97, + 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xde, + 0x27, 0x6d, 0x6d, 0xd5, 0x00, 0x00, 0x00, } diff --git a/x/stakeibc/types/lsm_tx.pb.go b/x/stakeibc/types/lsm_tx.pb.go index dfcc24278a..7ddc65f6ec 100644 --- a/x/stakeibc/types/lsm_tx.pb.go +++ b/x/stakeibc/types/lsm_tx.pb.go @@ -139,9 +139,9 @@ var fileDescriptor_34c3b474a863e424 = []byte{ 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0xb8, 0xa4, 0x28, 0x33, 0x25, 0x55, 0xd7, 0x27, 0x31, 0x09, 0x14, 0x49, - 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0xb1, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, - 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, - 0x6c, 0xa7, 0xb3, 0xd1, 0x01, 0x00, 0x00, + 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0x89, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, + 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x26, + 0x17, 0x64, 0x6b, 0xd1, 0x01, 0x00, 0x00, } func (m *MsgRedeemTokensForShares) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/message_add_validators.go b/x/stakeibc/types/message_add_validators.go index ad26d4a39e..f41f8afb4e 100644 --- a/x/stakeibc/types/message_add_validators.go +++ b/x/stakeibc/types/message_add_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgAddValidators = "add_validators" diff --git a/x/stakeibc/types/message_add_validators_test.go b/x/stakeibc/types/message_add_validators_test.go index 3d44aadccb..5a1bff3c90 100644 --- a/x/stakeibc/types/message_add_validators_test.go +++ b/x/stakeibc/types/message_add_validators_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestMsgAddValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_change_validator_weight.go b/x/stakeibc/types/message_change_validator_weight.go index a2b4ebfa3c..d5621bc096 100644 --- a/x/stakeibc/types/message_change_validator_weight.go +++ b/x/stakeibc/types/message_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgChangeValidatorWeight = "change_validator_weight" diff --git a/x/stakeibc/types/message_change_validator_weight_test.go b/x/stakeibc/types/message_change_validator_weight_test.go index 1be67c7fef..075dac6294 100644 --- a/x/stakeibc/types/message_change_validator_weight_test.go +++ b/x/stakeibc/types/message_change_validator_weight_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/testutil/sample" + "github.com/Stride-Labs/stride/v14/testutil/sample" ) func TestMsgChangeValidatorWeight_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_claim_undelegated_tokens.go b/x/stakeibc/types/message_claim_undelegated_tokens.go index 8a8e01801d..9b5840562e 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgClaimUndelegatedTokens = "claim_undelegated_tokens" diff --git a/x/stakeibc/types/message_claim_undelegated_tokens_test.go b/x/stakeibc/types/message_claim_undelegated_tokens_test.go index 8c0705568d..3f39598ec0 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens_test.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/testutil/sample" + "github.com/Stride-Labs/stride/v14/testutil/sample" ) func TestMsgClaimUndelegatedTokens_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_clear_balance.go b/x/stakeibc/types/message_clear_balance.go index 818d5a2b4d..3cc64efafb 100644 --- a/x/stakeibc/types/message_clear_balance.go +++ b/x/stakeibc/types/message_clear_balance.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgClearBalance = "clear_balance" diff --git a/x/stakeibc/types/message_delete_validator.go b/x/stakeibc/types/message_delete_validator.go index 2d526358ba..bb37dba0f3 100644 --- a/x/stakeibc/types/message_delete_validator.go +++ b/x/stakeibc/types/message_delete_validator.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgDeleteValidator = "delete_validator" diff --git a/x/stakeibc/types/message_delete_validator_test.go b/x/stakeibc/types/message_delete_validator_test.go index 329d05853d..e6e9f8481a 100644 --- a/x/stakeibc/types/message_delete_validator_test.go +++ b/x/stakeibc/types/message_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/testutil/sample" + "github.com/Stride-Labs/stride/v14/testutil/sample" ) func TestMsgDeleteValidator_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_liquid_stake_test.go b/x/stakeibc/types/message_liquid_stake_test.go index e633053976..f5dce91143 100644 --- a/x/stakeibc/types/message_liquid_stake_test.go +++ b/x/stakeibc/types/message_liquid_stake_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/testutil/sample" + "github.com/Stride-Labs/stride/v14/testutil/sample" ) func TestMsgLiquidStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_lsm_liquid_stake_test.go b/x/stakeibc/types/message_lsm_liquid_stake_test.go index 446d008041..e1a79da551 100644 --- a/x/stakeibc/types/message_lsm_liquid_stake_test.go +++ b/x/stakeibc/types/message_lsm_liquid_stake_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestMsgLSMLiquidStake(t *testing.T) { diff --git a/x/stakeibc/types/message_rebalance_validators.go b/x/stakeibc/types/message_rebalance_validators.go index 0579cdf02f..c789e4b55a 100644 --- a/x/stakeibc/types/message_rebalance_validators.go +++ b/x/stakeibc/types/message_rebalance_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const ( diff --git a/x/stakeibc/types/message_rebalance_validators_test.go b/x/stakeibc/types/message_rebalance_validators_test.go index fcee003ed1..898344cdd9 100644 --- a/x/stakeibc/types/message_rebalance_validators_test.go +++ b/x/stakeibc/types/message_rebalance_validators_test.go @@ -6,8 +6,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/app/apptesting" - "github.com/Stride-Labs/stride/v13/x/stakeibc/types" + "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) func TestMsgRebalanceValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_redeem_stake_test.go b/x/stakeibc/types/message_redeem_stake_test.go index 95479d6832..11ce7aa422 100644 --- a/x/stakeibc/types/message_redeem_stake_test.go +++ b/x/stakeibc/types/message_redeem_stake_test.go @@ -8,7 +8,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v13/testutil/sample" + "github.com/Stride-Labs/stride/v14/testutil/sample" ) func TestMsgRedeemStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index 892fd8dbfc..f3f9b3d6fe 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v13/utils" + "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgRegisterHostZone = "register_host_zone" diff --git a/x/stakeibc/types/message_restore_interchain_account_test.go b/x/stakeibc/types/message_restore_interchain_account_test.go index bef5a589a6..e92afcc10b 100644 --- a/x/stakeibc/types/message_restore_interchain_account_test.go +++ b/x/stakeibc/types/message_restore_interchain_account_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v13/testutil/sample" + "github.com/Stride-Labs/stride/v14/testutil/sample" ) func TestMsgRestoreInterchainAccount_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/packet.pb.go b/x/stakeibc/types/packet.pb.go index e2e58b6b31..c1a551698d 100644 --- a/x/stakeibc/types/packet.pb.go +++ b/x/stakeibc/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_a86fa6a12773333f = []byte{ 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x8d, 0xd6, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xba, 0xbe, 0xcc, - 0xd0, 0x58, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x4b, 0xb1, 0x31, 0xe3, 0x00, 0x00, 0x00, + 0xd0, 0x44, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0x30, 0x72, 0xe9, 0xe3, 0x00, 0x00, 0x00, } func (m *StakeibcPacketData) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index 6f9dff6b24..cb355c88ad 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -188,42 +188,42 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/params.proto", fileDescriptor_5aeaab6a38c2b438) } var fileDescriptor_5aeaab6a38c2b438 = []byte{ - // 552 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x41, 0x6f, 0xd3, 0x30, - 0x1c, 0xc5, 0x5b, 0x88, 0x4a, 0xe7, 0x01, 0x4d, 0x33, 0x04, 0x51, 0x35, 0x52, 0x40, 0x42, 0x62, - 0x0c, 0x1a, 0xc1, 0x2e, 0x88, 0x1d, 0x90, 0x36, 0xed, 0xb0, 0x6a, 0xa0, 0xd2, 0xf6, 0xc4, 0xc5, - 0x72, 0x92, 0x7f, 0x5b, 0x6b, 0x49, 0x1c, 0x6c, 0xb7, 0x74, 0xfb, 0x14, 0x1c, 0x39, 0xf2, 0x71, - 0x38, 0xee, 0xb8, 0x23, 0x6a, 0xbf, 0x08, 0xb2, 0x9d, 0xa6, 0x0d, 0x1a, 0xdc, 0xaa, 0xf7, 0x7e, - 0xff, 0x97, 0xe7, 0xbf, 0x6b, 0xb4, 0x2b, 0x24, 0xa7, 0x11, 0xf8, 0x42, 0x92, 0x73, 0xa0, 0x41, - 0xe8, 0x67, 0x84, 0x93, 0x44, 0x74, 0x32, 0xce, 0x24, 0x73, 0x1a, 0xc6, 0xed, 0xac, 0xdc, 0xd6, - 0x83, 0x31, 0x1b, 0x33, 0xed, 0xf9, 0xea, 0x97, 0xc1, 0x9e, 0x5d, 0xd7, 0x50, 0xad, 0xa7, 0xe7, - 0x9c, 0x3d, 0x64, 0x73, 0xf8, 0x46, 0x78, 0x24, 0x30, 0x4d, 0x25, 0xf0, 0x19, 0x89, 0xdd, 0xea, - 0x93, 0xea, 0x0b, 0xab, 0xdf, 0xc8, 0xf5, 0xd3, 0x5c, 0x76, 0xf6, 0x51, 0x33, 0x82, 0x18, 0xc6, - 0x44, 0xc2, 0x9a, 0xad, 0x69, 0xd6, 0x5e, 0x19, 0x05, 0xbc, 0x87, 0xec, 0x08, 0x32, 0x26, 0xa8, - 0x5c, 0xb3, 0xb7, 0x4c, 0x6e, 0xae, 0x17, 0xe8, 0x3b, 0xe4, 0x72, 0x88, 0x20, 0xc9, 0x24, 0x65, - 0x29, 0xe6, 0xa5, 0xf8, 0xdb, 0x7a, 0xe4, 0xe1, 0xda, 0xef, 0x6f, 0x7e, 0x64, 0x1f, 0x35, 0xcd, - 0x81, 0x71, 0xc8, 0x92, 0x84, 0x0a, 0x41, 0x59, 0xea, 0x5a, 0xa6, 0x91, 0x31, 0x8e, 0x0b, 0x5d, - 0xc1, 0x1c, 0x68, 0x3a, 0x03, 0xb1, 0x51, 0xe9, 0x8e, 0x81, 0x57, 0x46, 0x91, 0xfc, 0x12, 0x35, - 0x69, 0x48, 0xb0, 0xa4, 0x09, 0xb0, 0xa9, 0xc4, 0x29, 0x49, 0x99, 0x70, 0xb7, 0x4c, 0x7f, 0x1a, - 0x92, 0xa1, 0xd1, 0x3f, 0x29, 0xd9, 0x69, 0xa3, 0xed, 0x60, 0x3a, 0x1a, 0x01, 0xc7, 0x82, 0x5e, - 0x82, 0x8b, 0x34, 0x85, 0x8c, 0x34, 0xa0, 0x97, 0xe0, 0xbc, 0x42, 0x0e, 0x0d, 0xc2, 0x22, 0x2c, - 0x88, 0x59, 0x78, 0x2e, 0xdc, 0x6d, 0xf3, 0x69, 0x1a, 0x84, 0x79, 0xda, 0x91, 0xd6, 0x9d, 0x43, - 0xd4, 0x1a, 0x01, 0x60, 0xc9, 0x49, 0x2a, 0x54, 0x68, 0xb9, 0xc3, 0x5d, 0x3d, 0xf5, 0x68, 0x04, - 0x30, 0xcc, 0x81, 0x52, 0x97, 0x0f, 0xe8, 0x71, 0x42, 0xe6, 0x58, 0xdf, 0x3f, 0x56, 0x27, 0x08, - 0x49, 0x1c, 0x0b, 0x9c, 0x01, 0xc7, 0x90, 0xb1, 0x70, 0xe2, 0xde, 0xd3, 0xf3, 0x6e, 0x42, 0xe6, - 0x03, 0xc5, 0x9c, 0x86, 0xe4, 0x58, 0x11, 0x3d, 0xe0, 0x27, 0xca, 0x77, 0x7a, 0xe8, 0x79, 0x04, - 0x23, 0x32, 0x8d, 0x25, 0x4e, 0x68, 0x8a, 0xff, 0xbe, 0x18, 0x39, 0xe1, 0x20, 0x26, 0x2c, 0x8e, - 0xdc, 0xfb, 0x3a, 0xe8, 0x69, 0x0e, 0x7f, 0xa4, 0x69, 0xbf, 0x74, 0x47, 0xc3, 0x15, 0x58, 0x4a, - 0x24, 0xf3, 0xff, 0x24, 0x36, 0xca, 0x89, 0x64, 0xfe, 0xaf, 0xc4, 0x43, 0xd4, 0xd2, 0xfb, 0xbc, - 0x79, 0x43, 0xb6, 0xd9, 0x90, 0xda, 0xeb, 0x4d, 0x1b, 0x3a, 0x41, 0xed, 0x19, 0x89, 0x69, 0x44, - 0x24, 0xe3, 0x58, 0xc4, 0x44, 0x4c, 0xf0, 0xd7, 0x29, 0xf0, 0x8b, 0x8d, 0x22, 0x3b, 0x3a, 0x61, - 0xb7, 0xc0, 0x06, 0x8a, 0xfa, 0xac, 0xa0, 0xa2, 0xc3, 0x7b, 0xeb, 0xc7, 0xcf, 0x76, 0xa5, 0x6b, - 0xd5, 0xeb, 0xf6, 0x56, 0xd7, 0xaa, 0x37, 0x6d, 0xa7, 0x6b, 0xd5, 0x1d, 0x7b, 0xe7, 0xe8, 0xec, - 0xd7, 0xc2, 0xab, 0x5e, 0x2d, 0xbc, 0xea, 0xef, 0x85, 0x57, 0xfd, 0xbe, 0xf4, 0x2a, 0x57, 0x4b, - 0xaf, 0x72, 0xbd, 0xf4, 0x2a, 0x5f, 0xde, 0x8e, 0xa9, 0x9c, 0x4c, 0x83, 0x4e, 0xc8, 0x12, 0x7f, - 0xa0, 0xff, 0x9c, 0xaf, 0xcf, 0x48, 0x20, 0xfc, 0xfc, 0x41, 0xcf, 0xde, 0x1c, 0xf8, 0xf3, 0xf5, - 0xb3, 0x96, 0x17, 0x19, 0x88, 0xa0, 0xa6, 0xdf, 0xeb, 0xc1, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x30, 0x6f, 0xfa, 0xbe, 0xf6, 0x03, 0x00, 0x00, + // 553 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x6f, 0xd3, 0x30, + 0x18, 0xc6, 0x5b, 0x88, 0x4a, 0xe7, 0x01, 0x4d, 0x33, 0x04, 0x51, 0x35, 0x52, 0x40, 0x42, 0x62, + 0x0c, 0x1a, 0xf1, 0xe7, 0x80, 0xd8, 0x01, 0x69, 0xd3, 0x0e, 0xab, 0x06, 0x2a, 0x6d, 0x4f, 0x5c, + 0x2c, 0x27, 0x79, 0xdb, 0x5a, 0x4b, 0xe2, 0x60, 0xbb, 0xa5, 0xdb, 0xa7, 0xe0, 0xc8, 0x91, 0x8f, + 0xc3, 0x71, 0xc7, 0x1d, 0x51, 0xfb, 0x45, 0x90, 0xed, 0x34, 0x6d, 0xd0, 0xe0, 0x56, 0x3d, 0xcf, + 0xef, 0x7d, 0xf2, 0xf8, 0x75, 0x8d, 0x76, 0x85, 0xe4, 0x34, 0x02, 0x5f, 0x48, 0x72, 0x06, 0x34, + 0x08, 0xfd, 0x8c, 0x70, 0x92, 0x88, 0x4e, 0xc6, 0x99, 0x64, 0x4e, 0xc3, 0xb8, 0x9d, 0x95, 0xdb, + 0xba, 0x37, 0x66, 0x63, 0xa6, 0x3d, 0x5f, 0xfd, 0x32, 0xd8, 0x93, 0xab, 0x1a, 0xaa, 0xf5, 0xf4, + 0x9c, 0xb3, 0x87, 0x6c, 0x0e, 0xdf, 0x08, 0x8f, 0x04, 0xa6, 0xa9, 0x04, 0x3e, 0x23, 0xb1, 0x5b, + 0x7d, 0x54, 0x7d, 0x66, 0xf5, 0x1b, 0xb9, 0x7e, 0x92, 0xcb, 0xce, 0x3e, 0x6a, 0x46, 0x10, 0xc3, + 0x98, 0x48, 0x58, 0xb3, 0x35, 0xcd, 0xda, 0x2b, 0xa3, 0x80, 0xf7, 0x90, 0x1d, 0x41, 0xc6, 0x04, + 0x95, 0x6b, 0xf6, 0x86, 0xc9, 0xcd, 0xf5, 0x02, 0x7d, 0x87, 0x5c, 0x0e, 0x11, 0x24, 0x99, 0xa4, + 0x2c, 0xc5, 0xbc, 0x14, 0x7f, 0x53, 0x8f, 0xdc, 0x5f, 0xfb, 0xfd, 0xcd, 0x8f, 0xec, 0xa3, 0xa6, + 0x39, 0x30, 0x0e, 0x59, 0x92, 0x50, 0x21, 0x28, 0x4b, 0x5d, 0xcb, 0x34, 0x32, 0xc6, 0x51, 0xa1, + 0x2b, 0x98, 0x03, 0x4d, 0x67, 0x20, 0x36, 0x2a, 0xdd, 0x32, 0xf0, 0xca, 0x28, 0x92, 0x9f, 0xa3, + 0x26, 0x0d, 0x09, 0x96, 0x34, 0x01, 0x36, 0x95, 0x38, 0x25, 0x29, 0x13, 0xee, 0x96, 0xe9, 0x4f, + 0x43, 0x32, 0x34, 0xfa, 0x27, 0x25, 0x3b, 0x6d, 0xb4, 0x1d, 0x4c, 0x47, 0x23, 0xe0, 0x58, 0xd0, + 0x0b, 0x70, 0x91, 0xa6, 0x90, 0x91, 0x06, 0xf4, 0x02, 0x9c, 0x17, 0xc8, 0xa1, 0x41, 0x58, 0x84, + 0x05, 0x31, 0x0b, 0xcf, 0x84, 0xbb, 0x6d, 0x3e, 0x4d, 0x83, 0x30, 0x4f, 0x3b, 0xd4, 0xba, 0x73, + 0x80, 0x5a, 0x23, 0x00, 0x2c, 0x39, 0x49, 0x85, 0x0a, 0x2d, 0x77, 0xb8, 0xad, 0xa7, 0x1e, 0x8c, + 0x00, 0x86, 0x39, 0x50, 0xea, 0xf2, 0x01, 0x3d, 0x4c, 0xc8, 0x1c, 0xeb, 0xfb, 0xc7, 0xea, 0x04, + 0x21, 0x89, 0x63, 0x81, 0x33, 0xe0, 0x18, 0x32, 0x16, 0x4e, 0xdc, 0x3b, 0x7a, 0xde, 0x4d, 0xc8, + 0x7c, 0xa0, 0x98, 0x93, 0x90, 0x1c, 0x29, 0xa2, 0x07, 0xfc, 0x58, 0xf9, 0x4e, 0x0f, 0x3d, 0x8d, + 0x60, 0x44, 0xa6, 0xb1, 0xc4, 0x09, 0x4d, 0xf1, 0xdf, 0x17, 0x23, 0x27, 0x1c, 0xc4, 0x84, 0xc5, + 0x91, 0x7b, 0x57, 0x07, 0x3d, 0xce, 0xe1, 0x8f, 0x34, 0xed, 0x97, 0xee, 0x68, 0xb8, 0x02, 0x4b, + 0x89, 0x64, 0xfe, 0x9f, 0xc4, 0x46, 0x39, 0x91, 0xcc, 0xff, 0x95, 0x78, 0x80, 0x5a, 0x7a, 0x9f, + 0xd7, 0x6f, 0xc8, 0x36, 0x1b, 0x52, 0x7b, 0xbd, 0x6e, 0x43, 0xc7, 0xa8, 0x3d, 0x23, 0x31, 0x8d, + 0x88, 0x64, 0x1c, 0x8b, 0x98, 0x88, 0x09, 0xfe, 0x3a, 0x05, 0x7e, 0xbe, 0x51, 0x64, 0x47, 0x27, + 0xec, 0x16, 0xd8, 0x40, 0x51, 0x9f, 0x15, 0x54, 0x74, 0x78, 0x6f, 0xfd, 0xf8, 0xd9, 0xae, 0x74, + 0xad, 0x7a, 0xdd, 0xde, 0xea, 0x5a, 0xf5, 0xa6, 0xed, 0x74, 0xad, 0xba, 0x63, 0xef, 0x1c, 0x9e, + 0xfe, 0x5a, 0x78, 0xd5, 0xcb, 0x85, 0x57, 0xfd, 0xbd, 0xf0, 0xaa, 0xdf, 0x97, 0x5e, 0xe5, 0x72, + 0xe9, 0x55, 0xae, 0x96, 0x5e, 0xe5, 0xcb, 0xeb, 0x31, 0x95, 0x93, 0x69, 0xd0, 0x09, 0x59, 0xe2, + 0x0f, 0xf4, 0x9f, 0xf3, 0xe5, 0x29, 0x09, 0x84, 0x9f, 0x3f, 0xe8, 0xd9, 0xab, 0xb7, 0xfe, 0x7c, + 0xfd, 0xac, 0xe5, 0x79, 0x06, 0x22, 0xa8, 0xe9, 0xf7, 0xfa, 0xe6, 0x4f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x16, 0x14, 0x39, 0x66, 0xf6, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/query.pb.go b/x/stakeibc/types/query.pb.go index be83acd48f..efcc520213 100644 --- a/x/stakeibc/types/query.pb.go +++ b/x/stakeibc/types/query.pb.go @@ -959,77 +959,77 @@ func init() { proto.RegisterFile("stride/stakeibc/query.proto", fileDescriptor_4 var fileDescriptor_494b786fe66f2b80 = []byte{ // 1156 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xc7, 0xb3, 0x4d, 0x9a, 0x97, 0x27, 0x89, 0x42, 0x87, 0x88, 0x38, 0xdb, 0xc4, 0x21, 0xd3, - 0xd2, 0xbc, 0x90, 0x7a, 0x89, 0x53, 0x90, 0x1a, 0x51, 0x41, 0x22, 0xb5, 0x8d, 0x51, 0x40, 0xc1, + 0x18, 0xc7, 0xb3, 0x6d, 0x9a, 0x97, 0x27, 0x89, 0x42, 0x87, 0x88, 0x38, 0xdb, 0xc4, 0x21, 0xd3, + 0xd2, 0xbc, 0x90, 0x7a, 0x89, 0x13, 0x90, 0x1a, 0x51, 0x41, 0x22, 0xb5, 0x8d, 0x51, 0x40, 0xc1, 0x85, 0x0a, 0x95, 0x83, 0x35, 0xde, 0x1d, 0xec, 0x55, 0xd7, 0x33, 0xee, 0xee, 0x3a, 0x24, 0x44, 0x56, 0x25, 0x3e, 0x41, 0x05, 0xe2, 0xc2, 0xad, 0x88, 0x03, 0x67, 0x3e, 0x45, 0x6f, 0x54, 0xe2, 0xc2, 0x29, 0x42, 0x09, 0x9f, 0xa0, 0xe2, 0x03, 0xa0, 0x9d, 0x99, 0x5d, 0xdb, 0xfb, 0x62, 0x9c, - 0xde, 0x3c, 0x33, 0xcf, 0xcb, 0x6f, 0x9e, 0x79, 0xe6, 0x3f, 0x6b, 0xb8, 0xea, 0xf9, 0xae, 0x6d, + 0xde, 0x3c, 0x33, 0xcf, 0xcb, 0x6f, 0x9e, 0x79, 0xe6, 0x3f, 0x6b, 0xb8, 0xe6, 0xf9, 0xae, 0x6d, 0x51, 0xc3, 0xf3, 0xc9, 0x63, 0x6a, 0x57, 0x4d, 0xe3, 0x49, 0x8b, 0xba, 0xc7, 0x85, 0xa6, 0xcb, - 0x7d, 0x8e, 0x66, 0xe4, 0x62, 0x21, 0x5c, 0xd4, 0x67, 0x6b, 0xbc, 0xc6, 0xc5, 0x9a, 0x11, 0xfc, - 0x92, 0x66, 0xfa, 0x42, 0x8d, 0xf3, 0x9a, 0x43, 0x0d, 0xd2, 0xb4, 0x0d, 0xc2, 0x18, 0xf7, 0x89, - 0x6f, 0x73, 0xe6, 0xa9, 0xd5, 0x75, 0x93, 0x7b, 0x0d, 0xee, 0x19, 0x55, 0xe2, 0x51, 0x19, 0xdd, - 0x38, 0xdc, 0xac, 0x52, 0x9f, 0x6c, 0x1a, 0x4d, 0x52, 0xb3, 0x99, 0x30, 0x0e, 0x23, 0xc5, 0x69, - 0x9a, 0xc4, 0x25, 0x8d, 0x30, 0xd2, 0x52, 0x7c, 0xf5, 0x90, 0x38, 0xb6, 0x45, 0x7c, 0xee, 0x66, - 0x19, 0xd4, 0xb9, 0xe7, 0x57, 0xbe, 0xe3, 0x8c, 0x2a, 0x83, 0x6b, 0x71, 0x03, 0xda, 0xe4, 0x66, - 0xbd, 0xe2, 0xbb, 0xc4, 0x7c, 0x4c, 0xc3, 0x28, 0x2b, 0x71, 0x23, 0x62, 0x59, 0x2e, 0xf5, 0xbc, - 0x4a, 0x8b, 0x55, 0x39, 0xb3, 0x6c, 0x56, 0x93, 0x86, 0xf8, 0x29, 0xac, 0x7e, 0x1e, 0xec, 0xa7, + 0x7d, 0x8e, 0xa6, 0xe5, 0x62, 0x21, 0x5c, 0xd4, 0x67, 0x6a, 0xbc, 0xc6, 0xc5, 0x9a, 0x11, 0xfc, + 0x92, 0x66, 0xfa, 0x7c, 0x8d, 0xf3, 0x9a, 0x43, 0x0d, 0xd2, 0xb4, 0x0d, 0xc2, 0x18, 0xf7, 0x89, + 0x6f, 0x73, 0xe6, 0xa9, 0xd5, 0x35, 0x93, 0x7b, 0x0d, 0xee, 0x19, 0x55, 0xe2, 0x51, 0x19, 0xdd, + 0x38, 0xdc, 0xa8, 0x52, 0x9f, 0x6c, 0x18, 0x4d, 0x52, 0xb3, 0x99, 0x30, 0x0e, 0x23, 0xc5, 0x69, + 0x9a, 0xc4, 0x25, 0x8d, 0x30, 0xd2, 0x62, 0x7c, 0xf5, 0x90, 0x38, 0xb6, 0x45, 0x7c, 0xee, 0x66, + 0x19, 0xd4, 0xb9, 0xe7, 0x57, 0xbe, 0xe3, 0x8c, 0x2a, 0x83, 0xeb, 0x71, 0x03, 0xda, 0xe4, 0x66, + 0xbd, 0xe2, 0xbb, 0xc4, 0x7c, 0x4c, 0xc3, 0x28, 0xcb, 0x71, 0x23, 0x62, 0x59, 0x2e, 0xf5, 0xbc, + 0x4a, 0x8b, 0x55, 0x39, 0xb3, 0x6c, 0x56, 0x93, 0x86, 0xf8, 0x29, 0xac, 0x7c, 0x1e, 0xec, 0xa7, 0xc4, 0x7c, 0xea, 0x9a, 0x75, 0x62, 0xb3, 0x1d, 0xd3, 0xe4, 0x2d, 0xe6, 0xdf, 0x73, 0x79, 0x63, - 0x47, 0x3a, 0x95, 0xe9, 0x93, 0x16, 0xf5, 0x7c, 0x34, 0x0b, 0x97, 0xf9, 0xb7, 0x8c, 0xba, 0x39, - 0xed, 0x6d, 0x6d, 0x75, 0xa2, 0x2c, 0x07, 0xe8, 0x0e, 0x4c, 0x9b, 0x9c, 0x31, 0x6a, 0x06, 0x35, - 0xa8, 0xd8, 0x56, 0xee, 0x52, 0xb0, 0xba, 0x9b, 0x7b, 0x75, 0xba, 0x34, 0x7b, 0x4c, 0x1a, 0xce, - 0x36, 0xee, 0x59, 0xc6, 0xe5, 0xa9, 0xce, 0xb8, 0x64, 0xe1, 0x67, 0x1a, 0xac, 0x0d, 0x40, 0xe0, + 0x47, 0x3a, 0x95, 0xe9, 0x93, 0x16, 0xf5, 0x7c, 0x34, 0x03, 0x57, 0xf8, 0xb7, 0x8c, 0xba, 0x39, + 0xed, 0x6d, 0x6d, 0x65, 0xbc, 0x2c, 0x07, 0xe8, 0x0e, 0x4c, 0x99, 0x9c, 0x31, 0x6a, 0x06, 0x35, + 0xa8, 0xd8, 0x56, 0xee, 0x52, 0xb0, 0xba, 0x9b, 0x7b, 0x75, 0xba, 0x38, 0x73, 0x4c, 0x1a, 0xce, + 0x36, 0xee, 0x59, 0xc6, 0xe5, 0xc9, 0xce, 0xb8, 0x64, 0xe1, 0x67, 0x1a, 0xac, 0x0e, 0x40, 0xe0, 0x35, 0x39, 0xf3, 0x28, 0x32, 0x41, 0xb7, 0x23, 0xbb, 0x0a, 0x91, 0x86, 0x15, 0xb5, 0x39, 0xc9, - 0xb5, 0xfb, 0xce, 0xab, 0xd3, 0xa5, 0x65, 0x99, 0x39, 0xdb, 0x16, 0x97, 0x73, 0x76, 0x3c, 0xa1, - 0x4a, 0x86, 0x67, 0x01, 0x09, 0xa2, 0x03, 0x71, 0x70, 0x6a, 0xf7, 0x78, 0x1f, 0xde, 0xec, 0x99, - 0x55, 0x44, 0xef, 0xc3, 0xa8, 0x3c, 0x60, 0x91, 0x7d, 0xb2, 0x38, 0x57, 0x88, 0x35, 0x5c, 0x41, - 0x3a, 0xec, 0x8e, 0xbc, 0x38, 0x5d, 0x1a, 0x2a, 0x2b, 0x63, 0xfc, 0x01, 0xcc, 0x8b, 0x68, 0xf7, - 0xa9, 0xff, 0x30, 0xec, 0x80, 0xa8, 0xd0, 0xf3, 0x30, 0x2e, 0xa1, 0x6d, 0x4b, 0xd5, 0x7a, 0x4c, - 0x8c, 0x4b, 0x16, 0xfe, 0x0a, 0xf4, 0x34, 0x3f, 0x05, 0xb3, 0x0d, 0x10, 0xf5, 0x53, 0x00, 0x34, - 0xbc, 0x3a, 0x59, 0xd4, 0x13, 0x40, 0x91, 0x63, 0xb9, 0xcb, 0x1a, 0xdf, 0x82, 0xb9, 0x30, 0xf2, - 0x1e, 0xf7, 0xfc, 0x47, 0x9c, 0xd1, 0x81, 0x78, 0x72, 0x49, 0x2f, 0x45, 0xf3, 0x21, 0x4c, 0x44, - 0xcd, 0xab, 0xaa, 0x33, 0x9f, 0x80, 0x09, 0xbd, 0x54, 0x7d, 0xc6, 0xeb, 0x6a, 0x8c, 0x89, 0xe2, - 0xd9, 0x71, 0x9c, 0x38, 0xcf, 0x3d, 0x80, 0xce, 0xb5, 0x53, 0x91, 0x6f, 0x14, 0xe4, 0x1d, 0x2d, + 0xb5, 0xfb, 0xce, 0xab, 0xd3, 0xc5, 0x25, 0x99, 0x39, 0xdb, 0x16, 0x97, 0x73, 0x76, 0x3c, 0xa1, + 0x4a, 0x86, 0x67, 0x00, 0x09, 0xa2, 0x03, 0x71, 0x70, 0x6a, 0xf7, 0x78, 0x1f, 0xde, 0xec, 0x99, + 0x55, 0x44, 0xef, 0xc3, 0x88, 0x3c, 0x60, 0x91, 0x7d, 0xa2, 0x38, 0x5b, 0x88, 0x35, 0x5c, 0x41, + 0x3a, 0xec, 0x0e, 0xbf, 0x38, 0x5d, 0x1c, 0x2a, 0x2b, 0x63, 0xfc, 0x01, 0xcc, 0x89, 0x68, 0xf7, + 0xa9, 0xff, 0x30, 0xec, 0x80, 0xa8, 0xd0, 0x73, 0x30, 0x26, 0xa1, 0x6d, 0x4b, 0xd5, 0x7a, 0x54, + 0x8c, 0x4b, 0x16, 0xfe, 0x0a, 0xf4, 0x34, 0x3f, 0x05, 0xb3, 0x0d, 0x10, 0xf5, 0x53, 0x00, 0x74, + 0x79, 0x65, 0xa2, 0xa8, 0x27, 0x80, 0x22, 0xc7, 0x72, 0x97, 0x35, 0xde, 0x82, 0xd9, 0x30, 0xf2, + 0x1e, 0xf7, 0xfc, 0x47, 0x9c, 0xd1, 0x81, 0x78, 0x72, 0x49, 0x2f, 0x45, 0xf3, 0x21, 0x8c, 0x47, + 0xcd, 0xab, 0xaa, 0x33, 0x97, 0x80, 0x09, 0xbd, 0x54, 0x7d, 0xc6, 0xea, 0x6a, 0x8c, 0x89, 0xe2, + 0xd9, 0x71, 0x9c, 0x38, 0xcf, 0x3d, 0x80, 0xce, 0xb5, 0x53, 0x91, 0x6f, 0x16, 0xe4, 0x1d, 0x2d, 0x04, 0x77, 0xb4, 0x20, 0x15, 0x40, 0xdd, 0xd1, 0xc2, 0x01, 0xa9, 0x85, 0xbe, 0xe5, 0x2e, 0x4f, - 0xfc, 0x5c, 0x53, 0xf4, 0x3d, 0x39, 0xd2, 0xe9, 0x87, 0x2f, 0x44, 0x8f, 0xee, 0xf7, 0x20, 0x5e, - 0x12, 0x88, 0x2b, 0xff, 0x8b, 0x28, 0x53, 0xf7, 0x30, 0x1a, 0xaa, 0x51, 0x3e, 0xe5, 0x56, 0xcb, - 0xa1, 0xb1, 0x1b, 0x89, 0x60, 0x84, 0x91, 0x06, 0x55, 0x87, 0x22, 0x7e, 0xe3, 0xf7, 0x54, 0x87, - 0xc4, 0x1c, 0xd4, 0xae, 0x10, 0x8c, 0x04, 0x37, 0x20, 0xf4, 0x08, 0x7e, 0xe3, 0x3d, 0xb8, 0x1a, - 0x9e, 0xe1, 0xdd, 0x40, 0x4b, 0xbe, 0x90, 0x52, 0x12, 0x26, 0x59, 0x83, 0x37, 0xa4, 0xc4, 0xd8, - 0x16, 0x65, 0xbe, 0xfd, 0x8d, 0x1d, 0x29, 0xc0, 0x8c, 0x98, 0x2f, 0x45, 0xd3, 0xb8, 0x0e, 0x0b, - 0xe9, 0x91, 0x54, 0xf6, 0x3d, 0x98, 0xee, 0x51, 0x2b, 0x75, 0x76, 0x8b, 0x89, 0xba, 0x76, 0x7b, - 0xab, 0xda, 0x4e, 0xd1, 0xae, 0x39, 0xbc, 0xa8, 0x98, 0x77, 0x1c, 0x27, 0x85, 0x39, 0x02, 0x49, - 0x2c, 0x67, 0x83, 0x0c, 0xbf, 0x1e, 0xc8, 0xd7, 0xb0, 0x1c, 0x6e, 0xf9, 0x33, 0x7a, 0xe4, 0x1f, - 0x04, 0xb3, 0xfe, 0x83, 0x00, 0x83, 0x99, 0x51, 0xc3, 0x2e, 0x02, 0x98, 0x75, 0xc2, 0x18, 0x75, - 0x3a, 0x57, 0x68, 0x42, 0xcd, 0x94, 0x2c, 0x34, 0x07, 0x63, 0x4d, 0xee, 0xfa, 0x91, 0x78, 0x96, - 0x47, 0x83, 0x61, 0xc9, 0xc2, 0x1f, 0x03, 0xee, 0x17, 0x5c, 0x6d, 0x46, 0x87, 0x71, 0x4f, 0xcd, - 0x89, 0xd8, 0x23, 0xe5, 0x68, 0x8c, 0x8b, 0xf0, 0x96, 0x2c, 0x84, 0xec, 0x83, 0x2f, 0x43, 0xf9, - 0xf7, 0x50, 0x0e, 0xc6, 0x7a, 0x74, 0xb3, 0x1c, 0x0e, 0xf1, 0x11, 0xe4, 0xd3, 0x7d, 0xa2, 0x8c, - 0x0f, 0x01, 0x25, 0x1e, 0x94, 0x50, 0x6f, 0x96, 0x13, 0x35, 0x8c, 0xc7, 0x51, 0x75, 0xbc, 0x42, - 0xe2, 0xf1, 0x8b, 0xff, 0x4e, 0xc1, 0x65, 0x91, 0x1a, 0x3d, 0x85, 0x51, 0xa9, 0x9b, 0xe8, 0x5a, - 0x22, 0x5e, 0x52, 0x9c, 0xf5, 0xeb, 0xfd, 0x8d, 0x24, 0x36, 0x5e, 0xff, 0xfe, 0xcf, 0x7f, 0x7e, - 0xbc, 0x74, 0x1d, 0x61, 0xe3, 0x81, 0xb0, 0x76, 0x48, 0xd5, 0x33, 0xd2, 0x9f, 0x6b, 0xf4, 0x5c, - 0x03, 0xe8, 0x28, 0x2c, 0x5a, 0x4f, 0x4f, 0x90, 0x26, 0xdf, 0xfa, 0xbb, 0x03, 0xd9, 0x2a, 0xa6, - 0x6d, 0xc1, 0x74, 0x0b, 0x15, 0x15, 0xd3, 0xcd, 0xfd, 0x34, 0xa8, 0x8e, 0x4e, 0x1b, 0x27, 0xa1, - 0x14, 0xb7, 0xd1, 0xcf, 0x1a, 0x8c, 0x87, 0x0a, 0x84, 0x56, 0x33, 0xb3, 0xc6, 0xe4, 0x53, 0x5f, - 0x1b, 0xc0, 0x52, 0xd1, 0xdd, 0x16, 0x74, 0x5b, 0x68, 0xb3, 0x2f, 0x5d, 0xa4, 0x93, 0xdd, 0x70, - 0x3f, 0x68, 0x30, 0x19, 0xc6, 0xdb, 0x71, 0x9c, 0x2c, 0xbe, 0xa4, 0xbc, 0x67, 0xf1, 0xa5, 0x88, - 0x34, 0x2e, 0x08, 0xbe, 0x55, 0x74, 0x63, 0x30, 0x3e, 0xf4, 0xab, 0x06, 0xd3, 0x3d, 0xc2, 0x98, - 0x75, 0xb0, 0x69, 0x72, 0x9b, 0x75, 0xb0, 0xa9, 0x4a, 0x3b, 0xe0, 0xc1, 0x36, 0x84, 0x6f, 0xf8, - 0x55, 0x62, 0x9c, 0x04, 0x12, 0xde, 0x46, 0x3f, 0x69, 0xb0, 0xd0, 0xef, 0x7b, 0x08, 0xdd, 0x4e, - 0x27, 0x19, 0xe0, 0x2b, 0x4e, 0xdf, 0x7e, 0x1d, 0x57, 0x75, 0xef, 0x7f, 0xd7, 0x60, 0xaa, 0x5b, - 0x11, 0xd1, 0x46, 0x66, 0x2b, 0xa5, 0xa8, 0xb2, 0x7e, 0x73, 0x40, 0x6b, 0x55, 0xc1, 0xbb, 0xa2, - 0x82, 0x1f, 0xa1, 0x3b, 0x7d, 0x2b, 0xd8, 0xa3, 0xe3, 0xc6, 0x49, 0xfc, 0xa9, 0x6a, 0xa3, 0x5f, - 0x34, 0x98, 0xe9, 0x8e, 0x1f, 0x34, 0xe3, 0x46, 0x66, 0x8b, 0x5d, 0x80, 0x3b, 0xe3, 0x71, 0xc1, - 0x45, 0xc1, 0xbd, 0x81, 0xd6, 0x07, 0xe7, 0x46, 0x7f, 0x68, 0x80, 0x92, 0x12, 0x8f, 0x8a, 0x99, - 0x15, 0xcb, 0x7c, 0x6c, 0xf4, 0xad, 0x0b, 0xf9, 0x28, 0xe6, 0x03, 0xc1, 0xfc, 0x09, 0xda, 0xeb, - 0xcb, 0xcc, 0xe8, 0x91, 0x5f, 0x69, 0x8a, 0x08, 0x95, 0xf0, 0x89, 0x11, 0x77, 0x5e, 0x3d, 0x6d, - 0x6d, 0xe3, 0x44, 0x3d, 0x64, 0x6d, 0xf4, 0x9b, 0x06, 0x57, 0x92, 0xaf, 0xce, 0x4a, 0x46, 0x29, - 0xe3, 0x86, 0xba, 0x31, 0xa0, 0xe1, 0x05, 0xa5, 0xaa, 0xf3, 0x5c, 0x19, 0x27, 0xea, 0xd2, 0xb5, - 0x77, 0xf7, 0x5f, 0x9c, 0xe5, 0xb5, 0x97, 0x67, 0x79, 0xed, 0xef, 0xb3, 0xbc, 0xf6, 0xec, 0x3c, - 0x3f, 0xf4, 0xf2, 0x3c, 0x3f, 0xf4, 0xd7, 0x79, 0x7e, 0xe8, 0x51, 0xb1, 0x66, 0xfb, 0xf5, 0x56, - 0xb5, 0x60, 0xf2, 0x46, 0x5a, 0xd8, 0xc3, 0xcd, 0x2d, 0xe3, 0xa8, 0x13, 0xdc, 0x3f, 0x6e, 0x52, - 0xaf, 0x3a, 0x2a, 0xfe, 0x59, 0x6d, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x80, 0xae, 0xf9, + 0xfc, 0x5c, 0x53, 0xf4, 0x3d, 0x39, 0xd2, 0xe9, 0x2f, 0x5f, 0x88, 0x1e, 0xdd, 0xef, 0x41, 0xbc, + 0x24, 0x10, 0x97, 0xff, 0x17, 0x51, 0xa6, 0xee, 0x61, 0x34, 0x54, 0xa3, 0x7c, 0xca, 0xad, 0x96, + 0x43, 0x63, 0x37, 0x12, 0xc1, 0x30, 0x23, 0x0d, 0xaa, 0x0e, 0x45, 0xfc, 0xc6, 0xef, 0xa9, 0x0e, + 0x89, 0x39, 0xa8, 0x5d, 0x21, 0x18, 0x0e, 0x6e, 0x40, 0xe8, 0x11, 0xfc, 0xc6, 0x7b, 0x70, 0x2d, + 0x3c, 0xc3, 0xbb, 0x81, 0x96, 0x7c, 0x21, 0xa5, 0x24, 0x4c, 0xb2, 0x0a, 0x6f, 0x48, 0x89, 0xb1, + 0x2d, 0xca, 0x7c, 0xfb, 0x1b, 0x3b, 0x52, 0x80, 0x69, 0x31, 0x5f, 0x8a, 0xa6, 0x71, 0x1d, 0xe6, + 0xd3, 0x23, 0xa9, 0xec, 0x7b, 0x30, 0xd5, 0xa3, 0x56, 0xea, 0xec, 0x16, 0x12, 0x75, 0xed, 0xf6, + 0x56, 0xb5, 0x9d, 0xa4, 0x5d, 0x73, 0x78, 0x41, 0x31, 0xef, 0x38, 0x4e, 0x0a, 0x73, 0x04, 0x92, + 0x58, 0xce, 0x06, 0xb9, 0xfc, 0x7a, 0x20, 0x5f, 0xc3, 0x52, 0xb8, 0xe5, 0xcf, 0xe8, 0x91, 0x7f, + 0x10, 0xcc, 0xfa, 0x0f, 0x02, 0x0c, 0x66, 0x46, 0x0d, 0xbb, 0x00, 0x60, 0xd6, 0x09, 0x63, 0xd4, + 0xe9, 0x5c, 0xa1, 0x71, 0x35, 0x53, 0xb2, 0xd0, 0x2c, 0x8c, 0x36, 0xb9, 0xeb, 0x47, 0xe2, 0x59, + 0x1e, 0x09, 0x86, 0x25, 0x0b, 0x7f, 0x0c, 0xb8, 0x5f, 0x70, 0xb5, 0x19, 0x1d, 0xc6, 0x3c, 0x35, + 0x27, 0x62, 0x0f, 0x97, 0xa3, 0x31, 0x2e, 0xc2, 0x5b, 0xb2, 0x10, 0xb2, 0x0f, 0xbe, 0x0c, 0xe5, + 0xdf, 0x43, 0x39, 0x18, 0xed, 0xd1, 0xcd, 0x72, 0x38, 0xc4, 0x47, 0x90, 0x4f, 0xf7, 0x89, 0x32, + 0x3e, 0x04, 0x94, 0x78, 0x50, 0x42, 0xbd, 0x59, 0x4a, 0xd4, 0x30, 0x1e, 0x47, 0xd5, 0xf1, 0x2a, + 0x89, 0xc7, 0x2f, 0xfe, 0x3b, 0x09, 0x57, 0x44, 0x6a, 0xf4, 0x14, 0x46, 0xa4, 0x6e, 0xa2, 0xeb, + 0x89, 0x78, 0x49, 0x71, 0xd6, 0x6f, 0xf4, 0x37, 0x92, 0xd8, 0x78, 0xed, 0xfb, 0x3f, 0xff, 0xf9, + 0xf1, 0xd2, 0x0d, 0x84, 0x8d, 0x07, 0xc2, 0xda, 0x21, 0x55, 0xcf, 0x48, 0x7f, 0xae, 0xd1, 0x73, + 0x0d, 0xa0, 0xa3, 0xb0, 0x68, 0x2d, 0x3d, 0x41, 0x9a, 0x7c, 0xeb, 0xef, 0x0e, 0x64, 0xab, 0x98, + 0xb6, 0x05, 0xd3, 0x16, 0x2a, 0x2a, 0xa6, 0x5b, 0xfb, 0x69, 0x50, 0x1d, 0x9d, 0x36, 0x4e, 0x42, + 0x29, 0x6e, 0xa3, 0x9f, 0x35, 0x18, 0x0b, 0x15, 0x08, 0xad, 0x64, 0x66, 0x8d, 0xc9, 0xa7, 0xbe, + 0x3a, 0x80, 0xa5, 0xa2, 0xbb, 0x2d, 0xe8, 0x36, 0xd1, 0x46, 0x5f, 0xba, 0x48, 0x27, 0xbb, 0xe1, + 0x7e, 0xd0, 0x60, 0x22, 0x8c, 0xb7, 0xe3, 0x38, 0x59, 0x7c, 0x49, 0x79, 0xcf, 0xe2, 0x4b, 0x11, + 0x69, 0x5c, 0x10, 0x7c, 0x2b, 0xe8, 0xe6, 0x60, 0x7c, 0xe8, 0x57, 0x0d, 0xa6, 0x7a, 0x84, 0x31, + 0xeb, 0x60, 0xd3, 0xe4, 0x36, 0xeb, 0x60, 0x53, 0x95, 0x76, 0xc0, 0x83, 0x6d, 0x08, 0xdf, 0xf0, + 0xab, 0xc4, 0x38, 0x09, 0x24, 0xbc, 0x8d, 0x7e, 0xd2, 0x60, 0xbe, 0xdf, 0xf7, 0x10, 0xba, 0x9d, + 0x4e, 0x32, 0xc0, 0x57, 0x9c, 0xbe, 0xfd, 0x3a, 0xae, 0xea, 0xde, 0xff, 0xae, 0xc1, 0x64, 0xb7, + 0x22, 0xa2, 0xf5, 0xcc, 0x56, 0x4a, 0x51, 0x65, 0xfd, 0xd6, 0x80, 0xd6, 0xaa, 0x82, 0x77, 0x45, + 0x05, 0x3f, 0x42, 0x77, 0xfa, 0x56, 0xb0, 0x47, 0xc7, 0x8d, 0x93, 0xf8, 0x53, 0xd5, 0x46, 0xbf, + 0x68, 0x30, 0xdd, 0x1d, 0x3f, 0x68, 0xc6, 0xf5, 0xcc, 0x16, 0xbb, 0x00, 0x77, 0xc6, 0xe3, 0x82, + 0x8b, 0x82, 0x7b, 0x1d, 0xad, 0x0d, 0xce, 0x8d, 0xfe, 0xd0, 0x00, 0x25, 0x25, 0x1e, 0x15, 0x33, + 0x2b, 0x96, 0xf9, 0xd8, 0xe8, 0x9b, 0x17, 0xf2, 0x51, 0xcc, 0x07, 0x82, 0xf9, 0x13, 0xb4, 0xd7, + 0x97, 0x99, 0xd1, 0x23, 0xbf, 0xd2, 0x14, 0x11, 0x2a, 0xe1, 0x13, 0x23, 0xee, 0xbc, 0x7a, 0xda, + 0xda, 0xc6, 0x89, 0x7a, 0xc8, 0xda, 0xe8, 0x37, 0x0d, 0xae, 0x26, 0x5f, 0x9d, 0xe5, 0x8c, 0x52, + 0xc6, 0x0d, 0x75, 0x63, 0x40, 0xc3, 0x0b, 0x4a, 0x55, 0xe7, 0xb9, 0x32, 0x4e, 0xd4, 0xa5, 0x6b, + 0xef, 0xee, 0xbf, 0x38, 0xcb, 0x6b, 0x2f, 0xcf, 0xf2, 0xda, 0xdf, 0x67, 0x79, 0xed, 0xd9, 0x79, + 0x7e, 0xe8, 0xe5, 0x79, 0x7e, 0xe8, 0xaf, 0xf3, 0xfc, 0xd0, 0xa3, 0x62, 0xcd, 0xf6, 0xeb, 0xad, + 0x6a, 0xc1, 0xe4, 0x8d, 0xb4, 0xb0, 0x87, 0x1b, 0x5b, 0xc6, 0x51, 0x27, 0xb8, 0x7f, 0xdc, 0xa4, + 0x5e, 0x75, 0x44, 0xfc, 0xb3, 0xda, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x87, 0xfb, 0x6d, 0x21, 0x97, 0x0e, 0x00, 0x00, } diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index 7844ce6d59..e987b67adc 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1214,90 +1214,90 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1326 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6f, 0xdc, 0x44, - 0x14, 0x8f, 0x9b, 0x34, 0xdd, 0xbe, 0x6c, 0xbe, 0x9c, 0xb4, 0x75, 0x5c, 0xba, 0xbb, 0x75, 0xf8, - 0x08, 0x85, 0xec, 0x2a, 0x49, 0x25, 0x44, 0x05, 0x87, 0x6c, 0x52, 0xc4, 0x4a, 0x4d, 0x85, 0x9c, - 0x96, 0x4a, 0x95, 0x90, 0x99, 0xf5, 0x4c, 0xbd, 0x56, 0xed, 0x99, 0xad, 0xc7, 0x1b, 0xb6, 0x1c, - 0x10, 0x17, 0x24, 0x2e, 0x48, 0x20, 0x24, 0x8e, 0xa8, 0x07, 0x0e, 0x48, 0xdc, 0x50, 0xff, 0x88, - 0x1e, 0xab, 0x9e, 0x10, 0x87, 0x15, 0x6a, 0x2f, 0x9c, 0xf3, 0x17, 0x20, 0x8f, 0xbd, 0xb3, 0xf6, - 0xae, 0xf3, 0xd1, 0x16, 0xe5, 0x94, 0x7d, 0xf3, 0x7e, 0xf3, 0xde, 0xef, 0xbd, 0x79, 0xf3, 0xe6, - 0xc5, 0xa0, 0xf1, 0x30, 0x70, 0x31, 0xa9, 0xf1, 0x10, 0xdd, 0x27, 0x6e, 0xd3, 0xae, 0x85, 0xdd, - 0x6a, 0x3b, 0x60, 0x21, 0x53, 0x67, 0x63, 0x4d, 0xb5, 0xaf, 0xd1, 0x2f, 0x0f, 0x43, 0x5d, 0x1b, - 0x59, 0xc8, 0xb6, 0x59, 0x87, 0x86, 0xf1, 0x1e, 0xbd, 0x3c, 0x0c, 0xd9, 0x43, 0x9e, 0x8b, 0x51, - 0xc8, 0x82, 0x04, 0xb0, 0xe8, 0x30, 0x87, 0x89, 0x9f, 0xb5, 0xe8, 0x57, 0xb2, 0xba, 0x64, 0x33, - 0xee, 0x33, 0x6e, 0xc5, 0x8a, 0x58, 0x88, 0x55, 0xc6, 0x4f, 0x0a, 0xcc, 0xec, 0x70, 0xe7, 0x86, - 0xfb, 0xa0, 0xe3, 0xe2, 0xdd, 0xc8, 0xac, 0xaa, 0xc1, 0x19, 0x3b, 0x20, 0x91, 0x51, 0x4d, 0xa9, - 0x28, 0x2b, 0x67, 0xcd, 0xbe, 0xa8, 0x7e, 0x02, 0x93, 0xc8, 0x8f, 0xe8, 0x68, 0xa7, 0x22, 0x45, - 0xbd, 0xfa, 0xa4, 0x57, 0x1e, 0xfb, 0xbb, 0x57, 0x7e, 0xdb, 0x71, 0xc3, 0x56, 0xa7, 0x59, 0xb5, - 0x99, 0x9f, 0x58, 0x4f, 0xfe, 0xac, 0x72, 0x7c, 0xbf, 0x16, 0x3e, 0x6c, 0x13, 0x5e, 0x6d, 0xd0, - 0xd0, 0x4c, 0x76, 0xab, 0x97, 0x00, 0x5a, 0x8c, 0x87, 0x16, 0x26, 0x94, 0xf9, 0xda, 0xb8, 0x70, - 0x72, 0x36, 0x5a, 0xd9, 0x8e, 0x16, 0x0c, 0x0d, 0xce, 0x67, 0x29, 0x99, 0x84, 0xb7, 0x19, 0xe5, - 0xc4, 0xf8, 0x4d, 0x81, 0xf9, 0x48, 0xb5, 0xbb, 0x73, 0xb2, 0x84, 0x57, 0x61, 0xc1, 0xe3, 0xbe, - 0x15, 0xb2, 0xfb, 0x84, 0x5a, 0x6e, 0xd3, 0xce, 0x30, 0x9f, 0xf3, 0xb8, 0x7f, 0x2b, 0xd2, 0x34, - 0x9a, 0x76, 0x1c, 0xc0, 0x4d, 0x58, 0x1a, 0x61, 0xd9, 0x8f, 0x41, 0x5d, 0x83, 0xc5, 0x30, 0x40, - 0x94, 0x23, 0x3b, 0x74, 0x19, 0xb5, 0x6c, 0xe6, 0xb7, 0x3d, 0x12, 0x12, 0x41, 0xbd, 0x60, 0x2e, - 0xa4, 0x74, 0x5b, 0x89, 0xca, 0xf8, 0x5d, 0x81, 0xd9, 0x1d, 0xee, 0x6c, 0x79, 0x04, 0x05, 0x75, - 0xe4, 0x21, 0x6a, 0x1f, 0x16, 0xf4, 0x12, 0x14, 0xec, 0x16, 0x72, 0xa9, 0xe5, 0xe2, 0x38, 0x6c, - 0xf3, 0x8c, 0x90, 0x1b, 0x38, 0x95, 0x8f, 0xf1, 0xd7, 0xca, 0x47, 0xe4, 0xbc, 0x85, 0x28, 0x25, - 0x9e, 0x36, 0x21, 0x3d, 0x44, 0xa2, 0xb1, 0x04, 0x17, 0x86, 0x98, 0xca, 0xc3, 0xfb, 0x23, 0x2e, - 0x35, 0x93, 0x60, 0x42, 0xfc, 0x93, 0x3a, 0xb9, 0x8b, 0x20, 0x0a, 0xcb, 0xfa, 0x9a, 0x51, 0x92, - 0x9c, 0x57, 0x21, 0x5a, 0xb8, 0xcb, 0x28, 0x51, 0x75, 0x28, 0x04, 0xc4, 0x26, 0xee, 0x1e, 0x09, - 0x92, 0x38, 0xa4, 0x9c, 0x14, 0x61, 0x8a, 0xac, 0x8c, 0xe3, 0xcf, 0xd3, 0xb0, 0x20, 0x54, 0x8e, - 0xcb, 0x43, 0x12, 0x7c, 0xda, 0xb7, 0xf6, 0x31, 0x4c, 0xdb, 0x8c, 0x52, 0x12, 0x9f, 0x6b, 0x3f, - 0xf9, 0x75, 0x6d, 0xbf, 0x57, 0x5e, 0x7c, 0x88, 0x7c, 0xef, 0x9a, 0x91, 0x51, 0x1b, 0x66, 0x71, - 0x20, 0x37, 0xb0, 0x6a, 0x40, 0xb1, 0x49, 0xec, 0xd6, 0xc6, 0x7a, 0x3b, 0x20, 0xf7, 0xdc, 0xae, - 0x56, 0x14, 0x84, 0x32, 0x6b, 0xea, 0xd5, 0xcc, 0xc5, 0x11, 0x94, 0xeb, 0xe7, 0xf6, 0x7b, 0xe5, - 0xf9, 0xd8, 0xfe, 0x40, 0x67, 0xa4, 0xee, 0x93, 0xba, 0x06, 0x67, 0x07, 0x35, 0x7b, 0x5a, 0x6c, - 0x5a, 0xdc, 0xef, 0x95, 0xe7, 0xe2, 0x4d, 0x52, 0x65, 0x98, 0x05, 0x37, 0xa9, 0xe0, 0xf4, 0xc1, - 0x4c, 0x66, 0x0f, 0xe6, 0x26, 0xc4, 0x25, 0x7a, 0x8f, 0x04, 0x56, 0x72, 0xe8, 0x51, 0xac, 0x20, - 0xcc, 0x96, 0xf6, 0x7b, 0x65, 0x3d, 0x36, 0x9b, 0x03, 0x32, 0xcc, 0xf9, 0xfe, 0xea, 0x56, 0xbc, - 0x28, 0x4a, 0x72, 0xae, 0x43, 0x9b, 0x8c, 0x62, 0x97, 0x3a, 0x56, 0x9b, 0x04, 0x2e, 0xc3, 0xda, - 0x54, 0x45, 0x59, 0x99, 0xa8, 0x5f, 0xdc, 0xef, 0x95, 0x2f, 0xc4, 0xc6, 0x86, 0x11, 0x86, 0x39, - 0x2b, 0x97, 0x3e, 0x13, 0x2b, 0xaa, 0x07, 0x0b, 0xbe, 0x4b, 0xad, 0x80, 0x60, 0xe2, 0xb7, 0x45, - 0x8a, 0x03, 0x14, 0x12, 0x6d, 0x5a, 0xf0, 0xfa, 0xe8, 0x25, 0xaa, 0x67, 0x9b, 0xd8, 0xcf, 0x1e, - 0xaf, 0x42, 0xd2, 0x25, 0xb7, 0x89, 0x6d, 0xce, 0xfb, 0x2e, 0x35, 0xa5, 0x5d, 0x13, 0x85, 0x44, - 0x78, 0x43, 0xdd, 0x11, 0x6f, 0x33, 0xff, 0x8b, 0x37, 0xd4, 0x1d, 0xf2, 0xf6, 0x01, 0x68, 0x51, - 0xfb, 0xf1, 0x44, 0x37, 0xb1, 0x44, 0xf3, 0xb7, 0x08, 0x45, 0x4d, 0x8f, 0x60, 0x6d, 0x56, 0xb4, - 0x8d, 0x73, 0x1e, 0xf7, 0x53, 0xcd, 0xe6, 0x7a, 0xac, 0xbc, 0x56, 0xf8, 0xfe, 0x51, 0x79, 0xec, - 0xdf, 0x47, 0xe5, 0x31, 0xe3, 0x12, 0x5c, 0xcc, 0xa9, 0x59, 0x59, 0xd3, 0xdf, 0x29, 0xa2, 0x65, - 0x6d, 0x79, 0xc8, 0xf5, 0x6f, 0x53, 0x4c, 0x3c, 0xe2, 0xa0, 0x90, 0x60, 0xd1, 0xd6, 0xf8, 0x21, - 0xd7, 0xb4, 0x02, 0x45, 0x79, 0xbd, 0x06, 0xfd, 0x06, 0xfa, 0x37, 0xac, 0x81, 0xd5, 0x45, 0x38, - 0x4d, 0xda, 0xcc, 0x6e, 0x89, 0xcb, 0x37, 0x61, 0xc6, 0x82, 0x7a, 0x1e, 0x26, 0x39, 0xa1, 0x58, - 0xde, 0xbb, 0x44, 0x32, 0x96, 0xe1, 0xf2, 0x81, 0x34, 0x24, 0xd9, 0x30, 0xb9, 0x9a, 0xcd, 0xb8, - 0xc1, 0x7c, 0xde, 0x7f, 0x03, 0x0f, 0x23, 0x9a, 0xe9, 0x03, 0xa7, 0x86, 0xfa, 0xc0, 0x32, 0x4c, - 0xd3, 0x8e, 0x6f, 0x05, 0x7d, 0x8b, 0x09, 0xd7, 0x22, 0xed, 0xf8, 0xd2, 0x8b, 0x51, 0x81, 0x52, - 0xbe, 0xd7, 0x74, 0x12, 0xe7, 0x76, 0xb8, 0xb3, 0x89, 0xf1, 0xeb, 0x53, 0xba, 0x06, 0x20, 0xdf, - 0x76, 0xae, 0x8d, 0x57, 0xc6, 0x57, 0xa6, 0xd6, 0xf5, 0xea, 0xd0, 0xc8, 0x50, 0x95, 0x7e, 0xcc, - 0x14, 0xda, 0xd0, 0x41, 0x1b, 0xa6, 0x21, 0x39, 0xfe, 0xaa, 0x08, 0x65, 0x74, 0xff, 0x9c, 0x41, - 0x0c, 0x77, 0x88, 0xeb, 0xb4, 0xc2, 0x57, 0xe5, 0xba, 0x01, 0x85, 0x3d, 0xe4, 0x59, 0x08, 0xe3, - 0x20, 0x79, 0x57, 0xb4, 0x67, 0x8f, 0x57, 0x17, 0x93, 0x9a, 0xde, 0xc4, 0x38, 0x20, 0x9c, 0xef, - 0x86, 0x81, 0x4b, 0x1d, 0xf3, 0xcc, 0x1e, 0xf2, 0xa2, 0x95, 0xa8, 0x02, 0xbe, 0x12, 0x5e, 0x45, - 0x05, 0x4c, 0x98, 0x89, 0x64, 0x18, 0x50, 0x39, 0x88, 0x9f, 0x0c, 0xe2, 0x5b, 0x05, 0xd4, 0x1d, - 0xee, 0x6c, 0x93, 0xe8, 0x75, 0x94, 0xa0, 0x93, 0xa4, 0x6f, 0xbc, 0x01, 0xfa, 0x28, 0x03, 0x49, - 0xf0, 0x17, 0x25, 0xb9, 0x6e, 0x3c, 0x64, 0x01, 0x69, 0xd0, 0x90, 0x04, 0xe2, 0x09, 0xde, 0x8c, - 0xa7, 0xb9, 0x57, 0x7b, 0xbc, 0xeb, 0x50, 0x4c, 0xa6, 0x41, 0x2b, 0xea, 0x1d, 0x82, 0xeb, 0xcc, - 0x7a, 0x79, 0xa4, 0x28, 0x1a, 0x5b, 0x9b, 0x89, 0x9f, 0x5b, 0x0f, 0xdb, 0xc4, 0x9c, 0x42, 0x03, - 0xc1, 0x78, 0x0b, 0x96, 0x0f, 0xe1, 0x25, 0xf9, 0x3f, 0x10, 0x87, 0x70, 0xbb, 0x8d, 0x51, 0x2a, - 0xba, 0xdd, 0x16, 0x0a, 0x08, 0xbf, 0xde, 0xb5, 0x5b, 0xa2, 0x29, 0xbd, 0x52, 0x0c, 0x1a, 0x44, - 0x19, 0x64, 0x6d, 0x92, 0xa4, 0xda, 0xec, 0x8b, 0xc6, 0x15, 0x58, 0x39, 0xca, 0x65, 0x9f, 0xde, - 0xfa, 0xcf, 0x00, 0xe3, 0x3b, 0xdc, 0x51, 0xef, 0xc0, 0x54, 0x7a, 0x0e, 0x1c, 0x4d, 0x45, 0x76, - 0x8c, 0xd4, 0xdf, 0x39, 0x02, 0x20, 0x67, 0xb4, 0x2f, 0x61, 0x66, 0x68, 0xc6, 0x34, 0x72, 0xb7, - 0x66, 0x30, 0xfa, 0x95, 0xa3, 0x31, 0xd2, 0xc3, 0x1d, 0x98, 0x4a, 0x0f, 0x42, 0xb9, 0xd4, 0x53, - 0x80, 0x7c, 0xea, 0x39, 0xd3, 0x89, 0x7a, 0x0f, 0xe6, 0x46, 0x26, 0x93, 0x37, 0xf3, 0x37, 0x67, - 0x51, 0xfa, 0xfb, 0xc7, 0x41, 0x49, 0x3f, 0x5d, 0x38, 0x7f, 0xc0, 0x6b, 0x91, 0x9b, 0x86, 0x7c, - 0xac, 0xbe, 0x7e, 0x7c, 0xac, 0xf4, 0xcc, 0x60, 0x21, 0xaf, 0xf7, 0x1f, 0x90, 0xa1, 0x11, 0xa0, - 0x5e, 0x3b, 0x26, 0x50, 0x3a, 0xfc, 0x02, 0xa6, 0xb3, 0x3d, 0xfd, 0x72, 0x9e, 0x85, 0x0c, 0x44, - 0x7f, 0xf7, 0x48, 0x88, 0x34, 0xdf, 0x81, 0x73, 0xf9, 0xed, 0x38, 0xd7, 0x46, 0x2e, 0x54, 0x5f, - 0x3b, 0x36, 0x54, 0xba, 0xb5, 0x61, 0x76, 0xb8, 0x81, 0x2e, 0xe7, 0x59, 0x19, 0x02, 0xe9, 0xef, - 0x1d, 0x03, 0x24, 0x9d, 0x7c, 0x03, 0xda, 0x81, 0x4d, 0xf0, 0x80, 0x7a, 0xcb, 0x47, 0xeb, 0x57, - 0x5f, 0x06, 0x2d, 0xfd, 0xff, 0xa0, 0xc0, 0xa5, 0xc3, 0xdb, 0x58, 0x6e, 0xe6, 0x0e, 0xdd, 0xa2, - 0x7f, 0xf8, 0xd2, 0x5b, 0x24, 0x9f, 0xbb, 0x50, 0xcc, 0xfc, 0x17, 0x57, 0xc9, 0xaf, 0xff, 0x01, - 0x42, 0x5f, 0x39, 0x0a, 0xd1, 0xb7, 0x5d, 0xbf, 0xf1, 0xe4, 0x79, 0x49, 0x79, 0xfa, 0xbc, 0xa4, - 0xfc, 0xf3, 0xbc, 0xa4, 0xfc, 0xf8, 0xa2, 0x34, 0xf6, 0xf4, 0x45, 0x69, 0xec, 0xaf, 0x17, 0xa5, - 0xb1, 0xbb, 0xeb, 0xa9, 0x41, 0x74, 0x57, 0x58, 0x5b, 0xbd, 0x81, 0x9a, 0xbc, 0x96, 0x7c, 0x4d, - 0xd8, 0x5b, 0xdb, 0xa8, 0x75, 0x53, 0x5f, 0x28, 0xa2, 0xc1, 0xb4, 0x39, 0x29, 0xbe, 0x0f, 0x6c, - 0xfc, 0x17, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xaf, 0xd8, 0xd3, 0xc1, 0x10, 0x00, 0x00, + // 1327 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0x36, 0x69, 0xea, 0xbe, 0x38, 0xff, 0x36, 0x69, 0xbb, 0xd9, 0x52, 0xdb, 0xdd, 0xf0, + 0x27, 0x14, 0x62, 0x2b, 0x69, 0x25, 0x44, 0x05, 0x87, 0x38, 0x29, 0xc2, 0x52, 0x53, 0xa1, 0x4d, + 0x4b, 0xa5, 0x4a, 0x68, 0x19, 0xef, 0x4c, 0xd7, 0xab, 0xee, 0xce, 0xb8, 0x3b, 0xeb, 0xe0, 0x72, + 0x40, 0x5c, 0x90, 0xb8, 0x20, 0x81, 0x90, 0x38, 0xa2, 0x1e, 0x38, 0x20, 0x71, 0x43, 0xfd, 0x10, + 0x3d, 0x56, 0x3d, 0x21, 0x0e, 0x16, 0x6a, 0x2f, 0x9c, 0xf3, 0x09, 0xd0, 0xce, 0xae, 0xc7, 0xbb, + 0xf6, 0xc6, 0x49, 0x5b, 0xd4, 0x53, 0xfc, 0xe6, 0xfd, 0xe6, 0xbd, 0xdf, 0x7b, 0xf3, 0xe6, 0xcd, + 0xcb, 0x82, 0xc6, 0xc3, 0xc0, 0xc5, 0xa4, 0xc6, 0x43, 0x74, 0x8f, 0xb8, 0x4d, 0xbb, 0x16, 0x76, + 0xab, 0xed, 0x80, 0x85, 0x4c, 0x9d, 0x8f, 0x35, 0xd5, 0xbe, 0x46, 0xbf, 0x38, 0x0c, 0x75, 0x6d, + 0x64, 0x21, 0xdb, 0x66, 0x1d, 0x1a, 0xc6, 0x7b, 0xf4, 0xf2, 0x30, 0x64, 0x1f, 0x79, 0x2e, 0x46, + 0x21, 0x0b, 0x12, 0xc0, 0xb2, 0xc3, 0x1c, 0x26, 0x7e, 0xd6, 0xa2, 0x5f, 0xc9, 0xea, 0x8a, 0xcd, + 0xb8, 0xcf, 0xb8, 0x15, 0x2b, 0x62, 0x21, 0x56, 0x19, 0x3f, 0x29, 0x30, 0xb7, 0xcb, 0x9d, 0xeb, + 0xee, 0xfd, 0x8e, 0x8b, 0xf7, 0x22, 0xb3, 0xaa, 0x06, 0xa7, 0xec, 0x80, 0x44, 0x46, 0x35, 0xa5, + 0xa2, 0xac, 0x9d, 0x36, 0xfb, 0xa2, 0xfa, 0x09, 0x4c, 0x23, 0x3f, 0xa2, 0xa3, 0x9d, 0x88, 0x14, + 0xf5, 0xea, 0xe3, 0x5e, 0x79, 0xe2, 0xef, 0x5e, 0xf9, 0x6d, 0xc7, 0x0d, 0x5b, 0x9d, 0x66, 0xd5, + 0x66, 0x7e, 0x62, 0x3d, 0xf9, 0xb3, 0xce, 0xf1, 0xbd, 0x5a, 0xf8, 0xa0, 0x4d, 0x78, 0xb5, 0x41, + 0x43, 0x33, 0xd9, 0xad, 0x5e, 0x00, 0x68, 0x31, 0x1e, 0x5a, 0x98, 0x50, 0xe6, 0x6b, 0x93, 0xc2, + 0xc9, 0xe9, 0x68, 0x65, 0x27, 0x5a, 0x30, 0x34, 0x38, 0x9b, 0xa5, 0x64, 0x12, 0xde, 0x66, 0x94, + 0x13, 0xe3, 0x37, 0x05, 0x16, 0x23, 0xd5, 0xde, 0xee, 0xeb, 0x25, 0xbc, 0x0e, 0x4b, 0x1e, 0xf7, + 0xad, 0x90, 0xdd, 0x23, 0xd4, 0x72, 0x9b, 0x76, 0x86, 0xf9, 0x82, 0xc7, 0xfd, 0x9b, 0x91, 0xa6, + 0xd1, 0xb4, 0xe3, 0x00, 0x6e, 0xc0, 0xca, 0x08, 0xcb, 0x7e, 0x0c, 0xea, 0x06, 0x2c, 0x87, 0x01, + 0xa2, 0x1c, 0xd9, 0xa1, 0xcb, 0xa8, 0x65, 0x33, 0xbf, 0xed, 0x91, 0x90, 0x08, 0xea, 0x05, 0x73, + 0x29, 0xa5, 0xdb, 0x4e, 0x54, 0xc6, 0xef, 0x0a, 0xcc, 0xef, 0x72, 0x67, 0xdb, 0x23, 0x28, 0xa8, + 0x23, 0x0f, 0x51, 0x7b, 0x5c, 0xd0, 0x2b, 0x50, 0xb0, 0x5b, 0xc8, 0xa5, 0x96, 0x8b, 0xe3, 0xb0, + 0xcd, 0x53, 0x42, 0x6e, 0xe0, 0x54, 0x3e, 0x26, 0x5f, 0x29, 0x1f, 0x91, 0xf3, 0x16, 0xa2, 0x94, + 0x78, 0xda, 0x94, 0xf4, 0x10, 0x89, 0xc6, 0x0a, 0x9c, 0x1b, 0x62, 0x2a, 0x0f, 0xef, 0x8f, 0xb8, + 0xd4, 0x4c, 0x82, 0x09, 0xf1, 0x5f, 0xd7, 0xc9, 0x9d, 0x07, 0x51, 0x58, 0xd6, 0xd7, 0x8c, 0x92, + 0xe4, 0xbc, 0x0a, 0xd1, 0xc2, 0x1d, 0x46, 0x89, 0xaa, 0x43, 0x21, 0x20, 0x36, 0x71, 0xf7, 0x49, + 0x90, 0xc4, 0x21, 0xe5, 0xa4, 0x08, 0x53, 0x64, 0x65, 0x1c, 0x7f, 0x9e, 0x84, 0x25, 0xa1, 0x72, + 0x5c, 0x1e, 0x92, 0xe0, 0xd3, 0xbe, 0xb5, 0x8f, 0x61, 0xd6, 0x66, 0x94, 0x92, 0xf8, 0x5c, 0xfb, + 0xc9, 0xaf, 0x6b, 0x07, 0xbd, 0xf2, 0xf2, 0x03, 0xe4, 0x7b, 0x57, 0x8d, 0x8c, 0xda, 0x30, 0x8b, + 0x03, 0xb9, 0x81, 0x55, 0x03, 0x8a, 0x4d, 0x62, 0xb7, 0x2e, 0x6f, 0xb6, 0x03, 0x72, 0xd7, 0xed, + 0x6a, 0x45, 0x41, 0x28, 0xb3, 0xa6, 0x5e, 0xc9, 0x5c, 0x1c, 0x41, 0xb9, 0x7e, 0xe6, 0xa0, 0x57, + 0x5e, 0x8c, 0xed, 0x0f, 0x74, 0x46, 0xea, 0x3e, 0xa9, 0x1b, 0x70, 0x7a, 0x50, 0xb3, 0x27, 0xc5, + 0xa6, 0xe5, 0x83, 0x5e, 0x79, 0x21, 0xde, 0x24, 0x55, 0x86, 0x59, 0x70, 0x93, 0x0a, 0x4e, 0x1f, + 0xcc, 0x74, 0xf6, 0x60, 0x6e, 0x40, 0x5c, 0xa2, 0x77, 0x49, 0x60, 0x25, 0x87, 0x1e, 0xc5, 0x0a, + 0xc2, 0x6c, 0xe9, 0xa0, 0x57, 0xd6, 0x63, 0xb3, 0x39, 0x20, 0xc3, 0x5c, 0xec, 0xaf, 0x6e, 0xc7, + 0x8b, 0xa2, 0x24, 0x17, 0x3a, 0xb4, 0xc9, 0x28, 0x76, 0xa9, 0x63, 0xb5, 0x49, 0xe0, 0x32, 0xac, + 0xcd, 0x54, 0x94, 0xb5, 0xa9, 0xfa, 0xf9, 0x83, 0x5e, 0xf9, 0x5c, 0x6c, 0x6c, 0x18, 0x61, 0x98, + 0xf3, 0x72, 0xe9, 0x33, 0xb1, 0xa2, 0x7a, 0xb0, 0xe4, 0xbb, 0xd4, 0x0a, 0x08, 0x26, 0x7e, 0x5b, + 0xa4, 0x38, 0x40, 0x21, 0xd1, 0x66, 0x05, 0xaf, 0x8f, 0x5e, 0xa0, 0x7a, 0x76, 0x88, 0xfd, 0xf4, + 0xd1, 0x3a, 0x24, 0x5d, 0x72, 0x87, 0xd8, 0xe6, 0xa2, 0xef, 0x52, 0x53, 0xda, 0x35, 0x51, 0x48, + 0x84, 0x37, 0xd4, 0x1d, 0xf1, 0x36, 0xf7, 0xbf, 0x78, 0x43, 0xdd, 0x21, 0x6f, 0x1f, 0x80, 0x16, + 0xb5, 0x1f, 0x4f, 0x74, 0x13, 0x4b, 0x34, 0x7f, 0x8b, 0x50, 0xd4, 0xf4, 0x08, 0xd6, 0xe6, 0x45, + 0xdb, 0x38, 0xe3, 0x71, 0x3f, 0xd5, 0x6c, 0xae, 0xc5, 0xca, 0xab, 0x85, 0xef, 0x1f, 0x96, 0x27, + 0xfe, 0x7d, 0x58, 0x9e, 0x30, 0x2e, 0xc0, 0xf9, 0x9c, 0x9a, 0x95, 0x35, 0xfd, 0x9d, 0x22, 0x5a, + 0xd6, 0xb6, 0x87, 0x5c, 0xff, 0x16, 0xc5, 0xc4, 0x23, 0x0e, 0x0a, 0x09, 0x16, 0x6d, 0x8d, 0x8f, + 0xb9, 0xa6, 0x15, 0x28, 0xca, 0xeb, 0x35, 0xe8, 0x37, 0xd0, 0xbf, 0x61, 0x0d, 0xac, 0x2e, 0xc3, + 0x49, 0xd2, 0x66, 0x76, 0x4b, 0x5c, 0xbe, 0x29, 0x33, 0x16, 0xd4, 0xb3, 0x30, 0xcd, 0x09, 0xc5, + 0xf2, 0xde, 0x25, 0x92, 0xb1, 0x0a, 0x17, 0x0f, 0xa5, 0x21, 0xc9, 0x86, 0xc9, 0xd5, 0x6c, 0xc6, + 0x0d, 0xe6, 0xf3, 0xfe, 0x1b, 0x38, 0x8e, 0x68, 0xa6, 0x0f, 0x9c, 0x18, 0xea, 0x03, 0xab, 0x30, + 0x4b, 0x3b, 0xbe, 0x15, 0xf4, 0x2d, 0x26, 0x5c, 0x8b, 0xb4, 0xe3, 0x4b, 0x2f, 0x46, 0x05, 0x4a, + 0xf9, 0x5e, 0xd3, 0x49, 0x5c, 0xd8, 0xe5, 0xce, 0x16, 0xc6, 0xaf, 0x4e, 0xe9, 0x2a, 0x80, 0x7c, + 0xdb, 0xb9, 0x36, 0x59, 0x99, 0x5c, 0x9b, 0xd9, 0xd4, 0xab, 0x43, 0x23, 0x43, 0x55, 0xfa, 0x31, + 0x53, 0x68, 0x43, 0x07, 0x6d, 0x98, 0x86, 0xe4, 0xf8, 0xab, 0x22, 0x94, 0xd1, 0xfd, 0x73, 0x06, + 0x31, 0xdc, 0x26, 0xae, 0xd3, 0x0a, 0x5f, 0x96, 0xeb, 0x65, 0x28, 0xec, 0x23, 0xcf, 0x42, 0x18, + 0x07, 0xc9, 0xbb, 0xa2, 0x3d, 0x7d, 0xb4, 0xbe, 0x9c, 0xd4, 0xf4, 0x16, 0xc6, 0x01, 0xe1, 0x7c, + 0x2f, 0x0c, 0x5c, 0xea, 0x98, 0xa7, 0xf6, 0x91, 0x17, 0xad, 0x44, 0x15, 0xf0, 0x95, 0xf0, 0x2a, + 0x2a, 0x60, 0xca, 0x4c, 0x24, 0xc3, 0x80, 0xca, 0x61, 0xfc, 0x64, 0x10, 0xdf, 0x2a, 0xa0, 0xee, + 0x72, 0x67, 0x87, 0x44, 0xaf, 0xa3, 0x04, 0xbd, 0x4e, 0xfa, 0xc6, 0x1b, 0xa0, 0x8f, 0x32, 0x90, + 0x04, 0x7f, 0x51, 0x92, 0xeb, 0xc6, 0x43, 0x16, 0x90, 0x06, 0x0d, 0x49, 0x20, 0x9e, 0xe0, 0xad, + 0x78, 0x9a, 0x7b, 0xb9, 0xc7, 0xbb, 0x0e, 0xc5, 0x64, 0x1a, 0xb4, 0xa2, 0xde, 0x21, 0xb8, 0xce, + 0x6d, 0x96, 0x47, 0x8a, 0xa2, 0xb1, 0xbd, 0x95, 0xf8, 0xb9, 0xf9, 0xa0, 0x4d, 0xcc, 0x19, 0x34, + 0x10, 0x8c, 0xb7, 0x60, 0x75, 0x0c, 0x2f, 0xc9, 0xff, 0xbe, 0x38, 0x84, 0x5b, 0x6d, 0x8c, 0x52, + 0xd1, 0xed, 0xb5, 0x50, 0x40, 0xf8, 0xb5, 0xae, 0xdd, 0x12, 0x4d, 0xe9, 0xa5, 0x62, 0xd0, 0x20, + 0xca, 0x20, 0x6b, 0x93, 0x24, 0xd5, 0x66, 0x5f, 0x34, 0x2e, 0xc1, 0xda, 0x51, 0x2e, 0xfb, 0xf4, + 0x36, 0x7f, 0x06, 0x98, 0xdc, 0xe5, 0x8e, 0x7a, 0x1b, 0x66, 0xd2, 0x73, 0xe0, 0x68, 0x2a, 0xb2, + 0x63, 0xa4, 0xfe, 0xce, 0x11, 0x00, 0x39, 0xa3, 0x7d, 0x09, 0x73, 0x43, 0x33, 0xa6, 0x91, 0xbb, + 0x35, 0x83, 0xd1, 0x2f, 0x1d, 0x8d, 0x91, 0x1e, 0x6e, 0xc3, 0x4c, 0x7a, 0x10, 0xca, 0xa5, 0x9e, + 0x02, 0xe4, 0x53, 0xcf, 0x99, 0x4e, 0xd4, 0xbb, 0xb0, 0x30, 0x32, 0x99, 0xbc, 0x99, 0xbf, 0x39, + 0x8b, 0xd2, 0xdf, 0x3f, 0x0e, 0x4a, 0xfa, 0xe9, 0xc2, 0xd9, 0x43, 0x5e, 0x8b, 0xdc, 0x34, 0xe4, + 0x63, 0xf5, 0xcd, 0xe3, 0x63, 0xa5, 0x67, 0x06, 0x4b, 0x79, 0xbd, 0xff, 0x90, 0x0c, 0x8d, 0x00, + 0xf5, 0xda, 0x31, 0x81, 0xd2, 0xe1, 0x17, 0x30, 0x9b, 0xed, 0xe9, 0x17, 0xf3, 0x2c, 0x64, 0x20, + 0xfa, 0xbb, 0x47, 0x42, 0xa4, 0xf9, 0x0e, 0x9c, 0xc9, 0x6f, 0xc7, 0xb9, 0x36, 0x72, 0xa1, 0xfa, + 0xc6, 0xb1, 0xa1, 0xd2, 0xad, 0x0d, 0xf3, 0xc3, 0x0d, 0x74, 0x35, 0xcf, 0xca, 0x10, 0x48, 0x7f, + 0xef, 0x18, 0x20, 0xe9, 0xe4, 0x1b, 0xd0, 0x0e, 0x6d, 0x82, 0x87, 0xd4, 0x5b, 0x3e, 0x5a, 0xbf, + 0xf2, 0x22, 0x68, 0xe9, 0xff, 0x07, 0x05, 0x2e, 0x8c, 0x6f, 0x63, 0xb9, 0x99, 0x1b, 0xbb, 0x45, + 0xff, 0xf0, 0x85, 0xb7, 0x48, 0x3e, 0x77, 0xa0, 0x98, 0xf9, 0x2f, 0xae, 0x92, 0x5f, 0xff, 0x03, + 0x84, 0xbe, 0x76, 0x14, 0xa2, 0x6f, 0xbb, 0x7e, 0xfd, 0xf1, 0xb3, 0x92, 0xf2, 0xe4, 0x59, 0x49, + 0xf9, 0xe7, 0x59, 0x49, 0xf9, 0xf1, 0x79, 0x69, 0xe2, 0xc9, 0xf3, 0xd2, 0xc4, 0x5f, 0xcf, 0x4b, + 0x13, 0x77, 0x36, 0x53, 0x83, 0xe8, 0x9e, 0xb0, 0xb6, 0x7e, 0x1d, 0x35, 0x79, 0x2d, 0xf9, 0x9a, + 0xb0, 0xbf, 0x71, 0xa5, 0xd6, 0x4d, 0x7d, 0xa1, 0x88, 0x06, 0xd3, 0xe6, 0xb4, 0xf8, 0x3e, 0x70, + 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xd4, 0x1b, 0x0b, 0xc1, 0x10, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index 9f6704351d..c08c5e5e1f 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -115,34 +115,34 @@ var fileDescriptor_5d2f32e16bd6ab8f = []byte{ // 474 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0x6e, 0xd3, 0x30, 0x18, 0xc7, 0x1b, 0x96, 0x75, 0xa9, 0x01, 0x51, 0x59, 0x65, 0x64, 0x03, 0xa5, 0x15, 0x07, 0xd4, - 0x4b, 0x13, 0xb1, 0x89, 0x1b, 0x17, 0xd6, 0x5d, 0x56, 0x4d, 0x08, 0xb2, 0x8a, 0x03, 0x97, 0xc8, - 0x75, 0x3e, 0x25, 0x56, 0x5a, 0xbb, 0xd8, 0xde, 0x60, 0x6f, 0xc1, 0x8d, 0x17, 0xd9, 0x43, 0xec, - 0x38, 0xed, 0x84, 0x38, 0x4c, 0xa8, 0x7d, 0x11, 0x14, 0x3b, 0x5d, 0x72, 0x65, 0xa7, 0xd8, 0x9f, - 0xff, 0xfe, 0xfd, 0xf3, 0xfd, 0x93, 0x0f, 0xf5, 0x95, 0x96, 0x2c, 0x85, 0x48, 0x69, 0x52, 0x00, - 0x9b, 0xd1, 0xe8, 0x82, 0xcc, 0x59, 0x4a, 0xb4, 0x90, 0xe1, 0x52, 0x0a, 0x2d, 0xf0, 0x33, 0x2b, - 0x08, 0x37, 0x82, 0xfd, 0x3d, 0x2a, 0xd4, 0x42, 0xa8, 0xc4, 0x1c, 0x47, 0x76, 0x63, 0xb5, 0xfb, - 0xbd, 0x4c, 0x64, 0xc2, 0xd6, 0xcb, 0x95, 0xad, 0xbe, 0xfe, 0xb5, 0x8d, 0x3a, 0x5f, 0x36, 0x54, - 0x8c, 0x91, 0xcb, 0xc9, 0x02, 0x7c, 0x67, 0xe0, 0x0c, 0x3b, 0xb1, 0x59, 0xe3, 0x03, 0xb4, 0x43, - 0xd2, 0x54, 0x82, 0x52, 0xfe, 0xa3, 0xb2, 0x7c, 0xe4, 0xdf, 0x5e, 0x8d, 0x7a, 0x15, 0xfa, 0x83, - 0x3d, 0x39, 0xd3, 0x92, 0xf1, 0x2c, 0xde, 0x08, 0xf1, 0x2e, 0x6a, 0x7f, 0x07, 0x96, 0xe5, 0xda, - 0x6f, 0x0f, 0x9c, 0xa1, 0x1b, 0x57, 0x3b, 0xfc, 0x11, 0xa1, 0x14, 0xe6, 0x90, 0x11, 0xcd, 0x04, - 0xf7, 0xb7, 0x0d, 0x2e, 0xbc, 0xbe, 0xeb, 0xb7, 0xfe, 0xdc, 0xf5, 0xdf, 0x64, 0x4c, 0xe7, 0xe7, - 0xb3, 0x90, 0x8a, 0x45, 0xf5, 0xe2, 0xd5, 0x63, 0xa4, 0xd2, 0x22, 0xd2, 0x97, 0x4b, 0x50, 0xe1, - 0x09, 0xd7, 0x71, 0x83, 0x80, 0x05, 0x7a, 0xa5, 0xe6, 0x44, 0xe5, 0xc9, 0xb7, 0x73, 0x90, 0x97, - 0x65, 0xd7, 0x59, 0xe9, 0x9f, 0x68, 0x49, 0x68, 0x01, 0xd2, 0xef, 0x3c, 0xc8, 0x61, 0xcf, 0x30, - 0x3f, 0x97, 0xc8, 0x4f, 0x15, 0x71, 0x6a, 0x81, 0x38, 0x45, 0xbb, 0x4d, 0x43, 0x9a, 0x03, 0x2d, - 0x96, 0x82, 0x71, 0xed, 0x3f, 0x79, 0x90, 0x55, 0xaf, 0xb6, 0x1a, 0xdf, 0xb3, 0xb0, 0x40, 0xcf, - 0x55, 0x4e, 0x24, 0xa8, 0x44, 0x8b, 0x44, 0x8b, 0x02, 0xb8, 0x4a, 0x24, 0xd1, 0xe0, 0x23, 0x63, - 0xf2, 0xfe, 0x3f, 0x4c, 0x8e, 0x81, 0xde, 0x5e, 0x8d, 0x50, 0xf5, 0xb9, 0x8e, 0x81, 0xc6, 0xd8, - 0xa2, 0xa7, 0x62, 0x6a, 0xc0, 0x31, 0xd1, 0x80, 0xc7, 0x28, 0xa8, 0x53, 0x4d, 0x68, 0x4e, 0x78, - 0x06, 0x2a, 0x61, 0xfc, 0x3e, 0x51, 0xff, 0xf1, 0xc0, 0x19, 0x6e, 0xc5, 0x2f, 0x6b, 0xd5, 0xd8, - 0x8a, 0x4e, 0xf8, 0x26, 0x22, 0xfc, 0x0e, 0xbd, 0x68, 0x66, 0xd3, 0xbc, 0xfd, 0x74, 0xe0, 0x0c, - 0xbd, 0x66, 0xb3, 0xf5, 0xb5, 0x89, 0xeb, 0x6d, 0x75, 0xdd, 0x89, 0xeb, 0xb9, 0xdd, 0xed, 0x89, - 0xeb, 0xed, 0x74, 0xbd, 0x89, 0xeb, 0x79, 0xdd, 0xce, 0xd1, 0xe9, 0xf5, 0x2a, 0x70, 0x6e, 0x56, - 0x81, 0xf3, 0x77, 0x15, 0x38, 0x3f, 0xd7, 0x41, 0xeb, 0x66, 0x1d, 0xb4, 0x7e, 0xaf, 0x83, 0xd6, - 0xd7, 0x83, 0x46, 0xdf, 0x67, 0x66, 0x00, 0x46, 0xa7, 0x64, 0xa6, 0xa2, 0x6a, 0x5a, 0x2e, 0xde, - 0x1e, 0x46, 0x3f, 0xea, 0x99, 0x31, 0x39, 0xcc, 0xda, 0xe6, 0x77, 0x3f, 0xfc, 0x17, 0x00, 0x00, - 0xff, 0xff, 0xd0, 0xb6, 0x4d, 0x39, 0x53, 0x03, 0x00, 0x00, + 0x4b, 0x13, 0x31, 0xe0, 0xc6, 0x85, 0x75, 0x97, 0x55, 0x13, 0x82, 0xac, 0xe2, 0xc0, 0x25, 0x72, + 0x9d, 0x4f, 0x89, 0x95, 0xd6, 0x2e, 0xb6, 0x37, 0xd8, 0x5b, 0x70, 0xe3, 0x45, 0xf6, 0x10, 0x3b, + 0x4e, 0x3b, 0x21, 0x0e, 0x13, 0x6a, 0x5f, 0x04, 0xc5, 0x4e, 0x97, 0x5c, 0xd9, 0x29, 0xf6, 0xe7, + 0xbf, 0x7f, 0xff, 0x7c, 0xff, 0xe4, 0x43, 0x7d, 0xa5, 0x25, 0x4b, 0x21, 0x52, 0x9a, 0x14, 0xc0, + 0x66, 0x34, 0x3a, 0x27, 0x73, 0x96, 0x12, 0x2d, 0x64, 0xb8, 0x94, 0x42, 0x0b, 0xfc, 0xc4, 0x0a, + 0xc2, 0x8d, 0x60, 0x7f, 0x8f, 0x0a, 0xb5, 0x10, 0x2a, 0x31, 0xc7, 0x91, 0xdd, 0x58, 0xed, 0x7e, + 0x2f, 0x13, 0x99, 0xb0, 0xf5, 0x72, 0x65, 0xab, 0x2f, 0x7f, 0x6d, 0xa3, 0xce, 0x97, 0x0d, 0x15, + 0x63, 0xe4, 0x72, 0xb2, 0x00, 0xdf, 0x19, 0x38, 0xc3, 0x4e, 0x6c, 0xd6, 0xf8, 0x00, 0xed, 0x90, + 0x34, 0x95, 0xa0, 0x94, 0xff, 0xa0, 0x2c, 0x1f, 0xfa, 0x37, 0x97, 0xa3, 0x5e, 0x85, 0xfe, 0x60, + 0x4f, 0x4e, 0xb5, 0x64, 0x3c, 0x8b, 0x37, 0x42, 0xbc, 0x8b, 0xda, 0xdf, 0x81, 0x65, 0xb9, 0xf6, + 0xdb, 0x03, 0x67, 0xe8, 0xc6, 0xd5, 0x0e, 0x7f, 0x44, 0x28, 0x85, 0x39, 0x64, 0x44, 0x33, 0xc1, + 0xfd, 0x6d, 0x83, 0x0b, 0xaf, 0x6e, 0xfb, 0xad, 0x3f, 0xb7, 0xfd, 0x57, 0x19, 0xd3, 0xf9, 0xd9, + 0x2c, 0xa4, 0x62, 0x51, 0xbd, 0x78, 0xf5, 0x18, 0xa9, 0xb4, 0x88, 0xf4, 0xc5, 0x12, 0x54, 0x78, + 0xcc, 0x75, 0xdc, 0x20, 0x60, 0x81, 0x5e, 0xa8, 0x39, 0x51, 0x79, 0xf2, 0xed, 0x0c, 0xe4, 0x45, + 0xd9, 0x75, 0x56, 0xfa, 0x27, 0x5a, 0x12, 0x5a, 0x80, 0xf4, 0x3b, 0xf7, 0x72, 0xd8, 0x33, 0xcc, + 0xcf, 0x25, 0xf2, 0x53, 0x45, 0x9c, 0x5a, 0x20, 0x4e, 0xd1, 0x6e, 0xd3, 0x90, 0xe6, 0x40, 0x8b, + 0xa5, 0x60, 0x5c, 0xfb, 0x8f, 0xee, 0x65, 0xd5, 0xab, 0xad, 0xc6, 0x77, 0x2c, 0x2c, 0xd0, 0x53, + 0x95, 0x13, 0x09, 0x2a, 0xd1, 0x22, 0xd1, 0xa2, 0x00, 0xae, 0x12, 0x49, 0x34, 0xf8, 0xc8, 0x98, + 0xbc, 0xff, 0x0f, 0x93, 0x23, 0xa0, 0x37, 0x97, 0x23, 0x54, 0x7d, 0xae, 0x23, 0xa0, 0x31, 0xb6, + 0xe8, 0xa9, 0x98, 0x1a, 0x70, 0x4c, 0x34, 0xe0, 0x31, 0x0a, 0xea, 0x54, 0x13, 0x9a, 0x13, 0x9e, + 0x81, 0x4a, 0x18, 0xbf, 0x4b, 0xd4, 0x7f, 0x38, 0x70, 0x86, 0x5b, 0xf1, 0xf3, 0x5a, 0x35, 0xb6, + 0xa2, 0x63, 0xbe, 0x89, 0x08, 0xbf, 0x43, 0xcf, 0x9a, 0xd9, 0x34, 0x6f, 0x3f, 0x1e, 0x38, 0x43, + 0xaf, 0xd9, 0x6c, 0x7d, 0x6d, 0xe2, 0x7a, 0x5b, 0x5d, 0x77, 0xe2, 0x7a, 0x6e, 0x77, 0x7b, 0xe2, + 0x7a, 0x3b, 0x5d, 0x6f, 0xe2, 0x7a, 0x5e, 0xb7, 0x73, 0x78, 0x72, 0xb5, 0x0a, 0x9c, 0xeb, 0x55, + 0xe0, 0xfc, 0x5d, 0x05, 0xce, 0xcf, 0x75, 0xd0, 0xba, 0x5e, 0x07, 0xad, 0xdf, 0xeb, 0xa0, 0xf5, + 0xf5, 0xa0, 0xd1, 0xf7, 0xa9, 0x19, 0x80, 0xd1, 0x09, 0x99, 0xa9, 0xa8, 0x9a, 0x96, 0xf3, 0xd7, + 0x6f, 0xa3, 0x1f, 0xf5, 0xcc, 0x98, 0x1c, 0x66, 0x6d, 0xf3, 0xbb, 0xbf, 0xf9, 0x17, 0x00, 0x00, + 0xff, 0xff, 0xf6, 0xcd, 0x8e, 0xe1, 0x53, 0x03, 0x00, 0x00, } func (m *Validator) Marshal() (dAtA []byte, err error) { From 52581d22459e29b340605edaaada2aaf87d081cc Mon Sep 17 00:00:00 2001 From: Aidan Salzmann Date: Mon, 28 Aug 2023 00:06:16 -0400 Subject: [PATCH 26/44] update changelog (#914) --- CHANGELOG.md | 13 +++++++++++++ app/upgrades/v10/README.md | 8 -------- app/upgrades/v11/README.md | 2 -- app/upgrades/v12/README.md | 2 -- app/upgrades/v13/README.md | 8 -------- app/upgrades/v14/README.md | 1 - app/upgrades/v2/README.md | 5 ----- app/upgrades/v3/README.md | 7 ------- app/upgrades/v4/README.md | 8 -------- app/upgrades/v5/README.md | 11 ----------- app/upgrades/v6/README.md | 2 -- app/upgrades/v7/README.md | 16 ---------------- app/upgrades/v8/README.md | 9 --------- app/upgrades/v9/README.md | 6 ------ 14 files changed, 13 insertions(+), 85 deletions(-) delete mode 100644 app/upgrades/v10/README.md delete mode 100644 app/upgrades/v11/README.md delete mode 100644 app/upgrades/v12/README.md delete mode 100644 app/upgrades/v13/README.md delete mode 100644 app/upgrades/v14/README.md delete mode 100644 app/upgrades/v2/README.md delete mode 100644 app/upgrades/v3/README.md delete mode 100644 app/upgrades/v4/README.md delete mode 100644 app/upgrades/v5/README.md delete mode 100644 app/upgrades/v6/README.md delete mode 100644 app/upgrades/v7/README.md delete mode 100644 app/upgrades/v8/README.md delete mode 100644 app/upgrades/v9/README.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 97ae48caf2..9482fed902 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changelog +## [v14.0.0](https://github.com/Stride-Labs/stride/releases/tag/v14.0.0) - 2023-08-27 + +### On-Chain changes +1. Add LSM support ([#708](https://github.com/Stride-Labs/stride/pull/708)) +2. Added oracle transfer channel to icaoracle MsgInstantiateOracle and register aminos ([#899](https://github.com/Stride-Labs/stride/pull/899)) +3. Init airdrops for Umee, Somm, Comdex, Injective ([#903](https://github.com/Stride-Labs/stride/pull/903)) +4. Migrate vesting accounts ([#903](https://github.com/Stride-Labs/stride/pull/903)) +5. Add Evmos' x/vesting module ([#903](https://github.com/Stride-Labs/stride/pull/903)) + +### Off-Chain changes +1. Add ICA Oracle License ([#901](https://github.com/Stride-Labs/stride/pull/901)) + + ## [v13.0.0](https://github.com/Stride-Labs/stride/releases/tag/v13.0.0) - 2023-08-08 ### On-Chain changes diff --git a/app/upgrades/v10/README.md b/app/upgrades/v10/README.md deleted file mode 100644 index 7489bb3c0b..0000000000 --- a/app/upgrades/v10/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Upgrade v10 Changelog -1. SDK 47 / IBC v7 ([#765](https://github.com/Stride-Labs/stride/pull/765)) -2. Fix bug in ICA SendTx ([#812](https://github.com/Stride-Labs/stride/pull/812)) -3. IBC Rate Limiting Audit Fixes ([#818](https://github.com/Stride-Labs/stride/pull/818)) -4. V10 import paths ([#825](https://github.com/Stride-Labs/stride/pull/825)) -5. v10 Upgrade Handler ([#805](https://github.com/Stride-Labs/stride/pull/805)) -6. Removed comdex from list of new rate limits ([#826](https://github.com/Stride-Labs/stride/pull/826)) -7. Dependency bumps ([0fb5fb6](https://github.com/Stride-Labs/stride/commit/0fb5fb6c014338a7837a569ba5b081235fd9af8a), [fc70522](https://github.com/Stride-Labs/stride/commit/fc7052268cd21c941dfebcb9560123e40e14e5b8), [6aac1d5](https://github.com/Stride-Labs/stride/commit/6aac1d5bb2c4f6cbc00ed0c31793cfc091f7550f), [eddf1ea](https://github.com/Stride-Labs/stride/commit/eddf1eae49e669432dfcce56d28ec71f67f8cff6), [4871518](https://github.com/Stride-Labs/stride/commit/b89d88ce02a23ca01fc574ae1c1a0226a9b2ef74), [b89d88c](https://github.com/Stride-Labs/stride/commit/0fb5fb6c014338a7837a569ba5b081235fd9af8a), [7a332fc](https://github.com/Stride-Labs/stride/commit/7a332fc5e690b71c10b48b6630cba1488fa2f90b), [7eea5ee](https://github.com/Stride-Labs/stride/commit/7eea5eea66973241edbb4261c1408410bfffc4e3), [c74f8f2](https://github.com/Stride-Labs/stride/commit/c74f8f28c9bbc794e70f5ded0af6930d2d10a3a8)) diff --git a/app/upgrades/v11/README.md b/app/upgrades/v11/README.md deleted file mode 100644 index 43061f95cd..0000000000 --- a/app/upgrades/v11/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Upgrade v11 Changelog -1. IBCv7 version bump ([#840](https://github.com/Stride-Labs/stride/pull/840)) \ No newline at end of file diff --git a/app/upgrades/v12/README.md b/app/upgrades/v12/README.md deleted file mode 100644 index 49390ce41b..0000000000 --- a/app/upgrades/v12/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Upgrade v12 Changelog -1. Changeover to consumer chain ([#811](https://github.com/Stride-Labs/stride/pull/811)) \ No newline at end of file diff --git a/app/upgrades/v13/README.md b/app/upgrades/v13/README.md deleted file mode 100644 index 4666b85268..0000000000 --- a/app/upgrades/v13/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Upgrade v13 Changelog -1. Adds ICA-Based Oracle for Cosmwasm-based Chains ([#884](https://github.com/Stride-Labs/stride/pull/884)) -2. Switch to SDK Fork to address SDKv0.47 Distribution Bug ([#885](https://github.com/Stride-Labs/stride/pull/885)) -3. Add Redundant IBC Relay Decorator ([#882](https://github.com/Stride-Labs/stride/pull/882)) -4. Whitelist missing param keys and register stTokens as consumer fees ([#881](https://github.com/Stride-Labs/stride/pull/881)) -5. Add v13 Upgrade Handler ([#886](https://github.com/Stride-Labs/stride/pull/886)) -6. Change paths to point towards v13 ([#891](https://github.com/Stride-Labs/stride/pull/888)) -7. Removed consumer param store updates ([#892](https://github.com/Stride-Labs/stride/pull/892)) diff --git a/app/upgrades/v14/README.md b/app/upgrades/v14/README.md deleted file mode 100644 index c24e0a97e8..0000000000 --- a/app/upgrades/v14/README.md +++ /dev/null @@ -1 +0,0 @@ -# Upgrade v14 Changelog diff --git a/app/upgrades/v2/README.md b/app/upgrades/v2/README.md deleted file mode 100644 index 56588f3512..0000000000 --- a/app/upgrades/v2/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Upgrade v2 Changelog - -1. PENDING status for IBC/ICA function calls ([6660f60](https://github.com/Stride-Labs/stride/commit/6660f60094674b2e077f3775982ab4acc8a5ea96)). Added additional status field on internal accounting records to track when IBC/ICA calls are in flight and prevent re-submission. -2. Add Validator through Governance ([c757364](https://github.com/Stride-Labs/stride/commit/c757364c4f532a8f7b9d17531f189c41cde90b14)). Added governance proposal type to enable adding validator's through governance. -3. Validator Rebalancing ([725b991](https://github.com/Stride-Labs/stride/commit/725b9912073e4ff8c1fd5574ba4ebd68ec6aee88)). Added `rebalance-validators` transaction to redistribute delegations after validator weights are updated. \ No newline at end of file diff --git a/app/upgrades/v3/README.md b/app/upgrades/v3/README.md deleted file mode 100644 index 534258885d..0000000000 --- a/app/upgrades/v3/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Upgrade v3 Changelog - -1. Airdrop module ([24224f7](https://github.com/Stride-Labs/stride/commit/9be3314f7bca7e91f099d27ca11177639b76b468), [24224f7](https://github.com/Stride-Labs/stride/commit/24224f7386e7ee56781e7d254f9a48fab60a3bed)). Adds support for airdrop claims, including vesting. -2. Proto reorganization ([8e3668a](https://github.com/Stride-Labs/stride/commit/8e3668a8e87381fb0f470ab60e4f0ba8590139cc)). This cleans up proto files to be more in-line with other Cosmos projects. -3. Add Authz support ([e59c98e](https://github.com/Stride-Labs/stride/commit/e59c98e7bce574fa53e6e70222a80b974d84db3b)). -4. Cleanup ICQ Callbacks ([3ec6b8e](https://github.com/Stride-Labs/stride/commit/3ec6b8ebe9f4ba49aed3d671432a9d77e61b095a), [e747ac7](https://github.com/Stride-Labs/stride/commit/e747ac7bdd9385fdaa7d5cd6f2926f7efd519480)). Reorganizes ICQ Callbacks and errors self-heal faster. -5. Versioning ([78fd819](https://github.com/Stride-Labs/stride/commit/78fd81918fe8f763f10525770eba1fee0a6dbe25), [0dbbbd8](https://github.com/Stride-Labs/stride/commit/0dbbbd867ffad5b331d09c155dca53a3f581ad5c), [dd6c26](https://github.com/Stride-Labs/stride/commit/dd6c264ea09448130484f7289eb085eb8bdb5766), [f77eac1](https://github.com/Stride-Labs/stride/commit/f77eac106291a59fd839c128f6aa9adb974eb7ef), [24f4b44](https://github.com/Stride-Labs/stride/commit/24f4b44e85518c0e800605265486af5f55f02693)). Updating versions to v3, as well as updating some Go modules. diff --git a/app/upgrades/v4/README.md b/app/upgrades/v4/README.md deleted file mode 100644 index 0f3fd4a1b3..0000000000 --- a/app/upgrades/v4/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Upgrade v4 Changelog - -1. Dependency bumps ([384178b2c](https://github.com/Stride-Labs/stride/commit/384178b2cf98e9af0815ffaf3c29649f41784f3e)), ([0a2297ea](https://github.com/Stride-Labs/stride/commit/0a2297eabe287d38723ab8213d5256ce34d2bb2d)) -2. Add max claimable tokens query ([613e8571](https://github.com/Stride-Labs/stride/commit/613e85711485d3bebeeb5777ba35e701cc795a43)) -3. Interchain query proto cleanup ([9d5e1f6d](https://github.com/Stride-Labs/stride/commit/9d5e1f6d9e24113afa5b7f21e72a736bc8059b7f)) -4. Add undelegation logging ([e74c34d12](https://github.com/Stride-Labs/stride/commit/e74c34d12a462e2d23463d717abfe01db9490d8f)) -5. v4 upgrade changes -6. Revert HostZoneUnbonding status upon channel restoration ([730cf3d38](https://github.com/Stride-Labs/stride/commit/730cf3d38589887b57dfe3dd5de071273d5a9b73)) \ No newline at end of file diff --git a/app/upgrades/v5/README.md b/app/upgrades/v5/README.md deleted file mode 100644 index 50c27aaf7c..0000000000 --- a/app/upgrades/v5/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Upgrade v5 Changelog -1. Added query for next send packet sequence number ([fec8b45](https://github.com/Stride-Labs/stride/commit/fec8b4570d9a4a85efd944a1b859cec72d1bf9ea)) -2. Added additional fields to InitGenesis and ExportGenesis in stakeibc ([ea5a9a4](https://github.com/Stride-Labs/stride/commit/ea5a9a4babbe958c6309fefedc30df4c21a03028)) -3. Update module name to v5 ([50eb2b4](https://github.com/Stride-Labs/stride/commit/50eb2b4ec541e94ccd46c02ea543ac9293094cef)) -4. Upgrade store migration ([f635c1a](https://github.com/Stride-Labs/stride/commit/f635c1a872c9947df52e6f3f8e3ad4741d5d91e2)) -5. Upgrade handler, remove Authz from store ([cd96f99](https://github.com/Stride-Labs/stride/commit/cd96f99c84ad2870528d55febad26dc05f82fa96)) -6. Upgraded to cosmos-sdk v0.46.7 and ibc-go v5.1.0 ([e55f6f2](https://github.com/Stride-Labs/stride/commit/e55f6f2f8644ebd754ce32d3ced85b1e6db984c3)) -7. Informal Systems audit fixes IF-STRIDE-STAKEIBC-ARITHMETIC ([1c0a4b8](https://github.com/Stride-Labs/stride/commit/1c0a4b8eb795c19b58ce06bbf194a52ec1df649b)) -8. Cleaned up epoch and callback logs ([d1938b9](https://github.com/Stride-Labs/stride/commit/d1938b9d381cdad627093b6b4adbf1e90ff5b9d0)), ([c5d137a](https://github.com/Stride-Labs/stride/commit/c5d137a32bc23a403f94ad37989c940da0715138)), ([ac45bc4](https://github.com/Stride-Labs/stride/commit/ac45bc4971aa3fbfaebc1be3e07aa71029616c98)), ([9a8b757](https://github.com/Stride-Labs/stride/commit/9a8b757eb3386997e8d589044b8acabde034410e)) -9. Misc minor refactoring / cleanup ([af53f06](https://github.com/Stride-Labs/stride/commit/af53f06e923f6b2a546f003d345476496e44ff6f)), ([edb90e9](https://github.com/Stride-Labs/stride/commit/edb90e98875564fc21f94f9216f6bdc75e599176)), ([78790b0](https://github.com/Stride-Labs/stride/commit/78790b06a37bd50ba2ae993c4cb0bacfcc7c9ebf)), ([29dc4f2](https://github.com/Stride-Labs/stride/commit/29dc4f2e5f61db38714f0464b4ee17221fba88e3)), ([f3f607a](https://github.com/Stride-Labs/stride/commit/f3f607af8861f29ff2580c4c7f8814aa61828573)), ([3c3c54b](https://github.com/Stride-Labs/stride/commit/3c3c54b9539b9055f848f98e036221173ff8f58e)) -10. Dependency bumps ([c1ff649](https://github.com/Stride-Labs/stride/commit/c1ff6495d01dcac519ee9643038c739b4265a4a1)), ([b06abe3](https://github.com/Stride-Labs/stride/commit/b06abe3ef6211bce1bbc1ee179866c24bad3dab5)) \ No newline at end of file diff --git a/app/upgrades/v6/README.md b/app/upgrades/v6/README.md deleted file mode 100644 index 1814843824..0000000000 --- a/app/upgrades/v6/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Upgrade v6 Changelog -1. Added reset logic for the second season of the airdrop. \ No newline at end of file diff --git a/app/upgrades/v7/README.md b/app/upgrades/v7/README.md deleted file mode 100644 index accb06139e..0000000000 --- a/app/upgrades/v7/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Upgrade v7 Changelog -1. IBC Rate Limiting ([94e3a91](https://github.com/Stride-Labs/stride/commit/94e3a91dc582218a477771d9a694966bf901fdf5)) -2. Host Zone Reward Reallocation ([3539983](https://github.com/Stride-Labs/stride/commit/353998347af20ae14967e5da73a3f9059c0e1826)) -3. Add Autopilot ([1c173fe](https://github.com/Stride-Labs/stride/commit/1c173fed57418bea8fbb19240245757708f25472)) -3. Prevent undelegations of amount 0 ([3e0f404](https://github.com/Stride-Labs/stride/commit/3e0f40457ed90faa964556c6498c9d976336aa84)) -4. Change `sdkerrors` to `errorsmod` ([dfc5fb0](https://github.com/Stride-Labs/stride/commit/dfc5fb0fb33a471f86f1f74992ff3809919e7e80)) -5. Remove Epoch Unbonding Records with 0 amounts ([470268d](https://github.com/Stride-Labs/stride/commit/470268d393b15b0a4014e3a61c0478eaddc10756)) -6. Remove ICACallbacks from Middleware ([59a872b](https://github.com/Stride-Labs/stride/commit/59a872b20d8553c1a0e8187b2d70304c2a7341b7)) -7. Remove unnecessary setting of EXIT_TRANSFER_QUEUE ([0413e99](https://github.com/Stride-Labs/stride/commit/0413e999d3c67369e50ca40c61763f522dd02e06)) -8. Airdrop Reset ([b7371d7](https://github.com/Stride-Labs/stride/commit/b7371d7b4e02e40cc979d0a0e417113276e3b8a3)) -9. Module Account Safety ([0a325de](https://github.com/Stride-Labs/stride/commit/0a325deddc0bac58cc43e650773cc3408eabc011)) -10. Minor optimizations ([c3df52d](https://github.com/Stride-Labs/stride/commit/c3df52d178ebe1e7e3ccf0a697bec3a9fecfdc48), [85e76ec](https://github.com/Stride-Labs/stride/commit/85e76ec9b932f0b5bf5617677d1b8306fd33298f), [5ff42a9](https://github.com/Stride-Labs/stride/commit/5ff42a93b189a240f8cc0ac0a750ac4cd26272f7, [b3196d2](https://github.com/Stride-Labs/stride/commit/b3196d2b3fca62b72b2ba451237379b0747f7b1c), [ddc951a](https://github.com/Stride-Labs/stride/commit/ddc951a7656423c7277671ea89a4fff9b8d0be6f), [bdd05b0](https://github.com/Stride-Labs/stride/commit/bdd05b0f39317e9ce428508fdcda0d66bd2a0ce1) [3d4ba72](https://github.com/Stride-Labs/stride/commit/3d4ba729cfd2529730fdccdb8ee0fdfe151413bd)) -11. Queries ([9b17edf](https://github.com/Stride-Labs/stride/commit/9b17edfe62a752865eaa9b7b95103345d5c66448), [f07ff73](https://github.com/Stride-Labs/stride/commit/f07ff73bd957a6e23afb5c7ec48a6d2334e0d5d7)) -12. Dependency Bumps ([2a04046](https://github.com/Stride-Labs/stride/commit/2a040460dcafdabafca15010facc7e6e2d29609c)) -13. v7 Upgrade Handler ([9bc47dc](https://github.com/Stride-Labs/stride/commit/9bc47dc4efb3ebbbbb8a50fd5b371cb5a37bfb14)) -14. v7 Import Paths ([563bc25](https://github.com/Stride-Labs/stride/commit/563bc25b341c85c8e09d4499f5b3f810338ded60)) diff --git a/app/upgrades/v8/README.md b/app/upgrades/v8/README.md deleted file mode 100644 index afb27f50b5..0000000000 --- a/app/upgrades/v8/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Upgrade v8 Changelog -1. Add Multiple Validators in One Transaction ([4ce1317](https://github.com/Stride-Labs/stride/commit/4ce1317073f4119a891229530677603c10e5700c)) -2. Add new claim queries ([7e7335a](https://github.com/Stride-Labs/stride/commit/7e7335a6466abc13fd51aed1f7c76d621fb3d524)) -3. Autopilot JSON Memo ([d16d7f2](https://github.com/Stride-Labs/stride/commit/d16d7f2676dc6182dd0fd655530136ff3e5780ad)) -4. Enable Delegator Shares Query to Correct DelegationAmt ([5868b82](https://github.com/Stride-Labs/stride/commit/5868b82b60e8548f8e791f1d90dfa9c05031127f)) -5. Add Unit Test for claim module AfterEpochEnd ([29fce22](https://github.com/Stride-Labs/stride/commit/29fce22718002c5bcc76e0dc889f80cd4e392804)) -6. Airdrop Safety Checks ([a7ebe87](https://github.com/Stride-Labs/stride/commit/a7ebe87c7d133b1d40de6d6c3297777f233d61fd)) -7. v8 Upgrade Handler ([31c5dc4](https://github.com/Stride-Labs/stride/commit/31c5dc412019e2e69ccf9cba8fcc5d793ccd6a64)) -8. v8 Import Paths ([0a42766](https://github.com/Stride-Labs/stride/commit/0a42766e900310ce31a9b0b62354229924cb1ee9)) diff --git a/app/upgrades/v9/README.md b/app/upgrades/v9/README.md deleted file mode 100644 index dbd10a3644..0000000000 --- a/app/upgrades/v9/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Upgrade v9 Changelog -1. Autopilot Channel Verification ([62295e3](https://github.com/Stride-Labs/stride/commit/62295e3818de10c13295855d8fc8a224aff3bc70)) -2. Set epoch provisions in mint init genesis ([16dee3e](https://github.com/Stride-Labs/stride/commit/16dee3e4e3645f3118aa30a45159801873cd8bd4)) -3. Add Unit Test to Check Host Zone Min/Max RR ([3a5c7bf](https://github.com/Stride-Labs/stride/commit/3a5c7bfcc3b8c5e7dd870f01bebeb9d949492203)) -4. v9 Upgrade Handler ([b8d5152](https://github.com/Stride-Labs/stride/commit/b8d51526d30e947a9b17a74b93d551380632b79c)) -5. v9 Import Paths ([c88b52e](https://github.com/Stride-Labs/stride/commit/c88b52e34a484fe1e055b58abfce86bc19932990)) From 377bd3c938c0b616a87a9883512585f6c8f95c9e Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 5 Sep 2023 15:31:35 -0500 Subject: [PATCH 27/44] Fixed bug in import path CI (#919) Closes: #XXX ## Context and purpose of the change The automated module versioning action was failing due to a permission error from the docker volume mount. This PR modifies the makefile command to to pass the same user/group from the underlying system so docker has permission to write. ## Brief Changelog * Specified user during proto-gen command * Bumped proto version * Updated gaia submodule (unrelated to this PR but version on main was incorrect) ## Testing Verified on separate branch. Will need to merge this before we can do a final test though. ## Author's Checklist I have... - [ ] Run and PASSED locally all GAIA integration tests - [ ] If the change is contentful, I either: - [ ] Added a new unit test OR - [ ] Added test cases to existing unit tests - [X] OR this change is a trivial rework / code cleanup without any test coverage If skipped any of the tests above, explain. ## Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] manually tested (if applicable) - [ ] confirmed the author wrote unit tests for new logic - [ ] reviewed documentation exists and is accurate ## Documentation and Release Note - [ ] Does this pull request introduce a new feature or user-facing behavior changes? - [ ] Is a relevant changelog entry added to the `Unreleased` section in `CHANGELOG.md`? - [ ] This pull request updates existing proto field values (and require a backend and frontend migration)? - [ ] Does this pull request change existing proto field names (and require a frontend migration)? How is the feature or change documented? - [ ] not applicable - [ ] jira ticket `XXX` - [ ] specification (`x//spec/`) - [ ] README.md - [ ] not documented --- .github/workflows/version.yml | 15 +++++++++++++++ Makefile | 4 ++-- deps/gaia | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 8bd1ea3c30..101251c546 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -53,6 +53,21 @@ jobs: if: ${{ steps.push.outcome == 'failure' }} run: | echo "Push failed. The token might be expired or have insufficient permissions. Please check your token." + echo "The token can be found in the 'dev-stride' account. To view the token, login to 'dev-stride' and go to:" + echo " -> Profile" + echo " -> Settings" + echo " -> Developer Settings" + echo " -> Personal Access Tokens" + echo " -> Tokens (classic)" + echo " -> 'GH Actions' Token" + echo "" + echo "If the token is expired, you can click on the token and then select 'Regenerate Token'" + echo "After regenerating a new token, you'll have to update the 'GH_ACTIONS_PAT' environment variable:" + echo " -> Navigate to the stride repo" + echo " -> Settings" + echo " -> Secrets and variables" + echo " -> Actions" + echo " -> Then modify 'GH_ACTIONS_PAT'" exit 1 - name: Fetch New Branch diff --git a/Makefile b/Makefile index 1e82948a15..b095fe8142 100644 --- a/Makefile +++ b/Makefile @@ -164,14 +164,14 @@ stop-local-to-main: ### Protobuf ### ############################################################################### -containerProtoVer=0.13.0 +containerProtoVer=0.14.0 containerProtoImage=ghcr.io/cosmos/proto-builder:$(containerProtoVer) proto-all: proto-format proto-lint proto-gen proto-gen: @echo "Generating Protobuf files" - @$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(containerProtoImage) \ + @$(DOCKER) run --user $(id -u):$(id -g) --rm -v $(CURDIR):/workspace --workdir /workspace $(containerProtoImage) \ sh ./scripts/protocgen.sh; proto-format: diff --git a/deps/gaia b/deps/gaia index 321d15a574..3b9a281247 160000 --- a/deps/gaia +++ b/deps/gaia @@ -1 +1 @@ -Subproject commit 321d15a574def0f338ceacc5c060159ebba95edc +Subproject commit 3b9a281247ab9bd87483ad7fc1dcea9f26c4b8f6 From 4bd2f8aaab97dd04f6696f863d8f00e405d4f636 Mon Sep 17 00:00:00 2001 From: sampocs Date: Wed, 6 Sep 2023 19:05:14 -0500 Subject: [PATCH 28/44] Finished auto changelog script (#928) Closes: #XXX ## Context and purpose of the change Each upgrade we manually write out the changelog with each commit since the last release. This GH action automates that workflow. ## Brief Changelog * Refactored auto generated changelog script * Improved to dynamically generate on-chain and off-chain sections ## Author's Checklist I have... - [ ] Run and PASSED locally all GAIA integration tests - [ ] If the change is contentful, I either: - [ ] Added a new unit test OR - [ ] Added test cases to existing unit tests - [X] OR this change is a trivial rework / code cleanup without any test coverage If skipped any of the tests above, explain. ## Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] manually tested (if applicable) - [ ] confirmed the author wrote unit tests for new logic - [ ] reviewed documentation exists and is accurate ## Documentation and Release Note - [ ] Does this pull request introduce a new feature or user-facing behavior changes? - [ ] Is a relevant changelog entry added to the `Unreleased` section in `CHANGELOG.md`? - [ ] This pull request updates existing proto field values (and require a backend and frontend migration)? - [ ] Does this pull request change existing proto field names (and require a frontend migration)? How is the feature or change documented? - [ ] not applicable - [ ] jira ticket `XXX` - [ ] specification (`x//spec/`) - [ ] README.md - [x] not documented --- .github/workflows/changelog.yml | 17 ++++- CHANGELOG.md | 1 - scripts/changelog.sh | 129 +++++++++++++++++++++----------- 3 files changed, 101 insertions(+), 46 deletions(-) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 0f9f963809..0203721a2f 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -63,6 +63,21 @@ jobs: if: ${{ steps.push.outcome == 'failure' }} run: | echo "Push failed. The token might be expired or have insufficient permissions. Please check your token." + echo "The token can be found in the 'dev-stride' account. To view the token, login to 'dev-stride' and go to:" + echo " -> Profile" + echo " -> Settings" + echo " -> Developer Settings" + echo " -> Personal Access Tokens" + echo " -> Tokens (classic)" + echo " -> 'GH Actions' Token" + echo "" + echo "If the token is expired, you can click on the token and then select 'Regenerate Token'" + echo "After regenerating a new token, you'll have to update the 'GH_ACTIONS_PAT' environment variable:" + echo " -> Navigate to the stride repo" + echo " -> Settings" + echo " -> Secrets and variables" + echo " -> Actions" + echo " -> Then modify 'GH_ACTIONS_PAT'" exit 1 - name: Fetch New Branch @@ -80,6 +95,6 @@ jobs: "title":"${{ env.NEW_MAJOR_VERSION }} Changelog", "head":"${{ env.branch_name }}", "base":"main", - "body":"This is an automatically generated pull request.\n\nPlease review and merge the changes. **Remember to split the On-Chain vs Off-Chain commits!**\n\n## Context\n\nUpdated changelog for ${{ env.NEW_MAJOR_VERSION }} release\n\n## Brief Changelog\n\n* Updated main changelog with on-chain and off-chain changes\n* Updated upgrade-specific changelog with on-chain changes only\n", + "body":"This is an automatically generated pull request.\n\nPlease review and merge the changes.\n\n## Context\n\nUpdated changelog for ${{ env.NEW_MAJOR_VERSION }} release\n\n## Brief Changelog\n\n* Updated main changelog with on-chain and off-chain changes\n", "maintainer_can_modify": true }' diff --git a/CHANGELOG.md b/CHANGELOG.md index 9482fed902..3bbd7255de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,7 +41,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -### Changelog ## [v14.0.0](https://github.com/Stride-Labs/stride/releases/tag/v14.0.0) - 2023-08-27 diff --git a/scripts/changelog.sh b/scripts/changelog.sh index 13b89aa6fa..1db09ebba1 100755 --- a/scripts/changelog.sh +++ b/scripts/changelog.sh @@ -25,54 +25,95 @@ if ! echo $NEW_VERSION | grep -Eq $VERSION_REGEX; then exit 1 fi -GITHUB_COMMIT_URL="https://github.com/Stride-Labs/stride/commit" -GITHUB_PR_URL="https://github.com/org/repo/pull" -ON_CHAIN_FILES='"x/**/*.go" "app/**/*.go" ":(exclude)**/*_test.go"' +GITHUB_PR_URL="https://github.com/Stride-Labs/stride/pull" + +GO_FILES='^x/.*\.go$|^app/.*\.go$' +TEST_FILES='.*_test\.go$' + CURRENT_DATE=$(date +'%Y-%m-%d') NEW_MAJOR_VERSION=$(echo "$NEW_VERSION" | cut -d '.' -f 1) -TEMP_CHANGELOG="TEMP_CHANGELOG.md" -UPGRADE_CHANGELOG="app/upgrades/$NEW_MAJOR_VERSION/README.md" +TEMP_COMMITS="TEMP_COMMITS.txt" +TEMP_ON_CHAIN_CHANGELOG="TEMP_ON_CHAIN_CHANGELOG.md" +TEMP_OFF_CHAIN_CHANGELOG="TEMP_OFF_CHAIN_CHANGELOG.md" +TEMP_MAIN_CHANGELOG="TEMP_MAIN_CHANGELOG.md" + MAIN_CHANGELOG="CHANGELOG.md" MAIN_CHANGELOG_INSERT_STATEMENT="" -# First write all changes to the main changelog -# Write the version summary -# TODO: Build On-Chain vs Off-Chain sections dynamically. I'm not sure how to -# create the filter for Off-Chain -echo "### Changelog" > $TEMP_CHANGELOG -echo "## [$NEW_VERSION](https://github.com/Stride-Labs/stride/releases/tag/$NEW_VERSION) - $CURRENT_DATE" >> $TEMP_CHANGELOG -echo "!!!ACTION ITEM: Move the following to the On-Chain vs Off-chain sections!!!" >> $TEMP_CHANGELOG - -i=1 -git log --pretty=format:"%h %H %s" ${OLD_VERSION}..main | while read LINE; do - SHORT_COMMIT_HASH=$(echo $LINE | cut -d' ' -f1) - LONG_COMMIT_HASH=$(echo $LINE | cut -d' ' -f2) - COMMIT_TITLE=$(echo $LINE | cut -d' ' -f3-) - PR_NUMBER=$(echo $COMMIT_TITLE | grep -oP '#\K\w+') - COMMIT_DESCRIPTION=$(echo $COMMIT_TITLE | sed "s|#$PR_NUMBER|[#$PR_NUMBER]($GITHUB_PR_URL/$PR_NUMBER)|") - echo "$i. $COMMIT_DESCRIPTION [[${SHORT_COMMIT_HASH}]($GITHUB_COMMIT_URL/${LONG_COMMIT_HASH})]" >> $TEMP_CHANGELOG - i=$((i+1)) -done - -echo -e "\n### On-Chain changes" >> $TEMP_CHANGELOG -echo -e "\n### Off-Chain changes" >> $TEMP_CHANGELOG -echo "These changes do not affect any on-chain functionality, but have been implemented since \`$OLD_VERSION\`" >> $TEMP_CHANGELOG - -sed -i -e "/$MAIN_CHANGELOG_INSERT_STATEMENT/r $TEMP_CHANGELOG" $MAIN_CHANGELOG -rm $TEMP_CHANGELOG - -# Next write all the on chain changes to the upgrade changelog -i=1 -git log --pretty=format:"%h %H %s" ${OLD_VERSION}..main -- "x/**/*.go" "app/**/*.go" ":(exclude)**/*_test.go" | while read LINE; do - if [[ "$i" == "1" ]]; then - echo "# Upgrade $NEW_MAJOR_VERSION Changelog" > $UPGRADE_CHANGELOG +# Checks if a given commit hash modified an on-chain file +# If so, returns true (0), otherwise returns false (1) +modified_on_chain_file() { + commit=$1 + + # Get all modified files + modified_files=$(git diff-tree --no-commit-id --name-only -r $commit) + + # Filter for go files in x/ or x/app, that were not test files + modified_on_chain_files=$(echo "$modified_files" | grep -E "$GO_FILES" | grep -vE "$TEST_FILES") + + # If there were any modified on-chain files, return true + if [[ -n "$modified_on_chain_files" ]]; then + return 0 # true + fi + + # Otherwise, return false + return 1 # false +} + +# Gather the list of all commits between the new and old version +# The output on each line will be in the format: {commit_hash} {commit_title} +# The last line does not end with a new line character, so we have to append a new empty line +# so that the full output is propogated into the while loop +git log --pretty=format:"%H %s" ${OLD_VERSION}..${NEW_VERSION} --reverse > $TEMP_COMMITS +echo "" >> $TEMP_COMMITS + +# Loop through the commits and build out the commit descriptions for the on-chain and off-chain sections +on_chain_index=1 +off_chain_index=1 +cat $TEMP_COMMITS | while read line; do + commit_hash=$(echo $line | cut -d' ' -f1) + commit_title=$(echo $line | cut -d' ' -f2-) + + # Pull out the PR number (e.g. "Added LSM Support (#803)" -> "803") + pr_number=$(echo $commit_title | sed -n 's/.*#\([0-9]*\).*/\1/p') + + # Build the commit description by replacing the PR number with the full url + # (e.g. "Added LSM Support (#803)" -> "Added LSM Support ([#803](https://github.com/Stride-Labs/stride/pull/803))" + description=$(echo $commit_title | sed "s|#$pr_number|[#$pr_number]($GITHUB_PR_URL/$pr_number)|") + + # Write the description to the relevant file, based on whether it changed anything on chain + if modified_on_chain_file $commit_hash; then + echo "$on_chain_index. $description" >> $TEMP_ON_CHAIN_CHANGELOG + on_chain_index=$((on_chain_index+1)) + else + echo "$off_chain_index. $description" >> $TEMP_OFF_CHAIN_CHANGELOG + off_chain_index=$((off_chain_index+1)) fi - SHORT_COMMIT_HASH=$(echo $LINE | cut -d' ' -f1) - LONG_COMMIT_HASH=$(echo $LINE | cut -d' ' -f2) - COMMIT_TITLE=$(echo $LINE | cut -d' ' -f3-) - PR_NUMBER=$(echo $COMMIT_TITLE | grep -oP '#\K\w+') - COMMIT_DESCRIPTION=$(echo $COMMIT_TITLE | sed "s|#$PR_NUMBER|[#$PR_NUMBER]($GITHUB_PR_URL/$PR_NUMBER)|") - echo "$i. $COMMIT_DESCRIPTION [[${SHORT_COMMIT_HASH}]($GITHUB_COMMIT_URL/${LONG_COMMIT_HASH})]" >> $UPGRADE_CHANGELOG - i=$((i+1)) -done +done + +# Build a temporary changelog file with the just changes from this upgrade +# This will later be inserted into the main changelog file +echo -e "\n## [$NEW_VERSION](https://github.com/Stride-Labs/stride/releases/tag/$NEW_VERSION) - $CURRENT_DATE" > $TEMP_MAIN_CHANGELOG + +# If there were on-chain changes, add the "On-Chain" section +if [[ -n "$TEMP_ON_CHAIN_CHANGELOG" ]]; then + echo -e "\n### On-Chain changes" >> $TEMP_MAIN_CHANGELOG + cat "$TEMP_ON_CHAIN_CHANGELOG" >> $TEMP_MAIN_CHANGELOG +fi + +# If there were off-chain changes, add the "Off-Chain" section +if [[ -n "$TEMP_OFF_CHAIN_CHANGELOG" ]]; then + echo -e "\n### Off-Chain changes" >> $TEMP_MAIN_CHANGELOG + cat "$TEMP_OFF_CHAIN_CHANGELOG" >> $TEMP_MAIN_CHANGELOG +fi + +# Insert the temporary changelog into the main file +echo "" >> $TEMP_MAIN_CHANGELOG +sed -i -e "/$MAIN_CHANGELOG_INSERT_STATEMENT/r $TEMP_MAIN_CHANGELOG" $MAIN_CHANGELOG + +# Finally, cleanup all the temp files +rm $TEMP_COMMITS +rm $TEMP_MAIN_CHANGELOG +rm $TEMP_ON_CHAIN_CHANGELOG +rm $TEMP_OFF_CHAIN_CHANGELOG From 0d3ed29fd7f0d1e578acf7fc8d42e2d7a8bf6bcc Mon Sep 17 00:00:00 2001 From: sampocs Date: Tue, 12 Sep 2023 11:47:50 -0500 Subject: [PATCH 29/44] updated osmo submodule (#931) Closes: #XXX ## Context and purpose of the change The submodule version for osmosis in the repo was stale and misaligned with the dockerfile. This PR updates it ## Brief Changelog * Updated osmo submodule --- deps/osmosis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/osmosis b/deps/osmosis index 08669da850..3e2c326301 160000 --- a/deps/osmosis +++ b/deps/osmosis @@ -1 +1 @@ -Subproject commit 08669da8509059980dc964976ee1ca60c84f5c8a +Subproject commit 3e2c326301aff138214c1d25630edb360459c0fd From b3049546bf50de0a7e2effdc261361beb9bee2d7 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 15 Sep 2023 10:21:36 -0500 Subject: [PATCH 30/44] Added ICAOracle route implementations for legacy Msg type (#923) --- x/icaoracle/types/message_add_oracle.go | 10 +++++++++- x/icaoracle/types/message_instantiate_oracle.go | 10 +++++++++- x/icaoracle/types/message_remove_oracle.go | 10 +++++++++- .../types/message_restore_oracle_interchain_account.go | 10 +++++++++- x/icaoracle/types/message_toggle_oracle.go | 10 +++++++++- 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index ea48277617..12a1b6b0c8 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -6,13 +6,17 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgAddOracle = "add_oracle" -var _ sdk.Msg = &MsgAddOracle{} +var ( + _ sdk.Msg = &MsgAddOracle{} + _ legacytx.LegacyMsg = &MsgAddOracle{} +) func NewMsgAddOracle(creator string, connectionId string) *MsgAddOracle { return &MsgAddOracle{ @@ -25,6 +29,10 @@ func (msg MsgAddOracle) Type() string { return TypeMsgAddOracle } +func (msg MsgAddOracle) Route() string { + return RouterKey +} + func (msg *MsgAddOracle) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index d01e14907a..a60a0f5513 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -6,13 +6,17 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" "github.com/Stride-Labs/stride/v14/utils" ) const TypeMsgInstantiateOracle = "instantiate_oracle" -var _ sdk.Msg = &MsgInstantiateOracle{} +var ( + _ sdk.Msg = &MsgInstantiateOracle{} + _ legacytx.LegacyMsg = &MsgInstantiateOracle{} +) func NewMsgInstantiateOracle(creator string, chainId string, contractCodeId uint64, transferChannelId string) *MsgInstantiateOracle { return &MsgInstantiateOracle{ @@ -27,6 +31,10 @@ func (msg MsgInstantiateOracle) Type() string { return TypeMsgInstantiateOracle } +func (msg MsgInstantiateOracle) Route() string { + return RouterKey +} + func (msg *MsgInstantiateOracle) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { diff --git a/x/icaoracle/types/message_remove_oracle.go b/x/icaoracle/types/message_remove_oracle.go index 139101acfe..731252b9cc 100644 --- a/x/icaoracle/types/message_remove_oracle.go +++ b/x/icaoracle/types/message_remove_oracle.go @@ -4,16 +4,24 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" ) const TypeMsgRemoveOracle = "remove_oracle" -var _ sdk.Msg = &MsgRemoveOracle{} +var ( + _ sdk.Msg = &MsgRemoveOracle{} + _ legacytx.LegacyMsg = &MsgRemoveOracle{} +) func (msg MsgRemoveOracle) Type() string { return TypeMsgRemoveOracle } +func (msg MsgRemoveOracle) Route() string { + return RouterKey +} + func (msg *MsgRemoveOracle) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account.go b/x/icaoracle/types/message_restore_oracle_interchain_account.go index d9302307ea..4b4ced8145 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account.go @@ -4,11 +4,15 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" ) const TypeMsgRestoreOracleICA = "restore_oracle_ica" -var _ sdk.Msg = &MsgRestoreOracleICA{} +var ( + _ sdk.Msg = &MsgRestoreOracleICA{} + _ legacytx.LegacyMsg = &MsgRestoreOracleICA{} +) func NewMsgRestoreOracleICA(creator string, oracleChainId string) *MsgRestoreOracleICA { return &MsgRestoreOracleICA{ @@ -21,6 +25,10 @@ func (msg MsgRestoreOracleICA) Type() string { return TypeMsgRestoreOracleICA } +func (msg MsgRestoreOracleICA) Route() string { + return RouterKey +} + func (msg *MsgRestoreOracleICA) GetSigners() []sdk.AccAddress { creator, err := sdk.AccAddressFromBech32(msg.Creator) if err != nil { diff --git a/x/icaoracle/types/message_toggle_oracle.go b/x/icaoracle/types/message_toggle_oracle.go index d05dc33044..81d0baca83 100644 --- a/x/icaoracle/types/message_toggle_oracle.go +++ b/x/icaoracle/types/message_toggle_oracle.go @@ -4,16 +4,24 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" ) const TypeMsgToggleOracle = "toggle_oracle" -var _ sdk.Msg = &MsgToggleOracle{} +var ( + _ sdk.Msg = &MsgToggleOracle{} + _ legacytx.LegacyMsg = &MsgToggleOracle{} +) func (msg MsgToggleOracle) Type() string { return TypeMsgToggleOracle } +func (msg MsgToggleOracle) Route() string { + return RouterKey +} + func (msg *MsgToggleOracle) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) From abe09af62ddac2517db6af5ddd6a86d4fbe9d84c Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 15 Sep 2023 10:29:31 -0500 Subject: [PATCH 31/44] increased precision error buffer on delegator shares callback (#933) --- x/stakeibc/keeper/icqcallbacks_delegator_shares.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index c67979c919..2a38e74013 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -190,7 +190,7 @@ func (k Keeper) CheckForSlash( // If the true delegation is slightly higher than our record keeping, this could be due to float imprecision // Correct record keeping accordingly - precisionErrorThreshold := sdkmath.NewInt(25) + precisionErrorThreshold := sdkmath.NewInt(1000) precisionError := delegatedTokens.Sub(validator.Delegation) if precisionError.IsPositive() && precisionError.LTE(precisionErrorThreshold) { // Update the validator on the host zone From b4719ff50df52e4e219cb3d054696ddb13032562 Mon Sep 17 00:00:00 2001 From: sampocs Date: Fri, 15 Sep 2023 12:21:17 -0500 Subject: [PATCH 32/44] Use detokenization amount from tx response (#934) --- x/stakeibc/keeper/icacallbacks_detokenize.go | 17 +++++- .../keeper/icacallbacks_detokenize_test.go | 59 ++++++++++--------- 2 files changed, 47 insertions(+), 29 deletions(-) diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go index 1cae63e458..05a6c907ec 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -1,6 +1,8 @@ package keeper import ( + "fmt" + errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" @@ -61,8 +63,21 @@ func (k Keeper) DetokenizeCallback(ctx sdk.Context, packet channeltypes.Packet, // If the ICA succeeded, remove the token deposit k.RecordsKeeper.RemoveLSMTokenDeposit(ctx, deposit.ChainId, deposit.Denom) + // Determine the actual number of tokens that were turned to native stake + // (this can be slightly different than the amount initiated in the redeem tokens tx + // due a precision error in the SDK) + if len(ackResponse.MsgResponses) != 1 { + return fmt.Errorf("Invalid number of messages (%d) in detokenize response: %v", + len(ackResponse.MsgResponses), ackResponse.MsgResponses) + } + var detokenizeResponse types.MsgRedeemTokensForSharesResponse + if err := proto.Unmarshal(ackResponse.MsgResponses[0], &detokenizeResponse); err != nil { + return err + } + stakeAmount := detokenizeResponse.Amount.Amount + // Update delegation on the host zone and validator - err := k.AddDelegationToValidator(ctx, &hostZone, deposit.ValidatorAddress, deposit.Amount, ICACallbackID_Detokenize) + err := k.AddDelegationToValidator(ctx, &hostZone, deposit.ValidatorAddress, stakeAmount, ICACallbackID_Detokenize) if err != nil { return err } diff --git a/x/stakeibc/keeper/icacallbacks_detokenize_test.go b/x/stakeibc/keeper/icacallbacks_detokenize_test.go index 8741e96aa1..c01759c676 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize_test.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize_test.go @@ -2,10 +2,12 @@ package keeper_test import ( sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) @@ -14,18 +16,20 @@ type DetokenizeCallbackTestCase struct { callbackBz []byte expectedValidatorDelegation int64 expectedTotalDelegation int64 + ackResponse *icacallbacktypes.AcknowledgementResponse } // Helper function to setup the detokenize ICA callback test // Returns the serialized callback args which will be an input parameter // to the callback -func (s *KeeperTestSuite) SetupTestDetokenizeCallback() DetokenizeCallbackTestCase { +func (s *KeeperTestSuite) SetupTestDetokenizeCallback(ackStatus icacallbacktypes.AckResponseStatus) DetokenizeCallbackTestCase { stakeAmount := sdkmath.NewInt(1000) + detokenizedAmount := sdkmath.NewInt(999) // mimics SDK rounding bug initialValidatorDelegation := sdkmath.NewInt(5000) initialTotalDelegation := sdkmath.NewInt(10000) - expectedValidatorDelegation := int64(6000) - expectedTotalDelegation := int64(11000) + expectedValidatorDelegation := int64(5999) // 5000 + 999 + expectedTotalDelegation := int64(10999) // 10000 + 999 // Store host zone with validator hostZone := types.HostZone{ @@ -55,21 +59,32 @@ func (s *KeeperTestSuite) SetupTestDetokenizeCallback() DetokenizeCallbackTestCa }) s.Require().NoError(err, "no error expected when marshalling callback args") + // Message response includes the redeemed amount + detokenizeResponse := types.MsgRedeemTokensForSharesResponse{ + Amount: sdk.NewCoin(Atom, detokenizedAmount), + } + detokenizeResponseBz, err := proto.Marshal(&detokenizeResponse) + s.Require().NoError(err, "no error expected when marshaling detokenize response") + + // Build the ack response with the detokenized amount and ack status + ackResponse := &icacallbacktypes.AcknowledgementResponse{ + Status: ackStatus, + MsgResponses: [][]byte{detokenizeResponseBz}, + } + return DetokenizeCallbackTestCase{ callbackBz: callbackBz, expectedValidatorDelegation: expectedValidatorDelegation, expectedTotalDelegation: expectedTotalDelegation, + ackResponse: ackResponse, } } func (s *KeeperTestSuite) TestDetokenizeCallback_Successful() { - tc := s.SetupTestDetokenizeCallback() + tc := s.SetupTestDetokenizeCallback(icacallbackstypes.AckResponseStatus_SUCCESS) // Call the callback with a successful response - ackSuccess := &icacallbackstypes.AcknowledgementResponse{ - Status: icacallbackstypes.AckResponseStatus_SUCCESS, - } - err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, tc.callbackBz) + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, tc.ackResponse, tc.callbackBz) s.Require().NoError(err, "no error expected during callback") // Check that the deposit was removed @@ -87,19 +102,16 @@ func (s *KeeperTestSuite) TestDetokenizeCallback_Successful() { } func (s *KeeperTestSuite) TestDetokenizeCallback_InvalidCallbackArgs() { - s.SetupTestDetokenizeCallback() + tc := s.SetupTestDetokenizeCallback(icacallbackstypes.AckResponseStatus_SUCCESS) // Call the callback with a successful ack, but invalid callback args invalidCallbackArgs := []byte{1, 2, 3} - ackSuccess := &icacallbackstypes.AcknowledgementResponse{ - Status: icacallbackstypes.AckResponseStatus_SUCCESS, - } - err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, invalidCallbackArgs) + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, tc.ackResponse, invalidCallbackArgs) s.Require().ErrorContains(err, "unable to unmarshal detokenize callback") } func (s *KeeperTestSuite) TestDetokenizeCallback_HostNotFound() { - s.SetupTestDetokenizeCallback() + tc := s.SetupTestDetokenizeCallback(icacallbackstypes.AckResponseStatus_SUCCESS) // Call the callback with a host zone that does not exist - it should fail invalidCallbackArgs, err := proto.Marshal(&types.DetokenizeSharesCallback{ @@ -109,21 +121,15 @@ func (s *KeeperTestSuite) TestDetokenizeCallback_HostNotFound() { }) s.Require().NoError(err, "no error expected when marshalling callback data") - ackSuccess := &icacallbackstypes.AcknowledgementResponse{ - Status: icacallbackstypes.AckResponseStatus_SUCCESS, - } - err = s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackSuccess, invalidCallbackArgs) + err = s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, tc.ackResponse, invalidCallbackArgs) s.Require().ErrorContains(err, "Host zone not found") } func (s *KeeperTestSuite) TestDetokenizeCallback_AckTimeout() { - tc := s.SetupTestDetokenizeCallback() + tc := s.SetupTestDetokenizeCallback(icacallbackstypes.AckResponseStatus_TIMEOUT) // Call the callback with a timed-out response - ackTimeout := &icacallbackstypes.AcknowledgementResponse{ - Status: icacallbackstypes.AckResponseStatus_TIMEOUT, - } - err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackTimeout, tc.callbackBz) + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, tc.ackResponse, tc.callbackBz) s.Require().NoError(err, "no error expected during callback") // The deposit should still be there in status IN_PROGRESS @@ -138,13 +144,10 @@ func (s *KeeperTestSuite) TestDetokenizeCallback_AckTimeout() { } func (s *KeeperTestSuite) TestDetokenizeCallback_AckFailure() { - tc := s.SetupTestDetokenizeCallback() + tc := s.SetupTestDetokenizeCallback(icacallbackstypes.AckResponseStatus_FAILURE) // Call the callback with an ack-failure response - ackFailure := &icacallbackstypes.AcknowledgementResponse{ - Status: icacallbackstypes.AckResponseStatus_FAILURE, - } - err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, ackFailure, tc.callbackBz) + err := s.App.StakeibcKeeper.DetokenizeCallback(s.Ctx, channeltypes.Packet{}, tc.ackResponse, tc.callbackBz) s.Require().NoError(err, "no error expected during callback") // The deposit status should be FAILED From ce7fb02252026d47ce69dd12171627ba23ef3c10 Mon Sep 17 00:00:00 2001 From: Aidan Salzmann Date: Sun, 17 Sep 2023 22:25:03 -0400 Subject: [PATCH 33/44] add inner bounds (#938) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **summary** add inner bounds **tests** - unittests - dockernet - verify bounds are set upon registration - verify hz halts if the inner bound is crossed ``` ➜ stride git:(tight-bounds) ✗ stridedl q stakeibc show-host-zone GAIA host_zone: ... last_redemption_rate: "1.000000000000000000" max_inner_redemption_rate: "1.500000000000000000" max_redemption_rate: "1.500000000000000000" min_inner_redemption_rate: "0.900000000000000000" min_redemption_rate: "0.900000000000000000" redemption_rate: "1.000000000000000000" ``` update bounds ``` $STRIDE_MAIN_CMD tx stakeibc set-redemption-rate-bounds GAIA 1 1.4 --from $STRIDE_ADMIN_ACCT -y | TRIM_TX ``` and query them ``` max_inner_redemption_rate: "1.400000000000000000" max_redemption_rate: "1.500000000000000000" min_inner_redemption_rate: "1.000000000000000000" min_redemption_rate: "0.900000000000000000" ``` try setting from the wrong account ``` $STRIDE_MAIN_CMD tx stakeibc set-redemption-rate-bounds GAIA 1.1 1.3 --from val1 -y | TRIM_TX ``` and the error ``` ➜ stride git:(tight-bounds) ✗ bash dockernet/scripts/set_bound.sh Error: invalid creator address (stride1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrt52vv7): invalid address Usage: strided tx stakeibc set-redemption-rate-bounds [chainid] [min-bound] [max-bound] [flags] Flags: ``` Set tight bound and observe halt ``` $STRIDE_MAIN_CMD tx stakeibc set-redemption-rate-bounds GAIA 1 1.000001 --from $STRIDE_ADMIN_ACCT -y | TRIM_TX ``` halt ``` dockernet-stride1-1 | 2:11AM ERR IsRedemptionRateWithinSafetyBounds check failed 1.001028241739306108 is outside inner safety bounds [1.000000000000000000, 1.000001000000000000] module=x/stakeibc dockernet-stride1-1 | 2:11AM ERR [INVARIANT BROKEN!!!] GAIA's RR is 1.001028241739306108. ERR: IsRedemptionRateWithinSafetyBounds check failed 1.001028241739306108 is outside inner safety bounds [1.000000000000000000, 1.000001000000000000]: redemption rate outside safety bounds module=x/stakeibc ``` --- dockernet/scripts/set_bound.sh | 11 + proto/stride/stakeibc/host_zone.proto | 10 + proto/stride/stakeibc/tx.proto | 19 + x/stakeibc/client/cli/tx.go | 1 + .../tx_update_inner_redemption_rate_bounds.go | 44 ++ x/stakeibc/handler.go | 3 + x/stakeibc/keeper/host_zone_test.go | 2 + x/stakeibc/keeper/keeper.go | 46 +- .../keeper/msg_server_register_host_zone.go | 17 +- ...ver_update_inner_redemption_rate_bounds.go | 48 ++ ...pdate_inner_redemption_rate_bounds_test.go | 111 +++ x/stakeibc/types/codec.go | 2 + x/stakeibc/types/errors.go | 1 + x/stakeibc/types/host_zone.pb.go | 220 ++++-- ...age_update_inner_redemption_rate_bounds.go | 58 ++ x/stakeibc/types/tx.pb.go | 696 +++++++++++++++--- 16 files changed, 1108 insertions(+), 181 deletions(-) create mode 100644 dockernet/scripts/set_bound.sh create mode 100644 x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go create mode 100644 x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go create mode 100644 x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go create mode 100644 x/stakeibc/types/message_update_inner_redemption_rate_bounds.go diff --git a/dockernet/scripts/set_bound.sh b/dockernet/scripts/set_bound.sh new file mode 100644 index 0000000000..2255acd99d --- /dev/null +++ b/dockernet/scripts/set_bound.sh @@ -0,0 +1,11 @@ +### IBC TRANSFER +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../config.sh + +## Set the redemption rate bounds +# Set bounds from the correct account (success) +# $STRIDE_MAIN_CMD tx stakeibc set-redemption-rate-bounds GAIA 1 1.4 --from $STRIDE_ADMIN_ACCT -y | TRIM_TX +# Set bounds from the wrong account (fail) +# $STRIDE_MAIN_CMD tx stakeibc set-redemption-rate-bounds GAIA 1.1 1.3 --from val1 -y | TRIM_TX +# Set tight bound and observe halt +$STRIDE_MAIN_CMD tx stakeibc set-redemption-rate-bounds GAIA 1 1.000001 --from $STRIDE_ADMIN_ACCT -y | TRIM_TX diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index c8e72aff7c..d55c67a84e 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -52,6 +52,16 @@ message HostZone { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false ]; + string min_inner_redemption_rate = 28 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + string max_inner_redemption_rate = 29 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; bool lsm_liquid_stake_enabled = 27; bool halted = 19; reserved 4, 5, 6, 7, 14, 15, 16; diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index d73a785298..d908e7245b 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -28,8 +28,27 @@ service Msg { rpc UpdateValidatorSharesExchRate(MsgUpdateValidatorSharesExchRate) returns (MsgUpdateValidatorSharesExchRateResponse); rpc ClearBalance(MsgClearBalance) returns (MsgClearBalanceResponse); + rpc UpdateInnerRedemptionRateBounds(MsgUpdateInnerRedemptionRateBounds) + returns (MsgUpdateInnerRedemptionRateBoundsResponse); } +message MsgUpdateInnerRedemptionRateBounds { + string creator = 1; + string chain_id = 2; + string min_inner_redemption_rate = 3 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; + string max_inner_redemption_rate = 4 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false + ]; +} + +message MsgUpdateInnerRedemptionRateBoundsResponse {} + message MsgLiquidStake { string creator = 1; string amount = 2 [ diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index 4ac08a0077..a7c269f227 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -36,6 +36,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand(CmdRestoreInterchainAccount()) cmd.AddCommand(CmdUpdateValidatorSharesExchRate()) cmd.AddCommand(CmdClearBalance()) + cmd.AddCommand(CmdUpdateInnerRedemptionRateBounds()) return cmd } diff --git a/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go b/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go new file mode 100644 index 0000000000..216cf92f9b --- /dev/null +++ b/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go @@ -0,0 +1,44 @@ +package cli + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +func CmdUpdateInnerRedemptionRateBounds() *cobra.Command { + cmd := &cobra.Command{ + Use: "set-redemption-rate-bounds [chainid] [min-bound] [max-bound]", + Short: "Broadcast message set-redemption-rate-bounds", + Args: cobra.ExactArgs(3), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argChainId := args[0] + minInnerRedemptionRate := sdk.MustNewDecFromStr(args[1]) + maxInnerRedemptionRate := sdk.MustNewDecFromStr(args[2]) + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUpdateInnerRedemptionRateBounds( + clientCtx.GetFromAddress().String(), + argChainId, + minInnerRedemptionRate, + maxInnerRedemptionRate, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index 1f5abd4090..bad3d8d516 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -58,6 +58,9 @@ func NewMessageHandler(k keeper.Keeper) sdk.Handler { case *types.MsgUpdateValidatorSharesExchRate: res, err := msgServer.UpdateValidatorSharesExchRate(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgUpdateInnerRedemptionRateBounds: + res, err := msgServer.UpdateInnerRedemptionRateBounds(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) default: errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, errorsmod.Wrap(sdkerrors.ErrUnknownRequest, errMsg) diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index f1383b427a..e8fcd15562 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -23,6 +23,8 @@ func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.Host items[i].LastRedemptionRate = sdk.NewDec(1) items[i].MinRedemptionRate = sdk.NewDecWithPrec(5, 1) items[i].MaxRedemptionRate = sdk.NewDecWithPrec(15, 1) + items[i].MinInnerRedemptionRate = sdk.NewDecWithPrec(5, 1) + items[i].MaxInnerRedemptionRate = sdk.NewDecWithPrec(15, 1) items[i].TotalDelegations = sdkmath.ZeroInt() keeper.SetHostZone(ctx, items[i]) } diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index 4d80a063f3..82a1e83bf5 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -254,6 +254,33 @@ func (k Keeper) GetICATimeoutNanos(ctx sdk.Context, epochType string) (uint64, e // safety check: ensure the redemption rate is NOT below our min safety threshold && NOT above our max safety threshold on host zone func (k Keeper) IsRedemptionRateWithinSafetyBounds(ctx sdk.Context, zone types.HostZone) (bool, error) { + // Get the wide bounds + minSafetyThreshold, maxSafetyThreshold := k.GetOuterSafetyBounds(ctx, zone) + + redemptionRate := zone.RedemptionRate + + if redemptionRate.LT(minSafetyThreshold) || redemptionRate.GT(maxSafetyThreshold) { + errMsg := fmt.Sprintf("IsRedemptionRateWithinSafetyBounds check failed %s is outside safety bounds [%s, %s]", redemptionRate.String(), minSafetyThreshold.String(), maxSafetyThreshold.String()) + k.Logger(ctx).Error(errMsg) + return false, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) + } + + // Verify the redemption rate is within the inner safety bounds + // The inner safety bounds should always be within the safety bounds, but + // the redundancy above is cheap. + // There is also one scenario where the outer bounds go within the inner bounds - if they're updated as part of a param change proposal. + minInnerSafetyThreshold, maxInnerSafetyThreshold := k.GetInnerSafetyBounds(ctx, zone) + if redemptionRate.LT(minInnerSafetyThreshold) || redemptionRate.GT(maxInnerSafetyThreshold) { + errMsg := fmt.Sprintf("IsRedemptionRateWithinSafetyBounds check failed %s is outside inner safety bounds [%s, %s]", redemptionRate.String(), minInnerSafetyThreshold.String(), maxInnerSafetyThreshold.String()) + k.Logger(ctx).Error(errMsg) + return false, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) + } + + return true, nil +} + +func (k Keeper) GetOuterSafetyBounds(ctx sdk.Context, zone types.HostZone) (sdk.Dec, sdk.Dec) { + // Fetch the wide bounds minSafetyThresholdInt := k.GetParam(ctx, types.KeyDefaultMinRedemptionRateThreshold) minSafetyThreshold := sdk.NewDec(int64(minSafetyThresholdInt)).Quo(sdk.NewDec(100)) @@ -268,12 +295,19 @@ func (k Keeper) IsRedemptionRateWithinSafetyBounds(ctx sdk.Context, zone types.H maxSafetyThreshold = zone.MaxRedemptionRate } - redemptionRate := zone.RedemptionRate + return minSafetyThreshold, maxSafetyThreshold +} - if redemptionRate.LT(minSafetyThreshold) || redemptionRate.GT(maxSafetyThreshold) { - errMsg := fmt.Sprintf("IsRedemptionRateWithinSafetyBounds check failed %s is outside safety bounds [%s, %s]", redemptionRate.String(), minSafetyThreshold.String(), maxSafetyThreshold.String()) - k.Logger(ctx).Error(errMsg) - return false, errorsmod.Wrapf(types.ErrRedemptionRateOutsideSafetyBounds, errMsg) +func (k Keeper) GetInnerSafetyBounds(ctx sdk.Context, zone types.HostZone) (sdk.Dec, sdk.Dec) { + // Fetch the inner bounds + minSafetyThreshold, maxSafetyThreshold := k.GetOuterSafetyBounds(ctx, zone) + + if !zone.MinInnerRedemptionRate.IsNil() && zone.MinInnerRedemptionRate.IsPositive() && zone.MinInnerRedemptionRate.GT(minSafetyThreshold) { + minSafetyThreshold = zone.MinInnerRedemptionRate } - return true, nil + if !zone.MaxInnerRedemptionRate.IsNil() && zone.MaxInnerRedemptionRate.IsPositive() && zone.MaxInnerRedemptionRate.LT(maxSafetyThreshold) { + maxSafetyThreshold = zone.MaxInnerRedemptionRate + } + + return minSafetyThreshold, maxSafetyThreshold } diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 28de4ab7b8..fd991ccc0e 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -92,13 +92,16 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste HostDenom: msg.HostDenom, TransferChannelId: msg.TransferChannelId, // Start sharesToTokens rate at 1 upon registration - RedemptionRate: sdk.NewDec(1), - LastRedemptionRate: sdk.NewDec(1), - UnbondingPeriod: msg.UnbondingPeriod, - DepositAddress: depositAddress.String(), - MinRedemptionRate: msg.MinRedemptionRate, - MaxRedemptionRate: msg.MaxRedemptionRate, - LsmLiquidStakeEnabled: msg.LsmLiquidStakeEnabled, + RedemptionRate: sdk.NewDec(1), + LastRedemptionRate: sdk.NewDec(1), + UnbondingPeriod: msg.UnbondingPeriod, + DepositAddress: depositAddress.String(), + MinRedemptionRate: msg.MinRedemptionRate, + MaxRedemptionRate: msg.MaxRedemptionRate, + // Default the inner bounds to the outer bounds + MinInnerRedemptionRate: msg.MinRedemptionRate, + MaxInnerRedemptionRate: msg.MaxRedemptionRate, + LsmLiquidStakeEnabled: msg.LsmLiquidStakeEnabled, } // write the zone back to the store k.SetHostZone(ctx, zone) diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go new file mode 100644 index 0000000000..7f2170fc81 --- /dev/null +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go @@ -0,0 +1,48 @@ +package keeper + +import ( + "context" + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +func (k msgServer) UpdateInnerRedemptionRateBounds(goCtx context.Context, msg *types.MsgUpdateInnerRedemptionRateBounds) (*types.MsgUpdateInnerRedemptionRateBoundsResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Confirm host zone exists + zone, found := k.GetHostZone(ctx, msg.ChainId) + if !found { + k.Logger(ctx).Error(fmt.Sprintf("Host Zone not found: %s", msg.ChainId)) + return nil, types.ErrInvalidHostZone + } + + // Get the wide bounds + outerMinSafetyThreshold, outerMaxSafetyThreshold := k.GetOuterSafetyBounds(ctx, zone) + + innerMinSafetyThreshold := msg.MinInnerRedemptionRate + innerMaxSafetyThreshold := msg.MaxInnerRedemptionRate + + // Confirm the inner bounds are within the outer bounds + if innerMinSafetyThreshold.LT(outerMinSafetyThreshold) { + errMsg := fmt.Sprintf("inner min safety threshold (%s) is less than outer min safety threshold (%s)", innerMinSafetyThreshold, outerMinSafetyThreshold) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrInvalidBounds, errMsg) + } + + if innerMaxSafetyThreshold.GT(outerMaxSafetyThreshold) { + errMsg := fmt.Sprintf("inner max safety threshold (%s) is greater than outer max safety threshold (%s)", innerMaxSafetyThreshold, outerMaxSafetyThreshold) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrInvalidBounds, errMsg) + } + + // Set the inner bounds on the host zone + zone.MinInnerRedemptionRate = innerMinSafetyThreshold + zone.MaxInnerRedemptionRate = innerMaxSafetyThreshold + k.SetHostZone(ctx, zone) + + return &types.MsgUpdateInnerRedemptionRateBoundsResponse{}, nil +} diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go new file mode 100644 index 0000000000..671f567dcb --- /dev/null +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go @@ -0,0 +1,111 @@ +package keeper_test + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +type UpdateInnerRedemptionRateBoundsTestCase struct { + validMsg stakeibctypes.MsgUpdateInnerRedemptionRateBounds + zone stakeibctypes.HostZone +} + +func (s *KeeperTestSuite) SetupUpdateInnerRedemptionRateBounds() UpdateInnerRedemptionRateBoundsTestCase { + // Register a host zone + hostZone := stakeibctypes.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + IbcDenom: IbcAtom, + RedemptionRate: sdk.NewDec(1.0), + MinRedemptionRate: sdk.NewDec(9).Quo(sdk.NewDec(10)), + MaxRedemptionRate: sdk.NewDec(15).Quo(sdk.NewDec(10)), + } + + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + defaultMsg := stakeibctypes.MsgUpdateInnerRedemptionRateBounds{ + // TODO: does this need to be the admin address? + Creator: s.TestAccs[0].String(), + ChainId: HostChainId, + MinInnerRedemptionRate: sdk.NewDec(1), + MaxInnerRedemptionRate: sdk.NewDec(11).Quo(sdk.NewDec(10)), + } + + return UpdateInnerRedemptionRateBoundsTestCase{ + validMsg: defaultMsg, + zone: hostZone, + } +} + +// Verify that bounds can be set successfully +func (s *KeeperTestSuite) TestUpdateInnerRedemptionRateBounds_Success() { + tc := s.SetupUpdateInnerRedemptionRateBounds() + + // Set the inner bounds on the host zone + _, err := s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &tc.validMsg) + s.Require().NoError(err, "should not throw an error") + + // Confirm the inner bounds were set + zone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should be in the store") + s.Require().Equal(tc.validMsg.MinInnerRedemptionRate, zone.MinInnerRedemptionRate, "min inner redemption rate should be set") + s.Require().Equal(tc.validMsg.MaxInnerRedemptionRate, zone.MaxInnerRedemptionRate, "max inner redemption rate should be set") +} + +// Setting inner bounds outside of outer bounds should throw an error +func (s *KeeperTestSuite) TestUpdateInnerRedemptionRateBounds_OutOfBounds() { + tc := s.SetupUpdateInnerRedemptionRateBounds() + + // Set the min inner bound to be less than the min outer bound + tc.validMsg.MinInnerRedemptionRate = sdk.NewDec(0) + + // Set the inner bounds on the host zone + _, err := s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &tc.validMsg) + // verify it throws an error + errMsg := fmt.Sprintf("inner min safety threshold (%s) is less than outer min safety threshold (%s)", tc.validMsg.MinInnerRedemptionRate, sdk.NewDec(9).Quo(sdk.NewDec(10))) + s.Require().ErrorContains(err, errMsg) + + // Set the min inner bound to be valid, but the max inner bound to be greater than the max outer bound + tc.validMsg.MinInnerRedemptionRate = sdk.NewDec(1) + tc.validMsg.MaxInnerRedemptionRate = sdk.NewDec(3) + // Set the inner bounds on the host zone + _, err = s.GetMsgServer().UpdateInnerRedemptionRateBounds(s.Ctx, &tc.validMsg) + // verify it throws an error + errMsg = fmt.Sprintf("inner max safety threshold (%s) is greater than outer max safety threshold (%s)", tc.validMsg.MaxInnerRedemptionRate, sdk.NewDec(15).Quo(sdk.NewDec(10))) + s.Require().ErrorContains(err, errMsg) +} + +// Validate basic tests +func (s *KeeperTestSuite) TestUpdateInnerRedemptionRateBounds_InvalidMsg() { + tc := s.SetupUpdateInnerRedemptionRateBounds() + + // Set the min inner bound to be greater than than the max inner bound + invalidMsg := tc.validMsg + invalidMsg.MinInnerRedemptionRate = sdk.NewDec(2) + + err := invalidMsg.ValidateBasic() + + // Verify the error + errMsg := fmt.Sprintf("Inner max safety threshold (%s) is less than inner min safety threshold (%s)", invalidMsg.MaxInnerRedemptionRate, invalidMsg.MinInnerRedemptionRate) + s.Require().ErrorContains(err, errMsg) +} + +// Verify that if inner bounds end up outside of outer bounds (somehow), the outer bounds are returned +func (s *KeeperTestSuite) TestGetInnerSafetyBounds() { + tc := s.SetupUpdateInnerRedemptionRateBounds() + + // Set the inner bounds outside the outer bounds on the host zone directly + tc.zone.MinInnerRedemptionRate = sdk.NewDec(0) + tc.zone.MaxInnerRedemptionRate = sdk.NewDec(3) + // Set the host zone + s.App.StakeibcKeeper.SetHostZone(s.Ctx, tc.zone) + + // Get the inner bounds and verify the outer bounds are used + innerMinSafetyThreshold, innerMaxSafetyThreshold := s.App.StakeibcKeeper.GetInnerSafetyBounds(s.Ctx, tc.zone) + s.Require().Equal(tc.zone.MinRedemptionRate, innerMinSafetyThreshold, "min inner redemption rate should be set") + s.Require().Equal(tc.zone.MaxRedemptionRate, innerMaxSafetyThreshold, "max inner redemption rate should be set") +} diff --git a/x/stakeibc/types/codec.go b/x/stakeibc/types/codec.go index 857737d6ba..e0f63edc89 100644 --- a/x/stakeibc/types/codec.go +++ b/x/stakeibc/types/codec.go @@ -23,6 +23,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&ToggleLSMProposal{}, "stakeibc/ToggleLSMProposal", nil) cdc.RegisterConcrete(&MsgRestoreInterchainAccount{}, "stakeibc/RestoreInterchainAccount", nil) cdc.RegisterConcrete(&MsgUpdateValidatorSharesExchRate{}, "stakeibc/UpdateValidatorSharesExchRate", nil) + cdc.RegisterConcrete(&MsgUpdateInnerRedemptionRateBounds{}, "stakeibc/UpdateInnerRedemptionRateBounds", nil) // this line is used by starport scaffolding # 2 } @@ -39,6 +40,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgDeleteValidator{}, &MsgRestoreInterchainAccount{}, &MsgUpdateValidatorSharesExchRate{}, + &MsgUpdateInnerRedemptionRateBounds{}, ) registry.RegisterImplementations((*govtypes.Content)(nil), diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index bf9f815aee..a0805b6f3f 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -56,4 +56,5 @@ var ( ErrInvalidValidatorDelegationUpdates = errorsmod.Register(ModuleName, 1548, "Invalid validator delegation updates") ErrLSMLiquidStakeDisabledForHostZone = errorsmod.Register(ModuleName, 1549, "LSM liquid stake is disabled for host zone") ErrUnableToRemoveValidator = errorsmod.Register(ModuleName, 1550, "Unable to remove validator") + ErrInvalidBounds = errorsmod.Register(ModuleName, 1551, "Invalid safety bounds - inner bounds must be within outer bounds") ) diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index da47a3bb88..09a60e96d0 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -33,21 +33,23 @@ type HostZone struct { // ibc denom on stride IbcDenom string `protobuf:"bytes,8,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty"` // native denom on host zone - HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` - UnbondingPeriod uint64 `protobuf:"varint,26,opt,name=unbonding_period,json=unbondingPeriod,proto3" json:"unbonding_period,omitempty"` - Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` - DepositAddress string `protobuf:"bytes,18,opt,name=deposit_address,json=depositAddress,proto3" json:"deposit_address,omitempty"` - WithdrawalIcaAddress string `protobuf:"bytes,22,opt,name=withdrawal_ica_address,json=withdrawalIcaAddress,proto3" json:"withdrawal_ica_address,omitempty"` - FeeIcaAddress string `protobuf:"bytes,23,opt,name=fee_ica_address,json=feeIcaAddress,proto3" json:"fee_ica_address,omitempty"` - DelegationIcaAddress string `protobuf:"bytes,24,opt,name=delegation_ica_address,json=delegationIcaAddress,proto3" json:"delegation_ica_address,omitempty"` - RedemptionIcaAddress string `protobuf:"bytes,25,opt,name=redemption_ica_address,json=redemptionIcaAddress,proto3" json:"redemption_ica_address,omitempty"` - TotalDelegations github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=total_delegations,json=totalDelegations,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_delegations"` - LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` - RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` - MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` - MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` - LsmLiquidStakeEnabled bool `protobuf:"varint,27,opt,name=lsm_liquid_stake_enabled,json=lsmLiquidStakeEnabled,proto3" json:"lsm_liquid_stake_enabled,omitempty"` - Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` + HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` + UnbondingPeriod uint64 `protobuf:"varint,26,opt,name=unbonding_period,json=unbondingPeriod,proto3" json:"unbonding_period,omitempty"` + Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` + DepositAddress string `protobuf:"bytes,18,opt,name=deposit_address,json=depositAddress,proto3" json:"deposit_address,omitempty"` + WithdrawalIcaAddress string `protobuf:"bytes,22,opt,name=withdrawal_ica_address,json=withdrawalIcaAddress,proto3" json:"withdrawal_ica_address,omitempty"` + FeeIcaAddress string `protobuf:"bytes,23,opt,name=fee_ica_address,json=feeIcaAddress,proto3" json:"fee_ica_address,omitempty"` + DelegationIcaAddress string `protobuf:"bytes,24,opt,name=delegation_ica_address,json=delegationIcaAddress,proto3" json:"delegation_ica_address,omitempty"` + RedemptionIcaAddress string `protobuf:"bytes,25,opt,name=redemption_ica_address,json=redemptionIcaAddress,proto3" json:"redemption_ica_address,omitempty"` + TotalDelegations github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=total_delegations,json=totalDelegations,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_delegations"` + LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` + RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` + MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` + MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + MinInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,28,opt,name=min_inner_redemption_rate,json=minInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_inner_redemption_rate"` + MaxInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,29,opt,name=max_inner_redemption_rate,json=maxInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_inner_redemption_rate"` + LsmLiquidStakeEnabled bool `protobuf:"varint,27,opt,name=lsm_liquid_stake_enabled,json=lsmLiquidStakeEnabled,proto3" json:"lsm_liquid_stake_enabled,omitempty"` + Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` } func (m *HostZone) Reset() { *m = HostZone{} } @@ -195,51 +197,53 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 699 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0x4f, 0x4f, 0x1a, 0x41, - 0x18, 0xc6, 0xa1, 0xae, 0xb8, 0x8c, 0x7f, 0x58, 0x56, 0xa4, 0x2b, 0xa6, 0x48, 0x6c, 0xd2, 0xd0, - 0x03, 0x4b, 0xaa, 0x4d, 0x9a, 0x34, 0x3d, 0x54, 0x4b, 0x93, 0x42, 0x8c, 0x69, 0xd6, 0xa4, 0x07, - 0x7b, 0xd8, 0xcc, 0xee, 0xbc, 0xc0, 0xc4, 0xdd, 0x19, 0xba, 0x33, 0x2a, 0xed, 0xa7, 0xe8, 0x87, - 0xf1, 0x0b, 0xf4, 0xe6, 0xd1, 0x78, 0x6a, 0x7a, 0x30, 0x8d, 0x7e, 0x91, 0x86, 0xd9, 0xe5, 0x9f, - 0x1c, 0x48, 0x13, 0x4f, 0xcc, 0xbc, 0xcf, 0xf3, 0xfe, 0x9e, 0x99, 0x01, 0x5e, 0xb4, 0x2d, 0x64, - 0x44, 0x09, 0xd4, 0x85, 0xc4, 0xa7, 0x40, 0x3d, 0xbf, 0xde, 0xe5, 0x42, 0xba, 0x3f, 0x38, 0x03, - 0xbb, 0x17, 0x71, 0xc9, 0xcd, 0x5c, 0x6c, 0xb0, 0x87, 0x86, 0xd2, 0x4c, 0xc7, 0x39, 0x0e, 0x28, - 0xc1, 0x92, 0x47, 0x71, 0x47, 0xa9, 0xd0, 0xe1, 0x1d, 0xae, 0x96, 0xf5, 0xc1, 0x2a, 0xa9, 0x6e, - 0xfa, 0x5c, 0x84, 0x5c, 0xb8, 0xb1, 0x10, 0x6f, 0x62, 0x69, 0xe7, 0x17, 0x42, 0xfa, 0x27, 0x2e, - 0xe4, 0x09, 0x67, 0x60, 0x6e, 0x22, 0xdd, 0xef, 0x62, 0xca, 0x5c, 0x4a, 0xac, 0x74, 0x25, 0x5d, - 0xcd, 0x3a, 0x4b, 0x6a, 0xdf, 0x24, 0xe6, 0x0e, 0x5a, 0xf1, 0xc0, 0xef, 0xee, 0xed, 0xf6, 0x22, - 0x68, 0xd3, 0xbe, 0x95, 0x57, 0xf2, 0x54, 0xcd, 0x7c, 0x8e, 0x56, 0x7d, 0xce, 0x18, 0xf8, 0x92, - 0x72, 0xc5, 0x78, 0x12, 0x9b, 0xc6, 0xc5, 0x26, 0x31, 0x6d, 0xb4, 0x2e, 0x23, 0xcc, 0x44, 0x1b, - 0x22, 0xd7, 0xef, 0x62, 0xc6, 0x20, 0x18, 0x58, 0x57, 0x94, 0x35, 0x3f, 0x94, 0x3e, 0xc4, 0x4a, - 0x93, 0x98, 0x5b, 0x28, 0x4b, 0x3d, 0xdf, 0x25, 0xc0, 0x78, 0x68, 0xe9, 0xca, 0xa5, 0x53, 0xcf, - 0x6f, 0x0c, 0xf6, 0xe6, 0x33, 0x84, 0xd4, 0x9b, 0xc5, 0x6a, 0x56, 0xa9, 0xd9, 0x41, 0x25, 0x96, - 0x5f, 0x22, 0xe3, 0x8c, 0x79, 0x9c, 0x11, 0xca, 0x3a, 0x6e, 0x0f, 0x22, 0xca, 0x89, 0x55, 0xaa, - 0xa4, 0xab, 0x9a, 0x93, 0x1b, 0xd5, 0x3f, 0xab, 0xb2, 0xf9, 0x16, 0xa1, 0xd1, 0x5b, 0x0a, 0x6b, - 0xa1, 0xb2, 0x50, 0x5d, 0xde, 0x2d, 0xd9, 0x0f, 0xde, 0xdf, 0xfe, 0x32, 0xb4, 0x38, 0x13, 0x6e, - 0x73, 0x1f, 0xe5, 0x08, 0xf4, 0xb8, 0xa0, 0xd2, 0xc5, 0x84, 0x44, 0x20, 0x84, 0x65, 0x0e, 0x8e, - 0x72, 0x60, 0xdd, 0x5c, 0xd6, 0x0a, 0xc9, 0x73, 0xef, 0xc7, 0xca, 0xb1, 0x8c, 0x28, 0xeb, 0x38, - 0x6b, 0x49, 0x43, 0x52, 0x35, 0x8f, 0x50, 0xf1, 0x82, 0xca, 0x2e, 0x89, 0xf0, 0x05, 0x0e, 0x5c, - 0xea, 0xe3, 0x11, 0xa9, 0x38, 0x87, 0x54, 0x18, 0xf7, 0x35, 0x7d, 0x3c, 0xe4, 0xbd, 0x47, 0xb9, - 0x36, 0xc0, 0x14, 0xe8, 0xe9, 0x1c, 0xd0, 0x6a, 0x1b, 0x60, 0x82, 0x70, 0x84, 0x8a, 0x04, 0x02, - 0xe8, 0xe0, 0xf8, 0xcb, 0x9c, 0x00, 0x59, 0xf3, 0x4e, 0x34, 0xee, 0x9b, 0xe6, 0x45, 0x40, 0x20, - 0xec, 0xcd, 0xf0, 0x36, 0xe7, 0xf1, 0xc6, 0x7d, 0x13, 0xbc, 0xaf, 0x28, 0x2f, 0xb9, 0xc4, 0x81, - 0x3b, 0x4e, 0x13, 0xd6, 0xaa, 0x42, 0xd9, 0x57, 0xb7, 0xdb, 0xa9, 0x3f, 0xb7, 0xdb, 0x2f, 0x3a, - 0x54, 0x76, 0xcf, 0x3c, 0xdb, 0xe7, 0x61, 0xf2, 0xa3, 0x4f, 0x3e, 0x6a, 0x82, 0x9c, 0xd6, 0xe5, - 0xf7, 0x1e, 0x08, 0xbb, 0xc9, 0xa4, 0x63, 0x28, 0x50, 0x63, 0xcc, 0x31, 0x19, 0x2a, 0x04, 0x58, - 0x48, 0x77, 0xe2, 0xc4, 0x11, 0x96, 0x60, 0x21, 0xc5, 0x7f, 0xf7, 0x1f, 0xfc, 0x06, 0xf8, 0x37, - 0x97, 0x35, 0x94, 0x5c, 0xac, 0x01, 0xbe, 0x63, 0x0e, 0xc8, 0xce, 0x08, 0xec, 0x60, 0x09, 0x26, - 0xa0, 0xdc, 0xc3, 0xa8, 0xe5, 0x47, 0x88, 0x5a, 0x8b, 0xa6, 0x63, 0x02, 0xb4, 0x1e, 0x52, 0x36, - 0x73, 0xab, 0xc2, 0x23, 0x44, 0xe5, 0x43, 0xca, 0x9c, 0xd9, 0x34, 0xdc, 0x9f, 0x49, 0xdb, 0x78, - 0x94, 0x34, 0xdc, 0x7f, 0x90, 0xf6, 0x06, 0x59, 0x81, 0x08, 0xdd, 0x80, 0x7e, 0x3b, 0xa3, 0xc4, - 0x55, 0xff, 0x58, 0x17, 0x18, 0xf6, 0x02, 0x20, 0xd6, 0x56, 0x25, 0x5d, 0xd5, 0x9d, 0x8d, 0x40, - 0x84, 0x87, 0x4a, 0x3e, 0x1e, 0xa8, 0x1f, 0x63, 0xd1, 0x2c, 0xa2, 0x4c, 0x17, 0x07, 0x12, 0x88, - 0xb5, 0xae, 0x6c, 0xc9, 0xae, 0xa5, 0xe9, 0x9a, 0xb1, 0xd8, 0xd2, 0xf4, 0x45, 0x23, 0xd3, 0xd2, - 0xf4, 0x8c, 0xb1, 0xd4, 0xd2, 0xf4, 0x25, 0x43, 0x6f, 0x69, 0xfa, 0x9a, 0x91, 0x6b, 0x69, 0x7a, - 0xce, 0x30, 0x5a, 0x9a, 0x6e, 0x18, 0xf9, 0x83, 0xc3, 0xab, 0xbb, 0x72, 0xfa, 0xfa, 0xae, 0x9c, - 0xfe, 0x7b, 0x57, 0x4e, 0xff, 0xbc, 0x2f, 0xa7, 0xae, 0xef, 0xcb, 0xa9, 0xdf, 0xf7, 0xe5, 0xd4, - 0xc9, 0xee, 0xc4, 0xed, 0x8e, 0xd5, 0x2c, 0xa9, 0x1d, 0x62, 0x4f, 0xd4, 0x93, 0x31, 0x7e, 0xfe, - 0xea, 0x75, 0xbd, 0x3f, 0x1e, 0xe6, 0xea, 0xb6, 0x5e, 0x46, 0x0d, 0xe6, 0xbd, 0x7f, 0x01, 0x00, - 0x00, 0xff, 0xff, 0x02, 0xf8, 0xf7, 0x43, 0x1e, 0x06, 0x00, 0x00, + // 734 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x4e, 0xeb, 0x46, + 0x14, 0xc6, 0x93, 0x62, 0x82, 0x33, 0xfc, 0x89, 0x63, 0x42, 0xea, 0x84, 0x12, 0x22, 0x2a, 0x55, + 0xe9, 0x22, 0x8e, 0x0a, 0x95, 0x2a, 0x55, 0x5d, 0x14, 0x9a, 0x4a, 0x4d, 0x84, 0x50, 0x65, 0xa4, + 0x2e, 0xe8, 0xc2, 0x1a, 0x7b, 0x4e, 0x92, 0x11, 0xf6, 0x4c, 0xea, 0x19, 0x20, 0xed, 0x53, 0xf4, + 0x5d, 0xca, 0x43, 0xb0, 0x44, 0xac, 0xaa, 0x2e, 0x50, 0x05, 0x2f, 0x72, 0xe5, 0xb1, 0xf3, 0x8f, + 0x70, 0x15, 0x5d, 0x29, 0xab, 0x78, 0xce, 0xf7, 0x9d, 0xdf, 0x37, 0x67, 0x62, 0x79, 0xd0, 0xa1, + 0x90, 0x11, 0x25, 0xd0, 0x12, 0x12, 0x5f, 0x03, 0xf5, 0xfc, 0xd6, 0x80, 0x0b, 0xe9, 0xfe, 0xc5, + 0x19, 0xd8, 0xc3, 0x88, 0x4b, 0x6e, 0x16, 0x12, 0x83, 0x3d, 0x36, 0x54, 0x17, 0x3a, 0x6e, 0x71, + 0x40, 0x09, 0x96, 0x3c, 0x4a, 0x3a, 0xaa, 0xa5, 0x3e, 0xef, 0x73, 0xf5, 0xd8, 0x8a, 0x9f, 0xd2, + 0x6a, 0xc5, 0xe7, 0x22, 0xe4, 0xc2, 0x4d, 0x84, 0x64, 0x91, 0x48, 0x47, 0xff, 0x6c, 0x21, 0xfd, + 0x17, 0x2e, 0xe4, 0x15, 0x67, 0x60, 0x56, 0x90, 0xee, 0x0f, 0x30, 0x65, 0x2e, 0x25, 0x56, 0xb6, + 0x9e, 0x6d, 0xe4, 0x9d, 0x0d, 0xb5, 0xee, 0x10, 0xf3, 0x08, 0x6d, 0x79, 0xe0, 0x0f, 0x4e, 0x8e, + 0x87, 0x11, 0xf4, 0xe8, 0xc8, 0x2a, 0x2a, 0x79, 0xae, 0x66, 0x7e, 0x89, 0xb6, 0x7d, 0xce, 0x18, + 0xf8, 0x92, 0x72, 0xc5, 0xf8, 0x2c, 0x31, 0x4d, 0x8b, 0x1d, 0x62, 0xda, 0x68, 0x57, 0x46, 0x98, + 0x89, 0x1e, 0x44, 0xae, 0x3f, 0xc0, 0x8c, 0x41, 0x10, 0x5b, 0xb7, 0x94, 0xb5, 0x38, 0x96, 0x7e, + 0x4a, 0x94, 0x0e, 0x31, 0xf7, 0x51, 0x9e, 0x7a, 0xbe, 0x4b, 0x80, 0xf1, 0xd0, 0xd2, 0x95, 0x4b, + 0xa7, 0x9e, 0xdf, 0x8e, 0xd7, 0xe6, 0x01, 0x42, 0xea, 0xcc, 0x12, 0x35, 0xaf, 0xd4, 0x7c, 0x5c, + 0x49, 0xe4, 0xaf, 0x91, 0x71, 0xc3, 0x3c, 0xce, 0x08, 0x65, 0x7d, 0x77, 0x08, 0x11, 0xe5, 0xc4, + 0xaa, 0xd6, 0xb3, 0x0d, 0xcd, 0x29, 0x4c, 0xea, 0xbf, 0xaa, 0xb2, 0xf9, 0x3d, 0x42, 0x93, 0xb3, + 0x14, 0xd6, 0x5a, 0x7d, 0xad, 0xb1, 0x79, 0x5c, 0xb5, 0xdf, 0x9c, 0xbf, 0xfd, 0xdb, 0xd8, 0xe2, + 0xcc, 0xb8, 0xcd, 0x53, 0x54, 0x20, 0x30, 0xe4, 0x82, 0x4a, 0x17, 0x13, 0x12, 0x81, 0x10, 0x96, + 0x19, 0x6f, 0xe5, 0xcc, 0x7a, 0xba, 0x6f, 0x96, 0xd2, 0xe3, 0x3e, 0x4d, 0x94, 0x4b, 0x19, 0x51, + 0xd6, 0x77, 0x76, 0xd2, 0x86, 0xb4, 0x6a, 0x5e, 0xa0, 0xf2, 0x1d, 0x95, 0x03, 0x12, 0xe1, 0x3b, + 0x1c, 0xb8, 0xd4, 0xc7, 0x13, 0x52, 0x79, 0x09, 0xa9, 0x34, 0xed, 0xeb, 0xf8, 0x78, 0xcc, 0xfb, + 0x11, 0x15, 0x7a, 0x00, 0x73, 0xa0, 0xcf, 0x97, 0x80, 0xb6, 0x7b, 0x00, 0x33, 0x84, 0x0b, 0x54, + 0x26, 0x10, 0x40, 0x1f, 0x27, 0x7f, 0xe6, 0x0c, 0xc8, 0x5a, 0xb6, 0xa3, 0x69, 0xdf, 0x3c, 0x2f, + 0x02, 0x02, 0xe1, 0x70, 0x81, 0x57, 0x59, 0xc6, 0x9b, 0xf6, 0xcd, 0xf0, 0x7e, 0x47, 0x45, 0xc9, + 0x25, 0x0e, 0xdc, 0x69, 0x9a, 0xb0, 0xb6, 0x15, 0xca, 0x7e, 0x78, 0x3e, 0xcc, 0xfc, 0xf7, 0x7c, + 0xf8, 0x55, 0x9f, 0xca, 0xc1, 0x8d, 0x67, 0xfb, 0x3c, 0x4c, 0x5f, 0xfa, 0xf4, 0xa7, 0x29, 0xc8, + 0x75, 0x4b, 0xfe, 0x39, 0x04, 0x61, 0x77, 0x98, 0x74, 0x0c, 0x05, 0x6a, 0x4f, 0x39, 0x26, 0x43, + 0xa5, 0x00, 0x0b, 0xe9, 0xce, 0xec, 0x38, 0xc2, 0x12, 0x2c, 0xa4, 0xf8, 0x3f, 0x7c, 0x02, 0xbf, + 0x0d, 0xfe, 0xd3, 0x7d, 0x13, 0xa5, 0x83, 0xb5, 0xc1, 0x77, 0xcc, 0x98, 0xec, 0x4c, 0xc0, 0x0e, + 0x96, 0x60, 0x02, 0x2a, 0xbc, 0x8d, 0xda, 0x5c, 0x41, 0xd4, 0x4e, 0x34, 0x1f, 0x13, 0xa0, 0xdd, + 0x90, 0xb2, 0x85, 0xa9, 0x4a, 0x2b, 0x88, 0x2a, 0x86, 0x94, 0x39, 0x8b, 0x69, 0x78, 0xb4, 0x90, + 0xb6, 0xb7, 0x92, 0x34, 0x3c, 0x7a, 0x93, 0x76, 0x87, 0x2a, 0xf1, 0x6c, 0x94, 0x31, 0x88, 0x16, + 0x32, 0xbf, 0x58, 0x41, 0x66, 0x39, 0xa4, 0xac, 0x13, 0xd3, 0xdf, 0x09, 0xc6, 0xa3, 0x8f, 0x04, + 0x1f, 0xac, 0x24, 0x18, 0x8f, 0xde, 0x0b, 0xfe, 0x0e, 0x59, 0x81, 0x08, 0xdd, 0x80, 0xfe, 0x71, + 0x43, 0x89, 0xab, 0xbe, 0x51, 0x2e, 0x30, 0xec, 0x05, 0x40, 0xac, 0xfd, 0x7a, 0xb6, 0xa1, 0x3b, + 0x7b, 0x81, 0x08, 0xcf, 0x95, 0x7c, 0x19, 0xab, 0x3f, 0x27, 0xa2, 0x59, 0x46, 0xb9, 0x01, 0x0e, + 0x24, 0x10, 0x6b, 0x57, 0xd9, 0xd2, 0x55, 0x57, 0xd3, 0x35, 0x63, 0xbd, 0xab, 0xe9, 0xeb, 0x46, + 0xae, 0xab, 0xe9, 0x39, 0x63, 0xa3, 0xab, 0xe9, 0x1b, 0x86, 0xde, 0xd5, 0xf4, 0x1d, 0xa3, 0xd0, + 0xd5, 0xf4, 0x82, 0x61, 0x74, 0x35, 0xdd, 0x30, 0x8a, 0x67, 0xe7, 0x0f, 0x2f, 0xb5, 0xec, 0xe3, + 0x4b, 0x2d, 0xfb, 0xff, 0x4b, 0x2d, 0xfb, 0xf7, 0x6b, 0x2d, 0xf3, 0xf8, 0x5a, 0xcb, 0xfc, 0xfb, + 0x5a, 0xcb, 0x5c, 0x1d, 0xcf, 0x8c, 0x78, 0xa9, 0xbe, 0x9e, 0xcd, 0x73, 0xec, 0x89, 0x56, 0x7a, + 0x71, 0xdd, 0x7e, 0xf3, 0x6d, 0x6b, 0x34, 0xbd, 0xbe, 0xd4, 0xc8, 0x5e, 0x4e, 0x5d, 0x45, 0x27, + 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xcf, 0xeb, 0xfc, 0x10, 0x07, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { @@ -262,6 +266,30 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size := m.MaxInnerRedemptionRate.Size() + i -= size + if _, err := m.MaxInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xea + { + size := m.MinInnerRedemptionRate.Size() + i -= size + if _, err := m.MinInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintHostZone(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xe2 if m.LsmLiquidStakeEnabled { i-- if m.LsmLiquidStakeEnabled { @@ -539,6 +567,10 @@ func (m *HostZone) Size() (n int) { if m.LsmLiquidStakeEnabled { n += 3 } + l = m.MinInnerRedemptionRate.Size() + n += 2 + l + sovHostZone(uint64(l)) + l = m.MaxInnerRedemptionRate.Size() + n += 2 + l + sovHostZone(uint64(l)) return n } @@ -1192,6 +1224,74 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { } } m.LsmLiquidStakeEnabled = bool(v != 0) + case 28: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinInnerRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MinInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 29: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxInnerRedemptionRate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipHostZone(dAtA[iNdEx:]) diff --git a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go new file mode 100644 index 0000000000..02415d0640 --- /dev/null +++ b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go @@ -0,0 +1,58 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v14/utils" +) + +const TypeMsgUpdateInnerRedemptionRateBounds = "update_inner_redemption_rate_bounds" + +var _ sdk.Msg = &MsgUpdateInnerRedemptionRateBounds{} + +func NewMsgUpdateInnerRedemptionRateBounds(creator string, chainId string, minInnerRedemptionRate sdk.Dec, maxInnerRedemptionRate sdk.Dec) *MsgUpdateInnerRedemptionRateBounds { + return &MsgUpdateInnerRedemptionRateBounds{ + Creator: creator, + ChainId: chainId, + MinInnerRedemptionRate: minInnerRedemptionRate, + MaxInnerRedemptionRate: maxInnerRedemptionRate, + } +} + +func (msg *MsgUpdateInnerRedemptionRateBounds) Route() string { + return RouterKey +} + +func (msg *MsgUpdateInnerRedemptionRateBounds) Type() string { + return TypeMsgUpdateInnerRedemptionRateBounds +} + +func (msg *MsgUpdateInnerRedemptionRateBounds) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUpdateInnerRedemptionRateBounds) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUpdateInnerRedemptionRateBounds) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + // Confirm the max is greater than the min + if msg.MaxInnerRedemptionRate.LTE(msg.MinInnerRedemptionRate) { + return errorsmod.Wrapf(ErrInvalidBounds, "Inner max safety threshold (%s) is less than inner min safety threshold (%s)", msg.MaxInnerRedemptionRate, msg.MinInnerRedemptionRate) + } + if err := utils.ValidateAdminAddress(msg.Creator); err != nil { + return err + } + return nil +} diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index e987b67adc..3580557e09 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -30,6 +30,100 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type MsgUpdateInnerRedemptionRateBounds struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + MinInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=min_inner_redemption_rate,json=minInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_inner_redemption_rate"` + MaxInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=max_inner_redemption_rate,json=maxInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_inner_redemption_rate"` +} + +func (m *MsgUpdateInnerRedemptionRateBounds) Reset() { *m = MsgUpdateInnerRedemptionRateBounds{} } +func (m *MsgUpdateInnerRedemptionRateBounds) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateInnerRedemptionRateBounds) ProtoMessage() {} +func (*MsgUpdateInnerRedemptionRateBounds) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{0} +} +func (m *MsgUpdateInnerRedemptionRateBounds) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateInnerRedemptionRateBounds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateInnerRedemptionRateBounds.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateInnerRedemptionRateBounds) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateInnerRedemptionRateBounds.Merge(m, src) +} +func (m *MsgUpdateInnerRedemptionRateBounds) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateInnerRedemptionRateBounds) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateInnerRedemptionRateBounds.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateInnerRedemptionRateBounds proto.InternalMessageInfo + +func (m *MsgUpdateInnerRedemptionRateBounds) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgUpdateInnerRedemptionRateBounds) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +type MsgUpdateInnerRedemptionRateBoundsResponse struct { +} + +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) Reset() { + *m = MsgUpdateInnerRedemptionRateBoundsResponse{} +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) String() string { + return proto.CompactTextString(m) +} +func (*MsgUpdateInnerRedemptionRateBoundsResponse) ProtoMessage() {} +func (*MsgUpdateInnerRedemptionRateBoundsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{1} +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateInnerRedemptionRateBoundsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateInnerRedemptionRateBoundsResponse.Merge(m, src) +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateInnerRedemptionRateBoundsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateInnerRedemptionRateBoundsResponse proto.InternalMessageInfo + type MsgLiquidStake struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` @@ -40,7 +134,7 @@ func (m *MsgLiquidStake) Reset() { *m = MsgLiquidStake{} } func (m *MsgLiquidStake) String() string { return proto.CompactTextString(m) } func (*MsgLiquidStake) ProtoMessage() {} func (*MsgLiquidStake) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{0} + return fileDescriptor_9b7e09c9ad51cd54, []int{2} } func (m *MsgLiquidStake) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -90,7 +184,7 @@ func (m *MsgLiquidStakeResponse) Reset() { *m = MsgLiquidStakeResponse{} func (m *MsgLiquidStakeResponse) String() string { return proto.CompactTextString(m) } func (*MsgLiquidStakeResponse) ProtoMessage() {} func (*MsgLiquidStakeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{1} + return fileDescriptor_9b7e09c9ad51cd54, []int{3} } func (m *MsgLiquidStakeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -129,7 +223,7 @@ func (m *MsgLSMLiquidStake) Reset() { *m = MsgLSMLiquidStake{} } func (m *MsgLSMLiquidStake) String() string { return proto.CompactTextString(m) } func (*MsgLSMLiquidStake) ProtoMessage() {} func (*MsgLSMLiquidStake) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{2} + return fileDescriptor_9b7e09c9ad51cd54, []int{4} } func (m *MsgLSMLiquidStake) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -180,7 +274,7 @@ func (m *MsgLSMLiquidStakeResponse) Reset() { *m = MsgLSMLiquidStakeResp func (m *MsgLSMLiquidStakeResponse) String() string { return proto.CompactTextString(m) } func (*MsgLSMLiquidStakeResponse) ProtoMessage() {} func (*MsgLSMLiquidStakeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{3} + return fileDescriptor_9b7e09c9ad51cd54, []int{5} } func (m *MsgLSMLiquidStakeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -227,7 +321,7 @@ func (m *MsgClearBalance) Reset() { *m = MsgClearBalance{} } func (m *MsgClearBalance) String() string { return proto.CompactTextString(m) } func (*MsgClearBalance) ProtoMessage() {} func (*MsgClearBalance) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{4} + return fileDescriptor_9b7e09c9ad51cd54, []int{6} } func (m *MsgClearBalance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -284,7 +378,7 @@ func (m *MsgClearBalanceResponse) Reset() { *m = MsgClearBalanceResponse func (m *MsgClearBalanceResponse) String() string { return proto.CompactTextString(m) } func (*MsgClearBalanceResponse) ProtoMessage() {} func (*MsgClearBalanceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{5} + return fileDescriptor_9b7e09c9ad51cd54, []int{7} } func (m *MsgClearBalanceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -324,7 +418,7 @@ func (m *MsgRedeemStake) Reset() { *m = MsgRedeemStake{} } func (m *MsgRedeemStake) String() string { return proto.CompactTextString(m) } func (*MsgRedeemStake) ProtoMessage() {} func (*MsgRedeemStake) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{6} + return fileDescriptor_9b7e09c9ad51cd54, []int{8} } func (m *MsgRedeemStake) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -381,7 +475,7 @@ func (m *MsgRedeemStakeResponse) Reset() { *m = MsgRedeemStakeResponse{} func (m *MsgRedeemStakeResponse) String() string { return proto.CompactTextString(m) } func (*MsgRedeemStakeResponse) ProtoMessage() {} func (*MsgRedeemStakeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{7} + return fileDescriptor_9b7e09c9ad51cd54, []int{9} } func (m *MsgRedeemStakeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -428,7 +522,7 @@ func (m *MsgRegisterHostZone) Reset() { *m = MsgRegisterHostZone{} } func (m *MsgRegisterHostZone) String() string { return proto.CompactTextString(m) } func (*MsgRegisterHostZone) ProtoMessage() {} func (*MsgRegisterHostZone) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{8} + return fileDescriptor_9b7e09c9ad51cd54, []int{10} } func (m *MsgRegisterHostZone) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -464,7 +558,7 @@ func (m *MsgRegisterHostZoneResponse) Reset() { *m = MsgRegisterHostZone func (m *MsgRegisterHostZoneResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterHostZoneResponse) ProtoMessage() {} func (*MsgRegisterHostZoneResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{9} + return fileDescriptor_9b7e09c9ad51cd54, []int{11} } func (m *MsgRegisterHostZoneResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -505,7 +599,7 @@ func (m *MsgClaimUndelegatedTokens) Reset() { *m = MsgClaimUndelegatedTo func (m *MsgClaimUndelegatedTokens) String() string { return proto.CompactTextString(m) } func (*MsgClaimUndelegatedTokens) ProtoMessage() {} func (*MsgClaimUndelegatedTokens) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{10} + return fileDescriptor_9b7e09c9ad51cd54, []int{12} } func (m *MsgClaimUndelegatedTokens) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -569,7 +663,7 @@ func (m *MsgClaimUndelegatedTokensResponse) Reset() { *m = MsgClaimUndel func (m *MsgClaimUndelegatedTokensResponse) String() string { return proto.CompactTextString(m) } func (*MsgClaimUndelegatedTokensResponse) ProtoMessage() {} func (*MsgClaimUndelegatedTokensResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{11} + return fileDescriptor_9b7e09c9ad51cd54, []int{13} } func (m *MsgClaimUndelegatedTokensResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -608,7 +702,7 @@ func (m *MsgRebalanceValidators) Reset() { *m = MsgRebalanceValidators{} func (m *MsgRebalanceValidators) String() string { return proto.CompactTextString(m) } func (*MsgRebalanceValidators) ProtoMessage() {} func (*MsgRebalanceValidators) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{12} + return fileDescriptor_9b7e09c9ad51cd54, []int{14} } func (m *MsgRebalanceValidators) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -665,7 +759,7 @@ func (m *MsgRebalanceValidatorsResponse) Reset() { *m = MsgRebalanceVali func (m *MsgRebalanceValidatorsResponse) String() string { return proto.CompactTextString(m) } func (*MsgRebalanceValidatorsResponse) ProtoMessage() {} func (*MsgRebalanceValidatorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{13} + return fileDescriptor_9b7e09c9ad51cd54, []int{15} } func (m *MsgRebalanceValidatorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -704,7 +798,7 @@ func (m *MsgAddValidators) Reset() { *m = MsgAddValidators{} } func (m *MsgAddValidators) String() string { return proto.CompactTextString(m) } func (*MsgAddValidators) ProtoMessage() {} func (*MsgAddValidators) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{14} + return fileDescriptor_9b7e09c9ad51cd54, []int{16} } func (m *MsgAddValidators) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -761,7 +855,7 @@ func (m *MsgAddValidatorsResponse) Reset() { *m = MsgAddValidatorsRespon func (m *MsgAddValidatorsResponse) String() string { return proto.CompactTextString(m) } func (*MsgAddValidatorsResponse) ProtoMessage() {} func (*MsgAddValidatorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{15} + return fileDescriptor_9b7e09c9ad51cd54, []int{17} } func (m *MsgAddValidatorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -801,7 +895,7 @@ func (m *MsgChangeValidatorWeight) Reset() { *m = MsgChangeValidatorWeig func (m *MsgChangeValidatorWeight) String() string { return proto.CompactTextString(m) } func (*MsgChangeValidatorWeight) ProtoMessage() {} func (*MsgChangeValidatorWeight) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{16} + return fileDescriptor_9b7e09c9ad51cd54, []int{18} } func (m *MsgChangeValidatorWeight) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -865,7 +959,7 @@ func (m *MsgChangeValidatorWeightResponse) Reset() { *m = MsgChangeValid func (m *MsgChangeValidatorWeightResponse) String() string { return proto.CompactTextString(m) } func (*MsgChangeValidatorWeightResponse) ProtoMessage() {} func (*MsgChangeValidatorWeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{17} + return fileDescriptor_9b7e09c9ad51cd54, []int{19} } func (m *MsgChangeValidatorWeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -904,7 +998,7 @@ func (m *MsgDeleteValidator) Reset() { *m = MsgDeleteValidator{} } func (m *MsgDeleteValidator) String() string { return proto.CompactTextString(m) } func (*MsgDeleteValidator) ProtoMessage() {} func (*MsgDeleteValidator) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{18} + return fileDescriptor_9b7e09c9ad51cd54, []int{20} } func (m *MsgDeleteValidator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -961,7 +1055,7 @@ func (m *MsgDeleteValidatorResponse) Reset() { *m = MsgDeleteValidatorRe func (m *MsgDeleteValidatorResponse) String() string { return proto.CompactTextString(m) } func (*MsgDeleteValidatorResponse) ProtoMessage() {} func (*MsgDeleteValidatorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{19} + return fileDescriptor_9b7e09c9ad51cd54, []int{21} } func (m *MsgDeleteValidatorResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1000,7 +1094,7 @@ func (m *MsgRestoreInterchainAccount) Reset() { *m = MsgRestoreInterchai func (m *MsgRestoreInterchainAccount) String() string { return proto.CompactTextString(m) } func (*MsgRestoreInterchainAccount) ProtoMessage() {} func (*MsgRestoreInterchainAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{20} + return fileDescriptor_9b7e09c9ad51cd54, []int{22} } func (m *MsgRestoreInterchainAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1057,7 +1151,7 @@ func (m *MsgRestoreInterchainAccountResponse) Reset() { *m = MsgRestoreI func (m *MsgRestoreInterchainAccountResponse) String() string { return proto.CompactTextString(m) } func (*MsgRestoreInterchainAccountResponse) ProtoMessage() {} func (*MsgRestoreInterchainAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{21} + return fileDescriptor_9b7e09c9ad51cd54, []int{23} } func (m *MsgRestoreInterchainAccountResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1096,7 +1190,7 @@ func (m *MsgUpdateValidatorSharesExchRate) Reset() { *m = MsgUpdateValid func (m *MsgUpdateValidatorSharesExchRate) String() string { return proto.CompactTextString(m) } func (*MsgUpdateValidatorSharesExchRate) ProtoMessage() {} func (*MsgUpdateValidatorSharesExchRate) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{22} + return fileDescriptor_9b7e09c9ad51cd54, []int{24} } func (m *MsgUpdateValidatorSharesExchRate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1155,7 +1249,7 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) Reset() { func (m *MsgUpdateValidatorSharesExchRateResponse) String() string { return proto.CompactTextString(m) } func (*MsgUpdateValidatorSharesExchRateResponse) ProtoMessage() {} func (*MsgUpdateValidatorSharesExchRateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{23} + return fileDescriptor_9b7e09c9ad51cd54, []int{25} } func (m *MsgUpdateValidatorSharesExchRateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1185,6 +1279,8 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateValidatorSharesExchRateResponse proto.InternalMessageInfo func init() { + proto.RegisterType((*MsgUpdateInnerRedemptionRateBounds)(nil), "stride.stakeibc.MsgUpdateInnerRedemptionRateBounds") + proto.RegisterType((*MsgUpdateInnerRedemptionRateBoundsResponse)(nil), "stride.stakeibc.MsgUpdateInnerRedemptionRateBoundsResponse") proto.RegisterType((*MsgLiquidStake)(nil), "stride.stakeibc.MsgLiquidStake") proto.RegisterType((*MsgLiquidStakeResponse)(nil), "stride.stakeibc.MsgLiquidStakeResponse") proto.RegisterType((*MsgLSMLiquidStake)(nil), "stride.stakeibc.MsgLSMLiquidStake") @@ -1214,90 +1310,96 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1327 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xcf, 0x36, 0x69, 0xea, 0xbe, 0x38, 0xff, 0x36, 0x69, 0xbb, 0xd9, 0x52, 0xdb, 0xdd, 0xf0, - 0x27, 0x14, 0x62, 0x2b, 0x69, 0x25, 0x44, 0x05, 0x87, 0x38, 0x29, 0xc2, 0x52, 0x53, 0xa1, 0x4d, - 0x4b, 0xa5, 0x4a, 0x68, 0x19, 0xef, 0x4c, 0xd7, 0xab, 0xee, 0xce, 0xb8, 0x3b, 0xeb, 0xe0, 0x72, - 0x40, 0x5c, 0x90, 0xb8, 0x20, 0x81, 0x90, 0x38, 0xa2, 0x1e, 0x38, 0x20, 0x71, 0x43, 0xfd, 0x10, - 0x3d, 0x56, 0x3d, 0x21, 0x0e, 0x16, 0x6a, 0x2f, 0x9c, 0xf3, 0x09, 0xd0, 0xce, 0xae, 0xc7, 0xbb, - 0xf6, 0xc6, 0x49, 0x5b, 0xd4, 0x53, 0xfc, 0xe6, 0xfd, 0xe6, 0xbd, 0xdf, 0x7b, 0xf3, 0xe6, 0xcd, - 0xcb, 0x82, 0xc6, 0xc3, 0xc0, 0xc5, 0xa4, 0xc6, 0x43, 0x74, 0x8f, 0xb8, 0x4d, 0xbb, 0x16, 0x76, - 0xab, 0xed, 0x80, 0x85, 0x4c, 0x9d, 0x8f, 0x35, 0xd5, 0xbe, 0x46, 0xbf, 0x38, 0x0c, 0x75, 0x6d, - 0x64, 0x21, 0xdb, 0x66, 0x1d, 0x1a, 0xc6, 0x7b, 0xf4, 0xf2, 0x30, 0x64, 0x1f, 0x79, 0x2e, 0x46, - 0x21, 0x0b, 0x12, 0xc0, 0xb2, 0xc3, 0x1c, 0x26, 0x7e, 0xd6, 0xa2, 0x5f, 0xc9, 0xea, 0x8a, 0xcd, - 0xb8, 0xcf, 0xb8, 0x15, 0x2b, 0x62, 0x21, 0x56, 0x19, 0x3f, 0x29, 0x30, 0xb7, 0xcb, 0x9d, 0xeb, - 0xee, 0xfd, 0x8e, 0x8b, 0xf7, 0x22, 0xb3, 0xaa, 0x06, 0xa7, 0xec, 0x80, 0x44, 0x46, 0x35, 0xa5, - 0xa2, 0xac, 0x9d, 0x36, 0xfb, 0xa2, 0xfa, 0x09, 0x4c, 0x23, 0x3f, 0xa2, 0xa3, 0x9d, 0x88, 0x14, - 0xf5, 0xea, 0xe3, 0x5e, 0x79, 0xe2, 0xef, 0x5e, 0xf9, 0x6d, 0xc7, 0x0d, 0x5b, 0x9d, 0x66, 0xd5, - 0x66, 0x7e, 0x62, 0x3d, 0xf9, 0xb3, 0xce, 0xf1, 0xbd, 0x5a, 0xf8, 0xa0, 0x4d, 0x78, 0xb5, 0x41, - 0x43, 0x33, 0xd9, 0xad, 0x5e, 0x00, 0x68, 0x31, 0x1e, 0x5a, 0x98, 0x50, 0xe6, 0x6b, 0x93, 0xc2, - 0xc9, 0xe9, 0x68, 0x65, 0x27, 0x5a, 0x30, 0x34, 0x38, 0x9b, 0xa5, 0x64, 0x12, 0xde, 0x66, 0x94, - 0x13, 0xe3, 0x37, 0x05, 0x16, 0x23, 0xd5, 0xde, 0xee, 0xeb, 0x25, 0xbc, 0x0e, 0x4b, 0x1e, 0xf7, - 0xad, 0x90, 0xdd, 0x23, 0xd4, 0x72, 0x9b, 0x76, 0x86, 0xf9, 0x82, 0xc7, 0xfd, 0x9b, 0x91, 0xa6, - 0xd1, 0xb4, 0xe3, 0x00, 0x6e, 0xc0, 0xca, 0x08, 0xcb, 0x7e, 0x0c, 0xea, 0x06, 0x2c, 0x87, 0x01, - 0xa2, 0x1c, 0xd9, 0xa1, 0xcb, 0xa8, 0x65, 0x33, 0xbf, 0xed, 0x91, 0x90, 0x08, 0xea, 0x05, 0x73, - 0x29, 0xa5, 0xdb, 0x4e, 0x54, 0xc6, 0xef, 0x0a, 0xcc, 0xef, 0x72, 0x67, 0xdb, 0x23, 0x28, 0xa8, - 0x23, 0x0f, 0x51, 0x7b, 0x5c, 0xd0, 0x2b, 0x50, 0xb0, 0x5b, 0xc8, 0xa5, 0x96, 0x8b, 0xe3, 0xb0, - 0xcd, 0x53, 0x42, 0x6e, 0xe0, 0x54, 0x3e, 0x26, 0x5f, 0x29, 0x1f, 0x91, 0xf3, 0x16, 0xa2, 0x94, - 0x78, 0xda, 0x94, 0xf4, 0x10, 0x89, 0xc6, 0x0a, 0x9c, 0x1b, 0x62, 0x2a, 0x0f, 0xef, 0x8f, 0xb8, - 0xd4, 0x4c, 0x82, 0x09, 0xf1, 0x5f, 0xd7, 0xc9, 0x9d, 0x07, 0x51, 0x58, 0xd6, 0xd7, 0x8c, 0x92, - 0xe4, 0xbc, 0x0a, 0xd1, 0xc2, 0x1d, 0x46, 0x89, 0xaa, 0x43, 0x21, 0x20, 0x36, 0x71, 0xf7, 0x49, - 0x90, 0xc4, 0x21, 0xe5, 0xa4, 0x08, 0x53, 0x64, 0x65, 0x1c, 0x7f, 0x9e, 0x84, 0x25, 0xa1, 0x72, - 0x5c, 0x1e, 0x92, 0xe0, 0xd3, 0xbe, 0xb5, 0x8f, 0x61, 0xd6, 0x66, 0x94, 0x92, 0xf8, 0x5c, 0xfb, - 0xc9, 0xaf, 0x6b, 0x07, 0xbd, 0xf2, 0xf2, 0x03, 0xe4, 0x7b, 0x57, 0x8d, 0x8c, 0xda, 0x30, 0x8b, - 0x03, 0xb9, 0x81, 0x55, 0x03, 0x8a, 0x4d, 0x62, 0xb7, 0x2e, 0x6f, 0xb6, 0x03, 0x72, 0xd7, 0xed, - 0x6a, 0x45, 0x41, 0x28, 0xb3, 0xa6, 0x5e, 0xc9, 0x5c, 0x1c, 0x41, 0xb9, 0x7e, 0xe6, 0xa0, 0x57, - 0x5e, 0x8c, 0xed, 0x0f, 0x74, 0x46, 0xea, 0x3e, 0xa9, 0x1b, 0x70, 0x7a, 0x50, 0xb3, 0x27, 0xc5, - 0xa6, 0xe5, 0x83, 0x5e, 0x79, 0x21, 0xde, 0x24, 0x55, 0x86, 0x59, 0x70, 0x93, 0x0a, 0x4e, 0x1f, - 0xcc, 0x74, 0xf6, 0x60, 0x6e, 0x40, 0x5c, 0xa2, 0x77, 0x49, 0x60, 0x25, 0x87, 0x1e, 0xc5, 0x0a, - 0xc2, 0x6c, 0xe9, 0xa0, 0x57, 0xd6, 0x63, 0xb3, 0x39, 0x20, 0xc3, 0x5c, 0xec, 0xaf, 0x6e, 0xc7, - 0x8b, 0xa2, 0x24, 0x17, 0x3a, 0xb4, 0xc9, 0x28, 0x76, 0xa9, 0x63, 0xb5, 0x49, 0xe0, 0x32, 0xac, - 0xcd, 0x54, 0x94, 0xb5, 0xa9, 0xfa, 0xf9, 0x83, 0x5e, 0xf9, 0x5c, 0x6c, 0x6c, 0x18, 0x61, 0x98, - 0xf3, 0x72, 0xe9, 0x33, 0xb1, 0xa2, 0x7a, 0xb0, 0xe4, 0xbb, 0xd4, 0x0a, 0x08, 0x26, 0x7e, 0x5b, - 0xa4, 0x38, 0x40, 0x21, 0xd1, 0x66, 0x05, 0xaf, 0x8f, 0x5e, 0xa0, 0x7a, 0x76, 0x88, 0xfd, 0xf4, - 0xd1, 0x3a, 0x24, 0x5d, 0x72, 0x87, 0xd8, 0xe6, 0xa2, 0xef, 0x52, 0x53, 0xda, 0x35, 0x51, 0x48, - 0x84, 0x37, 0xd4, 0x1d, 0xf1, 0x36, 0xf7, 0xbf, 0x78, 0x43, 0xdd, 0x21, 0x6f, 0x1f, 0x80, 0x16, - 0xb5, 0x1f, 0x4f, 0x74, 0x13, 0x4b, 0x34, 0x7f, 0x8b, 0x50, 0xd4, 0xf4, 0x08, 0xd6, 0xe6, 0x45, - 0xdb, 0x38, 0xe3, 0x71, 0x3f, 0xd5, 0x6c, 0xae, 0xc5, 0xca, 0xab, 0x85, 0xef, 0x1f, 0x96, 0x27, - 0xfe, 0x7d, 0x58, 0x9e, 0x30, 0x2e, 0xc0, 0xf9, 0x9c, 0x9a, 0x95, 0x35, 0xfd, 0x9d, 0x22, 0x5a, - 0xd6, 0xb6, 0x87, 0x5c, 0xff, 0x16, 0xc5, 0xc4, 0x23, 0x0e, 0x0a, 0x09, 0x16, 0x6d, 0x8d, 0x8f, - 0xb9, 0xa6, 0x15, 0x28, 0xca, 0xeb, 0x35, 0xe8, 0x37, 0xd0, 0xbf, 0x61, 0x0d, 0xac, 0x2e, 0xc3, - 0x49, 0xd2, 0x66, 0x76, 0x4b, 0x5c, 0xbe, 0x29, 0x33, 0x16, 0xd4, 0xb3, 0x30, 0xcd, 0x09, 0xc5, - 0xf2, 0xde, 0x25, 0x92, 0xb1, 0x0a, 0x17, 0x0f, 0xa5, 0x21, 0xc9, 0x86, 0xc9, 0xd5, 0x6c, 0xc6, - 0x0d, 0xe6, 0xf3, 0xfe, 0x1b, 0x38, 0x8e, 0x68, 0xa6, 0x0f, 0x9c, 0x18, 0xea, 0x03, 0xab, 0x30, - 0x4b, 0x3b, 0xbe, 0x15, 0xf4, 0x2d, 0x26, 0x5c, 0x8b, 0xb4, 0xe3, 0x4b, 0x2f, 0x46, 0x05, 0x4a, - 0xf9, 0x5e, 0xd3, 0x49, 0x5c, 0xd8, 0xe5, 0xce, 0x16, 0xc6, 0xaf, 0x4e, 0xe9, 0x2a, 0x80, 0x7c, - 0xdb, 0xb9, 0x36, 0x59, 0x99, 0x5c, 0x9b, 0xd9, 0xd4, 0xab, 0x43, 0x23, 0x43, 0x55, 0xfa, 0x31, - 0x53, 0x68, 0x43, 0x07, 0x6d, 0x98, 0x86, 0xe4, 0xf8, 0xab, 0x22, 0x94, 0xd1, 0xfd, 0x73, 0x06, - 0x31, 0xdc, 0x26, 0xae, 0xd3, 0x0a, 0x5f, 0x96, 0xeb, 0x65, 0x28, 0xec, 0x23, 0xcf, 0x42, 0x18, - 0x07, 0xc9, 0xbb, 0xa2, 0x3d, 0x7d, 0xb4, 0xbe, 0x9c, 0xd4, 0xf4, 0x16, 0xc6, 0x01, 0xe1, 0x7c, - 0x2f, 0x0c, 0x5c, 0xea, 0x98, 0xa7, 0xf6, 0x91, 0x17, 0xad, 0x44, 0x15, 0xf0, 0x95, 0xf0, 0x2a, - 0x2a, 0x60, 0xca, 0x4c, 0x24, 0xc3, 0x80, 0xca, 0x61, 0xfc, 0x64, 0x10, 0xdf, 0x2a, 0xa0, 0xee, - 0x72, 0x67, 0x87, 0x44, 0xaf, 0xa3, 0x04, 0xbd, 0x4e, 0xfa, 0xc6, 0x1b, 0xa0, 0x8f, 0x32, 0x90, - 0x04, 0x7f, 0x51, 0x92, 0xeb, 0xc6, 0x43, 0x16, 0x90, 0x06, 0x0d, 0x49, 0x20, 0x9e, 0xe0, 0xad, - 0x78, 0x9a, 0x7b, 0xb9, 0xc7, 0xbb, 0x0e, 0xc5, 0x64, 0x1a, 0xb4, 0xa2, 0xde, 0x21, 0xb8, 0xce, - 0x6d, 0x96, 0x47, 0x8a, 0xa2, 0xb1, 0xbd, 0x95, 0xf8, 0xb9, 0xf9, 0xa0, 0x4d, 0xcc, 0x19, 0x34, - 0x10, 0x8c, 0xb7, 0x60, 0x75, 0x0c, 0x2f, 0xc9, 0xff, 0xbe, 0x38, 0x84, 0x5b, 0x6d, 0x8c, 0x52, - 0xd1, 0xed, 0xb5, 0x50, 0x40, 0xf8, 0xb5, 0xae, 0xdd, 0x12, 0x4d, 0xe9, 0xa5, 0x62, 0xd0, 0x20, - 0xca, 0x20, 0x6b, 0x93, 0x24, 0xd5, 0x66, 0x5f, 0x34, 0x2e, 0xc1, 0xda, 0x51, 0x2e, 0xfb, 0xf4, - 0x36, 0x7f, 0x06, 0x98, 0xdc, 0xe5, 0x8e, 0x7a, 0x1b, 0x66, 0xd2, 0x73, 0xe0, 0x68, 0x2a, 0xb2, - 0x63, 0xa4, 0xfe, 0xce, 0x11, 0x00, 0x39, 0xa3, 0x7d, 0x09, 0x73, 0x43, 0x33, 0xa6, 0x91, 0xbb, - 0x35, 0x83, 0xd1, 0x2f, 0x1d, 0x8d, 0x91, 0x1e, 0x6e, 0xc3, 0x4c, 0x7a, 0x10, 0xca, 0xa5, 0x9e, - 0x02, 0xe4, 0x53, 0xcf, 0x99, 0x4e, 0xd4, 0xbb, 0xb0, 0x30, 0x32, 0x99, 0xbc, 0x99, 0xbf, 0x39, - 0x8b, 0xd2, 0xdf, 0x3f, 0x0e, 0x4a, 0xfa, 0xe9, 0xc2, 0xd9, 0x43, 0x5e, 0x8b, 0xdc, 0x34, 0xe4, - 0x63, 0xf5, 0xcd, 0xe3, 0x63, 0xa5, 0x67, 0x06, 0x4b, 0x79, 0xbd, 0xff, 0x90, 0x0c, 0x8d, 0x00, - 0xf5, 0xda, 0x31, 0x81, 0xd2, 0xe1, 0x17, 0x30, 0x9b, 0xed, 0xe9, 0x17, 0xf3, 0x2c, 0x64, 0x20, - 0xfa, 0xbb, 0x47, 0x42, 0xa4, 0xf9, 0x0e, 0x9c, 0xc9, 0x6f, 0xc7, 0xb9, 0x36, 0x72, 0xa1, 0xfa, - 0xc6, 0xb1, 0xa1, 0xd2, 0xad, 0x0d, 0xf3, 0xc3, 0x0d, 0x74, 0x35, 0xcf, 0xca, 0x10, 0x48, 0x7f, - 0xef, 0x18, 0x20, 0xe9, 0xe4, 0x1b, 0xd0, 0x0e, 0x6d, 0x82, 0x87, 0xd4, 0x5b, 0x3e, 0x5a, 0xbf, - 0xf2, 0x22, 0x68, 0xe9, 0xff, 0x07, 0x05, 0x2e, 0x8c, 0x6f, 0x63, 0xb9, 0x99, 0x1b, 0xbb, 0x45, - 0xff, 0xf0, 0x85, 0xb7, 0x48, 0x3e, 0x77, 0xa0, 0x98, 0xf9, 0x2f, 0xae, 0x92, 0x5f, 0xff, 0x03, - 0x84, 0xbe, 0x76, 0x14, 0xa2, 0x6f, 0xbb, 0x7e, 0xfd, 0xf1, 0xb3, 0x92, 0xf2, 0xe4, 0x59, 0x49, - 0xf9, 0xe7, 0x59, 0x49, 0xf9, 0xf1, 0x79, 0x69, 0xe2, 0xc9, 0xf3, 0xd2, 0xc4, 0x5f, 0xcf, 0x4b, - 0x13, 0x77, 0x36, 0x53, 0x83, 0xe8, 0x9e, 0xb0, 0xb6, 0x7e, 0x1d, 0x35, 0x79, 0x2d, 0xf9, 0x9a, - 0xb0, 0xbf, 0x71, 0xa5, 0xd6, 0x4d, 0x7d, 0xa1, 0x88, 0x06, 0xd3, 0xe6, 0xb4, 0xf8, 0x3e, 0x70, - 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xd4, 0x1b, 0x0b, 0xc1, 0x10, 0x00, 0x00, + // 1409 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xce, 0x36, 0x69, 0x9a, 0xbe, 0x38, 0xbf, 0x36, 0x69, 0xba, 0xd9, 0x52, 0xdb, 0xdd, 0xf0, + 0x23, 0x94, 0xc6, 0x56, 0x92, 0x4a, 0x88, 0x02, 0x87, 0x38, 0x29, 0xc2, 0x52, 0x5d, 0xa1, 0x4d, + 0x4b, 0xa5, 0x4a, 0x68, 0x19, 0xef, 0x4e, 0xd7, 0xab, 0xee, 0xce, 0xba, 0x3b, 0xeb, 0xd4, 0xe5, + 0x80, 0xb8, 0x20, 0x71, 0x41, 0x02, 0x21, 0x71, 0x44, 0x3d, 0x70, 0x00, 0x71, 0x43, 0xfd, 0x23, + 0x2a, 0x71, 0xa9, 0x7a, 0x42, 0x1c, 0x2c, 0xd4, 0x5e, 0x38, 0xe7, 0x2f, 0x40, 0x33, 0xbb, 0x1e, + 0x7b, 0xd7, 0xeb, 0x38, 0x4d, 0xab, 0x9e, 0xe2, 0x99, 0xf7, 0xcd, 0xfb, 0xbe, 0x79, 0xf3, 0xe6, + 0xcd, 0xcb, 0x82, 0x42, 0xc3, 0xc0, 0xb1, 0x70, 0x99, 0x86, 0xe8, 0x2e, 0x76, 0xea, 0x66, 0x39, + 0x6c, 0x97, 0x9a, 0x81, 0x1f, 0xfa, 0xf2, 0x5c, 0x64, 0x29, 0x75, 0x2d, 0xea, 0x85, 0x34, 0xd4, + 0x31, 0x91, 0x81, 0x4c, 0xd3, 0x6f, 0x91, 0x30, 0x5a, 0xa3, 0x16, 0xd2, 0x90, 0x7d, 0xe4, 0x3a, + 0x16, 0x0a, 0xfd, 0x20, 0x06, 0x2c, 0xd9, 0xbe, 0xed, 0xf3, 0x9f, 0x65, 0xf6, 0x2b, 0x9e, 0x5d, + 0x31, 0x7d, 0xea, 0xf9, 0xd4, 0x88, 0x0c, 0xd1, 0x20, 0x32, 0x69, 0x7f, 0x9d, 0x00, 0xad, 0x46, + 0xed, 0x9b, 0x4d, 0x0b, 0x85, 0xb8, 0x4a, 0x08, 0x0e, 0x74, 0x6c, 0x61, 0xaf, 0x19, 0x3a, 0x3e, + 0xd1, 0x51, 0x88, 0x2b, 0x7e, 0x8b, 0x58, 0x54, 0x56, 0xe0, 0x94, 0x19, 0x60, 0x46, 0xa4, 0x48, + 0x45, 0x69, 0xed, 0xb4, 0xde, 0x1d, 0xca, 0x2b, 0x30, 0x65, 0x36, 0x90, 0x43, 0x0c, 0xc7, 0x52, + 0x4e, 0xc4, 0x26, 0x36, 0xae, 0x5a, 0xf2, 0x7d, 0x58, 0xf1, 0x98, 0x81, 0x79, 0x35, 0x02, 0xe1, + 0xd6, 0x08, 0x50, 0x88, 0x95, 0x71, 0x86, 0xad, 0x7c, 0xf4, 0xb8, 0x53, 0x18, 0xfb, 0xa7, 0x53, + 0x78, 0xdb, 0x76, 0xc2, 0x46, 0xab, 0x5e, 0x32, 0x7d, 0x2f, 0xd6, 0x17, 0xff, 0x59, 0xa7, 0xd6, + 0xdd, 0x72, 0xf8, 0xa0, 0x89, 0x69, 0x69, 0x17, 0x9b, 0x4f, 0x1f, 0xad, 0x43, 0x2c, 0x7f, 0x17, + 0x9b, 0xfa, 0xb2, 0xe7, 0x90, 0x0c, 0xcd, 0x9c, 0x18, 0xb5, 0x87, 0x10, 0x4f, 0xbc, 0x12, 0x62, + 0xd4, 0xce, 0x20, 0xd6, 0x2e, 0xc1, 0xc5, 0xd1, 0xc1, 0xd4, 0x31, 0x6d, 0xfa, 0x84, 0x62, 0xed, + 0x47, 0x09, 0x66, 0x6b, 0xd4, 0xbe, 0xe6, 0xdc, 0x6b, 0x39, 0xd6, 0x1e, 0x3b, 0xd2, 0x43, 0xe2, + 0xfc, 0x09, 0x4c, 0x22, 0x8f, 0xa5, 0x42, 0x14, 0xe5, 0x4a, 0xe9, 0x05, 0x36, 0x50, 0x25, 0xa1, + 0x1e, 0xaf, 0x96, 0xcf, 0x03, 0x34, 0x7c, 0x1a, 0x1a, 0x16, 0x26, 0xbe, 0x17, 0x9d, 0x82, 0x7e, + 0x9a, 0xcd, 0xec, 0xb2, 0x09, 0x4d, 0x81, 0xe5, 0xa4, 0x24, 0xa1, 0xf6, 0x57, 0x09, 0x16, 0x98, + 0x69, 0xaf, 0xf6, 0x7a, 0x05, 0xaf, 0xc3, 0xa2, 0x4b, 0x3d, 0x23, 0xf4, 0xef, 0x62, 0x62, 0x38, + 0x75, 0x33, 0xa1, 0x7c, 0xde, 0xa5, 0xde, 0x0d, 0x66, 0xa9, 0xd6, 0xcd, 0x68, 0x03, 0xd7, 0x61, + 0x65, 0x40, 0x65, 0x77, 0x0f, 0xf2, 0x06, 0x2c, 0x85, 0x01, 0x22, 0x14, 0x99, 0x3c, 0x1f, 0x4c, + 0xdf, 0x6b, 0xba, 0x38, 0xc4, 0x5c, 0xfa, 0x94, 0xbe, 0xd8, 0x67, 0xdb, 0x89, 0x4d, 0xda, 0x6f, + 0x12, 0xcc, 0xd5, 0xa8, 0xbd, 0xe3, 0x62, 0x14, 0x54, 0x90, 0x8b, 0x88, 0x89, 0x8f, 0x77, 0x1b, + 0x7a, 0xf1, 0x18, 0x7f, 0xa9, 0x78, 0x30, 0xf2, 0x06, 0x22, 0x04, 0xbb, 0x51, 0x2a, 0xeb, 0xdd, + 0xa1, 0xb6, 0x02, 0x67, 0x53, 0x4a, 0xc5, 0xe1, 0xfd, 0x11, 0xa5, 0x1a, 0x4b, 0x47, 0xec, 0xbd, + 0xae, 0x93, 0x3b, 0x07, 0x3c, 0xb1, 0x8c, 0xaf, 0x7c, 0x12, 0xdf, 0x77, 0x7d, 0x8a, 0x4d, 0xdc, + 0xf6, 0x09, 0x96, 0x55, 0x98, 0x0a, 0xb0, 0x89, 0x9d, 0x7d, 0x1c, 0xc4, 0xfb, 0x10, 0xe3, 0x38, + 0x09, 0xfb, 0xc4, 0x8a, 0x7d, 0xfc, 0x79, 0x12, 0x16, 0xb9, 0xc9, 0x76, 0x68, 0x88, 0x83, 0x4f, + 0xbb, 0xde, 0x3e, 0x86, 0x19, 0xd3, 0x27, 0x04, 0x47, 0xe7, 0xda, 0x0d, 0x7e, 0x45, 0x39, 0xe8, + 0x14, 0x96, 0x1e, 0x20, 0xcf, 0xbd, 0xa2, 0x25, 0xcc, 0x9a, 0x9e, 0xeb, 0x8d, 0xab, 0x96, 0xac, + 0x41, 0xae, 0x8e, 0xcd, 0xc6, 0xd6, 0x66, 0x33, 0xc0, 0x77, 0x9c, 0xb6, 0x92, 0xe3, 0x82, 0x12, + 0x73, 0xf2, 0xe5, 0xc4, 0xc5, 0x89, 0xaa, 0xc8, 0x99, 0x83, 0x4e, 0x61, 0x21, 0xf2, 0xdf, 0xb3, + 0x69, 0x7d, 0xf7, 0x49, 0xde, 0x80, 0xd3, 0xbd, 0x9c, 0x3d, 0xc9, 0x17, 0x2d, 0x1d, 0x74, 0x0a, + 0xf3, 0xd1, 0x22, 0x61, 0xd2, 0xf4, 0x29, 0x27, 0xce, 0xe0, 0xfe, 0x83, 0x99, 0x4c, 0x1e, 0xcc, + 0x75, 0x88, 0x52, 0xf4, 0x0e, 0x0e, 0x8c, 0xf8, 0xd0, 0xd9, 0x5e, 0x81, 0xbb, 0xcd, 0x1f, 0x74, + 0x0a, 0x6a, 0xe4, 0x36, 0x03, 0xa4, 0xe9, 0x0b, 0xdd, 0xd9, 0x9d, 0x68, 0x92, 0xa7, 0xe4, 0x7c, + 0x8b, 0xd4, 0x7d, 0x62, 0x39, 0xc4, 0x36, 0x9a, 0x38, 0x70, 0x7c, 0x4b, 0x99, 0x2e, 0x4a, 0x6b, + 0x13, 0x95, 0x73, 0x07, 0x9d, 0xc2, 0xd9, 0xc8, 0x59, 0x1a, 0xa1, 0xe9, 0x73, 0x62, 0xea, 0x33, + 0x3e, 0x23, 0xbb, 0xb0, 0xc8, 0x0a, 0x7d, 0xba, 0xd2, 0xce, 0xbc, 0x82, 0x4a, 0xbb, 0xe0, 0x39, + 0x24, 0x55, 0xdd, 0x19, 0x1b, 0x6a, 0x0f, 0xb0, 0xcd, 0xbe, 0x12, 0x36, 0xd4, 0x4e, 0xb1, 0xbd, + 0x0f, 0x0a, 0x2b, 0x3f, 0x2e, 0xaf, 0x26, 0x06, 0x7f, 0x78, 0x0d, 0x4c, 0x50, 0xdd, 0xc5, 0x96, + 0x32, 0xc7, 0xcb, 0xc6, 0x19, 0x97, 0x7a, 0x7d, 0xc5, 0xe6, 0x6a, 0x64, 0xbc, 0x32, 0xf5, 0xdd, + 0xc3, 0xc2, 0xd8, 0x7f, 0x0f, 0x0b, 0x63, 0xda, 0x79, 0x38, 0x97, 0x91, 0xb3, 0x22, 0xa7, 0xbf, + 0x95, 0x78, 0xc9, 0xda, 0x71, 0x91, 0xe3, 0xdd, 0x24, 0x16, 0x76, 0xb1, 0x8d, 0x42, 0x6c, 0xf1, + 0xb2, 0x76, 0xd8, 0xcb, 0x5b, 0x84, 0x9c, 0xb8, 0x5e, 0xbd, 0x7a, 0x03, 0xdd, 0x1b, 0x56, 0xb5, + 0xe4, 0x25, 0x38, 0x89, 0x9b, 0xbe, 0xd9, 0xe0, 0x97, 0x6f, 0x42, 0x8f, 0x06, 0xf2, 0x32, 0x4c, + 0x52, 0x4c, 0x2c, 0x71, 0xef, 0xe2, 0x91, 0xb6, 0x0a, 0x17, 0x86, 0xca, 0x10, 0x62, 0xc3, 0xf8, + 0x6a, 0xd6, 0xa3, 0x02, 0xf3, 0x79, 0xb7, 0xff, 0x38, 0x4c, 0x68, 0xa2, 0x0e, 0x9c, 0x48, 0xd5, + 0x81, 0x55, 0x98, 0x21, 0x2d, 0xcf, 0x08, 0xba, 0x1e, 0x63, 0xad, 0x39, 0xd2, 0xf2, 0x04, 0x8b, + 0x56, 0x84, 0x7c, 0x36, 0x6b, 0x7f, 0x10, 0xe7, 0x6b, 0xd4, 0xde, 0xb6, 0xac, 0x97, 0x97, 0x74, + 0x05, 0x40, 0xf4, 0x55, 0x54, 0x19, 0x2f, 0x8e, 0xaf, 0x4d, 0x6f, 0xaa, 0xa5, 0x54, 0xbb, 0x56, + 0x12, 0x3c, 0x7a, 0x1f, 0x5a, 0x53, 0x41, 0x49, 0xcb, 0x10, 0x1a, 0x7f, 0x91, 0xb8, 0x91, 0xdd, + 0x3f, 0xbb, 0xb7, 0x87, 0x5b, 0xd8, 0xb1, 0x1b, 0xe1, 0x71, 0xb5, 0x6e, 0xc1, 0xd4, 0x3e, 0x72, + 0x0d, 0x64, 0x59, 0x41, 0xfc, 0xae, 0x28, 0x4f, 0x1f, 0xad, 0x2f, 0xc5, 0x39, 0xbd, 0x6d, 0x59, + 0x01, 0xa6, 0x74, 0x2f, 0x0c, 0x1c, 0x62, 0xeb, 0xa7, 0xf6, 0x91, 0xcb, 0x66, 0x58, 0x06, 0xdc, + 0xe7, 0xac, 0x3c, 0x03, 0x26, 0xf4, 0x78, 0xa4, 0x69, 0x50, 0x1c, 0xa6, 0x4f, 0x6c, 0xe2, 0x1b, + 0x09, 0xe4, 0x1a, 0xb5, 0x77, 0x31, 0x7b, 0x1d, 0x05, 0xe8, 0x75, 0xca, 0xd7, 0xde, 0x00, 0x75, + 0x50, 0x81, 0x10, 0xf8, 0xb3, 0x14, 0x5f, 0x37, 0x1a, 0xfa, 0x01, 0xae, 0x92, 0x10, 0x07, 0xfc, + 0x09, 0xde, 0x8e, 0x3a, 0xe9, 0xe3, 0x3d, 0xde, 0x15, 0xc8, 0xc5, 0x9d, 0xb8, 0xc1, 0x6a, 0x07, + 0xd7, 0x3a, 0xbb, 0x59, 0x18, 0x48, 0x8a, 0xea, 0xce, 0x76, 0xcc, 0x73, 0xe3, 0x41, 0x13, 0xeb, + 0xd3, 0xa8, 0x37, 0xd0, 0xde, 0x82, 0xd5, 0x43, 0x74, 0x09, 0xfd, 0xf7, 0xf8, 0x21, 0x44, 0x3d, + 0xa4, 0xd8, 0xdd, 0x5e, 0x03, 0x05, 0x98, 0x5e, 0x6d, 0x9b, 0x0d, 0x5e, 0x94, 0x8e, 0xb5, 0x07, + 0x05, 0x58, 0x04, 0xfd, 0x26, 0x8e, 0x43, 0xad, 0x77, 0x87, 0xda, 0x45, 0x58, 0x1b, 0x45, 0xd9, + 0x95, 0xb7, 0xf9, 0xfb, 0x34, 0x8c, 0xd7, 0xa8, 0x2d, 0xdf, 0x82, 0xe9, 0xfe, 0x3e, 0x70, 0x30, + 0x14, 0xc9, 0x36, 0x52, 0x7d, 0x67, 0x04, 0x40, 0xf4, 0x68, 0x5f, 0xc2, 0x6c, 0xaa, 0xc7, 0xd4, + 0x32, 0x97, 0x26, 0x30, 0xea, 0xc5, 0xd1, 0x18, 0xc1, 0x70, 0x0b, 0xa6, 0xfb, 0x1b, 0xa1, 0x4c, + 0xe9, 0x7d, 0x80, 0x6c, 0xe9, 0x19, 0xdd, 0x89, 0x7c, 0x07, 0xe6, 0x07, 0x3a, 0x93, 0x37, 0xb3, + 0x17, 0x27, 0x51, 0xea, 0xa5, 0xa3, 0xa0, 0x04, 0x4f, 0x1b, 0x96, 0x87, 0xbc, 0x16, 0x99, 0x61, + 0xc8, 0xc6, 0xaa, 0x9b, 0x47, 0xc7, 0x0a, 0x66, 0x1f, 0x16, 0xb3, 0x6a, 0xff, 0x90, 0x08, 0x0d, + 0x00, 0xd5, 0xf2, 0x11, 0x81, 0x82, 0xf0, 0x0b, 0x98, 0x49, 0xd6, 0xf4, 0x0b, 0x59, 0x1e, 0x12, + 0x10, 0xf5, 0xdd, 0x91, 0x10, 0xe1, 0xbe, 0x05, 0x67, 0xb2, 0xcb, 0x71, 0xa6, 0x8f, 0x4c, 0xa8, + 0xba, 0x71, 0x64, 0xa8, 0xa0, 0x35, 0x61, 0x2e, 0x5d, 0x40, 0x57, 0xb3, 0xbc, 0xa4, 0x40, 0xea, + 0x7b, 0x47, 0x00, 0x09, 0x92, 0xaf, 0x41, 0x19, 0x5a, 0x04, 0x87, 0xe4, 0x5b, 0x36, 0x5a, 0xbd, + 0xfc, 0x22, 0x68, 0xc1, 0xff, 0xbd, 0x04, 0xe7, 0x0f, 0x2f, 0x63, 0x99, 0x91, 0x3b, 0x74, 0x89, + 0xfa, 0xc1, 0x0b, 0x2f, 0x11, 0x7a, 0x6e, 0x43, 0x2e, 0xf1, 0x5f, 0x5c, 0x31, 0x3b, 0xff, 0x7b, + 0x08, 0x75, 0x6d, 0x14, 0x42, 0xf8, 0xfe, 0x49, 0x82, 0xc2, 0xa8, 0x6f, 0x28, 0x5b, 0xc3, 0xa5, + 0x0f, 0x5d, 0xa4, 0x7e, 0x78, 0x8c, 0x45, 0x5d, 0x55, 0x95, 0x6b, 0x8f, 0x9f, 0xe5, 0xa5, 0x27, + 0xcf, 0xf2, 0xd2, 0xbf, 0xcf, 0xf2, 0xd2, 0x0f, 0xcf, 0xf3, 0x63, 0x4f, 0x9e, 0xe7, 0xc7, 0xfe, + 0x7e, 0x9e, 0x1f, 0xbb, 0xbd, 0xd9, 0xd7, 0x1e, 0xef, 0x71, 0x82, 0xf5, 0x6b, 0xa8, 0x4e, 0xcb, + 0xf1, 0xf7, 0xa5, 0xfd, 0x8d, 0xcb, 0xe5, 0x76, 0xdf, 0x37, 0x2b, 0xd6, 0x2e, 0xd7, 0x27, 0xf9, + 0x17, 0xa3, 0xad, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0x5b, 0x99, 0x1e, 0xd3, 0x12, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1324,6 +1426,7 @@ type MsgClient interface { RestoreInterchainAccount(ctx context.Context, in *MsgRestoreInterchainAccount, opts ...grpc.CallOption) (*MsgRestoreInterchainAccountResponse, error) UpdateValidatorSharesExchRate(ctx context.Context, in *MsgUpdateValidatorSharesExchRate, opts ...grpc.CallOption) (*MsgUpdateValidatorSharesExchRateResponse, error) ClearBalance(ctx context.Context, in *MsgClearBalance, opts ...grpc.CallOption) (*MsgClearBalanceResponse, error) + UpdateInnerRedemptionRateBounds(ctx context.Context, in *MsgUpdateInnerRedemptionRateBounds, opts ...grpc.CallOption) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) } type msgClient struct { @@ -1442,6 +1545,15 @@ func (c *msgClient) ClearBalance(ctx context.Context, in *MsgClearBalance, opts return out, nil } +func (c *msgClient) UpdateInnerRedemptionRateBounds(ctx context.Context, in *MsgUpdateInnerRedemptionRateBounds, opts ...grpc.CallOption) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) { + out := new(MsgUpdateInnerRedemptionRateBoundsResponse) + err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/UpdateInnerRedemptionRateBounds", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { LiquidStake(context.Context, *MsgLiquidStake) (*MsgLiquidStakeResponse, error) @@ -1456,6 +1568,7 @@ type MsgServer interface { RestoreInterchainAccount(context.Context, *MsgRestoreInterchainAccount) (*MsgRestoreInterchainAccountResponse, error) UpdateValidatorSharesExchRate(context.Context, *MsgUpdateValidatorSharesExchRate) (*MsgUpdateValidatorSharesExchRateResponse, error) ClearBalance(context.Context, *MsgClearBalance) (*MsgClearBalanceResponse, error) + UpdateInnerRedemptionRateBounds(context.Context, *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1498,6 +1611,9 @@ func (*UnimplementedMsgServer) UpdateValidatorSharesExchRate(ctx context.Context func (*UnimplementedMsgServer) ClearBalance(ctx context.Context, req *MsgClearBalance) (*MsgClearBalanceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearBalance not implemented") } +func (*UnimplementedMsgServer) UpdateInnerRedemptionRateBounds(ctx context.Context, req *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateInnerRedemptionRateBounds not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -1719,6 +1835,24 @@ func _Msg_ClearBalance_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_UpdateInnerRedemptionRateBounds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateInnerRedemptionRateBounds) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateInnerRedemptionRateBounds(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.stakeibc.Msg/UpdateInnerRedemptionRateBounds", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateInnerRedemptionRateBounds(ctx, req.(*MsgUpdateInnerRedemptionRateBounds)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "stride.stakeibc.Msg", HandlerType: (*MsgServer)(nil), @@ -1771,11 +1905,95 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "ClearBalance", Handler: _Msg_ClearBalance_Handler, }, + { + MethodName: "UpdateInnerRedemptionRateBounds", + Handler: _Msg_UpdateInnerRedemptionRateBounds_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "stride/stakeibc/tx.proto", } +func (m *MsgUpdateInnerRedemptionRateBounds) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateInnerRedemptionRateBounds) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateInnerRedemptionRateBounds) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.MaxInnerRedemptionRate.Size() + i -= size + if _, err := m.MaxInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.MinInnerRedemptionRate.Size() + i -= size + if _, err := m.MinInnerRedemptionRate.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *MsgLiquidStake) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2696,6 +2914,36 @@ func encodeVarintTx(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } +func (m *MsgUpdateInnerRedemptionRateBounds) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.MinInnerRedemptionRate.Size() + n += 1 + l + sovTx(uint64(l)) + l = m.MaxInnerRedemptionRate.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgLiquidStake) Size() (n int) { if m == nil { return 0 @@ -3093,6 +3341,238 @@ func sovTx(x uint64) (n int) { func sozTx(x uint64) (n int) { return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } +func (m *MsgUpdateInnerRedemptionRateBounds) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateInnerRedemptionRateBounds: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateInnerRedemptionRateBounds: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", 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.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinInnerRedemptionRate", 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 + } + if err := m.MinInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxInnerRedemptionRate", 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 + } + if err := m.MaxInnerRedemptionRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateInnerRedemptionRateBoundsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateInnerRedemptionRateBoundsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateInnerRedemptionRateBoundsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgLiquidStake) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 2988caeb4eff57068253d1051cc2815a1a81c4a1 Mon Sep 17 00:00:00 2001 From: sampocs Date: Sun, 17 Sep 2023 21:35:02 -0500 Subject: [PATCH 34/44] added cap on undelegate messages (#940) Closes: #XXX ## Context and purpose of the change ## Brief Changelog ## Author's Checklist I have... - [ ] Run and PASSED locally all GAIA integration tests - [ ] If the change is contentful, I either: - [ ] Added a new unit test OR - [ ] Added test cases to existing unit tests - [ ] OR this change is a trivial rework / code cleanup without any test coverage If skipped any of the tests above, explain. ## Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] manually tested (if applicable) - [ ] confirmed the author wrote unit tests for new logic - [ ] reviewed documentation exists and is accurate ## Documentation and Release Note - [ ] Does this pull request introduce a new feature or user-facing behavior changes? - [ ] Is a relevant changelog entry added to the `Unreleased` section in `CHANGELOG.md`? - [ ] This pull request updates existing proto field values (and require a backend and frontend migration)? - [ ] Does this pull request change existing proto field names (and require a frontend migration)? How is the feature or change documented? - [ ] not applicable - [ ] jira ticket `XXX` - [ ] specification (`x//spec/`) - [ ] README.md - [ ] not documented --- x/stakeibc/keeper/unbonding_records.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index 21e6100ea7..0b76d4f5d9 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -301,6 +301,10 @@ func (k Keeper) UnbondFromHostZone(ctx sdk.Context, hostZone types.HostZone) err return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target unbonded amount was 0 for each validator") } + if len(msgs) > UndelegateICABatchSize { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, fmt.Sprintf("too many undelegation messages (%d) for host zone %s", len(msgs), hostZone.ChainId)) + } + // Send the messages in batches so the gas limit isn't exceedeed for start := 0; start < len(msgs); start += UndelegateICABatchSize { end := start + UndelegateICABatchSize From 60c18e73b60a0192fe9c4d0d0831e8de873327be Mon Sep 17 00:00:00 2001 From: sampocs Date: Mon, 18 Sep 2023 00:21:22 -0500 Subject: [PATCH 35/44] add rounding calibration function (#936) Closes: #XXX ## Context and purpose of the change ## Brief Changelog ## Author's Checklist I have... - [ ] Run and PASSED locally all GAIA integration tests - [ ] If the change is contentful, I either: - [ ] Added a new unit test OR - [ ] Added test cases to existing unit tests - [ ] OR this change is a trivial rework / code cleanup without any test coverage If skipped any of the tests above, explain. ## Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] manually tested (if applicable) - [ ] confirmed the author wrote unit tests for new logic - [ ] reviewed documentation exists and is accurate ## Documentation and Release Note - [ ] Does this pull request introduce a new feature or user-facing behavior changes? - [ ] Is a relevant changelog entry added to the `Unreleased` section in `CHANGELOG.md`? - [ ] This pull request updates existing proto field values (and require a backend and frontend migration)? - [ ] Does this pull request change existing proto field names (and require a frontend migration)? How is the feature or change documented? - [ ] not applicable - [ ] jira ticket `XXX` - [ ] specification (`x//spec/`) - [ ] README.md - [ ] not documented --- proto/stride/stakeibc/tx.proto | 9 + x/stakeibc/client/cli/tx.go | 1 + .../client/cli/tx_calibrate_delegation.go | 41 ++ x/stakeibc/handler.go | 3 + x/stakeibc/keeper/icqcallbacks.go | 4 +- .../icqcallbacks_callibrate_delegation.go | 110 ++++ .../keeper/msg_server_calibrate_delegation.go | 25 + x/stakeibc/keeper/msg_server_submit_tx.go | 58 ++ x/stakeibc/types/codec.go | 2 + .../types/message_calibrate_delegation.go | 66 ++ x/stakeibc/types/tx.pb.go | 609 +++++++++++++++--- 11 files changed, 837 insertions(+), 91 deletions(-) create mode 100644 x/stakeibc/client/cli/tx_calibrate_delegation.go create mode 100644 x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go create mode 100644 x/stakeibc/keeper/msg_server_calibrate_delegation.go create mode 100644 x/stakeibc/types/message_calibrate_delegation.go diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index d908e7245b..0244edf150 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -27,6 +27,8 @@ service Msg { returns (MsgRestoreInterchainAccountResponse); rpc UpdateValidatorSharesExchRate(MsgUpdateValidatorSharesExchRate) returns (MsgUpdateValidatorSharesExchRateResponse); + rpc CalibrateDelegation(MsgCalibrateDelegation) + returns (MsgCalibrateDelegationResponse); rpc ClearBalance(MsgClearBalance) returns (MsgClearBalanceResponse); rpc UpdateInnerRedemptionRateBounds(MsgUpdateInnerRedemptionRateBounds) returns (MsgUpdateInnerRedemptionRateBoundsResponse); @@ -170,3 +172,10 @@ message MsgUpdateValidatorSharesExchRate { string valoper = 3; } message MsgUpdateValidatorSharesExchRateResponse {} + +message MsgCalibrateDelegation { + string creator = 1; + string chain_id = 2; + string valoper = 3; +} +message MsgCalibrateDelegationResponse {} diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index a7c269f227..3d29b21bad 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -35,6 +35,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand(CmdDeleteValidator()) cmd.AddCommand(CmdRestoreInterchainAccount()) cmd.AddCommand(CmdUpdateValidatorSharesExchRate()) + cmd.AddCommand(CmdCalibrateDelegation()) cmd.AddCommand(CmdClearBalance()) cmd.AddCommand(CmdUpdateInnerRedemptionRateBounds()) diff --git a/x/stakeibc/client/cli/tx_calibrate_delegation.go b/x/stakeibc/client/cli/tx_calibrate_delegation.go new file mode 100644 index 0000000000..42df00e22a --- /dev/null +++ b/x/stakeibc/client/cli/tx_calibrate_delegation.go @@ -0,0 +1,41 @@ +package cli + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +func CmdCalibrateDelegation() *cobra.Command { + cmd := &cobra.Command{ + Use: "calibrate-delegation [chainid] [valoper]", + Short: "Broadcast message calibrate-delegation", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argChainId := args[0] + argValoper := args[1] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgCalibrateDelegation( + clientCtx.GetFromAddress().String(), + argChainId, + argValoper, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index bad3d8d516..5bea7e9488 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -58,6 +58,9 @@ func NewMessageHandler(k keeper.Keeper) sdk.Handler { case *types.MsgUpdateValidatorSharesExchRate: res, err := msgServer.UpdateValidatorSharesExchRate(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgCalibrateDelegation: + res, err := msgServer.CalibrateDelegation(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) case *types.MsgUpdateInnerRedemptionRateBounds: res, err := msgServer.UpdateInnerRedemptionRateBounds(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index b27b05518e..a134243c40 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -11,6 +11,7 @@ const ( ICQCallbackID_FeeBalance = "feebalance" ICQCallbackID_Delegation = "delegation" ICQCallbackID_Validator = "validator" + ICQCallbackID_Calibrate = "calibrate" ) // ICQCallbacks wrapper struct for stakeibc keeper @@ -46,5 +47,6 @@ func (c ICQCallbacks) RegisterICQCallbacks() icqtypes.QueryCallbacks { AddICQCallback(ICQCallbackID_WithdrawalBalance, ICQCallback(WithdrawalBalanceCallback)). AddICQCallback(ICQCallbackID_FeeBalance, ICQCallback(FeeBalanceCallback)). AddICQCallback(ICQCallbackID_Delegation, ICQCallback(DelegatorSharesCallback)). - AddICQCallback(ICQCallbackID_Validator, ICQCallback(ValidatorSharesToTokensRateCallback)) + AddICQCallback(ICQCallbackID_Validator, ICQCallback(ValidatorSharesToTokensRateCallback)). + AddICQCallback(ICQCallbackID_Calibrate, ICQCallback(CalibrateDelegationCallback)) } diff --git a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go new file mode 100644 index 0000000000..4032321d39 --- /dev/null +++ b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go @@ -0,0 +1,110 @@ +package keeper + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/gogoproto/proto" + + "github.com/Stride-Labs/stride/v14/utils" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +// DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. +// +// In an attempt to get the ICA's delegation amount on a given validator, we have to query: +// 1. the validator's internal shares to tokens rate +// 2. the Delegation ICA's delegated shares +// And apply the following equation: +// numTokens = numShares * sharesToTokensRate +// +// This is the callback from query #2 +// +// Note: for now, to get proofs in your ICQs, you need to query the entire store on the host zone! e.g. "store/bank/key" +func CalibrateDelegationCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Query) error { + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, ICQCallbackID_Calibrate, + "Starting delegator shares callback, QueryId: %vs, QueryType: %s, Connection: %s", query.Id, query.QueryType, query.ConnectionId)) + + // Confirm host exists + chainId := query.ChainId + hostZone, found := k.GetHostZone(ctx, chainId) + if !found { + return errorsmod.Wrapf(types.ErrHostZoneNotFound, "no registered zone for queried chain ID (%s)", chainId) + } + + // Unmarshal the query response which returns a delegation object for the delegator/validator pair + queriedDelegation := stakingtypes.Delegation{} + err := k.cdc.Unmarshal(args, &queriedDelegation) + if err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal delegator shares query response into Delegation type") + } + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Calibrate, "Query response - Delegator: %s, Validator: %s, Shares: %v", + queriedDelegation.DelegatorAddress, queriedDelegation.ValidatorAddress, queriedDelegation.Shares)) + + // Unmarshal the callback data containing the previous delegation to the validator (from the time the query was submitted) + var callbackData types.DelegatorSharesQueryCallback + if err := proto.Unmarshal(query.CallbackData, &callbackData); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal delegator shares callback data") + } + + // Grab the validator object from the hostZone using the address returned from the query + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, queriedDelegation.ValidatorAddress) + if !found { + return errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", queriedDelegation.ValidatorAddress) + } + + // Check if the ICQ overlapped a delegation, undelegation, or detokenization ICA + // that would have modfied the number of delegated tokens + prevInternalDelegation := callbackData.InitialValidatorDelegation + currInternalDelegation := validator.Delegation + icaOverlappedIcq, err := k.CheckDelegationChangedDuringQuery(ctx, validator, prevInternalDelegation, currInternalDelegation) + if err != nil { + return err + } + + // If the ICA/ICQ overlapped, submit a new query + if icaOverlappedIcq { + // Store the updated validator delegation amount + callbackDataBz, err := proto.Marshal(&types.DelegatorSharesQueryCallback{ + InitialValidatorDelegation: currInternalDelegation, + }) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal delegator shares callback data") + } + query.CallbackData = callbackDataBz + + if err := k.InterchainQueryKeeper.RetryICQRequest(ctx, query); err != nil { + return errorsmod.Wrapf(err, "unable to resubmit delegator shares query") + } + return nil + } + + // If there was no ICA/ICQ overlap, update the validator to indicate that the query + // is no longer in progress (which will unblock LSM liquid stakes to that validator) + validator.SlashQueryInProgress = false + + // Calculate the number of tokens delegated (using the internal sharesToTokensRate) + // note: truncateInt per https://github.com/cosmos/cosmos-sdk/blob/cb31043d35bad90c4daa923bb109f38fd092feda/x/staking/types/validator.go#L431 + delegatedTokens := queriedDelegation.Shares.Mul(validator.SharesToTokensRate).TruncateInt() + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Calibrate, + "Previous Delegation: %v, Current Delegation: %v", validator.Delegation, delegatedTokens)) + + // Confirm the validator has actually been slashed + if delegatedTokens.Equal(validator.Delegation) { + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Calibrate, "Validator delegation is correct")) + return nil + } + + delegationChange := validator.Delegation.Sub(delegatedTokens) + validator.Delegation = validator.Delegation.Sub(delegationChange) + hostZone.TotalDelegations = hostZone.TotalDelegations.Sub(delegationChange) + + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_Calibrate, + "Delegation updated to: %v", validator.Delegation)) + + hostZone.Validators[valIndex] = &validator + k.SetHostZone(ctx, hostZone) + + return nil +} diff --git a/x/stakeibc/keeper/msg_server_calibrate_delegation.go b/x/stakeibc/keeper/msg_server_calibrate_delegation.go new file mode 100644 index 0000000000..995f1b7365 --- /dev/null +++ b/x/stakeibc/keeper/msg_server_calibrate_delegation.go @@ -0,0 +1,25 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +// Submits an ICQ to get the validator's delegated shares +func (k msgServer) CalibrateDelegation(goCtx context.Context, msg *types.MsgCalibrateDelegation) (*types.MsgCalibrateDelegationResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + hostZone, found := k.GetHostZone(ctx, msg.ChainId) + if !found { + return nil, types.ErrHostZoneNotFound + } + + if err := k.SubmitCalibrationICQ(ctx, hostZone, msg.Valoper); err != nil { + return nil, err + } + + return &types.MsgCalibrateDelegationResponse{}, nil +} diff --git a/x/stakeibc/keeper/msg_server_submit_tx.go b/x/stakeibc/keeper/msg_server_submit_tx.go index 50cfdba142..6351c3194e 100644 --- a/x/stakeibc/keeper/msg_server_submit_tx.go +++ b/x/stakeibc/keeper/msg_server_submit_tx.go @@ -492,3 +492,61 @@ func (k Keeper) SubmitDelegationICQ(ctx sdk.Context, hostZone types.HostZone, va return nil } + +// Submits an ICQ to get a validator's delegations +// This is called after the validator's sharesToTokens rate is determined +// The timeoutDuration parameter represents the length of the timeout (not to be confused with an actual timestamp) +func (k Keeper) SubmitCalibrationICQ(ctx sdk.Context, hostZone types.HostZone, validatorAddress string) error { + if hostZone.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation address found for %s", hostZone.ChainId) + } + validator, valIndex, found := GetValidatorFromAddress(hostZone.Validators, validatorAddress) + if !found { + return errorsmod.Wrapf(types.ErrValidatorNotFound, "no registered validator for address (%s)", validatorAddress) + } + + // Get the validator and delegator encoded addresses to form the query request + _, validatorAddressBz, err := bech32.DecodeAndConvert(validatorAddress) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid validator address, could not decode (%s)", err.Error()) + } + _, delegatorAddressBz, err := bech32.DecodeAndConvert(hostZone.DelegationIcaAddress) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "invalid delegator address, could not decode (%s)", err.Error()) + } + queryData := stakingtypes.GetDelegationKey(delegatorAddressBz, validatorAddressBz) + + // Store the current validator's delegation in the callback data so we can determine if it changed + // while the query was in flight + callbackData := types.DelegatorSharesQueryCallback{ + InitialValidatorDelegation: validator.Delegation, + } + callbackDataBz, err := proto.Marshal(&callbackData) + if err != nil { + return errorsmod.Wrapf(err, "unable to marshal delegator shares callback data") + } + + // Update the validator to indicate that the slash query is in progress + validator.SlashQueryInProgress = true + hostZone.Validators[valIndex] = &validator + k.SetHostZone(ctx, hostZone) + + // Submit delegator shares ICQ + query := icqtypes.Query{ + ChainId: hostZone.ChainId, + ConnectionId: hostZone.ConnectionId, + QueryType: icqtypes.STAKING_STORE_QUERY_WITH_PROOF, + RequestData: queryData, + CallbackModule: types.ModuleName, + CallbackId: ICQCallbackID_Calibrate, + CallbackData: callbackDataBz, + TimeoutDuration: time.Hour, + TimeoutPolicy: icqtypes.TimeoutPolicy_RETRY_QUERY_REQUEST, + } + if err := k.InterchainQueryKeeper.SubmitICQRequest(ctx, query, false); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("Error submitting ICQ for delegation, error : %s", err.Error())) + return err + } + + return nil +} diff --git a/x/stakeibc/types/codec.go b/x/stakeibc/types/codec.go index e0f63edc89..c28fb0b674 100644 --- a/x/stakeibc/types/codec.go +++ b/x/stakeibc/types/codec.go @@ -23,6 +23,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&ToggleLSMProposal{}, "stakeibc/ToggleLSMProposal", nil) cdc.RegisterConcrete(&MsgRestoreInterchainAccount{}, "stakeibc/RestoreInterchainAccount", nil) cdc.RegisterConcrete(&MsgUpdateValidatorSharesExchRate{}, "stakeibc/UpdateValidatorSharesExchRate", nil) + cdc.RegisterConcrete(&MsgCalibrateDelegation{}, "stakeibc/CalibrateDelegation", nil) cdc.RegisterConcrete(&MsgUpdateInnerRedemptionRateBounds{}, "stakeibc/UpdateInnerRedemptionRateBounds", nil) // this line is used by starport scaffolding # 2 } @@ -40,6 +41,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgDeleteValidator{}, &MsgRestoreInterchainAccount{}, &MsgUpdateValidatorSharesExchRate{}, + &MsgCalibrateDelegation{}, &MsgUpdateInnerRedemptionRateBounds{}, ) diff --git a/x/stakeibc/types/message_calibrate_delegation.go b/x/stakeibc/types/message_calibrate_delegation.go new file mode 100644 index 0000000000..5863ae220f --- /dev/null +++ b/x/stakeibc/types/message_calibrate_delegation.go @@ -0,0 +1,66 @@ +package types + +import ( + "strings" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v14/utils" +) + +const TypeMsgCalibrateDelegation = "calibrate_delegation" + +var _ sdk.Msg = &MsgCalibrateDelegation{} + +func NewMsgCalibrateDelegation(creator string, chainid string, valoper string) *MsgCalibrateDelegation { + return &MsgCalibrateDelegation{ + Creator: creator, + ChainId: chainid, + Valoper: valoper, + } +} + +func (msg *MsgCalibrateDelegation) Route() string { + return RouterKey +} + +func (msg *MsgCalibrateDelegation) Type() string { + return TypeMsgCalibrateDelegation +} + +func (msg *MsgCalibrateDelegation) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgCalibrateDelegation) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgCalibrateDelegation) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + if err := utils.ValidateAdminAddress(msg.Creator); err != nil { + return err + } + + if len(msg.ChainId) == 0 { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "chainid is required") + } + if len(msg.Valoper) == 0 { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "valoper is required") + } + if !strings.Contains(msg.Valoper, "valoper") { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "validator operator address must contrain 'valoper'") + } + + return nil +} diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index 3580557e09..558a2b33d0 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1278,6 +1278,102 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateValidatorSharesExchRateResponse proto.InternalMessageInfo +type MsgCalibrateDelegation struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + Valoper string `protobuf:"bytes,3,opt,name=valoper,proto3" json:"valoper,omitempty"` +} + +func (m *MsgCalibrateDelegation) Reset() { *m = MsgCalibrateDelegation{} } +func (m *MsgCalibrateDelegation) String() string { return proto.CompactTextString(m) } +func (*MsgCalibrateDelegation) ProtoMessage() {} +func (*MsgCalibrateDelegation) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{26} +} +func (m *MsgCalibrateDelegation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCalibrateDelegation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCalibrateDelegation.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCalibrateDelegation) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCalibrateDelegation.Merge(m, src) +} +func (m *MsgCalibrateDelegation) XXX_Size() int { + return m.Size() +} +func (m *MsgCalibrateDelegation) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCalibrateDelegation.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCalibrateDelegation proto.InternalMessageInfo + +func (m *MsgCalibrateDelegation) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgCalibrateDelegation) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +func (m *MsgCalibrateDelegation) GetValoper() string { + if m != nil { + return m.Valoper + } + return "" +} + +type MsgCalibrateDelegationResponse struct { +} + +func (m *MsgCalibrateDelegationResponse) Reset() { *m = MsgCalibrateDelegationResponse{} } +func (m *MsgCalibrateDelegationResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCalibrateDelegationResponse) ProtoMessage() {} +func (*MsgCalibrateDelegationResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{27} +} +func (m *MsgCalibrateDelegationResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCalibrateDelegationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCalibrateDelegationResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgCalibrateDelegationResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCalibrateDelegationResponse.Merge(m, src) +} +func (m *MsgCalibrateDelegationResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCalibrateDelegationResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCalibrateDelegationResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCalibrateDelegationResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgUpdateInnerRedemptionRateBounds)(nil), "stride.stakeibc.MsgUpdateInnerRedemptionRateBounds") proto.RegisterType((*MsgUpdateInnerRedemptionRateBoundsResponse)(nil), "stride.stakeibc.MsgUpdateInnerRedemptionRateBoundsResponse") @@ -1305,101 +1401,105 @@ func init() { proto.RegisterType((*MsgRestoreInterchainAccountResponse)(nil), "stride.stakeibc.MsgRestoreInterchainAccountResponse") proto.RegisterType((*MsgUpdateValidatorSharesExchRate)(nil), "stride.stakeibc.MsgUpdateValidatorSharesExchRate") proto.RegisterType((*MsgUpdateValidatorSharesExchRateResponse)(nil), "stride.stakeibc.MsgUpdateValidatorSharesExchRateResponse") + proto.RegisterType((*MsgCalibrateDelegation)(nil), "stride.stakeibc.MsgCalibrateDelegation") + proto.RegisterType((*MsgCalibrateDelegationResponse)(nil), "stride.stakeibc.MsgCalibrateDelegationResponse") } func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1409 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0x36, 0x69, 0x9a, 0xbe, 0x38, 0xbf, 0x36, 0x69, 0xba, 0xd9, 0x52, 0xdb, 0xdd, 0xf0, - 0x23, 0x94, 0xc6, 0x56, 0x92, 0x4a, 0x88, 0x02, 0x87, 0x38, 0x29, 0xc2, 0x52, 0x5d, 0xa1, 0x4d, - 0x4b, 0xa5, 0x4a, 0x68, 0x19, 0xef, 0x4e, 0xd7, 0xab, 0xee, 0xce, 0xba, 0x3b, 0xeb, 0xd4, 0xe5, - 0x80, 0xb8, 0x20, 0x71, 0x41, 0x02, 0x21, 0x71, 0x44, 0x3d, 0x70, 0x00, 0x71, 0x43, 0xfd, 0x23, - 0x2a, 0x71, 0xa9, 0x7a, 0x42, 0x1c, 0x2c, 0xd4, 0x5e, 0x38, 0xe7, 0x2f, 0x40, 0x33, 0xbb, 0x1e, - 0x7b, 0xd7, 0xeb, 0x38, 0x4d, 0xab, 0x9e, 0xe2, 0x99, 0xf7, 0xcd, 0xfb, 0xbe, 0x79, 0xf3, 0xe6, - 0xcd, 0xcb, 0x82, 0x42, 0xc3, 0xc0, 0xb1, 0x70, 0x99, 0x86, 0xe8, 0x2e, 0x76, 0xea, 0x66, 0x39, - 0x6c, 0x97, 0x9a, 0x81, 0x1f, 0xfa, 0xf2, 0x5c, 0x64, 0x29, 0x75, 0x2d, 0xea, 0x85, 0x34, 0xd4, - 0x31, 0x91, 0x81, 0x4c, 0xd3, 0x6f, 0x91, 0x30, 0x5a, 0xa3, 0x16, 0xd2, 0x90, 0x7d, 0xe4, 0x3a, - 0x16, 0x0a, 0xfd, 0x20, 0x06, 0x2c, 0xd9, 0xbe, 0xed, 0xf3, 0x9f, 0x65, 0xf6, 0x2b, 0x9e, 0x5d, - 0x31, 0x7d, 0xea, 0xf9, 0xd4, 0x88, 0x0c, 0xd1, 0x20, 0x32, 0x69, 0x7f, 0x9d, 0x00, 0xad, 0x46, - 0xed, 0x9b, 0x4d, 0x0b, 0x85, 0xb8, 0x4a, 0x08, 0x0e, 0x74, 0x6c, 0x61, 0xaf, 0x19, 0x3a, 0x3e, - 0xd1, 0x51, 0x88, 0x2b, 0x7e, 0x8b, 0x58, 0x54, 0x56, 0xe0, 0x94, 0x19, 0x60, 0x46, 0xa4, 0x48, - 0x45, 0x69, 0xed, 0xb4, 0xde, 0x1d, 0xca, 0x2b, 0x30, 0x65, 0x36, 0x90, 0x43, 0x0c, 0xc7, 0x52, - 0x4e, 0xc4, 0x26, 0x36, 0xae, 0x5a, 0xf2, 0x7d, 0x58, 0xf1, 0x98, 0x81, 0x79, 0x35, 0x02, 0xe1, - 0xd6, 0x08, 0x50, 0x88, 0x95, 0x71, 0x86, 0xad, 0x7c, 0xf4, 0xb8, 0x53, 0x18, 0xfb, 0xa7, 0x53, - 0x78, 0xdb, 0x76, 0xc2, 0x46, 0xab, 0x5e, 0x32, 0x7d, 0x2f, 0xd6, 0x17, 0xff, 0x59, 0xa7, 0xd6, - 0xdd, 0x72, 0xf8, 0xa0, 0x89, 0x69, 0x69, 0x17, 0x9b, 0x4f, 0x1f, 0xad, 0x43, 0x2c, 0x7f, 0x17, - 0x9b, 0xfa, 0xb2, 0xe7, 0x90, 0x0c, 0xcd, 0x9c, 0x18, 0xb5, 0x87, 0x10, 0x4f, 0xbc, 0x12, 0x62, - 0xd4, 0xce, 0x20, 0xd6, 0x2e, 0xc1, 0xc5, 0xd1, 0xc1, 0xd4, 0x31, 0x6d, 0xfa, 0x84, 0x62, 0xed, - 0x47, 0x09, 0x66, 0x6b, 0xd4, 0xbe, 0xe6, 0xdc, 0x6b, 0x39, 0xd6, 0x1e, 0x3b, 0xd2, 0x43, 0xe2, - 0xfc, 0x09, 0x4c, 0x22, 0x8f, 0xa5, 0x42, 0x14, 0xe5, 0x4a, 0xe9, 0x05, 0x36, 0x50, 0x25, 0xa1, - 0x1e, 0xaf, 0x96, 0xcf, 0x03, 0x34, 0x7c, 0x1a, 0x1a, 0x16, 0x26, 0xbe, 0x17, 0x9d, 0x82, 0x7e, - 0x9a, 0xcd, 0xec, 0xb2, 0x09, 0x4d, 0x81, 0xe5, 0xa4, 0x24, 0xa1, 0xf6, 0x57, 0x09, 0x16, 0x98, - 0x69, 0xaf, 0xf6, 0x7a, 0x05, 0xaf, 0xc3, 0xa2, 0x4b, 0x3d, 0x23, 0xf4, 0xef, 0x62, 0x62, 0x38, - 0x75, 0x33, 0xa1, 0x7c, 0xde, 0xa5, 0xde, 0x0d, 0x66, 0xa9, 0xd6, 0xcd, 0x68, 0x03, 0xd7, 0x61, - 0x65, 0x40, 0x65, 0x77, 0x0f, 0xf2, 0x06, 0x2c, 0x85, 0x01, 0x22, 0x14, 0x99, 0x3c, 0x1f, 0x4c, - 0xdf, 0x6b, 0xba, 0x38, 0xc4, 0x5c, 0xfa, 0x94, 0xbe, 0xd8, 0x67, 0xdb, 0x89, 0x4d, 0xda, 0x6f, - 0x12, 0xcc, 0xd5, 0xa8, 0xbd, 0xe3, 0x62, 0x14, 0x54, 0x90, 0x8b, 0x88, 0x89, 0x8f, 0x77, 0x1b, - 0x7a, 0xf1, 0x18, 0x7f, 0xa9, 0x78, 0x30, 0xf2, 0x06, 0x22, 0x04, 0xbb, 0x51, 0x2a, 0xeb, 0xdd, - 0xa1, 0xb6, 0x02, 0x67, 0x53, 0x4a, 0xc5, 0xe1, 0xfd, 0x11, 0xa5, 0x1a, 0x4b, 0x47, 0xec, 0xbd, - 0xae, 0x93, 0x3b, 0x07, 0x3c, 0xb1, 0x8c, 0xaf, 0x7c, 0x12, 0xdf, 0x77, 0x7d, 0x8a, 0x4d, 0xdc, - 0xf6, 0x09, 0x96, 0x55, 0x98, 0x0a, 0xb0, 0x89, 0x9d, 0x7d, 0x1c, 0xc4, 0xfb, 0x10, 0xe3, 0x38, - 0x09, 0xfb, 0xc4, 0x8a, 0x7d, 0xfc, 0x79, 0x12, 0x16, 0xb9, 0xc9, 0x76, 0x68, 0x88, 0x83, 0x4f, - 0xbb, 0xde, 0x3e, 0x86, 0x19, 0xd3, 0x27, 0x04, 0x47, 0xe7, 0xda, 0x0d, 0x7e, 0x45, 0x39, 0xe8, - 0x14, 0x96, 0x1e, 0x20, 0xcf, 0xbd, 0xa2, 0x25, 0xcc, 0x9a, 0x9e, 0xeb, 0x8d, 0xab, 0x96, 0xac, - 0x41, 0xae, 0x8e, 0xcd, 0xc6, 0xd6, 0x66, 0x33, 0xc0, 0x77, 0x9c, 0xb6, 0x92, 0xe3, 0x82, 0x12, - 0x73, 0xf2, 0xe5, 0xc4, 0xc5, 0x89, 0xaa, 0xc8, 0x99, 0x83, 0x4e, 0x61, 0x21, 0xf2, 0xdf, 0xb3, - 0x69, 0x7d, 0xf7, 0x49, 0xde, 0x80, 0xd3, 0xbd, 0x9c, 0x3d, 0xc9, 0x17, 0x2d, 0x1d, 0x74, 0x0a, - 0xf3, 0xd1, 0x22, 0x61, 0xd2, 0xf4, 0x29, 0x27, 0xce, 0xe0, 0xfe, 0x83, 0x99, 0x4c, 0x1e, 0xcc, - 0x75, 0x88, 0x52, 0xf4, 0x0e, 0x0e, 0x8c, 0xf8, 0xd0, 0xd9, 0x5e, 0x81, 0xbb, 0xcd, 0x1f, 0x74, - 0x0a, 0x6a, 0xe4, 0x36, 0x03, 0xa4, 0xe9, 0x0b, 0xdd, 0xd9, 0x9d, 0x68, 0x92, 0xa7, 0xe4, 0x7c, - 0x8b, 0xd4, 0x7d, 0x62, 0x39, 0xc4, 0x36, 0x9a, 0x38, 0x70, 0x7c, 0x4b, 0x99, 0x2e, 0x4a, 0x6b, - 0x13, 0x95, 0x73, 0x07, 0x9d, 0xc2, 0xd9, 0xc8, 0x59, 0x1a, 0xa1, 0xe9, 0x73, 0x62, 0xea, 0x33, - 0x3e, 0x23, 0xbb, 0xb0, 0xc8, 0x0a, 0x7d, 0xba, 0xd2, 0xce, 0xbc, 0x82, 0x4a, 0xbb, 0xe0, 0x39, - 0x24, 0x55, 0xdd, 0x19, 0x1b, 0x6a, 0x0f, 0xb0, 0xcd, 0xbe, 0x12, 0x36, 0xd4, 0x4e, 0xb1, 0xbd, - 0x0f, 0x0a, 0x2b, 0x3f, 0x2e, 0xaf, 0x26, 0x06, 0x7f, 0x78, 0x0d, 0x4c, 0x50, 0xdd, 0xc5, 0x96, - 0x32, 0xc7, 0xcb, 0xc6, 0x19, 0x97, 0x7a, 0x7d, 0xc5, 0xe6, 0x6a, 0x64, 0xbc, 0x32, 0xf5, 0xdd, - 0xc3, 0xc2, 0xd8, 0x7f, 0x0f, 0x0b, 0x63, 0xda, 0x79, 0x38, 0x97, 0x91, 0xb3, 0x22, 0xa7, 0xbf, - 0x95, 0x78, 0xc9, 0xda, 0x71, 0x91, 0xe3, 0xdd, 0x24, 0x16, 0x76, 0xb1, 0x8d, 0x42, 0x6c, 0xf1, - 0xb2, 0x76, 0xd8, 0xcb, 0x5b, 0x84, 0x9c, 0xb8, 0x5e, 0xbd, 0x7a, 0x03, 0xdd, 0x1b, 0x56, 0xb5, - 0xe4, 0x25, 0x38, 0x89, 0x9b, 0xbe, 0xd9, 0xe0, 0x97, 0x6f, 0x42, 0x8f, 0x06, 0xf2, 0x32, 0x4c, - 0x52, 0x4c, 0x2c, 0x71, 0xef, 0xe2, 0x91, 0xb6, 0x0a, 0x17, 0x86, 0xca, 0x10, 0x62, 0xc3, 0xf8, - 0x6a, 0xd6, 0xa3, 0x02, 0xf3, 0x79, 0xb7, 0xff, 0x38, 0x4c, 0x68, 0xa2, 0x0e, 0x9c, 0x48, 0xd5, - 0x81, 0x55, 0x98, 0x21, 0x2d, 0xcf, 0x08, 0xba, 0x1e, 0x63, 0xad, 0x39, 0xd2, 0xf2, 0x04, 0x8b, - 0x56, 0x84, 0x7c, 0x36, 0x6b, 0x7f, 0x10, 0xe7, 0x6b, 0xd4, 0xde, 0xb6, 0xac, 0x97, 0x97, 0x74, - 0x05, 0x40, 0xf4, 0x55, 0x54, 0x19, 0x2f, 0x8e, 0xaf, 0x4d, 0x6f, 0xaa, 0xa5, 0x54, 0xbb, 0x56, - 0x12, 0x3c, 0x7a, 0x1f, 0x5a, 0x53, 0x41, 0x49, 0xcb, 0x10, 0x1a, 0x7f, 0x91, 0xb8, 0x91, 0xdd, - 0x3f, 0xbb, 0xb7, 0x87, 0x5b, 0xd8, 0xb1, 0x1b, 0xe1, 0x71, 0xb5, 0x6e, 0xc1, 0xd4, 0x3e, 0x72, - 0x0d, 0x64, 0x59, 0x41, 0xfc, 0xae, 0x28, 0x4f, 0x1f, 0xad, 0x2f, 0xc5, 0x39, 0xbd, 0x6d, 0x59, - 0x01, 0xa6, 0x74, 0x2f, 0x0c, 0x1c, 0x62, 0xeb, 0xa7, 0xf6, 0x91, 0xcb, 0x66, 0x58, 0x06, 0xdc, - 0xe7, 0xac, 0x3c, 0x03, 0x26, 0xf4, 0x78, 0xa4, 0x69, 0x50, 0x1c, 0xa6, 0x4f, 0x6c, 0xe2, 0x1b, - 0x09, 0xe4, 0x1a, 0xb5, 0x77, 0x31, 0x7b, 0x1d, 0x05, 0xe8, 0x75, 0xca, 0xd7, 0xde, 0x00, 0x75, - 0x50, 0x81, 0x10, 0xf8, 0xb3, 0x14, 0x5f, 0x37, 0x1a, 0xfa, 0x01, 0xae, 0x92, 0x10, 0x07, 0xfc, - 0x09, 0xde, 0x8e, 0x3a, 0xe9, 0xe3, 0x3d, 0xde, 0x15, 0xc8, 0xc5, 0x9d, 0xb8, 0xc1, 0x6a, 0x07, - 0xd7, 0x3a, 0xbb, 0x59, 0x18, 0x48, 0x8a, 0xea, 0xce, 0x76, 0xcc, 0x73, 0xe3, 0x41, 0x13, 0xeb, - 0xd3, 0xa8, 0x37, 0xd0, 0xde, 0x82, 0xd5, 0x43, 0x74, 0x09, 0xfd, 0xf7, 0xf8, 0x21, 0x44, 0x3d, - 0xa4, 0xd8, 0xdd, 0x5e, 0x03, 0x05, 0x98, 0x5e, 0x6d, 0x9b, 0x0d, 0x5e, 0x94, 0x8e, 0xb5, 0x07, - 0x05, 0x58, 0x04, 0xfd, 0x26, 0x8e, 0x43, 0xad, 0x77, 0x87, 0xda, 0x45, 0x58, 0x1b, 0x45, 0xd9, - 0x95, 0xb7, 0xf9, 0xfb, 0x34, 0x8c, 0xd7, 0xa8, 0x2d, 0xdf, 0x82, 0xe9, 0xfe, 0x3e, 0x70, 0x30, - 0x14, 0xc9, 0x36, 0x52, 0x7d, 0x67, 0x04, 0x40, 0xf4, 0x68, 0x5f, 0xc2, 0x6c, 0xaa, 0xc7, 0xd4, - 0x32, 0x97, 0x26, 0x30, 0xea, 0xc5, 0xd1, 0x18, 0xc1, 0x70, 0x0b, 0xa6, 0xfb, 0x1b, 0xa1, 0x4c, - 0xe9, 0x7d, 0x80, 0x6c, 0xe9, 0x19, 0xdd, 0x89, 0x7c, 0x07, 0xe6, 0x07, 0x3a, 0x93, 0x37, 0xb3, - 0x17, 0x27, 0x51, 0xea, 0xa5, 0xa3, 0xa0, 0x04, 0x4f, 0x1b, 0x96, 0x87, 0xbc, 0x16, 0x99, 0x61, - 0xc8, 0xc6, 0xaa, 0x9b, 0x47, 0xc7, 0x0a, 0x66, 0x1f, 0x16, 0xb3, 0x6a, 0xff, 0x90, 0x08, 0x0d, - 0x00, 0xd5, 0xf2, 0x11, 0x81, 0x82, 0xf0, 0x0b, 0x98, 0x49, 0xd6, 0xf4, 0x0b, 0x59, 0x1e, 0x12, - 0x10, 0xf5, 0xdd, 0x91, 0x10, 0xe1, 0xbe, 0x05, 0x67, 0xb2, 0xcb, 0x71, 0xa6, 0x8f, 0x4c, 0xa8, - 0xba, 0x71, 0x64, 0xa8, 0xa0, 0x35, 0x61, 0x2e, 0x5d, 0x40, 0x57, 0xb3, 0xbc, 0xa4, 0x40, 0xea, - 0x7b, 0x47, 0x00, 0x09, 0x92, 0xaf, 0x41, 0x19, 0x5a, 0x04, 0x87, 0xe4, 0x5b, 0x36, 0x5a, 0xbd, - 0xfc, 0x22, 0x68, 0xc1, 0xff, 0xbd, 0x04, 0xe7, 0x0f, 0x2f, 0x63, 0x99, 0x91, 0x3b, 0x74, 0x89, - 0xfa, 0xc1, 0x0b, 0x2f, 0x11, 0x7a, 0x6e, 0x43, 0x2e, 0xf1, 0x5f, 0x5c, 0x31, 0x3b, 0xff, 0x7b, - 0x08, 0x75, 0x6d, 0x14, 0x42, 0xf8, 0xfe, 0x49, 0x82, 0xc2, 0xa8, 0x6f, 0x28, 0x5b, 0xc3, 0xa5, - 0x0f, 0x5d, 0xa4, 0x7e, 0x78, 0x8c, 0x45, 0x5d, 0x55, 0x95, 0x6b, 0x8f, 0x9f, 0xe5, 0xa5, 0x27, - 0xcf, 0xf2, 0xd2, 0xbf, 0xcf, 0xf2, 0xd2, 0x0f, 0xcf, 0xf3, 0x63, 0x4f, 0x9e, 0xe7, 0xc7, 0xfe, - 0x7e, 0x9e, 0x1f, 0xbb, 0xbd, 0xd9, 0xd7, 0x1e, 0xef, 0x71, 0x82, 0xf5, 0x6b, 0xa8, 0x4e, 0xcb, - 0xf1, 0xf7, 0xa5, 0xfd, 0x8d, 0xcb, 0xe5, 0x76, 0xdf, 0x37, 0x2b, 0xd6, 0x2e, 0xd7, 0x27, 0xf9, - 0x17, 0xa3, 0xad, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0x5b, 0x99, 0x1e, 0xd3, 0x12, 0x00, - 0x00, + // 1451 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdb, 0xc6, + 0x12, 0x36, 0x63, 0xc7, 0x51, 0xc6, 0xf2, 0x2f, 0xda, 0x71, 0x68, 0xe6, 0x45, 0x52, 0xe8, 0xf7, + 0x5e, 0xdd, 0x34, 0x96, 0x60, 0x3b, 0x40, 0xd1, 0xb4, 0x3d, 0x58, 0x76, 0x8a, 0x0a, 0x88, 0x82, + 0x82, 0x4e, 0x1a, 0x20, 0x40, 0xc1, 0xae, 0xc8, 0x0d, 0x45, 0x84, 0x5c, 0x2a, 0x5c, 0xca, 0x51, + 0x7a, 0x28, 0x7a, 0x29, 0xd0, 0x4b, 0x81, 0x16, 0x05, 0x7a, 0xe8, 0xa1, 0xc8, 0xa1, 0x87, 0x02, + 0xbd, 0x15, 0xf9, 0x23, 0x02, 0xf4, 0x12, 0xe4, 0x54, 0xf4, 0x20, 0x14, 0xc9, 0xa5, 0x67, 0xff, + 0x05, 0xc5, 0x2e, 0xa9, 0x95, 0x44, 0x51, 0x92, 0xe3, 0x18, 0x39, 0xd9, 0xbb, 0xf3, 0xed, 0xce, + 0xb7, 0xb3, 0x33, 0xdf, 0x8e, 0x08, 0x0a, 0x0d, 0x03, 0xc7, 0xc2, 0x25, 0x1a, 0xa2, 0xfb, 0xd8, + 0xa9, 0x99, 0xa5, 0xb0, 0x55, 0x6c, 0x04, 0x7e, 0xe8, 0xcb, 0xf3, 0x91, 0xa5, 0xd8, 0xb1, 0xa8, + 0x97, 0x92, 0x50, 0xc7, 0x44, 0x06, 0x32, 0x4d, 0xbf, 0x49, 0xc2, 0x68, 0x8d, 0x9a, 0x4f, 0x42, + 0x0e, 0x90, 0xeb, 0x58, 0x28, 0xf4, 0x83, 0x18, 0xb0, 0x6c, 0xfb, 0xb6, 0xcf, 0xff, 0x2d, 0xb1, + 0xff, 0xe2, 0xd9, 0x55, 0xd3, 0xa7, 0x9e, 0x4f, 0x8d, 0xc8, 0x10, 0x0d, 0x22, 0x93, 0xf6, 0xc7, + 0x29, 0xd0, 0xaa, 0xd4, 0xbe, 0xdd, 0xb0, 0x50, 0x88, 0x2b, 0x84, 0xe0, 0x40, 0xc7, 0x16, 0xf6, + 0x1a, 0xa1, 0xe3, 0x13, 0x1d, 0x85, 0xb8, 0xec, 0x37, 0x89, 0x45, 0x65, 0x05, 0xce, 0x98, 0x01, + 0x66, 0x8e, 0x14, 0xa9, 0x20, 0xad, 0x9f, 0xd5, 0x3b, 0x43, 0x79, 0x15, 0x32, 0x66, 0x1d, 0x39, + 0xc4, 0x70, 0x2c, 0xe5, 0x54, 0x6c, 0x62, 0xe3, 0x8a, 0x25, 0x3f, 0x84, 0x55, 0x8f, 0x19, 0xd8, + 0xae, 0x46, 0x20, 0xb6, 0x35, 0x02, 0x14, 0x62, 0x65, 0x92, 0x61, 0xcb, 0x1f, 0x3c, 0x6d, 0xe7, + 0x27, 0xfe, 0x6a, 0xe7, 0xff, 0x6f, 0x3b, 0x61, 0xbd, 0x59, 0x2b, 0x9a, 0xbe, 0x17, 0xf3, 0x8b, + 0xff, 0x6c, 0x50, 0xeb, 0x7e, 0x29, 0x7c, 0xd4, 0xc0, 0xb4, 0xb8, 0x87, 0xcd, 0xe7, 0x4f, 0x36, + 0x20, 0xa6, 0xbf, 0x87, 0x4d, 0x7d, 0xc5, 0x73, 0x48, 0x0a, 0x67, 0xee, 0x18, 0xb5, 0x86, 0x38, + 0x9e, 0x3a, 0x11, 0xc7, 0xa8, 0x95, 0xe2, 0x58, 0xbb, 0x02, 0x97, 0xc7, 0x07, 0x53, 0xc7, 0xb4, + 0xe1, 0x13, 0x8a, 0xb5, 0xef, 0x25, 0x98, 0xab, 0x52, 0xfb, 0x86, 0xf3, 0xa0, 0xe9, 0x58, 0xfb, + 0xec, 0x4a, 0x47, 0xc4, 0xf9, 0x23, 0x98, 0x46, 0x1e, 0x4b, 0x85, 0x28, 0xca, 0xe5, 0xe2, 0x2b, + 0x1c, 0xa0, 0x42, 0x42, 0x3d, 0x5e, 0x2d, 0x5f, 0x04, 0xa8, 0xfb, 0x34, 0x34, 0x2c, 0x4c, 0x7c, + 0x2f, 0xba, 0x05, 0xfd, 0x2c, 0x9b, 0xd9, 0x63, 0x13, 0x9a, 0x02, 0x2b, 0xfd, 0x94, 0x04, 0xdb, + 0x5f, 0x24, 0x58, 0x64, 0xa6, 0xfd, 0xea, 0x9b, 0x25, 0xbc, 0x01, 0x4b, 0x2e, 0xf5, 0x8c, 0xd0, + 0xbf, 0x8f, 0x89, 0xe1, 0xd4, 0xcc, 0x3e, 0xe6, 0x0b, 0x2e, 0xf5, 0x6e, 0x31, 0x4b, 0xa5, 0x66, + 0x46, 0x07, 0xb8, 0x09, 0xab, 0x03, 0x2c, 0x3b, 0x67, 0x90, 0x37, 0x61, 0x39, 0x0c, 0x10, 0xa1, + 0xc8, 0xe4, 0xf9, 0x60, 0xfa, 0x5e, 0xc3, 0xc5, 0x21, 0xe6, 0xd4, 0x33, 0xfa, 0x52, 0x8f, 0x6d, + 0x37, 0x36, 0x69, 0xbf, 0x4a, 0x30, 0x5f, 0xa5, 0xf6, 0xae, 0x8b, 0x51, 0x50, 0x46, 0x2e, 0x22, + 0x26, 0x3e, 0x5e, 0x35, 0x74, 0xe3, 0x31, 0xf9, 0x5a, 0xf1, 0x60, 0xce, 0xeb, 0x88, 0x10, 0xec, + 0x46, 0xa9, 0xac, 0x77, 0x86, 0xda, 0x2a, 0x9c, 0x4f, 0x30, 0x15, 0x97, 0xf7, 0x5b, 0x94, 0x6a, + 0x2c, 0x1d, 0xb1, 0xf7, 0xa6, 0x6e, 0xee, 0x02, 0xf0, 0xc4, 0x32, 0xbe, 0xf0, 0x49, 0x5c, 0xef, + 0x7a, 0x86, 0x4d, 0xdc, 0xf5, 0x09, 0x96, 0x55, 0xc8, 0x04, 0xd8, 0xc4, 0xce, 0x01, 0x0e, 0xe2, + 0x73, 0x88, 0x71, 0x9c, 0x84, 0x3d, 0x64, 0xc5, 0x39, 0x7e, 0x3f, 0x0d, 0x4b, 0xdc, 0x64, 0x3b, + 0x34, 0xc4, 0xc1, 0xc7, 0x9d, 0xdd, 0x3e, 0x84, 0x59, 0xd3, 0x27, 0x04, 0x47, 0xf7, 0xda, 0x09, + 0x7e, 0x59, 0x39, 0x6c, 0xe7, 0x97, 0x1f, 0x21, 0xcf, 0xbd, 0xa6, 0xf5, 0x99, 0x35, 0x3d, 0xdb, + 0x1d, 0x57, 0x2c, 0x59, 0x83, 0x6c, 0x0d, 0x9b, 0xf5, 0xed, 0xad, 0x46, 0x80, 0xef, 0x39, 0x2d, + 0x25, 0xcb, 0x09, 0xf5, 0xcd, 0xc9, 0x57, 0xfb, 0x0a, 0x27, 0x52, 0x91, 0x73, 0x87, 0xed, 0xfc, + 0x62, 0xb4, 0x7f, 0xd7, 0xa6, 0xf5, 0xd4, 0x93, 0xbc, 0x09, 0x67, 0xbb, 0x39, 0x7b, 0x9a, 0x2f, + 0x5a, 0x3e, 0x6c, 0xe7, 0x17, 0xa2, 0x45, 0xc2, 0xa4, 0xe9, 0x19, 0x27, 0xce, 0xe0, 0xde, 0x8b, + 0x99, 0xee, 0xbf, 0x98, 0x9b, 0x10, 0xa5, 0xe8, 0x3d, 0x1c, 0x18, 0xf1, 0xa5, 0xb3, 0xb3, 0x02, + 0xdf, 0x36, 0x77, 0xd8, 0xce, 0xab, 0xd1, 0xb6, 0x29, 0x20, 0x4d, 0x5f, 0xec, 0xcc, 0xee, 0x46, + 0x93, 0x3c, 0x25, 0x17, 0x9a, 0xa4, 0xe6, 0x13, 0xcb, 0x21, 0xb6, 0xd1, 0xc0, 0x81, 0xe3, 0x5b, + 0xca, 0x4c, 0x41, 0x5a, 0x9f, 0x2a, 0x5f, 0x38, 0x6c, 0xe7, 0xcf, 0x47, 0x9b, 0x25, 0x11, 0x9a, + 0x3e, 0x2f, 0xa6, 0x3e, 0xe1, 0x33, 0xb2, 0x0b, 0x4b, 0x4c, 0xe8, 0x93, 0x4a, 0x3b, 0x7b, 0x02, + 0x4a, 0xbb, 0xe8, 0x39, 0x24, 0xa1, 0xee, 0xcc, 0x1b, 0x6a, 0x0d, 0x78, 0x9b, 0x3b, 0x11, 0x6f, + 0xa8, 0x95, 0xf0, 0xf6, 0x2e, 0x28, 0x4c, 0x7e, 0x5c, 0xae, 0x26, 0x06, 0x7f, 0x78, 0x0d, 0x4c, + 0x50, 0xcd, 0xc5, 0x96, 0x32, 0xcf, 0x65, 0xe3, 0x9c, 0x4b, 0xbd, 0x1e, 0xb1, 0xb9, 0x1e, 0x19, + 0xaf, 0x65, 0xbe, 0x79, 0x9c, 0x9f, 0xf8, 0xe7, 0x71, 0x7e, 0x42, 0xbb, 0x08, 0x17, 0x52, 0x72, + 0x56, 0xe4, 0xf4, 0xd7, 0x12, 0x97, 0xac, 0x5d, 0x17, 0x39, 0xde, 0x6d, 0x62, 0x61, 0x17, 0xdb, + 0x28, 0xc4, 0x16, 0x97, 0xb5, 0x51, 0x2f, 0x6f, 0x01, 0xb2, 0xa2, 0xbc, 0xba, 0x7a, 0x03, 0x9d, + 0x0a, 0xab, 0x58, 0xf2, 0x32, 0x9c, 0xc6, 0x0d, 0xdf, 0xac, 0xf3, 0xe2, 0x9b, 0xd2, 0xa3, 0x81, + 0xbc, 0x02, 0xd3, 0x14, 0x13, 0x4b, 0xd4, 0x5d, 0x3c, 0xd2, 0xd6, 0xe0, 0xd2, 0x50, 0x1a, 0x82, + 0x6c, 0x18, 0x97, 0x66, 0x2d, 0x12, 0x98, 0x4f, 0x3b, 0xfd, 0xc7, 0x28, 0xa2, 0x7d, 0x3a, 0x70, + 0x2a, 0xa1, 0x03, 0x6b, 0x30, 0x4b, 0x9a, 0x9e, 0x11, 0x74, 0x76, 0x8c, 0xb9, 0x66, 0x49, 0xd3, + 0x13, 0x5e, 0xb4, 0x02, 0xe4, 0xd2, 0xbd, 0xf6, 0x06, 0x71, 0xa1, 0x4a, 0xed, 0x1d, 0xcb, 0x7a, + 0x7d, 0x4a, 0xd7, 0x00, 0x44, 0x5f, 0x45, 0x95, 0xc9, 0xc2, 0xe4, 0xfa, 0xcc, 0x96, 0x5a, 0x4c, + 0xb4, 0x6b, 0x45, 0xe1, 0x47, 0xef, 0x41, 0x6b, 0x2a, 0x28, 0x49, 0x1a, 0x82, 0xe3, 0xcf, 0x12, + 0x37, 0xb2, 0xfa, 0xb3, 0xbb, 0x67, 0xb8, 0x83, 0x1d, 0xbb, 0x1e, 0x1e, 0x97, 0xeb, 0x36, 0x64, + 0x0e, 0x90, 0x6b, 0x20, 0xcb, 0x0a, 0xe2, 0x77, 0x45, 0x79, 0xfe, 0x64, 0x63, 0x39, 0xce, 0xe9, + 0x1d, 0xcb, 0x0a, 0x30, 0xa5, 0xfb, 0x61, 0xe0, 0x10, 0x5b, 0x3f, 0x73, 0x80, 0x5c, 0x36, 0xc3, + 0x32, 0xe0, 0x21, 0xf7, 0xca, 0x33, 0x60, 0x4a, 0x8f, 0x47, 0x9a, 0x06, 0x85, 0x61, 0xfc, 0xc4, + 0x21, 0xbe, 0x92, 0x40, 0xae, 0x52, 0x7b, 0x0f, 0xb3, 0xd7, 0x51, 0x80, 0xde, 0x24, 0x7d, 0xed, + 0x3f, 0xa0, 0x0e, 0x32, 0x10, 0x04, 0x7f, 0x94, 0xe2, 0x72, 0xa3, 0xa1, 0x1f, 0xe0, 0x0a, 0x09, + 0x71, 0xc0, 0x9f, 0xe0, 0x9d, 0xa8, 0x93, 0x3e, 0xde, 0xe3, 0x5d, 0x86, 0x6c, 0xdc, 0x89, 0x1b, + 0x4c, 0x3b, 0x38, 0xd7, 0xb9, 0xad, 0xfc, 0x40, 0x52, 0x54, 0x76, 0x77, 0x62, 0x3f, 0xb7, 0x1e, + 0x35, 0xb0, 0x3e, 0x83, 0xba, 0x03, 0xed, 0x7f, 0xb0, 0x36, 0x82, 0x97, 0xe0, 0xff, 0x80, 0x5f, + 0x42, 0xd4, 0x43, 0x8a, 0xd3, 0xed, 0xd7, 0x51, 0x80, 0xe9, 0xf5, 0x96, 0x59, 0xe7, 0xa2, 0x74, + 0xac, 0x33, 0x28, 0xc0, 0x22, 0xe8, 0x37, 0x70, 0x1c, 0x6a, 0xbd, 0x33, 0xd4, 0x2e, 0xc3, 0xfa, + 0x38, 0x97, 0x82, 0x9e, 0xcd, 0x05, 0x60, 0x17, 0xb9, 0x4e, 0x8d, 0xc9, 0xee, 0x5e, 0xa4, 0x13, + 0x8e, 0x4f, 0x4e, 0x9a, 0x54, 0x54, 0xf3, 0x29, 0x8e, 0x3a, 0x54, 0xb6, 0x7e, 0xca, 0xc2, 0x64, + 0x95, 0xda, 0xf2, 0x1d, 0x98, 0xe9, 0x6d, 0x49, 0x07, 0x6f, 0xa5, 0xbf, 0xa3, 0x55, 0xdf, 0x1a, + 0x03, 0x10, 0xed, 0xe2, 0xe7, 0x30, 0x97, 0x68, 0x77, 0xb5, 0xd4, 0xa5, 0x7d, 0x18, 0xf5, 0xf2, + 0x78, 0x8c, 0xf0, 0x70, 0x07, 0x66, 0x7a, 0x7b, 0xb2, 0x54, 0xea, 0x3d, 0x80, 0x74, 0xea, 0x29, + 0x8d, 0x92, 0x7c, 0x0f, 0x16, 0x06, 0x9a, 0xa4, 0xff, 0xa6, 0x2f, 0xee, 0x47, 0xa9, 0x57, 0x8e, + 0x82, 0x12, 0x7e, 0x5a, 0xb0, 0x32, 0xe4, 0xe1, 0x4a, 0x0d, 0x43, 0x3a, 0x56, 0xdd, 0x3a, 0x3a, + 0x56, 0x78, 0xf6, 0x61, 0x29, 0xed, 0x19, 0x1a, 0x12, 0xa1, 0x01, 0xa0, 0x5a, 0x3a, 0x22, 0x50, + 0x38, 0xfc, 0x0c, 0x66, 0xfb, 0x9f, 0x97, 0x4b, 0x69, 0x3b, 0xf4, 0x41, 0xd4, 0xb7, 0xc7, 0x42, + 0xc4, 0xf6, 0x4d, 0x38, 0x97, 0xfe, 0x32, 0xa4, 0xee, 0x91, 0x0a, 0x55, 0x37, 0x8f, 0x0c, 0x15, + 0x6e, 0x4d, 0x98, 0x4f, 0x6a, 0xf9, 0x5a, 0xda, 0x2e, 0x09, 0x90, 0xfa, 0xce, 0x11, 0x40, 0xc2, + 0xc9, 0x97, 0xa0, 0x0c, 0xd5, 0xe3, 0x21, 0xf9, 0x96, 0x8e, 0x56, 0xaf, 0xbe, 0x0a, 0x5a, 0xf8, + 0xff, 0x56, 0x82, 0x8b, 0xa3, 0x15, 0x35, 0x35, 0x72, 0x23, 0x97, 0xa8, 0xef, 0xbd, 0xf2, 0x92, + 0xde, 0xdc, 0x4d, 0x53, 0xd0, 0xd4, 0xdc, 0x4d, 0x01, 0xa6, 0xe7, 0xee, 0x08, 0xa9, 0x94, 0xef, + 0x42, 0xb6, 0xef, 0x17, 0x6c, 0x21, 0xbd, 0xe0, 0xba, 0x08, 0x75, 0x7d, 0x1c, 0x42, 0xec, 0xfd, + 0x83, 0x04, 0xf9, 0x71, 0xdf, 0x8f, 0xb6, 0x87, 0xc7, 0x6a, 0xe8, 0x22, 0xf5, 0xfd, 0x63, 0x2c, + 0xea, 0xb0, 0x2a, 0xdf, 0x78, 0xfa, 0x22, 0x27, 0x3d, 0x7b, 0x91, 0x93, 0xfe, 0x7e, 0x91, 0x93, + 0xbe, 0x7b, 0x99, 0x9b, 0x78, 0xf6, 0x32, 0x37, 0xf1, 0xe7, 0xcb, 0xdc, 0xc4, 0xdd, 0xad, 0x9e, + 0x9f, 0x06, 0xfb, 0xdc, 0xc1, 0xc6, 0x0d, 0x54, 0xa3, 0xa5, 0xf8, 0xdb, 0xda, 0xc1, 0xe6, 0xd5, + 0x52, 0xab, 0xe7, 0x7b, 0x1d, 0xfb, 0xa9, 0x50, 0x9b, 0xe6, 0x5f, 0xcb, 0xb6, 0xff, 0x0d, 0x00, + 0x00, 0xff, 0xff, 0x10, 0x8e, 0x60, 0x6c, 0xcf, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1425,6 +1525,7 @@ type MsgClient interface { DeleteValidator(ctx context.Context, in *MsgDeleteValidator, opts ...grpc.CallOption) (*MsgDeleteValidatorResponse, error) RestoreInterchainAccount(ctx context.Context, in *MsgRestoreInterchainAccount, opts ...grpc.CallOption) (*MsgRestoreInterchainAccountResponse, error) UpdateValidatorSharesExchRate(ctx context.Context, in *MsgUpdateValidatorSharesExchRate, opts ...grpc.CallOption) (*MsgUpdateValidatorSharesExchRateResponse, error) + CalibrateDelegation(ctx context.Context, in *MsgCalibrateDelegation, opts ...grpc.CallOption) (*MsgCalibrateDelegationResponse, error) ClearBalance(ctx context.Context, in *MsgClearBalance, opts ...grpc.CallOption) (*MsgClearBalanceResponse, error) UpdateInnerRedemptionRateBounds(ctx context.Context, in *MsgUpdateInnerRedemptionRateBounds, opts ...grpc.CallOption) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) } @@ -1536,6 +1637,15 @@ func (c *msgClient) UpdateValidatorSharesExchRate(ctx context.Context, in *MsgUp return out, nil } +func (c *msgClient) CalibrateDelegation(ctx context.Context, in *MsgCalibrateDelegation, opts ...grpc.CallOption) (*MsgCalibrateDelegationResponse, error) { + out := new(MsgCalibrateDelegationResponse) + err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/CalibrateDelegation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) ClearBalance(ctx context.Context, in *MsgClearBalance, opts ...grpc.CallOption) (*MsgClearBalanceResponse, error) { out := new(MsgClearBalanceResponse) err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/ClearBalance", in, out, opts...) @@ -1567,6 +1677,7 @@ type MsgServer interface { DeleteValidator(context.Context, *MsgDeleteValidator) (*MsgDeleteValidatorResponse, error) RestoreInterchainAccount(context.Context, *MsgRestoreInterchainAccount) (*MsgRestoreInterchainAccountResponse, error) UpdateValidatorSharesExchRate(context.Context, *MsgUpdateValidatorSharesExchRate) (*MsgUpdateValidatorSharesExchRateResponse, error) + CalibrateDelegation(context.Context, *MsgCalibrateDelegation) (*MsgCalibrateDelegationResponse, error) ClearBalance(context.Context, *MsgClearBalance) (*MsgClearBalanceResponse, error) UpdateInnerRedemptionRateBounds(context.Context, *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) } @@ -1608,6 +1719,9 @@ func (*UnimplementedMsgServer) RestoreInterchainAccount(ctx context.Context, req func (*UnimplementedMsgServer) UpdateValidatorSharesExchRate(ctx context.Context, req *MsgUpdateValidatorSharesExchRate) (*MsgUpdateValidatorSharesExchRateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateValidatorSharesExchRate not implemented") } +func (*UnimplementedMsgServer) CalibrateDelegation(ctx context.Context, req *MsgCalibrateDelegation) (*MsgCalibrateDelegationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CalibrateDelegation not implemented") +} func (*UnimplementedMsgServer) ClearBalance(ctx context.Context, req *MsgClearBalance) (*MsgClearBalanceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearBalance not implemented") } @@ -1817,6 +1931,24 @@ func _Msg_UpdateValidatorSharesExchRate_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _Msg_CalibrateDelegation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCalibrateDelegation) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CalibrateDelegation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.stakeibc.Msg/CalibrateDelegation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CalibrateDelegation(ctx, req.(*MsgCalibrateDelegation)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_ClearBalance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgClearBalance) if err := dec(in); err != nil { @@ -1901,6 +2033,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateValidatorSharesExchRate", Handler: _Msg_UpdateValidatorSharesExchRate_Handler, }, + { + MethodName: "CalibrateDelegation", + Handler: _Msg_CalibrateDelegation_Handler, + }, { MethodName: "ClearBalance", Handler: _Msg_ClearBalance_Handler, @@ -2903,6 +3039,73 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) MarshalToSizedBuffer(dAtA []b return len(dAtA) - i, nil } +func (m *MsgCalibrateDelegation) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCalibrateDelegation) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCalibrateDelegation) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Valoper) > 0 { + i -= len(m.Valoper) + copy(dAtA[i:], m.Valoper) + i = encodeVarintTx(dAtA, i, uint64(len(m.Valoper))) + i-- + dAtA[i] = 0x1a + } + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCalibrateDelegationResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgCalibrateDelegationResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCalibrateDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -3335,6 +3538,36 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) Size() (n int) { return n } +func (m *MsgCalibrateDelegation) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Valoper) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCalibrateDelegationResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -6234,6 +6467,202 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) Unmarshal(dAtA []byte) error } return nil } +func (m *MsgCalibrateDelegation) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCalibrateDelegation: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCalibrateDelegation: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", 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.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Valoper", 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.Valoper = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgCalibrateDelegationResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgCalibrateDelegationResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCalibrateDelegationResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From 40a38530b3b98bef7f667fe2e52c3ed2f09cdf51 Mon Sep 17 00:00:00 2001 From: riley-stride <104941670+riley-stride@users.noreply.github.com> Date: Mon, 18 Sep 2023 02:49:29 -0400 Subject: [PATCH 36/44] Undel host function (#935) Co-authored-by: sampocs --- proto/stride/stakeibc/callbacks.proto | 8 + proto/stride/stakeibc/tx.proto | 10 + x/stakeibc/client/cli/tx.go | 1 + x/stakeibc/client/cli/tx_undelegate_host.go | 49 ++ x/stakeibc/handler.go | 3 + x/stakeibc/keeper/icacallbacks.go | 16 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 83 +++ .../keeper/icacallbacks_undelegate_test.go | 228 +++++++ x/stakeibc/keeper/msg_undelegate_host.go | 53 ++ x/stakeibc/keeper/msg_undelegate_host_test.go | 21 + x/stakeibc/keeper/unbonding_records.go | 2 +- x/stakeibc/keeper/undelegate_host.go | 137 +++++ x/stakeibc/keeper/undelegate_host_test.go | 362 +++++++++++ x/stakeibc/types/callbacks.pb.go | 349 +++++++++-- x/stakeibc/types/codec.go | 2 + x/stakeibc/types/errors.go | 3 +- x/stakeibc/types/message_undelegate_host.go | 56 ++ x/stakeibc/types/tx.pb.go | 562 +++++++++++++++--- 18 files changed, 1782 insertions(+), 163 deletions(-) create mode 100644 x/stakeibc/client/cli/tx_undelegate_host.go create mode 100644 x/stakeibc/keeper/msg_undelegate_host.go create mode 100644 x/stakeibc/keeper/msg_undelegate_host_test.go create mode 100644 x/stakeibc/keeper/undelegate_host.go create mode 100644 x/stakeibc/keeper/undelegate_host_test.go create mode 100644 x/stakeibc/types/message_undelegate_host.go diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 11738336df..5656f6b1de 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -42,6 +42,14 @@ message UndelegateCallback { repeated uint64 epoch_unbonding_record_ids = 3; } +message UndelegateHostCallback { + string amt = 1 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + repeated SplitDelegation split_delegations = 2; +} + message RedemptionCallback { string host_zone_id = 1; repeated uint64 epoch_unbonding_record_ids = 2; diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index 0244edf150..6896faf553 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -30,6 +30,7 @@ service Msg { rpc CalibrateDelegation(MsgCalibrateDelegation) returns (MsgCalibrateDelegationResponse); rpc ClearBalance(MsgClearBalance) returns (MsgClearBalanceResponse); + rpc UndelegateHost(MsgUndelegateHost) returns (MsgUndelegateHostResponse); rpc UpdateInnerRedemptionRateBounds(MsgUpdateInnerRedemptionRateBounds) returns (MsgUpdateInnerRedemptionRateBoundsResponse); } @@ -172,6 +173,15 @@ message MsgUpdateValidatorSharesExchRate { string valoper = 3; } message MsgUpdateValidatorSharesExchRateResponse {} +message MsgUndelegateHost { + string creator = 1; + string amount = 2 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false + ]; + +} +message MsgUndelegateHostResponse {} message MsgCalibrateDelegation { string creator = 1; diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index 3d29b21bad..eb78bb5340 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -37,6 +37,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand(CmdUpdateValidatorSharesExchRate()) cmd.AddCommand(CmdCalibrateDelegation()) cmd.AddCommand(CmdClearBalance()) + cmd.AddCommand(CmdUndelegateHost()) cmd.AddCommand(CmdUpdateInnerRedemptionRateBounds()) return cmd diff --git a/x/stakeibc/client/cli/tx_undelegate_host.go b/x/stakeibc/client/cli/tx_undelegate_host.go new file mode 100644 index 0000000000..f928937d35 --- /dev/null +++ b/x/stakeibc/client/cli/tx_undelegate_host.go @@ -0,0 +1,49 @@ +package cli + +import ( + "strconv" + + errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +var _ = strconv.Itoa(0) + +func CmdUndelegateHost() *cobra.Command { + cmd := &cobra.Command{ + Use: "undelegate-host [amount]", + Short: "Broadcast message undelegate-host", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argAmount, found := sdk.NewIntFromString(args[0]) + if !found { + return errorsmod.Wrap(sdkerrors.ErrInvalidType, "can not convert string to int") + } + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUndelegateHost( + clientCtx.GetFromAddress().String(), + argAmount, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index 5bea7e9488..809d604611 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -58,6 +58,9 @@ func NewMessageHandler(k keeper.Keeper) sdk.Handler { case *types.MsgUpdateValidatorSharesExchRate: res, err := msgServer.UpdateValidatorSharesExchRate(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgUndelegateHost: + res, err := msgServer.UndelegateHost(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) case *types.MsgCalibrateDelegation: res, err := msgServer.CalibrateDelegation(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index a338245cc5..a611929806 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -5,13 +5,14 @@ import ( ) const ( - ICACallbackID_Delegate = "delegate" - ICACallbackID_Claim = "claim" - ICACallbackID_Undelegate = "undelegate" - ICACallbackID_Reinvest = "reinvest" - ICACallbackID_Redemption = "redemption" - ICACallbackID_Rebalance = "rebalance" - ICACallbackID_Detokenize = "detokenize" + ICACallbackID_Delegate = "delegate" + ICACallbackID_Claim = "claim" + ICACallbackID_Undelegate = "undelegate" + ICACallbackID_UndelegateHost = "undelegatehost" + ICACallbackID_Reinvest = "reinvest" + ICACallbackID_Redemption = "redemption" + ICACallbackID_Rebalance = "rebalance" + ICACallbackID_Detokenize = "detokenize" ) func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { @@ -19,6 +20,7 @@ func (k Keeper) Callbacks() icacallbackstypes.ModuleCallbacks { {CallbackId: ICACallbackID_Delegate, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.DelegateCallback)}, {CallbackId: ICACallbackID_Claim, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.ClaimCallback)}, {CallbackId: ICACallbackID_Undelegate, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.UndelegateCallback)}, + {CallbackId: ICACallbackID_UndelegateHost, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.UndelegateHostCallback)}, {CallbackId: ICACallbackID_Reinvest, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.ReinvestCallback)}, {CallbackId: ICACallbackID_Redemption, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.RedemptionCallback)}, {CallbackId: ICACallbackID_Rebalance, CallbackFunc: icacallbackstypes.ICACallbackFunction(k.RebalanceCallback)}, diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index 76e05938b1..b452293134 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -233,3 +233,86 @@ func (k Keeper) BurnTokens(ctx sdk.Context, hostZone types.HostZone, stTokenBurn k.Logger(ctx).Info(fmt.Sprintf("Total supply %s", k.bankKeeper.GetSupply(ctx, stCoinDenom))) return nil } + +// ICA Callback after undelegating host +// +// If successful: +// * sets SetUndelegateHostPrevented +// If timeout: +// * Does nothing +// If failure: +// * Does nothing +func (k Keeper) UndelegateHostCallback(ctx sdk.Context, packet channeltypes.Packet, ackResponse *icacallbackstypes.AcknowledgementResponse, args []byte) error { + // Fetch callback args + var undelegateHostCallback types.UndelegateHostCallback + if err := proto.Unmarshal(args, &undelegateHostCallback); err != nil { + return errorsmod.Wrapf(types.ErrUnmarshalFailure, fmt.Sprintf("Unable to unmarshal undelegate host callback args: %s", err.Error())) + } + k.Logger(ctx).Info("Starting undelegate host callback for amount %v%s", undelegateHostCallback.Amt) + + // Regardless of failure/success/timeout, indicate that this ICA has completed + hostZone, found := k.GetHostZone(ctx, EvmosHostZoneChainId) + if !found { + return errorsmod.Wrapf(sdkerrors.ErrKeyNotFound, "Host zone not found: %s", EvmosHostZoneChainId) + } + for _, splitDelegation := range undelegateHostCallback.SplitDelegations { + if err := k.DecrementValidatorDelegationChangesInProgress(&hostZone, splitDelegation.Validator); err != nil { + // TODO: Revert after v14 upgrade + if errors.Is(err, types.ErrInvalidValidatorDelegationUpdates) { + k.Logger(ctx).Error(utils.LogICACallbackWithHostZone(EvmosHostZoneChainId, ICACallbackID_Undelegate, + "Invariant failed - delegation changes in progress fell below 0 for %s", splitDelegation.Validator)) + continue + } + return err + } + } + k.SetHostZone(ctx, hostZone) + + // Check for timeout (ack nil) + if ackResponse.Status == icacallbackstypes.AckResponseStatus_TIMEOUT { + k.Logger(ctx).Error("UndelegateHostCallback Timeout:", icacallbackstypes.AckResponseStatus_TIMEOUT, packet) + return nil + } + + // Check for a failed transaction (ack error) + if ackResponse.Status == icacallbackstypes.AckResponseStatus_FAILURE { + k.Logger(ctx).Error("UndelegateHostCallback failure (ack error):", icacallbackstypes.AckResponseStatus_FAILURE, packet) + return nil + } + + // Get the host zone + evmosHost, found := k.GetHostZone(ctx, EvmosHostZoneChainId) + if !found { + return errorsmod.Wrapf(types.ErrHostZoneNotFound, "host zone %s not found", EvmosHostZoneChainId) + } + + k.Logger(ctx).Info("UndelegateHostCallback success:", icacallbackstypes.AckResponseStatus_SUCCESS, packet) + + // Update delegation balances + err := k.UpdateDelegationBalancesHost(ctx, evmosHost, undelegateHostCallback) + if err != nil { + k.Logger(ctx).Error(fmt.Sprintf("UndelegateCallback | %s", err.Error())) + return err + } + + k.Logger(ctx).Info("UndelegateHostCallback: SetUndelegateHostPrevented") + if err := k.SetUndelegateHostPrevented(ctx); err != nil { + k.Logger(ctx).Error(fmt.Sprintf("UndelegateHostCallback failed due to SetUndelegateHostPrevented | %s", err.Error())) + return err + } + + return nil +} + +// Decrement the delegation field on host and each validator's delegations after a successful unbonding ICA +func (k Keeper) UpdateDelegationBalancesHost(ctx sdk.Context, hostZone types.HostZone, undelegateHostCallback types.UndelegateHostCallback) error { + // Undelegate from each validator and update Evmos staked balance, if successful + for _, undelegation := range undelegateHostCallback.SplitDelegations { + err := k.AddDelegationToValidator(ctx, &hostZone, undelegation.Validator, undelegation.Amount.Neg(), ICACallbackID_UndelegateHost) + if err != nil { + return err + } + } + k.SetHostZone(ctx, hostZone) + return nil +} diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index fac8def178..f281270a7c 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -12,6 +12,7 @@ import ( icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" "github.com/Stride-Labs/stride/v14/x/stakeibc/types" ) @@ -25,6 +26,16 @@ type UndelegateCallbackState struct { zoneAccountBalance sdkmath.Int } +type UndelegateCallbackHostState struct { + totalDelegations sdkmath.Int + val1Bal sdkmath.Int + val2Bal sdkmath.Int + epochNumber uint64 + completionTime time.Time + callbackArgs types.UndelegateHostCallback + zoneAccountBalance sdkmath.Int +} + type UndelegateCallbackArgs struct { packet channeltypes.Packet ackResponse *icacallbacktypes.AcknowledgementResponse @@ -39,6 +50,14 @@ type UndelegateCallbackTestCase struct { balanceToUnstake sdkmath.Int } +type UndelegateCallbackHostTestCase struct { + initialState UndelegateCallbackHostState + validArgs UndelegateCallbackArgs + val1UndelegationAmount sdkmath.Int + val2UndelegationAmount sdkmath.Int + balanceToUnstake sdkmath.Int +} + func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { // Set up host zone and validator state totalDelegations := sdkmath.NewInt(1_000_000) @@ -142,6 +161,108 @@ func (s *KeeperTestSuite) SetupUndelegateCallback() UndelegateCallbackTestCase { } } +func (s *KeeperTestSuite) SetupUndelegateHostCallback() UndelegateCallbackHostTestCase { + // Set up host zone and validator state + totalDelegations := sdkmath.NewInt(1_000_000) + val1Bal := sdkmath.NewInt(400_000) + val2Bal := totalDelegations.Sub(val1Bal) + balanceToUnstake := sdkmath.NewInt(300_000) + val1UndelegationAmount := sdkmath.NewInt(120_000) + val2UndelegationAmount := balanceToUnstake.Sub(val1UndelegationAmount) + epochNumber := uint64(1) + val1 := types.Validator{ + Name: "val1", + Address: "val1_address", + Delegation: val1Bal, + DelegationChangesInProgress: 1, + } + val2 := types.Validator{ + Name: "val2", + Address: "val2_address", + Delegation: val2Bal, + DelegationChangesInProgress: 1, + } + depositAddress := types.NewHostZoneDepositAddress(stakeibckeeper.EvmosHostZoneChainId) + zoneAccountBalance := balanceToUnstake.Add(sdkmath.NewInt(10)) + zoneAccount := Account{ + acc: depositAddress, + stAtomBalance: sdk.NewCoin(StAtom, zoneAccountBalance), // Add a few extra tokens to make the test more robust + } + hostZone := types.HostZone{ + ChainId: stakeibckeeper.EvmosHostZoneChainId, + HostDenom: Atom, + IbcDenom: IbcAtom, + RedemptionRate: sdk.NewDec(1.0), + Validators: []*types.Validator{&val1, &val2}, + TotalDelegations: totalDelegations, + DepositAddress: depositAddress.String(), + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Set up EpochUnbondingRecord, HostZoneUnbonding and token state + hostZoneUnbonding := recordtypes.HostZoneUnbonding{ + HostZoneId: stakeibckeeper.EvmosHostZoneChainId, + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + StTokenAmount: balanceToUnstake, + } + epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ + EpochNumber: epochNumber, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{&hostZoneUnbonding}, + } + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + + // mint stTokens to the zone account, to be burned + s.FundAccount(zoneAccount.acc, zoneAccount.stAtomBalance) + + // Mock ack response + packet := channeltypes.Packet{} + completionTime := time.Now() + msgsUndelegateResponse := &stakingtypes.MsgUndelegateResponse{CompletionTime: completionTime} + msgsUndelegateResponseBz, err := proto.Marshal(msgsUndelegateResponse) + s.Require().NoError(err, "no error expected when marshalling undelegate response") + + ackResponse := icacallbacktypes.AcknowledgementResponse{ + Status: icacallbacktypes.AckResponseStatus_SUCCESS, + MsgResponses: [][]byte{msgsUndelegateResponseBz}, + } + + // Mock callback args + val1SplitDelegation := types.SplitDelegation{ + Validator: val1.Address, + Amount: val1UndelegationAmount, + } + val2SplitDelegation := types.SplitDelegation{ + Validator: val2.Address, + Amount: val2UndelegationAmount, + } + callbackArgs := types.UndelegateHostCallback{ + Amt: balanceToUnstake, + SplitDelegations: []*types.SplitDelegation{&val1SplitDelegation, &val2SplitDelegation}, + } + callbackArgsBz, err := proto.Marshal(&callbackArgs) + s.Require().NoError(err, "callback args unmarshalled") + + return UndelegateCallbackHostTestCase{ + val1UndelegationAmount: val1UndelegationAmount, + val2UndelegationAmount: val2UndelegationAmount, + balanceToUnstake: balanceToUnstake, + initialState: UndelegateCallbackHostState{ + callbackArgs: callbackArgs, + totalDelegations: totalDelegations, + val1Bal: val1Bal, + val2Bal: val2Bal, + epochNumber: epochNumber, + completionTime: completionTime, + zoneAccountBalance: zoneAccountBalance, + }, + validArgs: UndelegateCallbackArgs{ + packet: packet, + ackResponse: &ackResponse, + args: callbackArgsBz, + }, + } +} + func (s *KeeperTestSuite) TestUndelegateCallback_Successful() { tc := s.SetupUndelegateCallback() initialState := tc.initialState @@ -457,3 +578,110 @@ func (s *KeeperTestSuite) TestBurnTokens_CouldNotSendCoinsFromAccountToModule() err := s.App.StakeibcKeeper.BurnTokens(s.Ctx, hostZone, sdkmath.NewInt(123456)) s.Require().EqualError(err, "could not send coins from account stride1755g4dkhpw73gz9h9nwhlcefc6sdf8kcmvcwrk4rxfrz8xpxxjms7savm8 to module stakeibc. err: spendable balance is smaller than 123456stcoinDNE: insufficient funds") } + +func (s *KeeperTestSuite) TestUndelegateCallbackHost_Successful() { + tc := s.SetupUndelegateHostCallback() + initialState := tc.initialState + validArgs := tc.validArgs + + // Ensure IsUndelegateHostPrevented(ctx) is not yet flipped + s.Require().False(s.App.StakeibcKeeper.IsUndelegateHostPrevented(s.Ctx)) + + // Callback + err := s.App.StakeibcKeeper.UndelegateHostCallback(s.Ctx, validArgs.packet, validArgs.ackResponse, validArgs.args) + s.Require().NoError(err, "undelegate host callback succeeds") + + // Check that total delegation has decreased on the host zone + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, stakeibckeeper.EvmosHostZoneChainId) + s.Require().True(found) + s.Require().Equal(hostZone.TotalDelegations, initialState.totalDelegations.Sub(tc.balanceToUnstake), "total delegation has decreased on the host zone") + + // Check that Delegations on validators have decreased + s.Require().True(len(hostZone.Validators) == 2, "Expected 2 validators") + val1 := hostZone.Validators[0] + val2 := hostZone.Validators[1] + s.Require().Equal(initialState.val1Bal.Sub(tc.val1UndelegationAmount), val1.Delegation, "val1 delegation has decreased") + s.Require().Equal(initialState.val2Bal.Sub(tc.val2UndelegationAmount), val2.Delegation, "val2 delegation has decreased") + + // Check that the number of delegation changes in progress was reset to 0 + s.Require().Equal(0, int(val1.DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") + + // ensure UndelegateHostPrevented has been flipped to true + s.Require().True(s.App.StakeibcKeeper.IsUndelegateHostPrevented(s.Ctx)) +} + +func (s *KeeperTestSuite) checkStateIfUndelegateCallbackHostFailed(tc UndelegateCallbackHostTestCase) { + initialState := tc.initialState + + // Check that total delegation has NOT decreased on the host zone + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, stakeibckeeper.EvmosHostZoneChainId) + s.Require().True(found, "host zone found") + s.Require().Equal(initialState.totalDelegations, hostZone.TotalDelegations, "total delegation has NOT decreased on the host zone") + + // Check that Delegations on validators have NOT decreased + s.Require().True(len(hostZone.Validators) == 2, "Expected 2 validators") + val1 := hostZone.Validators[0] + val2 := hostZone.Validators[1] + s.Require().Equal(initialState.val1Bal, val1.Delegation, "val1 delegation has NOT decreased") + s.Require().Equal(initialState.val2Bal, val2.Delegation, "val2 delegation has NOT decreased") + + // Check that the number of delegation changes in progress was reset + s.Require().Equal(0, int(val1.DelegationChangesInProgress), "val1 delegation changes in progress") + s.Require().Equal(0, int(val2.DelegationChangesInProgress), "val2 delegation changes in progress") + + // Check that the host zone unbonding records have not been updated + epochUnbondingRecord, found := s.App.RecordsKeeper.GetEpochUnbondingRecord(s.Ctx, initialState.epochNumber) + s.Require().True(found, "epoch unbonding record found") + s.Require().Equal(len(epochUnbondingRecord.HostZoneUnbondings), 1, "1 host zone unbonding found") + hzu := epochUnbondingRecord.HostZoneUnbondings[0] + s.Require().Equal(int64(hzu.UnbondingTime), int64(0), "completion time is NOT set on the hzu") + s.Require().Equal(hzu.Status, recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, "hzu status is set to UNBONDING_QUEUE") + zoneAccount, err := sdk.AccAddressFromBech32(hostZone.DepositAddress) + s.Require().NoError(err, "zone account address is valid") + s.Require().Equal(initialState.zoneAccountBalance, s.App.BankKeeper.GetBalance(s.Ctx, zoneAccount, StAtom).Amount, "tokens are NOT burned") +} + +func (s *KeeperTestSuite) TestUndelegateCallbackHost_UndelegateCallbackTimeout() { + tc := s.SetupUndelegateHostCallback() + + // Update the ack response to indicate a timeout + invalidArgs := tc.validArgs + invalidArgs.ackResponse.Status = icacallbacktypes.AckResponseStatus_TIMEOUT + + err := s.App.StakeibcKeeper.UndelegateHostCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) + s.Require().NoError(err, "undelegate callback succeeds on timeout") + s.checkStateIfUndelegateCallbackHostFailed(tc) +} + +func (s *KeeperTestSuite) TestUndelegateCallbackHost_UndelegateCallbackErrorOnHost() { + tc := s.SetupUndelegateHostCallback() + + // an error ack means the tx failed on the host + invalidArgs := tc.validArgs + invalidArgs.ackResponse.Status = icacallbacktypes.AckResponseStatus_FAILURE + + err := s.App.StakeibcKeeper.UndelegateHostCallback(s.Ctx, invalidArgs.packet, invalidArgs.ackResponse, invalidArgs.args) + s.Require().NoError(err, "undelegate callback succeeds with error on host") + s.checkStateIfUndelegateCallbackHostFailed(tc) +} + +func (s *KeeperTestSuite) TestUndelegateCallbackHost_WrongCallbackArgs() { + tc := s.SetupUndelegateHostCallback() + + // random args should cause the callback to fail + invalidCallbackArgs := []byte("random bytes") + + err := s.App.StakeibcKeeper.UndelegateHostCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, invalidCallbackArgs) + s.Require().EqualError(err, "Unable to unmarshal undelegate host callback args: unexpected EOF: unable to unmarshal data structure") +} + +func (s *KeeperTestSuite) TestUndelegateCallbackHost_HostNotFound() { + tc := s.SetupUndelegateHostCallback() + + // remove the host zone from the store to trigger a host not found error + s.App.StakeibcKeeper.RemoveHostZone(s.Ctx, stakeibckeeper.EvmosHostZoneChainId) + + err := s.App.StakeibcKeeper.UndelegateHostCallback(s.Ctx, tc.validArgs.packet, tc.validArgs.ackResponse, tc.validArgs.args) + s.Require().EqualError(err, "Host zone not found: evmos_9001-2: key not found") +} diff --git a/x/stakeibc/keeper/msg_undelegate_host.go b/x/stakeibc/keeper/msg_undelegate_host.go new file mode 100644 index 0000000000..426671751e --- /dev/null +++ b/x/stakeibc/keeper/msg_undelegate_host.go @@ -0,0 +1,53 @@ +package keeper + +import ( + "context" + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +const isUndelegateHostPreventedKey = "is-undelegate-host-prevented" + +func (k msgServer) UndelegateHost(goCtx context.Context, msg *types.MsgUndelegateHost) (*types.MsgUndelegateHostResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // undelegateHost is callable only if it has not yet been called and succeeded + if k.IsUndelegateHostPrevented(ctx) { + return nil, errorsmod.Wrapf(types.ErrUndelegateHostNotCallable, "") + } + + // Get host zone unbonding message by summing up the unbonding records + if err := k.UndelegateHostEvmos(ctx, msg.Amount); err != nil { + return nil, fmt.Errorf("Error initiating host zone unbondings for UndelegateHostEvmos %s", err.Error()) + } + + // log: issuing an undelegation to Evmos + k.Logger(ctx).Info("Issuing an undelegation to Evmos") + + return &types.MsgUndelegateHostResponse{}, nil +} + +func (k Keeper) SetUndelegateHostPrevented(ctx sdk.Context) error { + + store := ctx.KVStore(k.storeKey) + + // set the key to 1 if it's not set + if !k.IsUndelegateHostPrevented(ctx) { + store.Set([]byte(isUndelegateHostPreventedKey), []byte{1}) + } + return nil +} + +func (k Keeper) IsUndelegateHostPrevented(ctx sdk.Context) bool { + store := ctx.KVStore(k.storeKey) + if !store.Has([]byte(isUndelegateHostPreventedKey)) { + return false + } + + value := store.Get([]byte(isUndelegateHostPreventedKey)) + return len(value) == 1 && value[0] == 1 +} diff --git a/x/stakeibc/keeper/msg_undelegate_host_test.go b/x/stakeibc/keeper/msg_undelegate_host_test.go new file mode 100644 index 0000000000..3642c96f64 --- /dev/null +++ b/x/stakeibc/keeper/msg_undelegate_host_test.go @@ -0,0 +1,21 @@ +package keeper_test + +import ( + _ "github.com/stretchr/testify/suite" +) + +func (s *KeeperTestSuite) TestEnableStrictUnbondingCap_CapNotSet() { + + // make sure StrictUnbondingCap is not set + s.Require().False(s.App.StakeibcKeeper.IsUndelegateHostPrevented(s.Ctx), "undelegate host prevented") +} + +func (s *KeeperTestSuite) TestEnableStrictUnbondingCap_CapSet() { + + // set undelegate Prevented + err := s.App.StakeibcKeeper.SetUndelegateHostPrevented(s.Ctx) + s.Require().NoError(err, "set undelegate host prevented") + + // make sure StrictUnbondingCap is set + s.Require().True(s.App.StakeibcKeeper.IsUndelegateHostPrevented(s.Ctx), "strict unbonding cap set to true") +} diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index 0b76d4f5d9..d96222af13 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -20,7 +20,7 @@ import ( ) const ( - UndelegateICABatchSize = 30 + UndelegateICABatchSize = 32 ) type ValidatorUnbondCapacity struct { diff --git a/x/stakeibc/keeper/undelegate_host.go b/x/stakeibc/keeper/undelegate_host.go new file mode 100644 index 0000000000..639624204f --- /dev/null +++ b/x/stakeibc/keeper/undelegate_host.go @@ -0,0 +1,137 @@ +package keeper + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/gogoproto/proto" + + "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +const ( + MaxNumTokensUnbondableStr = "2500000000000000000000000" // 2,500,000e18 + EvmosHostZoneChainId = "evmos_9001-2" +) + +// Submits undelegation ICA message for Evmos +// The total unbond amount is input, capped at MaxNumTokensUnbondable. +func (k Keeper) UndelegateHostEvmos(ctx sdk.Context, totalUnbondAmount math.Int) error { + + // if the total unbond amount is greater than the max, exit + maxNumTokensUnbondable, ok := math.NewIntFromString(MaxNumTokensUnbondableStr) + if !ok { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "unable to parse maxNumTokensUnbondable %s", maxNumTokensUnbondable) + } + if totalUnbondAmount.GT(maxNumTokensUnbondable) { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "total unbond amount %v is greater than maxNumTokensUnbondable %v", + totalUnbondAmount, maxNumTokensUnbondable) + } + + // Get the host zone + evmosHost, found := k.GetHostZone(ctx, EvmosHostZoneChainId) + if !found { + return errorsmod.Wrapf(types.ErrHostZoneNotFound, "host zone %s not found", EvmosHostZoneChainId) + } + + k.Logger(ctx).Info(utils.LogWithHostZone(evmosHost.ChainId, + "Total unbonded amount: %v%s", totalUnbondAmount, evmosHost.HostDenom)) + + // If there's nothing to unbond, return and move on to the next host zone + if totalUnbondAmount.IsZero() { + return nil + } + + k.Logger(ctx).Info("Preparing MsgUndelegates from the delegation account to each validator on Evmos") + + // Confirm the delegation account was registered + if evmosHost.DelegationIcaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no delegation account found for %s", evmosHost.ChainId) + } + + // Determine the ideal balanced delegation for each validator after the unbonding + // (as if we were to unbond and then rebalance) + // This will serve as the starting point for determining how much to unbond each validator + delegationAfterUnbonding := evmosHost.TotalDelegations.Sub(totalUnbondAmount) + balancedDelegationsAfterUnbonding, err := k.GetTargetValAmtsForHostZone(ctx, evmosHost, delegationAfterUnbonding) + if err != nil { + return errorsmod.Wrapf(err, "unable to get target val amounts for host zone %s", evmosHost.ChainId) + } + + // Determine the unbond capacity for each validator + // Each validator can only unbond up to the difference between their current delegation and their balanced delegation + // The validator's current delegation will be above their balanced delegation if they've received LSM Liquid Stakes + // (which is only rebalanced once per unbonding period) + validatorUnbondCapacity := k.GetValidatorUnbondCapacity(ctx, evmosHost.Validators, balancedDelegationsAfterUnbonding) + if len(validatorUnbondCapacity) == 0 { + return fmt.Errorf("there are no validators on %s with sufficient unbond capacity", evmosHost.ChainId) + } + + // Sort the unbonding capacity by priority + // Priority is determined by checking the how proportionally unbalanced each validator is + // Zero weight validators will come first in the list + prioritizedUnbondCapacity, err := SortUnbondingCapacityByPriority(validatorUnbondCapacity) + if err != nil { + return err + } + + // Get the undelegation ICA messages and split delegations for the callback + msgs, unbondings, err := k.GetUnbondingICAMessages(evmosHost, totalUnbondAmount, prioritizedUnbondCapacity) + if err != nil { + return err + } + + // Shouldn't be possible, but if all the validator's had a target unbonding of zero, do not send an ICA + if len(msgs) == 0 { + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "Target unbonded amount was 0 for each validator") + } + + // Send the messages in batches so the gas limit isn't exceedeed + for start := 0; start < len(msgs); start += UndelegateICABatchSize { + end := start + UndelegateICABatchSize + if end > len(msgs) { + end = len(msgs) + } + + msgsBatch := msgs[start:end] + unbondingsBatch := unbondings[start:end] + + // Store the callback data + undelegateHostCallback := types.UndelegateHostCallback{ + Amt: totalUnbondAmount, + SplitDelegations: unbondingsBatch, + } + callbackArgsBz, err := proto.Marshal(&undelegateHostCallback) + if err != nil { + return errorsmod.Wrap(err, "unable to marshal undelegate callback args") + } + + // Submit the undelegation ICA + if _, err := k.SubmitTxsDayEpoch( + ctx, + evmosHost.ConnectionId, + msgsBatch, + types.ICAAccountType_DELEGATION, + ICACallbackID_UndelegateHost, + callbackArgsBz, + ); err != nil { + return errorsmod.Wrapf(err, "unable to submit unbonding ICA for %s", evmosHost.ChainId) + } + + // flag the delegation change in progress on each validator + for _, unbonding := range unbondingsBatch { + if err := k.IncrementValidatorDelegationChangesInProgress(&evmosHost, unbonding.Validator); err != nil { + return err + } + } + k.SetHostZone(ctx, evmosHost) + } + + EmitUndelegationEvent(ctx, evmosHost, totalUnbondAmount) + + return nil +} diff --git a/x/stakeibc/keeper/undelegate_host_test.go b/x/stakeibc/keeper/undelegate_host_test.go new file mode 100644 index 0000000000..1867242de8 --- /dev/null +++ b/x/stakeibc/keeper/undelegate_host_test.go @@ -0,0 +1,362 @@ +package keeper_test + +import ( + "fmt" + + "cosmossdk.io/math" + sdkmath "cosmossdk.io/math" + "github.com/cosmos/gogoproto/proto" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + _ "github.com/stretchr/testify/suite" + + epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +const UndelegateHostZoneChainId = "evmos_9001-2" // the relevant zone for this test + +func (s *KeeperTestSuite) SetupTestUndelegateHost( + totalWeight int64, + totalStake sdkmath.Int, + unbondAmount sdkmath.Int, + validators []*types.Validator, +) UnbondingTestCase { + delegationAccountOwner := types.FormatICAAccountOwner(UndelegateHostZoneChainId, types.ICAAccountType_DELEGATION) + delegationChannelID, delegationPortID := s.CreateICAChannel(delegationAccountOwner) + + // Sanity checks: + // - total stake matches + // - total weights sum to 100 + actualTotalStake := sdkmath.ZeroInt() + actualTotalWeights := uint64(0) + for _, validator := range validators { + actualTotalStake = actualTotalStake.Add(validator.Delegation) + actualTotalWeights += validator.Weight + } + s.Require().Equal(totalStake.Int64(), actualTotalStake.Int64(), "test setup failed - total stake does not match") + s.Require().Equal(totalWeight, int64(actualTotalWeights), "test setup failed - total weight does not match") + + // Store the validators on the host zone + hostZone := types.HostZone{ + ChainId: UndelegateHostZoneChainId, + ConnectionId: ibctesting.FirstConnectionID, + HostDenom: Atom, + DelegationIcaAddress: "cosmos_DELEGATION", + Validators: validators, + TotalDelegations: totalStake, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Store the total unbond amount across two epoch unbonding records + halfUnbondAmount := unbondAmount.Quo(sdkmath.NewInt(2)) + for i := uint64(1); i <= 2; i++ { + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, recordtypes.EpochUnbondingRecord{ + EpochNumber: i, + HostZoneUnbondings: []*recordtypes.HostZoneUnbonding{ + { + HostZoneId: UndelegateHostZoneChainId, + Status: recordtypes.HostZoneUnbonding_UNBONDING_QUEUE, + NativeTokenAmount: halfUnbondAmount, + }, + }, + }) + } + + // Mock the epoch tracker to timeout 90% through the epoch + strideEpochTracker := types.EpochTracker{ + EpochIdentifier: epochstypes.DAY_EPOCH, + Duration: 10_000_000_000, // 10 second epochs + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // dictates timeout + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpochTracker) + + // Get tx seq number before the ICA was submitted to check whether an ICA was submitted + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, delegationPortID, delegationChannelID) + s.Require().True(found, "sequence number not found before ica") + + return UnbondingTestCase{ + hostZone: hostZone, + totalUnbondAmount: unbondAmount, + delegationChannelID: delegationChannelID, + delegationPortID: delegationPortID, + channelStartSequence: startSequence, + expectedUnbondingRecordIds: []uint64{1, 2}, + } +} + +// Helper function to check that an undelegation ICA was submitted and that the callback data +// holds the expected unbondings for each validator +func (s *KeeperTestSuite) CheckUndelegateHostMessages(tc UnbondingTestCase, expectedUnbondings []ValidatorUnbonding) { + + // Check that IsUndelegateHostPrevented(ctx) has not yet been flipped to true + s.Require().False(s.App.StakeibcKeeper.IsUndelegateHostPrevented(s.Ctx)) + + // Trigger unbonding + err := s.App.StakeibcKeeper.UndelegateHostEvmos(s.Ctx, tc.totalUnbondAmount) + s.Require().NoError(err, "no error expected when calling unbond from host") + + // Check that sequence number incremented from a sent ICA + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after ica") + s.Require().Equal(tc.channelStartSequence+1, endSequence, "sequence number should have incremented") + + // Check that callback data was stored + callbackData := s.App.IcacallbacksKeeper.GetAllCallbackData(s.Ctx) + s.Require().Len(callbackData, 1, "there should only be one callback data stored") + + // Check host zone and epoch unbonding record id's + var actualCallback types.UndelegateHostCallback + err = proto.Unmarshal(callbackData[0].CallbackArgs, &actualCallback) + s.Require().NoError(err, "no error expected when unmarshalling callback args") + + s.Require().Equal(tc.totalUnbondAmount, actualCallback.Amt, "amount on callback") + + // Check splits from callback data align with expected unbondings + s.Require().Len(actualCallback.SplitDelegations, len(expectedUnbondings), "number of unbonding messages") + for i, expected := range expectedUnbondings { + actualSplit := actualCallback.SplitDelegations[i] + s.Require().Equal(expected.Validator, actualSplit.Validator, "callback message validator - index %d", i) + s.Require().Equal(expected.UnbondAmount.Int64(), actualSplit.Amount.Int64(), "callback message amount - index %d", i) + } + + // Check the delegation change in progress was incremented from each that had an unbonding + actualHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, UndelegateHostZoneChainId) + s.Require().True(found, "host zone should have been found") + + for _, actualValidator := range actualHostZone.Validators { + validatorUnbonded := false + for _, unbondedVal := range expectedUnbondings { + if actualValidator.Address == unbondedVal.Validator { + validatorUnbonded = true + } + } + + expectedDelegationChangesInProgress := 0 + if validatorUnbonded { + expectedDelegationChangesInProgress = 1 + } + s.Require().Equal(expectedDelegationChangesInProgress, int(actualValidator.DelegationChangesInProgress), + "validator %s delegation changes in progress", actualValidator.Address) + } + + // Check that the unbond event was emitted with the proper unbond amount + s.CheckEventValueEmitted(types.EventTypeUndelegation, types.AttributeKeyTotalUnbondAmount, tc.totalUnbondAmount.String()) +} + +func (s *KeeperTestSuite) TestUndelegateHost_Successful_UnbondOnlyZeroWeightVals() { + // Native Stake: 1000 + // LSM Stake: 250 + // Total Stake: 1250 + // + // Unbond Amount: 50 + // Stake After Unbond: 1200 + totalUnbondAmount := sdkmath.NewInt(50) + totalStake := sdkmath.NewInt(1250) + totalWeight := int64(100) + + validators := []*types.Validator{ + // Current: 100, Weight: 10%, Balanced: 10% * 1200 = 120, Capacity: 100-120 = -20 -> 0 + // No capacity -> unbondings + {Address: "valA", Weight: 10, Delegation: sdkmath.NewInt(100)}, + // Current: 420, Weight: 35%, Balanced: 35% * 1200 = 420, Capacity: 420-420 = 0 + // No capacity -> unbondings + {Address: "valB", Weight: 35, Delegation: sdkmath.NewInt(420)}, + // Weight: 0%, Balanced: 0, Capacity: 40 + // >>> Ratio: 0 -> Priority #1 <<< + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(40)}, + // Current: 300, Weight: 30%, Balanced: 30% * 1200 = 360, Capacity: 300-360 = -60 -> 0 + // No capacity -> unbondings + {Address: "valD", Weight: 30, Delegation: sdkmath.NewInt(300)}, + // Weight: 0%, Balanced: 0, Capacity: 30 + // >>> Ratio: 0 -> Priority #2 <<< + {Address: "valE", Weight: 0, Delegation: sdkmath.NewInt(30)}, + // Current: 200, Weight: 10%, Balanced: 10% * 1200 = 120, Capacity: 200 - 120 = 80 + // >>> Ratio: 110/200 = 0.55 -> #3 Priority <<<< + {Address: "valF", Weight: 10, Delegation: sdkmath.NewInt(200)}, + // Current: 160, Weight: 15%, Balanced: 15% * 1200 = 180, Capacity: 160-180 = -20 -> 0 + // No capacity -> unbondings + {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, + } + + expectedUnbondings := []ValidatorUnbonding{ + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 50 - 40 = 10 unbond remaining + // valE has #2 priority - unbond up to remaining + {Validator: "valE", UnbondAmount: sdkmath.NewInt(10)}, + } + + tc := s.SetupTestUndelegateHost(totalWeight, totalStake, totalUnbondAmount, validators) + s.CheckUndelegateHostMessages(tc, expectedUnbondings) +} + +func (s *KeeperTestSuite) TestUndelegateHost_Successful_UnbondTotalLessThanTotalLSM() { + // Native Stake: 1000 + // LSM Stake: 250 + // Total Stake: 1250 + // + // Unbond Amount: 150 + // Stake After Unbond: 1100 + totalUnbondAmount := sdkmath.NewInt(150) + totalStake := sdkmath.NewInt(1250) + totalWeight := int64(100) + + validators := []*types.Validator{ + // Current: 100, Weight: 10%, Balanced: 10% * 1100 = 110, Capacity: 100-110 = -10 -> 0 + // No capacity -> unbondings + {Address: "valA", Weight: 10, Delegation: sdkmath.NewInt(100)}, + // Current: 420, Weight: 35%, Balanced: 35% * 1100 = 385, Capacity: 420-385 = 35 + // >>> Ratio: 385/420 = 0.91 -> Priority #4 <<< + {Address: "valB", Weight: 35, Delegation: sdkmath.NewInt(420)}, + // Weight: 0%, Balanced: 0, Capacity: 40 + // >>> Ratio: 0 -> Priority #1 <<< + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(40)}, + // Current: 300, Weight: 30%, Balanced: 30% * 1100 = 330, Capacity: 300-330 = -30 -> 0 + // No capacity -> unbondings + {Address: "valD", Weight: 30, Delegation: sdkmath.NewInt(300)}, + // Weight: 0%, Balanced: 0, Capacity: 30 + // >>> Ratio: 0 -> Priority #2 <<< + {Address: "valE", Weight: 0, Delegation: sdkmath.NewInt(30)}, + // Current: 200, Weight: 10%, Balanced: 10% * 1100 = 110, Capacity: 200 - 110 = 90 + // >>> Ratio: 110/200 = 0.55 -> Priority #3 <<< + {Address: "valF", Weight: 10, Delegation: sdkmath.NewInt(200)}, + // Current: 160, Weight: 15%, Balanced: 15% * 1100 = 165, Capacity: 160-165 = -5 -> 0 + // No capacity -> unbondings + {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, + } + + expectedUnbondings := []ValidatorUnbonding{ + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 150 - 40 = 110 unbond remaining + // valE has #2 priority - unbond up to capacity at 30 + {Validator: "valE", UnbondAmount: sdkmath.NewInt(30)}, + // 150 - 40 - 30 = 80 unbond remaining + // valF has #3 priority - unbond up to remaining + {Validator: "valF", UnbondAmount: sdkmath.NewInt(80)}, + } + + tc := s.SetupTestUndelegateHost(totalWeight, totalStake, totalUnbondAmount, validators) + s.CheckUndelegateHostMessages(tc, expectedUnbondings) +} + +func (s *KeeperTestSuite) TestUndelegateHost_Successful_UnbondTotalGreaterThanTotalLSM() { + // Native Stake: 1000 + // LSM Stake: 250 + // Total Stake: 1250 + // + // Unbond Amount: 350 + // Stake After Unbond: 900 + totalUnbondAmount := sdkmath.NewInt(350) + totalStake := sdkmath.NewInt(1250) + totalWeight := int64(100) + + validators := []*types.Validator{ + // Current: 100, Weight: 10%, Balanced: 10% * 900 = 90, Capacity: 100-90 = 10 + // >>> Ratio: 90/100 = 0.9 -> Priority #7 <<< + {Address: "valA", Weight: 10, Delegation: sdkmath.NewInt(100)}, + // Current: 420, Weight: 35%, Balanced: 35% * 900 = 315, Capacity: 420-315 = 105 + // >>> Ratio: 315/420 = 0.75 -> Priority #4 <<< + {Address: "valB", Weight: 35, Delegation: sdkmath.NewInt(420)}, + // Weight: 0%, Balanced: 0, Capacity: 40 + // >>> Ratio: 0 -> Priority #1 <<< + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(40)}, + // Current: 300, Weight: 30%, Balanced: 30% * 900 = 270, Capacity: 300-270 = 30 + // >>> Ratio: 270/300 = 0.9 -> Priority #6 <<< + {Address: "valD", Weight: 30, Delegation: sdkmath.NewInt(300)}, + // Weight: 0%, Balanced: 0, Capacity: 30 + // >>> Ratio: 0 -> Priority #2 <<< + {Address: "valE", Weight: 0, Delegation: sdkmath.NewInt(30)}, + // Current: 200, Weight: 10%, Balanced: 10% * 900 = 90, Capacity: 200 - 90 = 110 + // >>> Ratio: 90/200 = 0.45 -> Priority #3 <<< + {Address: "valF", Weight: 10, Delegation: sdkmath.NewInt(200)}, + // Current: 160, Weight: 15%, Balanced: 15% * 900 = 135, Capacity: 160-135 = 25 + // >>> Ratio: 135/160 = 0.85 -> Priority #5 <<< + {Address: "valG", Weight: 15, Delegation: sdkmath.NewInt(160)}, + } + + expectedUnbondings := []ValidatorUnbonding{ + // valC has #1 priority - unbond up to capacity at 40 + {Validator: "valC", UnbondAmount: sdkmath.NewInt(40)}, + // 350 - 40 = 310 unbond remaining + // valE has #2 priority - unbond up to capacity at 30 + {Validator: "valE", UnbondAmount: sdkmath.NewInt(30)}, + // 310 - 30 = 280 unbond remaining + // valF has #3 priority - unbond up to capacity at 110 + {Validator: "valF", UnbondAmount: sdkmath.NewInt(110)}, + // 280 - 110 = 170 unbond remaining + // valB has #4 priority - unbond up to capacity at 105 + {Validator: "valB", UnbondAmount: sdkmath.NewInt(105)}, + // 170 - 105 = 65 unbond remaining + // valG has #5 priority - unbond up to capacity at 25 + {Validator: "valG", UnbondAmount: sdkmath.NewInt(25)}, + // 65 - 25 = 40 unbond remaining + // valD has #6 priority - unbond up to capacity at 30 + {Validator: "valD", UnbondAmount: sdkmath.NewInt(30)}, + // 40 - 30 = 10 unbond remaining + // valA has #7 priority - unbond up to remaining + {Validator: "valA", UnbondAmount: sdkmath.NewInt(10)}, + } + + tc := s.SetupTestUndelegateHost(totalWeight, totalStake, totalUnbondAmount, validators) + s.CheckUndelegateHostMessages(tc, expectedUnbondings) +} + +func (s *KeeperTestSuite) TestUndelegateHost_AmountTooLarge() { + // Call undelegateHost with an amount that is greater than the max amount, it should fail + unbondAmount, ok := math.NewIntFromString("25000000000000000000000001") + s.Require().True(ok, "could not parse unbondAmount") + err := s.App.StakeibcKeeper.UndelegateHostEvmos(s.Ctx, unbondAmount) + s.Require().ErrorContains(err, fmt.Sprintf("total unbond amount %v is greater than", unbondAmount)) +} + +func (s *KeeperTestSuite) TestUndelegateHost_ZeroUnbondAmount() { + totalWeight := int64(0) + totalStake := sdkmath.ZeroInt() + totalUnbondAmount := sdkmath.ZeroInt() + tc := s.SetupTestUndelegateHost(totalWeight, totalStake, totalUnbondAmount, []*types.Validator{}) + + // Call unbond - it should NOT error since the unbond amount was 0 - but it should short circuit + err := s.App.StakeibcKeeper.UndelegateHostEvmos(s.Ctx, totalUnbondAmount) + s.Require().Nil(err, "unbond should not have thrown an error - it should have simply ignored the host zone") + + // Confirm no ICAs were sent + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.delegationPortID, tc.delegationChannelID) + s.Require().True(found, "sequence number not found after ica") + s.Require().Equal(tc.channelStartSequence, endSequence, "sequence number should stay the same since no messages were sent") +} + +func (s *KeeperTestSuite) TestUndelegateHost_ZeroValidatorWeights() { + // Setup the test with all zero-weight validators + totalWeight := int64(0) + totalStake := sdkmath.NewInt(100) + totalUnbondAmount := sdkmath.NewInt(10) + validators := []*types.Validator{ + {Address: "valA", Weight: 0, Delegation: sdkmath.NewInt(25)}, + {Address: "valB", Weight: 0, Delegation: sdkmath.NewInt(50)}, + {Address: "valC", Weight: 0, Delegation: sdkmath.NewInt(25)}, + } + s.SetupTestUndelegateHost(totalWeight, totalStake, totalUnbondAmount, validators) + + // Call unbond - it should fail + err := s.App.StakeibcKeeper.UndelegateHostEvmos(s.Ctx, totalUnbondAmount) + s.Require().ErrorContains(err, "No non-zero validators found for host zone") +} + +func (s *KeeperTestSuite) TestUndelegateHost_InsufficientDelegations() { + // Setup the test where the total unbond amount is greater than the current delegations + totalWeight := int64(100) + totalStake := sdkmath.NewInt(100) + totalUnbondAmount := sdkmath.NewInt(200) + validators := []*types.Validator{ + {Address: "valA", Weight: 25, Delegation: sdkmath.NewInt(25)}, + {Address: "valB", Weight: 50, Delegation: sdkmath.NewInt(50)}, + {Address: "valC", Weight: 25, Delegation: sdkmath.NewInt(25)}, + } + s.SetupTestUndelegateHost(totalWeight, totalStake, totalUnbondAmount, validators) + + // Call unbond - it should fail + err := s.App.StakeibcKeeper.UndelegateHostEvmos(s.Ctx, totalUnbondAmount) + s.Require().ErrorContains(err, "Cannot calculate target delegation if final amount is less than or equal to zero") +} diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index fd9999cd38..8d8b70cf94 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -303,6 +303,51 @@ func (m *UndelegateCallback) GetEpochUnbondingRecordIds() []uint64 { return nil } +type UndelegateHostCallback struct { + Amt github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=amt,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amt"` + SplitDelegations []*SplitDelegation `protobuf:"bytes,2,rep,name=split_delegations,json=splitDelegations,proto3" json:"split_delegations,omitempty"` +} + +func (m *UndelegateHostCallback) Reset() { *m = UndelegateHostCallback{} } +func (m *UndelegateHostCallback) String() string { return proto.CompactTextString(m) } +func (*UndelegateHostCallback) ProtoMessage() {} +func (*UndelegateHostCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{5} +} +func (m *UndelegateHostCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UndelegateHostCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UndelegateHostCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *UndelegateHostCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_UndelegateHostCallback.Merge(m, src) +} +func (m *UndelegateHostCallback) XXX_Size() int { + return m.Size() +} +func (m *UndelegateHostCallback) XXX_DiscardUnknown() { + xxx_messageInfo_UndelegateHostCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_UndelegateHostCallback proto.InternalMessageInfo + +func (m *UndelegateHostCallback) GetSplitDelegations() []*SplitDelegation { + if m != nil { + return m.SplitDelegations + } + return nil +} + type RedemptionCallback struct { HostZoneId string `protobuf:"bytes,1,opt,name=host_zone_id,json=hostZoneId,proto3" json:"host_zone_id,omitempty"` EpochUnbondingRecordIds []uint64 `protobuf:"varint,2,rep,packed,name=epoch_unbonding_record_ids,json=epochUnbondingRecordIds,proto3" json:"epoch_unbonding_record_ids,omitempty"` @@ -312,7 +357,7 @@ func (m *RedemptionCallback) Reset() { *m = RedemptionCallback{} } func (m *RedemptionCallback) String() string { return proto.CompactTextString(m) } func (*RedemptionCallback) ProtoMessage() {} func (*RedemptionCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{5} + return fileDescriptor_f41c99b09b96a5ac, []int{6} } func (m *RedemptionCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -365,7 +410,7 @@ func (m *Rebalancing) Reset() { *m = Rebalancing{} } func (m *Rebalancing) String() string { return proto.CompactTextString(m) } func (*Rebalancing) ProtoMessage() {} func (*Rebalancing) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{6} + return fileDescriptor_f41c99b09b96a5ac, []int{7} } func (m *Rebalancing) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -417,7 +462,7 @@ func (m *RebalanceCallback) Reset() { *m = RebalanceCallback{} } func (m *RebalanceCallback) String() string { return proto.CompactTextString(m) } func (*RebalanceCallback) ProtoMessage() {} func (*RebalanceCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{7} + return fileDescriptor_f41c99b09b96a5ac, []int{8} } func (m *RebalanceCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -468,7 +513,7 @@ func (m *DetokenizeSharesCallback) Reset() { *m = DetokenizeSharesCallba func (m *DetokenizeSharesCallback) String() string { return proto.CompactTextString(m) } func (*DetokenizeSharesCallback) ProtoMessage() {} func (*DetokenizeSharesCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{8} + return fileDescriptor_f41c99b09b96a5ac, []int{9} } func (m *DetokenizeSharesCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -514,7 +559,7 @@ func (m *LSMLiquidStake) Reset() { *m = LSMLiquidStake{} } func (m *LSMLiquidStake) String() string { return proto.CompactTextString(m) } func (*LSMLiquidStake) ProtoMessage() {} func (*LSMLiquidStake) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{9} + return fileDescriptor_f41c99b09b96a5ac, []int{10} } func (m *LSMLiquidStake) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -572,7 +617,7 @@ func (m *ValidatorSharesToTokensQueryCallback) Reset() { *m = ValidatorS func (m *ValidatorSharesToTokensQueryCallback) String() string { return proto.CompactTextString(m) } func (*ValidatorSharesToTokensQueryCallback) ProtoMessage() {} func (*ValidatorSharesToTokensQueryCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{10} + return fileDescriptor_f41c99b09b96a5ac, []int{11} } func (m *ValidatorSharesToTokensQueryCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -617,7 +662,7 @@ func (m *DelegatorSharesQueryCallback) Reset() { *m = DelegatorSharesQue func (m *DelegatorSharesQueryCallback) String() string { return proto.CompactTextString(m) } func (*DelegatorSharesQueryCallback) ProtoMessage() {} func (*DelegatorSharesQueryCallback) Descriptor() ([]byte, []int) { - return fileDescriptor_f41c99b09b96a5ac, []int{11} + return fileDescriptor_f41c99b09b96a5ac, []int{12} } func (m *DelegatorSharesQueryCallback) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -652,6 +697,7 @@ func init() { proto.RegisterType((*ClaimCallback)(nil), "stride.stakeibc.ClaimCallback") proto.RegisterType((*ReinvestCallback)(nil), "stride.stakeibc.ReinvestCallback") proto.RegisterType((*UndelegateCallback)(nil), "stride.stakeibc.UndelegateCallback") + proto.RegisterType((*UndelegateHostCallback)(nil), "stride.stakeibc.UndelegateHostCallback") proto.RegisterType((*RedemptionCallback)(nil), "stride.stakeibc.RedemptionCallback") proto.RegisterType((*Rebalancing)(nil), "stride.stakeibc.Rebalancing") proto.RegisterType((*RebalanceCallback)(nil), "stride.stakeibc.RebalanceCallback") @@ -664,59 +710,60 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 822 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x4f, 0x6f, 0xeb, 0x44, - 0x10, 0x8f, 0x9b, 0xa7, 0xf7, 0x5e, 0x36, 0x69, 0x93, 0x5a, 0x08, 0xd2, 0x28, 0x4a, 0x82, 0x1f, - 0x82, 0x0a, 0xa9, 0xb6, 0x5a, 0x10, 0x02, 0x71, 0x29, 0x6d, 0x85, 0x88, 0x94, 0x22, 0xe1, 0xb4, - 0x1c, 0x7a, 0xb1, 0xd6, 0xde, 0x55, 0xb2, 0x8a, 0xbd, 0x9b, 0x7a, 0x37, 0x29, 0xed, 0x27, 0xe0, - 0xd8, 0x2b, 0x1f, 0x01, 0x2e, 0x7c, 0x02, 0x2e, 0x9c, 0x7a, 0xec, 0x11, 0x71, 0x28, 0xa8, 0xfd, - 0x22, 0x68, 0xd7, 0xeb, 0x3f, 0x49, 0xa0, 0x22, 0x70, 0x4a, 0x3c, 0xf3, 0x9b, 0x9d, 0xf9, 0xcd, - 0x6f, 0x66, 0x17, 0x74, 0xb9, 0x88, 0x09, 0xc2, 0x0e, 0x17, 0x70, 0x82, 0x89, 0x1f, 0x38, 0x01, - 0x0c, 0x43, 0x1f, 0x06, 0x13, 0x6e, 0x4f, 0x63, 0x26, 0x98, 0x59, 0x4f, 0x00, 0x76, 0x0a, 0x68, - 0xbd, 0x35, 0x62, 0x23, 0xa6, 0x7c, 0x8e, 0xfc, 0x97, 0xc0, 0x5a, 0x9d, 0x80, 0xf1, 0x88, 0x71, - 0xc7, 0x87, 0x1c, 0x3b, 0xf3, 0x7d, 0x1f, 0x0b, 0xb8, 0xef, 0x04, 0x8c, 0x50, 0xed, 0x6f, 0xeb, - 0x3c, 0x31, 0x0e, 0x58, 0x8c, 0x78, 0xfa, 0xab, 0xbd, 0x2b, 0x55, 0x8c, 0x19, 0x17, 0xde, 0x0d, - 0xa3, 0xf8, 0x9f, 0x00, 0x73, 0x18, 0x12, 0x04, 0x05, 0x8b, 0x13, 0x80, 0x75, 0x05, 0xea, 0xc3, - 0x69, 0x48, 0xc4, 0x09, 0x0e, 0xf1, 0x08, 0x0a, 0xc2, 0xa8, 0xd9, 0x06, 0x95, 0x0c, 0xd5, 0x34, - 0x7a, 0xc6, 0x6e, 0xc5, 0xcd, 0x0d, 0xe6, 0x97, 0xe0, 0x25, 0x8c, 0xd8, 0x8c, 0x8a, 0xe6, 0x86, - 0x74, 0x1d, 0xd9, 0x77, 0x0f, 0xdd, 0xd2, 0xef, 0x0f, 0xdd, 0xf7, 0x47, 0x44, 0x8c, 0x67, 0xbe, - 0x1d, 0xb0, 0xc8, 0xd1, 0x9c, 0x92, 0x9f, 0x3d, 0x8e, 0x26, 0x8e, 0xb8, 0x9e, 0x62, 0x6e, 0xf7, - 0xa9, 0x70, 0x75, 0xb4, 0xf5, 0xb3, 0x01, 0x1a, 0x3a, 0x29, 0x3e, 0xd6, 0xbd, 0x33, 0x7b, 0xa0, - 0x96, 0x31, 0xf0, 0x08, 0xd2, 0xd9, 0x81, 0xb4, 0x5d, 0x30, 0x8a, 0xfb, 0xc8, 0xfc, 0x10, 0x6c, - 0x23, 0x3c, 0x65, 0x9c, 0x08, 0x2f, 0x69, 0x85, 0x84, 0xc9, 0x4a, 0x5e, 0xb8, 0x75, 0xed, 0x70, - 0x95, 0xbd, 0x8f, 0xcc, 0x53, 0xb0, 0xcd, 0x25, 0x37, 0x0f, 0x65, 0xe4, 0x78, 0xb3, 0xdc, 0x2b, - 0xef, 0x56, 0x0f, 0x7a, 0xf6, 0x92, 0x3c, 0xf6, 0x52, 0x17, 0xdc, 0x06, 0x5f, 0x34, 0x70, 0xeb, - 0x7b, 0x03, 0x6c, 0x1e, 0x87, 0x90, 0x44, 0x59, 0xb9, 0x9f, 0x81, 0x9d, 0x19, 0xc7, 0xb1, 0x17, - 0x63, 0x84, 0xa3, 0xa9, 0x44, 0x15, 0x8a, 0x4a, 0x6a, 0x7f, 0x5b, 0x02, 0xdc, 0xcc, 0x9f, 0xd5, - 0xb6, 0x03, 0x5e, 0x07, 0x63, 0x48, 0x68, 0x5a, 0x7e, 0xc5, 0x7d, 0xa5, 0xbe, 0xfb, 0xc8, 0x7c, - 0x17, 0xd4, 0xf0, 0x94, 0x05, 0x63, 0x8f, 0xce, 0x22, 0x1f, 0xc7, 0xcd, 0xb2, 0x62, 0x57, 0x55, - 0xb6, 0xaf, 0x95, 0xc9, 0xfa, 0xd1, 0x00, 0x0d, 0x17, 0x13, 0x3a, 0xc7, 0x5c, 0x64, 0xd5, 0x70, - 0x50, 0x8f, 0xb5, 0xcd, 0xd3, 0x12, 0xc9, 0x1a, 0xaa, 0x07, 0x3b, 0x76, 0xa2, 0x84, 0x2d, 0x87, - 0xcc, 0xd6, 0x43, 0x66, 0x1f, 0x33, 0x42, 0x8f, 0x1c, 0xa9, 0xde, 0x4f, 0x7f, 0x74, 0x3f, 0xf8, - 0x17, 0xea, 0xc9, 0x00, 0x77, 0x2b, 0x4d, 0xf1, 0x85, 0xca, 0xb0, 0xa2, 0x58, 0x79, 0x59, 0x31, - 0xeb, 0x57, 0x03, 0x98, 0xe7, 0x14, 0xad, 0x2f, 0xf5, 0xdf, 0xca, 0xb7, 0xf1, 0x5f, 0xe5, 0x33, - 0x3f, 0x07, 0xad, 0xa4, 0xad, 0x33, 0xea, 0x33, 0x8a, 0x08, 0x1d, 0xe5, 0x62, 0x25, 0x63, 0xf1, - 0xc2, 0x7d, 0x47, 0x21, 0xce, 0x53, 0x40, 0xaa, 0x16, 0xb7, 0x38, 0x30, 0x73, 0x11, 0xd7, 0xe0, - 0xf0, 0x7c, 0xd2, 0x8d, 0xe7, 0x93, 0xfe, 0x60, 0x80, 0xaa, 0x8b, 0x7d, 0x18, 0x42, 0x1a, 0x10, - 0x3a, 0x32, 0xdf, 0x80, 0x4d, 0x1e, 0x07, 0xde, 0xf2, 0x72, 0xd6, 0x78, 0x1c, 0x7c, 0x9b, 0xed, - 0xe7, 0x1b, 0xb0, 0x89, 0xb8, 0x28, 0x80, 0x92, 0xe9, 0xaa, 0x21, 0x2e, 0x72, 0xd0, 0x21, 0x28, - 0xc3, 0x48, 0x24, 0x62, 0xad, 0xbd, 0xc1, 0x32, 0xd4, 0xba, 0x02, 0xdb, 0x69, 0x69, 0xeb, 0x68, - 0x7a, 0x08, 0x6a, 0x71, 0xce, 0x28, 0x95, 0xb3, 0xbd, 0x22, 0x67, 0x81, 0xb6, 0xbb, 0x10, 0x61, - 0x9d, 0x83, 0xe6, 0x09, 0x16, 0x6c, 0x82, 0x29, 0xb9, 0xc1, 0xc3, 0x31, 0x8c, 0x31, 0x2f, 0xec, - 0xe3, 0x2b, 0x7d, 0x07, 0xe8, 0xc9, 0xef, 0xa6, 0x07, 0xa7, 0xd7, 0xe6, 0x60, 0x78, 0x7a, 0x26, - 0x63, 0x4f, 0xf4, 0x55, 0x91, 0xe2, 0xad, 0x5f, 0x0c, 0xb0, 0x35, 0x18, 0x9e, 0x0e, 0xc8, 0xe5, - 0x8c, 0xa0, 0xa1, 0x2c, 0xe3, 0x7f, 0x9c, 0x66, 0x7e, 0x02, 0x2a, 0x59, 0x23, 0x94, 0x00, 0x72, - 0x09, 0x97, 0x39, 0x7e, 0xa5, 0xdb, 0xe2, 0xbe, 0x4e, 0x1b, 0x64, 0x7e, 0x5a, 0xbc, 0x7a, 0xcb, - 0x2a, 0xae, 0xb5, 0x12, 0x97, 0xc9, 0x58, 0xb8, 0x96, 0xad, 0x4b, 0xf0, 0x5e, 0x66, 0x4f, 0xba, - 0x72, 0xc6, 0x54, 0x6d, 0xfc, 0x9b, 0x19, 0x8e, 0xaf, 0xb3, 0x16, 0xf5, 0x41, 0x23, 0xe4, 0x91, - 0x17, 0x2a, 0x9e, 0x9e, 0x3a, 0x73, 0x99, 0x5d, 0x96, 0x68, 0xb1, 0x1f, 0xee, 0x56, 0xc8, 0xa3, - 0xc2, 0xb7, 0x75, 0x6b, 0x80, 0xb6, 0x5e, 0xb0, 0x34, 0xe7, 0x62, 0xae, 0x29, 0x68, 0x13, 0x4a, - 0x04, 0x81, 0x61, 0x3e, 0x8e, 0x85, 0x65, 0x4e, 0xc6, 0x63, 0xed, 0xf1, 0x6b, 0xe9, 0x33, 0x33, - 0xba, 0xf9, 0x92, 0x1f, 0x0d, 0xee, 0x1e, 0x3b, 0xc6, 0xfd, 0x63, 0xc7, 0xf8, 0xf3, 0xb1, 0x63, - 0xdc, 0x3e, 0x75, 0x4a, 0xf7, 0x4f, 0x9d, 0xd2, 0x6f, 0x4f, 0x9d, 0xd2, 0xc5, 0x41, 0xe1, 0xf4, - 0xa1, 0xe2, 0xb9, 0x37, 0x80, 0x3e, 0x77, 0xf4, 0xfb, 0x38, 0xdf, 0xff, 0xd8, 0xf9, 0x2e, 0x7f, - 0x25, 0x55, 0x36, 0xff, 0xa5, 0x7a, 0x22, 0x3f, 0xfa, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xe3, - 0xc7, 0xd8, 0xec, 0x07, 0x00, 0x00, + // 840 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4f, 0x6f, 0x23, 0x35, + 0x14, 0xcf, 0x34, 0xab, 0xdd, 0x8d, 0x93, 0x36, 0xe9, 0x08, 0x2d, 0x69, 0x14, 0x25, 0x61, 0x16, + 0xc1, 0x0a, 0x69, 0x67, 0xd4, 0x82, 0x10, 0x88, 0xcb, 0xd2, 0x56, 0x68, 0x23, 0xa5, 0x48, 0x4c, + 0x5a, 0x0e, 0xbd, 0x8c, 0x3c, 0x63, 0x2b, 0xb1, 0x32, 0x63, 0xa7, 0x63, 0x27, 0xa5, 0xfd, 0x04, + 0x1c, 0x7b, 0xe5, 0x23, 0xc0, 0x85, 0x4f, 0xc0, 0x85, 0x53, 0x8f, 0x3d, 0x22, 0x0e, 0x05, 0xb5, + 0x5f, 0x04, 0xd9, 0xe3, 0xf9, 0x93, 0x04, 0x2a, 0x52, 0x38, 0x25, 0xf3, 0xfc, 0xb3, 0xdf, 0xfb, + 0xfd, 0x7e, 0x7e, 0xcf, 0xa0, 0xcb, 0x45, 0x4c, 0x10, 0x76, 0xb8, 0x80, 0x13, 0x4c, 0xfc, 0xc0, + 0x09, 0x60, 0x18, 0xfa, 0x30, 0x98, 0x70, 0x7b, 0x1a, 0x33, 0xc1, 0xcc, 0x7a, 0x02, 0xb0, 0x53, + 0x40, 0xeb, 0x9d, 0x11, 0x1b, 0x31, 0xb5, 0xe6, 0xc8, 0x7f, 0x09, 0xac, 0xd5, 0x09, 0x18, 0x8f, + 0x18, 0x77, 0x7c, 0xc8, 0xb1, 0x33, 0xdf, 0xf5, 0xb1, 0x80, 0xbb, 0x4e, 0xc0, 0x08, 0xd5, 0xeb, + 0x6d, 0x9d, 0x27, 0xc6, 0x01, 0x8b, 0x11, 0x4f, 0x7f, 0xf5, 0xea, 0x4a, 0x15, 0x63, 0xc6, 0x85, + 0x77, 0xc9, 0x28, 0xfe, 0x27, 0xc0, 0x1c, 0x86, 0x04, 0x41, 0xc1, 0xe2, 0x04, 0x60, 0x9d, 0x83, + 0xfa, 0x70, 0x1a, 0x12, 0x71, 0x88, 0x43, 0x3c, 0x82, 0x82, 0x30, 0x6a, 0xb6, 0x41, 0x25, 0x43, + 0x35, 0x8d, 0x9e, 0xf1, 0xaa, 0xe2, 0xe6, 0x01, 0xf3, 0x2b, 0xf0, 0x14, 0x46, 0x6c, 0x46, 0x45, + 0x73, 0x43, 0x2e, 0xed, 0xdb, 0xd7, 0xb7, 0xdd, 0xd2, 0xef, 0xb7, 0xdd, 0x0f, 0x46, 0x44, 0x8c, + 0x67, 0xbe, 0x1d, 0xb0, 0xc8, 0xd1, 0x9c, 0x92, 0x9f, 0xd7, 0x1c, 0x4d, 0x1c, 0x71, 0x31, 0xc5, + 0xdc, 0xee, 0x53, 0xe1, 0xea, 0xdd, 0xd6, 0xcf, 0x06, 0x68, 0xe8, 0xa4, 0xf8, 0x40, 0x6b, 0x67, + 0xf6, 0x40, 0x2d, 0x63, 0xe0, 0x11, 0xa4, 0xb3, 0x03, 0x19, 0x3b, 0x65, 0x14, 0xf7, 0x91, 0xf9, + 0x11, 0xd8, 0x46, 0x78, 0xca, 0x38, 0x11, 0x5e, 0x22, 0x85, 0x84, 0xc9, 0x4a, 0x9e, 0xb8, 0x75, + 0xbd, 0xe0, 0xaa, 0x78, 0x1f, 0x99, 0x47, 0x60, 0x9b, 0x4b, 0x6e, 0x1e, 0xca, 0xc8, 0xf1, 0x66, + 0xb9, 0x57, 0x7e, 0x55, 0xdd, 0xeb, 0xd9, 0x4b, 0xf6, 0xd8, 0x4b, 0x2a, 0xb8, 0x0d, 0xbe, 0x18, + 0xe0, 0xd6, 0xf7, 0x06, 0xd8, 0x3c, 0x08, 0x21, 0x89, 0xb2, 0x72, 0x3f, 0x07, 0x3b, 0x33, 0x8e, + 0x63, 0x2f, 0xc6, 0x08, 0x47, 0x53, 0x89, 0x2a, 0x14, 0x95, 0xd4, 0xfe, 0x42, 0x02, 0xdc, 0x6c, + 0x3d, 0xab, 0x6d, 0x07, 0x3c, 0x0f, 0xc6, 0x90, 0xd0, 0xb4, 0xfc, 0x8a, 0xfb, 0x4c, 0x7d, 0xf7, + 0x91, 0xf9, 0x1e, 0xa8, 0xe1, 0x29, 0x0b, 0xc6, 0x1e, 0x9d, 0x45, 0x3e, 0x8e, 0x9b, 0x65, 0xc5, + 0xae, 0xaa, 0x62, 0x5f, 0xab, 0x90, 0xf5, 0xa3, 0x01, 0x1a, 0x2e, 0x26, 0x74, 0x8e, 0xb9, 0xc8, + 0xaa, 0xe1, 0xa0, 0x1e, 0xeb, 0x98, 0xa7, 0x2d, 0x92, 0x35, 0x54, 0xf7, 0x76, 0xec, 0xc4, 0x09, + 0x5b, 0x5e, 0x32, 0x5b, 0x5f, 0x32, 0xfb, 0x80, 0x11, 0xba, 0xef, 0x48, 0xf7, 0x7e, 0xfa, 0xa3, + 0xfb, 0xe1, 0xbf, 0x70, 0x4f, 0x6e, 0x70, 0xb7, 0xd2, 0x14, 0x5f, 0xaa, 0x0c, 0x2b, 0x8e, 0x95, + 0x97, 0x1d, 0xb3, 0x7e, 0x35, 0x80, 0x79, 0x42, 0xd1, 0xfa, 0x56, 0xff, 0xad, 0x7d, 0x1b, 0x8f, + 0xb5, 0xcf, 0xfc, 0x02, 0xb4, 0x12, 0x59, 0x67, 0xd4, 0x67, 0x14, 0x11, 0x3a, 0xca, 0xcd, 0x4a, + 0xae, 0xc5, 0x13, 0xf7, 0x5d, 0x85, 0x38, 0x49, 0x01, 0xa9, 0x5b, 0x5c, 0x0a, 0xfe, 0x22, 0x27, + 0xf1, 0x96, 0x15, 0x64, 0x7f, 0x03, 0xca, 0x30, 0x4a, 0xa4, 0x5e, 0xbf, 0x1b, 0xe4, 0xd6, 0xff, + 0x99, 0xa8, 0xc5, 0x81, 0x99, 0x5f, 0xb8, 0x35, 0xf4, 0x7e, 0x58, 0xa0, 0x8d, 0x87, 0x05, 0xfa, + 0xc1, 0x00, 0x55, 0x17, 0xfb, 0x30, 0x84, 0x34, 0x20, 0x74, 0x64, 0xbe, 0x04, 0x9b, 0x3c, 0x0e, + 0xbc, 0xe5, 0x41, 0x52, 0xe3, 0x71, 0xf0, 0x6d, 0x36, 0x4b, 0x5e, 0x82, 0x4d, 0xc4, 0x45, 0x01, + 0x94, 0x74, 0x42, 0x0d, 0x71, 0x91, 0x83, 0xb4, 0xbe, 0xe5, 0x47, 0xeb, 0x6b, 0x9d, 0x83, 0xed, + 0xb4, 0xb4, 0x75, 0xee, 0xdf, 0x1b, 0x50, 0x8b, 0x73, 0x46, 0xa9, 0x23, 0xed, 0x15, 0x47, 0x0a, + 0xb4, 0xdd, 0x85, 0x1d, 0xd6, 0x09, 0x68, 0x1e, 0x62, 0xc1, 0x26, 0x98, 0x92, 0x4b, 0x3c, 0x1c, + 0xc3, 0x18, 0xf3, 0xc2, 0xec, 0x78, 0xa6, 0xe7, 0x95, 0xee, 0xd2, 0x6e, 0x7a, 0x70, 0x3a, 0xe2, + 0x07, 0xc3, 0xa3, 0x63, 0xb9, 0xf7, 0x50, 0x8f, 0xb5, 0x14, 0x6f, 0xfd, 0x62, 0x80, 0xad, 0xc1, + 0xf0, 0x68, 0x40, 0xce, 0x66, 0x04, 0x0d, 0x65, 0x19, 0xff, 0xe1, 0x34, 0xf3, 0x53, 0x50, 0xc9, + 0x84, 0x50, 0x06, 0xc8, 0x81, 0xb1, 0xcc, 0xf1, 0xad, 0x96, 0xc5, 0x7d, 0x9e, 0x0a, 0x64, 0x7e, + 0x56, 0x7c, 0x26, 0xca, 0x6a, 0x5f, 0x6b, 0x65, 0x5f, 0x66, 0x63, 0xe1, 0x09, 0xb1, 0xce, 0xc0, + 0xfb, 0x59, 0x3c, 0x51, 0xe5, 0x98, 0xa9, 0xda, 0xf8, 0x37, 0x33, 0x1c, 0x5f, 0x64, 0x12, 0xf5, + 0x41, 0x23, 0xe4, 0x91, 0x17, 0x2a, 0x9e, 0x9e, 0x3a, 0x73, 0x99, 0x5d, 0x96, 0x68, 0x51, 0x0f, + 0x77, 0x2b, 0xe4, 0x51, 0xe1, 0xdb, 0xba, 0x32, 0x40, 0x5b, 0xf7, 0x48, 0x9a, 0x73, 0x31, 0xd7, + 0x14, 0xb4, 0x09, 0x25, 0x82, 0xc0, 0x30, 0xbf, 0x8e, 0x85, 0x7e, 0x7c, 0x64, 0x7b, 0xb7, 0xf4, + 0x99, 0x19, 0xdd, 0xbc, 0x4f, 0xf7, 0x07, 0xd7, 0x77, 0x1d, 0xe3, 0xe6, 0xae, 0x63, 0xfc, 0x79, + 0xd7, 0x31, 0xae, 0xee, 0x3b, 0xa5, 0x9b, 0xfb, 0x4e, 0xe9, 0xb7, 0xfb, 0x4e, 0xe9, 0x74, 0xaf, + 0x70, 0xfa, 0x50, 0xf1, 0x7c, 0x3d, 0x80, 0x3e, 0x77, 0xf4, 0x5b, 0x3e, 0xdf, 0xfd, 0xc4, 0xf9, + 0x2e, 0x7f, 0xd1, 0x55, 0x36, 0xff, 0xa9, 0x7a, 0xce, 0x3f, 0xfe, 0x2b, 0x00, 0x00, 0xff, 0xff, + 0xe7, 0xf1, 0x50, 0xfb, 0x98, 0x08, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { @@ -952,6 +999,53 @@ func (m *UndelegateCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *UndelegateHostCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *UndelegateHostCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UndelegateHostCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SplitDelegations) > 0 { + for iNdEx := len(m.SplitDelegations) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SplitDelegations[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.Amt.Size() + i -= size + if _, err := m.Amt.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCallbacks(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *RedemptionCallback) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1362,6 +1456,23 @@ func (m *UndelegateCallback) Size() (n int) { return n } +func (m *UndelegateHostCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amt.Size() + n += 1 + l + sovCallbacks(uint64(l)) + if len(m.SplitDelegations) > 0 { + for _, e := range m.SplitDelegations { + l = e.Size() + n += 1 + l + sovCallbacks(uint64(l)) + } + } + return n +} + func (m *RedemptionCallback) Size() (n int) { if m == nil { return 0 @@ -2175,6 +2286,124 @@ func (m *UndelegateCallback) Unmarshal(dAtA []byte) error { } return nil } +func (m *UndelegateHostCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UndelegateHostCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UndelegateHostCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SplitDelegations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCallbacks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SplitDelegations = append(m.SplitDelegations, &SplitDelegation{}) + if err := m.SplitDelegations[len(m.SplitDelegations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RedemptionCallback) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/stakeibc/types/codec.go b/x/stakeibc/types/codec.go index c28fb0b674..71a00545b6 100644 --- a/x/stakeibc/types/codec.go +++ b/x/stakeibc/types/codec.go @@ -23,6 +23,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&ToggleLSMProposal{}, "stakeibc/ToggleLSMProposal", nil) cdc.RegisterConcrete(&MsgRestoreInterchainAccount{}, "stakeibc/RestoreInterchainAccount", nil) cdc.RegisterConcrete(&MsgUpdateValidatorSharesExchRate{}, "stakeibc/UpdateValidatorSharesExchRate", nil) + cdc.RegisterConcrete(&MsgUndelegateHost{}, "stakeibc/UndelegateHost", nil) cdc.RegisterConcrete(&MsgCalibrateDelegation{}, "stakeibc/CalibrateDelegation", nil) cdc.RegisterConcrete(&MsgUpdateInnerRedemptionRateBounds{}, "stakeibc/UpdateInnerRedemptionRateBounds", nil) // this line is used by starport scaffolding # 2 @@ -41,6 +42,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgDeleteValidator{}, &MsgRestoreInterchainAccount{}, &MsgUpdateValidatorSharesExchRate{}, + &MsgUndelegateHost{}, &MsgCalibrateDelegation{}, &MsgUpdateInnerRedemptionRateBounds{}, ) diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index a0805b6f3f..1ab443f0a4 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -56,5 +56,6 @@ var ( ErrInvalidValidatorDelegationUpdates = errorsmod.Register(ModuleName, 1548, "Invalid validator delegation updates") ErrLSMLiquidStakeDisabledForHostZone = errorsmod.Register(ModuleName, 1549, "LSM liquid stake is disabled for host zone") ErrUnableToRemoveValidator = errorsmod.Register(ModuleName, 1550, "Unable to remove validator") - ErrInvalidBounds = errorsmod.Register(ModuleName, 1551, "Invalid safety bounds - inner bounds must be within outer bounds") + ErrUndelegateHostNotCallable = errorsmod.Register(ModuleName, 1551, "Undelegate host is disabled") + ErrInvalidBounds = errorsmod.Register(ModuleName, 1552, "Invalid safety bounds - inner bounds must be within outer bounds") ) diff --git a/x/stakeibc/types/message_undelegate_host.go b/x/stakeibc/types/message_undelegate_host.go new file mode 100644 index 0000000000..d239604cf8 --- /dev/null +++ b/x/stakeibc/types/message_undelegate_host.go @@ -0,0 +1,56 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v14/utils" +) + +const TypeMsgUndelegateHost = "undelegate_host" + +var _ sdk.Msg = &MsgUndelegateHost{} + +func NewMsgUndelegateHost(creator string, amount sdkmath.Int) *MsgUndelegateHost { + return &MsgUndelegateHost{ + Creator: creator, + Amount: amount, + } +} + +func (msg *MsgUndelegateHost) Route() string { + return RouterKey +} + +func (msg *MsgUndelegateHost) Type() string { + return TypeMsgUndelegateHost +} + +func (msg *MsgUndelegateHost) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUndelegateHost) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUndelegateHost) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + if err := utils.ValidateAdminAddress(msg.Creator); err != nil { + return err + } + if msg.Amount.IsZero() { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "amount must be positive") + } + return nil +} diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index 558a2b33d0..a89e0107ee 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1278,6 +1278,87 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUpdateValidatorSharesExchRateResponse proto.InternalMessageInfo +type MsgUndelegateHost struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` +} + +func (m *MsgUndelegateHost) Reset() { *m = MsgUndelegateHost{} } +func (m *MsgUndelegateHost) String() string { return proto.CompactTextString(m) } +func (*MsgUndelegateHost) ProtoMessage() {} +func (*MsgUndelegateHost) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{26} +} +func (m *MsgUndelegateHost) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUndelegateHost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUndelegateHost.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUndelegateHost) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUndelegateHost.Merge(m, src) +} +func (m *MsgUndelegateHost) XXX_Size() int { + return m.Size() +} +func (m *MsgUndelegateHost) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUndelegateHost.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUndelegateHost proto.InternalMessageInfo + +func (m *MsgUndelegateHost) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +type MsgUndelegateHostResponse struct { +} + +func (m *MsgUndelegateHostResponse) Reset() { *m = MsgUndelegateHostResponse{} } +func (m *MsgUndelegateHostResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUndelegateHostResponse) ProtoMessage() {} +func (*MsgUndelegateHostResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{27} +} +func (m *MsgUndelegateHostResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUndelegateHostResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUndelegateHostResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUndelegateHostResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUndelegateHostResponse.Merge(m, src) +} +func (m *MsgUndelegateHostResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUndelegateHostResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUndelegateHostResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUndelegateHostResponse proto.InternalMessageInfo + type MsgCalibrateDelegation struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` @@ -1288,7 +1369,7 @@ func (m *MsgCalibrateDelegation) Reset() { *m = MsgCalibrateDelegation{} func (m *MsgCalibrateDelegation) String() string { return proto.CompactTextString(m) } func (*MsgCalibrateDelegation) ProtoMessage() {} func (*MsgCalibrateDelegation) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{26} + return fileDescriptor_9b7e09c9ad51cd54, []int{28} } func (m *MsgCalibrateDelegation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1345,7 +1426,7 @@ func (m *MsgCalibrateDelegationResponse) Reset() { *m = MsgCalibrateDele func (m *MsgCalibrateDelegationResponse) String() string { return proto.CompactTextString(m) } func (*MsgCalibrateDelegationResponse) ProtoMessage() {} func (*MsgCalibrateDelegationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9b7e09c9ad51cd54, []int{27} + return fileDescriptor_9b7e09c9ad51cd54, []int{29} } func (m *MsgCalibrateDelegationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1401,6 +1482,8 @@ func init() { proto.RegisterType((*MsgRestoreInterchainAccountResponse)(nil), "stride.stakeibc.MsgRestoreInterchainAccountResponse") proto.RegisterType((*MsgUpdateValidatorSharesExchRate)(nil), "stride.stakeibc.MsgUpdateValidatorSharesExchRate") proto.RegisterType((*MsgUpdateValidatorSharesExchRateResponse)(nil), "stride.stakeibc.MsgUpdateValidatorSharesExchRateResponse") + proto.RegisterType((*MsgUndelegateHost)(nil), "stride.stakeibc.MsgUndelegateHost") + proto.RegisterType((*MsgUndelegateHostResponse)(nil), "stride.stakeibc.MsgUndelegateHostResponse") proto.RegisterType((*MsgCalibrateDelegation)(nil), "stride.stakeibc.MsgCalibrateDelegation") proto.RegisterType((*MsgCalibrateDelegationResponse)(nil), "stride.stakeibc.MsgCalibrateDelegationResponse") } @@ -1408,98 +1491,100 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1451 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdb, 0xc6, - 0x12, 0x36, 0x63, 0xc7, 0x51, 0xc6, 0xf2, 0x2f, 0xda, 0x71, 0x68, 0xe6, 0x45, 0x52, 0xe8, 0xf7, - 0x5e, 0xdd, 0x34, 0x96, 0x60, 0x3b, 0x40, 0xd1, 0xb4, 0x3d, 0x58, 0x76, 0x8a, 0x0a, 0x88, 0x82, - 0x82, 0x4e, 0x1a, 0x20, 0x40, 0xc1, 0xae, 0xc8, 0x0d, 0x45, 0x84, 0x5c, 0x2a, 0x5c, 0xca, 0x51, - 0x7a, 0x28, 0x7a, 0x29, 0xd0, 0x4b, 0x81, 0x16, 0x05, 0x7a, 0xe8, 0xa1, 0xc8, 0xa1, 0x87, 0x02, - 0xbd, 0x15, 0xf9, 0x23, 0x02, 0xf4, 0x12, 0xe4, 0x54, 0xf4, 0x20, 0x14, 0xc9, 0xa5, 0x67, 0xff, - 0x05, 0xc5, 0x2e, 0xa9, 0x95, 0x44, 0x51, 0x92, 0xe3, 0x18, 0x39, 0xd9, 0xbb, 0xf3, 0xed, 0xce, - 0xb7, 0xb3, 0x33, 0xdf, 0x8e, 0x08, 0x0a, 0x0d, 0x03, 0xc7, 0xc2, 0x25, 0x1a, 0xa2, 0xfb, 0xd8, - 0xa9, 0x99, 0xa5, 0xb0, 0x55, 0x6c, 0x04, 0x7e, 0xe8, 0xcb, 0xf3, 0x91, 0xa5, 0xd8, 0xb1, 0xa8, - 0x97, 0x92, 0x50, 0xc7, 0x44, 0x06, 0x32, 0x4d, 0xbf, 0x49, 0xc2, 0x68, 0x8d, 0x9a, 0x4f, 0x42, - 0x0e, 0x90, 0xeb, 0x58, 0x28, 0xf4, 0x83, 0x18, 0xb0, 0x6c, 0xfb, 0xb6, 0xcf, 0xff, 0x2d, 0xb1, - 0xff, 0xe2, 0xd9, 0x55, 0xd3, 0xa7, 0x9e, 0x4f, 0x8d, 0xc8, 0x10, 0x0d, 0x22, 0x93, 0xf6, 0xc7, - 0x29, 0xd0, 0xaa, 0xd4, 0xbe, 0xdd, 0xb0, 0x50, 0x88, 0x2b, 0x84, 0xe0, 0x40, 0xc7, 0x16, 0xf6, - 0x1a, 0xa1, 0xe3, 0x13, 0x1d, 0x85, 0xb8, 0xec, 0x37, 0x89, 0x45, 0x65, 0x05, 0xce, 0x98, 0x01, - 0x66, 0x8e, 0x14, 0xa9, 0x20, 0xad, 0x9f, 0xd5, 0x3b, 0x43, 0x79, 0x15, 0x32, 0x66, 0x1d, 0x39, - 0xc4, 0x70, 0x2c, 0xe5, 0x54, 0x6c, 0x62, 0xe3, 0x8a, 0x25, 0x3f, 0x84, 0x55, 0x8f, 0x19, 0xd8, - 0xae, 0x46, 0x20, 0xb6, 0x35, 0x02, 0x14, 0x62, 0x65, 0x92, 0x61, 0xcb, 0x1f, 0x3c, 0x6d, 0xe7, - 0x27, 0xfe, 0x6a, 0xe7, 0xff, 0x6f, 0x3b, 0x61, 0xbd, 0x59, 0x2b, 0x9a, 0xbe, 0x17, 0xf3, 0x8b, - 0xff, 0x6c, 0x50, 0xeb, 0x7e, 0x29, 0x7c, 0xd4, 0xc0, 0xb4, 0xb8, 0x87, 0xcd, 0xe7, 0x4f, 0x36, - 0x20, 0xa6, 0xbf, 0x87, 0x4d, 0x7d, 0xc5, 0x73, 0x48, 0x0a, 0x67, 0xee, 0x18, 0xb5, 0x86, 0x38, - 0x9e, 0x3a, 0x11, 0xc7, 0xa8, 0x95, 0xe2, 0x58, 0xbb, 0x02, 0x97, 0xc7, 0x07, 0x53, 0xc7, 0xb4, - 0xe1, 0x13, 0x8a, 0xb5, 0xef, 0x25, 0x98, 0xab, 0x52, 0xfb, 0x86, 0xf3, 0xa0, 0xe9, 0x58, 0xfb, - 0xec, 0x4a, 0x47, 0xc4, 0xf9, 0x23, 0x98, 0x46, 0x1e, 0x4b, 0x85, 0x28, 0xca, 0xe5, 0xe2, 0x2b, - 0x1c, 0xa0, 0x42, 0x42, 0x3d, 0x5e, 0x2d, 0x5f, 0x04, 0xa8, 0xfb, 0x34, 0x34, 0x2c, 0x4c, 0x7c, - 0x2f, 0xba, 0x05, 0xfd, 0x2c, 0x9b, 0xd9, 0x63, 0x13, 0x9a, 0x02, 0x2b, 0xfd, 0x94, 0x04, 0xdb, - 0x5f, 0x24, 0x58, 0x64, 0xa6, 0xfd, 0xea, 0x9b, 0x25, 0xbc, 0x01, 0x4b, 0x2e, 0xf5, 0x8c, 0xd0, - 0xbf, 0x8f, 0x89, 0xe1, 0xd4, 0xcc, 0x3e, 0xe6, 0x0b, 0x2e, 0xf5, 0x6e, 0x31, 0x4b, 0xa5, 0x66, - 0x46, 0x07, 0xb8, 0x09, 0xab, 0x03, 0x2c, 0x3b, 0x67, 0x90, 0x37, 0x61, 0x39, 0x0c, 0x10, 0xa1, - 0xc8, 0xe4, 0xf9, 0x60, 0xfa, 0x5e, 0xc3, 0xc5, 0x21, 0xe6, 0xd4, 0x33, 0xfa, 0x52, 0x8f, 0x6d, - 0x37, 0x36, 0x69, 0xbf, 0x4a, 0x30, 0x5f, 0xa5, 0xf6, 0xae, 0x8b, 0x51, 0x50, 0x46, 0x2e, 0x22, - 0x26, 0x3e, 0x5e, 0x35, 0x74, 0xe3, 0x31, 0xf9, 0x5a, 0xf1, 0x60, 0xce, 0xeb, 0x88, 0x10, 0xec, - 0x46, 0xa9, 0xac, 0x77, 0x86, 0xda, 0x2a, 0x9c, 0x4f, 0x30, 0x15, 0x97, 0xf7, 0x5b, 0x94, 0x6a, - 0x2c, 0x1d, 0xb1, 0xf7, 0xa6, 0x6e, 0xee, 0x02, 0xf0, 0xc4, 0x32, 0xbe, 0xf0, 0x49, 0x5c, 0xef, - 0x7a, 0x86, 0x4d, 0xdc, 0xf5, 0x09, 0x96, 0x55, 0xc8, 0x04, 0xd8, 0xc4, 0xce, 0x01, 0x0e, 0xe2, - 0x73, 0x88, 0x71, 0x9c, 0x84, 0x3d, 0x64, 0xc5, 0x39, 0x7e, 0x3f, 0x0d, 0x4b, 0xdc, 0x64, 0x3b, - 0x34, 0xc4, 0xc1, 0xc7, 0x9d, 0xdd, 0x3e, 0x84, 0x59, 0xd3, 0x27, 0x04, 0x47, 0xf7, 0xda, 0x09, - 0x7e, 0x59, 0x39, 0x6c, 0xe7, 0x97, 0x1f, 0x21, 0xcf, 0xbd, 0xa6, 0xf5, 0x99, 0x35, 0x3d, 0xdb, - 0x1d, 0x57, 0x2c, 0x59, 0x83, 0x6c, 0x0d, 0x9b, 0xf5, 0xed, 0xad, 0x46, 0x80, 0xef, 0x39, 0x2d, - 0x25, 0xcb, 0x09, 0xf5, 0xcd, 0xc9, 0x57, 0xfb, 0x0a, 0x27, 0x52, 0x91, 0x73, 0x87, 0xed, 0xfc, - 0x62, 0xb4, 0x7f, 0xd7, 0xa6, 0xf5, 0xd4, 0x93, 0xbc, 0x09, 0x67, 0xbb, 0x39, 0x7b, 0x9a, 0x2f, - 0x5a, 0x3e, 0x6c, 0xe7, 0x17, 0xa2, 0x45, 0xc2, 0xa4, 0xe9, 0x19, 0x27, 0xce, 0xe0, 0xde, 0x8b, - 0x99, 0xee, 0xbf, 0x98, 0x9b, 0x10, 0xa5, 0xe8, 0x3d, 0x1c, 0x18, 0xf1, 0xa5, 0xb3, 0xb3, 0x02, - 0xdf, 0x36, 0x77, 0xd8, 0xce, 0xab, 0xd1, 0xb6, 0x29, 0x20, 0x4d, 0x5f, 0xec, 0xcc, 0xee, 0x46, - 0x93, 0x3c, 0x25, 0x17, 0x9a, 0xa4, 0xe6, 0x13, 0xcb, 0x21, 0xb6, 0xd1, 0xc0, 0x81, 0xe3, 0x5b, - 0xca, 0x4c, 0x41, 0x5a, 0x9f, 0x2a, 0x5f, 0x38, 0x6c, 0xe7, 0xcf, 0x47, 0x9b, 0x25, 0x11, 0x9a, - 0x3e, 0x2f, 0xa6, 0x3e, 0xe1, 0x33, 0xb2, 0x0b, 0x4b, 0x4c, 0xe8, 0x93, 0x4a, 0x3b, 0x7b, 0x02, - 0x4a, 0xbb, 0xe8, 0x39, 0x24, 0xa1, 0xee, 0xcc, 0x1b, 0x6a, 0x0d, 0x78, 0x9b, 0x3b, 0x11, 0x6f, - 0xa8, 0x95, 0xf0, 0xf6, 0x2e, 0x28, 0x4c, 0x7e, 0x5c, 0xae, 0x26, 0x06, 0x7f, 0x78, 0x0d, 0x4c, - 0x50, 0xcd, 0xc5, 0x96, 0x32, 0xcf, 0x65, 0xe3, 0x9c, 0x4b, 0xbd, 0x1e, 0xb1, 0xb9, 0x1e, 0x19, - 0xaf, 0x65, 0xbe, 0x79, 0x9c, 0x9f, 0xf8, 0xe7, 0x71, 0x7e, 0x42, 0xbb, 0x08, 0x17, 0x52, 0x72, - 0x56, 0xe4, 0xf4, 0xd7, 0x12, 0x97, 0xac, 0x5d, 0x17, 0x39, 0xde, 0x6d, 0x62, 0x61, 0x17, 0xdb, - 0x28, 0xc4, 0x16, 0x97, 0xb5, 0x51, 0x2f, 0x6f, 0x01, 0xb2, 0xa2, 0xbc, 0xba, 0x7a, 0x03, 0x9d, - 0x0a, 0xab, 0x58, 0xf2, 0x32, 0x9c, 0xc6, 0x0d, 0xdf, 0xac, 0xf3, 0xe2, 0x9b, 0xd2, 0xa3, 0x81, - 0xbc, 0x02, 0xd3, 0x14, 0x13, 0x4b, 0xd4, 0x5d, 0x3c, 0xd2, 0xd6, 0xe0, 0xd2, 0x50, 0x1a, 0x82, - 0x6c, 0x18, 0x97, 0x66, 0x2d, 0x12, 0x98, 0x4f, 0x3b, 0xfd, 0xc7, 0x28, 0xa2, 0x7d, 0x3a, 0x70, - 0x2a, 0xa1, 0x03, 0x6b, 0x30, 0x4b, 0x9a, 0x9e, 0x11, 0x74, 0x76, 0x8c, 0xb9, 0x66, 0x49, 0xd3, - 0x13, 0x5e, 0xb4, 0x02, 0xe4, 0xd2, 0xbd, 0xf6, 0x06, 0x71, 0xa1, 0x4a, 0xed, 0x1d, 0xcb, 0x7a, - 0x7d, 0x4a, 0xd7, 0x00, 0x44, 0x5f, 0x45, 0x95, 0xc9, 0xc2, 0xe4, 0xfa, 0xcc, 0x96, 0x5a, 0x4c, - 0xb4, 0x6b, 0x45, 0xe1, 0x47, 0xef, 0x41, 0x6b, 0x2a, 0x28, 0x49, 0x1a, 0x82, 0xe3, 0xcf, 0x12, - 0x37, 0xb2, 0xfa, 0xb3, 0xbb, 0x67, 0xb8, 0x83, 0x1d, 0xbb, 0x1e, 0x1e, 0x97, 0xeb, 0x36, 0x64, - 0x0e, 0x90, 0x6b, 0x20, 0xcb, 0x0a, 0xe2, 0x77, 0x45, 0x79, 0xfe, 0x64, 0x63, 0x39, 0xce, 0xe9, - 0x1d, 0xcb, 0x0a, 0x30, 0xa5, 0xfb, 0x61, 0xe0, 0x10, 0x5b, 0x3f, 0x73, 0x80, 0x5c, 0x36, 0xc3, - 0x32, 0xe0, 0x21, 0xf7, 0xca, 0x33, 0x60, 0x4a, 0x8f, 0x47, 0x9a, 0x06, 0x85, 0x61, 0xfc, 0xc4, - 0x21, 0xbe, 0x92, 0x40, 0xae, 0x52, 0x7b, 0x0f, 0xb3, 0xd7, 0x51, 0x80, 0xde, 0x24, 0x7d, 0xed, - 0x3f, 0xa0, 0x0e, 0x32, 0x10, 0x04, 0x7f, 0x94, 0xe2, 0x72, 0xa3, 0xa1, 0x1f, 0xe0, 0x0a, 0x09, - 0x71, 0xc0, 0x9f, 0xe0, 0x9d, 0xa8, 0x93, 0x3e, 0xde, 0xe3, 0x5d, 0x86, 0x6c, 0xdc, 0x89, 0x1b, - 0x4c, 0x3b, 0x38, 0xd7, 0xb9, 0xad, 0xfc, 0x40, 0x52, 0x54, 0x76, 0x77, 0x62, 0x3f, 0xb7, 0x1e, - 0x35, 0xb0, 0x3e, 0x83, 0xba, 0x03, 0xed, 0x7f, 0xb0, 0x36, 0x82, 0x97, 0xe0, 0xff, 0x80, 0x5f, - 0x42, 0xd4, 0x43, 0x8a, 0xd3, 0xed, 0xd7, 0x51, 0x80, 0xe9, 0xf5, 0x96, 0x59, 0xe7, 0xa2, 0x74, - 0xac, 0x33, 0x28, 0xc0, 0x22, 0xe8, 0x37, 0x70, 0x1c, 0x6a, 0xbd, 0x33, 0xd4, 0x2e, 0xc3, 0xfa, - 0x38, 0x97, 0x82, 0x9e, 0xcd, 0x05, 0x60, 0x17, 0xb9, 0x4e, 0x8d, 0xc9, 0xee, 0x5e, 0xa4, 0x13, - 0x8e, 0x4f, 0x4e, 0x9a, 0x54, 0x54, 0xf3, 0x29, 0x8e, 0x3a, 0x54, 0xb6, 0x7e, 0xca, 0xc2, 0x64, - 0x95, 0xda, 0xf2, 0x1d, 0x98, 0xe9, 0x6d, 0x49, 0x07, 0x6f, 0xa5, 0xbf, 0xa3, 0x55, 0xdf, 0x1a, - 0x03, 0x10, 0xed, 0xe2, 0xe7, 0x30, 0x97, 0x68, 0x77, 0xb5, 0xd4, 0xa5, 0x7d, 0x18, 0xf5, 0xf2, - 0x78, 0x8c, 0xf0, 0x70, 0x07, 0x66, 0x7a, 0x7b, 0xb2, 0x54, 0xea, 0x3d, 0x80, 0x74, 0xea, 0x29, - 0x8d, 0x92, 0x7c, 0x0f, 0x16, 0x06, 0x9a, 0xa4, 0xff, 0xa6, 0x2f, 0xee, 0x47, 0xa9, 0x57, 0x8e, - 0x82, 0x12, 0x7e, 0x5a, 0xb0, 0x32, 0xe4, 0xe1, 0x4a, 0x0d, 0x43, 0x3a, 0x56, 0xdd, 0x3a, 0x3a, - 0x56, 0x78, 0xf6, 0x61, 0x29, 0xed, 0x19, 0x1a, 0x12, 0xa1, 0x01, 0xa0, 0x5a, 0x3a, 0x22, 0x50, - 0x38, 0xfc, 0x0c, 0x66, 0xfb, 0x9f, 0x97, 0x4b, 0x69, 0x3b, 0xf4, 0x41, 0xd4, 0xb7, 0xc7, 0x42, - 0xc4, 0xf6, 0x4d, 0x38, 0x97, 0xfe, 0x32, 0xa4, 0xee, 0x91, 0x0a, 0x55, 0x37, 0x8f, 0x0c, 0x15, - 0x6e, 0x4d, 0x98, 0x4f, 0x6a, 0xf9, 0x5a, 0xda, 0x2e, 0x09, 0x90, 0xfa, 0xce, 0x11, 0x40, 0xc2, - 0xc9, 0x97, 0xa0, 0x0c, 0xd5, 0xe3, 0x21, 0xf9, 0x96, 0x8e, 0x56, 0xaf, 0xbe, 0x0a, 0x5a, 0xf8, - 0xff, 0x56, 0x82, 0x8b, 0xa3, 0x15, 0x35, 0x35, 0x72, 0x23, 0x97, 0xa8, 0xef, 0xbd, 0xf2, 0x92, - 0xde, 0xdc, 0x4d, 0x53, 0xd0, 0xd4, 0xdc, 0x4d, 0x01, 0xa6, 0xe7, 0xee, 0x08, 0xa9, 0x94, 0xef, - 0x42, 0xb6, 0xef, 0x17, 0x6c, 0x21, 0xbd, 0xe0, 0xba, 0x08, 0x75, 0x7d, 0x1c, 0x42, 0xec, 0xfd, - 0x83, 0x04, 0xf9, 0x71, 0xdf, 0x8f, 0xb6, 0x87, 0xc7, 0x6a, 0xe8, 0x22, 0xf5, 0xfd, 0x63, 0x2c, - 0xea, 0xb0, 0x2a, 0xdf, 0x78, 0xfa, 0x22, 0x27, 0x3d, 0x7b, 0x91, 0x93, 0xfe, 0x7e, 0x91, 0x93, - 0xbe, 0x7b, 0x99, 0x9b, 0x78, 0xf6, 0x32, 0x37, 0xf1, 0xe7, 0xcb, 0xdc, 0xc4, 0xdd, 0xad, 0x9e, - 0x9f, 0x06, 0xfb, 0xdc, 0xc1, 0xc6, 0x0d, 0x54, 0xa3, 0xa5, 0xf8, 0xdb, 0xda, 0xc1, 0xe6, 0xd5, - 0x52, 0xab, 0xe7, 0x7b, 0x1d, 0xfb, 0xa9, 0x50, 0x9b, 0xe6, 0x5f, 0xcb, 0xb6, 0xff, 0x0d, 0x00, - 0x00, 0xff, 0xff, 0x10, 0x8e, 0x60, 0x6c, 0xcf, 0x13, 0x00, 0x00, + // 1480 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdc, 0xc4, + 0x17, 0x8f, 0x9b, 0x34, 0x4d, 0x5f, 0x36, 0xbf, 0x9c, 0x34, 0x75, 0x9c, 0x6f, 0x77, 0x53, 0xe7, + 0x0b, 0x84, 0xd2, 0x24, 0x4a, 0x52, 0x09, 0x51, 0xe0, 0x90, 0x4d, 0x8a, 0x58, 0xa9, 0xa9, 0x90, + 0xd3, 0x52, 0xa9, 0x12, 0x32, 0xb3, 0xf6, 0xd4, 0x6b, 0xd5, 0x1e, 0x6f, 0x3d, 0xde, 0x74, 0xcb, + 0x01, 0x71, 0x41, 0xe2, 0x82, 0x04, 0x42, 0xe2, 0x88, 0x7a, 0xe0, 0x80, 0xc4, 0x0d, 0xf5, 0x8f, + 0xa8, 0xc4, 0xa5, 0xea, 0x09, 0x71, 0x88, 0x50, 0x7b, 0xe1, 0x9c, 0x33, 0x07, 0x34, 0x63, 0xef, + 0xac, 0xed, 0xcc, 0x26, 0x69, 0x1a, 0x7a, 0xca, 0xce, 0xbc, 0xcf, 0xcc, 0xfb, 0xcc, 0x9b, 0x37, + 0x9f, 0xf7, 0x62, 0xd0, 0x68, 0x1c, 0x79, 0x0e, 0x5e, 0xa6, 0x31, 0xba, 0x87, 0xbd, 0xba, 0xbd, + 0x1c, 0xb7, 0x97, 0x9a, 0x51, 0x18, 0x87, 0xea, 0x58, 0x62, 0x59, 0xea, 0x58, 0xf4, 0x8b, 0x45, + 0xa8, 0x67, 0x23, 0x0b, 0xd9, 0x76, 0xd8, 0x22, 0x71, 0xb2, 0x46, 0xaf, 0x14, 0x21, 0x3b, 0xc8, + 0xf7, 0x1c, 0x14, 0x87, 0x51, 0x0a, 0x98, 0x72, 0x43, 0x37, 0xe4, 0x3f, 0x97, 0xd9, 0xaf, 0x74, + 0x76, 0xc6, 0x0e, 0x69, 0x10, 0x52, 0x2b, 0x31, 0x24, 0x83, 0xc4, 0x64, 0xfc, 0x7e, 0x0a, 0x8c, + 0x2d, 0xea, 0xde, 0x6a, 0x3a, 0x28, 0xc6, 0x35, 0x42, 0x70, 0x64, 0x62, 0x07, 0x07, 0xcd, 0xd8, + 0x0b, 0x89, 0x89, 0x62, 0x5c, 0x0d, 0x5b, 0xc4, 0xa1, 0xaa, 0x06, 0x67, 0xec, 0x08, 0x33, 0x47, + 0x9a, 0x32, 0xa7, 0x2c, 0x9c, 0x35, 0x3b, 0x43, 0x75, 0x06, 0x86, 0xec, 0x06, 0xf2, 0x88, 0xe5, + 0x39, 0xda, 0xa9, 0xd4, 0xc4, 0xc6, 0x35, 0x47, 0x7d, 0x00, 0x33, 0x01, 0x33, 0xb0, 0x5d, 0xad, + 0x48, 0x6c, 0x6b, 0x45, 0x28, 0xc6, 0x5a, 0x3f, 0xc3, 0x56, 0x3f, 0x78, 0xb2, 0x5b, 0xe9, 0xfb, + 0x73, 0xb7, 0xf2, 0xa6, 0xeb, 0xc5, 0x8d, 0x56, 0x7d, 0xc9, 0x0e, 0x83, 0x94, 0x5f, 0xfa, 0x67, + 0x91, 0x3a, 0xf7, 0x96, 0xe3, 0x87, 0x4d, 0x4c, 0x97, 0x36, 0xb1, 0xfd, 0xec, 0xf1, 0x22, 0xa4, + 0xf4, 0x37, 0xb1, 0x6d, 0x4e, 0x07, 0x1e, 0x91, 0x70, 0xe6, 0x8e, 0x51, 0xbb, 0x87, 0xe3, 0x81, + 0x13, 0x71, 0x8c, 0xda, 0x12, 0xc7, 0xc6, 0x65, 0xb8, 0x74, 0x78, 0x30, 0x4d, 0x4c, 0x9b, 0x21, + 0xa1, 0xd8, 0xf8, 0x5e, 0x81, 0xd1, 0x2d, 0xea, 0x5e, 0xf7, 0xee, 0xb7, 0x3c, 0x67, 0x9b, 0x5d, + 0xe9, 0x01, 0x71, 0xfe, 0x08, 0x06, 0x51, 0xc0, 0x52, 0x21, 0x89, 0x72, 0x75, 0xe9, 0x25, 0x0e, + 0x50, 0x23, 0xb1, 0x99, 0xae, 0x56, 0x2f, 0x00, 0x34, 0x42, 0x1a, 0x5b, 0x0e, 0x26, 0x61, 0x90, + 0xdc, 0x82, 0x79, 0x96, 0xcd, 0x6c, 0xb2, 0x09, 0x43, 0x83, 0xe9, 0x3c, 0x25, 0xc1, 0xf6, 0x67, + 0x05, 0x26, 0x98, 0x69, 0x7b, 0xeb, 0xf5, 0x12, 0x5e, 0x84, 0x49, 0x9f, 0x06, 0x56, 0x1c, 0xde, + 0xc3, 0xc4, 0xf2, 0xea, 0x76, 0x8e, 0xf9, 0xb8, 0x4f, 0x83, 0x9b, 0xcc, 0x52, 0xab, 0xdb, 0xc9, + 0x01, 0x6e, 0xc0, 0xcc, 0x3e, 0x96, 0x9d, 0x33, 0xa8, 0x2b, 0x30, 0x15, 0x47, 0x88, 0x50, 0x64, + 0xf3, 0x7c, 0xb0, 0xc3, 0xa0, 0xe9, 0xe3, 0x18, 0x73, 0xea, 0x43, 0xe6, 0x64, 0xc6, 0xb6, 0x91, + 0x9a, 0x8c, 0x5f, 0x14, 0x18, 0xdb, 0xa2, 0xee, 0x86, 0x8f, 0x51, 0x54, 0x45, 0x3e, 0x22, 0x36, + 0x3e, 0xde, 0x6b, 0xe8, 0xc6, 0xa3, 0xff, 0x95, 0xe2, 0xc1, 0x9c, 0x37, 0x10, 0x21, 0xd8, 0x4f, + 0x52, 0xd9, 0xec, 0x0c, 0x8d, 0x19, 0x38, 0x5f, 0x60, 0x2a, 0x2e, 0xef, 0xd7, 0x24, 0xd5, 0x58, + 0x3a, 0xe2, 0xe0, 0x75, 0xdd, 0xdc, 0x2c, 0xf0, 0xc4, 0xb2, 0xbe, 0x08, 0x49, 0xfa, 0xde, 0xcd, + 0x21, 0x36, 0x71, 0x27, 0x24, 0x58, 0xd5, 0x61, 0x28, 0xc2, 0x36, 0xf6, 0x76, 0x70, 0x94, 0x9e, + 0x43, 0x8c, 0xd3, 0x24, 0xcc, 0x90, 0x15, 0xe7, 0xf8, 0xed, 0x34, 0x4c, 0x72, 0x93, 0xeb, 0xd1, + 0x18, 0x47, 0x1f, 0x77, 0x76, 0xfb, 0x10, 0x46, 0xec, 0x90, 0x10, 0x9c, 0xdc, 0x6b, 0x27, 0xf8, + 0x55, 0x6d, 0x6f, 0xb7, 0x32, 0xf5, 0x10, 0x05, 0xfe, 0x55, 0x23, 0x67, 0x36, 0xcc, 0x52, 0x77, + 0x5c, 0x73, 0x54, 0x03, 0x4a, 0x75, 0x6c, 0x37, 0xd6, 0x56, 0x9b, 0x11, 0xbe, 0xeb, 0xb5, 0xb5, + 0x12, 0x27, 0x94, 0x9b, 0x53, 0xaf, 0xe4, 0x1e, 0x4e, 0xa2, 0x22, 0xe7, 0xf6, 0x76, 0x2b, 0x13, + 0xc9, 0xfe, 0x5d, 0x9b, 0x91, 0x79, 0x4f, 0xea, 0x0a, 0x9c, 0xed, 0xe6, 0xec, 0x69, 0xbe, 0x68, + 0x6a, 0x6f, 0xb7, 0x32, 0x9e, 0x2c, 0x12, 0x26, 0xc3, 0x1c, 0xf2, 0xd2, 0x0c, 0xce, 0x5e, 0xcc, + 0x60, 0xfe, 0x62, 0x6e, 0x40, 0x92, 0xa2, 0x77, 0x71, 0x64, 0xa5, 0x97, 0xce, 0xce, 0x0a, 0x7c, + 0xdb, 0xf2, 0xde, 0x6e, 0x45, 0x4f, 0xb6, 0x95, 0x80, 0x0c, 0x73, 0xa2, 0x33, 0xbb, 0x91, 0x4c, + 0xf2, 0x94, 0x1c, 0x6f, 0x91, 0x7a, 0x48, 0x1c, 0x8f, 0xb8, 0x56, 0x13, 0x47, 0x5e, 0xe8, 0x68, + 0xc3, 0x73, 0xca, 0xc2, 0x40, 0x75, 0x76, 0x6f, 0xb7, 0x72, 0x3e, 0xd9, 0xac, 0x88, 0x30, 0xcc, + 0x31, 0x31, 0xf5, 0x09, 0x9f, 0x51, 0x7d, 0x98, 0x64, 0x42, 0x5f, 0x54, 0xda, 0x91, 0x13, 0x50, + 0xda, 0x89, 0xc0, 0x23, 0x05, 0x75, 0x67, 0xde, 0x50, 0x7b, 0x9f, 0xb7, 0xd1, 0x13, 0xf1, 0x86, + 0xda, 0x05, 0x6f, 0xef, 0x82, 0xc6, 0xe4, 0xc7, 0xe7, 0x6a, 0x62, 0xf1, 0xc2, 0x6b, 0x61, 0x82, + 0xea, 0x3e, 0x76, 0xb4, 0x31, 0x2e, 0x1b, 0xe7, 0x7c, 0x1a, 0x64, 0xc4, 0xe6, 0x5a, 0x62, 0xbc, + 0x3a, 0xf4, 0xcd, 0xa3, 0x4a, 0xdf, 0xdf, 0x8f, 0x2a, 0x7d, 0xc6, 0x05, 0x98, 0x95, 0xe4, 0xac, + 0xc8, 0xe9, 0xaf, 0x15, 0x2e, 0x59, 0x1b, 0x3e, 0xf2, 0x82, 0x5b, 0xc4, 0xc1, 0x3e, 0x76, 0x51, + 0x8c, 0x1d, 0x2e, 0x6b, 0x07, 0x55, 0xde, 0x39, 0x28, 0x89, 0xe7, 0xd5, 0xd5, 0x1b, 0xe8, 0xbc, + 0xb0, 0x9a, 0xa3, 0x4e, 0xc1, 0x69, 0xdc, 0x0c, 0xed, 0x06, 0x7f, 0x7c, 0x03, 0x66, 0x32, 0x50, + 0xa7, 0x61, 0x90, 0x62, 0xe2, 0x88, 0x77, 0x97, 0x8e, 0x8c, 0x79, 0xb8, 0xd8, 0x93, 0x86, 0x20, + 0x1b, 0xa7, 0x4f, 0xb3, 0x9e, 0x08, 0xcc, 0xa7, 0x9d, 0xfe, 0xe3, 0x20, 0xa2, 0x39, 0x1d, 0x38, + 0x55, 0xd0, 0x81, 0x79, 0x18, 0x21, 0xad, 0xc0, 0x8a, 0x3a, 0x3b, 0xa6, 0x5c, 0x4b, 0xa4, 0x15, + 0x08, 0x2f, 0xc6, 0x1c, 0x94, 0xe5, 0x5e, 0xb3, 0x41, 0x1c, 0xdf, 0xa2, 0xee, 0xba, 0xe3, 0xbc, + 0x3a, 0xa5, 0xab, 0x00, 0xa2, 0xaf, 0xa2, 0x5a, 0xff, 0x5c, 0xff, 0xc2, 0xf0, 0xaa, 0xbe, 0x54, + 0x68, 0xd7, 0x96, 0x84, 0x1f, 0x33, 0x83, 0x36, 0x74, 0xd0, 0x8a, 0x34, 0x04, 0xc7, 0x9f, 0x14, + 0x6e, 0x64, 0xef, 0xcf, 0xed, 0x9e, 0xe1, 0x36, 0xf6, 0xdc, 0x46, 0x7c, 0x5c, 0xae, 0x6b, 0x30, + 0xb4, 0x83, 0x7c, 0x0b, 0x39, 0x4e, 0x94, 0xd6, 0x15, 0xed, 0xd9, 0xe3, 0xc5, 0xa9, 0x34, 0xa7, + 0xd7, 0x1d, 0x27, 0xc2, 0x94, 0x6e, 0xc7, 0x91, 0x47, 0x5c, 0xf3, 0xcc, 0x0e, 0xf2, 0xd9, 0x0c, + 0xcb, 0x80, 0x07, 0xdc, 0x2b, 0xcf, 0x80, 0x01, 0x33, 0x1d, 0x19, 0x06, 0xcc, 0xf5, 0xe2, 0x27, + 0x0e, 0xf1, 0x95, 0x02, 0xea, 0x16, 0x75, 0x37, 0x31, 0xab, 0x8e, 0x02, 0xf4, 0x3a, 0xe9, 0x1b, + 0xff, 0x03, 0x7d, 0x3f, 0x03, 0x41, 0xf0, 0x47, 0x25, 0x7d, 0x6e, 0x34, 0x0e, 0x23, 0x5c, 0x23, + 0x31, 0x8e, 0x78, 0x09, 0x5e, 0x4f, 0x3a, 0xe9, 0xe3, 0x15, 0xef, 0x2a, 0x94, 0xd2, 0x4e, 0xdc, + 0x62, 0xda, 0xc1, 0xb9, 0x8e, 0xae, 0x56, 0xf6, 0x25, 0x45, 0x6d, 0x63, 0x3d, 0xf5, 0x73, 0xf3, + 0x61, 0x13, 0x9b, 0xc3, 0xa8, 0x3b, 0x30, 0xde, 0x80, 0xf9, 0x03, 0x78, 0x09, 0xfe, 0xf7, 0xf9, + 0x25, 0x24, 0x3d, 0xa4, 0x38, 0xdd, 0x76, 0x03, 0x45, 0x98, 0x5e, 0x6b, 0xdb, 0x0d, 0x2e, 0x4a, + 0xc7, 0x3a, 0x83, 0x06, 0x2c, 0x82, 0x61, 0x13, 0xa7, 0xa1, 0x36, 0x3b, 0x43, 0xe3, 0x12, 0x2c, + 0x1c, 0xe6, 0x52, 0xd0, 0x6b, 0xf1, 0x2e, 0xb0, 0x2b, 0x10, 0x4c, 0xce, 0xfe, 0xfb, 0x5e, 0xc2, + 0x98, 0xe5, 0x1a, 0x99, 0x77, 0x2b, 0x38, 0xb9, 0x5c, 0x94, 0x36, 0x90, 0xef, 0xd5, 0x59, 0x29, + 0xd8, 0x4c, 0x30, 0x5e, 0x48, 0x4e, 0x3a, 0x50, 0x89, 0x0e, 0x49, 0x1c, 0x75, 0xa8, 0xac, 0xfe, + 0x53, 0x82, 0xfe, 0x2d, 0xea, 0xaa, 0xb7, 0x61, 0x38, 0xdb, 0x26, 0xef, 0xcf, 0x94, 0x7c, 0x97, + 0xad, 0xbf, 0x75, 0x08, 0x40, 0xb4, 0xb0, 0x9f, 0xc3, 0x68, 0xa1, 0x05, 0x37, 0xa4, 0x4b, 0x73, + 0x18, 0xfd, 0xd2, 0xe1, 0x18, 0xe1, 0xe1, 0x36, 0x0c, 0x67, 0xfb, 0x44, 0x29, 0xf5, 0x0c, 0x40, + 0x4e, 0x5d, 0xd2, 0xbc, 0xa9, 0x77, 0x61, 0x7c, 0x5f, 0xe3, 0xf6, 0x7f, 0xf9, 0xe2, 0x3c, 0x4a, + 0xbf, 0x7c, 0x14, 0x94, 0xf0, 0xd3, 0x86, 0xe9, 0x1e, 0xc5, 0x54, 0x1a, 0x06, 0x39, 0x56, 0x5f, + 0x3d, 0x3a, 0x56, 0x78, 0x0e, 0x61, 0x52, 0x56, 0x1a, 0x7b, 0x44, 0x68, 0x1f, 0x50, 0x5f, 0x3e, + 0x22, 0x50, 0x38, 0xfc, 0x0c, 0x46, 0xf2, 0x25, 0xef, 0xa2, 0x6c, 0x87, 0x1c, 0x44, 0x7f, 0xfb, + 0x50, 0x88, 0xd8, 0xbe, 0x05, 0xe7, 0xe4, 0xd5, 0x4a, 0xba, 0x87, 0x14, 0xaa, 0xaf, 0x1c, 0x19, + 0x2a, 0xdc, 0xda, 0x30, 0x56, 0xac, 0x2f, 0xf3, 0xb2, 0x5d, 0x0a, 0x20, 0xfd, 0x9d, 0x23, 0x80, + 0x84, 0x93, 0x2f, 0x41, 0xeb, 0x59, 0x23, 0x7a, 0xe4, 0x9b, 0x1c, 0xad, 0x5f, 0x79, 0x19, 0xb4, + 0xf0, 0xff, 0xad, 0x02, 0x17, 0x0e, 0x56, 0x79, 0x69, 0xe4, 0x0e, 0x5c, 0xa2, 0xbf, 0xf7, 0xd2, + 0x4b, 0xb2, 0xb9, 0x2b, 0x53, 0x50, 0x69, 0xee, 0x4a, 0x80, 0xf2, 0xdc, 0x3d, 0x40, 0x2a, 0xd5, + 0x3b, 0x50, 0xca, 0xfd, 0x57, 0x3d, 0x27, 0x7f, 0x70, 0x5d, 0x84, 0xbe, 0x70, 0x18, 0x22, 0xab, + 0x92, 0x85, 0x12, 0x25, 0x55, 0xc9, 0x3c, 0x46, 0xae, 0x92, 0xf2, 0x9a, 0xa3, 0xfe, 0xa0, 0x40, + 0xe5, 0xb0, 0xaf, 0x66, 0x6b, 0xbd, 0x6f, 0xa3, 0xe7, 0x22, 0xfd, 0xfd, 0x63, 0x2c, 0xea, 0xb0, + 0xaa, 0x5e, 0x7f, 0xf2, 0xbc, 0xac, 0x3c, 0x7d, 0x5e, 0x56, 0xfe, 0x7a, 0x5e, 0x56, 0xbe, 0x7b, + 0x51, 0xee, 0x7b, 0xfa, 0xa2, 0xdc, 0xf7, 0xc7, 0x8b, 0x72, 0xdf, 0x9d, 0xd5, 0x4c, 0xc1, 0xdd, + 0xe6, 0x0e, 0x16, 0xaf, 0xa3, 0x3a, 0x5d, 0x4e, 0xbf, 0x28, 0xee, 0xac, 0x5c, 0x59, 0x6e, 0x67, + 0xbe, 0x52, 0xb2, 0x02, 0x5c, 0x1f, 0xe4, 0xdf, 0x08, 0xd7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, + 0x53, 0xce, 0xb3, 0x94, 0xc5, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1527,6 +1612,7 @@ type MsgClient interface { UpdateValidatorSharesExchRate(ctx context.Context, in *MsgUpdateValidatorSharesExchRate, opts ...grpc.CallOption) (*MsgUpdateValidatorSharesExchRateResponse, error) CalibrateDelegation(ctx context.Context, in *MsgCalibrateDelegation, opts ...grpc.CallOption) (*MsgCalibrateDelegationResponse, error) ClearBalance(ctx context.Context, in *MsgClearBalance, opts ...grpc.CallOption) (*MsgClearBalanceResponse, error) + UndelegateHost(ctx context.Context, in *MsgUndelegateHost, opts ...grpc.CallOption) (*MsgUndelegateHostResponse, error) UpdateInnerRedemptionRateBounds(ctx context.Context, in *MsgUpdateInnerRedemptionRateBounds, opts ...grpc.CallOption) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) } @@ -1655,6 +1741,15 @@ func (c *msgClient) ClearBalance(ctx context.Context, in *MsgClearBalance, opts return out, nil } +func (c *msgClient) UndelegateHost(ctx context.Context, in *MsgUndelegateHost, opts ...grpc.CallOption) (*MsgUndelegateHostResponse, error) { + out := new(MsgUndelegateHostResponse) + err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/UndelegateHost", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) UpdateInnerRedemptionRateBounds(ctx context.Context, in *MsgUpdateInnerRedemptionRateBounds, opts ...grpc.CallOption) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) { out := new(MsgUpdateInnerRedemptionRateBoundsResponse) err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/UpdateInnerRedemptionRateBounds", in, out, opts...) @@ -1679,6 +1774,7 @@ type MsgServer interface { UpdateValidatorSharesExchRate(context.Context, *MsgUpdateValidatorSharesExchRate) (*MsgUpdateValidatorSharesExchRateResponse, error) CalibrateDelegation(context.Context, *MsgCalibrateDelegation) (*MsgCalibrateDelegationResponse, error) ClearBalance(context.Context, *MsgClearBalance) (*MsgClearBalanceResponse, error) + UndelegateHost(context.Context, *MsgUndelegateHost) (*MsgUndelegateHostResponse, error) UpdateInnerRedemptionRateBounds(context.Context, *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) } @@ -1725,6 +1821,9 @@ func (*UnimplementedMsgServer) CalibrateDelegation(ctx context.Context, req *Msg func (*UnimplementedMsgServer) ClearBalance(ctx context.Context, req *MsgClearBalance) (*MsgClearBalanceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearBalance not implemented") } +func (*UnimplementedMsgServer) UndelegateHost(ctx context.Context, req *MsgUndelegateHost) (*MsgUndelegateHostResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UndelegateHost not implemented") +} func (*UnimplementedMsgServer) UpdateInnerRedemptionRateBounds(ctx context.Context, req *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateInnerRedemptionRateBounds not implemented") } @@ -1967,6 +2066,24 @@ func _Msg_ClearBalance_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_UndelegateHost_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUndelegateHost) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UndelegateHost(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.stakeibc.Msg/UndelegateHost", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UndelegateHost(ctx, req.(*MsgUndelegateHost)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_UpdateInnerRedemptionRateBounds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgUpdateInnerRedemptionRateBounds) if err := dec(in); err != nil { @@ -2041,6 +2158,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "ClearBalance", Handler: _Msg_ClearBalance_Handler, }, + { + MethodName: "UndelegateHost", + Handler: _Msg_UndelegateHost_Handler, + }, { MethodName: "UpdateInnerRedemptionRateBounds", Handler: _Msg_UpdateInnerRedemptionRateBounds_Handler, @@ -3039,6 +3160,69 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) MarshalToSizedBuffer(dAtA []b return len(dAtA) - i, nil } +func (m *MsgUndelegateHost) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUndelegateHost) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUndelegateHost) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUndelegateHostResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUndelegateHostResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUndelegateHostResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *MsgCalibrateDelegation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -3538,6 +3722,30 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) Size() (n int) { return n } +func (m *MsgUndelegateHost) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgUndelegateHostResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgCalibrateDelegation) Size() (n int) { if m == nil { return 0 @@ -6467,6 +6675,172 @@ func (m *MsgUpdateValidatorSharesExchRateResponse) Unmarshal(dAtA []byte) error } return nil } +func (m *MsgUndelegateHost) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUndelegateHost: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUndelegateHost: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", 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 + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUndelegateHostResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUndelegateHostResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUndelegateHostResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgCalibrateDelegation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 From 75ca9204e73beaaa66be9eebdd84aaa6c6fb301c Mon Sep 17 00:00:00 2001 From: sampocs Date: Mon, 18 Sep 2023 01:57:52 -0500 Subject: [PATCH 37/44] v15 upgrade handler (#941) --- app/upgrades.go | 13 +++ app/upgrades/v15/upgrades.go | 76 ++++++++++++++++ app/upgrades/v15/upgrades_test.go | 145 ++++++++++++++++++++++++++++++ 3 files changed, 234 insertions(+) create mode 100644 app/upgrades/v15/upgrades.go create mode 100644 app/upgrades/v15/upgrades_test.go diff --git a/app/upgrades.go b/app/upgrades.go index 407e297284..5b4ffd35c4 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -18,6 +18,7 @@ import ( v12 "github.com/Stride-Labs/stride/v14/app/upgrades/v12" v13 "github.com/Stride-Labs/stride/v14/app/upgrades/v13" v14 "github.com/Stride-Labs/stride/v14/app/upgrades/v14" + v15 "github.com/Stride-Labs/stride/v14/app/upgrades/v15" v2 "github.com/Stride-Labs/stride/v14/app/upgrades/v2" v3 "github.com/Stride-Labs/stride/v14/app/upgrades/v3" v4 "github.com/Stride-Labs/stride/v14/app/upgrades/v4" @@ -172,6 +173,7 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { app.StakeibcKeeper, ), ) + // v14 upgrade handler app.UpgradeKeeper.SetUpgradeHandler( v14.UpgradeName, @@ -191,6 +193,17 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { ), ) + // v15 upgrade handler + app.UpgradeKeeper.SetUpgradeHandler( + v15.UpgradeName, + v15.CreateUpgradeHandler( + app.mm, + app.configurator, + app.InterchainqueryKeeper, + app.StakeibcKeeper, + ), + ) + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { panic(fmt.Errorf("Failed to read upgrade info from disk: %w", err)) diff --git a/app/upgrades/v15/upgrades.go b/app/upgrades/v15/upgrades.go new file mode 100644 index 0000000000..e67672578d --- /dev/null +++ b/app/upgrades/v15/upgrades.go @@ -0,0 +1,76 @@ +package v15 + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + + icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" +) + +var ( + UpgradeName = "v15" + + EvmosChainId = "evmos_9001-2" + EvmosOuterMinRedemptionRate = sdk.MustNewDecFromStr("1.290") + EvmosInnerMinRedemptionRate = sdk.MustNewDecFromStr("1.318") + EvmosMaxRedemptionRate = sdk.MustNewDecFromStr("1.500") + + RedemptionRateOuterMinAdjustment = sdk.MustNewDecFromStr("0.05") + RedemptionRateInnerMinAdjustment = sdk.MustNewDecFromStr("0.03") + RedemptionRateInnerMaxAdjustment = sdk.MustNewDecFromStr("0.05") + RedemptionRateOuterMaxAdjustment = sdk.MustNewDecFromStr("0.10") +) + +// CreateUpgradeHandler creates an SDK upgrade handler for v15 +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + icqKeeper icqkeeper.Keeper, + stakeibcKeeper stakeibckeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + ctx.Logger().Info("Starting upgrade v15...") + + // Set host zone redemption rate bounds based on a percentage of their current rate + ctx.Logger().Info("Updating redemption rate bounds...") + for _, hostZone := range stakeibcKeeper.GetAllHostZone(ctx) { + if hostZone.ChainId == EvmosChainId { + hostZone.MinRedemptionRate = EvmosOuterMinRedemptionRate + hostZone.MinInnerRedemptionRate = EvmosInnerMinRedemptionRate + hostZone.MaxInnerRedemptionRate = EvmosMaxRedemptionRate + hostZone.MaxRedemptionRate = EvmosMaxRedemptionRate + + stakeibcKeeper.SetHostZone(ctx, hostZone) + } else { + outerMinDelta := hostZone.RedemptionRate.Mul(RedemptionRateOuterMinAdjustment) + innerMinDelta := hostZone.RedemptionRate.Mul(RedemptionRateInnerMinAdjustment) + innerMaxDelta := hostZone.RedemptionRate.Mul(RedemptionRateInnerMaxAdjustment) + outerMaxDelta := hostZone.RedemptionRate.Mul(RedemptionRateOuterMaxAdjustment) + + outerMin := hostZone.RedemptionRate.Sub(outerMinDelta) + innerMin := hostZone.RedemptionRate.Sub(innerMinDelta) + innerMax := hostZone.RedemptionRate.Add(innerMaxDelta) + outerMax := hostZone.RedemptionRate.Add(outerMaxDelta) + + hostZone.MinRedemptionRate = outerMin + hostZone.MinInnerRedemptionRate = innerMin + hostZone.MaxInnerRedemptionRate = innerMax + hostZone.MaxRedemptionRate = outerMax + + stakeibcKeeper.SetHostZone(ctx, hostZone) + } + } + + // Clear all stale delegator shares queries + ctx.Logger().Info("Deleting stale ICQs...") + for _, query := range icqKeeper.AllQueries(ctx) { + if query.CallbackId == stakeibckeeper.ICQCallbackID_Delegation { + icqKeeper.DeleteQuery(ctx, query.Id) + } + } + + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/app/upgrades/v15/upgrades_test.go b/app/upgrades/v15/upgrades_test.go new file mode 100644 index 0000000000..25532dad8d --- /dev/null +++ b/app/upgrades/v15/upgrades_test.go @@ -0,0 +1,145 @@ +package v15_test + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/suite" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/Stride-Labs/stride/v14/app/apptesting" + v15 "github.com/Stride-Labs/stride/v14/app/upgrades/v15" + icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" +) + +type UpgradeTestSuite struct { + apptesting.AppTestHelper +} + +func (s *UpgradeTestSuite) SetupTest() { + s.Setup() +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +type UpdateRedemptionRateBounds struct { + CurrentRedemptionRate sdk.Dec + ExpectedMinOuterRedemptionRate sdk.Dec + ExpectedMinInnerRedemptionRate sdk.Dec + ExpectedMaxInnerRedemptionRate sdk.Dec + ExpectedMaxOuterRedemptionRate sdk.Dec +} + +func (s *UpgradeTestSuite) TestUpgrade() { + dummyUpgradeHeight := int64(5) + + // Setup the store before the ugprade + checkRedemptionRatesAfterUpgrade := s.SetupRedemptionRatesBeforeUpgrade() + checkQueriesAfterUpgrade := s.SetupQueriesBeforeUpgrade() + + // Run the upgrade to set the bounds and clear pending queries + s.ConfirmUpgradeSucceededs("v15", dummyUpgradeHeight) + + // Check the store after the upgrade + checkRedemptionRatesAfterUpgrade() + checkQueriesAfterUpgrade() +} + +func (s *UpgradeTestSuite) SetupRedemptionRatesBeforeUpgrade() func() { + // Define test cases consisting of an initial redemption rate and expected bounds + testCases := []UpdateRedemptionRateBounds{ + { + CurrentRedemptionRate: sdk.MustNewDecFromStr("1.0"), + ExpectedMinOuterRedemptionRate: sdk.MustNewDecFromStr("0.95"), // 1 - 5% = 0.95 + ExpectedMinInnerRedemptionRate: sdk.MustNewDecFromStr("0.97"), // 1 - 3% = 0.97 + ExpectedMaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.05"), // 1 + 5% = 1.05 + ExpectedMaxOuterRedemptionRate: sdk.MustNewDecFromStr("1.10"), // 1 + 10% = 1.1 + }, + { + CurrentRedemptionRate: sdk.MustNewDecFromStr("1.1"), + ExpectedMinOuterRedemptionRate: sdk.MustNewDecFromStr("1.045"), // 1.1 - 5% = 1.045 + ExpectedMinInnerRedemptionRate: sdk.MustNewDecFromStr("1.067"), // 1.1 - 3% = 1.067 + ExpectedMaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.155"), // 1.1 + 5% = 1.155 + ExpectedMaxOuterRedemptionRate: sdk.MustNewDecFromStr("1.210"), // 1.1 + 10% = 1.21 + }, + { + CurrentRedemptionRate: sdk.MustNewDecFromStr("1.25"), + ExpectedMinOuterRedemptionRate: sdk.MustNewDecFromStr("1.1875"), // 1.25 - 5% = 1.1875 + ExpectedMinInnerRedemptionRate: sdk.MustNewDecFromStr("1.2125"), // 1.25 - 3% = 1.2125 + ExpectedMaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.3125"), // 1.25 + 5% = 1.3125 + ExpectedMaxOuterRedemptionRate: sdk.MustNewDecFromStr("1.3750"), // 1.25 + 10% = 1.375 + }, + } + + // Create a host zone for each test case + for i, tc := range testCases { + chainId := fmt.Sprintf("chain-%d", i) + + hostZone := stakeibctypes.HostZone{ + ChainId: chainId, + RedemptionRate: tc.CurrentRedemptionRate, + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + } + + // Create an evmos host zone + s.App.StakeibcKeeper.SetHostZone(s.Ctx, stakeibctypes.HostZone{ + ChainId: v15.EvmosChainId, + }) + + // Return callback function to chck that bounds were set + return func() { + // Confirm the correct bounds were set + for i, tc := range testCases { + chainId := fmt.Sprintf("chain-%d", i) + + hostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, chainId) + s.Require().True(found) + + s.Require().Equal(tc.ExpectedMinOuterRedemptionRate, hostZone.MinRedemptionRate, "min outer") + s.Require().Equal(tc.ExpectedMinInnerRedemptionRate, hostZone.MinInnerRedemptionRate, "min inner") + s.Require().Equal(tc.ExpectedMaxInnerRedemptionRate, hostZone.MaxInnerRedemptionRate, "max inner") + s.Require().Equal(tc.ExpectedMaxOuterRedemptionRate, hostZone.MaxRedemptionRate, "max outer") + } + + // Confirm evmos' custom bounds were set + evmosHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, v15.EvmosChainId) + s.Require().True(found) + + s.Require().Equal(v15.EvmosOuterMinRedemptionRate, evmosHostZone.MinRedemptionRate, "min outer") + s.Require().Equal(v15.EvmosInnerMinRedemptionRate, evmosHostZone.MinInnerRedemptionRate, "min inner") + s.Require().Equal(v15.EvmosMaxRedemptionRate, evmosHostZone.MaxInnerRedemptionRate, "max inner") + s.Require().Equal(v15.EvmosMaxRedemptionRate, evmosHostZone.MaxRedemptionRate, "max outer") + } +} + +func (s *UpgradeTestSuite) SetupQueriesBeforeUpgrade() func() { + // Set pending queries of different types + queries := []icqtypes.Query{ + {Id: "1", CallbackId: stakeibckeeper.ICQCallbackID_Validator}, + {Id: "2", CallbackId: stakeibckeeper.ICQCallbackID_Delegation}, // deleted + {Id: "3", CallbackId: stakeibckeeper.ICQCallbackID_Delegation}, // deleted + {Id: "4", CallbackId: stakeibckeeper.ICQCallbackID_WithdrawalBalance}, + } + expectedQueriesAfterUpgrade := []string{"1", "4"} + + for _, query := range queries { + s.App.InterchainqueryKeeper.SetQuery(s.Ctx, query) + } + + // Return callback function to check that queries were removed + return func() { + queryIds := []string{} + for _, query := range s.App.InterchainqueryKeeper.AllQueries(s.Ctx) { + queryIds = append(queryIds, query.Id) + } + + s.Require().Len(queryIds, 2) + s.Require().ElementsMatch(queryIds, expectedQueriesAfterUpgrade) + } +} From 64f0701f080db60905b3cf9e4807e292e56e5cb1 Mon Sep 17 00:00:00 2001 From: dev-stride <114107648+dev-stride@users.noreply.github.com> Date: Mon, 18 Sep 2023 02:07:00 -0500 Subject: [PATCH 38/44] v15 Import Paths (#944) Co-authored-by: stride-dev --- app/app.go | 76 ++++---- app/apptesting/test_helpers.go | 4 +- app/proposals_whitelisting.go | 6 +- app/test_setup.go | 4 +- app/upgrades.go | 42 ++-- app/upgrades/v10/upgrades.go | 24 +-- app/upgrades/v10/upgrades_test.go | 24 +-- app/upgrades/v13/upgrades.go | 2 +- app/upgrades/v13/upgrades_test.go | 2 +- app/upgrades/v14/upgrades.go | 14 +- app/upgrades/v14/upgrades_test.go | 14 +- app/upgrades/v15/upgrades.go | 4 +- app/upgrades/v15/upgrades_test.go | 10 +- app/upgrades/v3/upgrades.go | 6 +- app/upgrades/v3/upgrades_test.go | 2 +- app/upgrades/v4/upgrades_test.go | 2 +- app/upgrades/v5/upgrades.go | 20 +- app/upgrades/v5/upgrades_test.go | 30 +-- app/upgrades/v6/upgrades.go | 2 +- app/upgrades/v6/upgrades_test.go | 8 +- app/upgrades/v7/upgrades.go | 16 +- app/upgrades/v7/upgrades_test.go | 14 +- app/upgrades/v8/upgrades.go | 12 +- app/upgrades/v8/upgrades_test.go | 10 +- app/upgrades/v9/upgrades.go | 2 +- app/upgrades/v9/upgrades_test.go | 14 +- cmd/consumer.go | 2 +- cmd/strided/main.go | 6 +- cmd/strided/root.go | 4 +- go.mod | 2 +- proto/cosmos/staking/v1beta1/lsm_tx.proto | 2 +- proto/cosmwasm/wasm/v1/cosmwasm.proto | 2 +- proto/stride/autopilot/genesis.proto | 2 +- proto/stride/autopilot/params.proto | 2 +- proto/stride/autopilot/query.proto | 2 +- proto/stride/claim/claim.proto | 2 +- proto/stride/claim/genesis.proto | 2 +- proto/stride/claim/params.proto | 2 +- proto/stride/claim/query.proto | 2 +- proto/stride/claim/tx.proto | 2 +- proto/stride/epochs/genesis.proto | 2 +- proto/stride/epochs/query.proto | 4 +- proto/stride/icacallbacks/callback_data.proto | 2 +- proto/stride/icacallbacks/genesis.proto | 2 +- proto/stride/icacallbacks/packet.proto | 2 +- proto/stride/icacallbacks/params.proto | 2 +- proto/stride/icacallbacks/query.proto | 2 +- proto/stride/icacallbacks/tx.proto | 2 +- proto/stride/icaoracle/callbacks.proto | 2 +- proto/stride/icaoracle/contract.proto | 2 +- proto/stride/icaoracle/genesis.proto | 2 +- proto/stride/icaoracle/icaoracle.proto | 2 +- proto/stride/icaoracle/query.proto | 2 +- proto/stride/icaoracle/tx.proto | 2 +- proto/stride/interchainquery/v1/genesis.proto | 2 +- .../stride/interchainquery/v1/messages.proto | 2 +- proto/stride/interchainquery/v1/query.proto | 2 +- proto/stride/mint/v1beta1/genesis.proto | 2 +- proto/stride/mint/v1beta1/mint.proto | 2 +- proto/stride/mint/v1beta1/query.proto | 2 +- proto/stride/ratelimit/genesis.proto | 2 +- proto/stride/ratelimit/gov.proto | 2 +- proto/stride/ratelimit/params.proto | 2 +- proto/stride/ratelimit/query.proto | 2 +- proto/stride/ratelimit/ratelimit.proto | 2 +- proto/stride/records/callbacks.proto | 2 +- proto/stride/records/genesis.proto | 2 +- proto/stride/records/params.proto | 2 +- proto/stride/records/query.proto | 2 +- proto/stride/records/records.proto | 2 +- proto/stride/stakeibc/address_unbonding.proto | 2 +- proto/stride/stakeibc/callbacks.proto | 2 +- proto/stride/stakeibc/epoch_tracker.proto | 2 +- proto/stride/stakeibc/genesis.proto | 2 +- proto/stride/stakeibc/gov.proto | 2 +- proto/stride/stakeibc/host_zone.proto | 2 +- proto/stride/stakeibc/ica_account.proto | 2 +- proto/stride/stakeibc/packet.proto | 2 +- proto/stride/stakeibc/params.proto | 2 +- proto/stride/stakeibc/query.proto | 2 +- proto/stride/stakeibc/tx.proto | 3 +- proto/stride/stakeibc/validator.proto | 2 +- proto/stride/vesting/tx.proto | 2 +- proto/stride/vesting/vesting.proto | 2 +- scripts/protocgen.sh | 2 +- testutil/keeper/claim.go | 4 +- testutil/keeper/epochs.go | 4 +- testutil/keeper/icacallbacks.go | 4 +- testutil/keeper/interchainquery.go | 4 +- testutil/keeper/records.go | 4 +- testutil/keeper/stakeibc.go | 4 +- testutil/network/network.go | 4 +- utils/cache_ctx_test.go | 2 +- utils/module_account_test.go | 2 +- utils/utils.go | 6 +- utils/utils_test.go | 2 +- x/autopilot/client/cli/query.go | 2 +- x/autopilot/genesis.go | 4 +- x/autopilot/genesis_test.go | 6 +- x/autopilot/handler.go | 4 +- x/autopilot/keeper/airdrop.go | 8 +- x/autopilot/keeper/airdrop_test.go | 10 +- x/autopilot/keeper/grpc_query_params.go | 2 +- x/autopilot/keeper/grpc_query_params_test.go | 2 +- x/autopilot/keeper/keeper.go | 6 +- x/autopilot/keeper/keeper_test.go | 4 +- x/autopilot/keeper/liquidstake.go | 6 +- x/autopilot/keeper/liquidstake_test.go | 14 +- x/autopilot/keeper/params.go | 2 +- x/autopilot/keeper/params_test.go | 2 +- x/autopilot/module.go | 6 +- x/autopilot/module_ibc.go | 4 +- x/autopilot/types/genesis.pb.go | 4 +- x/autopilot/types/genesis_test.go | 2 +- x/autopilot/types/params.pb.go | 4 +- x/autopilot/types/parser_test.go | 4 +- x/autopilot/types/query.pb.go | 6 +- x/claim/client/cli/cli_test.go | 14 +- x/claim/client/cli/query.go | 2 +- x/claim/client/cli/tx.go | 2 +- x/claim/client/cli/tx_claim_free_amount.go | 2 +- x/claim/client/cli/tx_create_airdrop.go | 2 +- x/claim/client/cli/tx_delete_airdrop.go | 2 +- .../client/cli/tx_set_airdrop_allocations.go | 2 +- x/claim/genesis_test.go | 6 +- x/claim/handler.go | 4 +- x/claim/keeper/claim.go | 8 +- x/claim/keeper/claim_test.go | 10 +- x/claim/keeper/genesis.go | 2 +- x/claim/keeper/grpc_query.go | 2 +- x/claim/keeper/hooks.go | 6 +- x/claim/keeper/hooks_test.go | 6 +- x/claim/keeper/keeper.go | 2 +- x/claim/keeper/keeper_test.go | 6 +- x/claim/keeper/msg_server.go | 2 +- x/claim/keeper/msg_server_test.go | 4 +- x/claim/keeper/params.go | 2 +- x/claim/migrations/v2/convert.go | 4 +- x/claim/migrations/v2/convert_test.go | 4 +- x/claim/migrations/v2/migrations.go | 4 +- x/claim/module.go | 6 +- x/claim/types/claim.pb.go | 46 ++--- x/claim/types/expected_keepers.go | 2 +- x/claim/types/genesis.pb.go | 6 +- x/claim/types/msgs.go | 2 +- x/claim/types/params.pb.go | 60 +++--- x/claim/types/query.pb.go | 152 +++++++-------- x/claim/types/tx.pb.go | 80 ++++---- x/claim/vesting/client/cli/tx.go | 2 +- x/claim/vesting/client/testutil/suite.go | 2 +- x/claim/vesting/handler.go | 2 +- x/claim/vesting/module.go | 4 +- x/claim/vesting/msg_server.go | 2 +- x/claim/vesting/types/codec.go | 2 +- x/claim/vesting/types/common_test.go | 2 +- x/claim/vesting/types/tx.pb.go | 4 +- x/claim/vesting/types/vesting.pb.go | 4 +- x/claim/vesting/types/vesting_account.go | 4 +- x/claim/vesting/types/vesting_account_test.go | 2 +- x/epochs/client/cli/query.go | 2 +- x/epochs/genesis.go | 4 +- x/epochs/genesis_test.go | 8 +- x/epochs/handler.go | 4 +- x/epochs/keeper/abci.go | 4 +- x/epochs/keeper/abci_test.go | 4 +- x/epochs/keeper/epoch.go | 2 +- x/epochs/keeper/epoch_test.go | 2 +- x/epochs/keeper/grpc_query.go | 2 +- x/epochs/keeper/grpc_query_test.go | 2 +- x/epochs/keeper/hooks.go | 2 +- x/epochs/keeper/keeper.go | 2 +- x/epochs/keeper/keeper_test.go | 4 +- x/epochs/module.go | 8 +- x/epochs/simulation/genesis.go | 2 +- x/epochs/types/genesis.pb.go | 54 ++--- x/epochs/types/query.pb.go | 60 +++--- x/icacallbacks/client/cli/query.go | 2 +- .../client/cli/query_callback_data.go | 2 +- .../client/cli/query_callback_data_test.go | 8 +- x/icacallbacks/client/cli/query_params.go | 2 +- x/icacallbacks/client/cli/tx.go | 2 +- x/icacallbacks/genesis.go | 4 +- x/icacallbacks/genesis_test.go | 8 +- x/icacallbacks/handler.go | 4 +- x/icacallbacks/ibc_module.go | 4 +- x/icacallbacks/icacallbacks.go | 2 +- x/icacallbacks/icacallbacks_test.go | 6 +- x/icacallbacks/keeper/callback_data.go | 2 +- x/icacallbacks/keeper/callback_data_test.go | 8 +- x/icacallbacks/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_callback_data.go | 2 +- .../keeper/grpc_query_callback_data_test.go | 6 +- x/icacallbacks/keeper/grpc_query_params.go | 2 +- .../keeper/grpc_query_params_test.go | 4 +- x/icacallbacks/keeper/keeper.go | 2 +- x/icacallbacks/keeper/msg_server.go | 2 +- x/icacallbacks/keeper/params.go | 2 +- x/icacallbacks/keeper/params_test.go | 4 +- x/icacallbacks/migrations/v2/convert.go | 6 +- x/icacallbacks/migrations/v2/convert_test.go | 4 +- x/icacallbacks/migrations/v2/migrations.go | 2 +- x/icacallbacks/module.go | 6 +- x/icacallbacks/module_simulation.go | 6 +- x/icacallbacks/types/callback_data.pb.go | 4 +- x/icacallbacks/types/genesis.pb.go | 6 +- x/icacallbacks/types/genesis_test.go | 2 +- x/icacallbacks/types/packet.pb.go | 4 +- x/icacallbacks/types/params.pb.go | 4 +- x/icacallbacks/types/query.pb.go | 4 +- x/icacallbacks/types/tx.pb.go | 4 +- x/icaoracle/client/cli/cli_test.go | 10 +- x/icaoracle/client/cli/query.go | 2 +- x/icaoracle/client/cli/query_test.go | 2 +- x/icaoracle/client/cli/tx.go | 2 +- x/icaoracle/client/cli/tx_test.go | 2 +- x/icaoracle/ibc_middleware.go | 2 +- x/icaoracle/keeper/events.go | 2 +- x/icaoracle/keeper/genesis.go | 2 +- x/icaoracle/keeper/genesis_test.go | 2 +- x/icaoracle/keeper/grpc_query.go | 2 +- x/icaoracle/keeper/grpc_query_test.go | 2 +- x/icaoracle/keeper/ibc.go | 4 +- x/icaoracle/keeper/ibc_test.go | 4 +- x/icaoracle/keeper/icacallbacks.go | 2 +- .../keeper/icacallbacks_instantiate_oracle.go | 6 +- .../icacallbacks_instantiate_oracle_test.go | 4 +- .../keeper/icacallbacks_update_oracle.go | 6 +- .../keeper/icacallbacks_update_oracle_test.go | 4 +- x/icaoracle/keeper/icaoracle.go | 2 +- x/icaoracle/keeper/icaoracle_test.go | 6 +- x/icaoracle/keeper/keeper.go | 2 +- x/icaoracle/keeper/keeper_test.go | 6 +- x/icaoracle/keeper/metric.go | 2 +- x/icaoracle/keeper/metric_test.go | 2 +- x/icaoracle/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_oracle_test.go | 2 +- .../msg_server_instantiate_oracle_test.go | 4 +- .../keeper/msg_server_remove_oracle_test.go | 2 +- .../msg_server_restore_oracle_ica_test.go | 2 +- .../keeper/msg_server_toggle_oracle_test.go | 2 +- x/icaoracle/keeper/oracle.go | 2 +- x/icaoracle/keeper/oracle_test.go | 2 +- x/icaoracle/module.go | 6 +- x/icaoracle/types/callbacks.pb.go | 6 +- x/icaoracle/types/contract.pb.go | 44 ++--- x/icaoracle/types/cosmwasm.pb.go | 50 ++--- x/icaoracle/types/expected_keepers.go | 2 +- x/icaoracle/types/genesis.pb.go | 4 +- x/icaoracle/types/genesis_test.go | 4 +- x/icaoracle/types/ica_test.go | 2 +- x/icaoracle/types/icaoracle.pb.go | 4 +- x/icaoracle/types/message_add_oracle.go | 2 +- x/icaoracle/types/message_add_oracle_test.go | 4 +- .../types/message_instantiate_oracle.go | 2 +- .../types/message_instantiate_oracle_test.go | 4 +- .../types/message_remove_oracle_test.go | 4 +- ..._restore_oracle_interchain_account_test.go | 4 +- .../types/message_toggle_oracle_test.go | 4 +- x/icaoracle/types/metric_test.go | 2 +- x/icaoracle/types/oracle_test.go | 2 +- x/icaoracle/types/query.pb.go | 6 +- x/icaoracle/types/tx.pb.go | 70 +++---- x/interchainquery/client/cli/query.go | 2 +- x/interchainquery/genesis.go | 4 +- x/interchainquery/handler.go | 4 +- x/interchainquery/keeper/abci.go | 2 +- x/interchainquery/keeper/grpc_query.go | 2 +- x/interchainquery/keeper/keeper.go | 4 +- x/interchainquery/keeper/keeper_test.go | 6 +- x/interchainquery/keeper/msg_server.go | 4 +- .../keeper/msg_submit_query_response_test.go | 4 +- x/interchainquery/keeper/queries.go | 2 +- x/interchainquery/keeper/queries_test.go | 8 +- x/interchainquery/module.go | 6 +- x/interchainquery/types/genesis.pb.go | 88 ++++----- x/interchainquery/types/messages.pb.go | 60 +++--- x/interchainquery/types/query.pb.go | 4 +- x/mint/client/cli/cli_test.go | 4 +- x/mint/client/cli/query.go | 2 +- x/mint/client/rest/grpc_query_test.go | 4 +- x/mint/genesis.go | 4 +- x/mint/keeper/grpc_query.go | 2 +- x/mint/keeper/hooks.go | 4 +- x/mint/keeper/keeper.go | 2 +- x/mint/module.go | 8 +- x/mint/types/expected_keepers.go | 2 +- x/mint/types/genesis.pb.go | 4 +- x/mint/types/mint.pb.go | 76 ++++---- x/mint/types/params.go | 2 +- x/mint/types/query.pb.go | 50 ++--- x/ratelimit/client/cli/query.go | 2 +- x/ratelimit/client/cli/tx.go | 2 +- x/ratelimit/client/proposal_handler.go | 2 +- x/ratelimit/genesis.go | 4 +- x/ratelimit/genesis_test.go | 8 +- x/ratelimit/handler.go | 6 +- x/ratelimit/ibc_middleware.go | 2 +- x/ratelimit/keeper/gov/gov.go | 4 +- x/ratelimit/keeper/gov/gov_test.go | 8 +- x/ratelimit/keeper/grpc_query.go | 2 +- x/ratelimit/keeper/grpc_query_test.go | 2 +- x/ratelimit/keeper/hooks.go | 2 +- x/ratelimit/keeper/hooks_test.go | 4 +- x/ratelimit/keeper/keeper.go | 2 +- x/ratelimit/keeper/keeper_test.go | 4 +- x/ratelimit/keeper/packet.go | 6 +- x/ratelimit/keeper/packet_test.go | 4 +- x/ratelimit/keeper/params.go | 2 +- x/ratelimit/keeper/rate_limit.go | 2 +- x/ratelimit/keeper/rate_limit_test.go | 6 +- x/ratelimit/module.go | 6 +- x/ratelimit/types/flow_test.go | 2 +- x/ratelimit/types/genesis.pb.go | 46 ++--- x/ratelimit/types/gov.pb.go | 52 ++--- x/ratelimit/types/gov_add_rate_limit_test.go | 4 +- .../types/gov_remove_rate_limit_test.go | 4 +- .../types/gov_reset_rate_limit_test.go | 4 +- .../types/gov_update_rate_limit_test.go | 4 +- x/ratelimit/types/params.pb.go | 4 +- x/ratelimit/types/query.pb.go | 90 ++++----- x/ratelimit/types/quota_test.go | 2 +- x/ratelimit/types/ratelimit.pb.go | 64 +++--- x/records/client/cli/query.go | 2 +- x/records/client/cli/query_deposit_record.go | 2 +- .../client/cli/query_deposit_record_test.go | 8 +- .../cli/query_epoch_unbonding_record.go | 2 +- x/records/client/cli/query_lsm_deposits.go | 2 +- x/records/client/cli/query_params.go | 2 +- .../cli/query_user_redemption_record.go | 2 +- .../cli/query_user_redemption_record_test.go | 8 +- x/records/client/cli/tx.go | 2 +- x/records/genesis.go | 4 +- x/records/genesis_test.go | 8 +- x/records/handler.go | 4 +- x/records/keeper/callback_lsm_transfer.go | 6 +- .../keeper/callback_lsm_transfer_test.go | 4 +- x/records/keeper/callback_native_transfer.go | 4 +- .../keeper/callback_native_transfer_test.go | 6 +- x/records/keeper/callbacks.go | 2 +- x/records/keeper/deposit_record.go | 2 +- x/records/keeper/epoch_unbonding_record.go | 4 +- .../keeper/epoch_unbonding_record_test.go | 8 +- x/records/keeper/grpc_query.go | 2 +- x/records/keeper/grpc_query_deposit_record.go | 2 +- .../keeper/grpc_query_deposit_record_test.go | 8 +- .../grpc_query_epoch_unbonding_record.go | 2 +- .../grpc_query_epoch_unbonding_record_test.go | 6 +- x/records/keeper/grpc_query_lsm_deposits.go | 2 +- .../keeper/grpc_query_lsm_deposits_test.go | 2 +- x/records/keeper/grpc_query_params.go | 2 +- x/records/keeper/grpc_query_params_test.go | 4 +- .../grpc_query_user_redemption_record.go | 2 +- ...c_query_user_redemption_record_for_user.go | 2 +- .../grpc_query_user_redemption_record_test.go | 6 +- x/records/keeper/ibc.go | 4 +- x/records/keeper/keeper.go | 4 +- x/records/keeper/keeper_test.go | 2 +- x/records/keeper/lsm_token_deposit.go | 2 +- x/records/keeper/lsm_token_deposit_test.go | 2 +- x/records/keeper/params.go | 2 +- x/records/keeper/params_test.go | 4 +- x/records/keeper/transfer.go | 6 +- x/records/keeper/transfer_test.go | 4 +- x/records/keeper/user_redemption_record.go | 2 +- .../keeper/user_redemption_record_test.go | 8 +- x/records/migrations/v2/convert.go | 4 +- x/records/migrations/v2/convert_test.go | 4 +- x/records/migrations/v2/migrations.go | 4 +- x/records/module.go | 6 +- x/records/module_ibc.go | 2 +- x/records/module_simulation.go | 6 +- x/records/types/callbacks.pb.go | 4 +- x/records/types/genesis.pb.go | 42 ++-- x/records/types/genesis_test.go | 2 +- x/records/types/params.pb.go | 4 +- x/records/types/query.pb.go | 152 +++++++-------- x/records/types/records.pb.go | 6 +- x/stakeibc/client/cli/query.go | 2 +- x/stakeibc/client/cli/query_epoch_tracker.go | 2 +- .../client/cli/query_epoch_tracker_test.go | 6 +- x/stakeibc/client/cli/query_host_zone.go | 2 +- x/stakeibc/client/cli/query_module_address.go | 2 +- .../client/cli/query_next_packet_sequence.go | 2 +- x/stakeibc/client/cli/query_params.go | 2 +- x/stakeibc/client/cli/query_register_ica.go | 2 +- x/stakeibc/client/cli/query_validator.go | 2 +- x/stakeibc/client/cli/tx.go | 2 +- x/stakeibc/client/cli/tx_add_validators.go | 2 +- .../client/cli/tx_add_validators_proposal.go | 2 +- .../client/cli/tx_calibrate_delegation.go | 2 +- .../client/cli/tx_change_validator_weight.go | 2 +- .../client/cli/tx_claim_undelegated_tokens.go | 2 +- x/stakeibc/client/cli/tx_clear_balance.go | 2 +- x/stakeibc/client/cli/tx_delete_validator.go | 2 +- x/stakeibc/client/cli/tx_liquid_stake.go | 2 +- x/stakeibc/client/cli/tx_lsm_liquid_stake.go | 2 +- .../client/cli/tx_rebalance_validators.go | 2 +- x/stakeibc/client/cli/tx_redeem_stake.go | 2 +- .../client/cli/tx_register_host_zone.go | 2 +- .../cli/tx_restore_interchain_account.go | 2 +- .../client/cli/tx_toggle_lsm_proposal.go | 2 +- x/stakeibc/client/cli/tx_undelegate_host.go | 2 +- x/stakeibc/client/cli/tx_update_delegation.go | 2 +- .../tx_update_inner_redemption_rate_bounds.go | 2 +- x/stakeibc/client/proposal_handler.go | 2 +- x/stakeibc/genesis.go | 4 +- x/stakeibc/genesis_test.go | 8 +- x/stakeibc/handler.go | 4 +- x/stakeibc/ibc_middleware.go | 4 +- x/stakeibc/keeper/abci.go | 2 +- x/stakeibc/keeper/consumer.go | 2 +- x/stakeibc/keeper/consumer_test.go | 2 +- x/stakeibc/keeper/deposit_records.go | 6 +- x/stakeibc/keeper/deposit_records_test.go | 8 +- .../keeper/epoch_elapsed_shares_test.go | 4 +- x/stakeibc/keeper/epoch_tracker.go | 2 +- x/stakeibc/keeper/epoch_tracker_test.go | 8 +- x/stakeibc/keeper/events.go | 4 +- x/stakeibc/keeper/gov.go | 2 +- x/stakeibc/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_address_unbondings.go | 4 +- x/stakeibc/keeper/grpc_query_epoch_tracker.go | 2 +- .../keeper/grpc_query_epoch_tracker_test.go | 6 +- x/stakeibc/keeper/grpc_query_host_zone.go | 2 +- .../keeper/grpc_query_host_zone_test.go | 6 +- .../keeper/grpc_query_module_address.go | 2 +- .../keeper/grpc_query_next_packet_sequence.go | 2 +- .../grpc_query_next_packet_sequence_test.go | 2 +- x/stakeibc/keeper/grpc_query_params.go | 2 +- x/stakeibc/keeper/grpc_query_params_test.go | 4 +- x/stakeibc/keeper/grpc_query_register_ica.go | 2 +- x/stakeibc/keeper/grpc_query_validator.go | 2 +- .../keeper/grpc_query_validator_test.go | 6 +- x/stakeibc/keeper/hooks.go | 10 +- x/stakeibc/keeper/host_zone.go | 4 +- x/stakeibc/keeper/host_zone_test.go | 8 +- x/stakeibc/keeper/icacallbacks.go | 2 +- x/stakeibc/keeper/icacallbacks_claim.go | 8 +- x/stakeibc/keeper/icacallbacks_claim_test.go | 6 +- x/stakeibc/keeper/icacallbacks_delegate.go | 8 +- .../keeper/icacallbacks_delegate_test.go | 6 +- x/stakeibc/keeper/icacallbacks_detokenize.go | 8 +- .../keeper/icacallbacks_detokenize_test.go | 8 +- x/stakeibc/keeper/icacallbacks_rebalance.go | 6 +- .../keeper/icacallbacks_rebalance_test.go | 6 +- x/stakeibc/keeper/icacallbacks_redemption.go | 8 +- .../keeper/icacallbacks_redemption_test.go | 6 +- x/stakeibc/keeper/icacallbacks_reinvest.go | 12 +- .../keeper/icacallbacks_reinvest_test.go | 16 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 8 +- .../keeper/icacallbacks_undelegate_test.go | 8 +- x/stakeibc/keeper/icqcallbacks.go | 2 +- .../icqcallbacks_callibrate_delegation.go | 6 +- .../keeper/icqcallbacks_delegator_shares.go | 6 +- .../icqcallbacks_delegator_shares_test.go | 6 +- x/stakeibc/keeper/icqcallbacks_fee_balance.go | 10 +- .../keeper/icqcallbacks_fee_balance_test.go | 8 +- .../icqcallbacks_validator_exchange_rate.go | 6 +- ...qcallbacks_validator_exchange_rate_test.go | 8 +- .../keeper/icqcallbacks_withdrawal_balance.go | 8 +- .../icqcallbacks_withdrawal_balance_test.go | 10 +- x/stakeibc/keeper/invariants.go | 2 +- x/stakeibc/keeper/keeper.go | 10 +- x/stakeibc/keeper/keeper_test.go | 6 +- x/stakeibc/keeper/lsm.go | 4 +- x/stakeibc/keeper/lsm_test.go | 6 +- x/stakeibc/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_validators.go | 2 +- .../keeper/msg_server_add_validators_test.go | 2 +- .../keeper/msg_server_calibrate_delegation.go | 2 +- .../msg_server_change_validator_weight.go | 2 +- .../msg_server_claim_undelegated_tokens.go | 6 +- ...sg_server_claim_undelegated_tokens_test.go | 8 +- x/stakeibc/keeper/msg_server_clear_balance.go | 2 +- .../keeper/msg_server_clear_balance_test.go | 4 +- .../keeper/msg_server_delete_validator.go | 2 +- .../msg_server_delete_validator_test.go | 2 +- x/stakeibc/keeper/msg_server_liquid_stake.go | 4 +- .../keeper/msg_server_liquid_stake_test.go | 6 +- .../keeper/msg_server_lsm_liquid_stake.go | 6 +- .../msg_server_lsm_liquid_stake_test.go | 8 +- .../keeper/msg_server_rebalance_validators.go | 2 +- x/stakeibc/keeper/msg_server_redeem_stake.go | 6 +- .../keeper/msg_server_redeem_stake_test.go | 6 +- .../keeper/msg_server_register_host_zone.go | 8 +- .../msg_server_register_host_zone_test.go | 8 +- .../msg_server_restore_interchain_account.go | 4 +- ..._server_restore_interchain_account_test.go | 4 +- x/stakeibc/keeper/msg_server_submit_tx.go | 12 +- ...ver_update_inner_redemption_rate_bounds.go | 2 +- ...pdate_inner_redemption_rate_bounds_test.go | 2 +- ...erver_update_validator_shares_exch_rate.go | 2 +- x/stakeibc/keeper/msg_undelegate_host.go | 2 +- x/stakeibc/keeper/params.go | 2 +- x/stakeibc/keeper/params_test.go | 4 +- x/stakeibc/keeper/reward_allocation.go | 2 +- x/stakeibc/keeper/reward_allocation_test.go | 6 +- x/stakeibc/keeper/unbonding_records.go | 6 +- .../keeper/unbonding_records_cleanup_test.go | 4 +- ...ords_get_host_zone_unbondings_msgs_test.go | 8 +- ...ng_records_initiate_all_unbondings_test.go | 4 +- ...ding_records_sweep_unbonded_tokens_test.go | 6 +- x/stakeibc/keeper/undelegate_host.go | 4 +- x/stakeibc/keeper/undelegate_host_test.go | 6 +- .../keeper/update_redemption_rates_test.go | 6 +- .../update_validator_shares_exch_rate_test.go | 2 +- x/stakeibc/keeper/validator_selection.go | 6 +- x/stakeibc/keeper/validator_selection_test.go | 6 +- x/stakeibc/migrations/v2/convert.go | 4 +- x/stakeibc/migrations/v2/convert_test.go | 4 +- x/stakeibc/migrations/v2/migrations.go | 4 +- x/stakeibc/migrations/v3/convert.go | 4 +- x/stakeibc/migrations/v3/convert_test.go | 4 +- x/stakeibc/migrations/v3/migrations.go | 4 +- x/stakeibc/module.go | 6 +- x/stakeibc/module_simulation.go | 6 +- x/stakeibc/simulation/add_validator.go | 4 +- .../simulation/change_validator_weight.go | 4 +- .../simulation/claim_undelegated_tokens.go | 4 +- x/stakeibc/simulation/delete_validator.go | 4 +- x/stakeibc/simulation/liquid_stake.go | 4 +- x/stakeibc/simulation/rebalance_validators.go | 4 +- .../simulation/restore_interchain_account.go | 4 +- x/stakeibc/simulation/update_delegation.go | 4 +- x/stakeibc/types/address_unbonding.pb.go | 40 ++-- x/stakeibc/types/callbacks.pb.go | 6 +- x/stakeibc/types/epoch_tracker.pb.go | 4 +- x/stakeibc/types/expected_keepers.go | 2 +- x/stakeibc/types/genesis.pb.go | 38 ++-- x/stakeibc/types/genesis_test.go | 2 +- x/stakeibc/types/gov.pb.go | 4 +- x/stakeibc/types/host_zone.pb.go | 4 +- x/stakeibc/types/host_zone_test.go | 2 +- x/stakeibc/types/ica_account.pb.go | 6 +- x/stakeibc/types/lsm_tx.pb.go | 6 +- x/stakeibc/types/message_add_validators.go | 2 +- .../types/message_add_validators_test.go | 4 +- .../types/message_calibrate_delegation.go | 2 +- .../types/message_change_validator_weight.go | 2 +- .../message_change_validator_weight_test.go | 2 +- .../types/message_claim_undelegated_tokens.go | 2 +- .../message_claim_undelegated_tokens_test.go | 2 +- x/stakeibc/types/message_clear_balance.go | 2 +- x/stakeibc/types/message_delete_validator.go | 2 +- .../types/message_delete_validator_test.go | 2 +- x/stakeibc/types/message_liquid_stake_test.go | 2 +- .../types/message_lsm_liquid_stake_test.go | 4 +- .../types/message_rebalance_validators.go | 2 +- .../message_rebalance_validators_test.go | 4 +- x/stakeibc/types/message_redeem_stake_test.go | 2 +- .../types/message_register_host_zone.go | 2 +- ...message_restore_interchain_account_test.go | 2 +- x/stakeibc/types/message_undelegate_host.go | 2 +- ...age_update_inner_redemption_rate_bounds.go | 2 +- x/stakeibc/types/packet.pb.go | 4 +- x/stakeibc/types/params.pb.go | 72 +++---- x/stakeibc/types/query.pb.go | 148 +++++++------- x/stakeibc/types/tx.pb.go | 184 +++++++++--------- x/stakeibc/types/validator.pb.go | 56 +++--- 559 files changed, 2066 insertions(+), 2067 deletions(-) diff --git a/app/app.go b/app/app.go index 7138c1a7c4..1b2a0ef8fe 100644 --- a/app/app.go +++ b/app/app.go @@ -13,7 +13,7 @@ import ( nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -66,12 +66,12 @@ import ( evmosvestingkeeper "github.com/evmos/vesting/x/vesting/keeper" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - claimvesting "github.com/Stride-Labs/stride/v14/x/claim/vesting" - claimvestingtypes "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + claimvesting "github.com/Stride-Labs/stride/v15/x/claim/vesting" + claimvestingtypes "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" - "github.com/Stride-Labs/stride/v14/x/mint" - mintkeeper "github.com/Stride-Labs/stride/v14/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/mint" + mintkeeper "github.com/Stride-Labs/stride/v15/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" dbm "github.com/cometbft/cometbft-db" abci "github.com/cometbft/cometbft/abci/types" @@ -118,38 +118,38 @@ import ( // monitoringp "github.com/tendermint/spn/x/monitoringp" // monitoringpkeeper "github.com/tendermint/spn/x/monitoringp/keeper" - epochsmodule "github.com/Stride-Labs/stride/v14/x/epochs" - epochsmodulekeeper "github.com/Stride-Labs/stride/v14/x/epochs/keeper" - epochsmoduletypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - - "github.com/Stride-Labs/stride/v14/x/interchainquery" - interchainquerykeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - interchainquerytypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - - "github.com/Stride-Labs/stride/v14/x/autopilot" - autopilotkeeper "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" - - "github.com/Stride-Labs/stride/v14/x/claim" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - icacallbacksmodule "github.com/Stride-Labs/stride/v14/x/icacallbacks" - icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - icacallbacksmoduletypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - icaoracle "github.com/Stride-Labs/stride/v14/x/icaoracle" - icaoraclekeeper "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" - icaoracletypes "github.com/Stride-Labs/stride/v14/x/icaoracle/types" - ratelimitmodule "github.com/Stride-Labs/stride/v14/x/ratelimit" - ratelimitclient "github.com/Stride-Labs/stride/v14/x/ratelimit/client" - ratelimitmodulekeeper "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - ratelimitmoduletypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" - recordsmodule "github.com/Stride-Labs/stride/v14/x/records" - recordsmodulekeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" - recordsmoduletypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibcmodule "github.com/Stride-Labs/stride/v14/x/stakeibc" - stakeibcclient "github.com/Stride-Labs/stride/v14/x/stakeibc/client" - stakeibcmodulekeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibcmoduletypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochsmodule "github.com/Stride-Labs/stride/v15/x/epochs" + epochsmodulekeeper "github.com/Stride-Labs/stride/v15/x/epochs/keeper" + epochsmoduletypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + + "github.com/Stride-Labs/stride/v15/x/interchainquery" + interchainquerykeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + interchainquerytypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + + "github.com/Stride-Labs/stride/v15/x/autopilot" + autopilotkeeper "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" + + "github.com/Stride-Labs/stride/v15/x/claim" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + icacallbacksmodule "github.com/Stride-Labs/stride/v15/x/icacallbacks" + icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + icacallbacksmoduletypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icaoracle "github.com/Stride-Labs/stride/v15/x/icaoracle" + icaoraclekeeper "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" + icaoracletypes "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + ratelimitmodule "github.com/Stride-Labs/stride/v15/x/ratelimit" + ratelimitclient "github.com/Stride-Labs/stride/v15/x/ratelimit/client" + ratelimitmodulekeeper "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + ratelimitmoduletypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + recordsmodule "github.com/Stride-Labs/stride/v15/x/records" + recordsmodulekeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" + recordsmoduletypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibcmodule "github.com/Stride-Labs/stride/v15/x/stakeibc" + stakeibcclient "github.com/Stride-Labs/stride/v15/x/stakeibc/client" + stakeibcmodulekeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibcmoduletypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ccvconsumer "github.com/cosmos/interchain-security/v3/x/ccv/consumer" ccvconsumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper" diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 41b2e15325..5f31a728a5 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -32,8 +32,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/utils" ) var ( diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index ab752cacd6..be1928072c 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -17,9 +17,9 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" - autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var WhiteListModule = map[string]struct{}{ diff --git a/app/test_setup.go b/app/test_setup.go index 7720706edd..1a31f750cc 100644 --- a/app/test_setup.go +++ b/app/test_setup.go @@ -21,9 +21,9 @@ import ( ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing" consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - testutil "github.com/Stride-Labs/stride/v14/testutil" + testutil "github.com/Stride-Labs/stride/v15/testutil" - cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" ) const Bech32Prefix = "stride" diff --git a/app/upgrades.go b/app/upgrades.go index 5b4ffd35c4..bbc9b3757c 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -13,27 +13,27 @@ import ( consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - v10 "github.com/Stride-Labs/stride/v14/app/upgrades/v10" - v11 "github.com/Stride-Labs/stride/v14/app/upgrades/v11" - v12 "github.com/Stride-Labs/stride/v14/app/upgrades/v12" - v13 "github.com/Stride-Labs/stride/v14/app/upgrades/v13" - v14 "github.com/Stride-Labs/stride/v14/app/upgrades/v14" - v15 "github.com/Stride-Labs/stride/v14/app/upgrades/v15" - v2 "github.com/Stride-Labs/stride/v14/app/upgrades/v2" - v3 "github.com/Stride-Labs/stride/v14/app/upgrades/v3" - v4 "github.com/Stride-Labs/stride/v14/app/upgrades/v4" - v5 "github.com/Stride-Labs/stride/v14/app/upgrades/v5" - v6 "github.com/Stride-Labs/stride/v14/app/upgrades/v6" - v7 "github.com/Stride-Labs/stride/v14/app/upgrades/v7" - v8 "github.com/Stride-Labs/stride/v14/app/upgrades/v8" - v9 "github.com/Stride-Labs/stride/v14/app/upgrades/v9" - autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - icaoracletypes "github.com/Stride-Labs/stride/v14/x/icaoracle/types" - ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + v10 "github.com/Stride-Labs/stride/v15/app/upgrades/v10" + v11 "github.com/Stride-Labs/stride/v15/app/upgrades/v11" + v12 "github.com/Stride-Labs/stride/v15/app/upgrades/v12" + v13 "github.com/Stride-Labs/stride/v15/app/upgrades/v13" + v14 "github.com/Stride-Labs/stride/v15/app/upgrades/v14" + v15 "github.com/Stride-Labs/stride/v15/app/upgrades/v15" + v2 "github.com/Stride-Labs/stride/v15/app/upgrades/v2" + v3 "github.com/Stride-Labs/stride/v15/app/upgrades/v3" + v4 "github.com/Stride-Labs/stride/v15/app/upgrades/v4" + v5 "github.com/Stride-Labs/stride/v15/app/upgrades/v5" + v6 "github.com/Stride-Labs/stride/v15/app/upgrades/v6" + v7 "github.com/Stride-Labs/stride/v15/app/upgrades/v7" + v8 "github.com/Stride-Labs/stride/v15/app/upgrades/v8" + v9 "github.com/Stride-Labs/stride/v15/app/upgrades/v9" + autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icaoracletypes "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { diff --git a/app/upgrades/v10/upgrades.go b/app/upgrades/v10/upgrades.go index 3c57cb6f5f..994eda4b93 100644 --- a/app/upgrades/v10/upgrades.go +++ b/app/upgrades/v10/upgrades.go @@ -25,18 +25,18 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibctmmigrations "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint/migrations" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - mintkeeper "github.com/Stride-Labs/stride/v14/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - ratelimitkeeper "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - ratelimitgov "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper/gov" - ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + mintkeeper "github.com/Stride-Labs/stride/v15/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + ratelimitkeeper "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + ratelimitgov "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper/gov" + ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index 11c6f19ab0..ab182c64aa 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -16,22 +16,22 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/app/apptesting" - v10 "github.com/Stride-Labs/stride/v14/app/upgrades/v10" - "github.com/Stride-Labs/stride/v14/utils" - - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + v10 "github.com/Stride-Labs/stride/v15/app/upgrades/v10" + "github.com/Stride-Labs/stride/v15/utils" + + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) var initialRateLimitChannelValue = sdk.NewInt(1_000_000) diff --git a/app/upgrades/v13/upgrades.go b/app/upgrades/v13/upgrades.go index 19d3424bb2..115cb64d31 100644 --- a/app/upgrades/v13/upgrades.go +++ b/app/upgrades/v13/upgrades.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v13/upgrades_test.go b/app/upgrades/v13/upgrades_test.go index 4750cde54d..1e824ec964 100644 --- a/app/upgrades/v13/upgrades_test.go +++ b/app/upgrades/v13/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v15/app/apptesting" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v14/upgrades.go b/app/upgrades/v14/upgrades.go index 36a014c764..ef06d87d03 100644 --- a/app/upgrades/v14/upgrades.go +++ b/app/upgrades/v14/upgrades.go @@ -23,13 +23,13 @@ import ( "github.com/evmos/vesting/x/vesting/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - "github.com/Stride-Labs/stride/v14/utils" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v14/upgrades_test.go b/app/upgrades/v14/upgrades_test.go index b8081ed44b..2ad6615857 100644 --- a/app/upgrades/v14/upgrades_test.go +++ b/app/upgrades/v14/upgrades_test.go @@ -13,13 +13,13 @@ import ( evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/app/apptesting" - v14 "github.com/Stride-Labs/stride/v14/app/upgrades/v14" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - interchainquerytypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/app/apptesting" + v14 "github.com/Stride-Labs/stride/v15/app/upgrades/v14" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + interchainquerytypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v15/upgrades.go b/app/upgrades/v15/upgrades.go index e67672578d..e6be6a38fb 100644 --- a/app/upgrades/v15/upgrades.go +++ b/app/upgrades/v15/upgrades.go @@ -5,8 +5,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v15/upgrades_test.go b/app/upgrades/v15/upgrades_test.go index 25532dad8d..6de1186d3c 100644 --- a/app/upgrades/v15/upgrades_test.go +++ b/app/upgrades/v15/upgrades_test.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/app/apptesting" - v15 "github.com/Stride-Labs/stride/v14/app/upgrades/v15" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + v15 "github.com/Stride-Labs/stride/v15/app/upgrades/v15" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go index 1d001796bb..fe3982ec18 100644 --- a/app/upgrades/v3/upgrades.go +++ b/app/upgrades/v3/upgrades.go @@ -7,9 +7,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v3/upgrades_test.go b/app/upgrades/v3/upgrades_test.go index a74a741787..2c544edea0 100644 --- a/app/upgrades/v3/upgrades_test.go +++ b/app/upgrades/v3/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v15/app/apptesting" ) var ( diff --git a/app/upgrades/v4/upgrades_test.go b/app/upgrades/v4/upgrades_test.go index 8024894f46..a3ebe67ba9 100644 --- a/app/upgrades/v4/upgrades_test.go +++ b/app/upgrades/v4/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v15/app/apptesting" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 449ac34aa2..4b93546eb0 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -12,16 +12,16 @@ import ( authz "github.com/cosmos/cosmos-sdk/x/authz" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimmigration "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - icacallbacksmigration "github.com/Stride-Labs/stride/v14/x/icacallbacks/migrations/v2" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - interchainquerykeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - recordsmigration "github.com/Stride-Labs/stride/v14/x/records/migrations/v2" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + claimmigration "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + icacallbacksmigration "github.com/Stride-Labs/stride/v15/x/icacallbacks/migrations/v2" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + interchainquerykeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + recordsmigration "github.com/Stride-Labs/stride/v15/x/records/migrations/v2" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index a50a0a0cac..fadf48352c 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -12,21 +12,21 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - - "github.com/Stride-Labs/stride/v14/app/apptesting" - upgradev5 "github.com/Stride-Labs/stride/v14/app/upgrades/v5" - oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - recordkeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" - oldrecordtypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" - newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app" + + "github.com/Stride-Labs/stride/v15/app/apptesting" + upgradev5 "github.com/Stride-Labs/stride/v15/app/upgrades/v5" + oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + recordkeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" + oldrecordtypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v6/upgrades.go b/app/upgrades/v6/upgrades.go index 0d25b49916..b528b60d0c 100644 --- a/app/upgrades/v6/upgrades.go +++ b/app/upgrades/v6/upgrades.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v6/upgrades_test.go b/app/upgrades/v6/upgrades_test.go index 4fe1ce08dc..7ea95897c7 100644 --- a/app/upgrades/v6/upgrades_test.go +++ b/app/upgrades/v6/upgrades_test.go @@ -10,11 +10,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index 5ebce3590b..4218e5a08a 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -23,14 +23,14 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v14/utils" - epochskeeper "github.com/Stride-Labs/stride/v14/x/epochs/keeper" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - mintkeeper "github.com/Stride-Labs/stride/v14/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + epochskeeper "github.com/Stride-Labs/stride/v15/x/epochs/keeper" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + mintkeeper "github.com/Stride-Labs/stride/v15/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v7 diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index 68fee9939b..f831e09bbd 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -9,17 +9,17 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/app/apptesting" - v7 "github.com/Stride-Labs/stride/v14/app/upgrades/v7" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/app/apptesting" + v7 "github.com/Stride-Labs/stride/v15/app/upgrades/v7" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" ) var ( diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 51931e5ef5..88bcebdb17 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/Stride-Labs/stride/v14/utils" - autopilotkeeper "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/utils" + autopilotkeeper "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) var ( diff --git a/app/upgrades/v8/upgrades_test.go b/app/upgrades/v8/upgrades_test.go index b671cd38bd..872b9f92f1 100644 --- a/app/upgrades/v8/upgrades_test.go +++ b/app/upgrades/v8/upgrades_test.go @@ -9,11 +9,11 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - v8 "github.com/Stride-Labs/stride/v14/app/upgrades/v8" - autopilottypes "github.com/Stride-Labs/stride/v14/x/autopilot/types" - "github.com/Stride-Labs/stride/v14/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + v8 "github.com/Stride-Labs/stride/v15/app/upgrades/v8" + autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) var ( diff --git a/app/upgrades/v9/upgrades.go b/app/upgrades/v9/upgrades.go index 01eb2247f4..ed51bb37d1 100644 --- a/app/upgrades/v9/upgrades.go +++ b/app/upgrades/v9/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" ) // CreateUpgradeHandler creates an SDK upgrade handler for v29 diff --git a/app/upgrades/v9/upgrades_test.go b/app/upgrades/v9/upgrades_test.go index 380cc83807..ef4077cb7c 100644 --- a/app/upgrades/v9/upgrades_test.go +++ b/app/upgrades/v9/upgrades_test.go @@ -6,18 +6,18 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/app/apptesting" - v9 "github.com/Stride-Labs/stride/v14/app/upgrades/v9" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/app/apptesting" + v9 "github.com/Stride-Labs/stride/v15/app/upgrades/v9" + "github.com/Stride-Labs/stride/v15/utils" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" - oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" + "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" + oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" ) type UpgradeTestSuite struct { diff --git a/cmd/consumer.go b/cmd/consumer.go index bcfdaa0a8b..723066f09a 100644 --- a/cmd/consumer.go +++ b/cmd/consumer.go @@ -18,7 +18,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/testutil" + "github.com/Stride-Labs/stride/v15/testutil" ) func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { diff --git a/cmd/strided/main.go b/cmd/strided/main.go index 453e83cbc6..2962a335a6 100644 --- a/cmd/strided/main.go +++ b/cmd/strided/main.go @@ -5,10 +5,10 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/cmd" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/cmd" - cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" ) func main() { diff --git a/cmd/strided/root.go b/cmd/strided/root.go index 6013a87706..1467a80fc9 100644 --- a/cmd/strided/root.go +++ b/cmd/strided/root.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/snapshots" "gopkg.in/yaml.v2" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" cometbftdb "github.com/cometbft/cometbft-db" "github.com/cometbft/cometbft/libs/cli" @@ -47,7 +47,7 @@ import ( genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/Stride-Labs/stride/v14/app" + "github.com/Stride-Labs/stride/v15/app" ) var ChainID string diff --git a/go.mod b/go.mod index 12e752a244..5781b497f7 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Stride-Labs/stride/v14 +module github.com/Stride-Labs/stride/v15 go 1.19 diff --git a/proto/cosmos/staking/v1beta1/lsm_tx.proto b/proto/cosmos/staking/v1beta1/lsm_tx.proto index a2df937995..dd37379909 100644 --- a/proto/cosmos/staking/v1beta1/lsm_tx.proto +++ b/proto/cosmos/staking/v1beta1/lsm_tx.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; // Given SDK version conflicts between gaia with LSM and Stride, // we can't import the RedeemTokensForShares type diff --git a/proto/cosmwasm/wasm/v1/cosmwasm.proto b/proto/cosmwasm/wasm/v1/cosmwasm.proto index c0e0c27a86..b683cefc75 100644 --- a/proto/cosmwasm/wasm/v1/cosmwasm.proto +++ b/proto/cosmwasm/wasm/v1/cosmwasm.proto @@ -4,7 +4,7 @@ package cosmwasm.wasm.v1; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // MsgExecuteContract submits the given message data to a smart contract message MsgExecuteContract { diff --git a/proto/stride/autopilot/genesis.proto b/proto/stride/autopilot/genesis.proto index b968ba022c..5bc9695ce0 100644 --- a/proto/stride/autopilot/genesis.proto +++ b/proto/stride/autopilot/genesis.proto @@ -4,7 +4,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/autopilot/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/autopilot/params.proto b/proto/stride/autopilot/params.proto index da9993cbc7..c18c8fde1c 100644 --- a/proto/stride/autopilot/params.proto +++ b/proto/stride/autopilot/params.proto @@ -3,7 +3,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/autopilot/types"; // Params defines the parameters for the module. // next id: 1 diff --git a/proto/stride/autopilot/query.proto b/proto/stride/autopilot/query.proto index 298d603af2..52b8a06b90 100644 --- a/proto/stride/autopilot/query.proto +++ b/proto/stride/autopilot/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/autopilot/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/claim.proto b/proto/stride/claim/claim.proto index 7e59c1d032..f9aeb5515f 100644 --- a/proto/stride/claim/claim.proto +++ b/proto/stride/claim/claim.proto @@ -3,7 +3,7 @@ package stride.claim; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; enum Action { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/claim/genesis.proto b/proto/stride/claim/genesis.proto index 46055bbb6f..62583049b9 100644 --- a/proto/stride/claim/genesis.proto +++ b/proto/stride/claim/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/claim/claim.proto"; import "stride/claim/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/claim/params.proto b/proto/stride/claim/params.proto index 2d88f661bc..33e832f059 100644 --- a/proto/stride/claim/params.proto +++ b/proto/stride/claim/params.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; // Params defines the claim module's parameters. message Params { repeated Airdrop airdrops = 1; } diff --git a/proto/stride/claim/query.proto b/proto/stride/claim/query.proto index bd772fedcb..f327a22bf5 100644 --- a/proto/stride/claim/query.proto +++ b/proto/stride/claim/query.proto @@ -9,7 +9,7 @@ import "stride/claim/params.proto"; import "stride/vesting/vesting.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/tx.proto b/proto/stride/claim/tx.proto index 76b7ee2205..05dbbd18bc 100644 --- a/proto/stride/claim/tx.proto +++ b/proto/stride/claim/tx.proto @@ -4,7 +4,7 @@ package stride.claim; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/epochs/genesis.proto b/proto/stride/epochs/genesis.proto index 8f9a5b5d66..9829ebd0ca 100755 --- a/proto/stride/epochs/genesis.proto +++ b/proto/stride/epochs/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/epochs/types"; message EpochInfo { string identifier = 1; diff --git a/proto/stride/epochs/query.proto b/proto/stride/epochs/query.proto index 342f903d6d..600bd6b0db 100644 --- a/proto/stride/epochs/query.proto +++ b/proto/stride/epochs/query.proto @@ -6,7 +6,7 @@ import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "stride/epochs/genesis.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/epochs/types"; // Query defines the gRPC querier service. service Query { @@ -51,7 +51,7 @@ message QueryEpochInfoResponse { // import "epochs/params.proto"; // // this line is used by starport scaffolding # 1 -// option go_package = "github.com/Stride-Labs/stride/v14/x/epochs/types"; +// option go_package = "github.com/Stride-Labs/stride/v15/x/epochs/types"; // // Query defines the gRPC querier service. // service Query { diff --git a/proto/stride/icacallbacks/callback_data.proto b/proto/stride/icacallbacks/callback_data.proto index 1277b4064c..bb6919c6b6 100755 --- a/proto/stride/icacallbacks/callback_data.proto +++ b/proto/stride/icacallbacks/callback_data.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icacallbacks; -option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; message CallbackData { string callback_key = 1; diff --git a/proto/stride/icacallbacks/genesis.proto b/proto/stride/icacallbacks/genesis.proto index a37a2e5e52..71674a441b 100755 --- a/proto/stride/icacallbacks/genesis.proto +++ b/proto/stride/icacallbacks/genesis.proto @@ -6,7 +6,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; // GenesisState defines the icacallbacks module's genesis state. message GenesisState { diff --git a/proto/stride/icacallbacks/packet.proto b/proto/stride/icacallbacks/packet.proto index 188a3d42be..cb40c226a6 100755 --- a/proto/stride/icacallbacks/packet.proto +++ b/proto/stride/icacallbacks/packet.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; message IcacallbacksPacketData { oneof packet { diff --git a/proto/stride/icacallbacks/params.proto b/proto/stride/icacallbacks/params.proto index ee846c7ed1..5a731f22bf 100755 --- a/proto/stride/icacallbacks/params.proto +++ b/proto/stride/icacallbacks/params.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; // Params defines the parameters for the module. message Params { option (gogoproto.goproto_stringer) = false; } diff --git a/proto/stride/icacallbacks/query.proto b/proto/stride/icacallbacks/query.proto index 82c28af0ee..1cd1fef5f0 100644 --- a/proto/stride/icacallbacks/query.proto +++ b/proto/stride/icacallbacks/query.proto @@ -8,7 +8,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icacallbacks/tx.proto b/proto/stride/icacallbacks/tx.proto index 4a3c247b25..1cb488d6c9 100755 --- a/proto/stride/icacallbacks/tx.proto +++ b/proto/stride/icacallbacks/tx.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/tx/import -option go_package = "github.com/Stride-Labs/stride/v14/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/icaoracle/callbacks.proto b/proto/stride/icaoracle/callbacks.proto index 6f22b692c9..fb99bbfae3 100644 --- a/proto/stride/icaoracle/callbacks.proto +++ b/proto/stride/icaoracle/callbacks.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // Callback data for instantiating an oracle message InstantiateOracleCallback { string oracle_chain_id = 1; } diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto index 2f0137a566..cecee957ee 100644 --- a/proto/stride/icaoracle/contract.proto +++ b/proto/stride/icaoracle/contract.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icaoracle; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // InstanitateOracleContract is the contract-specific instantiate message message MsgInstantiateOracleContract { diff --git a/proto/stride/icaoracle/genesis.proto b/proto/stride/icaoracle/genesis.proto index 9b699ae95b..be8e03554d 100644 --- a/proto/stride/icaoracle/genesis.proto +++ b/proto/stride/icaoracle/genesis.proto @@ -4,7 +4,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // Params defines the icaoracle module parameters. message Params {} diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto index 4bbee1d959..f09ace582c 100644 --- a/proto/stride/icaoracle/icaoracle.proto +++ b/proto/stride/icaoracle/icaoracle.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // Oracle structure stores context about the CW oracle sitting a different chain message Oracle { diff --git a/proto/stride/icaoracle/query.proto b/proto/stride/icaoracle/query.proto index 1b56cc2516..0a3138087e 100644 --- a/proto/stride/icaoracle/query.proto +++ b/proto/stride/icaoracle/query.proto @@ -5,7 +5,7 @@ import "stride/icaoracle/icaoracle.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto index 1413c8109b..5c824e5abc 100644 --- a/proto/stride/icaoracle/tx.proto +++ b/proto/stride/icaoracle/tx.proto @@ -5,7 +5,7 @@ import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/genesis.proto b/proto/stride/interchainquery/v1/genesis.proto index 23edd61403..786928b39a 100644 --- a/proto/stride/interchainquery/v1/genesis.proto +++ b/proto/stride/interchainquery/v1/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/interchainquery/types"; enum TimeoutPolicy { REJECT_QUERY_RESPONSE = 0; diff --git a/proto/stride/interchainquery/v1/messages.proto b/proto/stride/interchainquery/v1/messages.proto index 18cbe785cc..a55a1c7e1f 100755 --- a/proto/stride/interchainquery/v1/messages.proto +++ b/proto/stride/interchainquery/v1/messages.proto @@ -6,7 +6,7 @@ import "cosmos_proto/cosmos.proto"; import "google/api/annotations.proto"; import "tendermint/crypto/proof.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/interchainquery/types"; // Msg defines the interchainquery Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/query.proto b/proto/stride/interchainquery/v1/query.proto index 805e348816..6251e89ad9 100644 --- a/proto/stride/interchainquery/v1/query.proto +++ b/proto/stride/interchainquery/v1/query.proto @@ -5,7 +5,7 @@ import "stride/interchainquery/v1/genesis.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/interchainquery/types"; service QueryService { rpc PendingQueries(QueryPendingQueriesRequest) diff --git a/proto/stride/mint/v1beta1/genesis.proto b/proto/stride/mint/v1beta1/genesis.proto index 932a071705..3e4f0d5997 100755 --- a/proto/stride/mint/v1beta1/genesis.proto +++ b/proto/stride/mint/v1beta1/genesis.proto @@ -4,7 +4,7 @@ package stride.mint.v1beta1; import "gogoproto/gogo.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/mint/types"; // GenesisState defines the mint module's genesis state. message GenesisState { diff --git a/proto/stride/mint/v1beta1/mint.proto b/proto/stride/mint/v1beta1/mint.proto index c65080ca1f..c8a746f93a 100755 --- a/proto/stride/mint/v1beta1/mint.proto +++ b/proto/stride/mint/v1beta1/mint.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.mint.v1beta1; -option go_package = "github.com/Stride-Labs/stride/v14/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/mint/types"; import "gogoproto/gogo.proto"; diff --git a/proto/stride/mint/v1beta1/query.proto b/proto/stride/mint/v1beta1/query.proto index 957b26cb4d..6c08d91854 100755 --- a/proto/stride/mint/v1beta1/query.proto +++ b/proto/stride/mint/v1beta1/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/mint/types"; // Query provides defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/genesis.proto b/proto/stride/ratelimit/genesis.proto index d4bbf84c82..e2ccd5a52b 100644 --- a/proto/stride/ratelimit/genesis.proto +++ b/proto/stride/ratelimit/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/ratelimit/params.proto"; import "stride/ratelimit/ratelimit.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; // GenesisState defines the ratelimit module's genesis state. message GenesisState { diff --git a/proto/stride/ratelimit/gov.proto b/proto/stride/ratelimit/gov.proto index a7d0cddcbc..8eb347d686 100644 --- a/proto/stride/ratelimit/gov.proto +++ b/proto/stride/ratelimit/gov.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; message AddRateLimitProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/ratelimit/params.proto b/proto/stride/ratelimit/params.proto index 841536ef97..1c823a44c2 100644 --- a/proto/stride/ratelimit/params.proto +++ b/proto/stride/ratelimit/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.ratelimit; -option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; // Params defines the ratelimit module's parameters. message Params {} diff --git a/proto/stride/ratelimit/query.proto b/proto/stride/ratelimit/query.proto index 00e699ec9b..7f838d4780 100644 --- a/proto/stride/ratelimit/query.proto +++ b/proto/stride/ratelimit/query.proto @@ -5,7 +5,7 @@ import "stride/ratelimit/ratelimit.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/ratelimit.proto b/proto/stride/ratelimit/ratelimit.proto index 549dbe39df..6ea0710c26 100644 --- a/proto/stride/ratelimit/ratelimit.proto +++ b/proto/stride/ratelimit/ratelimit.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; enum PacketDirection { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/records/callbacks.proto b/proto/stride/records/callbacks.proto index f10fe832af..f7d0954399 100644 --- a/proto/stride/records/callbacks.proto +++ b/proto/stride/records/callbacks.proto @@ -3,7 +3,7 @@ package stride.records; import "stride/records/records.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; message TransferCallback { uint64 deposit_record_id = 1; } diff --git a/proto/stride/records/genesis.proto b/proto/stride/records/genesis.proto index c4a18d67ed..538745788a 100644 --- a/proto/stride/records/genesis.proto +++ b/proto/stride/records/genesis.proto @@ -5,7 +5,7 @@ import "stride/records/params.proto"; import "stride/records/records.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; // GenesisState defines the records module's genesis state. message GenesisState { diff --git a/proto/stride/records/params.proto b/proto/stride/records/params.proto index 58042d0824..f557291f0e 100644 --- a/proto/stride/records/params.proto +++ b/proto/stride/records/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.records; -option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; // Params defines the parameters for the module. message Params {} \ No newline at end of file diff --git a/proto/stride/records/query.proto b/proto/stride/records/query.proto index 1037ed74be..9d21b318c4 100644 --- a/proto/stride/records/query.proto +++ b/proto/stride/records/query.proto @@ -8,7 +8,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto index 4b897278e1..f9e50ac627 100644 --- a/proto/stride/records/records.proto +++ b/proto/stride/records/records.proto @@ -4,7 +4,7 @@ package stride.records; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; message UserRedemptionRecord { string id = 1; // {chain_id}.{epoch}.{sender} diff --git a/proto/stride/stakeibc/address_unbonding.proto b/proto/stride/stakeibc/address_unbonding.proto index db6e84a5a1..d3b2c4244b 100644 --- a/proto/stride/stakeibc/address_unbonding.proto +++ b/proto/stride/stakeibc/address_unbonding.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message AddressUnbonding { string address = 1; diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 5656f6b1de..f752cf3700 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -6,7 +6,7 @@ import "stride/records/records.proto"; import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message SplitDelegation { string validator = 1; diff --git a/proto/stride/stakeibc/epoch_tracker.proto b/proto/stride/stakeibc/epoch_tracker.proto index fca1ad90e9..3acfd0a480 100755 --- a/proto/stride/stakeibc/epoch_tracker.proto +++ b/proto/stride/stakeibc/epoch_tracker.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message EpochTracker { string epoch_identifier = 1; diff --git a/proto/stride/stakeibc/genesis.proto b/proto/stride/stakeibc/genesis.proto index dc761f2be1..1c5433cb38 100644 --- a/proto/stride/stakeibc/genesis.proto +++ b/proto/stride/stakeibc/genesis.proto @@ -7,7 +7,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; // GenesisState defines the stakeibc module's genesis state. message GenesisState { diff --git a/proto/stride/stakeibc/gov.proto b/proto/stride/stakeibc/gov.proto index fb86685ff2..289c765b6a 100644 --- a/proto/stride/stakeibc/gov.proto +++ b/proto/stride/stakeibc/gov.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "gogoproto/gogo.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message AddValidatorsProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index d55c67a84e..fd25783922 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -5,7 +5,7 @@ import "stride/stakeibc/validator.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message HostZone { string chain_id = 1; diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto index d28e68be3f..0a4288cbcb 100755 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; enum ICAAccountType { DELEGATION = 0; diff --git a/proto/stride/stakeibc/packet.proto b/proto/stride/stakeibc/packet.proto index 75b4a954f3..2f99129c33 100755 --- a/proto/stride/stakeibc/packet.proto +++ b/proto/stride/stakeibc/packet.proto @@ -3,7 +3,7 @@ package stride.stakeibc; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message StakeibcPacketData { oneof packet { diff --git a/proto/stride/stakeibc/params.proto b/proto/stride/stakeibc/params.proto index ae9e3ec62f..b532155ec9 100755 --- a/proto/stride/stakeibc/params.proto +++ b/proto/stride/stakeibc/params.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; // Params defines the parameters for the module. // next id: 20 diff --git a/proto/stride/stakeibc/query.proto b/proto/stride/stakeibc/query.proto index f1b3afaaeb..f991fbff67 100644 --- a/proto/stride/stakeibc/query.proto +++ b/proto/stride/stakeibc/query.proto @@ -10,7 +10,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; import "stride/stakeibc/address_unbonding.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index 6896faf553..f62c63825c 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -4,7 +4,7 @@ package stride.stakeibc; import "stride/stakeibc/ica_account.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; @@ -179,7 +179,6 @@ message MsgUndelegateHost { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; - } message MsgUndelegateHostResponse {} diff --git a/proto/stride/stakeibc/validator.proto b/proto/stride/stakeibc/validator.proto index 29b43dfecf..795992d772 100644 --- a/proto/stride/stakeibc/validator.proto +++ b/proto/stride/stakeibc/validator.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; message Validator { string name = 1; diff --git a/proto/stride/vesting/tx.proto b/proto/stride/vesting/tx.proto index 7a4f3958c1..81a6804045 100644 --- a/proto/stride/vesting/tx.proto +++ b/proto/stride/vesting/tx.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.vesting; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/vesting/types"; // Msg defines the bank Msg service. service Msg {} diff --git a/proto/stride/vesting/vesting.proto b/proto/stride/vesting/vesting.proto index 616ec9bdad..80faa06b57 100644 --- a/proto/stride/vesting/vesting.proto +++ b/proto/stride/vesting/vesting.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/auth/v1beta1/auth.proto"; -option go_package = "github.com/Stride-Labs/stride/v14/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v15/x/claim/vesting/types"; // BaseVestingAccount implements the VestingAccount interface. It contains all // the necessary fields needed for any vesting account implementation. diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index b3afd78b24..581becbea9 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -26,5 +26,5 @@ cd .. # move proto files to the right places # # Note: Proto files are suffixed with the current binary version. -cp -r github.com/Stride-Labs/stride/v14/* ./ +cp -r github.com/Stride-Labs/stride/v15/* ./ rm -rf github.com diff --git a/testutil/keeper/claim.go b/testutil/keeper/claim.go index a9750be90f..051c5b6202 100644 --- a/testutil/keeper/claim.go +++ b/testutil/keeper/claim.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/claim/keeper" + strideapp "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/claim/keeper" ) func ClaimKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/epochs.go b/testutil/keeper/epochs.go index b3160684ba..88e5993d7f 100644 --- a/testutil/keeper/epochs.go +++ b/testutil/keeper/epochs.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/epochs/keeper" + strideapp "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/epochs/keeper" ) func EpochsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/icacallbacks.go b/testutil/keeper/icacallbacks.go index 14c4cbcefd..49ad438176 100644 --- a/testutil/keeper/icacallbacks.go +++ b/testutil/keeper/icacallbacks.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + strideapp "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" ) func IcacallbacksKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/interchainquery.go b/testutil/keeper/interchainquery.go index 471333b42b..9007e31151 100644 --- a/testutil/keeper/interchainquery.go +++ b/testutil/keeper/interchainquery.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + strideapp "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" ) func InterchainqueryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/records.go b/testutil/keeper/records.go index 16498c2e14..0e318b07e4 100644 --- a/testutil/keeper/records.go +++ b/testutil/keeper/records.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/records/keeper" + strideapp "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/records/keeper" ) func RecordsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/stakeibc.go b/testutil/keeper/stakeibc.go index 7ecb2f521a..5e108bc983 100644 --- a/testutil/keeper/stakeibc.go +++ b/testutil/keeper/stakeibc.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + strideapp "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" ) func StakeibcKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/network/network.go b/testutil/network/network.go index 1e202f4d73..41acc324b8 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -25,8 +25,8 @@ import ( genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - "github.com/Stride-Labs/stride/v14/app" - testutil "github.com/Stride-Labs/stride/v14/testutil" + "github.com/Stride-Labs/stride/v15/app" + testutil "github.com/Stride-Labs/stride/v15/testutil" ) type ( diff --git a/utils/cache_ctx_test.go b/utils/cache_ctx_test.go index b4d2bd028e..5c36aa609c 100644 --- a/utils/cache_ctx_test.go +++ b/utils/cache_ctx_test.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) var expectedOutOfGasError = types.ErrorOutOfGas{Descriptor: "my func"} diff --git a/utils/module_account_test.go b/utils/module_account_test.go index c6b7ebbc5d..c54734bb58 100644 --- a/utils/module_account_test.go +++ b/utils/module_account_test.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) func (s *UtilsTestSuite) TestCreateModuleAccount() { diff --git a/utils/utils.go b/utils/utils.go index 0ce82b7b3f..48a9f9de97 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -17,9 +17,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - config "github.com/Stride-Labs/stride/v14/cmd/strided/config" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + config "github.com/Stride-Labs/stride/v15/cmd/strided/config" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" ) func FilterDepositRecords(arr []recordstypes.DepositRecord, condition func(recordstypes.DepositRecord) bool) (ret []recordstypes.DepositRecord) { diff --git a/utils/utils_test.go b/utils/utils_test.go index b1c1cd1be8..6eac596ae4 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v15/app/apptesting" ) type UtilsTestSuite struct { diff --git a/x/autopilot/client/cli/query.go b/x/autopilot/client/cli/query.go index 17de7873fa..db1414954e 100644 --- a/x/autopilot/client/cli/query.go +++ b/x/autopilot/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" "github.com/cosmos/cosmos-sdk/client/flags" ) diff --git a/x/autopilot/genesis.go b/x/autopilot/genesis.go index bd17e02671..a662446829 100644 --- a/x/autopilot/genesis.go +++ b/x/autopilot/genesis.go @@ -3,8 +3,8 @@ package autopilot import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/autopilot/genesis_test.go b/x/autopilot/genesis_test.go index ee0d75879c..602c02ded1 100644 --- a/x/autopilot/genesis_test.go +++ b/x/autopilot/genesis_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/autopilot" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/autopilot" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) func TestGenesis(t *testing.T) { diff --git a/x/autopilot/handler.go b/x/autopilot/handler.go index a706b60f0c..537398936a 100644 --- a/x/autopilot/handler.go +++ b/x/autopilot/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) // NewHandler returns autopilot module messages diff --git a/x/autopilot/keeper/airdrop.go b/x/autopilot/keeper/airdrop.go index d59f5eccfe..735629fc9c 100644 --- a/x/autopilot/keeper/airdrop.go +++ b/x/autopilot/keeper/airdrop.go @@ -11,10 +11,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) TryUpdateAirdropClaim( diff --git a/x/autopilot/keeper/airdrop_test.go b/x/autopilot/keeper/airdrop_test.go index d146d67c89..7f528742b2 100644 --- a/x/autopilot/keeper/airdrop_test.go +++ b/x/autopilot/keeper/airdrop_test.go @@ -12,11 +12,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/autopilot" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/autopilot" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // TODO: Separate out tests cases that are not necessarily Claim or Stakeibc related, diff --git a/x/autopilot/keeper/grpc_query_params.go b/x/autopilot/keeper/grpc_query_params.go index 721486d4dd..5df0fbd626 100644 --- a/x/autopilot/keeper/grpc_query_params.go +++ b/x/autopilot/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/autopilot/keeper/grpc_query_params_test.go b/x/autopilot/keeper/grpc_query_params_test.go index ad2af8c12a..c0078fc987 100644 --- a/x/autopilot/keeper/grpc_query_params_test.go +++ b/x/autopilot/keeper/grpc_query_params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "context" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) func (s *KeeperTestSuite) TestParamsQuery() { diff --git a/x/autopilot/keeper/keeper.go b/x/autopilot/keeper/keeper.go index 9fc4a00581..a3f2a8ff47 100644 --- a/x/autopilot/keeper/keeper.go +++ b/x/autopilot/keeper/keeper.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" ) type ( diff --git a/x/autopilot/keeper/keeper_test.go b/x/autopilot/keeper/keeper_test.go index 2d3d309012..e3240652ca 100644 --- a/x/autopilot/keeper/keeper_test.go +++ b/x/autopilot/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) type KeeperTestSuite struct { diff --git a/x/autopilot/keeper/liquidstake.go b/x/autopilot/keeper/liquidstake.go index e33dfb754c..6adc680471 100644 --- a/x/autopilot/keeper/liquidstake.go +++ b/x/autopilot/keeper/liquidstake.go @@ -11,9 +11,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) TryLiquidStaking( diff --git a/x/autopilot/keeper/liquidstake_test.go b/x/autopilot/keeper/liquidstake_test.go index ee56b05fcf..efbc4de0a4 100644 --- a/x/autopilot/keeper/liquidstake_test.go +++ b/x/autopilot/keeper/liquidstake_test.go @@ -10,16 +10,16 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordsmodule "github.com/Stride-Labs/stride/v14/x/records" + recordsmodule "github.com/Stride-Labs/stride/v15/x/records" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/autopilot" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/autopilot" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func getStakeibcPacketMetadata(address, action string) string { diff --git a/x/autopilot/keeper/params.go b/x/autopilot/keeper/params.go index 8383931403..61f2881e2e 100644 --- a/x/autopilot/keeper/params.go +++ b/x/autopilot/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) // GetParams get all parameters as types.Params diff --git a/x/autopilot/keeper/params_test.go b/x/autopilot/keeper/params_test.go index fb3694a33a..f00cdf9b72 100644 --- a/x/autopilot/keeper/params_test.go +++ b/x/autopilot/keeper/params_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) func (s *KeeperTestSuite) TestGetParams() { diff --git a/x/autopilot/module.go b/x/autopilot/module.go index 757a48ba38..45458052f1 100644 --- a/x/autopilot/module.go +++ b/x/autopilot/module.go @@ -18,9 +18,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/autopilot/client/cli" - "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/client/cli" + "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) var ( diff --git a/x/autopilot/module_ibc.go b/x/autopilot/module_ibc.go index 941f5fa3a2..3c2dadb498 100644 --- a/x/autopilot/module_ibc.go +++ b/x/autopilot/module_ibc.go @@ -12,8 +12,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/Stride-Labs/stride/v14/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" ) diff --git a/x/autopilot/types/genesis.pb.go b/x/autopilot/types/genesis.pb.go index 748b928f19..7fac063389 100644 --- a/x/autopilot/types/genesis.pb.go +++ b/x/autopilot/types/genesis.pb.go @@ -88,8 +88,8 @@ var fileDescriptor_a7e087b21fd12e65 = []byte{ 0xbb, 0x93, 0xef, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x0d, 0xd7, 0xf5, 0x49, 0x4c, - 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb1, 0x6e, 0xe6, 0xa7, + 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, + 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x75, 0x6a, 0xc9, 0x17, 0x01, 0x00, 0x00, } diff --git a/x/autopilot/types/genesis_test.go b/x/autopilot/types/genesis_test.go index 5bf2f2db33..d98e9f478d 100644 --- a/x/autopilot/types/genesis_test.go +++ b/x/autopilot/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/autopilot/types/params.pb.go b/x/autopilot/types/params.pb.go index 36ae63ec15..533836a674 100644 --- a/x/autopilot/types/params.pb.go +++ b/x/autopilot/types/params.pb.go @@ -96,8 +96,8 @@ var fileDescriptor_b0b993e9f5195319 = []byte{ 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x0e, 0xd5, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xfa, - 0xa9, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, - 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x75, 0x04, 0x55, 0x22, 0xfa, 0x00, 0x00, 0x00, + 0xa9, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, + 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x34, 0x1f, 0xd9, 0x4c, 0xfa, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/autopilot/types/parser_test.go b/x/autopilot/types/parser_test.go index b647d06ae4..b7c9fa8e18 100644 --- a/x/autopilot/types/parser_test.go +++ b/x/autopilot/types/parser_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/autopilot/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/autopilot/types" ) func init() { diff --git a/x/autopilot/types/query.pb.go b/x/autopilot/types/query.pb.go index 80b9c7de47..fe9e7f13f4 100644 --- a/x/autopilot/types/query.pb.go +++ b/x/autopilot/types/query.pb.go @@ -136,9 +136,9 @@ var fileDescriptor_1dd160550c308365 = []byte{ 0xfd, 0x60, 0xb0, 0x72, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0x1c, 0x5e, 0x77, 0xf2, 0x3d, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xe3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, - 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x9a, 0xe8, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x21, 0xcc, - 0x17, 0x49, 0xcf, 0x01, 0x00, 0x00, + 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x9a, 0xea, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x60, 0xd7, + 0x9b, 0x27, 0xcf, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/client/cli/cli_test.go b/x/claim/client/cli/cli_test.go index 3a08a10396..9535866495 100644 --- a/x/claim/client/cli/cli_test.go +++ b/x/claim/client/cli/cli_test.go @@ -14,23 +14,23 @@ import ( clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - strideclitestutil "github.com/Stride-Labs/stride/v14/testutil/cli" + strideclitestutil "github.com/Stride-Labs/stride/v15/testutil/cli" - "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v15/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/Stride-Labs/stride/v14/x/claim/client/cli" + "github.com/Stride-Labs/stride/v15/x/claim/client/cli" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/app" - cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" - "github.com/Stride-Labs/stride/v14/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/app" + cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" + "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) var addr1 sdk.AccAddress diff --git a/x/claim/client/cli/query.go b/x/claim/client/cli/query.go index 55e82581bf..206c4d7754 100644 --- a/x/claim/client/cli/query.go +++ b/x/claim/client/cli/query.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/claim/client/cli/tx.go b/x/claim/client/cli/tx.go index 8a6c96e832..fcf50248c0 100644 --- a/x/claim/client/cli/tx.go +++ b/x/claim/client/cli/tx.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/claim/client/cli/tx_claim_free_amount.go b/x/claim/client/cli/tx_claim_free_amount.go index b9b7fa49f4..b6f35d19d1 100644 --- a/x/claim/client/cli/tx_claim_free_amount.go +++ b/x/claim/client/cli/tx_claim_free_amount.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func CmdClaimFreeAmount() *cobra.Command { diff --git a/x/claim/client/cli/tx_create_airdrop.go b/x/claim/client/cli/tx_create_airdrop.go index cbaee23274..f2a33480eb 100644 --- a/x/claim/client/cli/tx_create_airdrop.go +++ b/x/claim/client/cli/tx_create_airdrop.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func CmdCreateAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_delete_airdrop.go b/x/claim/client/cli/tx_delete_airdrop.go index 34c3ed94ab..2fd34e5866 100644 --- a/x/claim/client/cli/tx_delete_airdrop.go +++ b/x/claim/client/cli/tx_delete_airdrop.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func CmdDeleteAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_set_airdrop_allocations.go b/x/claim/client/cli/tx_set_airdrop_allocations.go index 7227f980ce..9e557c9b42 100644 --- a/x/claim/client/cli/tx_set_airdrop_allocations.go +++ b/x/claim/client/cli/tx_set_airdrop_allocations.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func CmdSetAirdropAllocations() *cobra.Command { diff --git a/x/claim/genesis_test.go b/x/claim/genesis_test.go index 3053af0488..bea159e124 100644 --- a/x/claim/genesis_test.go +++ b/x/claim/genesis_test.go @@ -9,9 +9,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/claim/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func TestGenesis(t *testing.T) { diff --git a/x/claim/handler.go b/x/claim/handler.go index ddec768243..ba2c23806a 100644 --- a/x/claim/handler.go +++ b/x/claim/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/claim/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/keeper" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) // NewHandler returns claim module messages diff --git a/x/claim/keeper/claim.go b/x/claim/keeper/claim.go index 14d7be0eaa..be5cf506bc 100644 --- a/x/claim/keeper/claim.go +++ b/x/claim/keeper/claim.go @@ -14,10 +14,10 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/claim/types" - vestingtypes "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/claim/types" + vestingtypes "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" ) func (k Keeper) LoadAllocationData(ctx sdk.Context, allocationData string) bool { diff --git a/x/claim/keeper/claim_test.go b/x/claim/keeper/claim_test.go index 5c6345860e..7d883d6643 100644 --- a/x/claim/keeper/claim_test.go +++ b/x/claim/keeper/claim_test.go @@ -11,12 +11,12 @@ import ( vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/utils" - claimkeeper "github.com/Stride-Labs/stride/v14/x/claim/keeper" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/utils" + claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/types" - stridevestingtypes "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" + stridevestingtypes "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" ) // Test functionality for loading allocation data(csv) diff --git a/x/claim/keeper/genesis.go b/x/claim/keeper/genesis.go index 25c916f340..8743967e70 100644 --- a/x/claim/keeper/genesis.go +++ b/x/claim/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/claim/keeper/grpc_query.go b/x/claim/keeper/grpc_query.go index b1f95320b3..6efc959582 100644 --- a/x/claim/keeper/grpc_query.go +++ b/x/claim/keeper/grpc_query.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/claim/keeper/hooks.go b/x/claim/keeper/hooks.go index 696ee7a709..bc978fdc49 100644 --- a/x/claim/keeper/hooks.go +++ b/x/claim/keeper/hooks.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - stakingibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + stakingibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func (k Keeper) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { diff --git a/x/claim/keeper/hooks_test.go b/x/claim/keeper/hooks_test.go index 4a5c3a3dd8..1a40135857 100644 --- a/x/claim/keeper/hooks_test.go +++ b/x/claim/keeper/hooks_test.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/claim/types" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/claim/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" ) func (s *KeeperTestSuite) TestAfterEpochEnd() { diff --git a/x/claim/keeper/keeper.go b/x/claim/keeper/keeper.go index 9cbc6f6aff..ba11c0430d 100644 --- a/x/claim/keeper/keeper.go +++ b/x/claim/keeper/keeper.go @@ -9,7 +9,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) // Keeper struct diff --git a/x/claim/keeper/keeper_test.go b/x/claim/keeper/keeper_test.go index d9bae83d4f..6c3aab25da 100644 --- a/x/claim/keeper/keeper_test.go +++ b/x/claim/keeper/keeper_test.go @@ -12,9 +12,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/claim/types" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/claim/types" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" ) type KeeperTestSuite struct { diff --git a/x/claim/keeper/msg_server.go b/x/claim/keeper/msg_server.go index 4cc95a46d9..7a27342059 100644 --- a/x/claim/keeper/msg_server.go +++ b/x/claim/keeper/msg_server.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) type msgServer struct { diff --git a/x/claim/keeper/msg_server_test.go b/x/claim/keeper/msg_server_test.go index cd8ca16281..0fb8f554c2 100644 --- a/x/claim/keeper/msg_server_test.go +++ b/x/claim/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/claim/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/keeper" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) func (suite *KeeperTestSuite) TestSetAirdropAllocationsForMultiAirdrops() { diff --git a/x/claim/keeper/params.go b/x/claim/keeper/params.go index 3cacf5ae78..9ab0b4fc84 100644 --- a/x/claim/keeper/params.go +++ b/x/claim/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) // GetParams get params diff --git a/x/claim/migrations/v2/convert.go b/x/claim/migrations/v2/convert.go index 80fe5c7a44..330650481c 100644 --- a/x/claim/migrations/v2/convert.go +++ b/x/claim/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) func convertToNewAirdrop(oldAirdrop oldclaimtypes.Airdrop) claimtypes.Airdrop { diff --git a/x/claim/migrations/v2/convert_test.go b/x/claim/migrations/v2/convert_test.go index 6206a95d98..9a694c630c 100644 --- a/x/claim/migrations/v2/convert_test.go +++ b/x/claim/migrations/v2/convert_test.go @@ -10,8 +10,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) func TestConvertToNewAirdrop(t *testing.T) { diff --git a/x/claim/migrations/v2/migrations.go b/x/claim/migrations/v2/migrations.go index fac6c458d6..fed1c41de9 100644 --- a/x/claim/migrations/v2/migrations.go +++ b/x/claim/migrations/v2/migrations.go @@ -7,8 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldclaimtypes "github.com/Stride-Labs/stride/v14/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v14/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" ) func migrateClaimParams(store sdk.KVStore, cdc codec.Codec) error { diff --git a/x/claim/module.go b/x/claim/module.go index e81e4e1832..e3f98c8455 100644 --- a/x/claim/module.go +++ b/x/claim/module.go @@ -16,9 +16,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/claim/client/cli" - "github.com/Stride-Labs/stride/v14/x/claim/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/types" + "github.com/Stride-Labs/stride/v15/x/claim/client/cli" + "github.com/Stride-Labs/stride/v15/x/claim/keeper" + "github.com/Stride-Labs/stride/v15/x/claim/types" ) var ( diff --git a/x/claim/types/claim.pb.go b/x/claim/types/claim.pb.go index 69ac0afed3..d66f9b99f9 100644 --- a/x/claim/types/claim.pb.go +++ b/x/claim/types/claim.pb.go @@ -130,29 +130,29 @@ var fileDescriptor_b4747d999b9dc0da = []byte{ // 394 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0xce, 0xd2, 0x40, 0x00, 0xc5, 0x5b, 0x20, 0xa8, 0x83, 0x0a, 0x8e, 0x1a, 0x0a, 0xc6, 0x96, 0x74, 0x61, 0x88, 0x91, - 0x36, 0x46, 0x57, 0x6e, 0x4c, 0x81, 0x62, 0x1a, 0x1b, 0x8d, 0x05, 0x63, 0xe2, 0xa6, 0x29, 0x9d, - 0xb1, 0x4c, 0xa4, 0x4c, 0xd3, 0x19, 0xff, 0x70, 0x03, 0x97, 0xde, 0xc1, 0x9d, 0x27, 0x61, 0xc9, - 0xd2, 0xb8, 0x68, 0x0c, 0xdc, 0xa0, 0x27, 0x30, 0x4c, 0x07, 0x63, 0xbe, 0x6f, 0xd3, 0x36, 0xbf, - 0xdf, 0xcb, 0x4b, 0x67, 0x1e, 0xd0, 0x18, 0xcf, 0x09, 0xc2, 0x76, 0xbc, 0x8e, 0x48, 0x5a, 0x3d, - 0xad, 0x2c, 0xa7, 0x9c, 0xc2, 0xeb, 0x95, 0xb1, 0x04, 0xeb, 0xdf, 0x49, 0x68, 0x42, 0x85, 0xb0, - 0x4f, 0x5f, 0x55, 0xc6, 0xfc, 0x59, 0x03, 0xad, 0xc9, 0xc9, 0x07, 0x38, 0xa6, 0x39, 0x82, 0x3e, - 0x80, 0x11, 0xc9, 0x51, 0x4e, 0xb3, 0x90, 0x20, 0xbc, 0xe1, 0xe4, 0x03, 0xc1, 0xb9, 0xa6, 0x0e, - 0xd4, 0xe1, 0xb5, 0xf1, 0xfd, 0xb2, 0x30, 0x7a, 0xdb, 0x28, 0x5d, 0x3f, 0x33, 0x2f, 0x67, 0xcc, - 0xe0, 0x96, 0x84, 0xde, 0x3f, 0x06, 0x1f, 0x81, 0x2b, 0x11, 0x42, 0x39, 0x66, 0x4c, 0xab, 0x89, - 0x0a, 0x58, 0x16, 0xc6, 0x4d, 0x59, 0x51, 0x09, 0x33, 0x38, 0x47, 0xe0, 0x3b, 0xd0, 0xfc, 0x82, - 0x49, 0xb2, 0xe2, 0x5a, 0x5d, 0x84, 0x9f, 0xef, 0x0a, 0x43, 0xf9, 0x5d, 0x18, 0x0f, 0x12, 0xc2, - 0x57, 0x9f, 0x96, 0x56, 0x4c, 0x53, 0x3b, 0xa6, 0x2c, 0xa5, 0x4c, 0xbe, 0x46, 0x0c, 0x7d, 0xb4, - 0xf9, 0x36, 0xc3, 0xcc, 0x9a, 0xe2, 0xb8, 0x2c, 0x8c, 0x1b, 0x55, 0x75, 0xd5, 0x62, 0x06, 0xb2, - 0x0e, 0xce, 0x40, 0x27, 0x8a, 0x39, 0xa1, 0x9b, 0x30, 0xa6, 0x69, 0xb6, 0xc6, 0x1c, 0x23, 0xad, - 0x31, 0xa8, 0x0f, 0xaf, 0x8e, 0xef, 0x95, 0x85, 0xd1, 0x95, 0xff, 0x73, 0x21, 0x61, 0x06, 0xed, - 0x0a, 0x4d, 0xce, 0xe4, 0xe1, 0x1c, 0x34, 0x1d, 0x81, 0x60, 0x1b, 0xb4, 0x9c, 0xc9, 0xc2, 0x7b, - 0xfd, 0x2a, 0x9c, 0x05, 0xae, 0xdb, 0x51, 0x60, 0x17, 0xdc, 0x96, 0xc0, 0xf7, 0xde, 0xbc, 0xf5, - 0xa6, 0xe1, 0x7c, 0xe1, 0xbc, 0x74, 0x3b, 0x2a, 0xec, 0x81, 0xbb, 0x52, 0x4c, 0x5d, 0xdf, 0x7d, - 0xe1, 0x2c, 0x5c, 0xa9, 0x6a, 0xfd, 0xc6, 0xb7, 0x1f, 0xba, 0x32, 0xf6, 0x76, 0x07, 0x5d, 0xdd, - 0x1f, 0x74, 0xf5, 0xcf, 0x41, 0x57, 0xbf, 0x1f, 0x75, 0x65, 0x7f, 0xd4, 0x95, 0x5f, 0x47, 0x5d, - 0x79, 0x6f, 0xff, 0x77, 0xee, 0xb9, 0x98, 0x72, 0xe4, 0x47, 0x4b, 0x66, 0xcb, 0xc1, 0x3f, 0x3f, - 0x7e, 0x6a, 0x7f, 0x95, 0xb3, 0x8b, 0x4b, 0x58, 0x36, 0xc5, 0xa6, 0x4f, 0xfe, 0x06, 0x00, 0x00, - 0xff, 0xff, 0x4d, 0xab, 0x80, 0x88, 0x13, 0x02, 0x00, 0x00, + 0x36, 0xc6, 0xb8, 0x71, 0x63, 0x0a, 0x14, 0xd3, 0xd8, 0x68, 0x2c, 0x18, 0x13, 0x37, 0x4d, 0xe9, + 0x8c, 0x65, 0x22, 0x65, 0x9a, 0xce, 0xf8, 0x87, 0x1b, 0xb8, 0xf4, 0x0e, 0xee, 0x3c, 0x09, 0x4b, + 0x96, 0xc6, 0x45, 0x63, 0xe0, 0x06, 0x3d, 0x81, 0x61, 0x3a, 0x18, 0xf3, 0x7d, 0x9b, 0xb6, 0xf9, + 0xfd, 0x5e, 0x5e, 0x3a, 0xf3, 0x80, 0xc6, 0x78, 0x4e, 0x10, 0xb6, 0xe3, 0x75, 0x44, 0xd2, 0xea, + 0x69, 0x65, 0x39, 0xe5, 0x14, 0x5e, 0xaf, 0x8c, 0x25, 0x58, 0xff, 0x4e, 0x42, 0x13, 0x2a, 0x84, + 0x7d, 0xfa, 0xaa, 0x32, 0xe6, 0xcf, 0x1a, 0x68, 0x4d, 0x4e, 0x3e, 0xc0, 0x31, 0xcd, 0x11, 0xf4, + 0x01, 0x8c, 0x48, 0x8e, 0x72, 0x9a, 0x85, 0x04, 0xe1, 0x0d, 0x27, 0x1f, 0x08, 0xce, 0x35, 0x75, + 0xa0, 0x0e, 0xaf, 0x8d, 0xef, 0x97, 0x85, 0xd1, 0xdb, 0x46, 0xe9, 0xfa, 0x99, 0x79, 0x39, 0x63, + 0x06, 0xb7, 0x24, 0xf4, 0xfe, 0x31, 0xf8, 0x08, 0x5c, 0x89, 0x10, 0xca, 0x31, 0x63, 0x5a, 0x4d, + 0x54, 0xc0, 0xb2, 0x30, 0x6e, 0xca, 0x8a, 0x4a, 0x98, 0xc1, 0x39, 0x02, 0xdf, 0x81, 0xe6, 0x17, + 0x4c, 0x92, 0x15, 0xd7, 0xea, 0x22, 0xfc, 0x7c, 0x57, 0x18, 0xca, 0xef, 0xc2, 0x78, 0x90, 0x10, + 0xbe, 0xfa, 0xb4, 0xb4, 0x62, 0x9a, 0xda, 0x31, 0x65, 0x29, 0x65, 0xf2, 0x35, 0x62, 0xe8, 0xa3, + 0xcd, 0xb7, 0x19, 0x66, 0xd6, 0x14, 0xc7, 0x65, 0x61, 0xdc, 0xa8, 0xaa, 0xab, 0x16, 0x33, 0x90, + 0x75, 0x70, 0x06, 0x3a, 0x51, 0xcc, 0x09, 0xdd, 0x84, 0x31, 0x4d, 0xb3, 0x35, 0xe6, 0x18, 0x69, + 0x8d, 0x41, 0x7d, 0x78, 0x75, 0x7c, 0xaf, 0x2c, 0x8c, 0xae, 0xfc, 0x9f, 0x0b, 0x09, 0x33, 0x68, + 0x57, 0x68, 0x72, 0x26, 0x0f, 0xe7, 0xa0, 0xe9, 0x08, 0x04, 0xdb, 0xa0, 0xe5, 0x4c, 0x16, 0xde, + 0xeb, 0x57, 0xe1, 0x2c, 0x70, 0xdd, 0x8e, 0x02, 0xbb, 0xe0, 0xb6, 0x04, 0xbe, 0xf7, 0xe6, 0xad, + 0x37, 0x0d, 0xe7, 0x0b, 0xe7, 0xa5, 0xdb, 0x51, 0x61, 0x0f, 0xdc, 0x95, 0x62, 0xea, 0xfa, 0xee, + 0x0b, 0x67, 0xe1, 0x4a, 0x55, 0xeb, 0x37, 0xbe, 0xfd, 0xd0, 0x95, 0xb1, 0xb7, 0x3b, 0xe8, 0xea, + 0xfe, 0xa0, 0xab, 0x7f, 0x0e, 0xba, 0xfa, 0xfd, 0xa8, 0x2b, 0xfb, 0xa3, 0xae, 0xfc, 0x3a, 0xea, + 0xca, 0x7b, 0xfb, 0xbf, 0x73, 0xcf, 0xc5, 0x94, 0x23, 0x3f, 0x5a, 0x32, 0x5b, 0x0e, 0xfe, 0xf9, + 0xf1, 0x53, 0xfb, 0xab, 0x9c, 0x5d, 0x5c, 0xc2, 0xb2, 0x29, 0x36, 0x7d, 0xf2, 0x37, 0x00, 0x00, + 0xff, 0xff, 0x99, 0x41, 0xf3, 0x13, 0x13, 0x02, 0x00, 0x00, } func (m *ClaimRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/expected_keepers.go b/x/claim/types/expected_keepers.go index fc210f4177..12bf4ec4d1 100644 --- a/x/claim/types/expected_keepers.go +++ b/x/claim/types/expected_keepers.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // BankKeeper defines the banking contract that must be fulfilled when diff --git a/x/claim/types/genesis.pb.go b/x/claim/types/genesis.pb.go index 25eaeec05e..952c4399ac 100644 --- a/x/claim/types/genesis.pb.go +++ b/x/claim/types/genesis.pb.go @@ -100,9 +100,9 @@ var fileDescriptor_ecf5648202726596 = []byte{ 0xa1, 0xb4, 0xd8, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x56, 0xe9, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xa2, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x60, 0x4f, - 0x04, 0x7c, 0x7c, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xaa, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xa5, + 0x77, 0xe7, 0x7c, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/msgs.go b/x/claim/types/msgs.go index db0031d208..f8ab029af1 100644 --- a/x/claim/types/msgs.go +++ b/x/claim/types/msgs.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) // Msg type for MsgSetAirdropAllocations diff --git a/x/claim/types/params.pb.go b/x/claim/types/params.pb.go index de6c84c15c..05900c5b1c 100644 --- a/x/claim/types/params.pb.go +++ b/x/claim/types/params.pb.go @@ -183,36 +183,36 @@ var fileDescriptor_dd7ac871d3875dc3 = []byte{ // 516 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x6d, 0xd8, 0x68, 0x8b, 0x3b, 0xc1, 0x66, 0x40, 0xa4, 0x95, 0x48, 0xaa, 0x48, 0xa0, 0x4a, - 0xb0, 0x58, 0x1b, 0x9c, 0xe0, 0xd4, 0x6a, 0x20, 0x55, 0xda, 0x01, 0xa5, 0x3b, 0x71, 0x89, 0x9c, - 0xda, 0xed, 0x2c, 0x9a, 0x38, 0xb2, 0x5d, 0x44, 0x7f, 0x01, 0xd7, 0x1d, 0xf9, 0x3d, 0x9c, 0x76, - 0xdc, 0x11, 0x71, 0x08, 0xa8, 0xbd, 0x71, 0xdc, 0x2f, 0x40, 0x76, 0x9c, 0xae, 0x5b, 0x4f, 0xad, - 0xdf, 0x7b, 0xdf, 0xf7, 0xde, 0xe7, 0x2f, 0x06, 0x6d, 0xa9, 0x04, 0x23, 0x14, 0x8d, 0x67, 0x98, - 0xa5, 0x28, 0xc7, 0x02, 0xa7, 0x32, 0xcc, 0x05, 0x57, 0x1c, 0xee, 0x95, 0x54, 0x68, 0xa8, 0xce, - 0x93, 0x29, 0x9f, 0x72, 0x43, 0x20, 0xfd, 0xaf, 0xd4, 0x74, 0xbc, 0x29, 0xe7, 0xd3, 0x19, 0x45, - 0xe6, 0x94, 0xcc, 0x27, 0x88, 0xcc, 0x05, 0x56, 0x8c, 0x67, 0x96, 0xf7, 0xef, 0xf2, 0x8a, 0xa5, - 0x54, 0x2a, 0x9c, 0xe6, 0xa5, 0x20, 0x78, 0x0f, 0xea, 0x9f, 0x8c, 0x29, 0x3c, 0x02, 0x4d, 0xcc, - 0x04, 0x11, 0x3c, 0x97, 0xae, 0xd3, 0xdd, 0xe9, 0xb5, 0x8e, 0x9f, 0x86, 0x9b, 0x09, 0xc2, 0x7e, - 0xc9, 0x46, 0x6b, 0x59, 0xf0, 0x73, 0x17, 0x34, 0x2c, 0x0a, 0x4f, 0x01, 0xb4, 0x78, 0xcc, 0x08, - 0xcd, 0x14, 0x9b, 0x30, 0x2a, 0x5c, 0xa7, 0xeb, 0xf4, 0x1e, 0x0c, 0x9e, 0x5f, 0x17, 0x7e, 0x7b, - 0x81, 0xd3, 0xd9, 0xbb, 0x60, 0x5b, 0x13, 0x44, 0x07, 0x16, 0x1c, 0xae, 0x31, 0xd8, 0x06, 0xcd, - 0xf1, 0x39, 0x66, 0x59, 0xcc, 0x88, 0xdb, 0xd0, 0x3d, 0xa2, 0x86, 0x39, 0x0f, 0x09, 0xe4, 0x37, - 0x46, 0x52, 0x61, 0xa1, 0x62, 0x3d, 0x92, 0x7b, 0xaf, 0xeb, 0xf4, 0x5a, 0xc7, 0x9d, 0xb0, 0x9c, - 0x37, 0xac, 0xe6, 0x0d, 0xcf, 0xaa, 0x79, 0x07, 0x2f, 0x2e, 0x0b, 0xbf, 0xb6, 0x1d, 0xe4, 0xa6, - 0x47, 0x70, 0xf1, 0xc7, 0x77, 0xa2, 0x7d, 0x4b, 0x8c, 0x34, 0xae, 0xab, 0xe1, 0x77, 0x07, 0x54, - 0x60, 0x5c, 0x5d, 0xaf, 0xbb, 0x63, 0xfc, 0xda, 0x5b, 0x7e, 0x27, 0x56, 0x30, 0xe8, 0x6b, 0xbb, - 0x7f, 0x85, 0xdf, 0xb9, 0x5b, 0xfa, 0x9a, 0xa7, 0x4c, 0xd1, 0x34, 0x57, 0x8b, 0xeb, 0xc2, 0x7f, - 0x76, 0x3b, 0x4c, 0xa5, 0x09, 0x7e, 0xe8, 0x28, 0x8f, 0x2c, 0x5c, 0xf5, 0x84, 0x3e, 0x68, 0x99, - 0x55, 0xc4, 0x84, 0x66, 0x3c, 0x75, 0x77, 0xcd, 0xc5, 0x00, 0x03, 0x9d, 0x68, 0x04, 0x22, 0xf0, - 0x98, 0x30, 0xbd, 0xb4, 0x64, 0xae, 0xb8, 0x88, 0x31, 0x21, 0x82, 0x4a, 0xe9, 0xde, 0x37, 0x42, - 0xb8, 0x41, 0xf5, 0x4b, 0x06, 0x9e, 0x81, 0x87, 0xa6, 0x9c, 0x92, 0x58, 0xf2, 0x78, 0x82, 0x85, - 0x5b, 0x37, 0x1b, 0x0b, 0x75, 0xfa, 0xdf, 0x85, 0xff, 0x72, 0xca, 0xd4, 0xf9, 0x3c, 0x09, 0xc7, - 0x3c, 0x45, 0x63, 0x2e, 0x53, 0x2e, 0xed, 0xcf, 0xa1, 0x24, 0x5f, 0x90, 0x5a, 0xe4, 0x54, 0x86, - 0xc3, 0x4c, 0x45, 0x7b, 0xb6, 0xcb, 0x88, 0x7f, 0xc4, 0x02, 0xbe, 0x02, 0x07, 0x78, 0xae, 0x78, - 0xce, 0x66, 0x5c, 0xc5, 0x34, 0xc3, 0xc9, 0x8c, 0x12, 0xb7, 0xd9, 0x75, 0x7a, 0xcd, 0x68, 0x7f, - 0x4d, 0x7c, 0x28, 0xf1, 0xc1, 0xf0, 0x72, 0xe9, 0x39, 0x57, 0x4b, 0xcf, 0xf9, 0xbb, 0xf4, 0x9c, - 0x8b, 0x95, 0x57, 0xbb, 0x5a, 0x79, 0xb5, 0x5f, 0x2b, 0xaf, 0xf6, 0x19, 0x6d, 0x98, 0x8f, 0xcc, - 0x97, 0x78, 0x78, 0x8a, 0x13, 0x89, 0xec, 0x93, 0xf9, 0x7a, 0xf4, 0x16, 0x7d, 0xb3, 0x0f, 0xc7, - 0x24, 0x49, 0xea, 0x66, 0x0d, 0x6f, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x39, 0x61, 0xaa, + 0xb0, 0x58, 0x1b, 0xe2, 0x02, 0xa7, 0x56, 0x03, 0xa9, 0xd2, 0x0e, 0x28, 0xdd, 0x89, 0x4b, 0xe4, + 0xd4, 0x6e, 0x67, 0xd1, 0xc4, 0x91, 0xed, 0x22, 0xfa, 0x0b, 0xb8, 0xee, 0xc8, 0xef, 0xe1, 0xb4, + 0xe3, 0x8e, 0x88, 0x43, 0x40, 0xed, 0x8d, 0xe3, 0x7e, 0x01, 0xb2, 0xe3, 0x74, 0xdd, 0x7a, 0x6a, + 0xfd, 0xde, 0xfb, 0xbe, 0xf7, 0x3e, 0x7f, 0x31, 0x68, 0x4b, 0x25, 0x18, 0xa1, 0x68, 0x3c, 0xc3, + 0x2c, 0x45, 0x39, 0x16, 0x38, 0x95, 0x61, 0x2e, 0xb8, 0xe2, 0x70, 0xaf, 0xa4, 0x42, 0x43, 0x75, + 0x9e, 0x4c, 0xf9, 0x94, 0x1b, 0x02, 0xe9, 0x7f, 0xa5, 0xa6, 0xe3, 0x4d, 0x39, 0x9f, 0xce, 0x28, + 0x32, 0xa7, 0x64, 0x3e, 0x41, 0x64, 0x2e, 0xb0, 0x62, 0x3c, 0xb3, 0xbc, 0x7f, 0x97, 0x57, 0x2c, + 0xa5, 0x52, 0xe1, 0x34, 0x2f, 0x05, 0xc1, 0x7b, 0x50, 0xff, 0x64, 0x4c, 0xe1, 0x11, 0x68, 0x62, + 0x26, 0x88, 0xe0, 0xb9, 0x74, 0x9d, 0xee, 0x4e, 0xaf, 0x75, 0xfc, 0x34, 0xdc, 0x4c, 0x10, 0xf6, + 0x4b, 0x36, 0x5a, 0xcb, 0x82, 0x9f, 0xbb, 0xa0, 0x61, 0x51, 0x78, 0x0a, 0xa0, 0xc5, 0x63, 0x46, + 0x68, 0xa6, 0xd8, 0x84, 0x51, 0xe1, 0x3a, 0x5d, 0xa7, 0xf7, 0x60, 0xf0, 0xfc, 0xba, 0xf0, 0xdb, + 0x0b, 0x9c, 0xce, 0xde, 0x05, 0xdb, 0x9a, 0x20, 0x3a, 0xb0, 0xe0, 0x70, 0x8d, 0xc1, 0x36, 0x68, + 0x8e, 0xcf, 0x31, 0xcb, 0x62, 0x46, 0xdc, 0x86, 0xee, 0x11, 0x35, 0xcc, 0x79, 0x48, 0x20, 0xbf, + 0x31, 0x92, 0x0a, 0x0b, 0x15, 0xeb, 0x91, 0xdc, 0x7b, 0x5d, 0xa7, 0xd7, 0x3a, 0xee, 0x84, 0xe5, + 0xbc, 0x61, 0x35, 0x6f, 0x78, 0x56, 0xcd, 0x3b, 0x78, 0x71, 0x59, 0xf8, 0xb5, 0xed, 0x20, 0x37, + 0x3d, 0x82, 0x8b, 0x3f, 0xbe, 0x13, 0xed, 0x5b, 0x62, 0xa4, 0x71, 0x5d, 0x0d, 0xbf, 0x3b, 0xa0, + 0x02, 0xe3, 0xea, 0x7a, 0xdd, 0x1d, 0xe3, 0xd7, 0xde, 0xf2, 0x3b, 0xb1, 0x82, 0x41, 0x5f, 0xdb, + 0xfd, 0x2b, 0xfc, 0xce, 0xdd, 0xd2, 0xd7, 0x3c, 0x65, 0x8a, 0xa6, 0xb9, 0x5a, 0x5c, 0x17, 0xfe, + 0xb3, 0xdb, 0x61, 0x2a, 0x4d, 0xf0, 0x43, 0x47, 0x79, 0x64, 0xe1, 0xaa, 0x27, 0xf4, 0x41, 0xcb, + 0xac, 0x22, 0x26, 0x34, 0xe3, 0xa9, 0xbb, 0x6b, 0x2e, 0x06, 0x18, 0xe8, 0x44, 0x23, 0x10, 0x81, + 0xc7, 0x84, 0xe9, 0xa5, 0x25, 0x73, 0xc5, 0x45, 0x8c, 0x09, 0x11, 0x54, 0x4a, 0xf7, 0xbe, 0x11, + 0xc2, 0x0d, 0xaa, 0x5f, 0x32, 0xf0, 0x0c, 0x3c, 0x34, 0xe5, 0x94, 0xc4, 0x92, 0xc7, 0x13, 0x2c, + 0xdc, 0xba, 0xd9, 0x58, 0xa8, 0xd3, 0xff, 0x2e, 0xfc, 0x97, 0x53, 0xa6, 0xce, 0xe7, 0x49, 0x38, + 0xe6, 0x29, 0x1a, 0x73, 0x99, 0x72, 0x69, 0x7f, 0x0e, 0x25, 0xf9, 0x82, 0xd4, 0x22, 0xa7, 0x32, + 0x1c, 0x66, 0x2a, 0xda, 0xb3, 0x5d, 0x46, 0xfc, 0x23, 0x16, 0xf0, 0x15, 0x38, 0xc0, 0x73, 0xc5, + 0x73, 0x36, 0xe3, 0x2a, 0xa6, 0x19, 0x4e, 0x66, 0x94, 0xb8, 0xcd, 0xae, 0xd3, 0x6b, 0x46, 0xfb, + 0x6b, 0xe2, 0x43, 0x89, 0x0f, 0x86, 0x97, 0x4b, 0xcf, 0xb9, 0x5a, 0x7a, 0xce, 0xdf, 0xa5, 0xe7, + 0x5c, 0xac, 0xbc, 0xda, 0xd5, 0xca, 0xab, 0xfd, 0x5a, 0x79, 0xb5, 0xcf, 0x68, 0xc3, 0x7c, 0x64, + 0xbe, 0xc4, 0xc3, 0x53, 0x9c, 0x48, 0x64, 0x9f, 0xcc, 0xd7, 0xa3, 0xb7, 0xe8, 0x9b, 0x7d, 0x38, + 0x26, 0x49, 0x52, 0x37, 0x6b, 0x78, 0xf3, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xce, 0xd3, 0x12, 0x31, 0x55, 0x03, 0x00, 0x00, } diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index 6ca64fb70c..247aa0d07a 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - types2 "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + types2 "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -927,81 +927,81 @@ var fileDescriptor_baa87682a02846df = []byte{ // 1227 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0xc5, 0x1b, 0xcf, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x26, 0xa9, 0xbd, 0x69, 0x6c, 0xff, 0xe7, - 0x4f, 0x12, 0x23, 0x35, 0xbb, 0x24, 0xad, 0x38, 0x70, 0x01, 0x1c, 0x5e, 0x1a, 0x54, 0xa4, 0xb2, - 0x29, 0x91, 0xe0, 0x62, 0x8d, 0x77, 0x27, 0x66, 0x85, 0xbd, 0xeb, 0xec, 0xcc, 0x56, 0x44, 0x55, - 0x85, 0x80, 0x03, 0x37, 0x88, 0x04, 0x7c, 0x08, 0x90, 0x38, 0xf0, 0x11, 0x38, 0x20, 0xf5, 0x58, - 0x89, 0x0b, 0x07, 0x48, 0x51, 0xc2, 0x27, 0x88, 0x04, 0x67, 0xb4, 0x33, 0xcf, 0x3a, 0xbb, 0xce, - 0xba, 0x4e, 0x90, 0x10, 0xbd, 0xc4, 0xd9, 0x79, 0xde, 0x7e, 0xcf, 0xcb, 0xfc, 0x66, 0x06, 0x17, - 0x85, 0x0c, 0x3d, 0x97, 0x5b, 0x4e, 0x9b, 0x79, 0x1d, 0x6b, 0x37, 0xe2, 0xe1, 0x9e, 0xd9, 0x0d, - 0x03, 0x19, 0x90, 0x49, 0x2d, 0x31, 0x95, 0xc4, 0x98, 0x6d, 0x05, 0xad, 0x40, 0x09, 0xac, 0xf8, - 0x3f, 0xad, 0x63, 0x5c, 0x6f, 0x05, 0x41, 0xab, 0xcd, 0x2d, 0xd6, 0xf5, 0x2c, 0xe6, 0xfb, 0x81, - 0x64, 0xd2, 0x0b, 0x7c, 0x01, 0xd2, 0xb2, 0x13, 0x88, 0x4e, 0x20, 0xac, 0x26, 0x13, 0xdc, 0xba, - 0xbf, 0xd6, 0xe4, 0x92, 0xad, 0x59, 0x4e, 0xe0, 0xf9, 0x20, 0xcf, 0xc6, 0x56, 0x7f, 0x41, 0x52, - 0xca, 0x48, 0xba, 0x2c, 0x64, 0x9d, 0xc4, 0xe9, 0x75, 0x10, 0xdd, 0xe7, 0x42, 0x7a, 0x7e, 0x2b, - 0xf9, 0x05, 0x69, 0x05, 0x00, 0xa9, 0xaf, 0x66, 0xb4, 0x63, 0x49, 0xaf, 0xc3, 0x85, 0x64, 0x9d, - 0xae, 0x56, 0xa0, 0xdb, 0x78, 0x62, 0x23, 0x76, 0xba, 0x25, 0x99, 0x8c, 0x04, 0x59, 0xc5, 0x84, - 0x79, 0xa1, 0x1b, 0x06, 0xdd, 0x86, 0xe7, 0x72, 0x5f, 0x7a, 0x3b, 0x1e, 0x0f, 0x8b, 0xa8, 0x8a, - 0x6a, 0x57, 0xec, 0x19, 0x90, 0x6c, 0xf6, 0x04, 0xa4, 0x88, 0x2f, 0x29, 0x48, 0xdc, 0x2d, 0x8e, - 0x56, 0x51, 0xed, 0xb2, 0x9d, 0x7c, 0xd2, 0x37, 0xf1, 0xb5, 0x77, 0xe2, 0xe2, 0xa5, 0x9c, 0xdb, - 0x7c, 0x37, 0xe2, 0x42, 0x92, 0x1b, 0xf8, 0x12, 0x73, 0xdd, 0x90, 0x0b, 0xa1, 0x1d, 0xd7, 0xc9, - 0xf1, 0x41, 0xa5, 0xb0, 0xc7, 0x3a, 0xed, 0x97, 0x28, 0x08, 0xa8, 0x9d, 0xa8, 0xd0, 0x08, 0x17, - 0x4f, 0x3b, 0x12, 0xdd, 0xc0, 0x17, 0x9c, 0xbc, 0x87, 0x27, 0x55, 0xbc, 0x86, 0x50, 0xeb, 0x45, - 0x54, 0x1d, 0xab, 0x4d, 0xac, 0x97, 0xcc, 0x74, 0xa7, 0xcc, 0x94, 0x61, 0x7d, 0xe1, 0xd1, 0x41, - 0x65, 0xe4, 0xf8, 0xa0, 0x72, 0x55, 0x47, 0x4b, 0x1b, 0x53, 0x7b, 0xc2, 0x39, 0xd1, 0xa4, 0x3f, - 0x8d, 0xe2, 0x29, 0x65, 0xf9, 0x36, 0x97, 0xcc, 0x65, 0x92, 0x9d, 0xb7, 0x34, 0xff, 0xc7, 0x53, - 0x4e, 0x14, 0x86, 0xdc, 0x97, 0x8d, 0x30, 0x88, 0x7c, 0x5d, 0xa0, 0x2b, 0xf6, 0x24, 0x2c, 0xda, - 0xf1, 0x1a, 0x09, 0xf1, 0xd5, 0x8c, 0x52, 0x8c, 0x25, 0x94, 0xc5, 0xb1, 0x2a, 0xaa, 0x4d, 0xac, - 0x1b, 0xa6, 0x6e, 0x9e, 0x99, 0x34, 0xcf, 0xbc, 0x97, 0x34, 0xaf, 0xbe, 0x0c, 0x89, 0x18, 0x90, - 0xc8, 0x69, 0x27, 0x74, 0xff, 0x49, 0x05, 0xd9, 0x33, 0xe9, 0x70, 0x5b, 0xf1, 0x3a, 0x69, 0xe3, - 0x99, 0xac, 0x3a, 0xf7, 0xdd, 0xe2, 0x85, 0xa1, 0x11, 0x9f, 0x83, 0x88, 0xc5, 0xbc, 0x88, 0xdc, - 0x77, 0x75, 0xbc, 0xe9, 0x74, 0xbc, 0xd7, 0x7d, 0x97, 0x2e, 0xe0, 0xd2, 0x49, 0xfb, 0x92, 0x5a, - 0xc2, 0x24, 0xd0, 0x8f, 0xb1, 0x91, 0x27, 0x84, 0xee, 0x32, 0x5c, 0xd0, 0x0d, 0xea, 0x80, 0x04, - 0xfa, 0xbb, 0x90, 0xd3, 0xdf, 0xc4, 0xb8, 0xbe, 0x08, 0x30, 0xe7, 0xd2, 0x1d, 0x4e, 0x1c, 0x50, - 0x7b, 0xca, 0x49, 0x6b, 0xd3, 0x08, 0x2f, 0x29, 0x00, 0xaf, 0x79, 0xb1, 0xcb, 0x66, 0x24, 0x83, - 0xf0, 0x55, 0xc7, 0x09, 0x22, 0x5f, 0xd6, 0x59, 0x9b, 0xf9, 0x0e, 0x4f, 0x66, 0xf6, 0xce, 0xe0, - 0xe6, 0xd7, 0x17, 0x8f, 0x0f, 0x2a, 0x25, 0x18, 0xdf, 0x53, 0x3a, 0x34, 0x67, 0x36, 0xe8, 0xaf, - 0x08, 0x2f, 0x0f, 0x8b, 0x0b, 0x45, 0xf8, 0x01, 0xe1, 0x05, 0xf7, 0x44, 0xab, 0xc1, 0xb4, 0x5a, - 0xa3, 0xa9, 0xf5, 0x7a, 0x23, 0xaf, 0xa9, 0xc5, 0x8c, 0xa9, 0xc5, 0x04, 0x6a, 0x31, 0x37, 0x02, - 0xcf, 0xaf, 0x6f, 0x43, 0x41, 0xa8, 0x46, 0xf8, 0x14, 0x5f, 0xf4, 0xbb, 0x27, 0x95, 0x5a, 0xcb, - 0x93, 0x1f, 0x44, 0x4d, 0xd3, 0x09, 0x3a, 0x16, 0xb0, 0x95, 0xfe, 0x59, 0x15, 0xee, 0x87, 0x96, - 0xdc, 0xeb, 0x72, 0xa1, 0xdc, 0x0a, 0xbb, 0xe4, 0x0e, 0xc2, 0x4e, 0x67, 0x31, 0x51, 0xd9, 0xdd, - 0x55, 0x3c, 0x95, 0x34, 0x7b, 0x13, 0x5f, 0xcd, 0xac, 0x42, 0x82, 0xeb, 0x78, 0x5c, 0xf3, 0x99, - 0xaa, 0xe6, 0xc4, 0xfa, 0x6c, 0xb6, 0xbb, 0x5a, 0xbb, 0x7e, 0x21, 0xce, 0xc2, 0x06, 0x4d, 0xfa, - 0x0d, 0x4a, 0xb3, 0x8b, 0xcd, 0x9d, 0x20, 0x74, 0xff, 0x95, 0x4e, 0xa5, 0xb9, 0x6a, 0xf4, 0x9c, - 0x5c, 0x95, 0xc0, 0xea, 0xe7, 0xaa, 0x50, 0xad, 0x43, 0xb6, 0x79, 0x5c, 0xa5, 0x0d, 0xf3, 0xb9, - 0x4a, 0x1b, 0x27, 0x5c, 0xa5, 0x35, 0xe9, 0x6f, 0x08, 0x97, 0x4f, 0xe2, 0xb2, 0x66, 0x9b, 0xbf, - 0x11, 0xf7, 0x24, 0x3e, 0x7a, 0x9e, 0x81, 0xaa, 0x90, 0x97, 0xf1, 0x38, 0x53, 0x60, 0x14, 0xaf, - 0x15, 0xfa, 0x3b, 0xac, 0x81, 0xd6, 0x67, 0x8e, 0x0f, 0x2a, 0x53, 0xe0, 0x42, 0xad, 0x50, 0x1b, - 0xcc, 0xe8, 0xd7, 0x08, 0x57, 0x06, 0xe6, 0x07, 0xe5, 0xdd, 0xc5, 0x17, 0xe3, 0x93, 0x54, 0x0c, - 0xdf, 0x10, 0xaf, 0x40, 0x5d, 0x27, 0xa1, 0xae, 0xb1, 0xd5, 0xf9, 0x46, 0x5f, 0x47, 0xa2, 0x3f, - 0x22, 0xa0, 0xaf, 0x7b, 0x81, 0x64, 0xed, 0x1e, 0xb6, 0x67, 0xa1, 0xe4, 0x2b, 0x78, 0xda, 0xf3, - 0x9d, 0x76, 0xe4, 0xf2, 0x46, 0x72, 0x3e, 0x8f, 0xa9, 0xf3, 0xb9, 0x00, 0xcb, 0x1b, 0x70, 0x4c, - 0xef, 0x23, 0xbc, 0x90, 0x9b, 0xc3, 0x7f, 0x57, 0xd6, 0xdb, 0xb0, 0x89, 0xde, 0x15, 0x3c, 0xdc, - 0xd6, 0x97, 0x99, 0x7f, 0x78, 0x75, 0xf8, 0x0b, 0xc1, 0xe1, 0x93, 0x75, 0x05, 0xa9, 0x7d, 0x81, - 0xf0, 0xb4, 0xe8, 0x72, 0xdf, 0x8d, 0x13, 0x6e, 0xe8, 0x2c, 0xc7, 0x86, 0x65, 0xf9, 0x16, 0x64, - 0x39, 0xaf, 0x63, 0xf6, 0xd9, 0x9f, 0x2f, 0xdf, 0x42, 0xcf, 0x5a, 0x7d, 0x93, 0xdb, 0xf8, 0x52, - 0x97, 0x87, 0x5e, 0xe0, 0x26, 0xd5, 0x9e, 0x4f, 0x36, 0x4a, 0x72, 0xa7, 0xbb, 0xab, 0xc4, 0xf5, - 0x79, 0x00, 0x01, 0x89, 0x83, 0x11, 0xb5, 0x13, 0xf3, 0xf5, 0x3f, 0x2f, 0xe3, 0x8b, 0x2a, 0x71, - 0xf2, 0x3d, 0xc2, 0xa5, 0x81, 0x87, 0x0c, 0xb9, 0x99, 0xdd, 0x89, 0x67, 0x3a, 0x0a, 0x8d, 0x5b, - 0xe7, 0x33, 0xd2, 0xd5, 0xa6, 0x4b, 0x9f, 0xfe, 0xfc, 0xc7, 0x57, 0xa3, 0x15, 0xb2, 0x08, 0x77, - 0xd8, 0x4e, 0xe0, 0x46, 0x6d, 0xde, 0x7f, 0x04, 0x11, 0x17, 0x8f, 0x6b, 0xc6, 0x27, 0xd5, 0x9c, - 0x30, 0x99, 0x03, 0xc5, 0xf8, 0xdf, 0x53, 0x34, 0x20, 0xea, 0x9c, 0x8a, 0x3a, 0x4d, 0xa6, 0x32, - 0x37, 0x67, 0xf2, 0x19, 0x82, 0x5b, 0xaf, 0x26, 0x50, 0xb2, 0x94, 0xe3, 0xe9, 0xf4, 0xd1, 0x62, - 0x2c, 0x0f, 0x53, 0x1b, 0x90, 0x6b, 0x9a, 0xba, 0xad, 0x07, 0x30, 0x9d, 0x0f, 0xc9, 0xb7, 0x08, - 0x93, 0xd3, 0x8c, 0x46, 0x6e, 0x0c, 0x8a, 0x92, 0x47, 0xec, 0xc6, 0xea, 0x19, 0xb5, 0x01, 0xda, - 0x8b, 0x0a, 0xda, 0x0b, 0xc4, 0x4c, 0x43, 0x53, 0x03, 0xbc, 0xa3, 0x2e, 0x04, 0xb1, 0xf2, 0x09, - 0x44, 0xeb, 0x81, 0x5e, 0x79, 0x48, 0xbe, 0x44, 0xb8, 0x90, 0xa5, 0x08, 0x52, 0xcb, 0x89, 0x9c, - 0xcb, 0x84, 0xc6, 0xf3, 0x67, 0xd0, 0x04, 0x7c, 0x35, 0x85, 0x8f, 0x92, 0x2a, 0xe0, 0x93, 0xb1, - 0x5a, 0xa3, 0x87, 0x32, 0x55, 0xbd, 0xcf, 0x11, 0x9e, 0x4c, 0xef, 0x6b, 0x92, 0xd7, 0x9d, 0x1c, - 0x0e, 0x31, 0x56, 0x86, 0xea, 0x01, 0x96, 0x65, 0x85, 0xa5, 0x4a, 0xca, 0x80, 0x25, 0x12, 0x3c, - 0x6c, 0xc0, 0x56, 0x14, 0x29, 0x24, 0xbd, 0x69, 0x82, 0x37, 0xd4, 0xc0, 0x69, 0xca, 0x3c, 0x83, - 0x06, 0x4f, 0x53, 0xf6, 0x91, 0x33, 0x60, 0x9a, 0xf4, 0xa3, 0x25, 0x85, 0xe2, 0x13, 0xd4, 0xff, - 0x60, 0x59, 0x19, 0x14, 0xa0, 0xef, 0x1a, 0x6e, 0xd4, 0x86, 0x2b, 0x02, 0x96, 0x45, 0x85, 0xe5, - 0x1a, 0x99, 0xcb, 0x60, 0x49, 0xae, 0xd7, 0xf5, 0xcd, 0x47, 0x87, 0x65, 0xf4, 0xf8, 0xb0, 0x8c, - 0x7e, 0x3f, 0x2c, 0xa3, 0xfd, 0xa3, 0xf2, 0xc8, 0xe3, 0xa3, 0xf2, 0xc8, 0x2f, 0x47, 0xe5, 0x91, - 0xf7, 0xad, 0x14, 0x2b, 0x6e, 0xa9, 0x60, 0xab, 0x77, 0x58, 0x53, 0x58, 0xc9, 0xe3, 0x75, 0xed, - 0x96, 0xf5, 0x51, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xea, 0x09, 0x72, 0xf3, 0xef, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x16, 0x71, 0x80, 0x87, 0x90, 0x0f, 0x00, 0x00, + 0x4f, 0x12, 0x23, 0x35, 0xbb, 0x24, 0x05, 0x0e, 0x5c, 0x00, 0x87, 0x97, 0x06, 0x15, 0xa9, 0x6c, + 0x4a, 0x24, 0xb8, 0x58, 0xe3, 0xdd, 0x89, 0x59, 0x61, 0xef, 0x3a, 0x3b, 0xb3, 0x15, 0x51, 0x55, + 0x21, 0xe0, 0xc0, 0x0d, 0x22, 0x01, 0x1f, 0x02, 0x24, 0x0e, 0x7c, 0x04, 0x0e, 0x48, 0x3d, 0x56, + 0xe2, 0xc2, 0x01, 0x52, 0x94, 0xf0, 0x09, 0x22, 0xc1, 0x19, 0xed, 0xcc, 0xb3, 0xce, 0xae, 0xb3, + 0xae, 0x13, 0x24, 0x44, 0x2f, 0x71, 0x76, 0x9e, 0xb7, 0xdf, 0xf3, 0x32, 0xbf, 0x99, 0xc1, 0x45, + 0x21, 0x43, 0xcf, 0xe5, 0x96, 0xd3, 0x66, 0x5e, 0xc7, 0xda, 0x8d, 0x78, 0xb8, 0x67, 0x76, 0xc3, + 0x40, 0x06, 0x64, 0x52, 0x4b, 0x4c, 0x25, 0x31, 0x66, 0x5b, 0x41, 0x2b, 0x50, 0x02, 0x2b, 0xfe, + 0x4f, 0xeb, 0x18, 0xd7, 0x5b, 0x41, 0xd0, 0x6a, 0x73, 0x8b, 0x75, 0x3d, 0x8b, 0xf9, 0x7e, 0x20, + 0x99, 0xf4, 0x02, 0x5f, 0x80, 0xb4, 0xec, 0x04, 0xa2, 0x13, 0x08, 0xab, 0xc9, 0x04, 0xb7, 0xee, + 0xad, 0x35, 0xb9, 0x64, 0x6b, 0x96, 0x13, 0x78, 0x3e, 0xc8, 0xb3, 0xb1, 0xd5, 0x5f, 0x90, 0x94, + 0x32, 0x92, 0x2e, 0x0b, 0x59, 0x27, 0x71, 0x7a, 0x1d, 0x44, 0xf7, 0xb8, 0x90, 0x9e, 0xdf, 0x4a, + 0x7e, 0x41, 0x5a, 0x01, 0x40, 0xea, 0xab, 0x19, 0xed, 0x58, 0xd2, 0xeb, 0x70, 0x21, 0x59, 0xa7, + 0xab, 0x15, 0xe8, 0x36, 0x9e, 0xd8, 0x88, 0x9d, 0x6e, 0x49, 0x26, 0x23, 0x41, 0x56, 0x31, 0x61, + 0x5e, 0xe8, 0x86, 0x41, 0xb7, 0xe1, 0xb9, 0xdc, 0x97, 0xde, 0x8e, 0xc7, 0xc3, 0x22, 0xaa, 0xa2, + 0xda, 0x15, 0x7b, 0x06, 0x24, 0x9b, 0x3d, 0x01, 0x29, 0xe2, 0x4b, 0x0a, 0x12, 0x77, 0x8b, 0xa3, + 0x55, 0x54, 0xbb, 0x6c, 0x27, 0x9f, 0xf4, 0x4d, 0x7c, 0xed, 0x9d, 0xb8, 0x78, 0x29, 0xe7, 0x36, + 0xdf, 0x8d, 0xb8, 0x90, 0xe4, 0x06, 0xbe, 0xc4, 0x5c, 0x37, 0xe4, 0x42, 0x68, 0xc7, 0x75, 0x72, + 0x7c, 0x50, 0x29, 0xec, 0xb1, 0x4e, 0xfb, 0x25, 0x0a, 0x02, 0x6a, 0x27, 0x2a, 0x34, 0xc2, 0xc5, + 0xd3, 0x8e, 0x44, 0x37, 0xf0, 0x05, 0x27, 0xef, 0xe1, 0x49, 0x15, 0xaf, 0x21, 0xd4, 0x7a, 0x11, + 0x55, 0xc7, 0x6a, 0x13, 0xeb, 0x25, 0x33, 0xdd, 0x29, 0x33, 0x65, 0x58, 0x5f, 0x78, 0x78, 0x50, + 0x19, 0x39, 0x3e, 0xa8, 0x5c, 0xd5, 0xd1, 0xd2, 0xc6, 0xd4, 0x9e, 0x70, 0x4e, 0x34, 0xe9, 0x4f, + 0xa3, 0x78, 0x4a, 0x59, 0xbe, 0xcd, 0x25, 0x73, 0x99, 0x64, 0xe7, 0x2d, 0xcd, 0xff, 0xf1, 0x94, + 0x13, 0x85, 0x21, 0xf7, 0x65, 0x23, 0x0c, 0x22, 0x5f, 0x17, 0xe8, 0x8a, 0x3d, 0x09, 0x8b, 0x76, + 0xbc, 0x46, 0x42, 0x7c, 0x35, 0xa3, 0x14, 0x63, 0x09, 0x65, 0x71, 0xac, 0x8a, 0x6a, 0x13, 0xeb, + 0x86, 0xa9, 0x9b, 0x67, 0x26, 0xcd, 0x33, 0xef, 0x26, 0xcd, 0xab, 0x2f, 0x43, 0x22, 0x06, 0x24, + 0x72, 0xda, 0x09, 0xdd, 0x7f, 0x5c, 0x41, 0xf6, 0x4c, 0x3a, 0xdc, 0x56, 0xbc, 0x4e, 0xda, 0x78, + 0x26, 0xab, 0xce, 0x7d, 0xb7, 0x78, 0x61, 0x68, 0xc4, 0x67, 0x20, 0x62, 0x31, 0x2f, 0x22, 0xf7, + 0x5d, 0x1d, 0x6f, 0x3a, 0x1d, 0xef, 0x75, 0xdf, 0xa5, 0x0b, 0xb8, 0x74, 0xd2, 0xbe, 0xa4, 0x96, + 0x30, 0x09, 0xf4, 0x63, 0x6c, 0xe4, 0x09, 0xa1, 0xbb, 0x0c, 0x17, 0x74, 0x83, 0x3a, 0x20, 0x81, + 0xfe, 0x2e, 0xe4, 0xf4, 0x37, 0x31, 0xae, 0x2f, 0x02, 0xcc, 0xb9, 0x74, 0x87, 0x13, 0x07, 0xd4, + 0x9e, 0x72, 0xd2, 0xda, 0x34, 0xc2, 0x4b, 0x0a, 0xc0, 0x6b, 0x5e, 0xec, 0xb2, 0x19, 0xc9, 0x20, + 0x7c, 0xd5, 0x71, 0x82, 0xc8, 0x97, 0x75, 0xd6, 0x66, 0xbe, 0xc3, 0x93, 0x99, 0xbd, 0x3d, 0xb8, + 0xf9, 0xf5, 0xc5, 0xe3, 0x83, 0x4a, 0x09, 0xc6, 0xf7, 0x94, 0x0e, 0xcd, 0x99, 0x0d, 0xfa, 0x2b, + 0xc2, 0xcb, 0xc3, 0xe2, 0x42, 0x11, 0x7e, 0x40, 0x78, 0xc1, 0x3d, 0xd1, 0x6a, 0x30, 0xad, 0xd6, + 0x68, 0x6a, 0xbd, 0xde, 0xc8, 0x6b, 0x6a, 0x31, 0x63, 0x6a, 0x31, 0x81, 0x5a, 0xcc, 0x8d, 0xc0, + 0xf3, 0xeb, 0xdb, 0x50, 0x10, 0xaa, 0x11, 0x3e, 0xc1, 0x17, 0xfd, 0xee, 0x71, 0xa5, 0xd6, 0xf2, + 0xe4, 0x07, 0x51, 0xd3, 0x74, 0x82, 0x8e, 0x05, 0x6c, 0xa5, 0x7f, 0x56, 0x85, 0xfb, 0xa1, 0x25, + 0xf7, 0xba, 0x5c, 0x28, 0xb7, 0xc2, 0x2e, 0xb9, 0x83, 0xb0, 0xd3, 0x59, 0x4c, 0x54, 0x76, 0x77, + 0x14, 0x4f, 0x25, 0xcd, 0xde, 0xc4, 0x57, 0x33, 0xab, 0x90, 0xe0, 0x3a, 0x1e, 0xd7, 0x7c, 0xa6, + 0xaa, 0x39, 0xb1, 0x3e, 0x9b, 0xed, 0xae, 0xd6, 0xae, 0x5f, 0x88, 0xb3, 0xb0, 0x41, 0x93, 0x7e, + 0x83, 0xd2, 0xec, 0x62, 0x73, 0x27, 0x08, 0xdd, 0x7f, 0xa5, 0x53, 0x69, 0xae, 0x1a, 0x3d, 0x27, + 0x57, 0x25, 0xb0, 0xfa, 0xb9, 0x2a, 0x54, 0xeb, 0x90, 0x6d, 0x1e, 0x57, 0x69, 0xc3, 0x7c, 0xae, + 0xd2, 0xc6, 0x09, 0x57, 0x69, 0x4d, 0xfa, 0x1b, 0xc2, 0xe5, 0x93, 0xb8, 0xac, 0xd9, 0xe6, 0x6f, + 0xc4, 0x3d, 0x89, 0x8f, 0x9e, 0xa7, 0xa0, 0x2a, 0xe4, 0x65, 0x3c, 0xce, 0x14, 0x18, 0xc5, 0x6b, + 0x85, 0xfe, 0x0e, 0x6b, 0xa0, 0xf5, 0x99, 0xe3, 0x83, 0xca, 0x14, 0xb8, 0x50, 0x2b, 0xd4, 0x06, + 0x33, 0xfa, 0x35, 0xc2, 0x95, 0x81, 0xf9, 0x41, 0x79, 0x77, 0xf1, 0xc5, 0xf8, 0x24, 0x15, 0xc3, + 0x37, 0xc4, 0x2b, 0x50, 0xd7, 0x49, 0xa8, 0x6b, 0x6c, 0x75, 0xbe, 0xd1, 0xd7, 0x91, 0xe8, 0x8f, + 0x08, 0xe8, 0xeb, 0x6e, 0x20, 0x59, 0xbb, 0x87, 0xed, 0x69, 0x28, 0xf9, 0x0a, 0x9e, 0xf6, 0x7c, + 0xa7, 0x1d, 0xb9, 0xbc, 0x91, 0x9c, 0xcf, 0x63, 0xea, 0x7c, 0x2e, 0xc0, 0xf2, 0x06, 0x1c, 0xd3, + 0xfb, 0x08, 0x2f, 0xe4, 0xe6, 0xf0, 0xdf, 0x95, 0xf5, 0x16, 0x6c, 0xa2, 0x77, 0x05, 0x0f, 0xb7, + 0xf5, 0x65, 0xe6, 0x1f, 0x5e, 0x1d, 0xfe, 0x42, 0x70, 0xf8, 0x64, 0x5d, 0x41, 0x6a, 0x5f, 0x20, + 0x3c, 0x2d, 0xba, 0xdc, 0x77, 0xe3, 0x84, 0x1b, 0x3a, 0xcb, 0xb1, 0x61, 0x59, 0xbe, 0x05, 0x59, + 0xce, 0xeb, 0x98, 0x7d, 0xf6, 0xe7, 0xcb, 0xb7, 0xd0, 0xb3, 0x56, 0xdf, 0xe4, 0x16, 0xbe, 0xd4, + 0xe5, 0xa1, 0x17, 0xb8, 0x49, 0xb5, 0xe7, 0x93, 0x8d, 0x92, 0xdc, 0xe9, 0xee, 0x28, 0x71, 0x7d, + 0x1e, 0x40, 0x40, 0xe2, 0x60, 0x44, 0xed, 0xc4, 0x7c, 0xfd, 0xcf, 0xcb, 0xf8, 0xa2, 0x4a, 0x9c, + 0x7c, 0x8f, 0x70, 0x69, 0xe0, 0x21, 0x43, 0x6e, 0x66, 0x77, 0xe2, 0x99, 0x8e, 0x42, 0xe3, 0xf9, + 0xf3, 0x19, 0xe9, 0x6a, 0xd3, 0xa5, 0x4f, 0x7f, 0xfe, 0xe3, 0xab, 0xd1, 0x0a, 0x59, 0x84, 0x3b, + 0x6c, 0x27, 0x70, 0xa3, 0x36, 0xef, 0x3f, 0x82, 0x88, 0x8b, 0xc7, 0x35, 0xe3, 0x93, 0x6a, 0x4e, + 0x98, 0xcc, 0x81, 0x62, 0xfc, 0xef, 0x09, 0x1a, 0x10, 0x75, 0x4e, 0x45, 0x9d, 0x26, 0x53, 0x99, + 0x9b, 0x33, 0xf9, 0x0c, 0xc1, 0xad, 0x57, 0x13, 0x28, 0x59, 0xca, 0xf1, 0x74, 0xfa, 0x68, 0x31, + 0x96, 0x87, 0xa9, 0x0d, 0xc8, 0x35, 0x4d, 0xdd, 0xd6, 0x7d, 0x98, 0xce, 0x07, 0xe4, 0x5b, 0x84, + 0xc9, 0x69, 0x46, 0x23, 0x37, 0x06, 0x45, 0xc9, 0x23, 0x76, 0x63, 0xf5, 0x8c, 0xda, 0x00, 0xed, + 0x45, 0x05, 0xed, 0x39, 0x62, 0xa6, 0xa1, 0xa9, 0x01, 0xde, 0x51, 0x17, 0x82, 0x58, 0xf9, 0x04, + 0xa2, 0x75, 0x5f, 0xaf, 0x3c, 0x20, 0x5f, 0x22, 0x5c, 0xc8, 0x52, 0x04, 0xa9, 0xe5, 0x44, 0xce, + 0x65, 0x42, 0xe3, 0xd9, 0x33, 0x68, 0x02, 0xbe, 0x9a, 0xc2, 0x47, 0x49, 0x15, 0xf0, 0xc9, 0x58, + 0xad, 0xd1, 0x43, 0x99, 0xaa, 0xde, 0xe7, 0x08, 0x4f, 0xa6, 0xf7, 0x35, 0xc9, 0xeb, 0x4e, 0x0e, + 0x87, 0x18, 0x2b, 0x43, 0xf5, 0x00, 0xcb, 0xb2, 0xc2, 0x52, 0x25, 0x65, 0xc0, 0x12, 0x09, 0x1e, + 0x36, 0x60, 0x2b, 0x8a, 0x14, 0x92, 0xde, 0x34, 0xc1, 0x1b, 0x6a, 0xe0, 0x34, 0x65, 0x9e, 0x41, + 0x83, 0xa7, 0x29, 0xfb, 0xc8, 0x19, 0x30, 0x4d, 0xfa, 0xd1, 0x92, 0x42, 0xf1, 0x09, 0xea, 0x7f, + 0xb0, 0xac, 0x0c, 0x0a, 0xd0, 0x77, 0x0d, 0x37, 0x6a, 0xc3, 0x15, 0x01, 0xcb, 0xa2, 0xc2, 0x72, + 0x8d, 0xcc, 0x65, 0xb0, 0x24, 0xd7, 0xeb, 0xfa, 0xe6, 0xc3, 0xc3, 0x32, 0x7a, 0x74, 0x58, 0x46, + 0xbf, 0x1f, 0x96, 0xd1, 0xfe, 0x51, 0x79, 0xe4, 0xd1, 0x51, 0x79, 0xe4, 0x97, 0xa3, 0xf2, 0xc8, + 0xfb, 0x56, 0x8a, 0x15, 0xb7, 0x54, 0xb0, 0xd5, 0xdb, 0xac, 0x29, 0xac, 0xe4, 0xf1, 0xba, 0xf6, + 0x82, 0xf5, 0x51, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xea, 0x09, 0x72, 0xf3, 0xef, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xc2, 0x9b, 0xf3, 0x1c, 0x90, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/tx.pb.go b/x/claim/types/tx.pb.go index 4da6be531f..6d3d0e9eb6 100644 --- a/x/claim/types/tx.pb.go +++ b/x/claim/types/tx.pb.go @@ -445,48 +445,48 @@ func init() { func init() { proto.RegisterFile("stride/claim/tx.proto", fileDescriptor_9d435242bf328977) } var fileDescriptor_9d435242bf328977 = []byte{ - // 645 bytes of a gzipped FileDescriptorProto + // 646 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x4e, 0x10, 0x8d, 0x7f, 0x09, 0x7f, 0xb2, 0xfc, 0xa0, 0xb0, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x7c, 0x40, - 0x96, 0x2a, 0xec, 0x42, 0x7b, 0xea, 0xa9, 0x04, 0x5a, 0x09, 0x09, 0x2e, 0x06, 0xa9, 0x12, 0x52, - 0x15, 0xad, 0xed, 0xa9, 0x59, 0xd5, 0xf6, 0x46, 0xde, 0x0d, 0x85, 0x4f, 0xd0, 0x2b, 0x9f, 0xa3, - 0x9f, 0x84, 0x23, 0xc7, 0xaa, 0x87, 0xb4, 0x82, 0x73, 0x2f, 0x9c, 0x7a, 0xac, 0xbc, 0xeb, 0x04, - 0x87, 0x84, 0x96, 0x43, 0x4f, 0xf6, 0xbc, 0x37, 0xfb, 0x76, 0x67, 0xde, 0xec, 0xa2, 0x15, 0x2e, - 0x72, 0x1a, 0x81, 0x17, 0x26, 0x84, 0xa6, 0x9e, 0x38, 0x73, 0xbb, 0x39, 0x13, 0x0c, 0xff, 0xaf, - 0x60, 0x57, 0xc2, 0xc6, 0x72, 0xcc, 0x62, 0x26, 0x09, 0xaf, 0xf8, 0x53, 0x39, 0x86, 0x19, 0x32, - 0x9e, 0x32, 0xee, 0x05, 0x84, 0x83, 0x77, 0xba, 0x19, 0x80, 0x20, 0x9b, 0x5e, 0xc8, 0x68, 0xa6, - 0x78, 0xfb, 0x97, 0x86, 0xf4, 0x03, 0x1e, 0x1f, 0x82, 0xd8, 0xa6, 0x79, 0x94, 0xb3, 0xee, 0x76, - 0x92, 0xb0, 0x90, 0x08, 0xca, 0x32, 0x8e, 0x9f, 0xa2, 0x26, 0x51, 0x21, 0xcb, 0x75, 0xcd, 0xd2, - 0x9c, 0xa6, 0x7f, 0x07, 0xe0, 0x7d, 0x84, 0x89, 0x5a, 0xd3, 0xa1, 0x11, 0x64, 0x82, 0x7e, 0xa0, - 0x90, 0xeb, 0xff, 0x15, 0x69, 0xed, 0xb5, 0xdb, 0x7e, 0x6b, 0xf5, 0x9c, 0xa4, 0xc9, 0x2b, 0x7b, - 0x3c, 0xc7, 0xf6, 0x97, 0x4a, 0x70, 0x6f, 0x88, 0xe1, 0x65, 0x34, 0xd5, 0xe3, 0x90, 0x73, 0xbd, - 0x6e, 0xd5, 0x9d, 0xa6, 0xaf, 0x02, 0x7c, 0x8c, 0x66, 0x3e, 0x01, 0x8d, 0x4f, 0x04, 0xd7, 0x1b, - 0x05, 0xde, 0x7e, 0x7d, 0xd9, 0x6f, 0xd5, 0xbe, 0xf5, 0x5b, 0xeb, 0x31, 0x15, 0x27, 0xbd, 0xc0, - 0x0d, 0x59, 0xea, 0x95, 0x25, 0xaa, 0xcf, 0x06, 0x8f, 0x3e, 0x7a, 0xe2, 0xbc, 0x0b, 0xdc, 0xdd, - 0x85, 0xf0, 0xb6, 0xdf, 0x5a, 0x50, 0xc7, 0x28, 0x65, 0x6c, 0x7f, 0x20, 0x68, 0xdb, 0xc8, 0x7a, - 0xa8, 0x72, 0x1f, 0x78, 0x97, 0x65, 0x1c, 0x6c, 0x07, 0xe1, 0x03, 0x1e, 0xef, 0x14, 0x0d, 0x7e, - 0x9b, 0x03, 0x6c, 0xa7, 0xac, 0x97, 0x09, 0x8c, 0x51, 0xa3, 0x38, 0x5e, 0xd9, 0x12, 0xf9, 0x6f, - 0x5f, 0x68, 0xc8, 0x18, 0x4f, 0x1d, 0x08, 0xe1, 0x1c, 0x2d, 0x48, 0x9b, 0x20, 0xea, 0x10, 0xc9, - 0xc8, 0x3a, 0xe7, 0xb6, 0x56, 0x5d, 0x75, 0x6c, 0xb7, 0x30, 0xc8, 0x2d, 0x0d, 0x72, 0x77, 0x18, - 0xcd, 0xda, 0xcf, 0x8b, 0x52, 0xbf, 0x7c, 0x6f, 0x39, 0x8f, 0x28, 0xb5, 0x58, 0xc0, 0xfd, 0xf9, - 0x72, 0x0b, 0xb5, 0xb7, 0xfd, 0x53, 0x43, 0x8b, 0xc5, 0x91, 0x72, 0x20, 0x02, 0xca, 0x22, 0xb1, - 0x85, 0xe6, 0x22, 0x5a, 0x0c, 0x4e, 0xd0, 0xbb, 0x73, 0xb5, 0x0a, 0x61, 0x13, 0xa1, 0xfb, 0x7e, - 0xfa, 0x15, 0x04, 0xaf, 0xa2, 0xd9, 0xf0, 0x84, 0xd0, 0xac, 0x43, 0x23, 0x7d, 0x5a, 0xb2, 0x33, - 0x32, 0xde, 0x8b, 0x0a, 0x13, 0x23, 0xc8, 0x58, 0xaa, 0x4f, 0x49, 0x5c, 0x05, 0x78, 0x0d, 0x21, - 0x2e, 0x48, 0x2e, 0x3a, 0x82, 0xa6, 0xa0, 0xd7, 0x2d, 0xcd, 0x69, 0xf8, 0x4d, 0x89, 0x1c, 0xd1, - 0x14, 0xb0, 0x81, 0x66, 0xa3, 0x5e, 0x2e, 0x1b, 0xaf, 0x37, 0x24, 0x39, 0x8c, 0xf1, 0x33, 0xb4, - 0x44, 0x7a, 0x82, 0x75, 0x69, 0xc2, 0x44, 0x07, 0x32, 0x12, 0x24, 0x10, 0xe9, 0x33, 0x96, 0xe6, - 0xcc, 0xfa, 0x8b, 0x43, 0xe2, 0x8d, 0xc2, 0x6d, 0x43, 0x8e, 0xf2, 0x48, 0xb9, 0x43, 0x23, 0x8f, - 0x64, 0x2b, 0x76, 0x21, 0x81, 0x7f, 0xd8, 0x8a, 0x72, 0xc7, 0x11, 0xd5, 0xc1, 0x8e, 0x5b, 0x9f, - 0xeb, 0xa8, 0x7e, 0xc0, 0x63, 0xcc, 0xd0, 0xca, 0xe4, 0xdb, 0xb5, 0xee, 0x56, 0xef, 0xaf, 0xfb, - 0xd0, 0x2c, 0x1a, 0xee, 0xe3, 0xf2, 0x86, 0xa3, 0xf6, 0x1e, 0x3d, 0xb9, 0x3f, 0xb0, 0xd6, 0x98, - 0xc4, 0xbd, 0x0c, 0xc3, 0xf9, 0x5b, 0xc6, 0x50, 0xfe, 0x1d, 0x9a, 0x1f, 0x9d, 0x28, 0x73, 0x7c, - 0x69, 0x95, 0x37, 0xd6, 0xff, 0xcc, 0x57, 0x85, 0x47, 0xfd, 0x19, 0x17, 0x1e, 0xe1, 0x27, 0x08, - 0x4f, 0x74, 0xa2, 0xbd, 0x77, 0x79, 0x6d, 0x6a, 0x57, 0xd7, 0xa6, 0xf6, 0xe3, 0xda, 0xd4, 0x2e, - 0x6e, 0xcc, 0xda, 0xd5, 0x8d, 0x59, 0xfb, 0x7a, 0x63, 0xd6, 0x8e, 0xbd, 0xca, 0xd5, 0x3a, 0x94, - 0x5a, 0x1b, 0xfb, 0x24, 0xe0, 0x5e, 0xf9, 0xde, 0x9e, 0x6e, 0xbe, 0xf4, 0xce, 0x06, 0xaf, 0x6e, - 0x71, 0xcf, 0x82, 0x69, 0xf9, 0x6a, 0xbe, 0xf8, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x50, 0x87, 0xde, - 0x2b, 0x92, 0x05, 0x00, 0x00, + 0x96, 0x2a, 0xec, 0x42, 0xd5, 0x4b, 0x4f, 0x25, 0xd0, 0x4a, 0x48, 0x70, 0x31, 0x48, 0x95, 0x90, + 0xaa, 0x68, 0x6d, 0x4f, 0xcd, 0xaa, 0xb6, 0x37, 0xf2, 0x6e, 0x28, 0x7c, 0x82, 0x5e, 0xf9, 0x1c, + 0xfd, 0x24, 0x1c, 0x39, 0x56, 0x3d, 0xa4, 0x15, 0x9c, 0x7b, 0xe1, 0xd4, 0x63, 0xe5, 0x5d, 0x27, + 0x38, 0x24, 0xb4, 0x1c, 0x7a, 0xb2, 0xe7, 0xbd, 0xd9, 0xb7, 0x3b, 0xf3, 0x66, 0x17, 0xad, 0x70, + 0x91, 0xd3, 0x08, 0xbc, 0x30, 0x21, 0x34, 0xf5, 0xc4, 0x99, 0xdb, 0xcd, 0x99, 0x60, 0xf8, 0x7f, + 0x05, 0xbb, 0x12, 0x36, 0x96, 0x63, 0x16, 0x33, 0x49, 0x78, 0xc5, 0x9f, 0xca, 0x31, 0xcc, 0x90, + 0xf1, 0x94, 0x71, 0x2f, 0x20, 0x1c, 0xbc, 0xd3, 0xcd, 0x00, 0x04, 0xd9, 0xf4, 0x42, 0x46, 0x33, + 0xc5, 0xdb, 0xbf, 0x34, 0xa4, 0x1f, 0xf0, 0xf8, 0x10, 0xc4, 0x36, 0xcd, 0xa3, 0x9c, 0x75, 0xb7, + 0x93, 0x84, 0x85, 0x44, 0x50, 0x96, 0x71, 0xfc, 0x14, 0x35, 0x89, 0x0a, 0x59, 0xae, 0x6b, 0x96, + 0xe6, 0x34, 0xfd, 0x3b, 0x00, 0xef, 0x23, 0x4c, 0xd4, 0x9a, 0x0e, 0x8d, 0x20, 0x13, 0xf4, 0x03, + 0x85, 0x5c, 0xff, 0xaf, 0x48, 0x6b, 0xaf, 0xdd, 0xf6, 0x5b, 0xab, 0xe7, 0x24, 0x4d, 0x5e, 0xd9, + 0xe3, 0x39, 0xb6, 0xbf, 0x54, 0x82, 0x7b, 0x43, 0x0c, 0x2f, 0xa3, 0xa9, 0x1e, 0x87, 0x9c, 0xeb, + 0x75, 0xab, 0xee, 0x34, 0x7d, 0x15, 0xe0, 0x63, 0x34, 0xf3, 0x09, 0x68, 0x7c, 0x22, 0xb8, 0xde, + 0x28, 0xf0, 0xf6, 0xeb, 0xcb, 0x7e, 0xab, 0xf6, 0xad, 0xdf, 0x5a, 0x8f, 0xa9, 0x38, 0xe9, 0x05, + 0x6e, 0xc8, 0x52, 0xaf, 0x2c, 0x51, 0x7d, 0x36, 0x78, 0xf4, 0xd1, 0x13, 0xe7, 0x5d, 0xe0, 0xee, + 0x2e, 0x84, 0xb7, 0xfd, 0xd6, 0x82, 0x3a, 0x46, 0x29, 0x63, 0xfb, 0x03, 0x41, 0xdb, 0x46, 0xd6, + 0x43, 0x95, 0xfb, 0xc0, 0xbb, 0x2c, 0xe3, 0x60, 0x3b, 0x08, 0x1f, 0xf0, 0x78, 0xa7, 0x68, 0xf0, + 0xdb, 0x1c, 0x60, 0x3b, 0x65, 0xbd, 0x4c, 0x60, 0x8c, 0x1a, 0xc5, 0xf1, 0xca, 0x96, 0xc8, 0x7f, + 0xfb, 0x42, 0x43, 0xc6, 0x78, 0xea, 0x40, 0x08, 0xe7, 0x68, 0x41, 0xda, 0x04, 0x51, 0x87, 0x48, + 0x46, 0xd6, 0x39, 0xb7, 0xb5, 0xea, 0xaa, 0x63, 0xbb, 0x85, 0x41, 0x6e, 0x69, 0x90, 0xbb, 0xc3, + 0x68, 0xd6, 0x7e, 0x5e, 0x94, 0xfa, 0xe5, 0x7b, 0xcb, 0x79, 0x44, 0xa9, 0xc5, 0x02, 0xee, 0xcf, + 0x97, 0x5b, 0xa8, 0xbd, 0xed, 0x9f, 0x1a, 0x5a, 0x2c, 0x8e, 0x94, 0x03, 0x11, 0x50, 0x16, 0x89, + 0x2d, 0x34, 0x17, 0xd1, 0x62, 0x70, 0x82, 0xde, 0x9d, 0xab, 0x55, 0x08, 0x9b, 0x08, 0xdd, 0xf7, + 0xd3, 0xaf, 0x20, 0x78, 0x15, 0xcd, 0x86, 0x27, 0x84, 0x66, 0x1d, 0x1a, 0xe9, 0xd3, 0x92, 0x9d, + 0x91, 0xf1, 0x5e, 0x54, 0x98, 0x18, 0x41, 0xc6, 0x52, 0x7d, 0x4a, 0xe2, 0x2a, 0xc0, 0x6b, 0x08, + 0x71, 0x41, 0x72, 0xd1, 0x11, 0x34, 0x05, 0xbd, 0x6e, 0x69, 0x4e, 0xc3, 0x6f, 0x4a, 0xe4, 0x88, + 0xa6, 0x80, 0x0d, 0x34, 0x1b, 0xf5, 0x72, 0xd9, 0x78, 0xbd, 0x21, 0xc9, 0x61, 0x8c, 0x9f, 0xa1, + 0x25, 0xd2, 0x13, 0xac, 0x4b, 0x13, 0x26, 0x3a, 0x90, 0x91, 0x20, 0x81, 0x48, 0x9f, 0xb1, 0x34, + 0x67, 0xd6, 0x5f, 0x1c, 0x12, 0x6f, 0x14, 0x6e, 0x1b, 0x72, 0x94, 0x47, 0xca, 0x1d, 0x1a, 0x79, + 0x24, 0x5b, 0xb1, 0x0b, 0x09, 0xfc, 0xc3, 0x56, 0x94, 0x3b, 0x8e, 0xa8, 0x0e, 0x76, 0xdc, 0xfa, + 0x5c, 0x47, 0xf5, 0x03, 0x1e, 0x63, 0x86, 0x56, 0x26, 0xdf, 0xae, 0x75, 0xb7, 0x7a, 0x7f, 0xdd, + 0x87, 0x66, 0xd1, 0x70, 0x1f, 0x97, 0x37, 0x1c, 0xb5, 0xf7, 0xe8, 0xc9, 0xfd, 0x81, 0xb5, 0xc6, + 0x24, 0xee, 0x65, 0x18, 0xce, 0xdf, 0x32, 0x86, 0xf2, 0xef, 0xd0, 0xfc, 0xe8, 0x44, 0x99, 0xe3, + 0x4b, 0xab, 0xbc, 0xb1, 0xfe, 0x67, 0xbe, 0x2a, 0x3c, 0xea, 0xcf, 0xb8, 0xf0, 0x08, 0x3f, 0x41, + 0x78, 0xa2, 0x13, 0xed, 0xbd, 0xcb, 0x6b, 0x53, 0xbb, 0xba, 0x36, 0xb5, 0x1f, 0xd7, 0xa6, 0x76, + 0x71, 0x63, 0xd6, 0xae, 0x6e, 0xcc, 0xda, 0xd7, 0x1b, 0xb3, 0x76, 0xec, 0x55, 0xae, 0xd6, 0xa1, + 0xd4, 0xda, 0xd8, 0x27, 0x01, 0xf7, 0xca, 0xf7, 0xf6, 0x74, 0xf3, 0xa5, 0x77, 0x36, 0x78, 0x75, + 0x8b, 0x7b, 0x16, 0x4c, 0xcb, 0x57, 0xf3, 0xc5, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x6d, + 0xad, 0xb0, 0x92, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/client/cli/tx.go b/x/claim/vesting/client/cli/tx.go index d9f761b51e..fe233f504a 100644 --- a/x/claim/vesting/client/cli/tx.go +++ b/x/claim/vesting/client/cli/tx.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" ) // GetTxCmd returns stride vesting module's transaction commands. diff --git a/x/claim/vesting/client/testutil/suite.go b/x/claim/vesting/client/testutil/suite.go index 8ffd320096..c63a5554e5 100644 --- a/x/claim/vesting/client/testutil/suite.go +++ b/x/claim/vesting/client/testutil/suite.go @@ -3,7 +3,7 @@ package testutil import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/testutil/network" + "github.com/Stride-Labs/stride/v15/testutil/network" ) type IntegrationTestSuite struct { diff --git a/x/claim/vesting/handler.go b/x/claim/vesting/handler.go index 7635fcc976..e071a55613 100644 --- a/x/claim/vesting/handler.go +++ b/x/claim/vesting/handler.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" ) // NewHandler returns a handler for x/auth message types. diff --git a/x/claim/vesting/module.go b/x/claim/vesting/module.go index 59c84e68bd..1b20e4eca7 100644 --- a/x/claim/vesting/module.go +++ b/x/claim/vesting/module.go @@ -15,8 +15,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/client/cli" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/client/cli" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" ) var ( diff --git a/x/claim/vesting/msg_server.go b/x/claim/vesting/msg_server.go index 2238632ca8..6710301843 100644 --- a/x/claim/vesting/msg_server.go +++ b/x/claim/vesting/msg_server.go @@ -3,7 +3,7 @@ package vesting import ( "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" ) type msgServer struct { diff --git a/x/claim/vesting/types/codec.go b/x/claim/vesting/types/codec.go index a97e61330d..32a702052f 100644 --- a/x/claim/vesting/types/codec.go +++ b/x/claim/vesting/types/codec.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/msgservice" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/exported" ) // RegisterLegacyAminoCodec registers the vesting interfaces and concrete types on the diff --git a/x/claim/vesting/types/common_test.go b/x/claim/vesting/types/common_test.go index e935d4439d..35ae88d744 100644 --- a/x/claim/vesting/types/common_test.go +++ b/x/claim/vesting/types/common_test.go @@ -1,7 +1,7 @@ package types_test import ( - strideApp "github.com/Stride-Labs/stride/v14/app" + strideApp "github.com/Stride-Labs/stride/v15/app" ) var ( diff --git a/x/claim/vesting/types/tx.pb.go b/x/claim/vesting/types/tx.pb.go index f2790098b3..2cdffbb46b 100644 --- a/x/claim/vesting/types/tx.pb.go +++ b/x/claim/vesting/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_5ebed07aad5e90bd = []byte{ 0xd3, 0x9d, 0x02, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x3c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xac, 0x57, 0xd7, 0x27, 0x31, - 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0x89, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, + 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0xa9, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, 0xb2, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x85, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1e, 0x6d, 0x01, 0xb0, 0x8b, 0x00, 0x00, 0x00, + 0xcf, 0x85, 0xe6, 0xbe, 0x8b, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/vesting.pb.go b/x/claim/vesting/types/vesting.pb.go index c6ddacbb50..263c1f8855 100644 --- a/x/claim/vesting/types/vesting.pb.go +++ b/x/claim/vesting/types/vesting.pb.go @@ -187,7 +187,7 @@ var fileDescriptor_41f0278a453c26b3 = []byte{ // 590 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x3e, 0x1c, 0x8d, 0xd7, 0xae, 0xff, 0xfd, 0x5d, 0xd8, 0x46, 0x18, 0x25, 0x4c, 0x23, 0xa9, 0x72, 0xea, - 0x65, 0x09, 0x1d, 0x48, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, + 0x65, 0x09, 0x1d, 0x42, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, 0x9c, 0xc4, 0xa4, 0x16, 0x4d, 0x5c, 0xc5, 0xee, 0x44, 0xbf, 0x01, 0x12, 0x17, 0x90, 0x38, 0x70, 0xdc, 0x99, 0x4f, 0x32, 0x89, 0x4b, 0xc5, 0x89, 0x53, 0x41, 0xad, 0xf8, 0x02, 0xfb, 0x04, 0x28, 0xb6, 0xd3, 0xb2, 0xec, 0x50, 0x8d, 0x53, 0x62, 0xff, 0xfc, 0x9e, 0xdf, 0xef, 0xd9, 0xcf, 0x70, @@ -221,7 +221,7 @@ var fileDescriptor_41f0278a453c26b3 = []byte{ 0x99, 0x99, 0xe0, 0xd7, 0xcc, 0x04, 0x1f, 0xe7, 0xa6, 0x36, 0x99, 0x9b, 0xda, 0x8f, 0xb9, 0xa9, 0x9d, 0x3c, 0xfe, 0xcb, 0x5a, 0xe9, 0xc4, 0xfe, 0x11, 0x0a, 0x99, 0x5b, 0xbe, 0x5f, 0xdd, 0x47, 0xee, 0x3b, 0x37, 0x1a, 0x20, 0x92, 0x2e, 0xde, 0x32, 0xe1, 0x77, 0xd8, 0x10, 0x8f, 0xcc, 0xc3, - 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x53, 0xb9, 0xcf, 0x87, 0xea, 0x04, 0x00, 0x00, + 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x82, 0x51, 0x28, 0x89, 0xea, 0x04, 0x00, 0x00, } func (m *BaseVestingAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/vesting/types/vesting_account.go b/x/claim/vesting/types/vesting_account.go index d3566d1f9e..e4ab8b95ff 100644 --- a/x/claim/vesting/types/vesting_account.go +++ b/x/claim/vesting/types/vesting_account.go @@ -12,8 +12,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/utils" - vestexported "github.com/Stride-Labs/stride/v14/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v15/utils" + vestexported "github.com/Stride-Labs/stride/v15/x/claim/vesting/exported" ) // Compile-time type assertions diff --git a/x/claim/vesting/types/vesting_account_test.go b/x/claim/vesting/types/vesting_account_test.go index ff2c891d10..23f71da458 100644 --- a/x/claim/vesting/types/vesting_account_test.go +++ b/x/claim/vesting/types/vesting_account_test.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v14/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" ) var ( diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go index 6543534a6b..615ffe68f1 100644 --- a/x/epochs/client/cli/query.go +++ b/x/epochs/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/epochs/genesis.go b/x/epochs/genesis.go index 3ff139034d..556da21c95 100644 --- a/x/epochs/genesis.go +++ b/x/epochs/genesis.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/epochs/keeper" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/keeper" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/epochs/genesis_test.go b/x/epochs/genesis_test.go index 5042b8995e..8d4ab5dae7 100644 --- a/x/epochs/genesis_test.go +++ b/x/epochs/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/epochs" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/epochs" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) func TestGenesis(t *testing.T) { diff --git a/x/epochs/handler.go b/x/epochs/handler.go index 2c3063f534..bf9caa9457 100644 --- a/x/epochs/handler.go +++ b/x/epochs/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/epochs/keeper" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/keeper" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // NewHandler returns a handler for epochs module messages diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index 5e35bc4e32..9e65a0535f 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -9,8 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // BeginBlocker of epochs module diff --git a/x/epochs/keeper/abci_test.go b/x/epochs/keeper/abci_test.go index e434dadf0f..d0e29c8420 100644 --- a/x/epochs/keeper/abci_test.go +++ b/x/epochs/keeper/abci_test.go @@ -4,8 +4,8 @@ import ( "fmt" "time" - "github.com/Stride-Labs/stride/v14/x/epochs" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochInfoChangesBeginBlockerAndInitGenesis() { diff --git a/x/epochs/keeper/epoch.go b/x/epochs/keeper/epoch.go index 97bc568296..3441b2645c 100644 --- a/x/epochs/keeper/epoch.go +++ b/x/epochs/keeper/epoch.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // GetEpochInfo returns epoch info by identifier diff --git a/x/epochs/keeper/epoch_test.go b/x/epochs/keeper/epoch_test.go index d2761ed056..222461733d 100644 --- a/x/epochs/keeper/epoch_test.go +++ b/x/epochs/keeper/epoch_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochLifeCycle() { diff --git a/x/epochs/keeper/grpc_query.go b/x/epochs/keeper/grpc_query.go index fe819c240c..5a46563c29 100644 --- a/x/epochs/keeper/grpc_query.go +++ b/x/epochs/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/epochs/keeper/grpc_query_test.go b/x/epochs/keeper/grpc_query_test.go index 6c89dd3fa4..45f8ac8d91 100644 --- a/x/epochs/keeper/grpc_query_test.go +++ b/x/epochs/keeper/grpc_query_test.go @@ -6,7 +6,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) func (suite *KeeperTestSuite) TestQueryEpochInfos() { diff --git a/x/epochs/keeper/hooks.go b/x/epochs/keeper/hooks.go index 45b5cfa35f..38cdeba2da 100644 --- a/x/epochs/keeper/hooks.go +++ b/x/epochs/keeper/hooks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // AfterEpochEnd executes the indicated hook after epochs ends diff --git a/x/epochs/keeper/keeper.go b/x/epochs/keeper/keeper.go index 0194e74823..be714ccd2e 100644 --- a/x/epochs/keeper/keeper.go +++ b/x/epochs/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // Keeper of this module maintains collections of epochs and hooks. diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index c335efca41..c4657733bc 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) type KeeperTestSuite struct { diff --git a/x/epochs/module.go b/x/epochs/module.go index 376290dc14..23154d0765 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -20,10 +20,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/epochs/client/cli" - "github.com/Stride-Labs/stride/v14/x/epochs/keeper" - "github.com/Stride-Labs/stride/v14/x/epochs/simulation" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/client/cli" + "github.com/Stride-Labs/stride/v15/x/epochs/keeper" + "github.com/Stride-Labs/stride/v15/x/epochs/simulation" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) var ( diff --git a/x/epochs/simulation/genesis.go b/x/epochs/simulation/genesis.go index 1ee1ef2d7a..ac927984fc 100644 --- a/x/epochs/simulation/genesis.go +++ b/x/epochs/simulation/genesis.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // RandomizedGenState generates a random GenesisState for mint diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 050e7138b5..3f75668515 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -175,33 +175,33 @@ var fileDescriptor_92af8154b2eb736d = []byte{ // 468 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x6f, 0xd3, 0x40, 0x14, 0xc7, 0x73, 0x24, 0x84, 0xe6, 0xda, 0x0a, 0x71, 0x2a, 0x70, 0x04, 0x61, 0x5b, 0x66, 0xb1, - 0x04, 0xd8, 0xb4, 0x54, 0x0c, 0xb0, 0x85, 0xdf, 0x88, 0xc9, 0x61, 0x40, 0x2c, 0x91, 0x93, 0x5c, - 0xce, 0x27, 0xd5, 0x3e, 0xcb, 0xf7, 0x8c, 0xc8, 0xc6, 0xcc, 0xd4, 0x91, 0x3f, 0xa9, 0x63, 0x47, - 0x26, 0x83, 0x92, 0x8d, 0xb1, 0x7f, 0x01, 0xf2, 0x9d, 0x1d, 0x52, 0x02, 0xea, 0x66, 0xdf, 0xe7, - 0xfb, 0xbe, 0xdf, 0x7b, 0x4f, 0xef, 0xf0, 0x6d, 0x05, 0xb9, 0x98, 0xb2, 0x80, 0x65, 0x72, 0x12, - 0xab, 0x80, 0xb3, 0x94, 0x29, 0xa1, 0xfc, 0x2c, 0x97, 0x20, 0xc9, 0xae, 0x81, 0xbe, 0x81, 0xfd, - 0x3d, 0x2e, 0xb9, 0xd4, 0x24, 0xa8, 0xbe, 0x8c, 0xa8, 0x6f, 0x71, 0x29, 0xf9, 0x11, 0x0b, 0xf4, - 0xdf, 0xb8, 0x98, 0x05, 0xd3, 0x22, 0x8f, 0x40, 0xc8, 0xb4, 0xe6, 0xf6, 0xdf, 0x1c, 0x44, 0xc2, - 0x14, 0x44, 0x49, 0x66, 0x04, 0xee, 0xd7, 0x0e, 0xee, 0xbd, 0xa8, 0x12, 0xde, 0xa4, 0x33, 0x49, - 0x2c, 0x8c, 0xc5, 0x94, 0xa5, 0x20, 0x66, 0x82, 0xe5, 0x14, 0x39, 0xc8, 0xeb, 0x85, 0x6b, 0x27, - 0xe4, 0x03, 0xc6, 0x0a, 0xa2, 0x1c, 0x46, 0x95, 0x0d, 0xbd, 0xe4, 0x20, 0x6f, 0xfb, 0xa0, 0xef, - 0x9b, 0x0c, 0xbf, 0xc9, 0xf0, 0xdf, 0x37, 0x19, 0x83, 0x3b, 0x27, 0xa5, 0xdd, 0x3a, 0x2b, 0xed, - 0x6b, 0xf3, 0x28, 0x39, 0x7a, 0xe2, 0xfe, 0xa9, 0x75, 0x8f, 0x7f, 0xd8, 0x28, 0xec, 0xe9, 0x83, - 0x4a, 0x4e, 0x62, 0xbc, 0xd5, 0x5c, 0x9d, 0xb6, 0xb5, 0xef, 0xad, 0x0d, 0xdf, 0xe7, 0xb5, 0x60, - 0xb0, 0x5f, 0xd9, 0xfe, 0x2a, 0x6d, 0xd2, 0x94, 0xdc, 0x97, 0x89, 0x00, 0x96, 0x64, 0x30, 0x3f, - 0x2b, 0xed, 0xab, 0x26, 0xac, 0x61, 0xee, 0xb7, 0x2a, 0x6a, 0xe5, 0x4e, 0xee, 0xe2, 0xdd, 0x49, - 0x91, 0xe7, 0x2c, 0x85, 0x91, 0x1e, 0x2d, 0xed, 0x38, 0xc8, 0x6b, 0x87, 0x3b, 0xf5, 0xa1, 0x1e, - 0x06, 0xf9, 0x82, 0x30, 0x3d, 0xa7, 0x1a, 0xad, 0xf5, 0x7d, 0xf9, 0xc2, 0xbe, 0xef, 0xd5, 0x7d, - 0xdb, 0xe6, 0x2a, 0xff, 0x73, 0x32, 0x53, 0xb8, 0xbe, 0x9e, 0x3c, 0x5c, 0x4d, 0xe4, 0x10, 0xdf, - 0x30, 0xfa, 0x89, 0x2c, 0x52, 0x10, 0x29, 0x37, 0x85, 0x6c, 0x4a, 0xbb, 0x0e, 0xf2, 0xb6, 0xc2, - 0x3d, 0x4d, 0x9f, 0xd5, 0x70, 0x68, 0x18, 0x79, 0x8a, 0xfb, 0xff, 0x4a, 0x8b, 0x99, 0xe0, 0x31, - 0xd0, 0x2b, 0xba, 0xd5, 0x9b, 0x1b, 0x81, 0xaf, 0x35, 0x76, 0x5f, 0xe2, 0x9d, 0x57, 0x66, 0x07, - 0x87, 0x10, 0x01, 0x23, 0x8f, 0x71, 0xd7, 0x6c, 0x1f, 0x45, 0x4e, 0xdb, 0xdb, 0x3e, 0xa0, 0xfe, - 0xb9, 0x9d, 0xf4, 0x57, 0x8b, 0x33, 0xe8, 0x54, 0x0d, 0x87, 0xb5, 0x7a, 0xf0, 0xf6, 0x64, 0x61, - 0xa1, 0xd3, 0x85, 0x85, 0x7e, 0x2e, 0x2c, 0x74, 0xbc, 0xb4, 0x5a, 0xa7, 0x4b, 0xab, 0xf5, 0x7d, - 0x69, 0xb5, 0x3e, 0x3e, 0xe4, 0x02, 0xe2, 0x62, 0xec, 0x4f, 0x64, 0x12, 0x0c, 0xb5, 0xd7, 0x83, - 0x77, 0xd1, 0x58, 0x05, 0xf5, 0x43, 0xf8, 0xb4, 0x7f, 0x18, 0x7c, 0x6e, 0x9e, 0x03, 0xcc, 0x33, - 0xa6, 0xc6, 0x5d, 0x3d, 0xde, 0x47, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb3, 0xe3, 0xad, 0x9d, + 0x04, 0xd8, 0xb4, 0xfc, 0x18, 0x60, 0x0b, 0xbf, 0x11, 0x93, 0xc3, 0x80, 0x58, 0x22, 0x27, 0xb9, + 0x9c, 0x4f, 0xaa, 0x7d, 0x96, 0xef, 0x19, 0x91, 0x8d, 0x99, 0xa9, 0x23, 0x7f, 0x52, 0xc7, 0x8e, + 0x4c, 0x06, 0x25, 0x1b, 0x63, 0xff, 0x02, 0xe4, 0x3b, 0x3b, 0xa4, 0x04, 0xd4, 0xcd, 0xbe, 0xcf, + 0xf7, 0x7d, 0xbf, 0xf7, 0x9e, 0xde, 0xe1, 0x9b, 0x0a, 0x72, 0x31, 0x65, 0x01, 0xcb, 0xe4, 0x24, + 0x56, 0x01, 0x67, 0x29, 0x53, 0x42, 0xf9, 0x59, 0x2e, 0x41, 0x92, 0x5d, 0x03, 0x7d, 0x03, 0xfb, + 0x7b, 0x5c, 0x72, 0xa9, 0x49, 0x50, 0x7d, 0x19, 0x51, 0xdf, 0xe2, 0x52, 0xf2, 0x43, 0x16, 0xe8, + 0xbf, 0x71, 0x31, 0x0b, 0xa6, 0x45, 0x1e, 0x81, 0x90, 0x69, 0xcd, 0xed, 0xbf, 0x39, 0x88, 0x84, + 0x29, 0x88, 0x92, 0xcc, 0x08, 0xdc, 0xaf, 0x1d, 0xdc, 0x7b, 0x51, 0x25, 0xbc, 0x49, 0x67, 0x92, + 0x58, 0x18, 0x8b, 0x29, 0x4b, 0x41, 0xcc, 0x04, 0xcb, 0x29, 0x72, 0x90, 0xd7, 0x0b, 0xd7, 0x4e, + 0xc8, 0x07, 0x8c, 0x15, 0x44, 0x39, 0x8c, 0x2a, 0x1b, 0x7a, 0xc1, 0x41, 0xde, 0xf6, 0x41, 0xdf, + 0x37, 0x19, 0x7e, 0x93, 0xe1, 0xbf, 0x6f, 0x32, 0x06, 0xb7, 0x8e, 0x4b, 0xbb, 0x75, 0x5a, 0xda, + 0x57, 0xe6, 0x51, 0x72, 0xf8, 0xc4, 0xfd, 0x53, 0xeb, 0x1e, 0xfd, 0xb0, 0x51, 0xd8, 0xd3, 0x07, + 0x95, 0x9c, 0xc4, 0x78, 0xab, 0xb9, 0x3a, 0x6d, 0x6b, 0xdf, 0x1b, 0x1b, 0xbe, 0xcf, 0x6b, 0xc1, + 0x60, 0xbf, 0xb2, 0xfd, 0x55, 0xda, 0xa4, 0x29, 0xb9, 0x2b, 0x13, 0x01, 0x2c, 0xc9, 0x60, 0x7e, + 0x5a, 0xda, 0x97, 0x4d, 0x58, 0xc3, 0xdc, 0x6f, 0x55, 0xd4, 0xca, 0x9d, 0xdc, 0xc6, 0xbb, 0x93, + 0x22, 0xcf, 0x59, 0x0a, 0x23, 0x3d, 0x5a, 0xda, 0x71, 0x90, 0xd7, 0x0e, 0x77, 0xea, 0x43, 0x3d, + 0x0c, 0xf2, 0x05, 0x61, 0x7a, 0x46, 0x35, 0x5a, 0xeb, 0xfb, 0xe2, 0xb9, 0x7d, 0xdf, 0xa9, 0xfb, + 0xb6, 0xcd, 0x55, 0xfe, 0xe7, 0x64, 0xa6, 0x70, 0x75, 0x3d, 0x79, 0xb8, 0x9a, 0xc8, 0x43, 0x7c, + 0xcd, 0xe8, 0x27, 0xb2, 0x48, 0x41, 0xa4, 0xdc, 0x14, 0xb2, 0x29, 0xed, 0x3a, 0xc8, 0xdb, 0x0a, + 0xf7, 0x34, 0x7d, 0x56, 0xc3, 0xa1, 0x61, 0xe4, 0x29, 0xee, 0xff, 0x2b, 0x2d, 0x66, 0x82, 0xc7, + 0x40, 0x2f, 0xe9, 0x56, 0xaf, 0x6f, 0x04, 0xbe, 0xd6, 0xd8, 0x7d, 0x89, 0x77, 0x5e, 0x99, 0x1d, + 0x1c, 0x42, 0x04, 0x8c, 0x3c, 0xc6, 0x5d, 0xb3, 0x7d, 0x14, 0x39, 0x6d, 0x6f, 0xfb, 0x80, 0xfa, + 0x67, 0x76, 0xd2, 0x5f, 0x2d, 0xce, 0xa0, 0x53, 0x35, 0x1c, 0xd6, 0xea, 0xc1, 0xdb, 0xe3, 0x85, + 0x85, 0x4e, 0x16, 0x16, 0xfa, 0xb9, 0xb0, 0xd0, 0xd1, 0xd2, 0x6a, 0x9d, 0x2c, 0xad, 0xd6, 0xf7, + 0xa5, 0xd5, 0xfa, 0x78, 0x9f, 0x0b, 0x88, 0x8b, 0xb1, 0x3f, 0x91, 0x49, 0x30, 0xd4, 0x5e, 0xf7, + 0xde, 0x45, 0x63, 0x15, 0xd4, 0x0f, 0xe1, 0xd3, 0xfe, 0xa3, 0xe0, 0x73, 0xf3, 0x1c, 0x60, 0x9e, + 0x31, 0x35, 0xee, 0xea, 0xf1, 0x3e, 0xf8, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x94, 0x86, 0x88, 0x1c, 0x2c, 0x03, 0x00, 0x00, } diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index af2fafc930..faf767b2e6 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -317,36 +317,36 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ // 508 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x4d, 0x6f, 0xd3, 0x30, 0x18, 0xae, 0x57, 0x36, 0x69, 0xef, 0xb6, 0x8b, 0xc5, 0x47, 0xdb, 0xa1, 0x30, 0xc2, 0xd6, 0x16, - 0x04, 0x36, 0x2d, 0x13, 0x48, 0x9c, 0x10, 0x08, 0x10, 0x08, 0x21, 0x08, 0x37, 0x2e, 0x23, 0xc9, - 0xbc, 0xcc, 0xd2, 0x66, 0x67, 0xb1, 0x3b, 0xb1, 0x0b, 0x07, 0x0e, 0x9c, 0x11, 0xdc, 0xb8, 0xf3, - 0x5f, 0x76, 0x9c, 0xc4, 0x85, 0x13, 0x42, 0x2d, 0x3f, 0x04, 0xc5, 0xf6, 0xd6, 0x04, 0x52, 0xe5, - 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x33, 0xbe, 0xcd, 0x28, 0x4b, 0x65, - 0xbc, 0xab, 0xe8, 0xc1, 0x88, 0x65, 0x47, 0x24, 0xcd, 0xa4, 0x96, 0x78, 0xc5, 0x8e, 0x88, 0x1d, - 0x75, 0xce, 0x27, 0x32, 0x91, 0x66, 0x42, 0xf3, 0x7f, 0x16, 0xd4, 0xb9, 0x9c, 0x48, 0x99, 0xec, - 0x31, 0x1a, 0xa6, 0x9c, 0x86, 0x42, 0x48, 0x1d, 0x6a, 0x2e, 0x85, 0x72, 0xd3, 0x1b, 0xb1, 0x54, - 0xfb, 0x52, 0xd1, 0x28, 0x54, 0xcc, 0x6a, 0xd3, 0xc3, 0x41, 0xc4, 0x74, 0x38, 0xa0, 0x69, 0x98, - 0x70, 0x61, 0xc0, 0x0e, 0xbb, 0x5a, 0x4e, 0x92, 0x30, 0xc1, 0x14, 0x77, 0x42, 0xfe, 0x3b, 0xb8, - 0xf8, 0x3a, 0xa7, 0x3f, 0x36, 0xc3, 0x67, 0x62, 0x47, 0x06, 0xec, 0x60, 0xc4, 0x94, 0xc6, 0x4f, - 0x00, 0xa6, 0x52, 0x2d, 0xb4, 0x86, 0xfa, 0x4b, 0xc3, 0x2e, 0xb1, 0xbe, 0x24, 0xf7, 0x25, 0xf6, - 0x4e, 0xce, 0x97, 0xbc, 0x0a, 0x13, 0xe6, 0xb8, 0x41, 0x81, 0xe9, 0x7f, 0x43, 0x70, 0xe9, 0x3f, - 0x0b, 0x95, 0x4a, 0xa1, 0x18, 0xbe, 0x0b, 0x0b, 0x36, 0x55, 0x0b, 0xad, 0x35, 0xfb, 0x4b, 0xc3, - 0x16, 0x29, 0x55, 0x43, 0x0c, 0x25, 0x67, 0x3c, 0x3c, 0x77, 0xfc, 0xeb, 0x4a, 0x23, 0x70, 0x68, - 0xfc, 0xb4, 0x94, 0x6d, 0xce, 0x64, 0xeb, 0xd5, 0x66, 0xb3, 0xa6, 0xa5, 0x70, 0xf7, 0xa1, 0x65, - 0xb2, 0x3d, 0x1a, 0x65, 0x19, 0x13, 0xda, 0xf8, 0x9d, 0x16, 0xe0, 0x01, 0xf0, 0x6d, 0x26, 0x34, - 0xdf, 0xe1, 0x2c, 0x33, 0x05, 0x2c, 0x06, 0x85, 0x13, 0xff, 0x01, 0xb4, 0x2b, 0xb8, 0xee, 0x66, - 0xd7, 0x60, 0x25, 0xb6, 0xe7, 0x5b, 0x26, 0xb3, 0xe1, 0x37, 0x83, 0xe5, 0xb8, 0x00, 0xf6, 0xef, - 0xc1, 0x85, 0x69, 0x33, 0xc5, 0xee, 0xeb, 0xac, 0x5f, 0x16, 0xb7, 0x56, 0x6a, 0x74, 0x13, 0xe6, - 0xa7, 0x7e, 0xf5, 0x85, 0x5a, 0xf0, 0xf0, 0x7b, 0x13, 0xe6, 0x8d, 0x20, 0xfe, 0x00, 0x70, 0x86, - 0x51, 0x78, 0xe3, 0x1f, 0x7a, 0xf5, 0x53, 0xe9, 0x74, 0xeb, 0x60, 0x36, 0x9c, 0x7f, 0xf5, 0xe3, - 0x8f, 0x3f, 0x5f, 0xe7, 0x56, 0x71, 0x9b, 0xbe, 0x31, 0xf8, 0xbd, 0x30, 0x52, 0xb4, 0xf4, 0x3a, - 0xf1, 0x17, 0x04, 0xcb, 0xc5, 0x42, 0x71, 0xaf, 0x4a, 0xbb, 0x62, 0x5d, 0x9d, 0x7e, 0x3d, 0xd0, - 0xc5, 0xa0, 0x26, 0xc6, 0x75, 0xdc, 0x9b, 0x19, 0x83, 0x96, 0x76, 0x87, 0x3f, 0x21, 0x58, 0x3c, - 0x6b, 0x05, 0xaf, 0xcf, 0xbc, 0x6d, 0xb1, 0x93, 0x8d, 0x1a, 0x94, 0xcb, 0x72, 0xd3, 0x64, 0xe9, - 0xe2, 0xf5, 0xd9, 0x59, 0xcc, 0xcf, 0x16, 0xcf, 0x97, 0xf6, 0xfc, 0x78, 0xec, 0xa1, 0x93, 0xb1, - 0x87, 0x7e, 0x8f, 0x3d, 0xf4, 0x79, 0xe2, 0x35, 0x4e, 0x26, 0x5e, 0xe3, 0xe7, 0xc4, 0x6b, 0xbc, - 0xbd, 0x9d, 0x70, 0xbd, 0x3b, 0x8a, 0x48, 0x2c, 0xf7, 0x9d, 0xd2, 0xad, 0x17, 0x05, 0xa9, 0xc3, - 0xc1, 0x26, 0x7d, 0x7f, 0x2a, 0xa8, 0x8f, 0x52, 0xa6, 0xa2, 0x05, 0xf3, 0x01, 0xb8, 0xf3, 0x37, - 0x00, 0x00, 0xff, 0xff, 0x2b, 0x1c, 0xeb, 0xee, 0xa9, 0x04, 0x00, 0x00, + 0x04, 0x36, 0x2d, 0x5f, 0x12, 0x27, 0x04, 0x02, 0x04, 0x42, 0x08, 0xc2, 0x8d, 0xcb, 0x48, 0x32, + 0x2f, 0xb3, 0xb4, 0xd9, 0x59, 0xec, 0x4e, 0xec, 0xc2, 0x81, 0x03, 0x67, 0x04, 0x37, 0xee, 0xfc, + 0x97, 0x1d, 0x27, 0x71, 0xe1, 0x84, 0x50, 0xcb, 0x0f, 0x41, 0xb1, 0xbd, 0x35, 0x81, 0x54, 0x39, + 0xb5, 0xf2, 0xfb, 0x7c, 0xf9, 0x79, 0xad, 0x40, 0x5b, 0xe9, 0x8c, 0x6f, 0x31, 0xca, 0x52, 0x19, + 0xef, 0x28, 0xba, 0x3f, 0x62, 0xd9, 0x21, 0x49, 0x33, 0xa9, 0x25, 0x5e, 0xb1, 0x23, 0x62, 0x47, + 0x9d, 0xb3, 0x89, 0x4c, 0xa4, 0x99, 0xd0, 0xfc, 0x9f, 0x05, 0x75, 0x2e, 0x26, 0x52, 0x26, 0xbb, + 0x8c, 0x86, 0x29, 0xa7, 0xa1, 0x10, 0x52, 0x87, 0x9a, 0x4b, 0xa1, 0xdc, 0xf4, 0x5a, 0x2c, 0xd5, + 0x9e, 0x54, 0x34, 0x0a, 0x15, 0xb3, 0xda, 0xf4, 0x60, 0x10, 0x31, 0x1d, 0x0e, 0x68, 0x1a, 0x26, + 0x5c, 0x18, 0xb0, 0xc3, 0xae, 0x96, 0x93, 0x24, 0x4c, 0x30, 0xc5, 0x9d, 0x90, 0xff, 0x0e, 0xce, + 0xbf, 0xce, 0xe9, 0x8f, 0xcd, 0xf0, 0x99, 0xd8, 0x96, 0x01, 0xdb, 0x1f, 0x31, 0xa5, 0xf1, 0x13, + 0x80, 0xa9, 0x54, 0x0b, 0xad, 0xa1, 0xfe, 0xd2, 0xb0, 0x4b, 0xac, 0x2f, 0xc9, 0x7d, 0x89, 0xbd, + 0x93, 0xf3, 0x25, 0xaf, 0xc2, 0x84, 0x39, 0x6e, 0x50, 0x60, 0xfa, 0xdf, 0x10, 0x5c, 0xf8, 0xcf, + 0x42, 0xa5, 0x52, 0x28, 0x86, 0xef, 0xc2, 0x82, 0x4d, 0xd5, 0x42, 0x6b, 0xcd, 0xfe, 0xd2, 0xb0, + 0x45, 0x4a, 0xd5, 0x10, 0x43, 0xc9, 0x19, 0x0f, 0xcf, 0x1c, 0xfd, 0xba, 0xd4, 0x08, 0x1c, 0x1a, + 0x3f, 0x2d, 0x65, 0x9b, 0x33, 0xd9, 0x7a, 0xb5, 0xd9, 0xac, 0x69, 0x29, 0xdc, 0x7d, 0x68, 0x99, + 0x6c, 0x8f, 0x46, 0x59, 0xc6, 0x84, 0x36, 0x7e, 0x27, 0x05, 0x78, 0x00, 0x7c, 0x8b, 0x09, 0xcd, + 0xb7, 0x39, 0xcb, 0x4c, 0x01, 0x8b, 0x41, 0xe1, 0xc4, 0x7f, 0x00, 0xed, 0x0a, 0xae, 0xbb, 0xd9, + 0x15, 0x58, 0x89, 0xed, 0xf9, 0xa6, 0xc9, 0x6c, 0xf8, 0xcd, 0x60, 0x39, 0x2e, 0x80, 0xfd, 0x7b, + 0x70, 0x6e, 0xda, 0x4c, 0xb1, 0xfb, 0x3a, 0xeb, 0x97, 0xc5, 0xad, 0x95, 0x1a, 0xbd, 0x0d, 0xf3, + 0x53, 0xbf, 0xfa, 0x42, 0x2d, 0x78, 0xf8, 0xbd, 0x09, 0xf3, 0x46, 0x10, 0x7f, 0x00, 0x38, 0xc5, + 0x28, 0xbc, 0xf1, 0x0f, 0xbd, 0xfa, 0xa9, 0x74, 0xba, 0x75, 0x30, 0x1b, 0xce, 0xbf, 0xfc, 0xf1, + 0xc7, 0x9f, 0xaf, 0x73, 0xab, 0xb8, 0x4d, 0xdf, 0x18, 0xfc, 0x6e, 0x18, 0x29, 0x5a, 0x7a, 0x9d, + 0xf8, 0x0b, 0x82, 0xe5, 0x62, 0xa1, 0xb8, 0x57, 0xa5, 0x5d, 0xb1, 0xae, 0x4e, 0xbf, 0x1e, 0xe8, + 0x62, 0x50, 0x13, 0xe3, 0x2a, 0xee, 0xcd, 0x8c, 0x41, 0x4b, 0xbb, 0xc3, 0x9f, 0x10, 0x2c, 0x9e, + 0xb6, 0x82, 0xd7, 0x67, 0xde, 0xb6, 0xd8, 0xc9, 0x46, 0x0d, 0xca, 0x65, 0xb9, 0x6e, 0xb2, 0x74, + 0xf1, 0xfa, 0xec, 0x2c, 0xe6, 0x67, 0x93, 0xe7, 0x4b, 0x7b, 0x7e, 0x34, 0xf6, 0xd0, 0xf1, 0xd8, + 0x43, 0xbf, 0xc7, 0x1e, 0xfa, 0x3c, 0xf1, 0x1a, 0xc7, 0x13, 0xaf, 0xf1, 0x73, 0xe2, 0x35, 0xde, + 0xde, 0x4c, 0xb8, 0xde, 0x19, 0x45, 0x24, 0x96, 0x7b, 0x4e, 0xe9, 0xc6, 0x8b, 0x82, 0xd4, 0xc1, + 0xe0, 0x0e, 0x7d, 0x7f, 0x22, 0xa8, 0x0f, 0x53, 0xa6, 0xa2, 0x05, 0xf3, 0x01, 0xb8, 0xf5, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x0c, 0x79, 0xce, 0x6f, 0xa9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/client/cli/query.go b/x/icacallbacks/client/cli/query.go index c606f7eceb..e65ce5788b 100644 --- a/x/icacallbacks/client/cli/query.go +++ b/x/icacallbacks/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/icacallbacks/client/cli/query_callback_data.go b/x/icacallbacks/client/cli/query_callback_data.go index a22cbe60e6..36741bbcc0 100644 --- a/x/icacallbacks/client/cli/query_callback_data.go +++ b/x/icacallbacks/client/cli/query_callback_data.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func CmdListCallbackData() *cobra.Command { diff --git a/x/icacallbacks/client/cli/query_callback_data_test.go b/x/icacallbacks/client/cli/query_callback_data_test.go index d8b57f60bc..94f3839f7c 100644 --- a/x/icacallbacks/client/cli/query_callback_data_test.go +++ b/x/icacallbacks/client/cli/query_callback_data_test.go @@ -12,10 +12,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/testutil/network" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/client/cli/query_params.go b/x/icacallbacks/client/cli/query_params.go index c2bd38d209..90a181421c 100644 --- a/x/icacallbacks/client/cli/query_params.go +++ b/x/icacallbacks/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/icacallbacks/client/cli/tx.go b/x/icacallbacks/client/cli/tx.go index 49a3c8e575..db5e929d34 100644 --- a/x/icacallbacks/client/cli/tx.go +++ b/x/icacallbacks/client/cli/tx.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icacallbacks/genesis.go b/x/icacallbacks/genesis.go index 48f3877769..8abd90472e 100644 --- a/x/icacallbacks/genesis.go +++ b/x/icacallbacks/genesis.go @@ -3,8 +3,8 @@ package icacallbacks import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icacallbacks/genesis_test.go b/x/icacallbacks/genesis_test.go index 2abb69e997..a3f9ae5e85 100644 --- a/x/icacallbacks/genesis_test.go +++ b/x/icacallbacks/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/icacallbacks" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/icacallbacks" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func TestGenesis(t *testing.T) { diff --git a/x/icacallbacks/handler.go b/x/icacallbacks/handler.go index b039427912..a9515d6e43 100644 --- a/x/icacallbacks/handler.go +++ b/x/icacallbacks/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // NewHandler ... diff --git a/x/icacallbacks/ibc_module.go b/x/icacallbacks/ibc_module.go index b5b3636fc4..785d85eb34 100644 --- a/x/icacallbacks/ibc_module.go +++ b/x/icacallbacks/ibc_module.go @@ -10,8 +10,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) var _ porttypes.IBCModule = &IBCModule{} diff --git a/x/icacallbacks/icacallbacks.go b/x/icacallbacks/icacallbacks.go index e964685fc1..4aa9c04a4c 100644 --- a/x/icacallbacks/icacallbacks.go +++ b/x/icacallbacks/icacallbacks.go @@ -11,7 +11,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // Parses ICA tx responses and returns a list of each serialized response diff --git a/x/icacallbacks/icacallbacks_test.go b/x/icacallbacks/icacallbacks_test.go index dd5a701f77..6c6ccbb14d 100644 --- a/x/icacallbacks/icacallbacks_test.go +++ b/x/icacallbacks/icacallbacks_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func TestParseTxMsgDataCurrent(t *testing.T) { diff --git a/x/icacallbacks/keeper/callback_data.go b/x/icacallbacks/keeper/callback_data.go index 7ed522a7c5..28d352ca44 100644 --- a/x/icacallbacks/keeper/callback_data.go +++ b/x/icacallbacks/keeper/callback_data.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // SetCallbackData set a specific callbackData in the store from its index diff --git a/x/icacallbacks/keeper/callback_data_test.go b/x/icacallbacks/keeper/callback_data_test.go index f34f03089c..ba555f86cc 100644 --- a/x/icacallbacks/keeper/callback_data_test.go +++ b/x/icacallbacks/keeper/callback_data_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query.go b/x/icacallbacks/keeper/grpc_query.go index 5802836474..cf2bdb2e9b 100644 --- a/x/icacallbacks/keeper/grpc_query.go +++ b/x/icacallbacks/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icacallbacks/keeper/grpc_query_callback_data.go b/x/icacallbacks/keeper/grpc_query_callback_data.go index 728c75da81..f290a0a933 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func (k Keeper) CallbackDataAll(c context.Context, req *types.QueryAllCallbackDataRequest) (*types.QueryAllCallbackDataResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_callback_data_test.go b/x/icacallbacks/keeper/grpc_query_callback_data_test.go index 88fea17022..22b76b5c82 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data_test.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query_params.go b/x/icacallbacks/keeper/grpc_query_params.go index bcf6dd412a..cc5b6b4004 100644 --- a/x/icacallbacks/keeper/grpc_query_params.go +++ b/x/icacallbacks/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_params_test.go b/x/icacallbacks/keeper/grpc_query_params_test.go index 3752c0f827..50c4a9fa1f 100644 --- a/x/icacallbacks/keeper/grpc_query_params_test.go +++ b/x/icacallbacks/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/icacallbacks/keeper/keeper.go b/x/icacallbacks/keeper/keeper.go index caed9fc1af..1816325a06 100644 --- a/x/icacallbacks/keeper/keeper.go +++ b/x/icacallbacks/keeper/keeper.go @@ -13,7 +13,7 @@ import ( ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" diff --git a/x/icacallbacks/keeper/msg_server.go b/x/icacallbacks/keeper/msg_server.go index f9094acae0..db62477570 100644 --- a/x/icacallbacks/keeper/msg_server.go +++ b/x/icacallbacks/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) type msgServer struct { diff --git a/x/icacallbacks/keeper/params.go b/x/icacallbacks/keeper/params.go index 16a74ce3cd..ce1bbc42a0 100644 --- a/x/icacallbacks/keeper/params.go +++ b/x/icacallbacks/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // GetParams get all parameters as types.Params diff --git a/x/icacallbacks/keeper/params_test.go b/x/icacallbacks/keeper/params_test.go index 498072960a..7a3409945d 100644 --- a/x/icacallbacks/keeper/params_test.go +++ b/x/icacallbacks/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func TestGetParams(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/convert.go b/x/icacallbacks/migrations/v2/convert.go index 1580500366..81c26fde81 100644 --- a/x/icacallbacks/migrations/v2/convert.go +++ b/x/icacallbacks/migrations/v2/convert.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" "github.com/golang/protobuf/proto" //nolint:staticcheck - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const ( diff --git a/x/icacallbacks/migrations/v2/convert_test.go b/x/icacallbacks/migrations/v2/convert_test.go index 81f8b54333..748fbf4d4c 100644 --- a/x/icacallbacks/migrations/v2/convert_test.go +++ b/x/icacallbacks/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/stretchr/testify/require" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" ) func TestConvertDelegateCallback(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/migrations.go b/x/icacallbacks/migrations/v2/migrations.go index b551f0a824..5ba35b6807 100644 --- a/x/icacallbacks/migrations/v2/migrations.go +++ b/x/icacallbacks/migrations/v2/migrations.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func migrateCallbacks(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/icacallbacks/module.go b/x/icacallbacks/module.go index aec48d6c2a..eb65502b96 100644 --- a/x/icacallbacks/module.go +++ b/x/icacallbacks/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) var ( diff --git a/x/icacallbacks/module_simulation.go b/x/icacallbacks/module_simulation.go index 3b6bce9636..aa9221b4e5 100644 --- a/x/icacallbacks/module_simulation.go +++ b/x/icacallbacks/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v14/testutil/sample" - icacallbackssimulation "github.com/Stride-Labs/stride/v14/x/icacallbacks/simulation" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/testutil/sample" + icacallbackssimulation "github.com/Stride-Labs/stride/v15/x/icacallbacks/simulation" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // avoid unused import issue diff --git a/x/icacallbacks/types/callback_data.pb.go b/x/icacallbacks/types/callback_data.pb.go index abb089177f..a249e3a8cd 100644 --- a/x/icacallbacks/types/callback_data.pb.go +++ b/x/icacallbacks/types/callback_data.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_19b6f19ce856679b = []byte{ 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0x38, 0x1c, 0x74, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x81, 0x57, 0x66, 0x68, - 0xa2, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x6c, 0xee, 0x93, 0x66, 0x01, 0x00, 0x00, + 0xaa, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, + 0x04, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x8f, 0x8e, 0xaf, 0x66, 0x01, 0x00, 0x00, } func (m *CallbackData) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis.pb.go b/x/icacallbacks/types/genesis.pb.go index df9eccdb85..7e1f77c1d9 100644 --- a/x/icacallbacks/types/genesis.pb.go +++ b/x/icacallbacks/types/genesis.pb.go @@ -107,9 +107,9 @@ var fileDescriptor_8c333baddfa20681 = []byte{ 0x32, 0x8b, 0x4b, 0x9c, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0x6c, 0xbc, 0xae, - 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x4d, 0xf4, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, - 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc2, - 0x4f, 0x49, 0x48, 0xaf, 0x01, 0x00, 0x00, + 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x4d, 0xf5, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, + 0xac, 0x29, 0x74, 0xaf, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis_test.go b/x/icacallbacks/types/genesis_test.go index 62f186384e..4614a93f25 100644 --- a/x/icacallbacks/types/genesis_test.go +++ b/x/icacallbacks/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/icacallbacks/types/packet.pb.go b/x/icacallbacks/types/packet.pb.go index 155522c31f..2b4f6781c1 100644 --- a/x/icacallbacks/types/packet.pb.go +++ b/x/icacallbacks/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_e68b4c401320f2a0 = []byte{ 0x14, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x66, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0x60, 0xe3, 0x75, 0x7d, 0x12, 0x93, 0x8a, - 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd1, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x40, 0x1b, 0x73, 0x59, 0xf7, + 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd5, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x48, 0xf8, 0x13, 0x65, 0xf7, 0x00, 0x00, 0x00, } diff --git a/x/icacallbacks/types/params.pb.go b/x/icacallbacks/types/params.pb.go index 46f57c0d9f..1b8fdc5f3b 100644 --- a/x/icacallbacks/types/params.pb.go +++ b/x/icacallbacks/types/params.pb.go @@ -75,8 +75,8 @@ var fileDescriptor_4c402599e6cfed62 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xb3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0xf9, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0xd7, 0x94, 0x19, 0x9a, 0xe8, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, - 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x96, 0x07, 0x24, 0x4f, 0xb7, 0x00, 0x00, 0x00, + 0xd7, 0x94, 0x19, 0x9a, 0xea, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, + 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xe4, 0x44, 0x73, 0xb7, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/query.pb.go b/x/icacallbacks/types/query.pb.go index 1f49bdd9c7..239e5e20af 100644 --- a/x/icacallbacks/types/query.pb.go +++ b/x/icacallbacks/types/query.pb.go @@ -312,7 +312,7 @@ var fileDescriptor_5e73b99abb7e91c2 = []byte{ // 521 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0x13, 0x31, 0x18, 0xc6, 0xe3, 0x52, 0x22, 0xe1, 0x16, 0x21, 0xb9, 0x1d, 0x50, 0x5a, 0x5d, 0xdb, 0x1b, 0x48, - 0x41, 0xc2, 0x6e, 0x0a, 0xaa, 0xc4, 0x80, 0xa0, 0xe5, 0x4f, 0x07, 0x3a, 0x84, 0xb0, 0xb1, 0xa0, + 0x41, 0xc2, 0x6e, 0x8a, 0xa8, 0xc4, 0x80, 0xa0, 0xe5, 0x4f, 0x07, 0x3a, 0x84, 0xb0, 0xb1, 0xa0, 0xf7, 0xae, 0xd6, 0x71, 0xaa, 0x73, 0xbe, 0xc6, 0x4e, 0x45, 0x84, 0x58, 0x10, 0x23, 0x03, 0x12, 0xdf, 0x83, 0x8d, 0x85, 0x4f, 0xd0, 0xb1, 0x12, 0x0b, 0x13, 0x42, 0x09, 0x1f, 0x04, 0xc5, 0x76, 0xca, 0x9d, 0xea, 0x6b, 0xd4, 0x6e, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, @@ -342,7 +342,7 @@ var fileDescriptor_5e73b99abb7e91c2 = []byte{ 0x06, 0xe8, 0xcf, 0x30, 0x40, 0x5f, 0x46, 0x41, 0xed, 0x64, 0x14, 0xd4, 0x7e, 0x8d, 0x82, 0xda, 0xeb, 0xad, 0x24, 0xd5, 0x6f, 0xfb, 0x11, 0x8d, 0x65, 0xd7, 0xe7, 0x79, 0xd4, 0xba, 0xcf, 0xde, 0x95, 0x9d, 0xf5, 0x20, 0xe7, 0x2a, 0xaa, 0x9b, 0xdf, 0xd2, 0xbd, 0x7f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xae, 0x54, 0xcd, 0x63, 0x79, 0x05, 0x00, 0x00, + 0xff, 0xa6, 0xb7, 0xad, 0x5f, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/tx.pb.go b/x/icacallbacks/types/tx.pb.go index bcbe1d1bc5..32a1c3d631 100644 --- a/x/icacallbacks/types/tx.pb.go +++ b/x/icacallbacks/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_c4981fec5f7fee51 = []byte{ 0xb1, 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, - 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0x26, 0xfa, 0x15, 0x68, + 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0xa6, 0xfa, 0x15, 0x68, 0x16, 0x56, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x2d, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xf7, 0x93, 0xb5, 0xc1, 0x94, 0x00, 0x00, 0x00, + 0xff, 0x70, 0xd5, 0xfd, 0x94, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/client/cli/cli_test.go b/x/icaoracle/client/cli/cli_test.go index 94a793a6dd..5fa257142f 100644 --- a/x/icaoracle/client/cli/cli_test.go +++ b/x/icaoracle/client/cli/cli_test.go @@ -11,11 +11,11 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - cmdcfg "github.com/Stride-Labs/stride/v14/cmd/strided/config" - strideclitestutil "github.com/Stride-Labs/stride/v14/testutil/cli" - "github.com/Stride-Labs/stride/v14/testutil/network" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app" + cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" + strideclitestutil "github.com/Stride-Labs/stride/v15/testutil/cli" + "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/client/cli/query.go b/x/icaoracle/client/cli/query.go index f8c6b575a1..e55b4f0206 100644 --- a/x/icaoracle/client/cli/query.go +++ b/x/icaoracle/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/gogo/protobuf/proto" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) const ( diff --git a/x/icaoracle/client/cli/query_test.go b/x/icaoracle/client/cli/query_test.go index e52eccef48..6352f15eec 100644 --- a/x/icaoracle/client/cli/query_test.go +++ b/x/icaoracle/client/cli/query_test.go @@ -1,6 +1,6 @@ package cli_test -import "github.com/Stride-Labs/stride/v14/x/icaoracle/client/cli" +import "github.com/Stride-Labs/stride/v15/x/icaoracle/client/cli" func (s *ClientTestSuite) TestCmdQueryOracle() { args := []string{ diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go index 93bf38e7f6..2bcddc1513 100644 --- a/x/icaoracle/client/cli/tx.go +++ b/x/icaoracle/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icaoracle/client/cli/tx_test.go b/x/icaoracle/client/cli/tx_test.go index 5cf284ab14..e03bed84e8 100644 --- a/x/icaoracle/client/cli/tx_test.go +++ b/x/icaoracle/client/cli/tx_test.go @@ -1,7 +1,7 @@ package cli_test import ( - "github.com/Stride-Labs/stride/v14/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v15/x/icaoracle/client/cli" ) func (s *ClientTestSuite) TestCmdRestoreOracleICA() { diff --git a/x/icaoracle/ibc_middleware.go b/x/icaoracle/ibc_middleware.go index d9e1dfef31..040f86c0ef 100644 --- a/x/icaoracle/ibc_middleware.go +++ b/x/icaoracle/ibc_middleware.go @@ -11,7 +11,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/icaoracle/keeper/events.go b/x/icaoracle/keeper/events.go index 0c51ccf8e8..2b203b93b9 100644 --- a/x/icaoracle/keeper/events.go +++ b/x/icaoracle/keeper/events.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // Emits an event for an oracle update diff --git a/x/icaoracle/keeper/genesis.go b/x/icaoracle/keeper/genesis.go index d06866d3ee..ba13c54b0a 100644 --- a/x/icaoracle/keeper/genesis.go +++ b/x/icaoracle/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icaoracle/keeper/genesis_test.go b/x/icaoracle/keeper/genesis_test.go index 49d2e4a996..6288daf455 100644 --- a/x/icaoracle/keeper/genesis_test.go +++ b/x/icaoracle/keeper/genesis_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGenesis() { diff --git a/x/icaoracle/keeper/grpc_query.go b/x/icaoracle/keeper/grpc_query.go index 054d817e2e..13d63e61f1 100644 --- a/x/icaoracle/keeper/grpc_query.go +++ b/x/icaoracle/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icaoracle/keeper/grpc_query_test.go b/x/icaoracle/keeper/grpc_query_test.go index 9f669839d9..c54ec65480 100644 --- a/x/icaoracle/keeper/grpc_query_test.go +++ b/x/icaoracle/keeper/grpc_query_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) TestQueryOracle() { diff --git a/x/icaoracle/keeper/ibc.go b/x/icaoracle/keeper/ibc.go index 5efcea3679..d6640ca182 100644 --- a/x/icaoracle/keeper/ibc.go +++ b/x/icaoracle/keeper/ibc.go @@ -10,8 +10,8 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go index 06193a7879..e154747596 100644 --- a/x/icaoracle/keeper/ibc_test.go +++ b/x/icaoracle/keeper/ibc_test.go @@ -10,9 +10,9 @@ import ( proto "github.com/cosmos/gogoproto/proto" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // ------------------------------------------ diff --git a/x/icaoracle/keeper/icacallbacks.go b/x/icaoracle/keeper/icacallbacks.go index 8a20f3a3f8..32c26bc7a8 100644 --- a/x/icaoracle/keeper/icacallbacks.go +++ b/x/icaoracle/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) const ( diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go index dd8cc00c83..a32e2b41bb 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go index ef8e3b68a3..df20f69444 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) type InstantiateOracleCallbackTestCase struct { diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle.go b/x/icaoracle/keeper/icacallbacks_update_oracle.go index c48a12addb..c51bb8ff47 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go index 378e6b4e9f..de7ecc51ab 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestUpdateOracleCallback() types.Metric { diff --git a/x/icaoracle/keeper/icaoracle.go b/x/icaoracle/keeper/icaoracle.go index 5df6a0c073..0d601e9c56 100644 --- a/x/icaoracle/keeper/icaoracle.go +++ b/x/icaoracle/keeper/icaoracle.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go index cbee85bc82..92a7c998b6 100644 --- a/x/icaoracle/keeper/icaoracle_test.go +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -5,9 +5,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) type SubmitMetricUpdateTestCase struct { diff --git a/x/icaoracle/keeper/keeper.go b/x/icaoracle/keeper/keeper.go index 83aae9054b..c80bacd279 100644 --- a/x/icaoracle/keeper/keeper.go +++ b/x/icaoracle/keeper/keeper.go @@ -10,7 +10,7 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) type Keeper struct { diff --git a/x/icaoracle/keeper/keeper_test.go b/x/icaoracle/keeper/keeper_test.go index c480c39835..f61077063b 100644 --- a/x/icaoracle/keeper/keeper_test.go +++ b/x/icaoracle/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/metric.go b/x/icaoracle/keeper/metric.go index ad39d90015..22038c556b 100644 --- a/x/icaoracle/keeper/metric.go +++ b/x/icaoracle/keeper/metric.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // Stores a metric in the main metric store and then either diff --git a/x/icaoracle/keeper/metric_test.go b/x/icaoracle/keeper/metric_test.go index 553ed6c422..305ddd4336 100644 --- a/x/icaoracle/keeper/metric_test.go +++ b/x/icaoracle/keeper/metric_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "strconv" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // Helper function to create 5 metric objects with various attributes diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go index 5b8785729e..2ec01fa539 100644 --- a/x/icaoracle/keeper/msg_server.go +++ b/x/icaoracle/keeper/msg_server.go @@ -12,7 +12,7 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) type msgServer struct { diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go index f5ef37f71e..d83fba1907 100644 --- a/x/icaoracle/keeper/msg_server_add_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestAddOracle() types.MsgAddOracle { diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go index d23deb2f34..2f9cfcb70e 100644 --- a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) type InstantiateOracleTestCase struct { diff --git a/x/icaoracle/keeper/msg_server_remove_oracle_test.go b/x/icaoracle/keeper/msg_server_remove_oracle_test.go index 8f737bcfa4..b05d8d52a5 100644 --- a/x/icaoracle/keeper/msg_server_remove_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_remove_oracle_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovRemoveOracle() { diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go index ab5ccba8f2..69649376ec 100644 --- a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -8,7 +8,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) type RestoreOracleICATestCase struct { diff --git a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go index 08f47ecb64..f97457d373 100644 --- a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovToggleOracle() { diff --git a/x/icaoracle/keeper/oracle.go b/x/icaoracle/keeper/oracle.go index 8890ced92e..3a2efd0b88 100644 --- a/x/icaoracle/keeper/oracle.go +++ b/x/icaoracle/keeper/oracle.go @@ -7,7 +7,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // Stores/updates an oracle object in the store diff --git a/x/icaoracle/keeper/oracle_test.go b/x/icaoracle/keeper/oracle_test.go index 1676e64ef5..3952cbf6e0 100644 --- a/x/icaoracle/keeper/oracle_test.go +++ b/x/icaoracle/keeper/oracle_test.go @@ -5,7 +5,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGetOracle() { diff --git a/x/icaoracle/module.go b/x/icaoracle/module.go index 99c85e2322..c4041d096a 100644 --- a/x/icaoracle/module.go +++ b/x/icaoracle/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/icaoracle/client/cli" - "github.com/Stride-Labs/stride/v14/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/types/callbacks.pb.go b/x/icaoracle/types/callbacks.pb.go index ca2f4ec8c6..2331be6d7e 100644 --- a/x/icaoracle/types/callbacks.pb.go +++ b/x/icaoracle/types/callbacks.pb.go @@ -141,9 +141,9 @@ var fileDescriptor_7b4c39df2554f0a2 = []byte{ 0x08, 0xaa, 0xce, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0xa6, 0xe8, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x90, - 0x80, 0x21, 0x64, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x8b, + 0x0c, 0x4f, 0x64, 0x01, 0x00, 0x00, } func (m *InstantiateOracleCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go index fd33fe03ca..a952b29fe2 100644 --- a/x/icaoracle/types/contract.pb.go +++ b/x/icaoracle/types/contract.pb.go @@ -217,28 +217,28 @@ var fileDescriptor_8bf036e49b48ee03 = []byte{ // 375 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xc1, 0xae, 0xd2, 0x40, 0x14, 0x86, 0xa9, 0x08, 0x89, 0x53, 0x48, 0x70, 0x74, 0xd1, 0x85, 0x29, 0x88, 0x1b, 0x36, 0xb6, - 0x51, 0x7c, 0x00, 0x95, 0x98, 0x48, 0x62, 0xa3, 0x41, 0x56, 0x6e, 0xea, 0x74, 0x7a, 0x6c, 0x27, - 0xb4, 0x9d, 0x66, 0xe6, 0x94, 0xc0, 0x5b, 0xf8, 0x40, 0x3e, 0x80, 0x4b, 0x96, 0x2e, 0x0d, 0xbc, - 0xc8, 0x0d, 0x33, 0xbd, 0x70, 0xef, 0xdd, 0x9d, 0xf3, 0xfd, 0xff, 0xc9, 0x7f, 0x66, 0x0e, 0x19, - 0x6b, 0x54, 0x22, 0x85, 0x50, 0x70, 0x26, 0x15, 0xe3, 0x05, 0x84, 0x5c, 0x56, 0xa8, 0x18, 0xc7, - 0xa0, 0x56, 0x12, 0x25, 0x1d, 0x59, 0x43, 0x70, 0x31, 0x4c, 0x35, 0x79, 0x11, 0xe9, 0x6c, 0x59, - 0x69, 0x64, 0x15, 0x0a, 0x86, 0xf0, 0xd5, 0xf0, 0x45, 0x3b, 0x47, 0x5f, 0x91, 0x21, 0x4b, 0x4b, - 0x51, 0xc5, 0x2c, 0x4d, 0x15, 0x68, 0xed, 0x39, 0x13, 0x67, 0xf6, 0x64, 0x35, 0x30, 0xf0, 0x83, - 0x65, 0x34, 0x20, 0xcf, 0x50, 0xb1, 0x4a, 0xff, 0x02, 0x15, 0xf3, 0x9c, 0x55, 0x15, 0x14, 0xb1, - 0x48, 0xbd, 0x47, 0xc6, 0xfa, 0xf4, 0x56, 0x5a, 0x58, 0x65, 0x99, 0x4e, 0x7f, 0x9a, 0xd0, 0x4f, - 0x3b, 0xe0, 0x0d, 0x5e, 0xa2, 0xbe, 0x49, 0x8d, 0x11, 0xa0, 0x12, 0x9c, 0xbe, 0x27, 0x6e, 0x2d, - 0x35, 0xc6, 0xa5, 0x69, 0x4d, 0xa4, 0xfb, 0x76, 0x1c, 0x3c, 0x5c, 0x3e, 0x88, 0x74, 0x76, 0x9d, - 0x5a, 0x91, 0xfa, 0x52, 0x4f, 0xff, 0x38, 0x64, 0x78, 0x4f, 0xa5, 0x23, 0xd2, 0xdd, 0xc0, 0xbe, - 0x5d, 0xff, 0x5c, 0xd2, 0xe7, 0xa4, 0xb7, 0x65, 0x45, 0x03, 0xed, 0x9e, 0xb6, 0xa1, 0x63, 0xe2, - 0xda, 0xd8, 0x18, 0xf7, 0x35, 0x78, 0x5d, 0xa3, 0x11, 0x8b, 0xd6, 0xfb, 0xda, 0x18, 0x9a, 0x3a, - 0x65, 0x08, 0x31, 0x8a, 0x12, 0xbc, 0xc7, 0x13, 0x67, 0xd6, 0x5d, 0x11, 0x8b, 0xd6, 0xa2, 0x04, - 0xfa, 0x92, 0x0c, 0x92, 0x42, 0xf2, 0x4d, 0x9c, 0x83, 0xc8, 0x72, 0xf4, 0x7a, 0xc6, 0xe1, 0x1a, - 0xf6, 0xd9, 0x20, 0xea, 0x13, 0xc2, 0x10, 0x95, 0x48, 0x1a, 0x04, 0xed, 0xf5, 0x6d, 0xc6, 0x95, - 0x7c, 0x8c, 0xfe, 0x1e, 0x7d, 0xe7, 0x70, 0xf4, 0x9d, 0xff, 0x47, 0xdf, 0xf9, 0x7d, 0xf2, 0x3b, - 0x87, 0x93, 0xdf, 0xf9, 0x77, 0xf2, 0x3b, 0x3f, 0xe6, 0x99, 0xc0, 0xbc, 0x49, 0x02, 0x2e, 0xcb, - 0xf0, 0xbb, 0xf9, 0x8f, 0xd7, 0x5f, 0x58, 0xa2, 0xc3, 0xf6, 0xf2, 0xdb, 0x37, 0xef, 0xc2, 0xdd, - 0x9d, 0xfb, 0x9f, 0xdf, 0xa0, 0x93, 0xbe, 0xb9, 0xfe, 0xfc, 0x26, 0x00, 0x00, 0xff, 0xff, 0xd7, - 0xa9, 0x65, 0xd6, 0x20, 0x02, 0x00, 0x00, + 0x51, 0xe2, 0x5e, 0x25, 0x26, 0x92, 0xd8, 0x68, 0x90, 0x95, 0x9b, 0x3a, 0x9d, 0x1e, 0xdb, 0x09, + 0x6d, 0xa7, 0x99, 0x39, 0x25, 0xf0, 0x16, 0x3e, 0x90, 0x0f, 0xe0, 0x92, 0xa5, 0x4b, 0x03, 0x2f, + 0x72, 0xc3, 0x4c, 0x2f, 0xdc, 0x7b, 0x77, 0xe7, 0x7c, 0xff, 0x7f, 0xf2, 0x9f, 0x99, 0x43, 0xc6, + 0x1a, 0x95, 0x48, 0x21, 0x14, 0x9c, 0x49, 0xc5, 0x78, 0x01, 0x21, 0x97, 0x15, 0x2a, 0xc6, 0x31, + 0xa8, 0x95, 0x44, 0x49, 0x47, 0xd6, 0x10, 0x5c, 0x0c, 0x53, 0x4d, 0x5e, 0x44, 0x3a, 0x5b, 0x56, + 0x1a, 0x59, 0x85, 0x82, 0x21, 0x7c, 0x35, 0x7c, 0xd1, 0xce, 0xd1, 0x57, 0x64, 0xc8, 0xd2, 0x52, + 0x54, 0x31, 0x4b, 0x53, 0x05, 0x5a, 0x7b, 0xce, 0xc4, 0x99, 0x3d, 0x59, 0x0d, 0x0c, 0xfc, 0x60, + 0x19, 0x0d, 0xc8, 0x33, 0x54, 0xac, 0xd2, 0xbf, 0x40, 0xc5, 0x3c, 0x67, 0x55, 0x05, 0x45, 0x2c, + 0x52, 0xef, 0x91, 0xb1, 0x3e, 0xbd, 0x95, 0x16, 0x56, 0x59, 0xa6, 0xd3, 0x9f, 0x26, 0xf4, 0xd3, + 0x0e, 0x78, 0x83, 0x97, 0xa8, 0x6f, 0x52, 0x63, 0x04, 0xa8, 0x04, 0xa7, 0xef, 0x89, 0x5b, 0x4b, + 0x8d, 0x71, 0x69, 0x5a, 0x13, 0xe9, 0xbe, 0x1d, 0x07, 0x0f, 0x97, 0x0f, 0x22, 0x9d, 0x5d, 0xa7, + 0x56, 0xa4, 0xbe, 0xd4, 0xd3, 0x3f, 0x0e, 0x19, 0xde, 0x53, 0xe9, 0x88, 0x74, 0x37, 0xb0, 0x6f, + 0xd7, 0x3f, 0x97, 0xf4, 0x39, 0xe9, 0x6d, 0x59, 0xd1, 0x40, 0xbb, 0xa7, 0x6d, 0xe8, 0x98, 0xb8, + 0x36, 0x36, 0xc6, 0x7d, 0x0d, 0x5e, 0xd7, 0x68, 0xc4, 0xa2, 0xf5, 0xbe, 0x36, 0x86, 0xa6, 0x4e, + 0x19, 0x42, 0x8c, 0xa2, 0x04, 0xef, 0xf1, 0xc4, 0x99, 0x75, 0x57, 0xc4, 0xa2, 0xb5, 0x28, 0x81, + 0xbe, 0x24, 0x83, 0xa4, 0x90, 0x7c, 0x13, 0xe7, 0x20, 0xb2, 0x1c, 0xbd, 0x9e, 0x71, 0xb8, 0x86, + 0x7d, 0x36, 0x88, 0xfa, 0x84, 0x30, 0x44, 0x25, 0x92, 0x06, 0x41, 0x7b, 0x7d, 0x9b, 0x71, 0x25, + 0x1f, 0xa3, 0xbf, 0x47, 0xdf, 0x39, 0x1c, 0x7d, 0xe7, 0xff, 0xd1, 0x77, 0x7e, 0x9f, 0xfc, 0xce, + 0xe1, 0xe4, 0x77, 0xfe, 0x9d, 0xfc, 0xce, 0x8f, 0x79, 0x26, 0x30, 0x6f, 0x92, 0x80, 0xcb, 0x32, + 0xfc, 0x6e, 0xfe, 0xe3, 0xf5, 0x17, 0x96, 0xe8, 0xb0, 0xbd, 0xfc, 0xf6, 0xcd, 0xbb, 0x70, 0x77, + 0xe7, 0xfe, 0xe7, 0x37, 0xe8, 0xa4, 0x6f, 0xae, 0x3f, 0xbf, 0x09, 0x00, 0x00, 0xff, 0xff, 0x96, + 0xb2, 0xe9, 0xb8, 0x20, 0x02, 0x00, 0x00, } func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/cosmwasm.pb.go b/x/icaoracle/types/cosmwasm.pb.go index 9d0592a090..f97edf83a4 100644 --- a/x/icaoracle/types/cosmwasm.pb.go +++ b/x/icaoracle/types/cosmwasm.pb.go @@ -257,31 +257,31 @@ var fileDescriptor_42aeb672f768be80 = []byte{ // 428 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xb1, 0x8e, 0xd3, 0x40, 0x10, 0x8d, 0x2f, 0x89, 0x0f, 0x96, 0x2b, 0xd0, 0xea, 0x14, 0x99, 0x14, 0x76, 0x74, 0x34, 0x6e, - 0xce, 0x4b, 0x38, 0xbe, 0x20, 0x81, 0x22, 0x12, 0xa1, 0x30, 0x1d, 0x0d, 0x1a, 0x7b, 0x07, 0x63, - 0x11, 0xef, 0x46, 0x9e, 0x4d, 0xee, 0xf8, 0x09, 0xc4, 0x77, 0xf0, 0x25, 0x57, 0x5e, 0x83, 0x44, - 0x15, 0x50, 0xf2, 0x17, 0x54, 0xc8, 0xbb, 0x76, 0x44, 0x41, 0x01, 0x05, 0xcd, 0x78, 0x9e, 0xe7, - 0xcd, 0xe8, 0xbd, 0xa7, 0x65, 0x51, 0xae, 0xa9, 0xba, 0x06, 0xaa, 0x84, 0x2d, 0xdb, 0xa9, 0xe8, - 0x7e, 0x24, 0xeb, 0x5a, 0x1b, 0xcd, 0x1f, 0x1e, 0xb1, 0x2d, 0xdb, 0xe9, 0xf8, 0xbc, 0xd0, 0x85, - 0xb6, 0x43, 0xd1, 0x74, 0x8e, 0x37, 0x0e, 0x1b, 0x9e, 0x26, 0x91, 0x01, 0xa1, 0xd8, 0x4e, 0x33, - 0x34, 0xd0, 0xdc, 0x2a, 0x95, 0x9b, 0x5f, 0x7c, 0xf5, 0x18, 0x5f, 0x52, 0xf1, 0xe2, 0x06, 0xf3, - 0x8d, 0xc1, 0xb9, 0x56, 0xa6, 0x86, 0xdc, 0xf0, 0x11, 0xf3, 0x09, 0x95, 0xc4, 0x3a, 0xf0, 0x26, - 0x5e, 0x7c, 0x3f, 0x6d, 0x11, 0x1f, 0xb3, 0x7b, 0x79, 0xcb, 0x09, 0x4e, 0xec, 0xe4, 0x88, 0x79, - 0xcc, 0xfa, 0x15, 0x15, 0x41, 0x7f, 0xe2, 0xc5, 0x67, 0xb3, 0xd1, 0xcf, 0x5d, 0xc4, 0x53, 0xb8, - 0xee, 0x2e, 0x2e, 0x91, 0x08, 0x0a, 0x4c, 0x1b, 0x0a, 0x07, 0x36, 0x7c, 0xb7, 0x51, 0x92, 0x82, - 0xe1, 0xa4, 0x1f, 0x3f, 0x78, 0xfa, 0x28, 0x71, 0x22, 0x93, 0x46, 0x64, 0xd2, 0x8a, 0x4c, 0xe6, - 0xba, 0x54, 0xb3, 0x27, 0xb7, 0xbb, 0xa8, 0xf7, 0xe5, 0x7b, 0x14, 0x17, 0xa5, 0x79, 0xbf, 0xc9, - 0x92, 0x5c, 0x57, 0xa2, 0x75, 0xe4, 0x3e, 0x97, 0x24, 0x3f, 0x08, 0xf3, 0x71, 0x8d, 0x64, 0x17, - 0x28, 0x75, 0x97, 0x2f, 0x3e, 0x9d, 0xb0, 0xd1, 0x92, 0x8a, 0x85, 0x22, 0x03, 0xca, 0x94, 0xf0, - 0x17, 0xde, 0xce, 0xd9, 0x10, 0x64, 0x55, 0xaa, 0xd6, 0x98, 0x03, 0xfc, 0x31, 0x3b, 0xcd, 0xb5, - 0xc4, 0xb7, 0xa5, 0xb4, 0xce, 0x06, 0x33, 0xb6, 0xdf, 0x45, 0xfe, 0x5c, 0x4b, 0x5c, 0x3c, 0x4f, - 0xfd, 0x66, 0xb4, 0x90, 0xcd, 0xea, 0x0a, 0x32, 0x5c, 0x05, 0x03, 0xb7, 0x6a, 0x41, 0x17, 0xc8, - 0xf0, 0x1f, 0x02, 0xf1, 0xff, 0x5b, 0x20, 0xaf, 0x58, 0xf8, 0xe7, 0x3c, 0x52, 0xa4, 0xb5, 0x56, - 0x84, 0x3c, 0x60, 0xa7, 0x20, 0x65, 0x8d, 0x44, 0x6d, 0x30, 0x1d, 0xe4, 0x9c, 0x0d, 0x24, 0x18, - 0xb0, 0xc1, 0x9c, 0xa5, 0xb6, 0x9f, 0x2d, 0x6f, 0xf7, 0xa1, 0x77, 0xb7, 0x0f, 0xbd, 0x1f, 0xfb, - 0xd0, 0xfb, 0x7c, 0x08, 0x7b, 0x77, 0x87, 0xb0, 0xf7, 0xed, 0x10, 0xf6, 0xde, 0x5c, 0xfd, 0x26, - 0xed, 0xb5, 0xa9, 0x4b, 0x89, 0x97, 0x2f, 0x21, 0x23, 0x41, 0xb6, 0x17, 0xdb, 0xe9, 0x33, 0x71, - 0x23, 0xca, 0x1c, 0x74, 0x0d, 0xf9, 0x0a, 0x9d, 0xd6, 0xcc, 0xb7, 0xcf, 0xf1, 0xea, 0x57, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xdd, 0x04, 0xec, 0xf5, 0xf9, 0x02, 0x00, 0x00, + 0xce, 0x4b, 0x38, 0xf1, 0x03, 0x09, 0x14, 0x91, 0x08, 0x85, 0xe9, 0x68, 0xd0, 0xd8, 0x3b, 0x18, + 0x8b, 0x78, 0x37, 0xf2, 0x6c, 0x72, 0xc7, 0x4f, 0x20, 0xbe, 0x83, 0x2f, 0xb9, 0xf2, 0x1a, 0x24, + 0xaa, 0x80, 0x92, 0xbf, 0xa0, 0x42, 0xde, 0xb5, 0x23, 0x0a, 0x0a, 0x28, 0x68, 0xc6, 0xf3, 0x3c, + 0x6f, 0x46, 0xef, 0x3d, 0x2d, 0x8b, 0x72, 0x4d, 0xd5, 0x35, 0x50, 0x25, 0x6c, 0xd9, 0x4e, 0x45, + 0xf7, 0x23, 0x59, 0xd7, 0xda, 0x68, 0xfe, 0xf0, 0x88, 0x6d, 0xd9, 0x4e, 0xc7, 0xe7, 0x85, 0x2e, + 0xb4, 0x1d, 0x8a, 0xa6, 0x73, 0xbc, 0x71, 0xd8, 0xf0, 0x34, 0x89, 0x0c, 0x08, 0xc5, 0x76, 0x9a, + 0xa1, 0x81, 0xe6, 0x56, 0xa9, 0xdc, 0xfc, 0xe2, 0xab, 0xc7, 0xf8, 0x92, 0x8a, 0x17, 0x37, 0x98, + 0x6f, 0x0c, 0xce, 0xb5, 0x32, 0x35, 0xe4, 0x86, 0x8f, 0x98, 0x4f, 0xa8, 0x24, 0xd6, 0x81, 0x37, + 0xf1, 0xe2, 0xfb, 0x69, 0x8b, 0xf8, 0x98, 0xdd, 0xcb, 0x5b, 0x4e, 0x70, 0x62, 0x27, 0x47, 0xcc, + 0x63, 0xd6, 0xaf, 0xa8, 0x08, 0xfa, 0x13, 0x2f, 0x3e, 0x9b, 0x8d, 0x7e, 0xee, 0x22, 0x9e, 0xc2, + 0x75, 0x77, 0x71, 0x89, 0x44, 0x50, 0x60, 0xda, 0x50, 0x38, 0xb0, 0xe1, 0xbb, 0x8d, 0x92, 0x14, + 0x0c, 0x27, 0xfd, 0xf8, 0xc1, 0xd3, 0x47, 0x89, 0x13, 0x99, 0x34, 0x22, 0x93, 0x56, 0x64, 0x32, + 0xd7, 0xa5, 0x9a, 0x3d, 0xb9, 0xdd, 0x45, 0xbd, 0x2f, 0xdf, 0xa3, 0xb8, 0x28, 0xcd, 0xfb, 0x4d, + 0x96, 0xe4, 0xba, 0x12, 0xad, 0x23, 0xf7, 0xb9, 0x24, 0xf9, 0x41, 0x98, 0x8f, 0x6b, 0x24, 0xbb, + 0x40, 0xa9, 0xbb, 0x7c, 0xf1, 0xe9, 0x84, 0x8d, 0x96, 0x54, 0x2c, 0x14, 0x19, 0x50, 0xa6, 0x84, + 0xbf, 0xf0, 0x76, 0xce, 0x86, 0x20, 0xab, 0x52, 0xb5, 0xc6, 0x1c, 0xe0, 0x8f, 0xd9, 0x69, 0xae, + 0x25, 0xbe, 0x2d, 0xa5, 0x75, 0x36, 0x98, 0xb1, 0xfd, 0x2e, 0xf2, 0xe7, 0x5a, 0xe2, 0xe2, 0x79, + 0xea, 0x37, 0xa3, 0x85, 0x6c, 0x56, 0x57, 0x90, 0xe1, 0x2a, 0x18, 0xb8, 0x55, 0x0b, 0xba, 0x40, + 0x86, 0xff, 0x10, 0x88, 0xff, 0xdf, 0x02, 0x79, 0xc5, 0xc2, 0x3f, 0xe7, 0x91, 0x22, 0xad, 0xb5, + 0x22, 0xe4, 0x01, 0x3b, 0x05, 0x29, 0x6b, 0x24, 0x6a, 0x83, 0xe9, 0x20, 0xe7, 0x6c, 0x20, 0xc1, + 0x80, 0x0d, 0xe6, 0x2c, 0xb5, 0xfd, 0x6c, 0x79, 0xbb, 0x0f, 0xbd, 0xbb, 0x7d, 0xe8, 0xfd, 0xd8, + 0x87, 0xde, 0xe7, 0x43, 0xd8, 0xbb, 0x3b, 0x84, 0xbd, 0x6f, 0x87, 0xb0, 0xf7, 0xe6, 0xea, 0x37, + 0x69, 0xaf, 0x4d, 0x5d, 0x4a, 0xbc, 0x7c, 0x09, 0x19, 0x09, 0xb2, 0xbd, 0xd8, 0x4e, 0x9f, 0x89, + 0x1b, 0x51, 0xe6, 0xa0, 0x6b, 0xc8, 0x57, 0xe8, 0xb4, 0x66, 0xbe, 0x7d, 0x8e, 0x57, 0xbf, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x9c, 0x1f, 0x60, 0x9b, 0xf9, 0x02, 0x00, 0x00, } func (m *MsgExecuteContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/expected_keepers.go b/x/icaoracle/types/expected_keepers.go index 4f0e283b67..c999f32b56 100644 --- a/x/icaoracle/types/expected_keepers.go +++ b/x/icaoracle/types/expected_keepers.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // ClientKeeper defines the expected IBC client keeper diff --git a/x/icaoracle/types/genesis.pb.go b/x/icaoracle/types/genesis.pb.go index 66f1deac39..33ad1f91e2 100644 --- a/x/icaoracle/types/genesis.pb.go +++ b/x/icaoracle/types/genesis.pb.go @@ -145,8 +145,8 @@ var fileDescriptor_89fd81957c6adfb8 = []byte{ 0xdf, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x1b, 0xaf, 0xeb, 0x93, 0x98, 0x54, 0xac, - 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x13, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, - 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xc3, 0xd1, 0xb5, 0xbd, 0x01, + 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x53, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, + 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xb9, 0xd8, 0x5d, 0xdb, 0xbd, 0x01, 0x00, 0x00, } diff --git a/x/icaoracle/types/genesis_test.go b/x/icaoracle/types/genesis_test.go index 517c63822e..fab5e49b9f 100644 --- a/x/icaoracle/types/genesis_test.go +++ b/x/icaoracle/types/genesis_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestValidateGenesis(t *testing.T) { diff --git a/x/icaoracle/types/ica_test.go b/x/icaoracle/types/ica_test.go index 9f5a4a01c3..b88970a860 100644 --- a/x/icaoracle/types/ica_test.go +++ b/x/icaoracle/types/ica_test.go @@ -9,7 +9,7 @@ import ( proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestValidateICATx(t *testing.T) { diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go index bd3f52fc1e..118a1d71de 100644 --- a/x/icaoracle/types/icaoracle.pb.go +++ b/x/icaoracle/types/icaoracle.pb.go @@ -305,7 +305,7 @@ var fileDescriptor_842e38c1f0da9e66 = []byte{ // 557 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0xc1, 0x6e, 0xd3, 0x4c, 0x14, 0x85, 0xe3, 0xe6, 0xaf, 0xdb, 0xde, 0xa6, 0x7f, 0xcd, 0x28, 0x82, 0x34, 0x12, 0xc6, 0xa4, - 0x2c, 0x02, 0x52, 0x1d, 0x41, 0x11, 0x5b, 0x14, 0x1a, 0x03, 0x96, 0x48, 0x5b, 0xec, 0x64, 0xc3, + 0x2c, 0x02, 0x52, 0x1d, 0x41, 0x05, 0x5b, 0x14, 0x1a, 0x03, 0x96, 0x48, 0x5b, 0xec, 0x64, 0xc3, 0xc6, 0x9a, 0xcc, 0x8c, 0x92, 0x51, 0x62, 0x8f, 0x65, 0x4f, 0x22, 0xf2, 0x0a, 0x5d, 0xb1, 0x60, 0x49, 0xdf, 0x87, 0x65, 0x97, 0x2c, 0x51, 0xc2, 0x83, 0x20, 0x8f, 0x9d, 0xd6, 0xc0, 0x6e, 0xee, 0x77, 0x8e, 0xaf, 0x7c, 0xee, 0xcc, 0x05, 0x2b, 0x95, 0x09, 0xa7, 0xac, 0xc3, 0x09, 0x16, 0x09, @@ -337,7 +337,7 @@ var fileDescriptor_842e38c1f0da9e66 = []byte{ 0x5f, 0xd6, 0x66, 0xe5, 0x66, 0x6d, 0x56, 0x7e, 0xac, 0xcd, 0xca, 0xa7, 0xd3, 0x31, 0x97, 0x93, 0xf9, 0xc8, 0x26, 0x22, 0xec, 0xf8, 0x6a, 0x46, 0x27, 0x1f, 0xf0, 0x28, 0xed, 0x14, 0x8b, 0xb5, 0x78, 0xfe, 0xb2, 0xf3, 0xb9, 0xb4, 0x5e, 0xd9, 0x13, 0x48, 0x47, 0xba, 0xda, 0x99, 0xd3, 0xdf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xa6, 0x92, 0x4b, 0x14, 0x7f, 0x03, 0x00, 0x00, + 0x01, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x89, 0xc7, 0x7a, 0x7f, 0x03, 0x00, 0x00, } func (m *Oracle) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index 12a1b6b0c8..e88c999d2e 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgAddOracle = "add_oracle" diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go index 122c200245..fe79a3cfec 100644 --- a/x/icaoracle/types/message_add_oracle_test.go +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestMsgAddOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index a60a0f5513..bcefea7241 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgInstantiateOracle = "instantiate_oracle" diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go index edb424bde0..baf30af9ba 100644 --- a/x/icaoracle/types/message_instantiate_oracle_test.go +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestMsgInstantiateOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go index abab651a83..c52a8c71c3 100644 --- a/x/icaoracle/types/message_remove_oracle_test.go +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestMsgRemoveOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go index 44657728c1..45e564f0c9 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestMsgRestoreOracleICA(t *testing.T) { diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go index 78e780371f..a8b53ad980 100644 --- a/x/icaoracle/types/message_toggle_oracle_test.go +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestMsgMsgToggleOracle(t *testing.T) { diff --git a/x/icaoracle/types/metric_test.go b/x/icaoracle/types/metric_test.go index 9960d4b63f..8021c5be7b 100644 --- a/x/icaoracle/types/metric_test.go +++ b/x/icaoracle/types/metric_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) // Tests NewMetric and GetMetricID diff --git a/x/icaoracle/types/oracle_test.go b/x/icaoracle/types/oracle_test.go index b4966cf6f3..40569b9900 100644 --- a/x/icaoracle/types/oracle_test.go +++ b/x/icaoracle/types/oracle_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/icaoracle/types" + "github.com/Stride-Labs/stride/v15/x/icaoracle/types" ) func TestValidateICASetup(t *testing.T) { diff --git a/x/icaoracle/types/query.pb.go b/x/icaoracle/types/query.pb.go index f1457049b6..6922cf7f49 100644 --- a/x/icaoracle/types/query.pb.go +++ b/x/icaoracle/types/query.pb.go @@ -402,7 +402,7 @@ var fileDescriptor_d4d4563f64cd9510 = []byte{ // 519 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xce, 0xd4, 0x9a, 0xb4, 0x4f, 0x8a, 0xf2, 0x2c, 0x35, 0x5d, 0xea, 0x1a, 0x16, 0x5b, 0x2b, - 0xda, 0x1d, 0xdb, 0x08, 0x7a, 0xb5, 0x1e, 0x44, 0xb4, 0xa8, 0x29, 0x78, 0x10, 0x21, 0x6c, 0x36, + 0xda, 0x1d, 0xdb, 0x20, 0x7a, 0xb5, 0x1e, 0x44, 0xb4, 0xa8, 0x29, 0x78, 0x10, 0x21, 0x6c, 0x36, 0xc3, 0x76, 0x30, 0xdd, 0x49, 0x77, 0x26, 0xc5, 0x45, 0xbc, 0x78, 0xf1, 0x26, 0x05, 0x7f, 0x82, 0x7f, 0xa6, 0xc7, 0x82, 0x17, 0x41, 0x10, 0x49, 0xfc, 0x21, 0xd2, 0x99, 0x49, 0xea, 0xba, 0x49, 0x13, 0xed, 0x29, 0xb3, 0xef, 0x7d, 0xef, 0xfb, 0xbe, 0x79, 0xf3, 0x11, 0x58, 0x92, 0x2a, 0xe1, @@ -431,8 +431,8 @@ var fileDescriptor_d4d4563f64cd9510 = []byte{ 0x07, 0xfb, 0xb7, 0x7d, 0xd9, 0x74, 0x6d, 0x6e, 0x1d, 0x76, 0x5d, 0x72, 0xd4, 0x75, 0xc9, 0xcf, 0xae, 0x4b, 0x0e, 0x7a, 0x6e, 0xe1, 0xa8, 0xe7, 0x16, 0xbe, 0xf5, 0xdc, 0xc2, 0xab, 0x6a, 0xc4, 0xd5, 0x4e, 0xa7, 0xe1, 0x87, 0x62, 0x77, 0x18, 0xd5, 0xfe, 0xfa, 0x5d, 0xfa, 0xf6, 0x0f, 0x42, - 0x95, 0xb6, 0x99, 0x6c, 0x14, 0xf5, 0x3f, 0x5b, 0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8b, - 0x18, 0x88, 0xf4, 0x61, 0x05, 0x00, 0x00, + 0x95, 0xb6, 0x99, 0x6c, 0x14, 0xf5, 0x3f, 0x5b, 0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, + 0x03, 0x04, 0x9a, 0x61, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go index 8d95c7df4f..bd960ceda8 100644 --- a/x/icaoracle/types/tx.pb.go +++ b/x/icaoracle/types/tx.pb.go @@ -519,47 +519,47 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/tx.proto", fileDescriptor_6e58a377bb8520d3) } var fileDescriptor_6e58a377bb8520d3 = []byte{ - // 628 bytes of a gzipped FileDescriptorProto + // 627 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3f, 0x6f, 0xd3, 0x4e, 0x18, 0xc7, 0xeb, 0xb6, 0xea, 0xef, 0xd7, 0x53, 0x4b, 0x53, 0x53, 0x35, 0x89, 0x01, 0xd3, 0x1a, - 0x11, 0x42, 0xa5, 0xd8, 0xb4, 0xe5, 0x9f, 0xc2, 0x94, 0x66, 0x8a, 0x44, 0x54, 0xc9, 0x61, 0x42, - 0x48, 0xd6, 0xe5, 0x7c, 0x38, 0x16, 0xc9, 0x5d, 0x74, 0x77, 0x8d, 0xda, 0x95, 0x91, 0x09, 0x89, - 0x89, 0x77, 0x80, 0x98, 0x3a, 0xf0, 0x02, 0x18, 0x19, 0x2b, 0x26, 0x46, 0x94, 0x0c, 0x9d, 0x78, - 0x0f, 0xc8, 0x7f, 0xe3, 0x38, 0x2e, 0x0d, 0x42, 0xb0, 0x24, 0xba, 0xe7, 0xf9, 0xde, 0xf7, 0x9e, - 0xcf, 0xdd, 0x73, 0x67, 0x50, 0xe4, 0x82, 0xb9, 0x36, 0x36, 0x5c, 0x04, 0x29, 0x83, 0xa8, 0x8b, - 0x0d, 0x71, 0xac, 0xf7, 0x19, 0x15, 0x54, 0xce, 0x05, 0x29, 0x3d, 0x4e, 0x29, 0x45, 0x44, 0x79, - 0x8f, 0x72, 0xcb, 0xcf, 0x1b, 0xc1, 0x20, 0x10, 0x2b, 0xf9, 0x60, 0x64, 0xf4, 0xb8, 0x63, 0x0c, - 0x76, 0xbd, 0xbf, 0x30, 0xb1, 0x0e, 0x7b, 0x2e, 0xa1, 0x86, 0xff, 0x1b, 0x84, 0xb4, 0xf7, 0x12, - 0x58, 0x69, 0x72, 0xa7, 0x66, 0xdb, 0x87, 0xbe, 0xaf, 0xbc, 0x07, 0xfe, 0x43, 0x0c, 0x43, 0x41, - 0x59, 0x41, 0xda, 0x92, 0xca, 0xcb, 0x07, 0x85, 0xaf, 0x9f, 0x2a, 0x1b, 0xa1, 0x7f, 0xcd, 0xb6, - 0x19, 0xe6, 0xbc, 0x25, 0x98, 0x4b, 0x1c, 0x33, 0x12, 0xca, 0xb7, 0xc0, 0x2a, 0xa2, 0x84, 0x60, - 0x24, 0x5c, 0x4a, 0x2c, 0xd7, 0x2e, 0xcc, 0x7b, 0x33, 0xcd, 0x95, 0x71, 0xb0, 0x61, 0x57, 0xef, - 0xbd, 0x3e, 0x3f, 0xdd, 0x89, 0xa6, 0xbc, 0x39, 0x3f, 0xdd, 0xb9, 0x19, 0xe2, 0x1e, 0x27, 0x80, - 0x93, 0xa5, 0x68, 0x9b, 0x60, 0x23, 0x39, 0x36, 0x31, 0xef, 0x53, 0xc2, 0xb1, 0xf6, 0x6e, 0xde, - 0x4f, 0x34, 0x08, 0x17, 0x90, 0x08, 0x17, 0x0a, 0xfc, 0x07, 0xb5, 0x97, 0xc0, 0x5a, 0xb0, 0xb6, - 0x85, 0x3a, 0xd0, 0x4d, 0x54, 0xbf, 0x1a, 0x84, 0xeb, 0x5e, 0xb4, 0x61, 0xcb, 0x65, 0x90, 0x43, - 0x94, 0x08, 0x06, 0x91, 0xb0, 0x10, 0xb5, 0xb1, 0x27, 0x5c, 0xd8, 0x92, 0xca, 0x8b, 0xe6, 0x95, - 0x28, 0x5e, 0xa7, 0x36, 0x6e, 0xd8, 0xf2, 0x13, 0xa0, 0x08, 0x06, 0x09, 0x7f, 0x89, 0x99, 0xe7, - 0x49, 0x08, 0xee, 0x5a, 0x94, 0x58, 0x81, 0x5d, 0x61, 0xd1, 0x37, 0xcf, 0x47, 0x8a, 0x7a, 0x20, - 0x38, 0x24, 0x01, 0x42, 0xf5, 0x71, 0x7a, 0x97, 0xee, 0x64, 0xef, 0xd2, 0x14, 0xbc, 0xa6, 0x82, - 0xeb, 0x59, 0xf1, 0x78, 0xd7, 0x3e, 0x4a, 0xe0, 0x6a, 0x93, 0x3b, 0x26, 0xe6, 0x82, 0xb2, 0x30, - 0xd9, 0xa8, 0xd7, 0xfe, 0xe6, 0xa6, 0x55, 0x1f, 0xa5, 0x69, 0x4a, 0xd9, 0x34, 0xe9, 0xa2, 0xb4, - 0x1b, 0xe0, 0x5a, 0x46, 0x38, 0x66, 0xf9, 0x2c, 0x81, 0xb5, 0x26, 0x77, 0x9e, 0x51, 0xc7, 0xe9, - 0x46, 0x87, 0xff, 0x10, 0x2c, 0xc3, 0x23, 0xd1, 0xa1, 0xcc, 0x15, 0x27, 0x97, 0x92, 0x8c, 0xa5, - 0x33, 0x37, 0xc0, 0x26, 0x58, 0x82, 0x48, 0xb8, 0x03, 0xec, 0x1f, 0xfb, 0xff, 0x66, 0x38, 0xaa, - 0x3e, 0xf0, 0x18, 0xc7, 0x7e, 0x1e, 0xa5, 0x96, 0x4d, 0x99, 0x2c, 0x57, 0x2b, 0x82, 0x7c, 0x2a, + 0x11, 0x42, 0xa5, 0xd8, 0xb4, 0x55, 0x01, 0x85, 0x29, 0xcd, 0x14, 0x89, 0xa8, 0x92, 0xc3, 0x84, + 0x90, 0xac, 0xcb, 0xf9, 0x70, 0x2c, 0x92, 0xbb, 0xe8, 0xee, 0x1a, 0xb5, 0x2b, 0x23, 0x13, 0x12, + 0x13, 0xef, 0x00, 0x31, 0x75, 0xe0, 0x05, 0x30, 0x32, 0x56, 0x4c, 0x8c, 0x28, 0x19, 0x3a, 0xf1, + 0x1e, 0x90, 0xff, 0xc6, 0x71, 0x5c, 0x1a, 0x84, 0x60, 0x49, 0x74, 0xcf, 0xf3, 0xbd, 0xef, 0x3d, + 0x9f, 0xbb, 0xe7, 0xce, 0xa0, 0xc8, 0x05, 0x73, 0x6d, 0x6c, 0xb8, 0x08, 0x52, 0x06, 0x51, 0x17, + 0x1b, 0xe2, 0x44, 0xef, 0x33, 0x2a, 0xa8, 0x9c, 0x0b, 0x52, 0x7a, 0x9c, 0x52, 0x8a, 0x88, 0xf2, + 0x1e, 0xe5, 0x96, 0x9f, 0x37, 0x82, 0x41, 0x20, 0x56, 0xf2, 0xc1, 0xc8, 0xe8, 0x71, 0xc7, 0x18, + 0xec, 0x7a, 0x7f, 0x61, 0x62, 0x1d, 0xf6, 0x5c, 0x42, 0x0d, 0xff, 0x37, 0x08, 0x69, 0xef, 0x25, + 0xb0, 0xd2, 0xe4, 0x4e, 0xcd, 0xb6, 0x8f, 0x7c, 0x5f, 0x79, 0x0f, 0xfc, 0x87, 0x18, 0x86, 0x82, + 0xb2, 0x82, 0xb4, 0x25, 0x95, 0x97, 0x0f, 0x0b, 0x5f, 0x3f, 0x55, 0x36, 0x42, 0xff, 0x9a, 0x6d, + 0x33, 0xcc, 0x79, 0x4b, 0x30, 0x97, 0x38, 0x66, 0x24, 0x94, 0xef, 0x80, 0x55, 0x44, 0x09, 0xc1, + 0x48, 0xb8, 0x94, 0x58, 0xae, 0x5d, 0x98, 0xf7, 0x66, 0x9a, 0x2b, 0xe3, 0x60, 0xc3, 0xae, 0x3e, + 0x78, 0x7d, 0x71, 0xb6, 0x13, 0x4d, 0x79, 0x73, 0x71, 0xb6, 0x73, 0x3b, 0xc4, 0x3d, 0x49, 0x00, + 0x27, 0x4b, 0xd1, 0x36, 0xc1, 0x46, 0x72, 0x6c, 0x62, 0xde, 0xa7, 0x84, 0x63, 0xed, 0xdd, 0xbc, + 0x9f, 0x68, 0x10, 0x2e, 0x20, 0x11, 0x2e, 0x14, 0xf8, 0x0f, 0x6a, 0x2f, 0x81, 0xb5, 0x60, 0x6d, + 0x0b, 0x75, 0xa0, 0x9b, 0xa8, 0x7e, 0x35, 0x08, 0xd7, 0xbd, 0x68, 0xc3, 0x96, 0xcb, 0x20, 0x87, + 0x28, 0x11, 0x0c, 0x22, 0x61, 0x21, 0x6a, 0x63, 0x4f, 0xb8, 0xb0, 0x25, 0x95, 0x17, 0xcd, 0x6b, + 0x51, 0xbc, 0x4e, 0x6d, 0xdc, 0xb0, 0xe5, 0x27, 0x40, 0x11, 0x0c, 0x12, 0xfe, 0x12, 0x33, 0xcf, + 0x93, 0x10, 0xdc, 0xb5, 0x28, 0xb1, 0x02, 0xbb, 0xc2, 0xa2, 0x6f, 0x9e, 0x8f, 0x14, 0xf5, 0x40, + 0x70, 0x44, 0x02, 0x84, 0xea, 0xe3, 0xf4, 0x2e, 0xdd, 0xcb, 0xde, 0xa5, 0x29, 0x78, 0x4d, 0x05, + 0x37, 0xb3, 0xe2, 0xf1, 0xae, 0x7d, 0x94, 0xc0, 0xf5, 0x26, 0x77, 0x4c, 0xcc, 0x05, 0x65, 0x61, + 0xb2, 0x51, 0xaf, 0xfd, 0xcd, 0x4d, 0xab, 0x3e, 0x4a, 0xd3, 0x94, 0xb2, 0x69, 0xd2, 0x45, 0x69, + 0xb7, 0xc0, 0x8d, 0x8c, 0x70, 0xcc, 0xf2, 0x59, 0x02, 0x6b, 0x4d, 0xee, 0x3c, 0xa3, 0x8e, 0xd3, + 0x8d, 0x0e, 0xff, 0x21, 0x58, 0x86, 0xc7, 0xa2, 0x43, 0x99, 0x2b, 0x4e, 0xaf, 0x24, 0x19, 0x4b, + 0x67, 0x6e, 0x80, 0x4d, 0xb0, 0x04, 0x91, 0x70, 0x07, 0xd8, 0x3f, 0xf6, 0xff, 0xcd, 0x70, 0x54, + 0x3d, 0xf0, 0x18, 0xc7, 0x7e, 0x1e, 0xa5, 0x96, 0x4d, 0x99, 0x2c, 0x57, 0x2b, 0x82, 0x7c, 0x2a, 0x14, 0xd3, 0x7d, 0x08, 0xe8, 0x4c, 0xdc, 0xa3, 0x83, 0x7f, 0x44, 0xf7, 0x1b, 0x14, 0xc9, 0xb2, 0x42, 0x8a, 0x64, 0x28, 0xa2, 0xd8, 0xfb, 0xb1, 0x00, 0x16, 0x9a, 0xdc, 0x91, 0x5b, 0x60, 0x79, 0xfc, 0xba, 0xa8, 0x7a, 0xfa, 0x21, 0xd3, 0x93, 0x57, 0x5c, 0x29, 0xfd, 0x3a, 0x1f, 0x99, 0xcb, 0xaf, 0xc0, 0xfa, 0xf4, 0xf5, 0xcf, 0x9e, 0x3c, 0xa5, 0x53, 0xf4, 0xd9, 0x74, 0xf1, 0x62, 0x1d, - 0x90, 0x9b, 0xba, 0x35, 0xb7, 0x33, 0x3d, 0xd2, 0x32, 0xa5, 0x32, 0x93, 0x2c, 0x5e, 0xe9, 0x05, - 0x58, 0x99, 0xe8, 0xe9, 0xed, 0xcc, 0xe9, 0x49, 0x89, 0x72, 0xf7, 0x52, 0x49, 0xd2, 0x7d, 0xa2, - 0xa7, 0xb6, 0x2f, 0x28, 0x6e, 0x2c, 0xb9, 0xc0, 0x3d, 0xeb, 0xbc, 0x0f, 0x9a, 0x5f, 0x86, 0xaa, - 0x74, 0x36, 0x54, 0xa5, 0xef, 0x43, 0x55, 0x7a, 0x3b, 0x52, 0xe7, 0xce, 0x46, 0xea, 0xdc, 0xb7, - 0x91, 0x3a, 0xf7, 0x7c, 0xdf, 0x71, 0x45, 0xe7, 0xa8, 0xad, 0x23, 0xda, 0x33, 0x5a, 0xbe, 0x5d, - 0xe5, 0x29, 0x6c, 0x73, 0x23, 0xec, 0xaf, 0xc1, 0xee, 0xfd, 0x89, 0x1e, 0x13, 0x27, 0x7d, 0xcc, - 0xdb, 0x4b, 0xfe, 0xf7, 0x69, 0xff, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0xe3, 0x02, 0x1e, - 0x15, 0x07, 0x00, 0x00, + 0x90, 0x9b, 0xba, 0x35, 0x77, 0x33, 0x3d, 0xd2, 0x32, 0xa5, 0x32, 0x93, 0x2c, 0x5e, 0xe9, 0x05, + 0x58, 0x99, 0xe8, 0xe9, 0xed, 0xcc, 0xe9, 0x49, 0x89, 0x72, 0xff, 0x4a, 0x49, 0xd2, 0x7d, 0xa2, + 0xa7, 0xb6, 0x2f, 0x29, 0x6e, 0x2c, 0xb9, 0xc4, 0x3d, 0xeb, 0xbc, 0x0f, 0x9b, 0x5f, 0x86, 0xaa, + 0x74, 0x3e, 0x54, 0xa5, 0xef, 0x43, 0x55, 0x7a, 0x3b, 0x52, 0xe7, 0xce, 0x47, 0xea, 0xdc, 0xb7, + 0x91, 0x3a, 0xf7, 0x7c, 0xdf, 0x71, 0x45, 0xe7, 0xb8, 0xad, 0x23, 0xda, 0x33, 0x5a, 0xbe, 0x5d, + 0xe5, 0x29, 0x6c, 0x73, 0x23, 0xec, 0xaf, 0xc1, 0xee, 0xc1, 0x44, 0x8f, 0x89, 0xd3, 0x3e, 0xe6, + 0xed, 0x25, 0xff, 0xfb, 0xb4, 0xff, 0x33, 0x00, 0x00, 0xff, 0xff, 0x23, 0xf8, 0x8e, 0x70, 0x15, + 0x07, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/client/cli/query.go b/x/interchainquery/client/cli/query.go index 44b8798bc2..b8b1486f23 100644 --- a/x/interchainquery/client/cli/query.go +++ b/x/interchainquery/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) // GetQueryCmd returns the cli query commands for this module. diff --git a/x/interchainquery/genesis.go b/x/interchainquery/genesis.go index 0d8840d602..94ea4d9837 100644 --- a/x/interchainquery/genesis.go +++ b/x/interchainquery/genesis.go @@ -3,8 +3,8 @@ package interchainquery import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/interchainquery/handler.go b/x/interchainquery/handler.go index f186818904..714424ac48 100644 --- a/x/interchainquery/handler.go +++ b/x/interchainquery/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) // NewHandler returns a handler for interchainquery module messages diff --git a/x/interchainquery/keeper/abci.go b/x/interchainquery/keeper/abci.go index 1234347ea2..0abfa99c60 100644 --- a/x/interchainquery/keeper/abci.go +++ b/x/interchainquery/keeper/abci.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) // EndBlocker of interchainquery module diff --git a/x/interchainquery/keeper/grpc_query.go b/x/interchainquery/keeper/grpc_query.go index 4c0b20cd38..d00ef762e6 100644 --- a/x/interchainquery/keeper/grpc_query.go +++ b/x/interchainquery/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) var _ types.QueryServiceServer = Keeper{} diff --git a/x/interchainquery/keeper/keeper.go b/x/interchainquery/keeper/keeper.go index 87eddb25f3..245ecb481d 100644 --- a/x/interchainquery/keeper/keeper.go +++ b/x/interchainquery/keeper/keeper.go @@ -13,8 +13,8 @@ import ( connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) // Keeper of this module maintains collections of registered zones. diff --git a/x/interchainquery/keeper/keeper_test.go b/x/interchainquery/keeper/keeper_test.go index a7b363adc6..a46c6884de 100644 --- a/x/interchainquery/keeper/keeper_test.go +++ b/x/interchainquery/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) type KeeperTestSuite struct { diff --git a/x/interchainquery/keeper/msg_server.go b/x/interchainquery/keeper/msg_server.go index 082e71fdb3..d8b156225b 100644 --- a/x/interchainquery/keeper/msg_server.go +++ b/x/interchainquery/keeper/msg_server.go @@ -16,8 +16,8 @@ import ( ics23 "github.com/cosmos/ics23/go" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) type msgServer struct { diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index c770d6c5bc..e936e6ca66 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -10,8 +10,8 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const ( diff --git a/x/interchainquery/keeper/queries.go b/x/interchainquery/keeper/queries.go index 2a3b6ec29a..1fbb47c215 100644 --- a/x/interchainquery/keeper/queries.go +++ b/x/interchainquery/keeper/queries.go @@ -16,7 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store/prefix" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) // Generates a query ID based on the request information diff --git a/x/interchainquery/keeper/queries_test.go b/x/interchainquery/keeper/queries_test.go index 1dbb1a7df9..df41bac804 100644 --- a/x/interchainquery/keeper/queries_test.go +++ b/x/interchainquery/keeper/queries_test.go @@ -10,10 +10,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (s *KeeperTestSuite) TestGetQueryId() { diff --git a/x/interchainquery/module.go b/x/interchainquery/module.go index b550d71e1f..f0ed1e04ca 100644 --- a/x/interchainquery/module.go +++ b/x/interchainquery/module.go @@ -19,10 +19,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/x/interchainquery/client/cli" - "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/interchainquery/client/cli" + "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) var ( diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index d082837339..329bc0a2ed 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -308,52 +308,52 @@ func init() { } var fileDescriptor_74cd646eb05658fd = []byte{ - // 716 bytes of a gzipped FileDescriptorProto + // 717 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, 0x10, 0x8e, 0xd3, 0xf4, 0x6f, 0xb2, 0x71, 0xd2, 0xfc, 0x4b, 0x01, 0xa7, 0x12, 0x89, 0x29, 0x12, - 0xb5, 0x0a, 0xb5, 0xd5, 0xc2, 0x05, 0x89, 0x03, 0x4d, 0x6a, 0x41, 0xa0, 0xb4, 0xa9, 0x93, 0x4a, - 0x94, 0x8b, 0xe5, 0xd8, 0x4b, 0xb2, 0xaa, 0xed, 0x4d, 0xbd, 0xeb, 0x88, 0x3c, 0x03, 0x17, 0x8e, - 0x3c, 0x01, 0x4f, 0xc0, 0x43, 0xf4, 0x58, 0x71, 0x42, 0x1c, 0x0a, 0x6a, 0x6f, 0x3c, 0x05, 0xf2, - 0xda, 0xdb, 0x16, 0x2a, 0x38, 0x71, 0xb2, 0x77, 0xbe, 0x6f, 0xbe, 0x19, 0xcf, 0x7c, 0x5e, 0xb0, - 0x4c, 0x59, 0x84, 0x3d, 0x64, 0xe0, 0x90, 0xa1, 0xc8, 0x1d, 0x39, 0x38, 0x3c, 0x8c, 0x51, 0x34, - 0x35, 0x26, 0x6b, 0xc6, 0x10, 0x85, 0x88, 0x62, 0xaa, 0x8f, 0x23, 0xc2, 0x08, 0xac, 0xa7, 0x44, - 0xfd, 0x37, 0xa2, 0x3e, 0x59, 0x5b, 0x5c, 0x18, 0x92, 0x21, 0xe1, 0x2c, 0x23, 0x79, 0x4b, 0x13, - 0x16, 0x1b, 0x43, 0x42, 0x86, 0x3e, 0x32, 0xf8, 0x69, 0x10, 0xbf, 0x31, 0xbc, 0x38, 0x72, 0x18, - 0x26, 0x61, 0x86, 0xd7, 0x5d, 0x42, 0x03, 0x42, 0xed, 0x34, 0x31, 0x3d, 0xa4, 0xd0, 0xd2, 0xc7, - 0x02, 0x98, 0xdd, 0x4d, 0xd4, 0x61, 0x15, 0xe4, 0xb1, 0xa7, 0x48, 0xaa, 0xa4, 0x95, 0xac, 0x3c, - 0xf6, 0xe0, 0x1d, 0x50, 0x71, 0x49, 0x18, 0x22, 0x37, 0x11, 0xb2, 0xb1, 0xa7, 0xe4, 0x39, 0x24, - 0x5f, 0x04, 0x3b, 0x1e, 0xac, 0x83, 0x22, 0x6f, 0x30, 0xc1, 0x67, 0x38, 0x3e, 0xc7, 0xcf, 0x1d, - 0x0f, 0xde, 0x02, 0x80, 0xb7, 0x6d, 0xb3, 0xe9, 0x18, 0x29, 0x05, 0x0e, 0x96, 0x78, 0xa4, 0x3f, - 0x1d, 0x23, 0x78, 0x1b, 0xc8, 0x11, 0x3a, 0x8c, 0x11, 0x65, 0xb6, 0xe7, 0x30, 0x47, 0x99, 0x55, - 0x25, 0x4d, 0xb6, 0xca, 0x59, 0x6c, 0xd3, 0x61, 0x0e, 0x5c, 0x06, 0xf3, 0xae, 0xe3, 0xfb, 0x03, - 0xc7, 0x3d, 0xb0, 0x03, 0xe2, 0xc5, 0x3e, 0x52, 0x2a, 0x5c, 0xa6, 0x2a, 0xc2, 0x2f, 0x79, 0x14, - 0x36, 0x41, 0xf9, 0x9c, 0x88, 0x3d, 0xa5, 0xc8, 0x49, 0x40, 0x84, 0x3a, 0xe9, 0xb7, 0x08, 0x02, - 0xaf, 0x26, 0xf3, 0x6a, 0xb2, 0x08, 0xf2, 0x72, 0x3b, 0xa0, 0xca, 0x70, 0x80, 0x48, 0xcc, 0xec, - 0x31, 0xf1, 0xb1, 0x3b, 0x55, 0xe6, 0x55, 0x49, 0xab, 0xae, 0x6b, 0xfa, 0x1f, 0xf7, 0xa1, 0xf7, - 0xd3, 0x84, 0x2e, 0xe7, 0x5b, 0x15, 0x76, 0xf9, 0x08, 0xb7, 0x41, 0x4d, 0x08, 0x8a, 0x85, 0x28, - 0x55, 0x55, 0xd2, 0xca, 0xeb, 0x75, 0x3d, 0xdd, 0x98, 0x2e, 0x36, 0xa6, 0x6f, 0x66, 0x84, 0x56, - 0xf1, 0xe8, 0xa4, 0x99, 0xfb, 0xf0, 0xad, 0x29, 0x59, 0xf3, 0x59, 0xb2, 0x80, 0xe0, 0x3d, 0xf0, - 0xbf, 0xd0, 0x4b, 0x9e, 0x94, 0x39, 0xc1, 0x58, 0x29, 0xa9, 0x92, 0x56, 0xb0, 0x44, 0xa1, 0xbe, - 0x88, 0x5f, 0x9e, 0x2f, 0x45, 0x21, 0x53, 0xca, 0xaa, 0xa4, 0x15, 0xcf, 0xe7, 0xdb, 0x43, 0x21, - 0x4b, 0xf4, 0x68, 0x3c, 0x08, 0x30, 0xa5, 0xc9, 0x86, 0x47, 0x08, 0x0f, 0x47, 0x4c, 0xa9, 0xa5, - 0x7a, 0x17, 0xc0, 0x33, 0x1e, 0x5f, 0x7a, 0x97, 0x07, 0xa5, 0x64, 0x4c, 0x5d, 0x82, 0x43, 0x76, - 0xc5, 0x2c, 0x0e, 0xa8, 0x44, 0x28, 0x20, 0x0c, 0x09, 0x19, 0x6e, 0x96, 0xd6, 0xe3, 0xe4, 0x63, - 0xbe, 0x9e, 0x34, 0xef, 0x0e, 0x31, 0x1b, 0xc5, 0x03, 0xdd, 0x25, 0x41, 0x66, 0xbf, 0xec, 0xb1, - 0x4a, 0xbd, 0x03, 0x23, 0x31, 0x08, 0xd5, 0x3b, 0x21, 0xfb, 0xfc, 0x69, 0x15, 0x64, 0xee, 0xec, - 0x84, 0xcc, 0x92, 0x53, 0xc9, 0xb4, 0x01, 0x68, 0x03, 0xd9, 0x27, 0xae, 0xe3, 0x8b, 0x0a, 0x33, - 0xff, 0xa0, 0x42, 0x99, 0x2b, 0x66, 0x05, 0x56, 0xc0, 0xec, 0xc4, 0xf1, 0xe3, 0xd4, 0xab, 0x72, - 0x6b, 0xe1, 0xc7, 0x49, 0xb3, 0x16, 0x21, 0x1a, 0xfb, 0xec, 0x3e, 0x09, 0x30, 0x43, 0xc1, 0x98, - 0x4d, 0xad, 0x94, 0xb2, 0xd4, 0x05, 0xf2, 0xd3, 0xf4, 0x9f, 0xed, 0x31, 0x87, 0x21, 0xf8, 0x04, - 0xcc, 0x25, 0x9e, 0xc0, 0x88, 0x2a, 0x92, 0x3a, 0xa3, 0x95, 0xd7, 0xd5, 0xbf, 0x98, 0x86, 0xff, - 0x6f, 0xad, 0x42, 0xd2, 0xb9, 0x25, 0xd2, 0x56, 0x6c, 0x50, 0xf9, 0xc5, 0x4c, 0xb0, 0x0e, 0xae, - 0x5b, 0xe6, 0x73, 0xb3, 0xdd, 0xb7, 0x77, 0xf7, 0x4c, 0x6b, 0xdf, 0xb6, 0xcc, 0x5e, 0x77, 0x67, - 0xbb, 0x67, 0xd6, 0x72, 0xf0, 0x26, 0xb8, 0x66, 0x99, 0x7d, 0x6b, 0xff, 0x1c, 0xd9, 0xdd, 0x33, - 0x7b, 0xfd, 0x9a, 0x04, 0x17, 0xc1, 0x0d, 0xf3, 0x95, 0xd9, 0xde, 0xeb, 0x9b, 0x19, 0xd4, 0xde, - 0xd8, 0xda, 0x6a, 0x6d, 0xb4, 0x5f, 0xd4, 0xf2, 0xad, 0xde, 0xd1, 0x69, 0x43, 0x3a, 0x3e, 0x6d, - 0x48, 0xdf, 0x4f, 0x1b, 0xd2, 0xfb, 0xb3, 0x46, 0xee, 0xf8, 0xac, 0x91, 0xfb, 0x72, 0xd6, 0xc8, - 0xbd, 0x7e, 0x74, 0x69, 0x76, 0x3d, 0xde, 0xf5, 0xea, 0x96, 0x33, 0xa0, 0x46, 0x76, 0x5f, 0x4d, - 0xd6, 0x1e, 0x1a, 0x6f, 0xaf, 0xdc, 0x5a, 0x7c, 0xa4, 0x83, 0xff, 0xb8, 0x81, 0x1f, 0xfc, 0x0c, - 0x00, 0x00, 0xff, 0xff, 0x2b, 0x64, 0xd1, 0xd1, 0xdc, 0x04, 0x00, 0x00, + 0xb5, 0x0a, 0xb5, 0xd5, 0x22, 0x0e, 0x48, 0x1c, 0x68, 0x52, 0x0b, 0x02, 0xa5, 0x4d, 0x9d, 0x54, + 0xa2, 0x5c, 0x2c, 0xc7, 0x5e, 0x92, 0x55, 0x6d, 0x6f, 0xea, 0x5d, 0x47, 0xe4, 0x19, 0xb8, 0x70, + 0xe4, 0x09, 0x78, 0x02, 0x1e, 0xa2, 0xc7, 0x8a, 0x13, 0xe2, 0x50, 0x50, 0x7b, 0xe3, 0x29, 0x90, + 0xd7, 0xde, 0xb6, 0x50, 0xc1, 0x89, 0x93, 0xbd, 0xf3, 0x7d, 0xf3, 0xcd, 0x78, 0xe6, 0xf3, 0x82, + 0x65, 0xca, 0x22, 0xec, 0x21, 0x03, 0x87, 0x0c, 0x45, 0xee, 0xc8, 0xc1, 0xe1, 0x61, 0x8c, 0xa2, + 0xa9, 0x31, 0x59, 0x33, 0x86, 0x28, 0x44, 0x14, 0x53, 0x7d, 0x1c, 0x11, 0x46, 0x60, 0x3d, 0x25, + 0xea, 0xbf, 0x11, 0xf5, 0xc9, 0xda, 0xe2, 0xc2, 0x90, 0x0c, 0x09, 0x67, 0x19, 0xc9, 0x5b, 0x9a, + 0xb0, 0xd8, 0x18, 0x12, 0x32, 0xf4, 0x91, 0xc1, 0x4f, 0x83, 0xf8, 0x8d, 0xe1, 0xc5, 0x91, 0xc3, + 0x30, 0x09, 0x33, 0xbc, 0xee, 0x12, 0x1a, 0x10, 0x6a, 0xa7, 0x89, 0xe9, 0x21, 0x85, 0x96, 0x3e, + 0x16, 0xc0, 0xec, 0x6e, 0xa2, 0x0e, 0xab, 0x20, 0x8f, 0x3d, 0x45, 0x52, 0x25, 0xad, 0x64, 0xe5, + 0xb1, 0x07, 0xef, 0x80, 0x8a, 0x4b, 0xc2, 0x10, 0xb9, 0x89, 0x90, 0x8d, 0x3d, 0x25, 0xcf, 0x21, + 0xf9, 0x22, 0xd8, 0xf1, 0x60, 0x1d, 0x14, 0x79, 0x83, 0x09, 0x3e, 0xc3, 0xf1, 0x39, 0x7e, 0xee, + 0x78, 0xf0, 0x16, 0x00, 0xbc, 0x6d, 0x9b, 0x4d, 0xc7, 0x48, 0x29, 0x70, 0xb0, 0xc4, 0x23, 0xfd, + 0xe9, 0x18, 0xc1, 0xdb, 0x40, 0x8e, 0xd0, 0x61, 0x8c, 0x28, 0xb3, 0x3d, 0x87, 0x39, 0xca, 0xac, + 0x2a, 0x69, 0xb2, 0x55, 0xce, 0x62, 0x9b, 0x0e, 0x73, 0xe0, 0x32, 0x98, 0x77, 0x1d, 0xdf, 0x1f, + 0x38, 0xee, 0x81, 0x1d, 0x10, 0x2f, 0xf6, 0x91, 0x52, 0xe1, 0x32, 0x55, 0x11, 0x7e, 0xc9, 0xa3, + 0xb0, 0x09, 0xca, 0xe7, 0x44, 0xec, 0x29, 0x45, 0x4e, 0x02, 0x22, 0xd4, 0x49, 0xbf, 0x45, 0x10, + 0x78, 0x35, 0x99, 0x57, 0x93, 0x45, 0x90, 0x97, 0xdb, 0x01, 0x55, 0x86, 0x03, 0x44, 0x62, 0x66, + 0x8f, 0x89, 0x8f, 0xdd, 0xa9, 0x32, 0xaf, 0x4a, 0x5a, 0x75, 0x5d, 0xd3, 0xff, 0xb8, 0x0f, 0xbd, + 0x9f, 0x26, 0x74, 0x39, 0xdf, 0xaa, 0xb0, 0xcb, 0x47, 0xb8, 0x0d, 0x6a, 0x42, 0x50, 0x2c, 0x44, + 0xa9, 0xaa, 0x92, 0x56, 0x5e, 0xaf, 0xeb, 0xe9, 0xc6, 0x74, 0xb1, 0x31, 0x7d, 0x33, 0x23, 0xb4, + 0x8a, 0x47, 0x27, 0xcd, 0xdc, 0x87, 0x6f, 0x4d, 0xc9, 0x9a, 0xcf, 0x92, 0x05, 0x04, 0xef, 0x81, + 0xff, 0x85, 0x5e, 0xf2, 0xa4, 0xcc, 0x09, 0xc6, 0x4a, 0x49, 0x95, 0xb4, 0x82, 0x25, 0x0a, 0xf5, + 0x45, 0xfc, 0xf2, 0x7c, 0x29, 0x0a, 0x99, 0x52, 0x56, 0x25, 0xad, 0x78, 0x3e, 0xdf, 0x1e, 0x0a, + 0x59, 0xa2, 0x47, 0xe3, 0x41, 0x80, 0x29, 0x4d, 0x36, 0x3c, 0x42, 0x78, 0x38, 0x62, 0x4a, 0x2d, + 0xd5, 0xbb, 0x00, 0x9e, 0xf1, 0xf8, 0xd2, 0xbb, 0x3c, 0x28, 0x25, 0x63, 0xea, 0x12, 0x1c, 0xb2, + 0x2b, 0x66, 0x71, 0x40, 0x25, 0x42, 0x01, 0x61, 0x48, 0xc8, 0x70, 0xb3, 0xb4, 0x1e, 0x27, 0x1f, + 0xf3, 0xf5, 0xa4, 0x79, 0x77, 0x88, 0xd9, 0x28, 0x1e, 0xe8, 0x2e, 0x09, 0x32, 0xfb, 0x65, 0x8f, + 0x55, 0xea, 0x1d, 0x18, 0x89, 0x41, 0xa8, 0xde, 0x09, 0xd9, 0xe7, 0x4f, 0xab, 0x20, 0x73, 0x67, + 0x27, 0x64, 0x96, 0x9c, 0x4a, 0xa6, 0x0d, 0x40, 0x1b, 0xc8, 0x3e, 0x71, 0x1d, 0x5f, 0x54, 0x98, + 0xf9, 0x07, 0x15, 0xca, 0x5c, 0x31, 0x2b, 0xb0, 0x02, 0x66, 0x27, 0x8e, 0x1f, 0xa7, 0x5e, 0x95, + 0x5b, 0x0b, 0x3f, 0x4e, 0x9a, 0xb5, 0x08, 0xd1, 0xd8, 0x67, 0xf7, 0x49, 0x80, 0x19, 0x0a, 0xc6, + 0x6c, 0x6a, 0xa5, 0x94, 0xa5, 0x2e, 0x90, 0x9f, 0xa6, 0xff, 0x6c, 0x8f, 0x39, 0x0c, 0xc1, 0x27, + 0x60, 0x2e, 0xf1, 0x04, 0x46, 0x54, 0x91, 0xd4, 0x19, 0xad, 0xbc, 0xae, 0xfe, 0xc5, 0x34, 0xfc, + 0x7f, 0x6b, 0x15, 0x92, 0xce, 0x2d, 0x91, 0xb6, 0x62, 0x83, 0xca, 0x2f, 0x66, 0x82, 0x75, 0x70, + 0xdd, 0x32, 0x9f, 0x9b, 0xed, 0xbe, 0xbd, 0xbb, 0x67, 0x5a, 0xfb, 0xb6, 0x65, 0xf6, 0xba, 0x3b, + 0xdb, 0x3d, 0xb3, 0x96, 0x83, 0x37, 0xc1, 0x35, 0xcb, 0xec, 0x5b, 0xfb, 0xe7, 0xc8, 0xee, 0x9e, + 0xd9, 0xeb, 0xd7, 0x24, 0xb8, 0x08, 0x6e, 0x98, 0xaf, 0xcc, 0xf6, 0x5e, 0xdf, 0xcc, 0xa0, 0xf6, + 0xc6, 0xd6, 0x56, 0x6b, 0xa3, 0xfd, 0xa2, 0x96, 0x6f, 0xf5, 0x8e, 0x4e, 0x1b, 0xd2, 0xf1, 0x69, + 0x43, 0xfa, 0x7e, 0xda, 0x90, 0xde, 0x9f, 0x35, 0x72, 0xc7, 0x67, 0x8d, 0xdc, 0x97, 0xb3, 0x46, + 0xee, 0xf5, 0xa3, 0x4b, 0xb3, 0xeb, 0xf1, 0xae, 0x57, 0xb7, 0x9c, 0x01, 0x35, 0xb2, 0xfb, 0x6a, + 0xb2, 0xf6, 0xd0, 0x78, 0x7b, 0xe5, 0xd6, 0xe2, 0x23, 0x1d, 0xfc, 0xc7, 0x0d, 0xfc, 0xe0, 0x67, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xd8, 0xf4, 0x23, 0xe7, 0xdc, 0x04, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { diff --git a/x/interchainquery/types/messages.pb.go b/x/interchainquery/types/messages.pb.go index dc3acd6fc2..52b45cf769 100644 --- a/x/interchainquery/types/messages.pb.go +++ b/x/interchainquery/types/messages.pb.go @@ -125,36 +125,36 @@ var fileDescriptor_25adad4f8ed32400 = []byte{ // 512 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x8f, 0xd3, 0x3e, 0x18, 0xc7, 0xeb, 0xf6, 0xf7, 0xeb, 0xdd, 0xe5, 0x8a, 0x80, 0x5c, 0x85, 0x72, 0x05, 0x92, 0xca, - 0x0b, 0x05, 0x71, 0xb6, 0x52, 0x58, 0xae, 0x4c, 0x74, 0x3b, 0x89, 0xe3, 0x4f, 0xba, 0xb1, 0x54, - 0x69, 0xe3, 0x73, 0x2d, 0x35, 0x71, 0xb0, 0xdd, 0xea, 0xba, 0x32, 0x31, 0x22, 0xb1, 0x30, 0xf6, - 0x45, 0x20, 0x31, 0xb2, 0x32, 0x9e, 0x60, 0x61, 0xaa, 0x50, 0xcb, 0x00, 0x6b, 0x5f, 0x01, 0x8a, - 0x9d, 0x00, 0xba, 0x2b, 0x03, 0x93, 0x9f, 0x3c, 0xdf, 0xcf, 0xf3, 0x2f, 0x7e, 0x6c, 0xb5, 0xa4, - 0x12, 0x2c, 0x22, 0x98, 0x25, 0x8a, 0x88, 0xe1, 0x28, 0x64, 0xc9, 0x8b, 0x09, 0x11, 0x33, 0x3c, - 0xf5, 0x71, 0x4c, 0xa4, 0x0c, 0x29, 0x91, 0x28, 0x15, 0x5c, 0x71, 0x7b, 0xdf, 0x90, 0xe8, 0x1c, - 0x89, 0xa6, 0x7e, 0xa3, 0x4e, 0x39, 0xe5, 0x9a, 0xc2, 0x99, 0x65, 0x02, 0x1a, 0xfb, 0x43, 0x2e, - 0x63, 0x2e, 0xfb, 0x46, 0x30, 0x1f, 0xb9, 0x74, 0x83, 0x72, 0x4e, 0xc7, 0x04, 0x87, 0x29, 0xc3, - 0x61, 0x92, 0x70, 0x15, 0x2a, 0xc6, 0x93, 0x42, 0xbd, 0xa9, 0x48, 0x12, 0x11, 0x11, 0xb3, 0x44, - 0xe1, 0xa1, 0x98, 0xa5, 0x8a, 0xe3, 0x54, 0x70, 0x7e, 0x62, 0x64, 0xf8, 0xa3, 0x6c, 0x5d, 0x3b, - 0x96, 0xb4, 0x37, 0x19, 0xc4, 0x4c, 0x3d, 0xcb, 0x7a, 0x08, 0x88, 0x4c, 0x79, 0x22, 0x89, 0x8d, - 0xac, 0x6d, 0xdd, 0x59, 0x9f, 0x45, 0x0e, 0x68, 0x82, 0xd6, 0x4e, 0x77, 0x6f, 0xbd, 0xf0, 0x2e, - 0xcf, 0xc2, 0x78, 0xdc, 0x81, 0x85, 0x02, 0x83, 0x2d, 0x6d, 0x1e, 0x45, 0x19, 0xaf, 0x87, 0xc8, - 0xf8, 0xf2, 0x79, 0xbe, 0x50, 0x60, 0xb0, 0xa5, 0xcd, 0xa3, 0xc8, 0xbe, 0x6d, 0x55, 0x05, 0x91, - 0x93, 0xb1, 0x72, 0x2a, 0x4d, 0xd0, 0xaa, 0x75, 0xaf, 0xae, 0x17, 0xde, 0x25, 0x43, 0x1b, 0x3f, - 0x0c, 0x72, 0xc0, 0x7e, 0x6c, 0xed, 0xe8, 0xa6, 0xfb, 0x3c, 0x95, 0xce, 0x7f, 0x4d, 0xd0, 0xda, - 0x6d, 0x5f, 0x47, 0xbf, 0x07, 0x43, 0x66, 0x30, 0xf4, 0x34, 0x63, 0x9e, 0xa4, 0xb2, 0x5b, 0x5f, - 0x2f, 0xbc, 0x2b, 0x26, 0xd5, 0xaf, 0x38, 0x18, 0x6c, 0xa7, 0xb9, 0x9e, 0x95, 0x1e, 0x11, 0x46, - 0x47, 0xca, 0xf9, 0xbf, 0x09, 0x5a, 0x95, 0x3f, 0x4b, 0x1b, 0x3f, 0x0c, 0x72, 0xc0, 0x7e, 0x60, - 0xd5, 0x4e, 0x04, 0x8f, 0xfb, 0x61, 0x14, 0x09, 0x22, 0xa5, 0x53, 0xd5, 0x93, 0x39, 0x9f, 0xde, - 0x1d, 0xd4, 0xf3, 0x5b, 0x78, 0x68, 0x94, 0x9e, 0x12, 0x2c, 0xa1, 0xc1, 0x6e, 0x46, 0xe7, 0xae, - 0x4e, 0xed, 0xd5, 0xdc, 0x2b, 0xbd, 0x9d, 0x7b, 0xe0, 0xfb, 0xdc, 0x2b, 0xc1, 0xa6, 0xe5, 0x6e, - 0xfe, 0xd5, 0xc5, 0xd9, 0xfe, 0x00, 0xac, 0xca, 0xb1, 0xa4, 0xf6, 0x7b, 0x60, 0xed, 0x6d, 0xba, - 0x12, 0x1f, 0xfd, 0x75, 0x6f, 0xd0, 0xe6, 0xd4, 0x8d, 0xc3, 0x7f, 0x0e, 0x29, 0x4e, 0xd8, 0x7e, - 0xf9, 0xf9, 0xdb, 0x9b, 0xf2, 0xdd, 0x0e, 0xb8, 0x03, 0x6f, 0x5d, 0xd8, 0x69, 0x75, 0x8a, 0xa7, - 0xfe, 0x80, 0xa8, 0xd0, 0xc7, 0x52, 0xe7, 0xd0, 0xee, 0x6e, 0xef, 0xe3, 0xd2, 0x05, 0x67, 0x4b, - 0x17, 0x7c, 0x5d, 0xba, 0xe0, 0xf5, 0xca, 0x2d, 0x9d, 0xad, 0xdc, 0xd2, 0x97, 0x95, 0x5b, 0x7a, - 0x7e, 0x48, 0x99, 0x1a, 0x4d, 0x06, 0x68, 0xc8, 0x63, 0xdc, 0xd3, 0x2d, 0x1d, 0x3c, 0x0a, 0x07, - 0x12, 0xe7, 0x6f, 0x66, 0xea, 0xdf, 0xc7, 0xa7, 0x17, 0xab, 0xcc, 0x52, 0x22, 0x07, 0x55, 0xbd, - 0xab, 0xf7, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, 0xa1, 0x63, 0xd6, 0x4e, 0x60, 0x03, 0x00, 0x00, + 0x0b, 0x05, 0x71, 0xb6, 0x52, 0xc4, 0x70, 0x65, 0xa2, 0xdb, 0x49, 0x1c, 0x7f, 0xd2, 0x8d, 0xa5, + 0x4a, 0x1b, 0x9f, 0x6b, 0xa9, 0x89, 0x83, 0xed, 0x56, 0xd7, 0x95, 0x89, 0x11, 0x89, 0x85, 0xb1, + 0x2f, 0x02, 0x89, 0x91, 0x95, 0xf1, 0x04, 0x0b, 0x53, 0x85, 0x5a, 0x06, 0x58, 0xfb, 0x0a, 0x50, + 0xec, 0x04, 0xd0, 0x5d, 0x19, 0x98, 0xfc, 0xe4, 0xf9, 0x7e, 0x9e, 0x7f, 0xf1, 0x63, 0xab, 0x25, + 0x95, 0x60, 0x11, 0xc1, 0x2c, 0x51, 0x44, 0x0c, 0x47, 0x21, 0x4b, 0x5e, 0x4c, 0x88, 0x98, 0xe1, + 0xa9, 0x8f, 0x63, 0x22, 0x65, 0x48, 0x89, 0x44, 0xa9, 0xe0, 0x8a, 0xdb, 0xfb, 0x86, 0x44, 0xe7, + 0x48, 0x34, 0xf5, 0x1b, 0x75, 0xca, 0x29, 0xd7, 0x14, 0xce, 0x2c, 0x13, 0xd0, 0xd8, 0x1f, 0x72, + 0x19, 0x73, 0xd9, 0x37, 0x82, 0xf9, 0xc8, 0xa5, 0x1b, 0x94, 0x73, 0x3a, 0x26, 0x38, 0x4c, 0x19, + 0x0e, 0x93, 0x84, 0xab, 0x50, 0x31, 0x9e, 0x14, 0xea, 0x4d, 0x45, 0x92, 0x88, 0x88, 0x98, 0x25, + 0x0a, 0x0f, 0xc5, 0x2c, 0x55, 0x1c, 0xa7, 0x82, 0xf3, 0x13, 0x23, 0xc3, 0x1f, 0x65, 0xeb, 0xda, + 0xb1, 0xa4, 0xbd, 0xc9, 0x20, 0x66, 0xea, 0x59, 0xd6, 0x43, 0x40, 0x64, 0xca, 0x13, 0x49, 0x6c, + 0x64, 0x6d, 0xeb, 0xce, 0xfa, 0x2c, 0x72, 0x40, 0x13, 0xb4, 0x76, 0xba, 0x7b, 0xeb, 0x85, 0x77, + 0x79, 0x16, 0xc6, 0xe3, 0x0e, 0x2c, 0x14, 0x18, 0x6c, 0x69, 0xf3, 0x28, 0xca, 0x78, 0x3d, 0x44, + 0xc6, 0x97, 0xcf, 0xf3, 0x85, 0x02, 0x83, 0x2d, 0x6d, 0x1e, 0x45, 0xf6, 0x6d, 0xab, 0x2a, 0x88, + 0x9c, 0x8c, 0x95, 0x53, 0x69, 0x82, 0x56, 0xad, 0x7b, 0x75, 0xbd, 0xf0, 0x2e, 0x19, 0xda, 0xf8, + 0x61, 0x90, 0x03, 0xf6, 0x63, 0x6b, 0x47, 0x37, 0xdd, 0xe7, 0xa9, 0x74, 0xfe, 0x6b, 0x82, 0xd6, + 0x6e, 0xfb, 0x3a, 0xfa, 0x3d, 0x18, 0x32, 0x83, 0xa1, 0xa7, 0x19, 0xf3, 0x24, 0x95, 0xdd, 0xfa, + 0x7a, 0xe1, 0x5d, 0x31, 0xa9, 0x7e, 0xc5, 0xc1, 0x60, 0x3b, 0xcd, 0xf5, 0xac, 0xf4, 0x88, 0x30, + 0x3a, 0x52, 0xce, 0xff, 0x4d, 0xd0, 0xaa, 0xfc, 0x59, 0xda, 0xf8, 0x61, 0x90, 0x03, 0xf6, 0x03, + 0xab, 0x76, 0x22, 0x78, 0xdc, 0x0f, 0xa3, 0x48, 0x10, 0x29, 0x9d, 0xaa, 0x9e, 0xcc, 0xf9, 0xf4, + 0xee, 0xa0, 0x9e, 0xdf, 0xc2, 0x43, 0xa3, 0xf4, 0x94, 0x60, 0x09, 0x0d, 0x76, 0x33, 0x3a, 0x77, + 0x75, 0x6a, 0xaf, 0xe6, 0x5e, 0xe9, 0xed, 0xdc, 0x03, 0xdf, 0xe7, 0x5e, 0x09, 0x36, 0x2d, 0x77, + 0xf3, 0xaf, 0x2e, 0xce, 0xf6, 0x07, 0x60, 0x55, 0x8e, 0x25, 0xb5, 0xdf, 0x03, 0x6b, 0x6f, 0xd3, + 0x95, 0xf8, 0xe8, 0xaf, 0x7b, 0x83, 0x36, 0xa7, 0x6e, 0x1c, 0xfe, 0x73, 0x48, 0x71, 0xc2, 0xf6, + 0xcb, 0xcf, 0xdf, 0xde, 0x94, 0xef, 0x76, 0xc0, 0x1d, 0x78, 0xeb, 0xc2, 0x4e, 0xab, 0x53, 0x3c, + 0xf5, 0x07, 0x44, 0x85, 0x3e, 0x96, 0x3a, 0x87, 0x76, 0x77, 0x7b, 0x1f, 0x97, 0x2e, 0x38, 0x5b, + 0xba, 0xe0, 0xeb, 0xd2, 0x05, 0xaf, 0x57, 0x6e, 0xe9, 0x6c, 0xe5, 0x96, 0xbe, 0xac, 0xdc, 0xd2, + 0xf3, 0x43, 0xca, 0xd4, 0x68, 0x32, 0x40, 0x43, 0x1e, 0xe3, 0x9e, 0x6e, 0xe9, 0xe0, 0x51, 0x38, + 0x90, 0x38, 0x7f, 0x33, 0x53, 0xff, 0x3e, 0x3e, 0xbd, 0x58, 0x65, 0x96, 0x12, 0x39, 0xa8, 0xea, + 0x5d, 0xbd, 0xf7, 0x33, 0x00, 0x00, 0xff, 0xff, 0x52, 0xf3, 0x24, 0x78, 0x60, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/types/query.pb.go b/x/interchainquery/types/query.pb.go index 635a0a3a7a..2183899f02 100644 --- a/x/interchainquery/types/query.pb.go +++ b/x/interchainquery/types/query.pb.go @@ -137,9 +137,9 @@ var fileDescriptor_b720c147b9144d5b = []byte{ 0x85, 0x8c, 0xf5, 0x83, 0xc1, 0xfa, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0x71, 0x44, 0x09, 0x5a, 0x68, 0x38, 0x05, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x65, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x4d, 0xf4, 0x2b, + 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x4d, 0xf5, 0x2b, 0x30, 0x8c, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xc7, 0x9c, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0xd8, 0x4c, 0xcf, 0x9f, 0x5a, 0x02, 0x00, 0x00, + 0xff, 0xff, 0x2b, 0xdc, 0x3d, 0xa9, 0x5a, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index b48afdc8c7..83837dd1f7 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -11,8 +11,8 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - "github.com/Stride-Labs/stride/v14/x/mint/client/cli" + "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v15/x/mint/client/cli" "github.com/cosmos/cosmos-sdk/client/flags" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go index 9a88633720..bcbbe047d5 100644 --- a/x/mint/client/cli/query.go +++ b/x/mint/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/mint/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index d6cf783240..043c6fbee9 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -14,8 +14,8 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/app" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" "github.com/cosmos/cosmos-sdk/testutil/network" ) diff --git a/x/mint/genesis.go b/x/mint/genesis.go index d30d1e135c..bd2a8f0427 100644 --- a/x/mint/genesis.go +++ b/x/mint/genesis.go @@ -3,8 +3,8 @@ package mint import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/mint/keeper" - "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/mint/keeper" + "github.com/Stride-Labs/stride/v15/x/mint/types" ) // InitGenesis new mint genesis. diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go index dfc5730050..a0be2ab527 100644 --- a/x/mint/keeper/grpc_query.go +++ b/x/mint/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/mint/types" ) var _ types.QueryServer = Querier{} diff --git a/x/mint/keeper/hooks.go b/x/mint/keeper/hooks.go index f0b468ffb1..6e36418596 100644 --- a/x/mint/keeper/hooks.go +++ b/x/mint/keeper/hooks.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/mint/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/mint/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go index 985094d409..37d4c0efe7 100644 --- a/x/mint/keeper/keeper.go +++ b/x/mint/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v14/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/mint/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/x/mint/module.go b/x/mint/module.go index 649f1e9fe1..adf8e6ae67 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -17,11 +17,11 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/mint/client/cli" - "github.com/Stride-Labs/stride/v14/x/mint/keeper" + "github.com/Stride-Labs/stride/v15/x/mint/client/cli" + "github.com/Stride-Labs/stride/v15/x/mint/keeper" - //"github.com/Stride-Labs/stride/v14/x/mint/simulation" - "github.com/Stride-Labs/stride/v14/x/mint/types" + //"github.com/Stride-Labs/stride/v15/x/mint/simulation" + "github.com/Stride-Labs/stride/v15/x/mint/types" ) var ( diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index b5c4bb68b8..fdca5be4a7 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -1,7 +1,7 @@ package types // noalias import ( - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/x/mint/types/genesis.pb.go b/x/mint/types/genesis.pb.go index f4e695e7bf..02974f1934 100644 --- a/x/mint/types/genesis.pb.go +++ b/x/mint/types/genesis.pb.go @@ -110,9 +110,9 @@ var fileDescriptor_f4521d63f51851f3 = []byte{ 0x5c, 0x26, 0x18, 0x22, 0xe1, 0x0a, 0x12, 0x77, 0xf2, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xbd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, - 0x60, 0xb0, 0x53, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x61, 0x56, 0x66, 0x68, 0xa2, 0x5f, + 0x60, 0xb0, 0x53, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x61, 0x56, 0x66, 0x68, 0xaa, 0x5f, 0x01, 0x09, 0xb9, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x98, 0x19, 0x03, 0x02, 0x00, - 0x00, 0xff, 0xff, 0x18, 0x33, 0x3d, 0xdf, 0xa3, 0x01, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xd8, 0x57, 0x15, 0xc8, 0xa3, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index a4661949c0..67783f5ed4 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -209,44 +209,44 @@ var fileDescriptor_5ad5fa4b1fdb702f = []byte{ // 634 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, 0x14, 0x8d, 0xbf, 0xb6, 0xa9, 0x3a, 0x9f, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, - 0xba, 0xa0, 0xb6, 0x4a, 0x59, 0x75, 0x85, 0xa2, 0xd2, 0x12, 0x09, 0xa4, 0xe0, 0xec, 0xba, 0xb1, - 0xfc, 0x33, 0x75, 0x46, 0x8d, 0x67, 0xac, 0x99, 0x71, 0x4a, 0x84, 0xc4, 0x0b, 0x94, 0x05, 0x4b, - 0x96, 0x3c, 0x4e, 0x97, 0x5d, 0xa2, 0x2e, 0x22, 0x94, 0xbc, 0x41, 0x36, 0x6c, 0xd1, 0xcc, 0x38, - 0xbf, 0x10, 0x89, 0x88, 0xae, 0xe2, 0x39, 0xf7, 0xce, 0x3d, 0x27, 0x67, 0xee, 0xbd, 0xc0, 0x64, - 0x9c, 0xa2, 0x18, 0xba, 0x29, 0xc2, 0xdc, 0x6d, 0x1f, 0x84, 0x90, 0x07, 0x07, 0xf2, 0xe0, 0x64, - 0x94, 0x70, 0xa2, 0x6f, 0xaa, 0xb8, 0x23, 0xa1, 0x22, 0xbe, 0xfd, 0x20, 0x21, 0x09, 0x91, 0x71, - 0x57, 0x7c, 0xa9, 0x54, 0xfb, 0x13, 0x28, 0xbf, 0x43, 0x98, 0x43, 0xaa, 0x73, 0xb0, 0x01, 0x33, - 0x12, 0x35, 0xfd, 0x8c, 0x92, 0x36, 0x62, 0x88, 0x60, 0x66, 0x68, 0xbb, 0xda, 0xde, 0x5a, 0xb5, - 0x76, 0xdd, 0xb5, 0x4a, 0xb7, 0x5d, 0xeb, 0x59, 0x82, 0x78, 0x33, 0x0f, 0x9d, 0x88, 0xa4, 0x6e, - 0x44, 0x58, 0x4a, 0x58, 0xf1, 0xb3, 0xcf, 0xe2, 0x0b, 0x97, 0x77, 0x32, 0xc8, 0x9c, 0x63, 0x18, - 0x0d, 0xba, 0x56, 0xa5, 0x13, 0xa4, 0xad, 0x23, 0x7b, 0xb6, 0x9e, 0xed, 0xad, 0x4b, 0xa8, 0x3e, - 0x46, 0x7e, 0x2e, 0x81, 0xca, 0x31, 0x12, 0x7a, 0xc3, 0x9c, 0x23, 0x82, 0xeb, 0x94, 0x64, 0x84, - 0x8a, 0x2f, 0xa6, 0x9f, 0x81, 0x55, 0xc6, 0x83, 0x0b, 0x84, 0x93, 0x42, 0xc8, 0xab, 0x85, 0x85, - 0xdc, 0x53, 0x42, 0x8a, 0x32, 0xb6, 0x37, 0x2c, 0xa8, 0x7f, 0x04, 0x5b, 0x11, 0x49, 0xd3, 0x1c, - 0x23, 0xde, 0xf1, 0x33, 0x42, 0x5a, 0x7e, 0x42, 0xc9, 0x25, 0x6f, 0x1a, 0xff, 0x49, 0xa6, 0xd3, - 0x85, 0x99, 0xb6, 0x14, 0xd3, 0x74, 0x51, 0xdb, 0xdb, 0x1c, 0x01, 0x75, 0x42, 0x5a, 0xa7, 0x92, - 0x43, 0xff, 0xac, 0x01, 0x73, 0x86, 0x9d, 0xc1, 0x28, 0xa7, 0xe2, 0x14, 0xe6, 0x71, 0x02, 0xb9, - 0xb1, 0x74, 0xb7, 0x32, 0x76, 0xa6, 0x64, 0x34, 0x0a, 0xb2, 0xaa, 0xe4, 0xd2, 0x39, 0xb8, 0xcf, - 0x38, 0x0d, 0x38, 0x4c, 0x50, 0xe4, 0x53, 0xc8, 0x20, 0x6d, 0x43, 0x63, 0xf9, 0x6e, 0x05, 0x6c, - 0x8c, 0x18, 0x3c, 0x45, 0x60, 0xdf, 0xae, 0x80, 0x72, 0x3d, 0xa0, 0x41, 0xca, 0xf4, 0x47, 0x00, - 0x88, 0x56, 0xf5, 0x63, 0x88, 0x49, 0xaa, 0xde, 0xda, 0x5b, 0x13, 0xc8, 0xb1, 0x00, 0xf4, 0x2b, - 0x0d, 0x18, 0x09, 0xc4, 0x90, 0x21, 0xe6, 0xff, 0xd6, 0xa2, 0xea, 0xbd, 0xde, 0x2f, 0xac, 0xd3, - 0x52, 0x3a, 0xe7, 0xd5, 0xb5, 0xbd, 0x87, 0x45, 0xe8, 0xf5, 0x74, 0xc7, 0xea, 0x27, 0xc3, 0x39, - 0x41, 0x31, 0xc4, 0x1c, 0x9d, 0x23, 0x48, 0x8b, 0xd7, 0xda, 0x99, 0xed, 0xfc, 0x71, 0xc6, 0xb0, - 0xf3, 0x6b, 0x23, 0x44, 0x0f, 0xc1, 0x36, 0x85, 0x71, 0x1e, 0x89, 0x5e, 0xf7, 0x33, 0x48, 0x11, - 0x89, 0x7d, 0x84, 0x95, 0x10, 0x26, 0xed, 0x5f, 0xaa, 0x3e, 0x1d, 0x74, 0xad, 0xc7, 0xaa, 0xe2, - 0xfc, 0x5c, 0xdb, 0xab, 0x8c, 0x82, 0x75, 0x19, 0xab, 0x61, 0x29, 0x9a, 0x89, 0x99, 0x1e, 0xdf, - 0x3b, 0x0f, 0x22, 0x4e, 0xa8, 0xb1, 0xf2, 0x6f, 0x33, 0x3d, 0x5b, 0xcf, 0xf6, 0xd6, 0x47, 0xd0, - 0x89, 0x44, 0xf4, 0x14, 0x18, 0xf1, 0xc4, 0x48, 0x0b, 0x57, 0x87, 0x33, 0x6d, 0x94, 0x77, 0xb5, - 0xbd, 0xff, 0x5f, 0x3c, 0x77, 0xfe, 0xb0, 0xa1, 0x9c, 0x39, 0x7b, 0xa0, 0xba, 0x2c, 0xb4, 0x7a, - 0x95, 0x78, 0xce, 0x9a, 0xb8, 0xd2, 0xc0, 0x9e, 0xa8, 0x83, 0x70, 0xe2, 0x53, 0x78, 0x19, 0xd0, - 0x98, 0xf9, 0x53, 0xfc, 0x8c, 0x07, 0x94, 0x2b, 0xb3, 0x8c, 0x55, 0xe9, 0xeb, 0xe1, 0xa0, 0x6b, - 0xb9, 0xea, 0xff, 0xfc, 0xed, 0x4d, 0xdb, 0x7b, 0x52, 0xa4, 0x7a, 0x2a, 0x73, 0x52, 0x6d, 0x43, - 0xe4, 0x49, 0xcf, 0x8f, 0x96, 0xbf, 0x7e, 0xb3, 0x4a, 0xd5, 0x37, 0xd7, 0x3d, 0x53, 0xbb, 0xe9, - 0x99, 0xda, 0x8f, 0x9e, 0xa9, 0x7d, 0xe9, 0x9b, 0xa5, 0x9b, 0xbe, 0x59, 0xfa, 0xde, 0x37, 0x4b, - 0x67, 0xce, 0x84, 0xe1, 0x0d, 0x69, 0xc2, 0xfe, 0xdb, 0x20, 0x64, 0x6e, 0xb1, 0xd2, 0xdb, 0x07, - 0x2f, 0xdd, 0x0f, 0x6a, 0xb1, 0x4b, 0xf3, 0xc3, 0xb2, 0xdc, 0xd3, 0x87, 0xbf, 0x02, 0x00, 0x00, - 0xff, 0xff, 0xd1, 0x45, 0x48, 0x5a, 0xf4, 0x05, 0x00, 0x00, + 0xba, 0xa0, 0xb6, 0x4a, 0xc5, 0xa6, 0x2b, 0x14, 0x95, 0x96, 0x48, 0x20, 0x05, 0x67, 0xd7, 0x8d, + 0xe5, 0x9f, 0xa9, 0x33, 0x6a, 0x3c, 0x63, 0xcd, 0x8c, 0x53, 0x22, 0x24, 0x5e, 0xa0, 0x2c, 0x58, + 0xb2, 0xe4, 0x71, 0xba, 0xec, 0x12, 0x75, 0x11, 0xa1, 0xe4, 0x0d, 0xb2, 0x61, 0x8b, 0x66, 0xc6, + 0xf9, 0x85, 0x48, 0x44, 0x74, 0x15, 0xcf, 0xb9, 0x77, 0xee, 0x39, 0x39, 0x73, 0xef, 0x05, 0x26, + 0xe3, 0x14, 0xc5, 0xd0, 0x4d, 0x11, 0xe6, 0x6e, 0xfb, 0x20, 0x84, 0x3c, 0x38, 0x90, 0x07, 0x27, + 0xa3, 0x84, 0x13, 0x7d, 0x53, 0xc5, 0x1d, 0x09, 0x15, 0xf1, 0xed, 0x07, 0x09, 0x49, 0x88, 0x8c, + 0xbb, 0xe2, 0x4b, 0xa5, 0xda, 0x9f, 0x40, 0xf9, 0x1d, 0xc2, 0x1c, 0x52, 0x9d, 0x83, 0x0d, 0x98, + 0x91, 0xa8, 0xe9, 0x67, 0x94, 0xb4, 0x11, 0x43, 0x04, 0x33, 0x43, 0xdb, 0xd5, 0xf6, 0xd6, 0xaa, + 0xb5, 0xeb, 0xae, 0x55, 0xba, 0xed, 0x5a, 0xcf, 0x12, 0xc4, 0x9b, 0x79, 0xe8, 0x44, 0x24, 0x75, + 0x23, 0xc2, 0x52, 0xc2, 0x8a, 0x9f, 0x7d, 0x16, 0x5f, 0xb8, 0xbc, 0x93, 0x41, 0xe6, 0x1c, 0xc3, + 0x68, 0xd0, 0xb5, 0x2a, 0x9d, 0x20, 0x6d, 0x1d, 0xd9, 0xb3, 0xf5, 0x6c, 0x6f, 0x5d, 0x42, 0xf5, + 0x31, 0xf2, 0x73, 0x09, 0x54, 0x8e, 0x91, 0xd0, 0x1b, 0xe6, 0x1c, 0x11, 0x5c, 0xa7, 0x24, 0x23, + 0x54, 0x7c, 0x31, 0xfd, 0x0c, 0xac, 0x32, 0x1e, 0x5c, 0x20, 0x9c, 0x14, 0x42, 0x5e, 0x2d, 0x2c, + 0xe4, 0x9e, 0x12, 0x52, 0x94, 0xb1, 0xbd, 0x61, 0x41, 0xfd, 0x23, 0xd8, 0x8a, 0x48, 0x9a, 0xe6, + 0x18, 0xf1, 0x8e, 0x9f, 0x11, 0xd2, 0xf2, 0x13, 0x4a, 0x2e, 0x79, 0xd3, 0xf8, 0x4f, 0x32, 0x9d, + 0x2e, 0xcc, 0xb4, 0xa5, 0x98, 0xa6, 0x8b, 0xda, 0xde, 0xe6, 0x08, 0xa8, 0x13, 0xd2, 0x3a, 0x95, + 0x1c, 0xfa, 0x67, 0x0d, 0x98, 0x33, 0xec, 0x0c, 0x46, 0x39, 0x15, 0xa7, 0x30, 0x8f, 0x13, 0xc8, + 0x8d, 0xa5, 0xbb, 0x95, 0xb1, 0x33, 0x25, 0xa3, 0x51, 0x90, 0x55, 0x25, 0x97, 0xce, 0xc1, 0x7d, + 0xc6, 0x69, 0xc0, 0x61, 0x82, 0x22, 0x9f, 0x42, 0x06, 0x69, 0x1b, 0x1a, 0xcb, 0x77, 0x2b, 0x60, + 0x63, 0xc4, 0xe0, 0x29, 0x02, 0xfb, 0x76, 0x05, 0x94, 0xeb, 0x01, 0x0d, 0x52, 0xa6, 0x3f, 0x02, + 0x40, 0xb4, 0xaa, 0x1f, 0x43, 0x4c, 0x52, 0xf5, 0xd6, 0xde, 0x9a, 0x40, 0x8e, 0x05, 0xa0, 0x5f, + 0x69, 0xc0, 0x48, 0x20, 0x86, 0x0c, 0x31, 0xff, 0xb7, 0x16, 0x55, 0xef, 0xf5, 0x7e, 0x61, 0x9d, + 0x96, 0xd2, 0x39, 0xaf, 0xae, 0xed, 0x3d, 0x2c, 0x42, 0xaf, 0xa7, 0x3b, 0x56, 0x3f, 0x19, 0xce, + 0x09, 0x8a, 0x21, 0xe6, 0xe8, 0x1c, 0x41, 0x5a, 0xbc, 0xd6, 0xce, 0x6c, 0xe7, 0x8f, 0x33, 0x86, + 0x9d, 0x5f, 0x1b, 0x21, 0x7a, 0x08, 0xb6, 0x29, 0x8c, 0xf3, 0x48, 0xf4, 0xba, 0x9f, 0x41, 0x8a, + 0x48, 0xec, 0x23, 0xac, 0x84, 0x30, 0x69, 0xff, 0x52, 0xf5, 0xe9, 0xa0, 0x6b, 0x3d, 0x56, 0x15, + 0xe7, 0xe7, 0xda, 0x5e, 0x65, 0x14, 0xac, 0xcb, 0x58, 0x0d, 0x4b, 0xd1, 0x4c, 0xcc, 0xf4, 0xf8, + 0xde, 0x79, 0x10, 0x71, 0x42, 0x8d, 0x95, 0x7f, 0x9b, 0xe9, 0xd9, 0x7a, 0xb6, 0xb7, 0x3e, 0x82, + 0x4e, 0x24, 0xa2, 0xa7, 0xc0, 0x88, 0x27, 0x46, 0x5a, 0xb8, 0x3a, 0x9c, 0x69, 0xa3, 0xbc, 0xab, + 0xed, 0xfd, 0xff, 0xe2, 0xb9, 0xf3, 0x87, 0x0d, 0xe5, 0xcc, 0xd9, 0x03, 0xd5, 0x65, 0xa1, 0xd5, + 0xab, 0xc4, 0x73, 0xd6, 0xc4, 0x95, 0x06, 0xf6, 0x44, 0x1d, 0x84, 0x13, 0x9f, 0xc2, 0xcb, 0x80, + 0xc6, 0xcc, 0x9f, 0xe2, 0x67, 0x3c, 0xa0, 0x5c, 0x99, 0x65, 0xac, 0x4a, 0x5f, 0x0f, 0x07, 0x5d, + 0xcb, 0x55, 0xff, 0xe7, 0x6f, 0x6f, 0xda, 0xde, 0x93, 0x22, 0xd5, 0x53, 0x99, 0x93, 0x6a, 0x1b, + 0x22, 0x4f, 0x7a, 0x7e, 0xb4, 0xfc, 0xf5, 0x9b, 0x55, 0xaa, 0xbe, 0xb9, 0xee, 0x99, 0xda, 0x4d, + 0xcf, 0xd4, 0x7e, 0xf4, 0x4c, 0xed, 0x4b, 0xdf, 0x2c, 0xdd, 0xf4, 0xcd, 0xd2, 0xf7, 0xbe, 0x59, + 0x3a, 0x73, 0x26, 0x0c, 0x6f, 0x48, 0x13, 0xf6, 0xdf, 0x06, 0x21, 0x73, 0x8b, 0x95, 0xde, 0x3e, + 0x78, 0xe9, 0x7e, 0x50, 0x8b, 0x5d, 0x9a, 0x1f, 0x96, 0xe5, 0x9e, 0x3e, 0xfc, 0x15, 0x00, 0x00, + 0xff, 0xff, 0x11, 0x21, 0x60, 0x4d, 0xf4, 0x05, 0x00, 0x00, } func (m *Minter) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/params.go b/x/mint/types/params.go index 278b476574..c9cb4aaefa 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -7,7 +7,7 @@ import ( yaml "gopkg.in/yaml.v2" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index c2c86cf96b..0d4a421d17 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -202,31 +202,31 @@ func init() { proto.RegisterFile("stride/mint/v1beta1/query.proto", fileDescript var fileDescriptor_b5a371e09ad2a41a = []byte{ // 392 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xfa, 0x40, - 0x1c, 0x6d, 0xc9, 0xff, 0xcf, 0x70, 0x9a, 0x60, 0x0e, 0x62, 0x4c, 0xc1, 0x83, 0x74, 0x40, 0x16, - 0xee, 0x2c, 0xba, 0xb8, 0x12, 0x4d, 0x1c, 0x1c, 0x10, 0x27, 0x5d, 0x4c, 0x5b, 0x2e, 0xa5, 0xd1, - 0xf6, 0x4a, 0xef, 0x20, 0x76, 0xf5, 0x13, 0x98, 0xb8, 0xbb, 0xf8, 0x65, 0x18, 0x49, 0x5c, 0x8c, - 0x03, 0x31, 0xe0, 0x07, 0x31, 0xbd, 0x56, 0x63, 0xb1, 0xc6, 0x38, 0xb5, 0xb9, 0xf7, 0x7e, 0xef, - 0xbd, 0xdf, 0xbb, 0x03, 0x75, 0x2e, 0x42, 0x77, 0x40, 0x89, 0xe7, 0xfa, 0x82, 0x4c, 0x0c, 0x8b, - 0x0a, 0xd3, 0x20, 0xa3, 0x31, 0x0d, 0x23, 0x1c, 0x84, 0x4c, 0x30, 0x58, 0x4e, 0x08, 0x38, 0x26, - 0xe0, 0x94, 0xa0, 0x55, 0x1c, 0xe6, 0x30, 0x89, 0x93, 0xf8, 0x2f, 0xa1, 0x6a, 0x35, 0x87, 0x31, - 0xe7, 0x9a, 0x12, 0x33, 0x70, 0x89, 0xe9, 0xfb, 0x4c, 0x98, 0xc2, 0x65, 0x3e, 0x4f, 0x51, 0x94, - 0xe7, 0x24, 0x55, 0x25, 0xae, 0x57, 0x00, 0x3c, 0x8d, 0x7d, 0x7b, 0x66, 0x68, 0x7a, 0xbc, 0x4f, - 0x47, 0x63, 0xca, 0x85, 0xde, 0x03, 0xe5, 0xcc, 0x29, 0x0f, 0x98, 0xcf, 0x29, 0x3c, 0x00, 0xc5, - 0x40, 0x9e, 0x6c, 0xa9, 0x0d, 0xb5, 0xb5, 0xd6, 0xa9, 0xe2, 0x9c, 0x98, 0x38, 0x19, 0xea, 0xfe, - 0x9b, 0xce, 0xeb, 0x4a, 0x3f, 0x1d, 0xd0, 0xb7, 0x41, 0x55, 0x2a, 0x1e, 0x05, 0xcc, 0x1e, 0xf6, - 0x42, 0x36, 0x71, 0x79, 0x9c, 0xf2, 0xc3, 0x30, 0x02, 0xb5, 0x7c, 0x38, 0x75, 0x3e, 0x07, 0x1b, - 0x34, 0x86, 0x2e, 0x83, 0x4f, 0x4c, 0x66, 0x58, 0xef, 0xe2, 0xd8, 0xe6, 0x65, 0x5e, 0x6f, 0x3a, - 0xae, 0x18, 0x8e, 0x2d, 0x6c, 0x33, 0x8f, 0xd8, 0x8c, 0x7b, 0x8c, 0xa7, 0x9f, 0x36, 0x1f, 0x5c, - 0x11, 0x11, 0x05, 0x94, 0xe3, 0x43, 0x6a, 0xf7, 0x4b, 0x34, 0x6b, 0xd1, 0x79, 0x2c, 0x80, 0xff, - 0xd2, 0x1b, 0x46, 0xa0, 0x98, 0x64, 0x87, 0x3b, 0xb9, 0x8b, 0x7d, 0x2f, 0x4a, 0x6b, 0xfd, 0x4e, - 0x4c, 0x36, 0xd0, 0x6b, 0xb7, 0x4f, 0x6f, 0xf7, 0x85, 0x4d, 0x58, 0xc9, 0x5e, 0x45, 0x52, 0x0f, - 0x7c, 0x50, 0x41, 0x69, 0x65, 0x77, 0xb8, 0xfb, 0xb3, 0x76, 0x7e, 0x8b, 0x9a, 0xf1, 0x87, 0x89, - 0x34, 0x56, 0x53, 0xc6, 0x6a, 0x40, 0x94, 0x8d, 0xb5, 0x5a, 0x76, 0xf7, 0x78, 0xba, 0x40, 0xea, - 0x6c, 0x81, 0xd4, 0xd7, 0x05, 0x52, 0xef, 0x96, 0x48, 0x99, 0x2d, 0x91, 0xf2, 0xbc, 0x44, 0xca, - 0x05, 0xfe, 0x52, 0xfc, 0x99, 0xb4, 0x6f, 0x9f, 0x98, 0x16, 0x27, 0xe9, 0xc3, 0x9b, 0x18, 0xfb, - 0xe4, 0x26, 0x11, 0x97, 0x97, 0x60, 0x15, 0xe5, 0xc3, 0xdb, 0x7b, 0x0f, 0x00, 0x00, 0xff, 0xff, - 0x02, 0x23, 0x41, 0xb1, 0x04, 0x03, 0x00, 0x00, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4b, 0xfb, 0x40, + 0x1c, 0x4d, 0xca, 0xff, 0xdf, 0xe1, 0x14, 0x2a, 0xd7, 0x22, 0x92, 0xd6, 0x6b, 0xc9, 0x50, 0xbb, + 0xf4, 0xce, 0x54, 0x1c, 0x5c, 0x8b, 0x82, 0x83, 0x43, 0xad, 0x93, 0x2e, 0x92, 0xa4, 0x47, 0x1a, + 0x34, 0xb9, 0x34, 0x77, 0x2d, 0x66, 0xf5, 0x13, 0x08, 0xee, 0x2e, 0x7e, 0x99, 0x8e, 0x05, 0x17, + 0x71, 0x28, 0xd2, 0xfa, 0x41, 0x24, 0x97, 0x28, 0xa6, 0x46, 0xc4, 0x29, 0xe1, 0xde, 0xfb, 0xbd, + 0xf7, 0x7e, 0xef, 0x0e, 0xd4, 0xb9, 0x08, 0xdd, 0x01, 0x25, 0x9e, 0xeb, 0x0b, 0x32, 0x31, 0x2c, + 0x2a, 0x4c, 0x83, 0x8c, 0xc6, 0x34, 0x8c, 0x70, 0x10, 0x32, 0xc1, 0x60, 0x39, 0x21, 0xe0, 0x98, + 0x80, 0x53, 0x82, 0x56, 0x71, 0x98, 0xc3, 0x24, 0x4e, 0xe2, 0xbf, 0x84, 0xaa, 0xd5, 0x1c, 0xc6, + 0x9c, 0x6b, 0x4a, 0xcc, 0xc0, 0x25, 0xa6, 0xef, 0x33, 0x61, 0x0a, 0x97, 0xf9, 0x3c, 0x45, 0x51, + 0x9e, 0x93, 0x54, 0x95, 0xb8, 0x5e, 0x01, 0xf0, 0x34, 0xf6, 0xed, 0x99, 0xa1, 0xe9, 0xf1, 0x3e, + 0x1d, 0x8d, 0x29, 0x17, 0x7a, 0x0f, 0x94, 0x33, 0xa7, 0x3c, 0x60, 0x3e, 0xa7, 0xf0, 0x00, 0x14, + 0x03, 0x79, 0xb2, 0xa5, 0x36, 0xd4, 0xd6, 0x5a, 0xa7, 0x8a, 0x73, 0x62, 0xe2, 0x64, 0xa8, 0xfb, + 0x6f, 0x3a, 0xaf, 0x2b, 0xfd, 0x74, 0x40, 0xdf, 0x06, 0x55, 0xa9, 0x78, 0x14, 0x30, 0x7b, 0xd8, + 0x0b, 0xd9, 0xc4, 0xe5, 0x71, 0xca, 0x0f, 0xc3, 0x08, 0xd4, 0xf2, 0xe1, 0xd4, 0xf9, 0x1c, 0x6c, + 0xd0, 0x18, 0xba, 0x0c, 0x3e, 0x31, 0x99, 0x61, 0xbd, 0x8b, 0x63, 0x9b, 0x97, 0x79, 0xbd, 0xe9, + 0xb8, 0x62, 0x38, 0xb6, 0xb0, 0xcd, 0x3c, 0x62, 0x33, 0xee, 0x31, 0x9e, 0x7e, 0xda, 0x7c, 0x70, + 0x45, 0x44, 0x14, 0x50, 0x8e, 0x0f, 0xa9, 0xdd, 0x2f, 0xd1, 0xac, 0x45, 0xe7, 0xb1, 0x00, 0xfe, + 0x4b, 0x6f, 0x18, 0x81, 0x62, 0x92, 0x1d, 0xee, 0xe4, 0x2e, 0xf6, 0xbd, 0x28, 0xad, 0xf5, 0x3b, + 0x31, 0xd9, 0x40, 0xaf, 0xdd, 0x3e, 0xbd, 0xdd, 0x17, 0x36, 0x61, 0x25, 0x7b, 0x15, 0x49, 0x3d, + 0xf0, 0x41, 0x05, 0xa5, 0x95, 0xdd, 0xe1, 0xee, 0xcf, 0xda, 0xf9, 0x2d, 0x6a, 0xc6, 0x1f, 0x26, + 0xd2, 0x58, 0x4d, 0x19, 0xab, 0x01, 0x51, 0x36, 0xd6, 0x6a, 0xd9, 0xdd, 0xe3, 0xe9, 0x02, 0xa9, + 0xb3, 0x05, 0x52, 0x5f, 0x17, 0x48, 0xbd, 0x5b, 0x22, 0x65, 0xb6, 0x44, 0xca, 0xf3, 0x12, 0x29, + 0x17, 0xf8, 0x4b, 0xf1, 0x67, 0xd2, 0xbe, 0x7d, 0x62, 0x5a, 0x9c, 0xa4, 0x0f, 0x6f, 0x62, 0xec, + 0x93, 0x9b, 0x44, 0x5c, 0x5e, 0x82, 0x55, 0x94, 0x0f, 0x6f, 0xef, 0x3d, 0x00, 0x00, 0xff, 0xff, + 0xc2, 0x47, 0x69, 0xa6, 0x04, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/client/cli/query.go b/x/ratelimit/client/cli/query.go index 56b94bb0a7..42fd5fc21b 100644 --- a/x/ratelimit/client/cli/query.go +++ b/x/ratelimit/client/cli/query.go @@ -11,7 +11,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/client/cli/tx.go b/x/ratelimit/client/cli/tx.go index 03fe4f660b..d1efb62e81 100644 --- a/x/ratelimit/client/cli/tx.go +++ b/x/ratelimit/client/cli/tx.go @@ -19,7 +19,7 @@ import ( govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // Parse the gov proposal file into a proto message diff --git a/x/ratelimit/client/proposal_handler.go b/x/ratelimit/client/proposal_handler.go index d37dff06ea..dda362d912 100644 --- a/x/ratelimit/client/proposal_handler.go +++ b/x/ratelimit/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v14/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v15/x/ratelimit/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/ratelimit/genesis.go b/x/ratelimit/genesis.go index 9778ef8ef6..6c948a3522 100644 --- a/x/ratelimit/genesis.go +++ b/x/ratelimit/genesis.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/ratelimit/genesis_test.go b/x/ratelimit/genesis_test.go index 0b4961b8ff..24832a54dd 100644 --- a/x/ratelimit/genesis_test.go +++ b/x/ratelimit/genesis_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/ratelimit" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/ratelimit" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func createRateLimits() []types.RateLimit { diff --git a/x/ratelimit/handler.go b/x/ratelimit/handler.go index f5bf7f5851..6a63db556c 100644 --- a/x/ratelimit/handler.go +++ b/x/ratelimit/handler.go @@ -10,9 +10,9 @@ import ( channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // NewMessageHandler returns ratelimit module messages diff --git a/x/ratelimit/ibc_middleware.go b/x/ratelimit/ibc_middleware.go index c04e2fcf2c..89200436a7 100644 --- a/x/ratelimit/ibc_middleware.go +++ b/x/ratelimit/ibc_middleware.go @@ -3,7 +3,7 @@ package ratelimit import ( "fmt" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" diff --git a/x/ratelimit/keeper/gov/gov.go b/x/ratelimit/keeper/gov/gov.go index 5e78e848c6..8e2e276253 100644 --- a/x/ratelimit/keeper/gov/gov.go +++ b/x/ratelimit/keeper/gov/gov.go @@ -6,8 +6,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // Adds a new rate limit. Fails if the rate limit already exists or the channel value is 0 diff --git a/x/ratelimit/keeper/gov/gov_test.go b/x/ratelimit/keeper/gov/gov_test.go index bc1b08ba42..1989e329be 100644 --- a/x/ratelimit/keeper/gov/gov_test.go +++ b/x/ratelimit/keeper/gov/gov_test.go @@ -12,10 +12,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/app/apptesting" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/grpc_query.go b/x/ratelimit/keeper/grpc_query.go index 5b53c696b4..4fe25b0a9d 100644 --- a/x/ratelimit/keeper/grpc_query.go +++ b/x/ratelimit/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/ratelimit/keeper/grpc_query_test.go b/x/ratelimit/keeper/grpc_query_test.go index bca2384449..d9066281d7 100644 --- a/x/ratelimit/keeper/grpc_query_test.go +++ b/x/ratelimit/keeper/grpc_query_test.go @@ -11,7 +11,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // Add three rate limits on different channels diff --git a/x/ratelimit/keeper/hooks.go b/x/ratelimit/keeper/hooks.go index 7c8059679a..60d3666a38 100644 --- a/x/ratelimit/keeper/hooks.go +++ b/x/ratelimit/keeper/hooks.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // Before each hour epoch, check if any of the rate limits have expired, diff --git a/x/ratelimit/keeper/hooks_test.go b/x/ratelimit/keeper/hooks_test.go index 84b1ad2f65..3735a14142 100644 --- a/x/ratelimit/keeper/hooks_test.go +++ b/x/ratelimit/keeper/hooks_test.go @@ -5,8 +5,8 @@ import ( sdkmath "cosmossdk.io/math" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // Store a rate limit with a non-zero flow for each duration diff --git a/x/ratelimit/keeper/keeper.go b/x/ratelimit/keeper/keeper.go index d9e3ff8d5b..15252ff978 100644 --- a/x/ratelimit/keeper/keeper.go +++ b/x/ratelimit/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) type ( diff --git a/x/ratelimit/keeper/keeper_test.go b/x/ratelimit/keeper/keeper_test.go index 599b9c950b..82f248745a 100644 --- a/x/ratelimit/keeper/keeper_test.go +++ b/x/ratelimit/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/packet.go b/x/ratelimit/keeper/packet.go index 4937891ff6..fb33455b7d 100644 --- a/x/ratelimit/keeper/packet.go +++ b/x/ratelimit/keeper/packet.go @@ -14,9 +14,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v14/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) type RateLimitedPacketInfo struct { diff --git a/x/ratelimit/keeper/packet_test.go b/x/ratelimit/keeper/packet_test.go index c9a743a245..c3979632e8 100644 --- a/x/ratelimit/keeper/packet_test.go +++ b/x/ratelimit/keeper/packet_test.go @@ -13,8 +13,8 @@ import ( tmbytes "github.com/cometbft/cometbft/libs/bytes" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/keeper/params.go b/x/ratelimit/keeper/params.go index 28b9c68c64..a50072a73b 100644 --- a/x/ratelimit/keeper/params.go +++ b/x/ratelimit/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // GetParams get all parameters as types.Params diff --git a/x/ratelimit/keeper/rate_limit.go b/x/ratelimit/keeper/rate_limit.go index 0081937036..2a65ccba20 100644 --- a/x/ratelimit/keeper/rate_limit.go +++ b/x/ratelimit/keeper/rate_limit.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // Get the rate limit byte key built from the denom and channelId diff --git a/x/ratelimit/keeper/rate_limit_test.go b/x/ratelimit/keeper/rate_limit_test.go index 57c8babe1e..6c328b4914 100644 --- a/x/ratelimit/keeper/rate_limit_test.go +++ b/x/ratelimit/keeper/rate_limit_test.go @@ -7,9 +7,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/module.go b/x/ratelimit/module.go index 92ae2539ff..725ba04900 100644 --- a/x/ratelimit/module.go +++ b/x/ratelimit/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/ratelimit/client/cli" - "github.com/Stride-Labs/stride/v14/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) var ( diff --git a/x/ratelimit/types/flow_test.go b/x/ratelimit/types/flow_test.go index a50e7399f0..4aa5ace05b 100644 --- a/x/ratelimit/types/flow_test.go +++ b/x/ratelimit/types/flow_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func TestAddInflow(t *testing.T) { diff --git a/x/ratelimit/types/genesis.pb.go b/x/ratelimit/types/genesis.pb.go index ef23eb4d1f..958b9ca3da 100644 --- a/x/ratelimit/types/genesis.pb.go +++ b/x/ratelimit/types/genesis.pb.go @@ -110,29 +110,29 @@ var fileDescriptor_9e224b293959881c = []byte{ // 403 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6b, 0xd4, 0x40, 0x18, 0x86, 0x37, 0xae, 0x16, 0x9c, 0x55, 0xd0, 0x41, 0x31, 0xae, 0x98, 0x86, 0xe0, 0x21, 0x97, - 0x26, 0xd8, 0x7a, 0xf2, 0x66, 0x10, 0x7a, 0xa9, 0x65, 0x49, 0x0e, 0x8a, 0x97, 0x30, 0xc9, 0x7c, - 0xa4, 0x43, 0x37, 0x93, 0x38, 0xdf, 0xac, 0xb5, 0x7f, 0x42, 0xfc, 0x4b, 0xde, 0x7a, 0xec, 0xd1, - 0x53, 0x91, 0xdd, 0x7f, 0xe0, 0x2f, 0x90, 0xcc, 0x8c, 0x75, 0x31, 0xf6, 0x36, 0xf0, 0xbe, 0xcf, - 0xf3, 0x86, 0xf0, 0x91, 0x00, 0xb5, 0x12, 0x1c, 0x52, 0xc5, 0x34, 0x2c, 0x45, 0x2b, 0x74, 0xda, - 0x80, 0x04, 0x14, 0x98, 0xf4, 0xaa, 0xd3, 0x1d, 0x7d, 0x60, 0xf3, 0xe4, 0x3a, 0x9f, 0x3f, 0x6a, - 0xba, 0xa6, 0x33, 0x61, 0x3a, 0xbc, 0x6c, 0x6f, 0xfe, 0x7c, 0xe4, 0xe9, 0x99, 0x62, 0xad, 0xd3, - 0xcc, 0xc3, 0x51, 0x7c, 0xfd, 0xb2, 0x8d, 0xe8, 0xfb, 0x94, 0xdc, 0x3b, 0xb4, 0xd3, 0x85, 0x66, - 0x1a, 0xe8, 0x21, 0xd9, 0xb1, 0x0a, 0xdf, 0x0b, 0xbd, 0x78, 0xb6, 0xef, 0x27, 0xff, 0x7e, 0x4a, - 0xb2, 0x30, 0x79, 0xf6, 0xf8, 0xe2, 0x6a, 0x77, 0xf2, 0xeb, 0x6a, 0xf7, 0xfe, 0x39, 0x6b, 0x97, - 0xaf, 0x23, 0x4b, 0x45, 0xb9, 0xc3, 0xe9, 0x07, 0x32, 0x1b, 0x90, 0xd2, 0x30, 0xe8, 0xdf, 0x0a, - 0xa7, 0xf1, 0x6c, 0xff, 0xd9, 0xd8, 0x96, 0x33, 0x0d, 0x47, 0xc3, 0x2b, 0x9b, 0x3b, 0x21, 0xb5, - 0xc2, 0x2d, 0x3a, 0xca, 0x89, 0xfa, 0x53, 0x43, 0xfa, 0xd5, 0x23, 0x4f, 0xcf, 0x4e, 0xc4, 0x20, - 0x40, 0x0d, 0xbc, 0x64, 0x9c, 0x2b, 0x40, 0x2c, 0x7b, 0x26, 0x14, 0xfa, 0x53, 0x33, 0x14, 0x8f, - 0x87, 0xde, 0xff, 0x45, 0xde, 0x58, 0x62, 0xc1, 0x84, 0xca, 0x62, 0xb7, 0x1a, 0xda, 0xd5, 0x1b, - 0xc5, 0x51, 0xfe, 0xe4, 0xec, 0xbf, 0x06, 0xa4, 0x7b, 0x84, 0x56, 0x4b, 0x56, 0x9f, 0x3a, 0x8c, - 0x83, 0xec, 0x5a, 0xf4, 0x6f, 0x87, 0xd3, 0xf8, 0x6e, 0xfe, 0x70, 0x2b, 0x79, 0x6b, 0x02, 0x7a, - 0x4c, 0x5e, 0xf4, 0x20, 0xb9, 0x90, 0x4d, 0x89, 0x20, 0x79, 0xd9, 0xb3, 0xfa, 0x14, 0x74, 0x89, - 0xf0, 0x69, 0x05, 0xb2, 0x86, 0x52, 0xae, 0xda, 0x0a, 0x14, 0xfa, 0x77, 0x8c, 0x20, 0x74, 0xdd, - 0x02, 0x24, 0x5f, 0x98, 0x66, 0xe1, 0x8a, 0xc7, 0xb6, 0x97, 0xbd, 0xbb, 0x58, 0x07, 0xde, 0xe5, - 0x3a, 0xf0, 0x7e, 0xae, 0x03, 0xef, 0xdb, 0x26, 0x98, 0x5c, 0x6e, 0x82, 0xc9, 0x8f, 0x4d, 0x30, - 0xf9, 0x78, 0xd0, 0x08, 0x7d, 0xb2, 0xaa, 0x92, 0xba, 0x6b, 0xd3, 0xc2, 0xfc, 0x8f, 0xbd, 0x23, - 0x56, 0x61, 0xea, 0xce, 0xe2, 0xf3, 0xcb, 0x57, 0xe9, 0x97, 0xad, 0xe3, 0xd0, 0xe7, 0x3d, 0x60, - 0xb5, 0x63, 0x2e, 0xe3, 0xe0, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x62, 0xc6, 0x00, 0x9e, 0xa4, + 0x26, 0xd8, 0xe2, 0xc5, 0x9b, 0x41, 0xe8, 0xa5, 0x96, 0x25, 0x39, 0x28, 0x5e, 0xc2, 0x24, 0xf3, + 0x91, 0x0e, 0xdd, 0x4c, 0xe2, 0x7c, 0xb3, 0xd6, 0xfe, 0x09, 0xf1, 0x2f, 0x79, 0xeb, 0xb1, 0x47, + 0x4f, 0x45, 0x76, 0xff, 0x81, 0xbf, 0x40, 0x32, 0x33, 0xd6, 0xc5, 0xd8, 0xdb, 0xc0, 0xfb, 0x3e, + 0xcf, 0x1b, 0xc2, 0x47, 0x02, 0xd4, 0x4a, 0x70, 0x48, 0x15, 0xd3, 0xb0, 0x14, 0xad, 0xd0, 0x69, + 0x03, 0x12, 0x50, 0x60, 0xd2, 0xab, 0x4e, 0x77, 0xf4, 0x81, 0xcd, 0x93, 0xeb, 0x7c, 0xfe, 0xa8, + 0xe9, 0x9a, 0xce, 0x84, 0xe9, 0xf0, 0xb2, 0xbd, 0xf9, 0xf3, 0x91, 0xa7, 0x67, 0x8a, 0xb5, 0x4e, + 0x33, 0x0f, 0x47, 0xf1, 0xf5, 0xcb, 0x36, 0xa2, 0xef, 0x53, 0x72, 0xef, 0xd0, 0x4e, 0x17, 0x9a, + 0x69, 0xa0, 0x87, 0x64, 0xc7, 0x2a, 0x7c, 0x2f, 0xf4, 0xe2, 0xd9, 0xbe, 0x9f, 0xfc, 0xfb, 0x29, + 0xc9, 0xc2, 0xe4, 0xd9, 0xe3, 0x8b, 0xab, 0xdd, 0xc9, 0xaf, 0xab, 0xdd, 0xfb, 0xe7, 0xac, 0x5d, + 0xbe, 0x8e, 0x2c, 0x15, 0xe5, 0x0e, 0xa7, 0x1f, 0xc8, 0x6c, 0x40, 0x4a, 0xc3, 0xa0, 0x7f, 0x2b, + 0x9c, 0xc6, 0xb3, 0xfd, 0x67, 0x63, 0x5b, 0xce, 0x34, 0x1c, 0x0d, 0xaf, 0x6c, 0xee, 0x84, 0xd4, + 0x0a, 0xb7, 0xe8, 0x28, 0x27, 0xea, 0x4f, 0x0d, 0xe9, 0x57, 0x8f, 0x3c, 0x3d, 0x3b, 0x11, 0x83, + 0x00, 0x35, 0xf0, 0x92, 0x71, 0xae, 0x00, 0xb1, 0xec, 0x99, 0x50, 0xe8, 0x4f, 0xcd, 0x50, 0x3c, + 0x1e, 0x7a, 0xff, 0x17, 0x79, 0x63, 0x89, 0x05, 0x13, 0x2a, 0x8b, 0xdd, 0x6a, 0x68, 0x57, 0x6f, + 0x14, 0x47, 0xf9, 0x93, 0xb3, 0xff, 0x1a, 0x90, 0xee, 0x11, 0x5a, 0x2d, 0x59, 0x7d, 0xea, 0x30, + 0x0e, 0xb2, 0x6b, 0xd1, 0xbf, 0x1d, 0x4e, 0xe3, 0xbb, 0xf9, 0xc3, 0xad, 0xe4, 0xad, 0x09, 0xe8, + 0x31, 0x79, 0xd1, 0x83, 0xe4, 0x42, 0x36, 0x25, 0x82, 0xe4, 0x65, 0xcf, 0xea, 0x53, 0xd0, 0x25, + 0xc2, 0xa7, 0x15, 0xc8, 0x1a, 0x4a, 0xb9, 0x6a, 0x2b, 0x50, 0xe8, 0xdf, 0x31, 0x82, 0xd0, 0x75, + 0x0b, 0x90, 0x7c, 0x61, 0x9a, 0x85, 0x2b, 0x1e, 0xdb, 0x5e, 0xf6, 0xee, 0x62, 0x1d, 0x78, 0x97, + 0xeb, 0xc0, 0xfb, 0xb9, 0x0e, 0xbc, 0x6f, 0x9b, 0x60, 0x72, 0xb9, 0x09, 0x26, 0x3f, 0x36, 0xc1, + 0xe4, 0xe3, 0x41, 0x23, 0xf4, 0xc9, 0xaa, 0x4a, 0xea, 0xae, 0x4d, 0x0b, 0xf3, 0x3f, 0xf6, 0x8e, + 0x58, 0x85, 0xa9, 0x3b, 0x8b, 0xcf, 0x2f, 0x5f, 0xa5, 0x5f, 0xb6, 0x8e, 0x43, 0x9f, 0xf7, 0x80, + 0xd5, 0x8e, 0xb9, 0x8c, 0x83, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x23, 0xdd, 0x8c, 0xf0, 0xa4, 0x02, 0x00, 0x00, } diff --git a/x/ratelimit/types/gov.pb.go b/x/ratelimit/types/gov.pb.go index 71860a9e71..5b9edb41dd 100644 --- a/x/ratelimit/types/gov.pb.go +++ b/x/ratelimit/types/gov.pb.go @@ -203,32 +203,32 @@ var fileDescriptor_3ad7ef7cb59a1c37 = []byte{ // 438 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x08, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, - 0x76, 0x17, 0xa9, 0xa7, 0xde, 0xec, 0xc9, 0x42, 0x85, 0x32, 0x45, 0x10, 0x2f, 0x61, 0xb2, 0xf3, - 0x48, 0x06, 0x77, 0x66, 0x96, 0x99, 0xc9, 0x92, 0xfe, 0x03, 0x8f, 0x1e, 0x45, 0x10, 0xf2, 0x57, - 0xf4, 0xd4, 0x63, 0x8f, 0xe2, 0x21, 0x48, 0x72, 0xf1, 0xec, 0x2f, 0x90, 0x9d, 0x4d, 0x25, 0xe0, - 0x49, 0x3c, 0xa8, 0xe0, 0x69, 0xf7, 0x7d, 0xdf, 0xf7, 0xde, 0xf0, 0xf1, 0x1e, 0x1f, 0xde, 0x73, - 0xde, 0x4a, 0x01, 0x99, 0xe5, 0x1e, 0x0a, 0xa9, 0xa4, 0xcf, 0x46, 0xa6, 0x4a, 0x4b, 0x6b, 0xbc, - 0x21, 0x3b, 0x0d, 0x97, 0xfe, 0xe0, 0xf6, 0xba, 0x23, 0x33, 0x32, 0x81, 0xcc, 0xea, 0xbf, 0x46, - 0xd7, 0x7f, 0xd7, 0xc2, 0xdd, 0x27, 0x42, 0x30, 0xee, 0xe1, 0xb4, 0x96, 0x9d, 0x59, 0x53, 0x1a, - 0xc7, 0x0b, 0xd2, 0xc5, 0x6d, 0x2f, 0x7d, 0x01, 0x14, 0xf5, 0xd0, 0xfe, 0x36, 0x6b, 0x0a, 0xd2, - 0xc3, 0xb7, 0x04, 0xb8, 0xdc, 0xca, 0xd2, 0x4b, 0xa3, 0xe9, 0x8d, 0xc0, 0xad, 0x43, 0x75, 0x9f, - 0x00, 0x6d, 0x14, 0x6d, 0x35, 0x7d, 0xa1, 0x20, 0xf7, 0x30, 0xce, 0xc7, 0x5c, 0x6b, 0x28, 0x06, - 0x52, 0xd0, 0x8d, 0x40, 0x6d, 0xaf, 0x90, 0x13, 0x41, 0x5e, 0xe0, 0x1d, 0xc5, 0xa7, 0x83, 0x12, - 0x6c, 0x0e, 0xda, 0x0f, 0x1c, 0x68, 0x41, 0xdb, 0xb5, 0xe8, 0x38, 0xbd, 0x9c, 0x27, 0xd1, 0xe7, - 0x79, 0xf2, 0x60, 0x24, 0xfd, 0x78, 0x32, 0x4c, 0x73, 0xa3, 0xb2, 0xdc, 0x38, 0x65, 0xdc, 0xea, - 0x73, 0xe0, 0xc4, 0xab, 0xcc, 0x5f, 0x94, 0xe0, 0xd2, 0x13, 0xed, 0x59, 0x47, 0xf1, 0xe9, 0x59, - 0x33, 0xe6, 0x1c, 0xf4, 0x4f, 0x93, 0x2d, 0xe4, 0x15, 0xdd, 0xfc, 0xdd, 0xc9, 0x0c, 0xf2, 0x8a, - 0xdc, 0xc7, 0x1d, 0x31, 0xb1, 0xbc, 0x36, 0x3d, 0x18, 0x9b, 0x89, 0x75, 0x74, 0xab, 0x87, 0xf6, - 0x37, 0xd8, 0x9d, 0x6b, 0xf4, 0x69, 0x0d, 0x92, 0x87, 0x78, 0x4b, 0x40, 0x69, 0x9c, 0xf4, 0xf4, - 0x66, 0x78, 0x97, 0x7c, 0x9b, 0x27, 0x9d, 0x0b, 0xae, 0x8a, 0xa3, 0xfe, 0x8a, 0xe8, 0xb3, 0x6b, - 0xc9, 0xd1, 0xed, 0xd7, 0xb3, 0x24, 0x7a, 0x3b, 0x4b, 0xa2, 0xaf, 0xb3, 0x04, 0xf5, 0xdf, 0xb7, - 0xf0, 0xee, 0xf3, 0x52, 0x70, 0x0f, 0xff, 0xf7, 0xf3, 0x37, 0xee, 0xe7, 0x23, 0xc2, 0xbb, 0x0c, - 0x94, 0xa9, 0xfe, 0xf4, 0x7e, 0xd6, 0x4c, 0xb4, 0x7f, 0xd5, 0xc4, 0x07, 0x84, 0xef, 0x32, 0x70, - 0xe0, 0xff, 0x5d, 0x0f, 0xc7, 0xcf, 0x2e, 0x17, 0x31, 0xba, 0x5a, 0xc4, 0xe8, 0xcb, 0x22, 0x46, - 0x6f, 0x96, 0x71, 0x74, 0xb5, 0x8c, 0xa3, 0x4f, 0xcb, 0x38, 0x7a, 0x79, 0xb8, 0x76, 0x3d, 0xe7, - 0x21, 0x12, 0x0f, 0x4e, 0xf9, 0xd0, 0x65, 0xab, 0xe8, 0xac, 0x1e, 0x3d, 0xce, 0xa6, 0x6b, 0x01, - 0x1a, 0xce, 0x69, 0xb8, 0x19, 0xb2, 0xf1, 0xf0, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0xbb, - 0x27, 0x2c, 0x61, 0x05, 0x00, 0x00, + 0x76, 0x17, 0x29, 0x5e, 0x7a, 0xb3, 0x27, 0x0b, 0x15, 0xca, 0x14, 0x41, 0xbc, 0x84, 0xc9, 0xce, + 0x23, 0x19, 0xdc, 0x99, 0x59, 0x66, 0x26, 0x4b, 0xfa, 0x0f, 0x3c, 0x7a, 0x14, 0x41, 0xc8, 0x5f, + 0xd1, 0x53, 0x8f, 0x3d, 0x8a, 0x87, 0x20, 0xc9, 0xc5, 0xb3, 0xbf, 0x40, 0x76, 0x36, 0x95, 0x80, + 0x27, 0xf1, 0xa0, 0x82, 0xa7, 0xdd, 0xf7, 0x7d, 0xdf, 0x7b, 0xc3, 0xc7, 0x7b, 0x7c, 0x78, 0xcf, + 0x79, 0x2b, 0x05, 0x64, 0x96, 0x7b, 0x28, 0xa4, 0x92, 0x3e, 0x1b, 0x99, 0x2a, 0x2d, 0xad, 0xf1, + 0x86, 0xec, 0x34, 0x5c, 0xfa, 0x83, 0xdb, 0xeb, 0x8e, 0xcc, 0xc8, 0x04, 0x32, 0xab, 0xff, 0x1a, + 0x5d, 0xff, 0x5d, 0x0b, 0x77, 0x9f, 0x08, 0xc1, 0xb8, 0x87, 0xd3, 0x5a, 0x76, 0x66, 0x4d, 0x69, + 0x1c, 0x2f, 0x48, 0x17, 0xb7, 0xbd, 0xf4, 0x05, 0x50, 0xd4, 0x43, 0xfb, 0xdb, 0xac, 0x29, 0x48, + 0x0f, 0xdf, 0x12, 0xe0, 0x72, 0x2b, 0x4b, 0x2f, 0x8d, 0xa6, 0x37, 0x02, 0xb7, 0x0e, 0xd5, 0x7d, + 0x02, 0xb4, 0x51, 0xb4, 0xd5, 0xf4, 0x85, 0x82, 0xdc, 0xc3, 0x38, 0x1f, 0x73, 0xad, 0xa1, 0x18, + 0x48, 0x41, 0x37, 0x02, 0xb5, 0xbd, 0x42, 0x4e, 0x04, 0x79, 0x81, 0x77, 0x14, 0x9f, 0x0e, 0x4a, + 0xb0, 0x39, 0x68, 0x3f, 0x70, 0xa0, 0x05, 0x6d, 0xd7, 0xa2, 0xe3, 0xf4, 0x72, 0x9e, 0x44, 0x9f, + 0xe7, 0xc9, 0x83, 0x91, 0xf4, 0xe3, 0xc9, 0x30, 0xcd, 0x8d, 0xca, 0x72, 0xe3, 0x94, 0x71, 0xab, + 0xcf, 0x81, 0x13, 0xaf, 0x32, 0x7f, 0x51, 0x82, 0x4b, 0x4f, 0xb4, 0x67, 0x1d, 0xc5, 0xa7, 0x67, + 0xcd, 0x98, 0x73, 0xd0, 0x3f, 0x4d, 0xb6, 0x90, 0x57, 0x74, 0xf3, 0x77, 0x27, 0x33, 0xc8, 0x2b, + 0x72, 0x1f, 0x77, 0xc4, 0xc4, 0xf2, 0xda, 0xf4, 0x60, 0x6c, 0x26, 0xd6, 0xd1, 0xad, 0x1e, 0xda, + 0xdf, 0x60, 0x77, 0xae, 0xd1, 0xa7, 0x35, 0x48, 0x1e, 0xe2, 0x2d, 0x01, 0xa5, 0x71, 0xd2, 0xd3, + 0x9b, 0xe1, 0x5d, 0xf2, 0x6d, 0x9e, 0x74, 0x2e, 0xb8, 0x2a, 0x8e, 0xfa, 0x2b, 0xa2, 0xcf, 0xae, + 0x25, 0x47, 0xb7, 0x5f, 0xcf, 0x92, 0xe8, 0xed, 0x2c, 0x89, 0xbe, 0xce, 0x12, 0xd4, 0x7f, 0xdf, + 0xc2, 0xbb, 0xcf, 0x4b, 0xc1, 0x3d, 0xfc, 0xdf, 0xcf, 0xdf, 0xb8, 0x9f, 0x8f, 0x08, 0xef, 0x32, + 0x50, 0xa6, 0xfa, 0xd3, 0xfb, 0x59, 0x33, 0xd1, 0xfe, 0x55, 0x13, 0x1f, 0x10, 0xbe, 0xcb, 0xc0, + 0x81, 0xff, 0x77, 0x3d, 0x1c, 0x3f, 0xbb, 0x5c, 0xc4, 0xe8, 0x6a, 0x11, 0xa3, 0x2f, 0x8b, 0x18, + 0xbd, 0x59, 0xc6, 0xd1, 0xd5, 0x32, 0x8e, 0x3e, 0x2d, 0xe3, 0xe8, 0xe5, 0xe1, 0xda, 0xf5, 0x9c, + 0x87, 0x48, 0x3c, 0x38, 0xe5, 0x43, 0x97, 0xad, 0xa2, 0xb3, 0x7a, 0xf4, 0x38, 0x9b, 0xae, 0x05, + 0x68, 0x38, 0xa7, 0xe1, 0x66, 0xc8, 0xc6, 0xc3, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0x93, 0xa0, + 0xab, 0x42, 0x61, 0x05, 0x00, 0x00, } func (this *AddRateLimitProposal) Equal(that interface{}) bool { diff --git a/x/ratelimit/types/gov_add_rate_limit_test.go b/x/ratelimit/types/gov_add_rate_limit_test.go index f7bfc44821..b7f0d3148c 100644 --- a/x/ratelimit/types/gov_add_rate_limit_test.go +++ b/x/ratelimit/types/gov_add_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func TestGovAddRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_remove_rate_limit_test.go b/x/ratelimit/types/gov_remove_rate_limit_test.go index a34d779208..d49c8772c6 100644 --- a/x/ratelimit/types/gov_remove_rate_limit_test.go +++ b/x/ratelimit/types/gov_remove_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func TestGovRemoveRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_reset_rate_limit_test.go b/x/ratelimit/types/gov_reset_rate_limit_test.go index 43b0b28d88..6f0da74cf1 100644 --- a/x/ratelimit/types/gov_reset_rate_limit_test.go +++ b/x/ratelimit/types/gov_reset_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func TestGovResetRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_update_rate_limit_test.go b/x/ratelimit/types/gov_update_rate_limit_test.go index ca9afd3ada..c02b8231f5 100644 --- a/x/ratelimit/types/gov_update_rate_limit_test.go +++ b/x/ratelimit/types/gov_update_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func TestGovUpdateRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/params.pb.go b/x/ratelimit/types/params.pb.go index 532f0b8d2a..b6ab472ba7 100644 --- a/x/ratelimit/types/params.pb.go +++ b/x/ratelimit/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_7af4964ecd08f136 = []byte{ 0x95, 0x38, 0xb8, 0xd8, 0x02, 0xc0, 0x2a, 0x9c, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, - 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x13, 0xfd, 0x0a, + 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x53, 0xfd, 0x0a, 0x24, 0x1b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x36, 0x1a, 0x03, 0x02, 0x00, 0x00, - 0xff, 0xff, 0xf0, 0x95, 0x99, 0x36, 0x92, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xb1, 0x8e, 0x15, 0x58, 0x92, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/query.pb.go b/x/ratelimit/types/query.pb.go index b917a27bf7..bafb720aa6 100644 --- a/x/ratelimit/types/query.pb.go +++ b/x/ratelimit/types/query.pb.go @@ -559,51 +559,51 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/query.proto", fileDescriptor_97a373ef8fcef03b) } var fileDescriptor_97a373ef8fcef03b = []byte{ - // 690 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x4f, 0x13, 0x41, - 0x14, 0xc7, 0x3b, 0x28, 0x48, 0x1f, 0x92, 0x98, 0x11, 0x10, 0x16, 0x2c, 0x75, 0xd5, 0xd8, 0xf8, - 0xa3, 0x0b, 0x2d, 0xa8, 0x11, 0x89, 0xa1, 0xea, 0x81, 0x04, 0x13, 0x2d, 0x26, 0x26, 0x5e, 0xea, - 0xb4, 0x3b, 0xb6, 0x13, 0x97, 0xdd, 0xb2, 0xb3, 0xa8, 0x0d, 0xe1, 0xe2, 0x5f, 0x60, 0xe2, 0xd5, - 0xab, 0x7f, 0x84, 0x47, 0x0f, 0x26, 0x1c, 0x89, 0x5e, 0x3c, 0x19, 0x03, 0xfe, 0x21, 0x66, 0x67, - 0x66, 0xb7, 0xb6, 0xdd, 0x2d, 0xdd, 0x84, 0xdb, 0x74, 0xe6, 0xbd, 0xef, 0xfb, 0x7c, 0xdf, 0xce, - 0x9b, 0x14, 0xe6, 0xb8, 0xe7, 0x32, 0x93, 0x1a, 0x2e, 0xf1, 0xa8, 0xc5, 0xb6, 0x98, 0x67, 0x6c, - 0xef, 0x50, 0xb7, 0x95, 0x6f, 0xba, 0x8e, 0xe7, 0xe0, 0x73, 0xf2, 0x34, 0x1f, 0x9e, 0x6a, 0xd9, - 0x9e, 0xf8, 0x70, 0x25, 0x73, 0xb4, 0xb9, 0xba, 0xe3, 0xd4, 0x2d, 0x6a, 0x90, 0x26, 0x33, 0x88, - 0x6d, 0x3b, 0x1e, 0xf1, 0x98, 0x63, 0x73, 0x75, 0x3a, 0x51, 0x77, 0xea, 0x8e, 0x58, 0x1a, 0xfe, - 0x4a, 0xee, 0xea, 0xb3, 0x30, 0xf3, 0xcc, 0x2f, 0xbb, 0x66, 0x59, 0x65, 0xe2, 0xd1, 0x0d, 0x5f, - 0x8e, 0x97, 0xe9, 0xf6, 0x0e, 0xe5, 0x9e, 0xfe, 0x0a, 0xb4, 0xa8, 0x43, 0xde, 0x74, 0x6c, 0x4e, - 0x71, 0x09, 0xc6, 0x7c, 0x82, 0x8a, 0x40, 0xe0, 0xd3, 0x28, 0x7b, 0x2a, 0x37, 0x56, 0x98, 0xcd, - 0x77, 0x83, 0xe7, 0xc3, 0xd4, 0xd2, 0xe9, 0xfd, 0xdf, 0xf3, 0xa9, 0x32, 0xb8, 0xa1, 0x96, 0xbe, - 0x01, 0x93, 0xa2, 0x42, 0x18, 0xa3, 0x4a, 0xe3, 0x09, 0x18, 0x36, 0xa9, 0xed, 0x6c, 0x4d, 0xa3, - 0x2c, 0xca, 0xa5, 0xcb, 0xf2, 0x07, 0xbe, 0x08, 0x50, 0x6b, 0x10, 0xdb, 0xa6, 0x56, 0x85, 0x99, - 0xd3, 0x43, 0xe2, 0x28, 0xad, 0x76, 0xd6, 0x4d, 0xfd, 0x39, 0x4c, 0x75, 0xab, 0x29, 0xd6, 0x7b, - 0x00, 0x6d, 0x56, 0xa1, 0xd9, 0x1f, 0xb5, 0x9c, 0x0e, 0x21, 0xf5, 0xfb, 0x30, 0xdf, 0xa9, 0xca, - 0x4b, 0xad, 0x87, 0x0d, 0xc2, 0xec, 0x75, 0x33, 0xa0, 0x9d, 0x81, 0xd1, 0x9a, 0xbf, 0xe3, 0x53, - 0x49, 0xe0, 0x33, 0x35, 0x19, 0xa1, 0xbf, 0x86, 0x6c, 0x7c, 0xf6, 0x09, 0x76, 0xb2, 0x04, 0x97, - 0xa2, 0xea, 0xc8, 0xce, 0x04, 0x9c, 0x9d, 0xfd, 0x43, 0xdd, 0xfd, 0x6b, 0x80, 0xde, 0x4f, 0xe3, - 0x04, 0x69, 0x75, 0xd5, 0x95, 0x35, 0xcb, 0x2a, 0x59, 0xa4, 0xf6, 0xc6, 0x62, 0xdc, 0xa3, 0xe6, - 0x23, 0xff, 0x23, 0x87, 0xb7, 0x6f, 0x45, 0x39, 0x8a, 0x8e, 0x51, 0x30, 0x53, 0x30, 0x22, 0xae, - 0x86, 0xe4, 0x48, 0x97, 0xd5, 0x2f, 0xfd, 0x2a, 0x5c, 0x0e, 0x92, 0x5f, 0x34, 0x98, 0x8f, 0xe4, - 0x27, 0xaf, 0x99, 0xa6, 0x4b, 0x39, 0xa7, 0x61, 0x8d, 0x5d, 0xb8, 0xd2, 0x3f, 0x4c, 0x95, 0xd9, - 0x84, 0x71, 0x22, 0x37, 0x2b, 0x4d, 0xc2, 0xdc, 0xc0, 0x75, 0xae, 0xd7, 0x75, 0xaf, 0xcc, 0x53, - 0xc2, 0x5c, 0xd5, 0x82, 0xb3, 0xa4, 0xbd, 0xc5, 0x0b, 0x3f, 0x46, 0x61, 0x58, 0x54, 0xc7, 0x9f, - 0x11, 0x8c, 0x77, 0x0c, 0x19, 0xbe, 0xd1, 0xab, 0x1c, 0x3b, 0xa7, 0xda, 0xcd, 0xc1, 0x82, 0xa5, - 0x17, 0x7d, 0xe1, 0xc3, 0xcf, 0xbf, 0x9f, 0x86, 0xae, 0xe3, 0x9c, 0xb1, 0x29, 0xb2, 0x6e, 0x6d, - 0x90, 0x2a, 0x37, 0xe2, 0x5f, 0x17, 0x8e, 0xbf, 0x20, 0x48, 0x87, 0x42, 0xf8, 0x5a, 0x4c, 0xb5, - 0xee, 0x19, 0xd6, 0x72, 0xc7, 0x07, 0x2a, 0xa4, 0xc7, 0x02, 0xe9, 0x01, 0x5e, 0x1d, 0x10, 0xc9, - 0xd8, 0x6d, 0x5f, 0xe3, 0x3d, 0xa3, 0xda, 0xaa, 0xc8, 0xe7, 0xe1, 0x2b, 0x82, 0xf3, 0x11, 0x73, - 0x86, 0x17, 0x8f, 0x03, 0xe9, 0x99, 0x68, 0xad, 0x90, 0x24, 0x45, 0xb9, 0x58, 0x11, 0x2e, 0x96, - 0x71, 0x71, 0xd0, 0xc6, 0x0a, 0x1b, 0xe2, 0xd5, 0xd8, 0xc3, 0xdf, 0x10, 0x4c, 0x46, 0xce, 0x1d, - 0x2e, 0x0e, 0x86, 0xd2, 0x31, 0xe9, 0xda, 0x52, 0xb2, 0x24, 0xe5, 0x60, 0x55, 0x38, 0xb8, 0x83, - 0x97, 0x13, 0x39, 0x08, 0x3e, 0x84, 0xdf, 0xff, 0x89, 0xa8, 0x69, 0xc5, 0x85, 0xf8, 0x0b, 0x1a, - 0x37, 0xfe, 0x5a, 0x31, 0x51, 0x8e, 0x32, 0x70, 0x57, 0x18, 0x28, 0xe0, 0x85, 0xfe, 0x06, 0xaa, - 0x6d, 0x01, 0x79, 0x75, 0x38, 0xfe, 0x8e, 0xe0, 0x42, 0xcc, 0x2b, 0x80, 0x97, 0xe3, 0x51, 0xfa, - 0x3c, 0x2e, 0xda, 0xed, 0xa4, 0x69, 0xc9, 0xee, 0xd1, 0xbb, 0xb6, 0x46, 0x85, 0x04, 0x22, 0xa5, - 0x27, 0xfb, 0x87, 0x19, 0x74, 0x70, 0x98, 0x41, 0x7f, 0x0e, 0x33, 0xe8, 0xe3, 0x51, 0x26, 0x75, - 0x70, 0x94, 0x49, 0xfd, 0x3a, 0xca, 0xa4, 0x5e, 0x16, 0xeb, 0xcc, 0x6b, 0xec, 0x54, 0xf3, 0x35, - 0x67, 0x2b, 0x4a, 0xf8, 0xed, 0xe2, 0x92, 0xf1, 0xfe, 0x3f, 0x79, 0xaf, 0xd5, 0xa4, 0xbc, 0x3a, - 0x22, 0xfe, 0x26, 0x14, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xeb, 0xbd, 0x9c, 0xc6, 0xae, 0x08, - 0x00, 0x00, + // 692 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x4f, 0x13, 0x4f, + 0x18, 0xc7, 0x3b, 0xfc, 0x7e, 0x20, 0x7d, 0x90, 0xc4, 0x8c, 0x80, 0xb0, 0x60, 0xa9, 0xab, 0xc6, + 0xc6, 0x3f, 0x5d, 0x68, 0xad, 0x1a, 0x91, 0x18, 0xaa, 0x1e, 0x48, 0x30, 0xd1, 0x62, 0x62, 0xe2, + 0xa5, 0x4e, 0xbb, 0x63, 0x3b, 0x71, 0xd9, 0x2d, 0x3b, 0x8b, 0xda, 0x10, 0x2e, 0xbe, 0x02, 0x13, + 0xaf, 0x5e, 0x7d, 0x11, 0x1e, 0x3d, 0x98, 0x70, 0x24, 0x7a, 0xf1, 0x64, 0x0c, 0xf8, 0x42, 0xcc, + 0xce, 0xcc, 0x6e, 0x6d, 0xbb, 0x5b, 0xba, 0x09, 0xb7, 0xe9, 0xcc, 0xf3, 0x7c, 0x9f, 0xcf, 0xf7, + 0xd9, 0x79, 0x26, 0x85, 0x05, 0xee, 0xb9, 0xcc, 0xa4, 0x86, 0x4b, 0x3c, 0x6a, 0xb1, 0x2d, 0xe6, + 0x19, 0xdb, 0x3b, 0xd4, 0x6d, 0xe7, 0x5b, 0xae, 0xe3, 0x39, 0xf8, 0x8c, 0x3c, 0xcd, 0x87, 0xa7, + 0x5a, 0xb6, 0x2f, 0x3e, 0x5c, 0xc9, 0x1c, 0x6d, 0xa1, 0xe1, 0x38, 0x0d, 0x8b, 0x1a, 0xa4, 0xc5, + 0x0c, 0x62, 0xdb, 0x8e, 0x47, 0x3c, 0xe6, 0xd8, 0x5c, 0x9d, 0x4e, 0x35, 0x9c, 0x86, 0x23, 0x96, + 0x86, 0xbf, 0x92, 0xbb, 0xfa, 0x3c, 0xcc, 0x3d, 0xf5, 0xcb, 0xae, 0x59, 0x56, 0x85, 0x78, 0x74, + 0xc3, 0x97, 0xe3, 0x15, 0xba, 0xbd, 0x43, 0xb9, 0xa7, 0xbf, 0x04, 0x2d, 0xea, 0x90, 0xb7, 0x1c, + 0x9b, 0x53, 0x5c, 0x86, 0x09, 0x9f, 0xa0, 0x2a, 0x10, 0xf8, 0x2c, 0xca, 0xfe, 0x97, 0x9b, 0x28, + 0xcc, 0xe7, 0x7b, 0xc1, 0xf3, 0x61, 0x6a, 0xf9, 0xff, 0xfd, 0x5f, 0x8b, 0xa9, 0x0a, 0xb8, 0xa1, + 0x96, 0xbe, 0x01, 0xd3, 0xa2, 0x42, 0x18, 0xa3, 0x4a, 0xe3, 0x29, 0x18, 0x35, 0xa9, 0xed, 0x6c, + 0xcd, 0xa2, 0x2c, 0xca, 0xa5, 0x2b, 0xf2, 0x07, 0x3e, 0x0f, 0x50, 0x6f, 0x12, 0xdb, 0xa6, 0x56, + 0x95, 0x99, 0xb3, 0x23, 0xe2, 0x28, 0xad, 0x76, 0xd6, 0x4d, 0xfd, 0x19, 0xcc, 0xf4, 0xaa, 0x29, + 0xd6, 0xbb, 0x00, 0x1d, 0x56, 0xa1, 0x39, 0x18, 0xb5, 0x92, 0x0e, 0x21, 0xf5, 0x7b, 0xb0, 0xd8, + 0xad, 0xca, 0xcb, 0xed, 0x07, 0x4d, 0xc2, 0xec, 0x75, 0x33, 0xa0, 0x9d, 0x83, 0xf1, 0xba, 0xbf, + 0xe3, 0x53, 0x49, 0xe0, 0x53, 0x75, 0x19, 0xa1, 0xbf, 0x82, 0x6c, 0x7c, 0xf6, 0x09, 0x76, 0xb2, + 0x0c, 0x17, 0xa2, 0xea, 0xc8, 0xce, 0x04, 0x9c, 0xdd, 0xfd, 0x43, 0xbd, 0xfd, 0x6b, 0x82, 0x3e, + 0x48, 0xe3, 0x04, 0x69, 0x75, 0xd5, 0x95, 0x35, 0xcb, 0x2a, 0x5b, 0xa4, 0xfe, 0xda, 0x62, 0xdc, + 0xa3, 0xe6, 0x43, 0xff, 0x23, 0x87, 0xb7, 0x6f, 0x45, 0x39, 0x8a, 0x8e, 0x51, 0x30, 0x33, 0x30, + 0x26, 0xae, 0x86, 0xe4, 0x48, 0x57, 0xd4, 0x2f, 0xfd, 0x32, 0x5c, 0x0c, 0x92, 0x9f, 0x37, 0x99, + 0x8f, 0xe4, 0x27, 0xaf, 0x99, 0xa6, 0x4b, 0x39, 0xa7, 0x61, 0x8d, 0x5d, 0xb8, 0x34, 0x38, 0x4c, + 0x95, 0xd9, 0x84, 0x49, 0x22, 0x37, 0xab, 0x2d, 0xc2, 0xdc, 0xc0, 0x75, 0xae, 0xdf, 0x75, 0xbf, + 0xcc, 0x13, 0xc2, 0x5c, 0xd5, 0x82, 0xd3, 0xa4, 0xb3, 0xc5, 0x0b, 0xdf, 0xc7, 0x61, 0x54, 0x54, + 0xc7, 0x9f, 0x10, 0x4c, 0x76, 0x0d, 0x19, 0xbe, 0xd6, 0xaf, 0x1c, 0x3b, 0xa7, 0xda, 0xf5, 0xe1, + 0x82, 0xa5, 0x17, 0x7d, 0xe9, 0xfd, 0x8f, 0x3f, 0x1f, 0x47, 0xae, 0xe2, 0x9c, 0xb1, 0x29, 0xb2, + 0x6e, 0x6c, 0x90, 0x1a, 0x37, 0xe2, 0x5f, 0x17, 0x8e, 0x3f, 0x23, 0x48, 0x87, 0x42, 0xf8, 0x4a, + 0x4c, 0xb5, 0xde, 0x19, 0xd6, 0x72, 0xc7, 0x07, 0x2a, 0xa4, 0x47, 0x02, 0xe9, 0x3e, 0x5e, 0x1d, + 0x12, 0xc9, 0xd8, 0xed, 0x5c, 0xe3, 0x3d, 0xa3, 0xd6, 0xae, 0xca, 0xe7, 0xe1, 0x0b, 0x82, 0xb3, + 0x11, 0x73, 0x86, 0x97, 0x8f, 0x03, 0xe9, 0x9b, 0x68, 0xad, 0x90, 0x24, 0x45, 0xb9, 0x58, 0x11, + 0x2e, 0x4a, 0xb8, 0x38, 0x6c, 0x63, 0x85, 0x0d, 0xf1, 0x6a, 0xec, 0xe1, 0xaf, 0x08, 0xa6, 0x23, + 0xe7, 0x0e, 0x17, 0x87, 0x43, 0xe9, 0x9a, 0x74, 0xed, 0x66, 0xb2, 0x24, 0xe5, 0x60, 0x55, 0x38, + 0xb8, 0x8d, 0x4b, 0x89, 0x1c, 0x04, 0x1f, 0xc2, 0xef, 0xff, 0x54, 0xd4, 0xb4, 0xe2, 0x42, 0xfc, + 0x05, 0x8d, 0x1b, 0x7f, 0xad, 0x98, 0x28, 0x47, 0x19, 0xb8, 0x23, 0x0c, 0x14, 0xf0, 0xd2, 0x60, + 0x03, 0xb5, 0x8e, 0x80, 0xbc, 0x3a, 0x1c, 0x7f, 0x43, 0x70, 0x2e, 0xe6, 0x15, 0xc0, 0xa5, 0x78, + 0x94, 0x01, 0x8f, 0x8b, 0x76, 0x2b, 0x69, 0x5a, 0xb2, 0x7b, 0xf4, 0xb6, 0xa3, 0x51, 0x25, 0x81, + 0x48, 0xf9, 0xf1, 0xfe, 0x61, 0x06, 0x1d, 0x1c, 0x66, 0xd0, 0xef, 0xc3, 0x0c, 0xfa, 0x70, 0x94, + 0x49, 0x1d, 0x1c, 0x65, 0x52, 0x3f, 0x8f, 0x32, 0xa9, 0x17, 0xc5, 0x06, 0xf3, 0x9a, 0x3b, 0xb5, + 0x7c, 0xdd, 0xd9, 0x8a, 0x12, 0x7e, 0xb3, 0x5c, 0x32, 0xde, 0xfd, 0x23, 0xef, 0xb5, 0x5b, 0x94, + 0xd7, 0xc6, 0xc4, 0xdf, 0x84, 0xe2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xa6, 0x10, 0xa8, + 0xae, 0x08, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/types/quota_test.go b/x/ratelimit/types/quota_test.go index cb197a3705..20f9caf48e 100644 --- a/x/ratelimit/types/quota_test.go +++ b/x/ratelimit/types/quota_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) func TestCheckExceedsQuota(t *testing.T) { diff --git a/x/ratelimit/types/ratelimit.pb.go b/x/ratelimit/types/ratelimit.pb.go index a2ea0a70ae..13c04962e1 100644 --- a/x/ratelimit/types/ratelimit.pb.go +++ b/x/ratelimit/types/ratelimit.pb.go @@ -310,40 +310,40 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/ratelimit.proto", fileDescriptor_a3e00ee2c967d747) } var fileDescriptor_a3e00ee2c967d747 = []byte{ - // 520 bytes of a gzipped FileDescriptorProto + // 521 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcd, 0x6e, 0xd3, 0x4c, 0x14, 0xb5, 0xbf, 0x26, 0xf9, 0xc8, 0x84, 0xb6, 0xd1, 0xa8, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, - 0xa8, 0xaa, 0x14, 0x5b, 0xb4, 0x6c, 0x10, 0xab, 0xfe, 0xa4, 0x6a, 0x45, 0x40, 0xc1, 0x41, 0x05, - 0xb1, 0x89, 0x26, 0x9e, 0x4b, 0x3c, 0x6a, 0xec, 0x09, 0x33, 0x63, 0x37, 0xbc, 0x01, 0x4b, 0xc4, - 0x2b, 0xf0, 0x32, 0x5d, 0x76, 0x89, 0x58, 0x54, 0x28, 0x59, 0xf3, 0x0e, 0x68, 0xc6, 0x4e, 0x89, - 0x8a, 0x58, 0x50, 0x56, 0x9e, 0x7b, 0xee, 0x99, 0x23, 0x9f, 0x3b, 0xe7, 0xa2, 0xa6, 0x54, 0x82, - 0x51, 0xf0, 0x04, 0x51, 0x30, 0x66, 0x11, 0x53, 0xbf, 0x4e, 0xee, 0x44, 0x70, 0xc5, 0x71, 0x35, - 0x63, 0xb8, 0xd7, 0x78, 0x63, 0x63, 0xc4, 0x47, 0xdc, 0x34, 0x3d, 0x7d, 0xca, 0x78, 0xad, 0xa7, - 0xa8, 0xd0, 0x23, 0x2a, 0xc4, 0x1b, 0xa8, 0x48, 0x21, 0xe6, 0x51, 0xdd, 0x6e, 0xda, 0x5b, 0x65, - 0x3f, 0x2b, 0xf0, 0x7d, 0x84, 0x82, 0x90, 0xc4, 0x31, 0x8c, 0x07, 0x8c, 0xd6, 0xff, 0x33, 0xad, - 0x72, 0x8e, 0x9c, 0xd0, 0xd6, 0xcc, 0x46, 0xc5, 0x97, 0x09, 0x57, 0x04, 0xbf, 0x41, 0xd5, 0x88, - 0x4c, 0x07, 0x13, 0x10, 0x01, 0xc4, 0x6a, 0x20, 0x21, 0xa6, 0x99, 0xd2, 0xbe, 0x7b, 0x71, 0xb5, - 0x69, 0x7d, 0xbb, 0xda, 0x7c, 0x38, 0x62, 0x2a, 0x4c, 0x86, 0x6e, 0xc0, 0x23, 0x2f, 0xe0, 0x32, - 0xe2, 0x32, 0xff, 0xb4, 0x25, 0x3d, 0xf3, 0xd4, 0x87, 0x09, 0x48, 0xf7, 0x24, 0x56, 0xfe, 0x5a, - 0x44, 0xa6, 0xbd, 0x4c, 0xa6, 0x0f, 0x31, 0xbd, 0xa9, 0x2c, 0x20, 0x48, 0xb3, 0x1f, 0xf9, 0x17, - 0x65, 0x1f, 0x82, 0x14, 0x3f, 0x40, 0x6b, 0x34, 0x11, 0x44, 0x31, 0x1e, 0x0f, 0x42, 0x9e, 0x08, - 0x59, 0x5f, 0x69, 0xda, 0x5b, 0x05, 0x7f, 0x75, 0x81, 0x1e, 0x6b, 0xb0, 0xf5, 0xc3, 0x46, 0x85, - 0xa3, 0x31, 0x3f, 0xc7, 0x47, 0xa8, 0xc4, 0xe2, 0x77, 0x63, 0x7e, 0x7e, 0x4b, 0x67, 0xf9, 0x6d, - 0x7c, 0x8c, 0xfe, 0xe7, 0x89, 0x32, 0x42, 0xb7, 0x33, 0xb2, 0xb8, 0x8e, 0xfb, 0x68, 0x75, 0xf1, - 0x3c, 0x29, 0x19, 0x27, 0x60, 0x0c, 0xfc, 0xbd, 0xde, 0xdd, 0x5c, 0xe4, 0x54, 0x6b, 0xb4, 0x3e, - 0xdb, 0xa8, 0xec, 0x13, 0x05, 0x5d, 0x9d, 0x1a, 0xbc, 0x8d, 0x0a, 0x13, 0xa2, 0x42, 0x63, 0xb9, - 0xb2, 0x53, 0x73, 0x6f, 0xc6, 0xca, 0xd5, 0xe9, 0xf1, 0x0d, 0x07, 0xb7, 0x51, 0xf1, 0xbd, 0x4e, - 0x83, 0xb1, 0x55, 0xd9, 0xb9, 0xf7, 0x3b, 0xd9, 0x84, 0xc5, 0xcf, 0x58, 0x5a, 0xda, 0x0c, 0x61, - 0xe5, 0x4f, 0xd2, 0x7a, 0xea, 0xbe, 0xe1, 0xb4, 0xba, 0xa8, 0xf6, 0x3a, 0x64, 0xba, 0x21, 0x15, - 0xd0, 0x3d, 0x4a, 0x05, 0x48, 0xd9, 0x23, 0x4c, 0xe0, 0x1a, 0x2a, 0xe9, 0xb4, 0x81, 0xc8, 0x93, - 0x9b, 0x57, 0xb8, 0x81, 0xee, 0x08, 0x08, 0x80, 0xa5, 0x20, 0xf2, 0xe0, 0x5e, 0xd7, 0xdb, 0x4f, - 0xd0, 0x7a, 0x8f, 0x04, 0x67, 0xa0, 0x0e, 0x99, 0x80, 0x40, 0x3f, 0x35, 0x5e, 0x47, 0x95, 0xde, - 0xde, 0xc1, 0xb3, 0xce, 0xab, 0x41, 0xbf, 0xf3, 0xe2, 0xb0, 0x6a, 0x2d, 0x01, 0x7e, 0xe7, 0xe0, - 0xb4, 0x6a, 0x37, 0x0a, 0x1f, 0xbf, 0x38, 0xd6, 0xfe, 0xf3, 0x8b, 0x99, 0x63, 0x5f, 0xce, 0x1c, - 0xfb, 0xfb, 0xcc, 0xb1, 0x3f, 0xcd, 0x1d, 0xeb, 0x72, 0xee, 0x58, 0x5f, 0xe7, 0x8e, 0xf5, 0x76, - 0x77, 0x69, 0xda, 0x7d, 0x63, 0xa5, 0xdd, 0x25, 0x43, 0xe9, 0xe5, 0xab, 0x9a, 0x3e, 0x7a, 0xec, - 0x4d, 0x97, 0x16, 0xd6, 0x8c, 0x7f, 0x58, 0x32, 0x5b, 0xb8, 0xfb, 0x33, 0x00, 0x00, 0xff, 0xff, - 0x2b, 0x0e, 0xae, 0xb0, 0xd1, 0x03, 0x00, 0x00, + 0xa8, 0xaa, 0x14, 0x5b, 0xb4, 0x62, 0x81, 0x58, 0xf5, 0x27, 0x55, 0x2b, 0x02, 0x0a, 0x0e, 0x2a, + 0x88, 0x4d, 0x34, 0xf1, 0x5c, 0xe2, 0x51, 0x63, 0x4f, 0x98, 0x19, 0xbb, 0xe1, 0x0d, 0x58, 0x22, + 0x5e, 0x81, 0x97, 0xe9, 0xb2, 0x4b, 0xc4, 0xa2, 0x42, 0xc9, 0x9a, 0x77, 0x40, 0x33, 0x76, 0x4a, + 0x54, 0xc4, 0x82, 0xb2, 0xf2, 0xdc, 0x73, 0xcf, 0x1c, 0xf9, 0xdc, 0x39, 0x17, 0x35, 0xa5, 0x12, + 0x8c, 0x82, 0x27, 0x88, 0x82, 0x31, 0x8b, 0x98, 0xfa, 0x75, 0x72, 0x27, 0x82, 0x2b, 0x8e, 0xab, + 0x19, 0xc3, 0xbd, 0xc6, 0x1b, 0x1b, 0x23, 0x3e, 0xe2, 0xa6, 0xe9, 0xe9, 0x53, 0xc6, 0x6b, 0x3d, + 0x45, 0x85, 0x1e, 0x51, 0x21, 0xde, 0x40, 0x45, 0x0a, 0x31, 0x8f, 0xea, 0x76, 0xd3, 0xde, 0x2a, + 0xfb, 0x59, 0x81, 0xef, 0x23, 0x14, 0x84, 0x24, 0x8e, 0x61, 0x3c, 0x60, 0xb4, 0xfe, 0x9f, 0x69, + 0x95, 0x73, 0xe4, 0x84, 0xb6, 0x66, 0x36, 0x2a, 0xbe, 0x4c, 0xb8, 0x22, 0xf8, 0x0d, 0xaa, 0x46, + 0x64, 0x3a, 0x98, 0x80, 0x08, 0x20, 0x56, 0x03, 0x09, 0x31, 0xcd, 0x94, 0xf6, 0xdd, 0x8b, 0xab, + 0x4d, 0xeb, 0xdb, 0xd5, 0xe6, 0xc3, 0x11, 0x53, 0x61, 0x32, 0x74, 0x03, 0x1e, 0x79, 0x01, 0x97, + 0x11, 0x97, 0xf9, 0xa7, 0x2d, 0xe9, 0x99, 0xa7, 0x3e, 0x4c, 0x40, 0xba, 0x27, 0xb1, 0xf2, 0xd7, + 0x22, 0x32, 0xed, 0x65, 0x32, 0x7d, 0x88, 0xe9, 0x4d, 0x65, 0x01, 0x41, 0x9a, 0xfd, 0xc8, 0xbf, + 0x28, 0xfb, 0x10, 0xa4, 0xf8, 0x01, 0x5a, 0xa3, 0x89, 0x20, 0x8a, 0xf1, 0x78, 0x10, 0xf2, 0x44, + 0xc8, 0xfa, 0x4a, 0xd3, 0xde, 0x2a, 0xf8, 0xab, 0x0b, 0xf4, 0x58, 0x83, 0xad, 0x1f, 0x36, 0x2a, + 0x1c, 0x8d, 0xf9, 0x39, 0x3e, 0x42, 0x25, 0x16, 0xbf, 0x1b, 0xf3, 0xf3, 0x5b, 0x3a, 0xcb, 0x6f, + 0xe3, 0x63, 0xf4, 0x3f, 0x4f, 0x94, 0x11, 0xba, 0x9d, 0x91, 0xc5, 0x75, 0xdc, 0x47, 0xab, 0x8b, + 0xe7, 0x49, 0xc9, 0x38, 0x01, 0x63, 0xe0, 0xef, 0xf5, 0xee, 0xe6, 0x22, 0xa7, 0x5a, 0xa3, 0xf5, + 0xd9, 0x46, 0x65, 0x9f, 0x28, 0xe8, 0xea, 0xd4, 0xe0, 0x6d, 0x54, 0x98, 0x10, 0x15, 0x1a, 0xcb, + 0x95, 0x9d, 0x9a, 0x7b, 0x33, 0x56, 0xae, 0x4e, 0x8f, 0x6f, 0x38, 0xb8, 0x8d, 0x8a, 0xef, 0x75, + 0x1a, 0x8c, 0xad, 0xca, 0xce, 0xbd, 0xdf, 0xc9, 0x26, 0x2c, 0x7e, 0xc6, 0xd2, 0xd2, 0x66, 0x08, + 0x2b, 0x7f, 0x92, 0xd6, 0x53, 0xf7, 0x0d, 0xa7, 0xd5, 0x45, 0xb5, 0xd7, 0x21, 0xd3, 0x0d, 0xa9, + 0x80, 0xee, 0x51, 0x2a, 0x40, 0xca, 0x1e, 0x61, 0x02, 0xd7, 0x50, 0x49, 0xa7, 0x0d, 0x44, 0x9e, + 0xdc, 0xbc, 0xc2, 0x0d, 0x74, 0x47, 0x40, 0x00, 0x2c, 0x05, 0x91, 0x07, 0xf7, 0xba, 0xde, 0x7e, + 0x82, 0xd6, 0x7b, 0x24, 0x38, 0x03, 0x75, 0xc8, 0x04, 0x04, 0xfa, 0xa9, 0xf1, 0x3a, 0xaa, 0xf4, + 0xf6, 0x0e, 0x9e, 0x75, 0x5e, 0x0d, 0xfa, 0x9d, 0x17, 0x87, 0x55, 0x6b, 0x09, 0xf0, 0x3b, 0x07, + 0xa7, 0x55, 0xbb, 0x51, 0xf8, 0xf8, 0xc5, 0xb1, 0xf6, 0x9f, 0x5f, 0xcc, 0x1c, 0xfb, 0x72, 0xe6, + 0xd8, 0xdf, 0x67, 0x8e, 0xfd, 0x69, 0xee, 0x58, 0x97, 0x73, 0xc7, 0xfa, 0x3a, 0x77, 0xac, 0xb7, + 0xbb, 0x4b, 0xd3, 0xee, 0x1b, 0x2b, 0xed, 0x2e, 0x19, 0x4a, 0x2f, 0x5f, 0xd5, 0xf4, 0xd1, 0x63, + 0x6f, 0xba, 0xb4, 0xb0, 0x66, 0xfc, 0xc3, 0x92, 0xd9, 0xc2, 0xdd, 0x9f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x6a, 0x15, 0x22, 0xde, 0xd1, 0x03, 0x00, 0x00, } func (m *Path) Marshal() (dAtA []byte, err error) { diff --git a/x/records/client/cli/query.go b/x/records/client/cli/query.go index cfd981264b..f3a4da8c61 100644 --- a/x/records/client/cli/query.go +++ b/x/records/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/records/client/cli/query_deposit_record.go b/x/records/client/cli/query_deposit_record.go index 213b39969a..b76b0eda7c 100644 --- a/x/records/client/cli/query_deposit_record.go +++ b/x/records/client/cli/query_deposit_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func CmdListDepositRecord() *cobra.Command { diff --git a/x/records/client/cli/query_deposit_record_test.go b/x/records/client/cli/query_deposit_record_test.go index b9b6852d5c..49b73d161b 100644 --- a/x/records/client/cli/query_deposit_record_test.go +++ b/x/records/client/cli/query_deposit_record_test.go @@ -11,10 +11,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/testutil/network" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records/client/cli" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records/client/cli" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func networkWithDepositRecordObjects(t *testing.T, n int) (*network.Network, []types.DepositRecord) { diff --git a/x/records/client/cli/query_epoch_unbonding_record.go b/x/records/client/cli/query_epoch_unbonding_record.go index ce4a302c4c..1372a2b9bc 100644 --- a/x/records/client/cli/query_epoch_unbonding_record.go +++ b/x/records/client/cli/query_epoch_unbonding_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func CmdListEpochUnbondingRecord() *cobra.Command { diff --git a/x/records/client/cli/query_lsm_deposits.go b/x/records/client/cli/query_lsm_deposits.go index 0ea292ec32..f4683aac29 100644 --- a/x/records/client/cli/query_lsm_deposits.go +++ b/x/records/client/cli/query_lsm_deposits.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) const ( diff --git a/x/records/client/cli/query_params.go b/x/records/client/cli/query_params.go index 5aa669219c..71886d10c2 100644 --- a/x/records/client/cli/query_params.go +++ b/x/records/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record.go b/x/records/client/cli/query_user_redemption_record.go index caa0171dba..d1d39bca61 100644 --- a/x/records/client/cli/query_user_redemption_record.go +++ b/x/records/client/cli/query_user_redemption_record.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func CmdListUserRedemptionRecord() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record_test.go b/x/records/client/cli/query_user_redemption_record_test.go index bb96ae0600..f1d43292ca 100644 --- a/x/records/client/cli/query_user_redemption_record_test.go +++ b/x/records/client/cli/query_user_redemption_record_test.go @@ -14,10 +14,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/testutil/network" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records/client/cli" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records/client/cli" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func networkWithUserRedemptionRecordObjects(t *testing.T, n int) (*network.Network, []types.UserRedemptionRecord) { diff --git a/x/records/client/cli/tx.go b/x/records/client/cli/tx.go index 57978a8e9e..902bb80972 100644 --- a/x/records/client/cli/tx.go +++ b/x/records/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/records/genesis.go b/x/records/genesis.go index ef664d274a..d5cf021867 100644 --- a/x/records/genesis.go +++ b/x/records/genesis.go @@ -3,8 +3,8 @@ package records import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/records/genesis_test.go b/x/records/genesis_test.go index 5401d7a5ef..0e50d7b330 100644 --- a/x/records/genesis_test.go +++ b/x/records/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records" - "github.com/Stride-Labs/stride/v14/x/records/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestGenesis(t *testing.T) { diff --git a/x/records/handler.go b/x/records/handler.go index cbc3b1de8a..9baaa5db50 100644 --- a/x/records/handler.go +++ b/x/records/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/x/records/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // NewHandler ... diff --git a/x/records/keeper/callback_lsm_transfer.go b/x/records/keeper/callback_lsm_transfer.go index 2b04b6b455..9639cb1366 100644 --- a/x/records/keeper/callback_lsm_transfer.go +++ b/x/records/keeper/callback_lsm_transfer.go @@ -1,9 +1,9 @@ package keeper import ( - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_lsm_transfer_test.go b/x/records/keeper/callback_lsm_transfer_test.go index fa4f4090c2..caf15fbea6 100644 --- a/x/records/keeper/callback_lsm_transfer_test.go +++ b/x/records/keeper/callback_lsm_transfer_test.go @@ -9,8 +9,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) var ( diff --git a/x/records/keeper/callback_native_transfer.go b/x/records/keeper/callback_native_transfer.go index 7bba9f7242..f94345c486 100644 --- a/x/records/keeper/callback_native_transfer.go +++ b/x/records/keeper/callback_native_transfer.go @@ -5,8 +5,8 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_native_transfer_test.go b/x/records/keeper/callback_native_transfer_test.go index 1e85e4cfe4..acd1915831 100644 --- a/x/records/keeper/callback_native_transfer_test.go +++ b/x/records/keeper/callback_native_transfer_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" ) const chainId = "GAIA" diff --git a/x/records/keeper/callbacks.go b/x/records/keeper/callbacks.go index 7a76adb15b..6c8da778c5 100644 --- a/x/records/keeper/callbacks.go +++ b/x/records/keeper/callbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) const IBCCallbacksID_NativeTransfer = "transfer" diff --git a/x/records/keeper/deposit_record.go b/x/records/keeper/deposit_record.go index a03bceebc1..e06ae2aacb 100644 --- a/x/records/keeper/deposit_record.go +++ b/x/records/keeper/deposit_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // GetDepositRecordCount get the total number of depositRecord diff --git a/x/records/keeper/epoch_unbonding_record.go b/x/records/keeper/epoch_unbonding_record.go index 3c99c53030..0c9dfbb177 100644 --- a/x/records/keeper/epoch_unbonding_record.go +++ b/x/records/keeper/epoch_unbonding_record.go @@ -9,9 +9,9 @@ import ( errorsmod "cosmossdk.io/errors" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // SetEpochUnbondingRecord set a specific epochUnbondingRecord in the store diff --git a/x/records/keeper/epoch_unbonding_record_test.go b/x/records/keeper/epoch_unbonding_record_test.go index 3a05e8fc0f..d135fa5344 100644 --- a/x/records/keeper/epoch_unbonding_record_test.go +++ b/x/records/keeper/epoch_unbonding_record_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func createNEpochUnbondingRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) ([]types.EpochUnbondingRecord, map[string]types.HostZoneUnbonding) { diff --git a/x/records/keeper/grpc_query.go b/x/records/keeper/grpc_query.go index f88e2ac293..ba69d21a2f 100644 --- a/x/records/keeper/grpc_query.go +++ b/x/records/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/records/keeper/grpc_query_deposit_record.go b/x/records/keeper/grpc_query_deposit_record.go index d263cfe811..85cecea1f9 100644 --- a/x/records/keeper/grpc_query_deposit_record.go +++ b/x/records/keeper/grpc_query_deposit_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) DepositRecordAll(c context.Context, req *types.QueryAllDepositRecordRequest) (*types.QueryAllDepositRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_deposit_record_test.go b/x/records/keeper/grpc_query_deposit_record_test.go index 2bada8e88f..df711b8d4d 100644 --- a/x/records/keeper/grpc_query_deposit_record_test.go +++ b/x/records/keeper/grpc_query_deposit_record_test.go @@ -10,13 +10,13 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/x/records/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func createNDepositRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.DepositRecord { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record.go b/x/records/keeper/grpc_query_epoch_unbonding_record.go index 5dac07f0d5..afe69475ca 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) EpochUnbondingRecordAll(c context.Context, req *types.QueryAllEpochUnbondingRecordRequest) (*types.QueryAllEpochUnbondingRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go index 2cfb912215..65371ed106 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestEpochUnbondingRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/grpc_query_lsm_deposits.go b/x/records/keeper/grpc_query_lsm_deposits.go index 91814b7707..ad1043b2f3 100644 --- a/x/records/keeper/grpc_query_lsm_deposits.go +++ b/x/records/keeper/grpc_query_lsm_deposits.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) LSMDeposit(c context.Context, req *types.QueryLSMDepositRequest) (*types.QueryLSMDepositResponse, error) { diff --git a/x/records/keeper/grpc_query_lsm_deposits_test.go b/x/records/keeper/grpc_query_lsm_deposits_test.go index 2556d8ed91..01a0275051 100644 --- a/x/records/keeper/grpc_query_lsm_deposits_test.go +++ b/x/records/keeper/grpc_query_lsm_deposits_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (s *KeeperTestSuite) TestLSMDeposit() { diff --git a/x/records/keeper/grpc_query_params.go b/x/records/keeper/grpc_query_params.go index 679c60d2e2..bcda155152 100644 --- a/x/records/keeper/grpc_query_params.go +++ b/x/records/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/records/keeper/grpc_query_params_test.go b/x/records/keeper/grpc_query_params_test.go index 9ee2118cd6..52318a5873 100644 --- a/x/records/keeper/grpc_query_params_test.go +++ b/x/records/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/records/keeper/grpc_query_user_redemption_record.go b/x/records/keeper/grpc_query_user_redemption_record.go index 60f892dde0..e6ddcf1664 100644 --- a/x/records/keeper/grpc_query_user_redemption_record.go +++ b/x/records/keeper/grpc_query_user_redemption_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) UserRedemptionRecordAll(c context.Context, req *types.QueryAllUserRedemptionRecordRequest) (*types.QueryAllUserRedemptionRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_for_user.go b/x/records/keeper/grpc_query_user_redemption_record_for_user.go index 9955516f6b..0d55a2b010 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_for_user.go +++ b/x/records/keeper/grpc_query_user_redemption_record_for_user.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) UserRedemptionRecordForUser(c context.Context, req *types.QueryAllUserRedemptionRecordForUserRequest) (*types.QueryAllUserRedemptionRecordForUserResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_test.go b/x/records/keeper/grpc_query_user_redemption_record_test.go index 45d6d7d814..13926f55ff 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_test.go +++ b/x/records/keeper/grpc_query_user_redemption_record_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestUserRedemptionRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/ibc.go b/x/records/keeper/ibc.go index 62899910c4..8331df7d0d 100644 --- a/x/records/keeper/ibc.go +++ b/x/records/keeper/ibc.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) // OnAcknowledgementPacket unmarshals the acknowledgement object to determine if the ack was successful and diff --git a/x/records/keeper/keeper.go b/x/records/keeper/keeper.go index 37991924b5..b20c1a21a1 100644 --- a/x/records/keeper/keeper.go +++ b/x/records/keeper/keeper.go @@ -11,9 +11,9 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - icacallbackskeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" + icacallbackskeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) type ( diff --git a/x/records/keeper/keeper_test.go b/x/records/keeper/keeper_test.go index a1e853ab0b..2d45c3ccd5 100644 --- a/x/records/keeper/keeper_test.go +++ b/x/records/keeper/keeper_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" + "github.com/Stride-Labs/stride/v15/app/apptesting" ) const ( diff --git a/x/records/keeper/lsm_token_deposit.go b/x/records/keeper/lsm_token_deposit.go index 2a13ceea21..7e435ca34f 100644 --- a/x/records/keeper/lsm_token_deposit.go +++ b/x/records/keeper/lsm_token_deposit.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (k Keeper) SetLSMTokenDeposit(ctx sdk.Context, deposit types.LSMTokenDeposit) { diff --git a/x/records/keeper/lsm_token_deposit_test.go b/x/records/keeper/lsm_token_deposit_test.go index 505440e345..693a14c593 100644 --- a/x/records/keeper/lsm_token_deposit_test.go +++ b/x/records/keeper/lsm_token_deposit_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func (s *KeeperTestSuite) createNLSMTokenDeposit(n int) []types.LSMTokenDeposit { diff --git a/x/records/keeper/params.go b/x/records/keeper/params.go index 6cedd125f6..5599f410eb 100644 --- a/x/records/keeper/params.go +++ b/x/records/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // GetParams get all parameters as types.Params diff --git a/x/records/keeper/params_test.go b/x/records/keeper/params_test.go index 36f78f59bc..b8970c7de6 100644 --- a/x/records/keeper/params_test.go +++ b/x/records/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestGetParams(t *testing.T) { diff --git a/x/records/keeper/transfer.go b/x/records/keeper/transfer.go index 93ce51ca37..95fc25c092 100644 --- a/x/records/keeper/transfer.go +++ b/x/records/keeper/transfer.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) var ( diff --git a/x/records/keeper/transfer_test.go b/x/records/keeper/transfer_test.go index ef586a7fec..d37f8443e6 100644 --- a/x/records/keeper/transfer_test.go +++ b/x/records/keeper/transfer_test.go @@ -9,8 +9,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" ) type TransferTestCase struct { diff --git a/x/records/keeper/user_redemption_record.go b/x/records/keeper/user_redemption_record.go index 0f914db182..708fc33070 100644 --- a/x/records/keeper/user_redemption_record.go +++ b/x/records/keeper/user_redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // SetUserRedemptionRecord set a specific userRedemptionRecord in the store diff --git a/x/records/keeper/user_redemption_record_test.go b/x/records/keeper/user_redemption_record_test.go index 9666f17ad7..b8d21c10bd 100644 --- a/x/records/keeper/user_redemption_record_test.go +++ b/x/records/keeper/user_redemption_record_test.go @@ -9,10 +9,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/records/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func createNUserRedemptionRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.UserRedemptionRecord { diff --git a/x/records/migrations/v2/convert.go b/x/records/migrations/v2/convert.go index 4c4437c325..7337663827 100644 --- a/x/records/migrations/v2/convert.go +++ b/x/records/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldrecordstypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" ) func convertToNewDepositRecord(oldDepositRecord oldrecordstypes.DepositRecord) recordstypes.DepositRecord { diff --git a/x/records/migrations/v2/convert_test.go b/x/records/migrations/v2/convert_test.go index 30bb92ad4a..94c9d085b7 100644 --- a/x/records/migrations/v2/convert_test.go +++ b/x/records/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - oldrecordstypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestConvertDepositRecord(t *testing.T) { diff --git a/x/records/migrations/v2/migrations.go b/x/records/migrations/v2/migrations.go index 03ae11b012..621f05a090 100644 --- a/x/records/migrations/v2/migrations.go +++ b/x/records/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldrecordtypes "github.com/Stride-Labs/stride/v14/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + oldrecordtypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" ) func migrateDepositRecord(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/records/module.go b/x/records/module.go index 960dfe67cf..e286278150 100644 --- a/x/records/module.go +++ b/x/records/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/records/client/cli" - "github.com/Stride-Labs/stride/v14/x/records/keeper" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/client/cli" + "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/types" ) var ( diff --git a/x/records/module_ibc.go b/x/records/module_ibc.go index 9cb3ddf58d..b3630b702b 100644 --- a/x/records/module_ibc.go +++ b/x/records/module_ibc.go @@ -12,7 +12,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v14/x/records/keeper" + "github.com/Stride-Labs/stride/v15/x/records/keeper" ) // IBC MODULE IMPLEMENTATION diff --git a/x/records/module_simulation.go b/x/records/module_simulation.go index dfdc4a3987..6b81b635c7 100644 --- a/x/records/module_simulation.go +++ b/x/records/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v14/testutil/sample" - recordssimulation "github.com/Stride-Labs/stride/v14/x/records/simulation" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/testutil/sample" + recordssimulation "github.com/Stride-Labs/stride/v15/x/records/simulation" + "github.com/Stride-Labs/stride/v15/x/records/types" ) // avoid unused import issue diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index d1c0f80479..24a5dae337 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xc3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0x69, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0x5f, 0x96, 0x19, 0x9a, 0xe8, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, - 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa6, 0xfa, 0x6a, 0x3a, 0x01, 0x00, 0x00, + 0x5f, 0x96, 0x19, 0x9a, 0xea, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, + 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x36, 0x71, 0xcf, 0x3a, 0x01, 0x00, 0x00, } func (m *TransferCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index 6a80c1ea3b..2c2259884d 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -133,31 +133,31 @@ func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_ var fileDescriptor_98cfd0253c8b6797 = []byte{ // 418 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x8e, 0x93, 0x40, - 0x1c, 0xc7, 0xc1, 0xc5, 0xae, 0x3b, 0x6b, 0x4c, 0x64, 0x37, 0x15, 0xdb, 0x4a, 0x89, 0xf1, 0xc0, - 0x45, 0xb0, 0xb5, 0x77, 0x93, 0xaa, 0x31, 0xc6, 0x9a, 0x18, 0xb0, 0x97, 0x5e, 0x08, 0x30, 0x13, + 0x1c, 0xc7, 0xc1, 0xc5, 0xae, 0x3b, 0x6b, 0x4c, 0x64, 0x9b, 0x8a, 0x6d, 0xa5, 0xc4, 0x78, 0xe0, + 0x22, 0xd8, 0xaa, 0x67, 0x93, 0xaa, 0x31, 0xc6, 0x9a, 0x18, 0xb0, 0x97, 0x5e, 0x08, 0x30, 0x13, 0x3a, 0xb1, 0x30, 0x64, 0x66, 0x30, 0xfa, 0x16, 0x3e, 0x56, 0x8f, 0xbd, 0xe9, 0xc9, 0x98, 0xf6, 0x45, 0x0c, 0x33, 0xd3, 0xa6, 0x10, 0xf6, 0xc4, 0xf0, 0xfb, 0x7d, 0xff, 0x7c, 0x26, 0x19, 0x30, - 0x62, 0x9c, 0x62, 0x88, 0x7c, 0x8a, 0x52, 0x42, 0x21, 0xf3, 0x33, 0x54, 0x20, 0x86, 0x99, 0x57, - 0x52, 0xc2, 0x89, 0xf9, 0x48, 0x6e, 0x3d, 0xb5, 0x1d, 0x0c, 0x5b, 0xea, 0x32, 0xa6, 0x71, 0xae, - 0xc4, 0x83, 0x76, 0x94, 0xfa, 0xaa, 0xed, 0x6d, 0x46, 0x32, 0x22, 0x8e, 0x7e, 0x7d, 0x92, 0xd3, - 0xe7, 0xbf, 0x0d, 0xf0, 0xf0, 0x83, 0xac, 0x0c, 0x79, 0xcc, 0x91, 0x39, 0x03, 0x3d, 0x19, 0x6a, - 0xe9, 0x8e, 0xee, 0x5e, 0x4f, 0xfb, 0x5e, 0x13, 0xc1, 0xfb, 0x22, 0xb6, 0x73, 0x63, 0xfb, 0x77, - 0xac, 0x05, 0x4a, 0x6b, 0x3e, 0x01, 0x97, 0x25, 0xa1, 0x3c, 0xc2, 0xd0, 0xba, 0xe7, 0xe8, 0xee, - 0x55, 0xd0, 0xab, 0x7f, 0x3f, 0x42, 0x13, 0x83, 0x61, 0xc5, 0x10, 0x8d, 0x28, 0x82, 0x28, 0x2f, - 0x39, 0x26, 0x45, 0x24, 0x83, 0xa2, 0x0d, 0x66, 0xdc, 0xba, 0x70, 0x2e, 0xdc, 0xeb, 0xe9, 0x8b, - 0x76, 0xc7, 0x92, 0x21, 0x1a, 0x9c, 0x1c, 0x81, 0x98, 0xaa, 0x46, 0xab, 0xea, 0xd8, 0x2d, 0x30, - 0xe3, 0xe6, 0x1b, 0x30, 0xba, 0xa3, 0x2a, 0x25, 0x55, 0xc1, 0x2d, 0xc3, 0xd1, 0x5d, 0x23, 0x78, - 0xda, 0xe5, 0x7f, 0x5b, 0x0b, 0x6a, 0x56, 0x54, 0x92, 0x74, 0x1d, 0x55, 0x45, 0x42, 0x0a, 0x88, - 0x8b, 0xac, 0xc1, 0x7a, 0xbf, 0x9b, 0xf5, 0x7d, 0x6d, 0x59, 0x1e, 0x1d, 0x4d, 0x56, 0xd4, 0xb1, - 0x13, 0xac, 0x21, 0xb8, 0x81, 0xa8, 0x24, 0x0c, 0xf3, 0x46, 0xc5, 0xa5, 0xa8, 0x78, 0xd6, 0xae, - 0x78, 0x27, 0xa5, 0x8d, 0xec, 0xc7, 0xf0, 0x7c, 0x28, 0x42, 0x5f, 0x81, 0xdb, 0x56, 0xa8, 0xbc, - 0xf8, 0x03, 0x71, 0x71, 0xb3, 0x61, 0x90, 0x37, 0x5e, 0x81, 0xfe, 0x86, 0xe5, 0x11, 0x27, 0xdf, - 0x50, 0x11, 0x1d, 0xbd, 0x82, 0xe4, 0x4a, 0x90, 0x8c, 0xdb, 0x24, 0x8b, 0xf0, 0xf3, 0xd7, 0x5a, + 0x66, 0x9c, 0x62, 0x88, 0x7c, 0x8a, 0x52, 0x42, 0x21, 0xf3, 0x33, 0x54, 0x20, 0x86, 0x99, 0x57, + 0x52, 0xc2, 0x89, 0xf9, 0x40, 0x6e, 0x3d, 0xb5, 0x1d, 0x8e, 0x5a, 0xea, 0x32, 0xa6, 0x71, 0xae, + 0xc4, 0xc3, 0x76, 0x94, 0xfa, 0xaa, 0x6d, 0x3f, 0x23, 0x19, 0x11, 0x47, 0xbf, 0x3e, 0xc9, 0xe9, + 0xd3, 0xdf, 0x06, 0xb8, 0xff, 0x41, 0x56, 0x86, 0x3c, 0xe6, 0xc8, 0x7c, 0x05, 0x7a, 0x32, 0xd4, + 0xd2, 0x1d, 0xdd, 0xbd, 0x9e, 0x0d, 0xbc, 0x26, 0x82, 0xf7, 0x45, 0x6c, 0xe7, 0xc6, 0xf6, 0xef, + 0x44, 0x0b, 0x94, 0xd6, 0x7c, 0x04, 0x2e, 0x4b, 0x42, 0x79, 0x84, 0xa1, 0x75, 0xc7, 0xd1, 0xdd, + 0xab, 0xa0, 0x57, 0xff, 0x7e, 0x84, 0x26, 0x06, 0xa3, 0x8a, 0x21, 0x1a, 0x51, 0x04, 0x51, 0x5e, + 0x72, 0x4c, 0x8a, 0x48, 0x06, 0x45, 0x1b, 0xcc, 0xb8, 0x75, 0xe1, 0x5c, 0xb8, 0xd7, 0xb3, 0x67, + 0xed, 0x8e, 0x25, 0x43, 0x34, 0x38, 0x39, 0x02, 0x31, 0x55, 0x8d, 0x56, 0xd5, 0xb1, 0x5b, 0x60, + 0xc6, 0xcd, 0x37, 0x60, 0x7c, 0x4b, 0x55, 0x4a, 0xaa, 0x82, 0x5b, 0x86, 0xa3, 0xbb, 0x46, 0xf0, + 0xb8, 0xcb, 0xff, 0xb6, 0x16, 0xd4, 0xac, 0xa8, 0x24, 0xe9, 0x3a, 0xaa, 0x8a, 0x84, 0x14, 0x10, + 0x17, 0x59, 0x83, 0xf5, 0x6e, 0x37, 0xeb, 0xfb, 0xda, 0xb2, 0x3c, 0x3a, 0x9a, 0xac, 0xa8, 0x63, + 0x27, 0x58, 0x43, 0x70, 0x03, 0x51, 0x49, 0x18, 0xe6, 0x8d, 0x8a, 0x4b, 0x51, 0xf1, 0xa4, 0x5d, + 0xf1, 0x4e, 0x4a, 0x1b, 0xd9, 0x0f, 0xe1, 0xf9, 0x50, 0x84, 0xbe, 0x00, 0xfd, 0x56, 0xa8, 0xbc, + 0xf8, 0x3d, 0x71, 0x71, 0xb3, 0x61, 0x90, 0x37, 0x5e, 0x81, 0xc1, 0x86, 0xe5, 0x11, 0x27, 0xdf, + 0x50, 0x11, 0x1d, 0xbd, 0x82, 0xe4, 0x4a, 0x90, 0x4c, 0xda, 0x24, 0x8b, 0xf0, 0xf3, 0xd7, 0x5a, 0xac, 0x88, 0x14, 0xcb, 0xcd, 0x86, 0xe5, 0xe7, 0xe3, 0x9a, 0x66, 0xfe, 0x69, 0xbb, 0xb7, 0xf5, 0xdd, 0xde, 0xd6, 0xff, 0xed, 0x6d, 0xfd, 0xd7, 0xc1, 0xd6, 0x76, 0x07, 0x5b, 0xfb, 0x73, 0xb0, - 0xb5, 0xd5, 0x24, 0xc3, 0x7c, 0x5d, 0x25, 0x5e, 0x4a, 0x72, 0x3f, 0x14, 0xf9, 0x2f, 0x17, 0x71, - 0xc2, 0x7c, 0xf5, 0x7c, 0xbf, 0x4f, 0x66, 0xfe, 0x8f, 0xd3, 0x23, 0xe6, 0x3f, 0x4b, 0xc4, 0x92, - 0x9e, 0x78, 0xad, 0xaf, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x44, 0x2e, 0x44, 0xb9, 0x2e, 0x03, + 0xb5, 0xd5, 0x34, 0xc3, 0x7c, 0x5d, 0x25, 0x5e, 0x4a, 0x72, 0x3f, 0x14, 0xf9, 0xcf, 0x17, 0x71, + 0xc2, 0x7c, 0xf5, 0x7c, 0xbf, 0x4f, 0x5f, 0xfb, 0x3f, 0x4e, 0x8f, 0x98, 0xff, 0x2c, 0x11, 0x4b, + 0x7a, 0xe2, 0xb5, 0xbe, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x4a, 0xbe, 0xcf, 0x1c, 0x2e, 0x03, 0x00, 0x00, } diff --git a/x/records/types/genesis_test.go b/x/records/types/genesis_test.go index e94e44ce58..397f02ccfe 100644 --- a/x/records/types/genesis_test.go +++ b/x/records/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/records/types" + "github.com/Stride-Labs/stride/v15/x/records/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/records/types/params.pb.go b/x/records/types/params.pb.go index 11511c9dd7..d18889b7e8 100644 --- a/x/records/types/params.pb.go +++ b/x/records/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_5d92633ea4bee482 = []byte{ 0xb8, 0xd8, 0x02, 0xc0, 0xf2, 0x4e, 0xde, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x98, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0xd6, - 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x44, 0xbf, 0x02, 0x6e, 0x5b, + 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0x6e, 0x5b, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x36, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x03, 0x1a, 0x3f, 0x1c, 0x8c, 0x00, 0x00, 0x00, + 0x0d, 0x8a, 0xb4, 0xb9, 0x8c, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index 83b4a70ad3..de1b21ba7c 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -1118,82 +1118,82 @@ func init() { func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25e7cc311be81f7b) } var fileDescriptor_25e7cc311be81f7b = []byte{ - // 1191 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xc7, 0xb3, 0x79, 0x6d, 0x9e, 0xb4, 0x21, 0x4c, 0xad, 0x34, 0xb8, 0xa9, 0x93, 0x6e, 0xaa, - 0xbe, 0x24, 0xa9, 0x07, 0xa7, 0x41, 0x15, 0xad, 0x50, 0xe5, 0x06, 0xd2, 0x84, 0xa6, 0x55, 0x71, - 0xe8, 0x25, 0x12, 0x6c, 0xd7, 0xde, 0x89, 0xb3, 0x8a, 0xbd, 0xe3, 0xee, 0xac, 0x23, 0x8c, 0xf1, - 0x85, 0x13, 0x47, 0xa4, 0x7e, 0x03, 0x10, 0xdf, 0x80, 0x0f, 0x80, 0x38, 0xe5, 0xc0, 0xa1, 0x15, - 0x97, 0x9e, 0x10, 0x4a, 0xf8, 0x08, 0x9c, 0x11, 0xf2, 0xcc, 0xac, 0xed, 0xb5, 0x67, 0xd7, 0x76, - 0x64, 0x0e, 0x9c, 0xe2, 0x9d, 0x79, 0xe6, 0x79, 0x7e, 0xff, 0x67, 0x9e, 0x79, 0x0b, 0xc4, 0x99, - 0xe7, 0xda, 0x16, 0xc1, 0x2e, 0xc9, 0x51, 0xd7, 0x62, 0xf8, 0x65, 0x99, 0xb8, 0x95, 0x64, 0xc9, - 0xa5, 0x1e, 0x45, 0xd3, 0xa2, 0x2f, 0x29, 0xfb, 0xe2, 0xf3, 0x6d, 0xb6, 0xf2, 0xaf, 0xb0, 0x8e, - 0x5f, 0x6e, 0xeb, 0x2d, 0x99, 0xae, 0x59, 0xf4, 0x3b, 0x63, 0x79, 0x9a, 0xa7, 0xfc, 0x27, 0xae, - 0xff, 0x92, 0xad, 0xf3, 0x79, 0x4a, 0xf3, 0x05, 0x82, 0xcd, 0x92, 0x8d, 0x4d, 0xc7, 0xa1, 0x9e, - 0xe9, 0xd9, 0xd4, 0xf1, 0xc7, 0x2c, 0xe7, 0x28, 0x2b, 0x52, 0x86, 0xb3, 0x26, 0x23, 0x82, 0x0b, - 0x1f, 0xa5, 0xb2, 0xc4, 0x33, 0x53, 0xb8, 0x64, 0xe6, 0x6d, 0x87, 0x1b, 0x0b, 0x5b, 0x3d, 0x06, - 0xe8, 0xb3, 0xba, 0xc5, 0x33, 0x1e, 0x34, 0x43, 0x5e, 0x96, 0x09, 0xf3, 0xf4, 0xc7, 0x70, 0x31, - 0xd0, 0xca, 0x4a, 0xd4, 0x61, 0x04, 0xad, 0xc3, 0xb8, 0x80, 0x9b, 0xd3, 0x16, 0xb5, 0x9b, 0x53, - 0x6b, 0xb3, 0xc9, 0xa0, 0xd0, 0xa4, 0xb0, 0x7f, 0x38, 0x7a, 0xfc, 0xc7, 0xc2, 0x50, 0x46, 0xda, - 0xea, 0x49, 0x98, 0xe7, 0xce, 0x1e, 0x11, 0xef, 0x63, 0x52, 0xa2, 0xcc, 0xf6, 0x32, 0xdc, 0x5c, - 0x06, 0x43, 0xd3, 0x30, 0x6c, 0x5b, 0xdc, 0xe3, 0x68, 0x66, 0xd8, 0xb6, 0xf4, 0x43, 0xb8, 0x12, - 0x62, 0x2f, 0x31, 0x3e, 0x85, 0x69, 0x4b, 0x74, 0x18, 0x22, 0xb0, 0xc4, 0xb9, 0xd2, 0x8e, 0x13, - 0x18, 0x2e, 0xa9, 0x2e, 0x58, 0xad, 0x8d, 0xfa, 0xbe, 0x84, 0x4b, 0x17, 0x0a, 0x4a, 0xb8, 0x4d, - 0x80, 0x66, 0xce, 0x64, 0x9c, 0xeb, 0x49, 0x91, 0xe0, 0x64, 0x3d, 0xc1, 0x49, 0x31, 0xf1, 0x32, - 0xc1, 0xc9, 0x67, 0x66, 0x9e, 0xc8, 0xb1, 0x99, 0x96, 0x91, 0xfa, 0xcf, 0x9a, 0x54, 0xd5, 0x19, - 0x28, 0x42, 0xd5, 0xc8, 0xd9, 0x54, 0xa1, 0x47, 0x01, 0xea, 0x61, 0x4e, 0x7d, 0xa3, 0x2b, 0xb5, - 0x00, 0x09, 0x60, 0x6f, 0xc0, 0x02, 0xa7, 0x0e, 0xc6, 0xac, 0x6c, 0x51, 0xe6, 0xf9, 0x19, 0x5a, - 0x84, 0xf3, 0x07, 0x94, 0x79, 0xc6, 0xd7, 0xd4, 0x21, 0x86, 0x9c, 0xc8, 0xc9, 0x0c, 0xd4, 0xdb, - 0xf6, 0xa8, 0x43, 0xb6, 0x2d, 0xdd, 0x81, 0xc5, 0x70, 0x27, 0x83, 0x57, 0xaf, 0x7f, 0x00, 0x4b, - 0x7e, 0x01, 0x3d, 0x67, 0xc4, 0xcd, 0x10, 0x8b, 0x14, 0x4b, 0x75, 0x39, 0x61, 0x75, 0x37, 0xc9, - 0xeb, 0xee, 0x3b, 0x0d, 0xae, 0x45, 0x8f, 0x93, 0xac, 0x2f, 0x60, 0xb6, 0xcc, 0x88, 0x6b, 0xb8, - 0x0d, 0x83, 0x60, 0x1d, 0x5e, 0x6b, 0x67, 0x56, 0x79, 0x93, 0xe8, 0xb1, 0xb2, 0xa2, 0x4f, 0x2f, - 0x4a, 0x05, 0xe9, 0x42, 0x21, 0x4a, 0xc1, 0xa0, 0x8a, 0xf3, 0x8d, 0xaf, 0x3c, 0x34, 0x5e, 0x0f, - 0xca, 0x47, 0x06, 0xa1, 0x7c, 0x70, 0x95, 0xfb, 0x46, 0x83, 0xe5, 0x28, 0x4d, 0x9b, 0xd4, 0x15, - 0xcd, 0x22, 0x95, 0xef, 0xc1, 0xb9, 0xdc, 0x81, 0x69, 0x3b, 0xcd, 0x0a, 0x9e, 0xe0, 0xdf, 0xdb, - 0x16, 0x9a, 0x81, 0x11, 0xcb, 0xac, 0x70, 0x96, 0xd1, 0x4c, 0xfd, 0x27, 0x9a, 0x83, 0x09, 0xd3, - 0xb2, 0x5c, 0xc2, 0xd8, 0xdc, 0x88, 0xb0, 0x95, 0x9f, 0x28, 0x06, 0x63, 0x05, 0xbb, 0x68, 0x7b, - 0x73, 0xa3, 0xdc, 0x5a, 0x7c, 0xb4, 0xcd, 0xd3, 0xd8, 0x99, 0xe7, 0xe9, 0xad, 0x06, 0x2b, 0x3d, - 0x69, 0xfa, 0xff, 0x4d, 0xd7, 0x56, 0x73, 0xcd, 0x7e, 0x52, 0xa2, 0xb9, 0x83, 0xe7, 0x4e, 0x96, - 0x3a, 0x96, 0xed, 0xe4, 0x83, 0x15, 0x7f, 0x15, 0xce, 0x93, 0x7a, 0xb7, 0xe1, 0x94, 0x8b, 0x59, - 0xe2, 0xca, 0x53, 0x63, 0x8a, 0xb7, 0x3d, 0xe5, 0x4d, 0x81, 0x65, 0xac, 0x76, 0xd5, 0xcc, 0x8e, - 0xf0, 0x55, 0xf6, 0x0d, 0xba, 0x2c, 0x63, 0x95, 0x37, 0x3f, 0x3b, 0x44, 0xd1, 0xd7, 0xba, 0x8c, - 0xa3, 0x44, 0xfd, 0x17, 0xcb, 0xf8, 0xcc, 0xca, 0x47, 0x06, 0xa1, 0x7c, 0x70, 0x75, 0xb1, 0x0d, - 0xb3, 0x5c, 0xd2, 0xce, 0xee, 0x93, 0xc6, 0xce, 0xdf, 0x75, 0xc5, 0xc6, 0x60, 0xcc, 0x22, 0x0e, - 0x2d, 0xf2, 0xc0, 0x93, 0x19, 0xf1, 0xa1, 0xef, 0xc1, 0xa5, 0x0e, 0x57, 0x32, 0x21, 0x0f, 0x60, - 0x42, 0x1e, 0x21, 0x32, 0xfd, 0x0b, 0xed, 0x19, 0xd8, 0xd9, 0x7d, 0xf2, 0x39, 0x3d, 0x24, 0x8e, - 0x1c, 0x29, 0xc5, 0xfb, 0xa3, 0xf4, 0x4a, 0x87, 0x6f, 0xd6, 0x03, 0xe7, 0x0a, 0xbc, 0x7b, 0x64, - 0x16, 0x6c, 0xcb, 0xf4, 0xa8, 0x6b, 0xf8, 0x3b, 0x8a, 0x60, 0x9e, 0x69, 0x74, 0xa4, 0xe5, 0xd6, - 0x32, 0x0b, 0xe3, 0xcc, 0x33, 0xbd, 0xb2, 0xbf, 0xe7, 0xc8, 0x2f, 0xfd, 0x0b, 0x98, 0xeb, 0x0c, - 0x2d, 0x75, 0xa5, 0xe1, 0x9c, 0x24, 0x64, 0x72, 0x6a, 0x7b, 0x14, 0xd6, 0x18, 0xb6, 0xf6, 0xf7, - 0x3b, 0x30, 0xc6, 0xfd, 0xa3, 0x6f, 0x60, 0x5c, 0xdc, 0xef, 0x90, 0xde, 0xee, 0xa4, 0xf3, 0x0a, - 0x19, 0x5f, 0x8a, 0xb4, 0x11, 0x7c, 0xfa, 0xad, 0x6f, 0x7f, 0xff, 0xeb, 0xd5, 0xf0, 0x12, 0xba, - 0x8a, 0x77, 0xb9, 0xf1, 0x8e, 0x99, 0x65, 0x58, 0x79, 0x1d, 0x46, 0xbf, 0x6a, 0x10, 0x53, 0x6d, - 0x4f, 0xe8, 0x8e, 0x32, 0x50, 0xf4, 0xd9, 0x1f, 0x5f, 0xef, 0x6f, 0x90, 0xc4, 0x7d, 0xc0, 0x71, - 0x3f, 0x44, 0x77, 0x25, 0xee, 0x6d, 0x15, 0xaf, 0x7a, 0xc7, 0xc5, 0x55, 0xdb, 0xaa, 0xa1, 0x5f, - 0x34, 0xb8, 0xa4, 0x8a, 0x90, 0x2e, 0x14, 0x42, 0x74, 0x44, 0xdf, 0x00, 0x42, 0x74, 0x74, 0x39, - 0xc6, 0xf5, 0x7b, 0x5c, 0xc7, 0x3a, 0x5a, 0xeb, 0x5f, 0x07, 0xfa, 0x47, 0x83, 0xcb, 0x11, 0x67, - 0x0f, 0xba, 0xd7, 0x0f, 0x51, 0xf0, 0x10, 0x8e, 0xdf, 0x3f, 0xd3, 0x58, 0x29, 0x6a, 0x9f, 0x8b, - 0x7a, 0x81, 0xbe, 0xec, 0x5f, 0x94, 0xb1, 0x4f, 0x5d, 0xa3, 0xde, 0x85, 0xab, 0xfe, 0x52, 0xad, - 0xe1, 0xaa, 0x65, 0x56, 0x6a, 0xb8, 0x2a, 0x97, 0x65, 0x0d, 0x57, 0xf9, 0x59, 0x5e, 0x43, 0xbf, - 0x69, 0x10, 0x53, 0xed, 0x87, 0xe1, 0x85, 0x18, 0xb1, 0xf7, 0x87, 0x17, 0x62, 0xd4, 0x06, 0xae, - 0x6f, 0x73, 0xad, 0x1b, 0x28, 0x1d, 0xa5, 0x55, 0xbd, 0xc5, 0xe3, 0x6a, 0xeb, 0x01, 0x2a, 0x4a, - 0x52, 0x15, 0x2b, 0xb2, 0x24, 0xfb, 0x57, 0xd4, 0xe5, 0x48, 0xea, 0xad, 0x24, 0xd5, 0x8a, 0xd0, - 0x4f, 0x1a, 0x5c, 0x08, 0x3c, 0x0b, 0xd0, 0x6a, 0x58, 0x56, 0x55, 0x6f, 0xbc, 0xf8, 0xed, 0x1e, - 0xad, 0x25, 0xea, 0x5d, 0x8e, 0x9a, 0x42, 0x38, 0x0a, 0x35, 0xf8, 0x98, 0x11, 0xab, 0xff, 0x47, - 0x0d, 0x66, 0x02, 0x2e, 0xeb, 0x39, 0x5e, 0x0d, 0x4b, 0x57, 0x1f, 0xa8, 0x61, 0x6f, 0x4a, 0x7d, - 0x8d, 0xa3, 0xae, 0xa2, 0xe5, 0xde, 0x51, 0xd1, 0xb1, 0x06, 0x17, 0x15, 0x2f, 0x35, 0x84, 0x95, - 0xa1, 0xc3, 0x1f, 0x86, 0xf1, 0xf7, 0x7b, 0x1f, 0x20, 0x71, 0x9f, 0x72, 0xdc, 0x2d, 0xb4, 0xd9, - 0x3b, 0xae, 0x91, 0xad, 0x18, 0x8d, 0xe7, 0x27, 0xae, 0xb6, 0xbe, 0x44, 0x6b, 0xe8, 0x07, 0x0d, - 0xa0, 0x79, 0x2c, 0xa2, 0xeb, 0x4a, 0xa0, 0x8e, 0x9b, 0x45, 0xfc, 0x46, 0x57, 0x3b, 0xc9, 0xbb, - 0xc1, 0x79, 0x3f, 0x42, 0xf7, 0x55, 0xbc, 0xcc, 0x33, 0x0f, 0x89, 0x9d, 0xcd, 0xe1, 0x02, 0x2b, - 0x1a, 0x12, 0x3a, 0xb8, 0xbf, 0xd4, 0x6f, 0x25, 0x35, 0xf4, 0x4a, 0x83, 0xa9, 0x96, 0xb3, 0x1b, - 0x75, 0x8b, 0xde, 0x38, 0x61, 0x6f, 0x76, 0x37, 0x94, 0x9c, 0x29, 0xce, 0xb9, 0x82, 0x6e, 0xf5, - 0xca, 0xc9, 0x1e, 0x3e, 0x3e, 0x3e, 0x49, 0x68, 0xaf, 0x4f, 0x12, 0xda, 0x9f, 0x27, 0x09, 0xed, - 0xfb, 0xd3, 0xc4, 0xd0, 0xeb, 0xd3, 0xc4, 0xd0, 0xdb, 0xd3, 0xc4, 0xd0, 0x5e, 0x2a, 0x6f, 0x7b, - 0x07, 0xe5, 0x6c, 0x32, 0x47, 0x8b, 0x2a, 0x77, 0x47, 0xa9, 0x75, 0xfc, 0x55, 0x63, 0xb2, 0xbc, - 0x4a, 0x89, 0xb0, 0xec, 0x38, 0xff, 0x5f, 0xd3, 0x9d, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8a, - 0x27, 0xc7, 0xd0, 0x34, 0x13, 0x00, 0x00, + // 1193 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4f, 0x4f, 0x1b, 0xc7, + 0x1b, 0xc7, 0x59, 0xfe, 0x86, 0x87, 0x84, 0x1f, 0xbf, 0x89, 0x45, 0xa8, 0x43, 0x0c, 0x59, 0xa2, + 0xfc, 0x01, 0xe2, 0xa9, 0x09, 0x51, 0xd4, 0x44, 0x55, 0xe4, 0xd0, 0x12, 0x68, 0x48, 0x94, 0x9a, + 0xe6, 0x82, 0xd4, 0x6e, 0xd6, 0xde, 0xc1, 0xac, 0xb0, 0x77, 0x9c, 0x9d, 0x35, 0xaa, 0xeb, 0xfa, + 0xd2, 0x53, 0x8f, 0x95, 0xf2, 0x0e, 0x5a, 0xf5, 0x1d, 0xf4, 0x05, 0x54, 0x3d, 0x71, 0xe8, 0x21, + 0x51, 0x2f, 0x39, 0x55, 0x15, 0xf4, 0x25, 0xf4, 0x5c, 0x55, 0x9e, 0x99, 0xb5, 0xbd, 0xf6, 0xec, + 0xda, 0x46, 0xee, 0xa1, 0x27, 0xbc, 0x33, 0xcf, 0x3c, 0xcf, 0xe7, 0xfb, 0xcc, 0x33, 0xff, 0x80, + 0x38, 0xf3, 0x5c, 0xdb, 0x22, 0xd8, 0x25, 0x39, 0xea, 0x5a, 0x0c, 0xbf, 0x2a, 0x13, 0xb7, 0x92, + 0x2c, 0xb9, 0xd4, 0xa3, 0x68, 0x5a, 0xf4, 0x25, 0x65, 0x5f, 0x7c, 0xbe, 0xcd, 0x56, 0xfe, 0x15, + 0xd6, 0xf1, 0xcb, 0x6d, 0xbd, 0x25, 0xd3, 0x35, 0x8b, 0x7e, 0x67, 0x2c, 0x4f, 0xf3, 0x94, 0xff, + 0xc4, 0xf5, 0x5f, 0xb2, 0x75, 0x3e, 0x4f, 0x69, 0xbe, 0x40, 0xb0, 0x59, 0xb2, 0xb1, 0xe9, 0x38, + 0xd4, 0x33, 0x3d, 0x9b, 0x3a, 0xfe, 0x98, 0xe5, 0x1c, 0x65, 0x45, 0xca, 0x70, 0xd6, 0x64, 0x44, + 0x70, 0xe1, 0xa3, 0x54, 0x96, 0x78, 0x66, 0x0a, 0x97, 0xcc, 0xbc, 0xed, 0x70, 0x63, 0x61, 0xab, + 0xc7, 0x00, 0x7d, 0x5a, 0xb7, 0x78, 0xce, 0x83, 0x66, 0xc8, 0xab, 0x32, 0x61, 0x9e, 0xfe, 0x04, + 0x2e, 0x06, 0x5a, 0x59, 0x89, 0x3a, 0x8c, 0xa0, 0x75, 0x18, 0x17, 0x70, 0x73, 0xda, 0xa2, 0x76, + 0x73, 0x6a, 0x6d, 0x36, 0x19, 0x14, 0x9a, 0x14, 0xf6, 0x8f, 0x46, 0x8f, 0x7f, 0x5f, 0x18, 0xca, + 0x48, 0x5b, 0x3d, 0x09, 0xf3, 0xdc, 0xd9, 0x63, 0xe2, 0x7d, 0x44, 0x4a, 0x94, 0xd9, 0x5e, 0x86, + 0x9b, 0xcb, 0x60, 0x68, 0x1a, 0x86, 0x6d, 0x8b, 0x7b, 0x1c, 0xcd, 0x0c, 0xdb, 0x96, 0x7e, 0x08, + 0x57, 0x42, 0xec, 0x25, 0xc6, 0x27, 0x30, 0x6d, 0x89, 0x0e, 0x43, 0x04, 0x96, 0x38, 0x57, 0xda, + 0x71, 0x02, 0xc3, 0x25, 0xd5, 0x05, 0xab, 0xb5, 0x51, 0xdf, 0x97, 0x70, 0xe9, 0x42, 0x41, 0x09, + 0xb7, 0x09, 0xd0, 0xcc, 0x99, 0x8c, 0x73, 0x3d, 0x29, 0x12, 0x9c, 0xac, 0x27, 0x38, 0x29, 0x26, + 0x5e, 0x26, 0x38, 0xf9, 0xdc, 0xcc, 0x13, 0x39, 0x36, 0xd3, 0x32, 0x52, 0xff, 0x49, 0x93, 0xaa, + 0x3a, 0x03, 0x45, 0xa8, 0x1a, 0x39, 0x9b, 0x2a, 0xf4, 0x38, 0x40, 0x3d, 0xcc, 0xa9, 0x6f, 0x74, + 0xa5, 0x16, 0x20, 0x01, 0xec, 0x0d, 0x58, 0xe0, 0xd4, 0xc1, 0x98, 0x95, 0x2d, 0xca, 0x3c, 0x3f, + 0x43, 0x8b, 0x70, 0xfe, 0x80, 0x32, 0xcf, 0xf8, 0x8a, 0x3a, 0xc4, 0x90, 0x13, 0x39, 0x99, 0x81, + 0x7a, 0xdb, 0x1e, 0x75, 0xc8, 0xb6, 0xa5, 0x3b, 0xb0, 0x18, 0xee, 0x64, 0xf0, 0xea, 0xf5, 0xbb, + 0xb0, 0xe4, 0x17, 0xd0, 0x0b, 0x46, 0xdc, 0x0c, 0xb1, 0x48, 0xb1, 0x54, 0x97, 0x13, 0x56, 0x77, + 0x93, 0xbc, 0xee, 0xbe, 0xd5, 0xe0, 0x5a, 0xf4, 0x38, 0xc9, 0xfa, 0x12, 0x66, 0xcb, 0x8c, 0xb8, + 0x86, 0xdb, 0x30, 0x08, 0xd6, 0xe1, 0xb5, 0x76, 0x66, 0x95, 0x37, 0x89, 0x1e, 0x2b, 0x2b, 0xfa, + 0xf4, 0xa2, 0x54, 0x90, 0x2e, 0x14, 0xa2, 0x14, 0x0c, 0xaa, 0x38, 0xdf, 0xfa, 0xca, 0x43, 0xe3, + 0xf5, 0xa0, 0x7c, 0x64, 0x10, 0xca, 0x07, 0x57, 0xb9, 0x6f, 0x35, 0x58, 0x8e, 0xd2, 0xb4, 0x49, + 0x5d, 0xd1, 0x2c, 0x52, 0xf9, 0x1e, 0x9c, 0xcb, 0x1d, 0x98, 0xb6, 0xd3, 0xac, 0xe0, 0x09, 0xfe, + 0xbd, 0x6d, 0xa1, 0x19, 0x18, 0xb1, 0xcc, 0x0a, 0x67, 0x19, 0xcd, 0xd4, 0x7f, 0xa2, 0x39, 0x98, + 0x30, 0x2d, 0xcb, 0x25, 0x8c, 0xcd, 0x8d, 0x08, 0x5b, 0xf9, 0x89, 0x62, 0x30, 0x56, 0xb0, 0x8b, + 0xb6, 0x37, 0x37, 0xca, 0xad, 0xc5, 0x47, 0xdb, 0x3c, 0x8d, 0x9d, 0x79, 0x9e, 0xde, 0x69, 0xb0, + 0xd2, 0x93, 0xa6, 0xff, 0xde, 0x74, 0x6d, 0x35, 0xd7, 0xec, 0xc7, 0x25, 0x9a, 0x3b, 0x78, 0xe1, + 0x64, 0xa9, 0x63, 0xd9, 0x4e, 0x3e, 0x58, 0xf1, 0x57, 0xe1, 0x3c, 0xa9, 0x77, 0x1b, 0x4e, 0xb9, + 0x98, 0x25, 0xae, 0x3c, 0x35, 0xa6, 0x78, 0xdb, 0x33, 0xde, 0x14, 0x58, 0xc6, 0x6a, 0x57, 0xcd, + 0xec, 0x08, 0x5f, 0x65, 0xdf, 0xa0, 0xcb, 0x32, 0x56, 0x79, 0xf3, 0xb3, 0x43, 0x14, 0x7d, 0xad, + 0xcb, 0x38, 0x4a, 0xd4, 0xbf, 0xb1, 0x8c, 0xcf, 0xac, 0x7c, 0x64, 0x10, 0xca, 0x07, 0x57, 0x17, + 0xdb, 0x30, 0xcb, 0x25, 0xed, 0xec, 0x3e, 0x6d, 0xec, 0xfc, 0x5d, 0x57, 0x6c, 0x0c, 0xc6, 0x2c, + 0xe2, 0xd0, 0x22, 0x0f, 0x3c, 0x99, 0x11, 0x1f, 0xfa, 0x1e, 0x5c, 0xea, 0x70, 0x25, 0x13, 0xf2, + 0x10, 0x26, 0xe4, 0x11, 0x22, 0xd3, 0xbf, 0xd0, 0x9e, 0x81, 0x9d, 0xdd, 0xa7, 0x9f, 0xd1, 0x43, + 0xe2, 0xc8, 0x91, 0x52, 0xbc, 0x3f, 0x4a, 0xaf, 0x74, 0xf8, 0x66, 0x3d, 0x70, 0xae, 0xc0, 0xff, + 0x8f, 0xcc, 0x82, 0x6d, 0x99, 0x1e, 0x75, 0x0d, 0x7f, 0x47, 0x11, 0xcc, 0x33, 0x8d, 0x8e, 0xb4, + 0xdc, 0x5a, 0x66, 0x61, 0x9c, 0x79, 0xa6, 0x57, 0xf6, 0xf7, 0x1c, 0xf9, 0xa5, 0x7f, 0x0e, 0x73, + 0x9d, 0xa1, 0xa5, 0xae, 0x34, 0x9c, 0x93, 0x84, 0x4c, 0x4e, 0x6d, 0x8f, 0xc2, 0x1a, 0xc3, 0xd6, + 0xfe, 0xfa, 0x1f, 0x8c, 0x71, 0xff, 0xe8, 0x6b, 0x18, 0x17, 0xf7, 0x3b, 0xa4, 0xb7, 0x3b, 0xe9, + 0xbc, 0x42, 0xc6, 0x97, 0x22, 0x6d, 0x04, 0x9f, 0x7e, 0xeb, 0x9b, 0xdf, 0xfe, 0x7c, 0x3d, 0xbc, + 0x84, 0xae, 0xe2, 0x5d, 0x6e, 0xbc, 0x63, 0x66, 0x19, 0x56, 0x5e, 0x87, 0xd1, 0x2f, 0x1a, 0xc4, + 0x54, 0xdb, 0x13, 0xba, 0xa3, 0x0c, 0x14, 0x7d, 0xf6, 0xc7, 0xd7, 0xfb, 0x1b, 0x24, 0x71, 0x1f, + 0x72, 0xdc, 0x0f, 0xd0, 0x3d, 0x89, 0x7b, 0x5b, 0xc5, 0xab, 0xde, 0x71, 0x71, 0xd5, 0xb6, 0x6a, + 0xe8, 0x67, 0x0d, 0x2e, 0xa9, 0x22, 0xa4, 0x0b, 0x85, 0x10, 0x1d, 0xd1, 0x37, 0x80, 0x10, 0x1d, + 0x5d, 0x8e, 0x71, 0xfd, 0x3e, 0xd7, 0xb1, 0x8e, 0xd6, 0xfa, 0xd7, 0x81, 0xfe, 0xd6, 0xe0, 0x72, + 0xc4, 0xd9, 0x83, 0xee, 0xf7, 0x43, 0x14, 0x3c, 0x84, 0xe3, 0x0f, 0xce, 0x34, 0x56, 0x8a, 0xda, + 0xe7, 0xa2, 0x5e, 0xa2, 0x2f, 0xfa, 0x17, 0x65, 0xec, 0x53, 0xd7, 0xa8, 0x77, 0xe1, 0xaa, 0xbf, + 0x54, 0x6b, 0xb8, 0x6a, 0x99, 0x95, 0x1a, 0xae, 0xca, 0x65, 0x59, 0xc3, 0x55, 0x7e, 0x96, 0xd7, + 0xd0, 0xaf, 0x1a, 0xc4, 0x54, 0xfb, 0x61, 0x78, 0x21, 0x46, 0xec, 0xfd, 0xe1, 0x85, 0x18, 0xb5, + 0x81, 0xeb, 0xdb, 0x5c, 0xeb, 0x06, 0x4a, 0x47, 0x69, 0x55, 0x6f, 0xf1, 0xb8, 0xda, 0x7a, 0x80, + 0x8a, 0x92, 0x54, 0xc5, 0x8a, 0x2c, 0xc9, 0xfe, 0x15, 0x75, 0x39, 0x92, 0x7a, 0x2b, 0x49, 0xb5, + 0x22, 0xf4, 0xa3, 0x06, 0x17, 0x02, 0xcf, 0x02, 0xb4, 0x1a, 0x96, 0x55, 0xd5, 0x1b, 0x2f, 0x7e, + 0xbb, 0x47, 0x6b, 0x89, 0x7a, 0x8f, 0xa3, 0xa6, 0x10, 0x8e, 0x42, 0x0d, 0x3e, 0x66, 0xc4, 0xea, + 0xff, 0x41, 0x83, 0x99, 0x80, 0xcb, 0x7a, 0x8e, 0x57, 0xc3, 0xd2, 0xd5, 0x07, 0x6a, 0xd8, 0x9b, + 0x52, 0x5f, 0xe3, 0xa8, 0xab, 0x68, 0xb9, 0x77, 0x54, 0x74, 0xac, 0xc1, 0x45, 0xc5, 0x4b, 0x0d, + 0x61, 0x65, 0xe8, 0xf0, 0x87, 0x61, 0xfc, 0xfd, 0xde, 0x07, 0x48, 0xdc, 0x67, 0x1c, 0x77, 0x0b, + 0x6d, 0xf6, 0x8e, 0x6b, 0x64, 0x2b, 0x46, 0xe3, 0xf9, 0x89, 0xab, 0xad, 0x2f, 0xd1, 0x1a, 0xfa, + 0x5e, 0x03, 0x68, 0x1e, 0x8b, 0xe8, 0xba, 0x12, 0xa8, 0xe3, 0x66, 0x11, 0xbf, 0xd1, 0xd5, 0x4e, + 0xf2, 0x6e, 0x70, 0xde, 0x0f, 0xd1, 0x03, 0x15, 0x2f, 0xf3, 0xcc, 0x43, 0x62, 0x67, 0x73, 0xb8, + 0xc0, 0x8a, 0x86, 0x84, 0x0e, 0xee, 0x2f, 0xf5, 0x5b, 0x49, 0x0d, 0xbd, 0xd6, 0x60, 0xaa, 0xe5, + 0xec, 0x46, 0xdd, 0xa2, 0x37, 0x4e, 0xd8, 0x9b, 0xdd, 0x0d, 0x25, 0x67, 0x8a, 0x73, 0xae, 0xa0, + 0x5b, 0xbd, 0x72, 0xb2, 0x47, 0x4f, 0x8e, 0x4f, 0x12, 0xda, 0x9b, 0x93, 0x84, 0xf6, 0xc7, 0x49, + 0x42, 0xfb, 0xee, 0x34, 0x31, 0xf4, 0xe6, 0x34, 0x31, 0xf4, 0xee, 0x34, 0x31, 0xb4, 0x97, 0xca, + 0xdb, 0xde, 0x41, 0x39, 0x9b, 0xcc, 0xd1, 0xa2, 0xca, 0xdd, 0x51, 0xea, 0x2e, 0xfe, 0xb2, 0x31, + 0x59, 0x5e, 0xa5, 0x44, 0x58, 0x76, 0x9c, 0xff, 0xaf, 0xe9, 0xce, 0x3f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0x84, 0xb7, 0x4c, 0x75, 0x34, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go index 5253725534..e22c5dcf4a 100644 --- a/x/records/types/records.pb.go +++ b/x/records/types/records.pb.go @@ -589,7 +589,7 @@ var fileDescriptor_295ee594cc85d8ca = []byte{ // 999 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc1, 0x8e, 0xda, 0x46, 0x18, 0x5e, 0x83, 0xd7, 0xc0, 0x9f, 0xc0, 0x7a, 0x67, 0x49, 0xe2, 0xa5, 0x0d, 0x21, 0xa8, 0x89, - 0x90, 0xaa, 0x98, 0xee, 0xb6, 0xea, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, + 0x90, 0xaa, 0x98, 0xee, 0x56, 0xed, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, 0xa0, 0xa9, 0xf6, 0x50, 0xcb, 0xd8, 0xa3, 0x65, 0xb4, 0xc1, 0x83, 0x3c, 0x06, 0xb5, 0xbd, 0xf4, 0x15, 0x7a, 0xe8, 0x2b, 0x54, 0x7d, 0x82, 0xbe, 0x43, 0x4e, 0x55, 0x8e, 0x55, 0x0f, 0x51, 0xb5, 0x7b, 0xe8, 0x6b, 0x54, 0x1e, 0x1b, 0x03, 0x26, 0x69, 0xa4, 0x6d, 0x4f, 0x30, 0xdf, 0x37, 0xf3, @@ -648,8 +648,8 @@ var fileDescriptor_295ee594cc85d8ca = []byte{ 0xd4, 0x7a, 0xfa, 0xf2, 0xb2, 0x2a, 0xbc, 0xba, 0xac, 0x0a, 0x7f, 0x5d, 0x56, 0x85, 0x9f, 0xae, 0xaa, 0x5b, 0xaf, 0xae, 0xaa, 0x5b, 0x7f, 0x5c, 0x55, 0xb7, 0xce, 0x0e, 0x56, 0xd4, 0xef, 0x73, 0x2d, 0x1e, 0x75, 0xec, 0x11, 0x6b, 0xc6, 0x1f, 0x2e, 0xf3, 0x83, 0x4f, 0x9a, 0xdf, 0x25, 0x9f, - 0x2f, 0xfc, 0x32, 0x46, 0x12, 0xff, 0xee, 0xf8, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x96, - 0xa6, 0x7d, 0xe0, 0xdd, 0x08, 0x00, 0x00, + 0x2f, 0xfc, 0x32, 0x46, 0x12, 0xff, 0xee, 0xf8, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x98, + 0x36, 0xf6, 0x45, 0xdd, 0x08, 0x00, 0x00, } func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/client/cli/query.go b/x/stakeibc/client/cli/query.go index 00a7d8db56..070d267e12 100644 --- a/x/stakeibc/client/cli/query.go +++ b/x/stakeibc/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/stakeibc/client/cli/query_epoch_tracker.go b/x/stakeibc/client/cli/query_epoch_tracker.go index 7891ee77ca..c29a3d3f82 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker.go +++ b/x/stakeibc/client/cli/query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdListEpochTracker() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_epoch_tracker_test.go b/x/stakeibc/client/cli/query_epoch_tracker_test.go index 4f09f3a82e..a080857865 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker_test.go +++ b/x/stakeibc/client/cli/query_epoch_tracker_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/testutil/network" - "github.com/Stride-Labs/stride/v14/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v15/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/client/cli/query_host_zone.go b/x/stakeibc/client/cli/query_host_zone.go index 4a281043e1..254896db6d 100644 --- a/x/stakeibc/client/cli/query_host_zone.go +++ b/x/stakeibc/client/cli/query_host_zone.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdListHostZone() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_module_address.go b/x/stakeibc/client/cli/query_module_address.go index 378a7f7971..178e181470 100644 --- a/x/stakeibc/client/cli/query_module_address.go +++ b/x/stakeibc/client/cli/query_module_address.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/query_next_packet_sequence.go b/x/stakeibc/client/cli/query_next_packet_sequence.go index 70efcae51a..f83c96c1c0 100644 --- a/x/stakeibc/client/cli/query_next_packet_sequence.go +++ b/x/stakeibc/client/cli/query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdNextPacketSequence() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_params.go b/x/stakeibc/client/cli/query_params.go index e66617ee3f..6e46f36bcb 100644 --- a/x/stakeibc/client/cli/query_params.go +++ b/x/stakeibc/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_register_ica.go b/x/stakeibc/client/cli/query_register_ica.go index e19d283f55..bb531b586f 100644 --- a/x/stakeibc/client/cli/query_register_ica.go +++ b/x/stakeibc/client/cli/query_register_ica.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdShowInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_validator.go b/x/stakeibc/client/cli/query_validator.go index f36039daa0..1bd7aef4a3 100644 --- a/x/stakeibc/client/cli/query_validator.go +++ b/x/stakeibc/client/cli/query_validator.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdShowValidators() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index eb78bb5340..c58b818b89 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/stakeibc/client/cli/tx_add_validators.go b/x/stakeibc/client/cli/tx_add_validators.go index fba4faeeec..b2e7979cdd 100644 --- a/x/stakeibc/client/cli/tx_add_validators.go +++ b/x/stakeibc/client/cli/tx_add_validators.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ValidatorsList struct { diff --git a/x/stakeibc/client/cli/tx_add_validators_proposal.go b/x/stakeibc/client/cli/tx_add_validators_proposal.go index c9bf3e06b6..2e63a99b8e 100644 --- a/x/stakeibc/client/cli/tx_add_validators_proposal.go +++ b/x/stakeibc/client/cli/tx_add_validators_proposal.go @@ -18,7 +18,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func parseAddValidatorsProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.AddValidatorsProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_calibrate_delegation.go b/x/stakeibc/client/cli/tx_calibrate_delegation.go index 42df00e22a..72d58a0d3a 100644 --- a/x/stakeibc/client/cli/tx_calibrate_delegation.go +++ b/x/stakeibc/client/cli/tx_calibrate_delegation.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdCalibrateDelegation() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_change_validator_weight.go b/x/stakeibc/client/cli/tx_change_validator_weight.go index cfd3ae757d..3d7dc6acf1 100644 --- a/x/stakeibc/client/cli/tx_change_validator_weight.go +++ b/x/stakeibc/client/cli/tx_change_validator_weight.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go index 140272777c..1b7b1f352b 100644 --- a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go +++ b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_clear_balance.go b/x/stakeibc/client/cli/tx_clear_balance.go index 2f5a0dcee3..88576f2c8d 100644 --- a/x/stakeibc/client/cli/tx_clear_balance.go +++ b/x/stakeibc/client/cli/tx_clear_balance.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_delete_validator.go b/x/stakeibc/client/cli/tx_delete_validator.go index 5e92a3aa6b..cb75dbcd18 100644 --- a/x/stakeibc/client/cli/tx_delete_validator.go +++ b/x/stakeibc/client/cli/tx_delete_validator.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdDeleteValidator() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_liquid_stake.go b/x/stakeibc/client/cli/tx_liquid_stake.go index e755267f29..8ce3c50d65 100644 --- a/x/stakeibc/client/cli/tx_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_liquid_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go index 5fabb919e5..239f26af9c 100644 --- a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdLSMLiquidStake() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_rebalance_validators.go b/x/stakeibc/client/cli/tx_rebalance_validators.go index 23baae933a..ff9306c7bd 100644 --- a/x/stakeibc/client/cli/tx_rebalance_validators.go +++ b/x/stakeibc/client/cli/tx_rebalance_validators.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_redeem_stake.go b/x/stakeibc/client/cli/tx_redeem_stake.go index ed5a9597d2..6fd8c26b33 100644 --- a/x/stakeibc/client/cli/tx_redeem_stake.go +++ b/x/stakeibc/client/cli/tx_redeem_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_register_host_zone.go b/x/stakeibc/client/cli/tx_register_host_zone.go index 38072bd1c7..d0456a894f 100644 --- a/x/stakeibc/client/cli/tx_register_host_zone.go +++ b/x/stakeibc/client/cli/tx_register_host_zone.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/client/cli/tx_restore_interchain_account.go b/x/stakeibc/client/cli/tx_restore_interchain_account.go index 2022888103..33ebc3396c 100644 --- a/x/stakeibc/client/cli/tx_restore_interchain_account.go +++ b/x/stakeibc/client/cli/tx_restore_interchain_account.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdRestoreInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go index 9615b48852..733822d7f0 100644 --- a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go +++ b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go @@ -16,7 +16,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func parseToggleLSMProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.ToggleLSMProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_undelegate_host.go b/x/stakeibc/client/cli/tx_undelegate_host.go index f928937d35..eaf516d10b 100644 --- a/x/stakeibc/client/cli/tx_undelegate_host.go +++ b/x/stakeibc/client/cli/tx_undelegate_host.go @@ -11,7 +11,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_update_delegation.go b/x/stakeibc/client/cli/tx_update_delegation.go index 5fe4dc90b3..0c52fdf1d6 100644 --- a/x/stakeibc/client/cli/tx_update_delegation.go +++ b/x/stakeibc/client/cli/tx_update_delegation.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go b/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go index 216cf92f9b..227eded745 100644 --- a/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func CmdUpdateInnerRedemptionRateBounds() *cobra.Command { diff --git a/x/stakeibc/client/proposal_handler.go b/x/stakeibc/client/proposal_handler.go index 5f9c1ce50b..db056c22ed 100644 --- a/x/stakeibc/client/proposal_handler.go +++ b/x/stakeibc/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v14/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v15/x/stakeibc/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/stakeibc/genesis.go b/x/stakeibc/genesis.go index 1c3c10b0d5..a6c2ddf853 100644 --- a/x/stakeibc/genesis.go +++ b/x/stakeibc/genesis.go @@ -3,8 +3,8 @@ package stakeibc import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/stakeibc/genesis_test.go b/x/stakeibc/genesis_test.go index bd6cd25caf..27cd6f2ff0 100644 --- a/x/stakeibc/genesis_test.go +++ b/x/stakeibc/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/stakeibc" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/stakeibc" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestGenesis(t *testing.T) { diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index 809d604611..ba216c46bd 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -9,8 +9,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Handles stakeibc transactions diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index a9b0f26847..7f3f3c2e01 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -11,8 +11,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/stakeibc/keeper/abci.go b/x/stakeibc/keeper/abci.go index 63d6f5d68e..ce6d79824b 100644 --- a/x/stakeibc/keeper/abci.go +++ b/x/stakeibc/keeper/abci.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go index ec6df96e90..56b4e43f7a 100644 --- a/x/stakeibc/keeper/consumer.go +++ b/x/stakeibc/keeper/consumer.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Register new stTokens to the consumer reward denom whitelist diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index 8fea68cef0..7b7c5012a2 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { diff --git a/x/stakeibc/keeper/deposit_records.go b/x/stakeibc/keeper/deposit_records.go index b0a82e6738..d0a80a70a5 100644 --- a/x/stakeibc/keeper/deposit_records.go +++ b/x/stakeibc/keeper/deposit_records.go @@ -11,9 +11,9 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Create a new deposit record for each host zone for the given epoch diff --git a/x/stakeibc/keeper/deposit_records_test.go b/x/stakeibc/keeper/deposit_records_test.go index b8c36ffcd6..d533827d75 100644 --- a/x/stakeibc/keeper/deposit_records_test.go +++ b/x/stakeibc/keeper/deposit_records_test.go @@ -10,10 +10,10 @@ import ( sdkmath "cosmossdk.io/math" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type TestDepositRecords struct { diff --git a/x/stakeibc/keeper/epoch_elapsed_shares_test.go b/x/stakeibc/keeper/epoch_elapsed_shares_test.go index 97d6855a28..8a21d654db 100644 --- a/x/stakeibc/keeper/epoch_elapsed_shares_test.go +++ b/x/stakeibc/keeper/epoch_elapsed_shares_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // These are used to indicate that the value does not matter for the sake of the test diff --git a/x/stakeibc/keeper/epoch_tracker.go b/x/stakeibc/keeper/epoch_tracker.go index f25667a32f..5899392c9c 100644 --- a/x/stakeibc/keeper/epoch_tracker.go +++ b/x/stakeibc/keeper/epoch_tracker.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // SetEpochTracker set a specific epochTracker in the store from its index diff --git a/x/stakeibc/keeper/epoch_tracker_test.go b/x/stakeibc/keeper/epoch_tracker_test.go index 279a789a6c..5494c0558a 100644 --- a/x/stakeibc/keeper/epoch_tracker_test.go +++ b/x/stakeibc/keeper/epoch_tracker_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/events.go b/x/stakeibc/keeper/events.go index 2c1c14cd82..19ef490f32 100644 --- a/x/stakeibc/keeper/events.go +++ b/x/stakeibc/keeper/events.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Emits a successful liquid stake event, and displays metadata such as the stToken amount diff --git a/x/stakeibc/keeper/gov.go b/x/stakeibc/keeper/gov.go index 209823935f..e0f1b5bde3 100644 --- a/x/stakeibc/keeper/gov.go +++ b/x/stakeibc/keeper/gov.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) AddValidatorsProposal(ctx sdk.Context, msg *types.AddValidatorsProposal) error { diff --git a/x/stakeibc/keeper/grpc_query.go b/x/stakeibc/keeper/grpc_query.go index da0679e758..d25971c44f 100644 --- a/x/stakeibc/keeper/grpc_query.go +++ b/x/stakeibc/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/stakeibc/keeper/grpc_query_address_unbondings.go b/x/stakeibc/keeper/grpc_query_address_unbondings.go index 8d0650abdd..6a10b5d1d9 100644 --- a/x/stakeibc/keeper/grpc_query_address_unbondings.go +++ b/x/stakeibc/keeper/grpc_query_address_unbondings.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const nanosecondsInDay = 86400000000000 diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker.go b/x/stakeibc/keeper/grpc_query_epoch_tracker.go index 9675cb30c8..c2e8a424d7 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) EpochTrackerAll(c context.Context, req *types.QueryAllEpochTrackerRequest) (*types.QueryAllEpochTrackerResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go index 8988410b1b..4048e5841a 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go @@ -9,9 +9,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/grpc_query_host_zone.go b/x/stakeibc/keeper/grpc_query_host_zone.go index 74ef304223..3011b81b10 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone.go +++ b/x/stakeibc/keeper/grpc_query_host_zone.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) HostZoneAll(c context.Context, req *types.QueryAllHostZoneRequest) (*types.QueryAllHostZoneResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_host_zone_test.go b/x/stakeibc/keeper/grpc_query_host_zone_test.go index ee5b7463f7..ff4d6ffe03 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone_test.go +++ b/x/stakeibc/keeper/grpc_query_host_zone_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestHostZoneQuerySingle(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_module_address.go b/x/stakeibc/keeper/grpc_query_module_address.go index 99d6fb1de1..6b82c07541 100644 --- a/x/stakeibc/keeper/grpc_query_module_address.go +++ b/x/stakeibc/keeper/grpc_query_module_address.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) ModuleAddress(goCtx context.Context, req *types.QueryModuleAddressRequest) (*types.QueryModuleAddressResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go index 7cc8c64858..69fa4bd33d 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) NextPacketSequence(c context.Context, req *types.QueryGetNextPacketSequenceRequest) (*types.QueryGetNextPacketSequenceResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go index bcc5546262..801e9923e1 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (s *KeeperTestSuite) TestNextPacketSequenceQuery() { diff --git a/x/stakeibc/keeper/grpc_query_params.go b/x/stakeibc/keeper/grpc_query_params.go index 71376498ab..59856d34d7 100644 --- a/x/stakeibc/keeper/grpc_query_params.go +++ b/x/stakeibc/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_params_test.go b/x/stakeibc/keeper/grpc_query_params_test.go index 0a0f7a915f..d54ac9f80a 100644 --- a/x/stakeibc/keeper/grpc_query_params_test.go +++ b/x/stakeibc/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_register_ica.go b/x/stakeibc/keeper/grpc_query_register_ica.go index 035e662c35..03e21c3e7d 100644 --- a/x/stakeibc/keeper/grpc_query_register_ica.go +++ b/x/stakeibc/keeper/grpc_query_register_ica.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // InterchainAccountFromAddress implements the Query/InterchainAccountFromAddress gRPC method diff --git a/x/stakeibc/keeper/grpc_query_validator.go b/x/stakeibc/keeper/grpc_query_validator.go index cb93005526..427bb35788 100644 --- a/x/stakeibc/keeper/grpc_query_validator.go +++ b/x/stakeibc/keeper/grpc_query_validator.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k Keeper) Validators(c context.Context, req *types.QueryGetValidatorsRequest) (*types.QueryGetValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_validator_test.go b/x/stakeibc/keeper/grpc_query_validator_test.go index a13b8c8bcb..9c4643db5e 100644 --- a/x/stakeibc/keeper/grpc_query_validator_test.go +++ b/x/stakeibc/keeper/grpc_query_validator_test.go @@ -8,9 +8,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestValidatorQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index d87d92dfd7..d9c167fc8c 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icaoracletypes "github.com/Stride-Labs/stride/v14/x/icaoracle/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icaoracletypes "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const StrideEpochsPerDayEpoch = uint64(4) diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index 720b4a4a0b..587b9f3f57 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -13,8 +13,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // SetHostZone set a specific hostZone in the store diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index e8fcd15562..3463cb56ff 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -9,10 +9,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/testutil/nullify" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/testutil/nullify" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.HostZone { diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index a611929806..48000aba89 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" ) const ( diff --git a/x/stakeibc/keeper/icacallbacks_claim.go b/x/stakeibc/keeper/icacallbacks_claim.go index eb1531bd61..91d21dfcd5 100644 --- a/x/stakeibc/keeper/icacallbacks_claim.go +++ b/x/stakeibc/keeper/icacallbacks_claim.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_claim_test.go b/x/stakeibc/keeper/icacallbacks_claim_test.go index c8a3dc349a..10abda7eab 100644 --- a/x/stakeibc/keeper/icacallbacks_claim_test.go +++ b/x/stakeibc/keeper/icacallbacks_claim_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ClaimCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index 7479b0f413..df9eeec22a 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -6,11 +6,11 @@ import ( "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index 04d7c42d0e..de68907c9c 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -6,10 +6,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type DelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go index 05a6c907ec..7edf1819c4 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // ICACallback after an LSM token is detokenized into native stake diff --git a/x/stakeibc/keeper/icacallbacks_detokenize_test.go b/x/stakeibc/keeper/icacallbacks_detokenize_test.go index c01759c676..ced2911efa 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize_test.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize_test.go @@ -6,10 +6,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type DetokenizeCallbackTestCase struct { diff --git a/x/stakeibc/keeper/icacallbacks_rebalance.go b/x/stakeibc/keeper/icacallbacks_rebalance.go index c0d74b7ec0..bca3d498da 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance.go @@ -3,9 +3,9 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_rebalance_test.go b/x/stakeibc/keeper/icacallbacks_rebalance_test.go index 4e06c80424..ddc84178f1 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance_test.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance_test.go @@ -6,9 +6,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type RebalanceCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_redemption.go b/x/stakeibc/keeper/icacallbacks_redemption.go index 3ac13d960f..039927dec7 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption.go +++ b/x/stakeibc/keeper/icacallbacks_redemption.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_redemption_test.go b/x/stakeibc/keeper/icacallbacks_redemption_test.go index ba00408a23..beac3d42a8 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption_test.go +++ b/x/stakeibc/keeper/icacallbacks_redemption_test.go @@ -7,10 +7,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type RedemptionCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_reinvest.go b/x/stakeibc/keeper/icacallbacks_reinvest.go index df240d79b5..259f35295b 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest.go @@ -8,13 +8,13 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/utils" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_reinvest_test.go b/x/stakeibc/keeper/icacallbacks_reinvest_test.go index 47439b5f43..eaff53d5de 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest_test.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest_test.go @@ -9,16 +9,16 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ReinvestCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index b452293134..cd44fa4516 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index f281270a7c..1343366e64 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -10,10 +10,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type UndelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index a134243c40..3c4518d08d 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" ) const ( diff --git a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go index 4032321d39..f258a16a29 100644 --- a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go +++ b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go @@ -6,9 +6,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v14/utils" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index 2a38e74013..65a2c95c61 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -12,9 +12,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index bb98b10a70..be94762956 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -11,9 +11,9 @@ import ( "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type DelegatorSharesICQCallbackArgs struct { diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance.go b/x/stakeibc/keeper/icqcallbacks_fee_balance.go index cb3a026f20..2a417a3f8f 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance.go @@ -11,11 +11,11 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/utils" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // FeeBalanceCallback is a callback handler for FeeBalnce queries. diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go index 9b16eceac9..a2de89d60e 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go @@ -6,10 +6,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type FeeBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index 1cc31605c6..eaa3f7f4ed 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -9,9 +9,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v14/utils" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // ValidatorCallback is a callback handler for validator queries. diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index 572f5fa108..275be7bf28 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -13,10 +13,10 @@ import ( "github.com/cosmos/cosmos-sdk/types/bech32" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ValidatorICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go index fa71dec6c6..c067d6ca6e 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go @@ -12,11 +12,11 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/utils" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // WithdrawalBalanceCallback is a callback handler for WithdrawalBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go index 9e1731e77f..8aa9340f8d 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go @@ -7,11 +7,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type WithdrawalBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/invariants.go b/x/stakeibc/keeper/invariants.go index c267748624..867c89d590 100644 --- a/x/stakeibc/keeper/invariants.go +++ b/x/stakeibc/keeper/invariants.go @@ -5,7 +5,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" ) // RegisterInvariants registers all governance invariants. diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index 82a1e83bf5..05b80a29a8 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - icqkeeper "github.com/Stride-Labs/stride/v14/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -23,9 +23,9 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v14/x/icacallbacks/keeper" - recordsmodulekeeper "github.com/Stride-Labs/stride/v14/x/records/keeper" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + recordsmodulekeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" ) type ( diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index 90b564ca50..f2d9da7148 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/lsm.go b/x/stakeibc/keeper/lsm.go index ebdbbdec3d..419c6e5f37 100644 --- a/x/stakeibc/keeper/lsm.go +++ b/x/stakeibc/keeper/lsm.go @@ -16,8 +16,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go index edf7e0b7f2..b3db081344 100644 --- a/x/stakeibc/keeper/lsm_test.go +++ b/x/stakeibc/keeper/lsm_test.go @@ -9,9 +9,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" "github.com/cosmos/gogoproto/proto" ) diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index 8971ddbde6..b1569cbc3d 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type msgServer struct { diff --git a/x/stakeibc/keeper/msg_server_add_validators.go b/x/stakeibc/keeper/msg_server_add_validators.go index a8edda2f64..6e1e279f62 100644 --- a/x/stakeibc/keeper/msg_server_add_validators.go +++ b/x/stakeibc/keeper/msg_server_add_validators.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) AddValidators(goCtx context.Context, msg *types.MsgAddValidators) (*types.MsgAddValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_add_validators_test.go b/x/stakeibc/keeper/msg_server_add_validators_test.go index 6596f244b7..ecedaacd74 100644 --- a/x/stakeibc/keeper/msg_server_add_validators_test.go +++ b/x/stakeibc/keeper/msg_server_add_validators_test.go @@ -11,7 +11,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type AddValidatorsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_calibrate_delegation.go b/x/stakeibc/keeper/msg_server_calibrate_delegation.go index 995f1b7365..ab44eabe26 100644 --- a/x/stakeibc/keeper/msg_server_calibrate_delegation.go +++ b/x/stakeibc/keeper/msg_server_calibrate_delegation.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Submits an ICQ to get the validator's delegated shares diff --git a/x/stakeibc/keeper/msg_server_change_validator_weight.go b/x/stakeibc/keeper/msg_server_change_validator_weight.go index 565ba020dd..608c663165 100644 --- a/x/stakeibc/keeper/msg_server_change_validator_weight.go +++ b/x/stakeibc/keeper/msg_server_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) ChangeValidatorWeight(goCtx context.Context, msg *types.MsgChangeValidatorWeight) (*types.MsgChangeValidatorWeightResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go index a2cf440e0b..d486381c11 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go @@ -4,15 +4,15 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" proto "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type IcaTx struct { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go index bc77b3094d..22870b9a96 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go @@ -11,10 +11,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ClaimUndelegatedState struct { diff --git a/x/stakeibc/keeper/msg_server_clear_balance.go b/x/stakeibc/keeper/msg_server_clear_balance.go index e3aa0f78fd..d07070783a 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance.go +++ b/x/stakeibc/keeper/msg_server_clear_balance.go @@ -10,7 +10,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalance) (*types.MsgClearBalanceResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_clear_balance_test.go b/x/stakeibc/keeper/msg_server_clear_balance_test.go index 27325a6c1f..f0bad7920d 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance_test.go +++ b/x/stakeibc/keeper/msg_server_clear_balance_test.go @@ -9,8 +9,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ClearBalanceState struct { diff --git a/x/stakeibc/keeper/msg_server_delete_validator.go b/x/stakeibc/keeper/msg_server_delete_validator.go index 69e592298e..dd23f26edb 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator.go +++ b/x/stakeibc/keeper/msg_server_delete_validator.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) DeleteValidator(goCtx context.Context, msg *types.MsgDeleteValidator) (*types.MsgDeleteValidatorResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_delete_validator_test.go b/x/stakeibc/keeper/msg_server_delete_validator_test.go index 4de8c16c12..08859f7ec4 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator_test.go +++ b/x/stakeibc/keeper/msg_server_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type DeleteValidatorTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_liquid_stake.go b/x/stakeibc/keeper/msg_server_liquid_stake.go index 57f4eb2843..64d20b8283 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Exchanges a user's native tokens for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_liquid_stake_test.go index 3816927416..efdd7cbe3d 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type Account struct { diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go index 415a41c5df..a458c7eb7d 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go @@ -8,9 +8,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/gogoproto/proto" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Exchanges a user's LSM tokenized shares for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go index 4b968438ae..63ba579752 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go @@ -10,10 +10,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type LSMLiquidStakeTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators.go b/x/stakeibc/keeper/msg_server_rebalance_validators.go index 1c620533d9..a51d2bb6f4 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) RebalanceValidators(goCtx context.Context, msg *types.MsgRebalanceValidators) (*types.MsgRebalanceValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake.go b/x/stakeibc/keeper/msg_server_redeem_stake.go index 7014292c97..b0fa9b52ae 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake.go @@ -4,14 +4,14 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake_test.go b/x/stakeibc/keeper/msg_server_redeem_stake_test.go index 9af9b3c162..9bf676a7b1 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake_test.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type RedeemStakeState struct { diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index fd991ccc0e..3f3b649be1 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v14/utils" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/msg_server_register_host_zone_test.go b/x/stakeibc/keeper/msg_server_register_host_zone_test.go index 7a8485e03b..2aab36b504 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone_test.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone_test.go @@ -12,10 +12,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type RegisterHostZoneTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account.go b/x/stakeibc/keeper/msg_server_restore_interchain_account.go index 385879d29c..a943122314 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.MsgRestoreInterchainAccount) (*types.MsgRestoreInterchainAccountResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go index 4215bd078a..32ca47e8d1 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go @@ -6,8 +6,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type DepositRecordStatusUpdate struct { diff --git a/x/stakeibc/keeper/msg_server_submit_tx.go b/x/stakeibc/keeper/msg_server_submit_tx.go index 6351c3194e..e9b2f5f12a 100644 --- a/x/stakeibc/keeper/msg_server_submit_tx.go +++ b/x/stakeibc/keeper/msg_server_submit_tx.go @@ -11,19 +11,19 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v14/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v15/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v14/x/interchainquery/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" sdk "github.com/cosmos/cosmos-sdk/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go index 7f2170fc81..4e0bbff4a5 100644 --- a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (k msgServer) UpdateInnerRedemptionRateBounds(goCtx context.Context, msg *types.MsgUpdateInnerRedemptionRateBounds) (*types.MsgUpdateInnerRedemptionRateBoundsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go index 671f567dcb..3386ecde33 100644 --- a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type UpdateInnerRedemptionRateBoundsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go index 6b1a41070e..653f4abbd1 100644 --- a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go +++ b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // This kicks off two ICQs, each with a callback, that will update the number of tokens on a validator diff --git a/x/stakeibc/keeper/msg_undelegate_host.go b/x/stakeibc/keeper/msg_undelegate_host.go index 426671751e..9bd14eb2ee 100644 --- a/x/stakeibc/keeper/msg_undelegate_host.go +++ b/x/stakeibc/keeper/msg_undelegate_host.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const isUndelegateHostPreventedKey = "is-undelegate-host-prevented" diff --git a/x/stakeibc/keeper/params.go b/x/stakeibc/keeper/params.go index c96fec425c..1cefcbc1bd 100644 --- a/x/stakeibc/keeper/params.go +++ b/x/stakeibc/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // GetParams get all parameters as types.Params diff --git a/x/stakeibc/keeper/params_test.go b/x/stakeibc/keeper/params_test.go index c4ed08f09d..e464114174 100644 --- a/x/stakeibc/keeper/params_test.go +++ b/x/stakeibc/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v14/testutil/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestGetParams(t *testing.T) { diff --git a/x/stakeibc/keeper/reward_allocation.go b/x/stakeibc/keeper/reward_allocation.go index 47850f8998..e640f1643b 100644 --- a/x/stakeibc/keeper/reward_allocation.go +++ b/x/stakeibc/keeper/reward_allocation.go @@ -8,7 +8,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // Liquid Stake Reward Collector Balance diff --git a/x/stakeibc/keeper/reward_allocation_test.go b/x/stakeibc/keeper/reward_allocation_test.go index 5e83d15c9e..e5e13af09d 100644 --- a/x/stakeibc/keeper/reward_allocation_test.go +++ b/x/stakeibc/keeper/reward_allocation_test.go @@ -15,9 +15,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func (s *KeeperTestSuite) SetupTestRewardAllocation() { diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index d96222af13..4c9c7ec2c9 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -14,9 +14,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v14/utils" - recordstypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/unbonding_records_cleanup_test.go b/x/stakeibc/keeper/unbonding_records_cleanup_test.go index 8487538926..8d48cd1cae 100644 --- a/x/stakeibc/keeper/unbonding_records_cleanup_test.go +++ b/x/stakeibc/keeper/unbonding_records_cleanup_test.go @@ -4,9 +4,9 @@ import ( sdkmath "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + stakeibc "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type CleanupEpochUnbondingRecordsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go index aa65cdbe62..b071ae85e5 100644 --- a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go +++ b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go @@ -9,10 +9,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type ValidatorUnbonding struct { diff --git a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go index 434eb98e29..e90d304ef3 100644 --- a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go +++ b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type InitiateAllHostZoneUnbondingsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go index 8cbb87bffd..015c420b5a 100644 --- a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go +++ b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go @@ -5,10 +5,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - stakeibc "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + stakeibc "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type SweepUnbondedTokensTestCase struct { diff --git a/x/stakeibc/keeper/undelegate_host.go b/x/stakeibc/keeper/undelegate_host.go index 639624204f..ce51c52630 100644 --- a/x/stakeibc/keeper/undelegate_host.go +++ b/x/stakeibc/keeper/undelegate_host.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v14/utils" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/undelegate_host_test.go b/x/stakeibc/keeper/undelegate_host_test.go index 1867242de8..e0ed72c4cd 100644 --- a/x/stakeibc/keeper/undelegate_host_test.go +++ b/x/stakeibc/keeper/undelegate_host_test.go @@ -9,9 +9,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const UndelegateHostZoneChainId = "evmos_9001-2" // the relevant zone for this test diff --git a/x/stakeibc/keeper/update_redemption_rates_test.go b/x/stakeibc/keeper/update_redemption_rates_test.go index 084046c42d..cc2c60d1ab 100644 --- a/x/stakeibc/keeper/update_redemption_rates_test.go +++ b/x/stakeibc/keeper/update_redemption_rates_test.go @@ -8,9 +8,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - minttypes "github.com/Stride-Labs/stride/v14/x/mint/types" - recordtypes "github.com/Stride-Labs/stride/v14/x/records/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type UpdateRedemptionRateTestCase struct { diff --git a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go index cb8208854e..970c8d2fde 100644 --- a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go +++ b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go @@ -8,7 +8,7 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // ================================ 1: QueryValidatorSharesToTokensRate ============================================= diff --git a/x/stakeibc/keeper/validator_selection.go b/x/stakeibc/keeper/validator_selection.go index 201fb15730..aeb84ebd35 100644 --- a/x/stakeibc/keeper/validator_selection.go +++ b/x/stakeibc/keeper/validator_selection.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v14/utils" - epochstypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/utils" + epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) const RebalanceIcaBatchSize = 5 diff --git a/x/stakeibc/keeper/validator_selection_test.go b/x/stakeibc/keeper/validator_selection_test.go index 7dcd796d67..b92c2057e2 100644 --- a/x/stakeibc/keeper/validator_selection_test.go +++ b/x/stakeibc/keeper/validator_selection_test.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v14/x/epochs/types" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) type RebalanceDelegationsForHostZoneTestCase struct { diff --git a/x/stakeibc/migrations/v2/convert.go b/x/stakeibc/migrations/v2/convert.go index f20be472c9..ef52c42671 100644 --- a/x/stakeibc/migrations/v2/convert.go +++ b/x/stakeibc/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" ) func convertToNewValidator(oldValidator oldstakeibctypes.Validator) stakeibctypes.Validator { diff --git a/x/stakeibc/migrations/v2/convert_test.go b/x/stakeibc/migrations/v2/convert_test.go index 93dcf5073e..b105d3b365 100644 --- a/x/stakeibc/migrations/v2/convert_test.go +++ b/x/stakeibc/migrations/v2/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v2/migrations.go b/x/stakeibc/migrations/v2/migrations.go index 8f00a8e117..2a222dafcf 100644 --- a/x/stakeibc/migrations/v2/migrations.go +++ b/x/stakeibc/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/migrations/v3/convert.go b/x/stakeibc/migrations/v3/convert.go index e642206e62..20b96bf03b 100644 --- a/x/stakeibc/migrations/v3/convert.go +++ b/x/stakeibc/migrations/v3/convert.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/migrations/v3/convert_test.go b/x/stakeibc/migrations/v3/convert_test.go index 0336c03ea5..fc0d536532 100644 --- a/x/stakeibc/migrations/v3/convert_test.go +++ b/x/stakeibc/migrations/v3/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v3/migrations.go b/x/stakeibc/migrations/v3/migrations.go index e7c6edb6a4..5e6cb3ef84 100644 --- a/x/stakeibc/migrations/v3/migrations.go +++ b/x/stakeibc/migrations/v3/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index 2f4a86c952..4f2c8c9ebd 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -19,9 +19,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v14/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/module_simulation.go b/x/stakeibc/module_simulation.go index 29cfa5adeb..90c3ff0e36 100644 --- a/x/stakeibc/module_simulation.go +++ b/x/stakeibc/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v14/testutil/sample" - stakeibcsimulation "github.com/Stride-Labs/stride/v14/x/stakeibc/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/testutil/sample" + stakeibcsimulation "github.com/Stride-Labs/stride/v15/x/stakeibc/simulation" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) // avoid unused import issue diff --git a/x/stakeibc/simulation/add_validator.go b/x/stakeibc/simulation/add_validator.go index 30fc904d78..f395580775 100644 --- a/x/stakeibc/simulation/add_validator.go +++ b/x/stakeibc/simulation/add_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgAddValidator( diff --git a/x/stakeibc/simulation/change_validator_weight.go b/x/stakeibc/simulation/change_validator_weight.go index cd1764f40a..0c8c643f35 100644 --- a/x/stakeibc/simulation/change_validator_weight.go +++ b/x/stakeibc/simulation/change_validator_weight.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgChangeValidatorWeight( diff --git a/x/stakeibc/simulation/claim_undelegated_tokens.go b/x/stakeibc/simulation/claim_undelegated_tokens.go index f1c9ea0b57..2f74e86170 100644 --- a/x/stakeibc/simulation/claim_undelegated_tokens.go +++ b/x/stakeibc/simulation/claim_undelegated_tokens.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgClaimUndelegatedTokens( diff --git a/x/stakeibc/simulation/delete_validator.go b/x/stakeibc/simulation/delete_validator.go index 1ce876d79c..4109335b65 100644 --- a/x/stakeibc/simulation/delete_validator.go +++ b/x/stakeibc/simulation/delete_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgDeleteValidator( diff --git a/x/stakeibc/simulation/liquid_stake.go b/x/stakeibc/simulation/liquid_stake.go index 4e4a3de223..b7ab7021fb 100644 --- a/x/stakeibc/simulation/liquid_stake.go +++ b/x/stakeibc/simulation/liquid_stake.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgLiquidStake( diff --git a/x/stakeibc/simulation/rebalance_validators.go b/x/stakeibc/simulation/rebalance_validators.go index 505402aa4d..f8c679eedc 100644 --- a/x/stakeibc/simulation/rebalance_validators.go +++ b/x/stakeibc/simulation/rebalance_validators.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgRebalanceValidators( diff --git a/x/stakeibc/simulation/restore_interchain_account.go b/x/stakeibc/simulation/restore_interchain_account.go index fbc3818744..14cbbd44ae 100644 --- a/x/stakeibc/simulation/restore_interchain_account.go +++ b/x/stakeibc/simulation/restore_interchain_account.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgRestoreInterchainAccount( diff --git a/x/stakeibc/simulation/update_delegation.go b/x/stakeibc/simulation/update_delegation.go index 7cab584aec..caf55131be 100644 --- a/x/stakeibc/simulation/update_delegation.go +++ b/x/stakeibc/simulation/update_delegation.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v14/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func SimulateMsgUpdateValidatorSharesExchRate( diff --git a/x/stakeibc/types/address_unbonding.pb.go b/x/stakeibc/types/address_unbonding.pb.go index d5ba8e30e7..01fe4b7efa 100644 --- a/x/stakeibc/types/address_unbonding.pb.go +++ b/x/stakeibc/types/address_unbonding.pb.go @@ -121,26 +121,26 @@ var fileDescriptor_6491082275bcb473 = []byte{ // 348 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4a, 0xeb, 0x40, 0x18, 0x4d, 0x7a, 0xdb, 0xde, 0x76, 0xee, 0x45, 0xcb, 0x50, 0x64, 0xe8, 0x22, 0xad, 0x2e, 0x34, - 0x9b, 0x26, 0xf8, 0xb3, 0x70, 0x6b, 0x41, 0xa1, 0x50, 0x44, 0xa2, 0x6e, 0xdc, 0x84, 0xfc, 0x7c, - 0xa4, 0x43, 0x9d, 0x99, 0x90, 0x99, 0x14, 0x7d, 0x0b, 0x5f, 0xc4, 0xf7, 0xe8, 0xb2, 0x4b, 0x71, - 0x51, 0xa4, 0x7d, 0x11, 0xe9, 0x24, 0xa9, 0xae, 0x66, 0xbe, 0x73, 0xce, 0x9c, 0xef, 0x30, 0x07, - 0x9d, 0x48, 0x95, 0xd1, 0x18, 0x5c, 0xa9, 0x82, 0x19, 0xd0, 0x30, 0x72, 0x83, 0x38, 0xce, 0x40, - 0x4a, 0x3f, 0xe7, 0xa1, 0xe0, 0x31, 0xe5, 0x89, 0x93, 0x66, 0x42, 0x09, 0xbc, 0x5f, 0x08, 0x9d, - 0x4a, 0xd8, 0xeb, 0x26, 0x22, 0x11, 0x9a, 0x73, 0xb7, 0xb7, 0x42, 0x76, 0xf4, 0x5e, 0x43, 0x9d, - 0xab, 0xc2, 0xe2, 0xb1, 0x72, 0xc0, 0x04, 0xfd, 0x2d, 0x6d, 0x89, 0x39, 0x30, 0xed, 0xb6, 0x57, - 0x8d, 0xb8, 0x87, 0x5a, 0x19, 0x44, 0x40, 0xe7, 0x90, 0x91, 0x9a, 0xa6, 0x76, 0x33, 0xbe, 0x44, - 0x64, 0x17, 0xc2, 0x07, 0xa9, 0x28, 0x0b, 0x14, 0xc4, 0xbe, 0xa2, 0x0c, 0xc8, 0x1f, 0xad, 0x3d, - 0xd8, 0xf1, 0xd7, 0x15, 0xfd, 0x40, 0x19, 0xe0, 0x1b, 0xd4, 0x0c, 0x98, 0xc8, 0xb9, 0x22, 0xf5, - 0xad, 0x6e, 0xe4, 0x2c, 0x56, 0x7d, 0xe3, 0x73, 0xd5, 0x3f, 0x4e, 0xa8, 0x9a, 0xe6, 0xa1, 0x13, - 0x09, 0xe6, 0x46, 0x42, 0x32, 0x21, 0xcb, 0x63, 0x28, 0xe3, 0x99, 0xab, 0x5e, 0x53, 0x90, 0xce, - 0x98, 0x2b, 0xaf, 0x7c, 0x8d, 0xbb, 0xa8, 0x11, 0x03, 0x17, 0x8c, 0x34, 0xf4, 0xba, 0x62, 0xc0, - 0x36, 0xea, 0x44, 0xcf, 0x01, 0x65, 0x3e, 0x95, 0x7e, 0x0a, 0x7a, 0x3d, 0x69, 0x0d, 0x4c, 0xbb, - 0xe5, 0xed, 0x69, 0x7c, 0x2c, 0xef, 0x0a, 0x14, 0x1f, 0xa2, 0xff, 0x90, 0x8a, 0x68, 0xea, 0xf3, - 0x9c, 0x85, 0x90, 0x91, 0xf6, 0xc0, 0xb4, 0xeb, 0xde, 0x3f, 0x8d, 0xdd, 0x6a, 0x68, 0x34, 0x59, - 0xac, 0x2d, 0x73, 0xb9, 0xb6, 0xcc, 0xaf, 0xb5, 0x65, 0xbe, 0x6d, 0x2c, 0x63, 0xb9, 0xb1, 0x8c, - 0x8f, 0x8d, 0x65, 0x3c, 0x9d, 0xfd, 0x0a, 0x7b, 0xaf, 0xff, 0x7e, 0x38, 0x09, 0x42, 0xe9, 0x96, - 0x85, 0xcd, 0x4f, 0x2f, 0xdc, 0x97, 0x9f, 0xda, 0x74, 0xf8, 0xb0, 0xa9, 0x4b, 0x38, 0xff, 0x0e, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x4c, 0x53, 0x26, 0xd6, 0x01, 0x00, 0x00, + 0x9b, 0x26, 0xa8, 0x08, 0x6e, 0x2d, 0x28, 0x14, 0x8a, 0x48, 0xd4, 0x8d, 0x9b, 0x90, 0x9f, 0x8f, + 0x74, 0xa8, 0x33, 0x13, 0x32, 0x93, 0xa2, 0x6f, 0xe1, 0x8b, 0xf8, 0x1e, 0x5d, 0x76, 0x29, 0x2e, + 0x8a, 0xb4, 0x2f, 0x22, 0x9d, 0x24, 0xd5, 0xd5, 0xcc, 0x77, 0xce, 0x99, 0xf3, 0x1d, 0xe6, 0xa0, + 0x13, 0xa9, 0x32, 0x1a, 0x83, 0x2b, 0x55, 0x30, 0x03, 0x1a, 0x46, 0x6e, 0x10, 0xc7, 0x19, 0x48, + 0xe9, 0xe7, 0x3c, 0x14, 0x3c, 0xa6, 0x3c, 0x71, 0xd2, 0x4c, 0x28, 0x81, 0xf7, 0x0b, 0xa1, 0x53, + 0x09, 0x7b, 0xdd, 0x44, 0x24, 0x42, 0x73, 0xee, 0xf6, 0x56, 0xc8, 0x8e, 0xde, 0x6b, 0xa8, 0x73, + 0x55, 0x58, 0x3c, 0x56, 0x0e, 0x98, 0xa0, 0xbf, 0xa5, 0x2d, 0x31, 0x07, 0xa6, 0xdd, 0xf6, 0xaa, + 0x11, 0xf7, 0x50, 0x2b, 0x83, 0x08, 0xe8, 0x1c, 0x32, 0x52, 0xd3, 0xd4, 0x6e, 0xc6, 0x97, 0x88, + 0xec, 0x42, 0xf8, 0x20, 0x15, 0x65, 0x81, 0x82, 0xd8, 0x57, 0x94, 0x01, 0xf9, 0xa3, 0xb5, 0x07, + 0x3b, 0xfe, 0xba, 0xa2, 0x1f, 0x28, 0x03, 0x7c, 0x83, 0x9a, 0x01, 0x13, 0x39, 0x57, 0xa4, 0xbe, + 0xd5, 0x8d, 0x9c, 0xc5, 0xaa, 0x6f, 0x7c, 0xae, 0xfa, 0xc7, 0x09, 0x55, 0xd3, 0x3c, 0x74, 0x22, + 0xc1, 0xdc, 0x48, 0x48, 0x26, 0x64, 0x79, 0x0c, 0x65, 0x3c, 0x73, 0xd5, 0x6b, 0x0a, 0xd2, 0x19, + 0x73, 0xe5, 0x95, 0xaf, 0x71, 0x17, 0x35, 0x62, 0xe0, 0x82, 0x91, 0x86, 0x5e, 0x57, 0x0c, 0xd8, + 0x46, 0x9d, 0xe8, 0x39, 0xa0, 0xcc, 0xa7, 0xd2, 0x4f, 0x41, 0xaf, 0x27, 0xad, 0x81, 0x69, 0xb7, + 0xbc, 0x3d, 0x8d, 0x8f, 0xe5, 0x5d, 0x81, 0xe2, 0x43, 0xf4, 0x1f, 0x52, 0x11, 0x4d, 0x7d, 0x9e, + 0xb3, 0x10, 0x32, 0xd2, 0x1e, 0x98, 0x76, 0xdd, 0xfb, 0xa7, 0xb1, 0x5b, 0x0d, 0x8d, 0x26, 0x8b, + 0xb5, 0x65, 0x2e, 0xd7, 0x96, 0xf9, 0xb5, 0xb6, 0xcc, 0xb7, 0x8d, 0x65, 0x2c, 0x37, 0x96, 0xf1, + 0xb1, 0xb1, 0x8c, 0xa7, 0xb3, 0x5f, 0x61, 0xef, 0xf5, 0xdf, 0x0f, 0x27, 0x41, 0x28, 0xdd, 0xb2, + 0xb0, 0xf9, 0xe9, 0x85, 0xfb, 0xf2, 0x53, 0x9b, 0x0e, 0x1f, 0x36, 0x75, 0x09, 0xe7, 0xdf, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x97, 0xea, 0x4e, 0xc1, 0xd6, 0x01, 0x00, 0x00, } func (m *AddressUnbonding) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index 8d8b70cf94..8675d2a086 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -5,7 +5,7 @@ package types import ( fmt "fmt" - types1 "github.com/Stride-Labs/stride/v14/x/records/types" + types1 "github.com/Stride-Labs/stride/v15/x/records/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -713,7 +713,7 @@ var fileDescriptor_f41c99b09b96a5ac = []byte{ // 840 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4f, 0x6f, 0x23, 0x35, 0x14, 0xcf, 0x34, 0xab, 0xdd, 0x8d, 0x93, 0x36, 0xe9, 0x08, 0x2d, 0x69, 0x14, 0x25, 0x61, 0x16, - 0xc1, 0x0a, 0x69, 0x67, 0xd4, 0x82, 0x10, 0x88, 0xcb, 0xd2, 0x56, 0x68, 0x23, 0xa5, 0x48, 0x4c, + 0xc1, 0x0a, 0x69, 0x67, 0xd4, 0x22, 0x10, 0x88, 0xcb, 0xd2, 0x56, 0x68, 0x23, 0xa5, 0x48, 0x4c, 0x5a, 0x0e, 0xbd, 0x8c, 0x3c, 0x63, 0x2b, 0xb1, 0x32, 0x63, 0xa7, 0x63, 0x27, 0xa5, 0xfd, 0x04, 0x1c, 0x7b, 0xe5, 0x23, 0xc0, 0x85, 0x4f, 0xc0, 0x85, 0x53, 0x8f, 0x3d, 0x22, 0x0e, 0x05, 0xb5, 0x5f, 0x04, 0xd9, 0xe3, 0xf9, 0x93, 0x04, 0x2a, 0x52, 0x38, 0x25, 0xf3, 0xfc, 0xb3, 0xdf, 0xfb, @@ -763,7 +763,7 @@ var fileDescriptor_f41c99b09b96a5ac = []byte{ 0xd7, 0x31, 0xae, 0xee, 0x3b, 0xa5, 0x9b, 0xfb, 0x4e, 0xe9, 0xb7, 0xfb, 0x4e, 0xe9, 0x74, 0xaf, 0x70, 0xfa, 0x50, 0xf1, 0x7c, 0x3d, 0x80, 0x3e, 0x77, 0xf4, 0x5b, 0x3e, 0xdf, 0xfd, 0xc4, 0xf9, 0x2e, 0x7f, 0xd1, 0x55, 0x36, 0xff, 0xa9, 0x7a, 0xce, 0x3f, 0xfe, 0x2b, 0x00, 0x00, 0xff, 0xff, - 0xe7, 0xf1, 0x50, 0xfb, 0x98, 0x08, 0x00, 0x00, + 0x70, 0x57, 0x4d, 0x1c, 0x98, 0x08, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/epoch_tracker.pb.go b/x/stakeibc/types/epoch_tracker.pb.go index 72eff7c45a..ddae1c94e6 100644 --- a/x/stakeibc/types/epoch_tracker.pb.go +++ b/x/stakeibc/types/epoch_tracker.pb.go @@ -114,8 +114,8 @@ var fileDescriptor_e7c48143f24adf66 = []byte{ 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x7e, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, - 0x06, 0x4a, 0x99, 0xa1, 0x89, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, - 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xfc, 0x05, 0x1f, 0x34, 0x3a, 0x01, 0x00, + 0x06, 0x4a, 0x99, 0xa1, 0xa9, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, + 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xa3, 0x02, 0xd3, 0x3a, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/expected_keepers.go b/x/stakeibc/types/expected_keepers.go index b11db92850..5e39fd770b 100644 --- a/x/stakeibc/types/expected_keepers.go +++ b/x/stakeibc/types/expected_keepers.go @@ -7,7 +7,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - ratelimittypes "github.com/Stride-Labs/stride/v14/x/ratelimit/types" + ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" ) // AccountKeeper defines the expected account keeper used for simulations (noalias) diff --git a/x/stakeibc/types/genesis.pb.go b/x/stakeibc/types/genesis.pb.go index b611b11786..daed0ead44 100644 --- a/x/stakeibc/types/genesis.pb.go +++ b/x/stakeibc/types/genesis.pb.go @@ -103,26 +103,26 @@ var fileDescriptor_dea81129ed6fb77a = []byte{ // 349 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x4e, 0xea, 0x40, 0x14, 0xc6, 0x5b, 0x18, 0x4a, 0x19, 0xc8, 0xbd, 0x4d, 0x73, 0x13, 0xb8, 0xe4, 0x52, 0xc8, 0x75, - 0xc3, 0xc6, 0x36, 0xa2, 0xbe, 0x00, 0x09, 0x51, 0x1b, 0x16, 0x0a, 0xae, 0xd8, 0x34, 0x6d, 0x99, - 0xb4, 0x13, 0x84, 0x69, 0x3a, 0x47, 0xa3, 0x3e, 0x85, 0x2b, 0x9f, 0x89, 0x25, 0x4b, 0x57, 0xc6, - 0xc0, 0x8b, 0x98, 0x76, 0xc6, 0x7f, 0x65, 0x37, 0x67, 0xbe, 0x5f, 0x7e, 0xe7, 0xcb, 0xc1, 0x1d, - 0x0e, 0x29, 0x9d, 0x13, 0x87, 0x83, 0xbf, 0x20, 0x34, 0x08, 0x9d, 0x88, 0xac, 0x08, 0xa7, 0xdc, - 0x4e, 0x52, 0x06, 0xcc, 0xfc, 0x2d, 0x62, 0xfb, 0x23, 0x6e, 0xff, 0x89, 0x58, 0xc4, 0xf2, 0xcc, - 0xc9, 0x5e, 0x02, 0x6b, 0xff, 0x2b, 0x5a, 0x12, 0x3f, 0xf5, 0x97, 0x52, 0xd2, 0xee, 0x16, 0xd3, - 0x98, 0x71, 0xf0, 0x1e, 0xd9, 0x8a, 0x48, 0xe0, 0xa0, 0x08, 0x90, 0x84, 0x85, 0xb1, 0x07, 0xa9, - 0x1f, 0x2e, 0x48, 0x2a, 0xa0, 0xff, 0xcf, 0x25, 0xdc, 0x38, 0x13, 0xe5, 0xa6, 0xe0, 0x03, 0x31, - 0x4f, 0xb1, 0x26, 0xd6, 0xb4, 0xd4, 0x9e, 0xda, 0xaf, 0x0f, 0x9a, 0x76, 0xa1, 0xac, 0x7d, 0x99, - 0xc7, 0x43, 0xb4, 0x7e, 0xed, 0x2a, 0x13, 0x09, 0x9b, 0x4d, 0x5c, 0x4d, 0x58, 0x0a, 0x1e, 0x9d, - 0xb7, 0x4a, 0x3d, 0xb5, 0x5f, 0x9b, 0x68, 0xd9, 0x78, 0x31, 0x37, 0x47, 0xf8, 0xd7, 0x67, 0x31, - 0xef, 0x86, 0x72, 0x68, 0x55, 0x7a, 0xe5, 0x7e, 0x7d, 0xf0, 0x77, 0xcf, 0x7b, 0xce, 0x38, 0xcc, - 0xd8, 0x8a, 0x48, 0x73, 0x23, 0x96, 0xf3, 0x98, 0x72, 0x30, 0xaf, 0xb0, 0xf9, 0xa3, 0xbe, 0x50, - 0xe1, 0x5c, 0xd5, 0xd9, 0x53, 0x8d, 0x32, 0xf4, 0x5a, 0x90, 0x52, 0x67, 0x90, 0x6f, 0x7f, 0x99, + 0xc3, 0xc6, 0x36, 0x62, 0x78, 0x01, 0x12, 0xa2, 0x36, 0x2c, 0x14, 0x5c, 0xb1, 0x69, 0xda, 0x32, + 0x69, 0x27, 0x08, 0xd3, 0x74, 0x8e, 0x46, 0x7d, 0x0a, 0x57, 0x3e, 0x13, 0x4b, 0x96, 0xae, 0x8c, + 0x81, 0x17, 0x31, 0xed, 0x8c, 0xff, 0xca, 0x6e, 0xce, 0x7c, 0xbf, 0xfc, 0xce, 0x97, 0x83, 0x3b, + 0x1c, 0x52, 0xba, 0x20, 0x0e, 0x07, 0x7f, 0x49, 0x68, 0x10, 0x3a, 0x11, 0x59, 0x13, 0x4e, 0xb9, + 0x9d, 0xa4, 0x0c, 0x98, 0xf9, 0x5b, 0xc4, 0xf6, 0x47, 0xdc, 0xfe, 0x13, 0xb1, 0x88, 0xe5, 0x99, + 0x93, 0xbd, 0x04, 0xd6, 0xfe, 0x57, 0xb4, 0x24, 0x7e, 0xea, 0xaf, 0xa4, 0xa4, 0xdd, 0x2d, 0xa6, + 0x31, 0xe3, 0xe0, 0x3d, 0xb2, 0x35, 0x91, 0xc0, 0x51, 0x11, 0x20, 0x09, 0x0b, 0x63, 0x0f, 0x52, + 0x3f, 0x5c, 0x92, 0x54, 0x40, 0xff, 0x9f, 0x4b, 0xb8, 0x71, 0x26, 0xca, 0xcd, 0xc0, 0x07, 0x62, + 0x0e, 0xb1, 0x26, 0xd6, 0xb4, 0xd4, 0x9e, 0xda, 0xaf, 0x0f, 0x9a, 0x76, 0xa1, 0xac, 0x7d, 0x99, + 0xc7, 0x23, 0xb4, 0x79, 0xed, 0x2a, 0x53, 0x09, 0x9b, 0x4d, 0x5c, 0x4d, 0x58, 0x0a, 0x1e, 0x5d, + 0xb4, 0x4a, 0x3d, 0xb5, 0x5f, 0x9b, 0x6a, 0xd9, 0x78, 0xb1, 0x30, 0xc7, 0xf8, 0xd7, 0x67, 0x31, + 0xef, 0x86, 0x72, 0x68, 0x55, 0x7a, 0xe5, 0x7e, 0x7d, 0xf0, 0xf7, 0xc0, 0x7b, 0xce, 0x38, 0xcc, + 0xd9, 0x9a, 0x48, 0x73, 0x23, 0x96, 0xf3, 0x84, 0x72, 0x30, 0xaf, 0xb0, 0xf9, 0xa3, 0xbe, 0x50, + 0xe1, 0x5c, 0xd5, 0x39, 0x50, 0x8d, 0x33, 0xf4, 0x5a, 0x90, 0x52, 0x67, 0x90, 0x6f, 0x7f, 0x99, 0xd2, 0x45, 0x7a, 0xd9, 0x40, 0x2e, 0xd2, 0x91, 0x51, 0x71, 0x91, 0xae, 0x19, 0x55, 0x17, 0xe9, - 0x35, 0x03, 0xbb, 0x48, 0xaf, 0x1b, 0x8d, 0xe1, 0x78, 0xbd, 0xb5, 0xd4, 0xcd, 0xd6, 0x52, 0xdf, - 0xb6, 0x96, 0xfa, 0xb4, 0xb3, 0x94, 0xcd, 0xce, 0x52, 0x5e, 0x76, 0x96, 0x32, 0x1b, 0x44, 0x14, - 0xe2, 0xdb, 0xc0, 0x0e, 0xd9, 0xd2, 0x99, 0xe6, 0x8b, 0x0f, 0xc7, 0x7e, 0xc0, 0x1d, 0x79, 0xee, - 0xbb, 0xa3, 0x13, 0xe7, 0xfe, 0xeb, 0xe8, 0xf0, 0x90, 0x10, 0x1e, 0x68, 0xf9, 0xb5, 0x8f, 0xdf, - 0x03, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xdc, 0x55, 0x13, 0x19, 0x02, 0x00, 0x00, + 0x35, 0x03, 0xbb, 0x48, 0xaf, 0x1b, 0x8d, 0xd1, 0x64, 0xb3, 0xb3, 0xd4, 0xed, 0xce, 0x52, 0xdf, + 0x76, 0x96, 0xfa, 0xb4, 0xb7, 0x94, 0xed, 0xde, 0x52, 0x5e, 0xf6, 0x96, 0x32, 0x1f, 0x44, 0x14, + 0xe2, 0xdb, 0xc0, 0x0e, 0xd9, 0xca, 0x99, 0xe5, 0x8b, 0x8f, 0x27, 0x7e, 0xc0, 0x1d, 0x79, 0xee, + 0xbb, 0x93, 0xa1, 0x73, 0xff, 0x75, 0x74, 0x78, 0x48, 0x08, 0x0f, 0xb4, 0xfc, 0xda, 0xa7, 0xef, + 0x01, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x7a, 0x48, 0xf4, 0x19, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/genesis_test.go b/x/stakeibc/types/genesis_test.go index b71c69a1e4..725f1a46e5 100644 --- a/x/stakeibc/types/genesis_test.go +++ b/x/stakeibc/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index d3dad439be..95db48a118 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -132,8 +132,8 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x46, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0xe0, 0x80, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xc6, 0x7c, 0x99, 0xa1, - 0x89, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, - 0x08, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x7e, 0xc9, 0x6f, 0x61, 0x02, 0x00, 0x00, + 0xa9, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, + 0x08, 0x00, 0x00, 0xff, 0xff, 0x2b, 0xd8, 0xd4, 0x88, 0x61, 0x02, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index 09a60e96d0..c20499fdd4 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -200,7 +200,7 @@ var fileDescriptor_f81bf5b42c61245a = []byte{ // 734 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x4e, 0xeb, 0x46, 0x14, 0xc6, 0x93, 0x62, 0x82, 0x33, 0xfc, 0x89, 0x63, 0x42, 0xea, 0x84, 0x12, 0x22, 0x2a, 0x55, - 0xe9, 0x22, 0x8e, 0x0a, 0x95, 0x2a, 0x55, 0x5d, 0x14, 0x9a, 0x4a, 0x4d, 0x84, 0x50, 0x65, 0xa4, + 0xe9, 0x22, 0x8e, 0x0a, 0xaa, 0x2a, 0x55, 0x5d, 0x14, 0x9a, 0x4a, 0x4d, 0x84, 0x50, 0x65, 0xa4, 0x2e, 0xe8, 0xc2, 0x1a, 0x7b, 0x4e, 0x92, 0x11, 0xf6, 0x4c, 0xea, 0x19, 0x20, 0xed, 0x53, 0xf4, 0x5d, 0xca, 0x43, 0xb0, 0x44, 0xac, 0xaa, 0x2e, 0x50, 0x05, 0x2f, 0x72, 0xe5, 0xb1, 0xf3, 0x8f, 0x70, 0x15, 0x5d, 0x29, 0xab, 0x78, 0xce, 0xf7, 0x9d, 0xdf, 0x37, 0x67, 0x62, 0x79, 0xd0, 0xa1, @@ -243,7 +243,7 @@ var fileDescriptor_f81bf5b42c61245a = []byte{ 0x4b, 0x2d, 0xfb, 0xff, 0x4b, 0x2d, 0xfb, 0xf7, 0x6b, 0x2d, 0xf3, 0xf8, 0x5a, 0xcb, 0xfc, 0xfb, 0x5a, 0xcb, 0x5c, 0x1d, 0xcf, 0x8c, 0x78, 0xa9, 0xbe, 0x9e, 0xcd, 0x73, 0xec, 0x89, 0x56, 0x7a, 0x71, 0xdd, 0x7e, 0xf3, 0x6d, 0x6b, 0x34, 0xbd, 0xbe, 0xd4, 0xc8, 0x5e, 0x4e, 0x5d, 0x45, 0x27, - 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xcf, 0xeb, 0xfc, 0x10, 0x07, 0x00, 0x00, + 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x69, 0xf6, 0x1b, 0x10, 0x07, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/host_zone_test.go b/x/stakeibc/types/host_zone_test.go index 0197fed39a..a4c946e81b 100644 --- a/x/stakeibc/types/host_zone_test.go +++ b/x/stakeibc/types/host_zone_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestHostZoneUnbondingFrequency(t *testing.T) { diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index eb595cf2c3..2bfc4be622 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -69,7 +69,7 @@ var fileDescriptor_2976ae6e7f6ce824 = []byte{ 0x01, 0x60, 0x85, 0xcc, 0x4e, 0x3e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x94, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0x76, 0x80, - 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0x26, 0xfa, 0x15, 0x08, 0x57, 0x97, - 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xde, - 0x27, 0x6d, 0x6d, 0xd5, 0x00, 0x00, 0x00, + 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0xa6, 0xfa, 0x15, 0x08, 0x57, 0x97, + 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x49, + 0x81, 0x70, 0x8a, 0xd5, 0x00, 0x00, 0x00, } diff --git a/x/stakeibc/types/lsm_tx.pb.go b/x/stakeibc/types/lsm_tx.pb.go index 7ddc65f6ec..bc974c965b 100644 --- a/x/stakeibc/types/lsm_tx.pb.go +++ b/x/stakeibc/types/lsm_tx.pb.go @@ -139,9 +139,9 @@ var fileDescriptor_34c3b474a863e424 = []byte{ 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0xb8, 0xa4, 0x28, 0x33, 0x25, 0x55, 0xd7, 0x27, 0x31, 0x09, 0x14, 0x49, - 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0x89, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, - 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x26, - 0x17, 0x64, 0x6b, 0xd1, 0x01, 0x00, 0x00, + 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0xa9, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, + 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb1, + 0xb1, 0x79, 0x8c, 0xd1, 0x01, 0x00, 0x00, } func (m *MsgRedeemTokensForShares) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/message_add_validators.go b/x/stakeibc/types/message_add_validators.go index f41f8afb4e..f2224a29f2 100644 --- a/x/stakeibc/types/message_add_validators.go +++ b/x/stakeibc/types/message_add_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgAddValidators = "add_validators" diff --git a/x/stakeibc/types/message_add_validators_test.go b/x/stakeibc/types/message_add_validators_test.go index 5a1bff3c90..e53d9321b7 100644 --- a/x/stakeibc/types/message_add_validators_test.go +++ b/x/stakeibc/types/message_add_validators_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestMsgAddValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_calibrate_delegation.go b/x/stakeibc/types/message_calibrate_delegation.go index 5863ae220f..a1c160c831 100644 --- a/x/stakeibc/types/message_calibrate_delegation.go +++ b/x/stakeibc/types/message_calibrate_delegation.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgCalibrateDelegation = "calibrate_delegation" diff --git a/x/stakeibc/types/message_change_validator_weight.go b/x/stakeibc/types/message_change_validator_weight.go index d5621bc096..083befb36c 100644 --- a/x/stakeibc/types/message_change_validator_weight.go +++ b/x/stakeibc/types/message_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgChangeValidatorWeight = "change_validator_weight" diff --git a/x/stakeibc/types/message_change_validator_weight_test.go b/x/stakeibc/types/message_change_validator_weight_test.go index 075dac6294..f014dd347d 100644 --- a/x/stakeibc/types/message_change_validator_weight_test.go +++ b/x/stakeibc/types/message_change_validator_weight_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/testutil/sample" + "github.com/Stride-Labs/stride/v15/testutil/sample" ) func TestMsgChangeValidatorWeight_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_claim_undelegated_tokens.go b/x/stakeibc/types/message_claim_undelegated_tokens.go index 9b5840562e..b6dfb1e26d 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgClaimUndelegatedTokens = "claim_undelegated_tokens" diff --git a/x/stakeibc/types/message_claim_undelegated_tokens_test.go b/x/stakeibc/types/message_claim_undelegated_tokens_test.go index 3f39598ec0..4ea076fcb6 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens_test.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/testutil/sample" + "github.com/Stride-Labs/stride/v15/testutil/sample" ) func TestMsgClaimUndelegatedTokens_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_clear_balance.go b/x/stakeibc/types/message_clear_balance.go index 3cc64efafb..412309405a 100644 --- a/x/stakeibc/types/message_clear_balance.go +++ b/x/stakeibc/types/message_clear_balance.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgClearBalance = "clear_balance" diff --git a/x/stakeibc/types/message_delete_validator.go b/x/stakeibc/types/message_delete_validator.go index bb37dba0f3..2aba7afe1e 100644 --- a/x/stakeibc/types/message_delete_validator.go +++ b/x/stakeibc/types/message_delete_validator.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgDeleteValidator = "delete_validator" diff --git a/x/stakeibc/types/message_delete_validator_test.go b/x/stakeibc/types/message_delete_validator_test.go index e6e9f8481a..9afe05b4e3 100644 --- a/x/stakeibc/types/message_delete_validator_test.go +++ b/x/stakeibc/types/message_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/testutil/sample" + "github.com/Stride-Labs/stride/v15/testutil/sample" ) func TestMsgDeleteValidator_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_liquid_stake_test.go b/x/stakeibc/types/message_liquid_stake_test.go index f5dce91143..469cc8d24a 100644 --- a/x/stakeibc/types/message_liquid_stake_test.go +++ b/x/stakeibc/types/message_liquid_stake_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/testutil/sample" + "github.com/Stride-Labs/stride/v15/testutil/sample" ) func TestMsgLiquidStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_lsm_liquid_stake_test.go b/x/stakeibc/types/message_lsm_liquid_stake_test.go index e1a79da551..26ed9230c2 100644 --- a/x/stakeibc/types/message_lsm_liquid_stake_test.go +++ b/x/stakeibc/types/message_lsm_liquid_stake_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestMsgLSMLiquidStake(t *testing.T) { diff --git a/x/stakeibc/types/message_rebalance_validators.go b/x/stakeibc/types/message_rebalance_validators.go index c789e4b55a..b7c379dde4 100644 --- a/x/stakeibc/types/message_rebalance_validators.go +++ b/x/stakeibc/types/message_rebalance_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const ( diff --git a/x/stakeibc/types/message_rebalance_validators_test.go b/x/stakeibc/types/message_rebalance_validators_test.go index 898344cdd9..680331bd00 100644 --- a/x/stakeibc/types/message_rebalance_validators_test.go +++ b/x/stakeibc/types/message_rebalance_validators_test.go @@ -6,8 +6,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/app/apptesting" - "github.com/Stride-Labs/stride/v14/x/stakeibc/types" + "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" ) func TestMsgRebalanceValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_redeem_stake_test.go b/x/stakeibc/types/message_redeem_stake_test.go index 11ce7aa422..7f477faf02 100644 --- a/x/stakeibc/types/message_redeem_stake_test.go +++ b/x/stakeibc/types/message_redeem_stake_test.go @@ -8,7 +8,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v14/testutil/sample" + "github.com/Stride-Labs/stride/v15/testutil/sample" ) func TestMsgRedeemStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index f3f9b3d6fe..548d6318ce 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgRegisterHostZone = "register_host_zone" diff --git a/x/stakeibc/types/message_restore_interchain_account_test.go b/x/stakeibc/types/message_restore_interchain_account_test.go index e92afcc10b..9144b0d4dd 100644 --- a/x/stakeibc/types/message_restore_interchain_account_test.go +++ b/x/stakeibc/types/message_restore_interchain_account_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v14/testutil/sample" + "github.com/Stride-Labs/stride/v15/testutil/sample" ) func TestMsgRestoreInterchainAccount_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_undelegate_host.go b/x/stakeibc/types/message_undelegate_host.go index d239604cf8..e1e2c8c328 100644 --- a/x/stakeibc/types/message_undelegate_host.go +++ b/x/stakeibc/types/message_undelegate_host.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgUndelegateHost = "undelegate_host" diff --git a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go index 02415d0640..f3d21cbfb6 100644 --- a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v14/utils" + "github.com/Stride-Labs/stride/v15/utils" ) const TypeMsgUpdateInnerRedemptionRateBounds = "update_inner_redemption_rate_bounds" diff --git a/x/stakeibc/types/packet.pb.go b/x/stakeibc/types/packet.pb.go index c1a551698d..50e0358b08 100644 --- a/x/stakeibc/types/packet.pb.go +++ b/x/stakeibc/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_a86fa6a12773333f = []byte{ 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x8d, 0xd6, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xba, 0xbe, 0xcc, - 0xd0, 0x44, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0x30, 0x72, 0xe9, 0xe3, 0x00, 0x00, 0x00, + 0xd0, 0x54, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x07, 0x96, 0x6f, 0x0e, 0xe3, 0x00, 0x00, 0x00, } func (m *StakeibcPacketData) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index cb355c88ad..a484d95619 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -188,42 +188,42 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/params.proto", fileDescriptor_5aeaab6a38c2b438) } var fileDescriptor_5aeaab6a38c2b438 = []byte{ - // 553 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x5b, 0x88, 0x4a, 0xe7, 0x01, 0x4d, 0x33, 0x04, 0x51, 0x35, 0x52, 0x40, 0x42, 0x62, - 0x0c, 0x1a, 0xf1, 0xe7, 0x80, 0xd8, 0x01, 0x69, 0xd3, 0x0e, 0xab, 0x06, 0x2a, 0x6d, 0x4f, 0x5c, - 0x2c, 0x27, 0x79, 0xdb, 0x5a, 0x4b, 0xe2, 0x60, 0xbb, 0xa5, 0xdb, 0xa7, 0xe0, 0xc8, 0x91, 0x8f, - 0xc3, 0x71, 0xc7, 0x1d, 0x51, 0xfb, 0x45, 0x90, 0xed, 0x34, 0x6d, 0xd0, 0xe0, 0x56, 0x3d, 0xcf, - 0xef, 0x7d, 0xf2, 0xf8, 0x75, 0x8d, 0x76, 0x85, 0xe4, 0x34, 0x02, 0x5f, 0x48, 0x72, 0x06, 0x34, - 0x08, 0xfd, 0x8c, 0x70, 0x92, 0x88, 0x4e, 0xc6, 0x99, 0x64, 0x4e, 0xc3, 0xb8, 0x9d, 0x95, 0xdb, - 0xba, 0x37, 0x66, 0x63, 0xa6, 0x3d, 0x5f, 0xfd, 0x32, 0xd8, 0x93, 0xab, 0x1a, 0xaa, 0xf5, 0xf4, - 0x9c, 0xb3, 0x87, 0x6c, 0x0e, 0xdf, 0x08, 0x8f, 0x04, 0xa6, 0xa9, 0x04, 0x3e, 0x23, 0xb1, 0x5b, - 0x7d, 0x54, 0x7d, 0x66, 0xf5, 0x1b, 0xb9, 0x7e, 0x92, 0xcb, 0xce, 0x3e, 0x6a, 0x46, 0x10, 0xc3, - 0x98, 0x48, 0x58, 0xb3, 0x35, 0xcd, 0xda, 0x2b, 0xa3, 0x80, 0xf7, 0x90, 0x1d, 0x41, 0xc6, 0x04, - 0x95, 0x6b, 0xf6, 0x86, 0xc9, 0xcd, 0xf5, 0x02, 0x7d, 0x87, 0x5c, 0x0e, 0x11, 0x24, 0x99, 0xa4, - 0x2c, 0xc5, 0xbc, 0x14, 0x7f, 0x53, 0x8f, 0xdc, 0x5f, 0xfb, 0xfd, 0xcd, 0x8f, 0xec, 0xa3, 0xa6, - 0x39, 0x30, 0x0e, 0x59, 0x92, 0x50, 0x21, 0x28, 0x4b, 0x5d, 0xcb, 0x34, 0x32, 0xc6, 0x51, 0xa1, - 0x2b, 0x98, 0x03, 0x4d, 0x67, 0x20, 0x36, 0x2a, 0xdd, 0x32, 0xf0, 0xca, 0x28, 0x92, 0x9f, 0xa3, - 0x26, 0x0d, 0x09, 0x96, 0x34, 0x01, 0x36, 0x95, 0x38, 0x25, 0x29, 0x13, 0xee, 0x96, 0xe9, 0x4f, - 0x43, 0x32, 0x34, 0xfa, 0x27, 0x25, 0x3b, 0x6d, 0xb4, 0x1d, 0x4c, 0x47, 0x23, 0xe0, 0x58, 0xd0, - 0x0b, 0x70, 0x91, 0xa6, 0x90, 0x91, 0x06, 0xf4, 0x02, 0x9c, 0x17, 0xc8, 0xa1, 0x41, 0x58, 0x84, - 0x05, 0x31, 0x0b, 0xcf, 0x84, 0xbb, 0x6d, 0x3e, 0x4d, 0x83, 0x30, 0x4f, 0x3b, 0xd4, 0xba, 0x73, - 0x80, 0x5a, 0x23, 0x00, 0x2c, 0x39, 0x49, 0x85, 0x0a, 0x2d, 0x77, 0xb8, 0xad, 0xa7, 0x1e, 0x8c, - 0x00, 0x86, 0x39, 0x50, 0xea, 0xf2, 0x01, 0x3d, 0x4c, 0xc8, 0x1c, 0xeb, 0xfb, 0xc7, 0xea, 0x04, - 0x21, 0x89, 0x63, 0x81, 0x33, 0xe0, 0x18, 0x32, 0x16, 0x4e, 0xdc, 0x3b, 0x7a, 0xde, 0x4d, 0xc8, - 0x7c, 0xa0, 0x98, 0x93, 0x90, 0x1c, 0x29, 0xa2, 0x07, 0xfc, 0x58, 0xf9, 0x4e, 0x0f, 0x3d, 0x8d, - 0x60, 0x44, 0xa6, 0xb1, 0xc4, 0x09, 0x4d, 0xf1, 0xdf, 0x17, 0x23, 0x27, 0x1c, 0xc4, 0x84, 0xc5, - 0x91, 0x7b, 0x57, 0x07, 0x3d, 0xce, 0xe1, 0x8f, 0x34, 0xed, 0x97, 0xee, 0x68, 0xb8, 0x02, 0x4b, - 0x89, 0x64, 0xfe, 0x9f, 0xc4, 0x46, 0x39, 0x91, 0xcc, 0xff, 0x95, 0x78, 0x80, 0x5a, 0x7a, 0x9f, - 0xd7, 0x6f, 0xc8, 0x36, 0x1b, 0x52, 0x7b, 0xbd, 0x6e, 0x43, 0xc7, 0xa8, 0x3d, 0x23, 0x31, 0x8d, - 0x88, 0x64, 0x1c, 0x8b, 0x98, 0x88, 0x09, 0xfe, 0x3a, 0x05, 0x7e, 0xbe, 0x51, 0x64, 0x47, 0x27, - 0xec, 0x16, 0xd8, 0x40, 0x51, 0x9f, 0x15, 0x54, 0x74, 0x78, 0x6f, 0xfd, 0xf8, 0xd9, 0xae, 0x74, - 0xad, 0x7a, 0xdd, 0xde, 0xea, 0x5a, 0xf5, 0xa6, 0xed, 0x74, 0xad, 0xba, 0x63, 0xef, 0x1c, 0x9e, - 0xfe, 0x5a, 0x78, 0xd5, 0xcb, 0x85, 0x57, 0xfd, 0xbd, 0xf0, 0xaa, 0xdf, 0x97, 0x5e, 0xe5, 0x72, - 0xe9, 0x55, 0xae, 0x96, 0x5e, 0xe5, 0xcb, 0xeb, 0x31, 0x95, 0x93, 0x69, 0xd0, 0x09, 0x59, 0xe2, - 0x0f, 0xf4, 0x9f, 0xf3, 0xe5, 0x29, 0x09, 0x84, 0x9f, 0x3f, 0xe8, 0xd9, 0xab, 0xb7, 0xfe, 0x7c, - 0xfd, 0xac, 0xe5, 0x79, 0x06, 0x22, 0xa8, 0xe9, 0xf7, 0xfa, 0xe6, 0x4f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x16, 0x14, 0x39, 0x66, 0xf6, 0x03, 0x00, 0x00, + // 552 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x41, 0x6f, 0xd3, 0x30, + 0x1c, 0xc5, 0x5b, 0x88, 0x4a, 0xe7, 0x01, 0x4d, 0x33, 0x04, 0x51, 0x35, 0x52, 0x40, 0x42, 0x62, + 0x0c, 0x1a, 0x01, 0x42, 0x42, 0xec, 0x80, 0xb4, 0x69, 0x87, 0x55, 0x03, 0x95, 0xb6, 0x27, 0x2e, + 0x96, 0x93, 0xfc, 0xdb, 0x5a, 0x4b, 0xe2, 0x60, 0xbb, 0xa5, 0xdb, 0xa7, 0xe0, 0xc8, 0x91, 0x8f, + 0xc3, 0x71, 0xc7, 0x1d, 0x51, 0xfb, 0x45, 0x90, 0xed, 0x34, 0x6d, 0xd0, 0xe0, 0x56, 0xbd, 0xf7, + 0xfb, 0xbf, 0x3c, 0xff, 0x5d, 0xa3, 0x5d, 0x21, 0x39, 0x8d, 0xc0, 0x17, 0x92, 0x9c, 0x01, 0x0d, + 0x42, 0x3f, 0x23, 0x9c, 0x24, 0xa2, 0x93, 0x71, 0x26, 0x99, 0xd3, 0x30, 0x6e, 0x67, 0xe5, 0xb6, + 0xee, 0x8d, 0xd9, 0x98, 0x69, 0xcf, 0x57, 0xbf, 0x0c, 0xf6, 0xe4, 0xaa, 0x86, 0x6a, 0x3d, 0x3d, + 0xe7, 0xec, 0x21, 0x9b, 0xc3, 0x37, 0xc2, 0x23, 0x81, 0x69, 0x2a, 0x81, 0xcf, 0x48, 0xec, 0x56, + 0x1f, 0x55, 0x9f, 0x59, 0xfd, 0x46, 0xae, 0x9f, 0xe4, 0xb2, 0xb3, 0x8f, 0x9a, 0x11, 0xc4, 0x30, + 0x26, 0x12, 0xd6, 0x6c, 0x4d, 0xb3, 0xf6, 0xca, 0x28, 0xe0, 0x3d, 0x64, 0x47, 0x90, 0x31, 0x41, + 0xe5, 0x9a, 0xbd, 0x61, 0x72, 0x73, 0xbd, 0x40, 0xdf, 0x21, 0x97, 0x43, 0x04, 0x49, 0x26, 0x29, + 0x4b, 0x31, 0x2f, 0xc5, 0xdf, 0xd4, 0x23, 0xf7, 0xd7, 0x7e, 0x7f, 0xf3, 0x23, 0xfb, 0xa8, 0x69, + 0x0e, 0x8c, 0x43, 0x96, 0x24, 0x54, 0x08, 0xca, 0x52, 0xd7, 0x32, 0x8d, 0x8c, 0x71, 0x54, 0xe8, + 0x0a, 0xe6, 0x40, 0xd3, 0x19, 0x88, 0x8d, 0x4a, 0xb7, 0x0c, 0xbc, 0x32, 0x8a, 0xe4, 0xe7, 0xa8, + 0x49, 0x43, 0x82, 0x25, 0x4d, 0x80, 0x4d, 0x25, 0x4e, 0x49, 0xca, 0x84, 0xbb, 0x65, 0xfa, 0xd3, + 0x90, 0x0c, 0x8d, 0xfe, 0x49, 0xc9, 0x4e, 0x1b, 0x6d, 0x07, 0xd3, 0xd1, 0x08, 0x38, 0x16, 0xf4, + 0x02, 0x5c, 0xa4, 0x29, 0x64, 0xa4, 0x01, 0xbd, 0x00, 0xe7, 0x05, 0x72, 0x68, 0x10, 0x16, 0x61, + 0x41, 0xcc, 0xc2, 0x33, 0xe1, 0x6e, 0x9b, 0x4f, 0xd3, 0x20, 0xcc, 0xd3, 0x0e, 0xb5, 0xee, 0x1c, + 0xa0, 0xd6, 0x08, 0x00, 0x4b, 0x4e, 0x52, 0xa1, 0x42, 0xcb, 0x1d, 0x6e, 0xeb, 0xa9, 0x07, 0x23, + 0x80, 0x61, 0x0e, 0x94, 0xba, 0x7c, 0x40, 0x0f, 0x13, 0x32, 0xc7, 0xfa, 0xfe, 0xb1, 0x3a, 0x41, + 0x48, 0xe2, 0x58, 0xe0, 0x0c, 0x38, 0x86, 0x8c, 0x85, 0x13, 0xf7, 0x8e, 0x9e, 0x77, 0x13, 0x32, + 0x1f, 0x28, 0xe6, 0x24, 0x24, 0x47, 0x8a, 0xe8, 0x01, 0x3f, 0x56, 0xbe, 0xd3, 0x43, 0x4f, 0x23, + 0x18, 0x91, 0x69, 0x2c, 0x71, 0x42, 0x53, 0xfc, 0xf7, 0xc5, 0xc8, 0x09, 0x07, 0x31, 0x61, 0x71, + 0xe4, 0xde, 0xd5, 0x41, 0x8f, 0x73, 0xf8, 0x23, 0x4d, 0xfb, 0xa5, 0x3b, 0x1a, 0xae, 0xc0, 0x52, + 0x22, 0x99, 0xff, 0x27, 0xb1, 0x51, 0x4e, 0x24, 0xf3, 0x7f, 0x25, 0x1e, 0xa0, 0x96, 0xde, 0xe7, + 0xf5, 0x1b, 0xb2, 0xcd, 0x86, 0xd4, 0x5e, 0xaf, 0xdb, 0xd0, 0x31, 0x6a, 0xcf, 0x48, 0x4c, 0x23, + 0x22, 0x19, 0xc7, 0x22, 0x26, 0x62, 0x82, 0xbf, 0x4e, 0x81, 0x9f, 0x6f, 0x14, 0xd9, 0xd1, 0x09, + 0xbb, 0x05, 0x36, 0x50, 0xd4, 0x67, 0x05, 0x15, 0x1d, 0xde, 0x5b, 0x3f, 0x7e, 0xb6, 0x2b, 0x5d, + 0xab, 0x5e, 0xb7, 0xb7, 0xba, 0x56, 0xbd, 0x69, 0x3b, 0x5d, 0xab, 0xee, 0xd8, 0x3b, 0x87, 0xa7, + 0xbf, 0x16, 0x5e, 0xf5, 0x72, 0xe1, 0x55, 0x7f, 0x2f, 0xbc, 0xea, 0xf7, 0xa5, 0x57, 0xb9, 0x5c, + 0x7a, 0x95, 0xab, 0xa5, 0x57, 0xf9, 0xf2, 0x7a, 0x4c, 0xe5, 0x64, 0x1a, 0x74, 0x42, 0x96, 0xf8, + 0x03, 0xfd, 0xe7, 0x7c, 0x79, 0x4a, 0x02, 0xe1, 0xe7, 0x0f, 0x7a, 0xf6, 0xea, 0xad, 0x3f, 0x5f, + 0x3f, 0x6b, 0x79, 0x9e, 0x81, 0x08, 0x6a, 0xfa, 0xbd, 0xbe, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff, + 0x81, 0xb2, 0x24, 0x81, 0xf6, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/query.pb.go b/x/stakeibc/types/query.pb.go index efcc520213..4c7a5b86a0 100644 --- a/x/stakeibc/types/query.pb.go +++ b/x/stakeibc/types/query.pb.go @@ -957,80 +957,80 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/query.proto", fileDescriptor_494b786fe66f2b80) } var fileDescriptor_494b786fe66f2b80 = []byte{ - // 1156 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xc7, 0xb3, 0x6d, 0x9a, 0x97, 0x27, 0x89, 0x42, 0x87, 0x88, 0x38, 0xdb, 0xc4, 0x21, 0xd3, - 0xd2, 0xbc, 0x90, 0x7a, 0x89, 0x13, 0x90, 0x1a, 0x51, 0x41, 0x22, 0xb5, 0x8d, 0x51, 0x40, 0xc1, - 0x85, 0x0a, 0x95, 0x83, 0x35, 0xde, 0x1d, 0xec, 0x55, 0xd7, 0x33, 0xee, 0xee, 0x3a, 0x24, 0x44, - 0x56, 0x25, 0x3e, 0x41, 0x05, 0xe2, 0xc2, 0xad, 0x88, 0x03, 0x67, 0x3e, 0x45, 0x6f, 0x54, 0xe2, - 0xc2, 0x29, 0x42, 0x09, 0x9f, 0xa0, 0xe2, 0x03, 0xa0, 0x9d, 0x99, 0x5d, 0xdb, 0xfb, 0x62, 0x9c, - 0xde, 0x3c, 0x33, 0xcf, 0xcb, 0x6f, 0x9e, 0x79, 0xe6, 0x3f, 0x6b, 0xb8, 0xe6, 0xf9, 0xae, 0x6d, - 0x51, 0xc3, 0xf3, 0xc9, 0x63, 0x6a, 0x57, 0x4d, 0xe3, 0x49, 0x8b, 0xba, 0xc7, 0x85, 0xa6, 0xcb, - 0x7d, 0x8e, 0xa6, 0xe5, 0x62, 0x21, 0x5c, 0xd4, 0x67, 0x6a, 0xbc, 0xc6, 0xc5, 0x9a, 0x11, 0xfc, - 0x92, 0x66, 0xfa, 0x7c, 0x8d, 0xf3, 0x9a, 0x43, 0x0d, 0xd2, 0xb4, 0x0d, 0xc2, 0x18, 0xf7, 0x89, - 0x6f, 0x73, 0xe6, 0xa9, 0xd5, 0x35, 0x93, 0x7b, 0x0d, 0xee, 0x19, 0x55, 0xe2, 0x51, 0x19, 0xdd, - 0x38, 0xdc, 0xa8, 0x52, 0x9f, 0x6c, 0x18, 0x4d, 0x52, 0xb3, 0x99, 0x30, 0x0e, 0x23, 0xc5, 0x69, - 0x9a, 0xc4, 0x25, 0x8d, 0x30, 0xd2, 0x62, 0x7c, 0xf5, 0x90, 0x38, 0xb6, 0x45, 0x7c, 0xee, 0x66, - 0x19, 0xd4, 0xb9, 0xe7, 0x57, 0xbe, 0xe3, 0x8c, 0x2a, 0x83, 0xeb, 0x71, 0x03, 0xda, 0xe4, 0x66, - 0xbd, 0xe2, 0xbb, 0xc4, 0x7c, 0x4c, 0xc3, 0x28, 0xcb, 0x71, 0x23, 0x62, 0x59, 0x2e, 0xf5, 0xbc, - 0x4a, 0x8b, 0x55, 0x39, 0xb3, 0x6c, 0x56, 0x93, 0x86, 0xf8, 0x29, 0xac, 0x7c, 0x1e, 0xec, 0xa7, - 0xc4, 0x7c, 0xea, 0x9a, 0x75, 0x62, 0xb3, 0x1d, 0xd3, 0xe4, 0x2d, 0xe6, 0xdf, 0x73, 0x79, 0x63, - 0x47, 0x3a, 0x95, 0xe9, 0x93, 0x16, 0xf5, 0x7c, 0x34, 0x03, 0x57, 0xf8, 0xb7, 0x8c, 0xba, 0x39, - 0xed, 0x6d, 0x6d, 0x65, 0xbc, 0x2c, 0x07, 0xe8, 0x0e, 0x4c, 0x99, 0x9c, 0x31, 0x6a, 0x06, 0x35, - 0xa8, 0xd8, 0x56, 0xee, 0x52, 0xb0, 0xba, 0x9b, 0x7b, 0x75, 0xba, 0x38, 0x73, 0x4c, 0x1a, 0xce, - 0x36, 0xee, 0x59, 0xc6, 0xe5, 0xc9, 0xce, 0xb8, 0x64, 0xe1, 0x67, 0x1a, 0xac, 0x0e, 0x40, 0xe0, - 0x35, 0x39, 0xf3, 0x28, 0x32, 0x41, 0xb7, 0x23, 0xbb, 0x0a, 0x91, 0x86, 0x15, 0xb5, 0x39, 0xc9, - 0xb5, 0xfb, 0xce, 0xab, 0xd3, 0xc5, 0x25, 0x99, 0x39, 0xdb, 0x16, 0x97, 0x73, 0x76, 0x3c, 0xa1, - 0x4a, 0x86, 0x67, 0x00, 0x09, 0xa2, 0x03, 0x71, 0x70, 0x6a, 0xf7, 0x78, 0x1f, 0xde, 0xec, 0x99, - 0x55, 0x44, 0xef, 0xc3, 0x88, 0x3c, 0x60, 0x91, 0x7d, 0xa2, 0x38, 0x5b, 0x88, 0x35, 0x5c, 0x41, - 0x3a, 0xec, 0x0e, 0xbf, 0x38, 0x5d, 0x1c, 0x2a, 0x2b, 0x63, 0xfc, 0x01, 0xcc, 0x89, 0x68, 0xf7, - 0xa9, 0xff, 0x30, 0xec, 0x80, 0xa8, 0xd0, 0x73, 0x30, 0x26, 0xa1, 0x6d, 0x4b, 0xd5, 0x7a, 0x54, - 0x8c, 0x4b, 0x16, 0xfe, 0x0a, 0xf4, 0x34, 0x3f, 0x05, 0xb3, 0x0d, 0x10, 0xf5, 0x53, 0x00, 0x74, - 0x79, 0x65, 0xa2, 0xa8, 0x27, 0x80, 0x22, 0xc7, 0x72, 0x97, 0x35, 0xde, 0x82, 0xd9, 0x30, 0xf2, - 0x1e, 0xf7, 0xfc, 0x47, 0x9c, 0xd1, 0x81, 0x78, 0x72, 0x49, 0x2f, 0x45, 0xf3, 0x21, 0x8c, 0x47, - 0xcd, 0xab, 0xaa, 0x33, 0x97, 0x80, 0x09, 0xbd, 0x54, 0x7d, 0xc6, 0xea, 0x6a, 0x8c, 0x89, 0xe2, - 0xd9, 0x71, 0x9c, 0x38, 0xcf, 0x3d, 0x80, 0xce, 0xb5, 0x53, 0x91, 0x6f, 0x16, 0xe4, 0x1d, 0x2d, - 0x04, 0x77, 0xb4, 0x20, 0x15, 0x40, 0xdd, 0xd1, 0xc2, 0x01, 0xa9, 0x85, 0xbe, 0xe5, 0x2e, 0x4f, - 0xfc, 0x5c, 0x53, 0xf4, 0x3d, 0x39, 0xd2, 0xe9, 0x2f, 0x5f, 0x88, 0x1e, 0xdd, 0xef, 0x41, 0xbc, - 0x24, 0x10, 0x97, 0xff, 0x17, 0x51, 0xa6, 0xee, 0x61, 0x34, 0x54, 0xa3, 0x7c, 0xca, 0xad, 0x96, - 0x43, 0x63, 0x37, 0x12, 0xc1, 0x30, 0x23, 0x0d, 0xaa, 0x0e, 0x45, 0xfc, 0xc6, 0xef, 0xa9, 0x0e, - 0x89, 0x39, 0xa8, 0x5d, 0x21, 0x18, 0x0e, 0x6e, 0x40, 0xe8, 0x11, 0xfc, 0xc6, 0x7b, 0x70, 0x2d, - 0x3c, 0xc3, 0xbb, 0x81, 0x96, 0x7c, 0x21, 0xa5, 0x24, 0x4c, 0xb2, 0x0a, 0x6f, 0x48, 0x89, 0xb1, - 0x2d, 0xca, 0x7c, 0xfb, 0x1b, 0x3b, 0x52, 0x80, 0x69, 0x31, 0x5f, 0x8a, 0xa6, 0x71, 0x1d, 0xe6, - 0xd3, 0x23, 0xa9, 0xec, 0x7b, 0x30, 0xd5, 0xa3, 0x56, 0xea, 0xec, 0x16, 0x12, 0x75, 0xed, 0xf6, - 0x56, 0xb5, 0x9d, 0xa4, 0x5d, 0x73, 0x78, 0x41, 0x31, 0xef, 0x38, 0x4e, 0x0a, 0x73, 0x04, 0x92, - 0x58, 0xce, 0x06, 0xb9, 0xfc, 0x7a, 0x20, 0x5f, 0xc3, 0x52, 0xb8, 0xe5, 0xcf, 0xe8, 0x91, 0x7f, - 0x10, 0xcc, 0xfa, 0x0f, 0x02, 0x0c, 0x66, 0x46, 0x0d, 0xbb, 0x00, 0x60, 0xd6, 0x09, 0x63, 0xd4, - 0xe9, 0x5c, 0xa1, 0x71, 0x35, 0x53, 0xb2, 0xd0, 0x2c, 0x8c, 0x36, 0xb9, 0xeb, 0x47, 0xe2, 0x59, - 0x1e, 0x09, 0x86, 0x25, 0x0b, 0x7f, 0x0c, 0xb8, 0x5f, 0x70, 0xb5, 0x19, 0x1d, 0xc6, 0x3c, 0x35, - 0x27, 0x62, 0x0f, 0x97, 0xa3, 0x31, 0x2e, 0xc2, 0x5b, 0xb2, 0x10, 0xb2, 0x0f, 0xbe, 0x0c, 0xe5, - 0xdf, 0x43, 0x39, 0x18, 0xed, 0xd1, 0xcd, 0x72, 0x38, 0xc4, 0x47, 0x90, 0x4f, 0xf7, 0x89, 0x32, - 0x3e, 0x04, 0x94, 0x78, 0x50, 0x42, 0xbd, 0x59, 0x4a, 0xd4, 0x30, 0x1e, 0x47, 0xd5, 0xf1, 0x2a, - 0x89, 0xc7, 0x2f, 0xfe, 0x3b, 0x09, 0x57, 0x44, 0x6a, 0xf4, 0x14, 0x46, 0xa4, 0x6e, 0xa2, 0xeb, - 0x89, 0x78, 0x49, 0x71, 0xd6, 0x6f, 0xf4, 0x37, 0x92, 0xd8, 0x78, 0xed, 0xfb, 0x3f, 0xff, 0xf9, - 0xf1, 0xd2, 0x0d, 0x84, 0x8d, 0x07, 0xc2, 0xda, 0x21, 0x55, 0xcf, 0x48, 0x7f, 0xae, 0xd1, 0x73, - 0x0d, 0xa0, 0xa3, 0xb0, 0x68, 0x2d, 0x3d, 0x41, 0x9a, 0x7c, 0xeb, 0xef, 0x0e, 0x64, 0xab, 0x98, - 0xb6, 0x05, 0xd3, 0x16, 0x2a, 0x2a, 0xa6, 0x5b, 0xfb, 0x69, 0x50, 0x1d, 0x9d, 0x36, 0x4e, 0x42, - 0x29, 0x6e, 0xa3, 0x9f, 0x35, 0x18, 0x0b, 0x15, 0x08, 0xad, 0x64, 0x66, 0x8d, 0xc9, 0xa7, 0xbe, - 0x3a, 0x80, 0xa5, 0xa2, 0xbb, 0x2d, 0xe8, 0x36, 0xd1, 0x46, 0x5f, 0xba, 0x48, 0x27, 0xbb, 0xe1, - 0x7e, 0xd0, 0x60, 0x22, 0x8c, 0xb7, 0xe3, 0x38, 0x59, 0x7c, 0x49, 0x79, 0xcf, 0xe2, 0x4b, 0x11, - 0x69, 0x5c, 0x10, 0x7c, 0x2b, 0xe8, 0xe6, 0x60, 0x7c, 0xe8, 0x57, 0x0d, 0xa6, 0x7a, 0x84, 0x31, - 0xeb, 0x60, 0xd3, 0xe4, 0x36, 0xeb, 0x60, 0x53, 0x95, 0x76, 0xc0, 0x83, 0x6d, 0x08, 0xdf, 0xf0, - 0xab, 0xc4, 0x38, 0x09, 0x24, 0xbc, 0x8d, 0x7e, 0xd2, 0x60, 0xbe, 0xdf, 0xf7, 0x10, 0xba, 0x9d, - 0x4e, 0x32, 0xc0, 0x57, 0x9c, 0xbe, 0xfd, 0x3a, 0xae, 0xea, 0xde, 0xff, 0xae, 0xc1, 0x64, 0xb7, - 0x22, 0xa2, 0xf5, 0xcc, 0x56, 0x4a, 0x51, 0x65, 0xfd, 0xd6, 0x80, 0xd6, 0xaa, 0x82, 0x77, 0x45, - 0x05, 0x3f, 0x42, 0x77, 0xfa, 0x56, 0xb0, 0x47, 0xc7, 0x8d, 0x93, 0xf8, 0x53, 0xd5, 0x46, 0xbf, - 0x68, 0x30, 0xdd, 0x1d, 0x3f, 0x68, 0xc6, 0xf5, 0xcc, 0x16, 0xbb, 0x00, 0x77, 0xc6, 0xe3, 0x82, - 0x8b, 0x82, 0x7b, 0x1d, 0xad, 0x0d, 0xce, 0x8d, 0xfe, 0xd0, 0x00, 0x25, 0x25, 0x1e, 0x15, 0x33, - 0x2b, 0x96, 0xf9, 0xd8, 0xe8, 0x9b, 0x17, 0xf2, 0x51, 0xcc, 0x07, 0x82, 0xf9, 0x13, 0xb4, 0xd7, - 0x97, 0x99, 0xd1, 0x23, 0xbf, 0xd2, 0x14, 0x11, 0x2a, 0xe1, 0x13, 0x23, 0xee, 0xbc, 0x7a, 0xda, - 0xda, 0xc6, 0x89, 0x7a, 0xc8, 0xda, 0xe8, 0x37, 0x0d, 0xae, 0x26, 0x5f, 0x9d, 0xe5, 0x8c, 0x52, - 0xc6, 0x0d, 0x75, 0x63, 0x40, 0xc3, 0x0b, 0x4a, 0x55, 0xe7, 0xb9, 0x32, 0x4e, 0xd4, 0xa5, 0x6b, - 0xef, 0xee, 0xbf, 0x38, 0xcb, 0x6b, 0x2f, 0xcf, 0xf2, 0xda, 0xdf, 0x67, 0x79, 0xed, 0xd9, 0x79, - 0x7e, 0xe8, 0xe5, 0x79, 0x7e, 0xe8, 0xaf, 0xf3, 0xfc, 0xd0, 0xa3, 0x62, 0xcd, 0xf6, 0xeb, 0xad, - 0x6a, 0xc1, 0xe4, 0x8d, 0xb4, 0xb0, 0x87, 0x1b, 0x5b, 0xc6, 0x51, 0x27, 0xb8, 0x7f, 0xdc, 0xa4, - 0x5e, 0x75, 0x44, 0xfc, 0xb3, 0xda, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x87, 0xfb, 0x6d, 0x21, - 0x97, 0x0e, 0x00, 0x00, + // 1158 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xdd, 0x6e, 0x1b, 0x45, + 0x1b, 0xc7, 0xb3, 0x4d, 0x9a, 0x8f, 0x27, 0x89, 0xf2, 0x76, 0xde, 0x88, 0x38, 0xdb, 0xc4, 0x21, + 0xd3, 0xd2, 0x7c, 0x90, 0x7a, 0x89, 0xd3, 0x22, 0x35, 0xa2, 0x82, 0x44, 0x6a, 0x1b, 0xa3, 0x80, + 0x82, 0x0b, 0x15, 0x2a, 0x07, 0xd6, 0x78, 0x77, 0xb0, 0x57, 0x5d, 0xcf, 0xb8, 0xbb, 0xeb, 0x90, + 0x10, 0x59, 0x95, 0xb8, 0x82, 0x0a, 0xc4, 0x09, 0x67, 0x45, 0x1c, 0x70, 0xcc, 0x55, 0xf4, 0x8c, + 0x4a, 0x9c, 0x70, 0x14, 0xa1, 0x84, 0x2b, 0xa8, 0xb8, 0x00, 0xb4, 0x33, 0xb3, 0x6b, 0x7b, 0x3f, + 0x8c, 0xd3, 0x33, 0xcf, 0xcc, 0xf3, 0xf1, 0x9b, 0x67, 0x9e, 0xf9, 0xcf, 0x1a, 0xae, 0x7a, 0xbe, + 0x6b, 0x5b, 0xd4, 0xf0, 0x7c, 0xf2, 0x84, 0xda, 0x55, 0xd3, 0x78, 0xda, 0xa2, 0xee, 0x71, 0xa1, + 0xe9, 0x72, 0x9f, 0xa3, 0x19, 0xb9, 0x58, 0x08, 0x17, 0xf5, 0xd9, 0x1a, 0xaf, 0x71, 0xb1, 0x66, + 0x04, 0xbf, 0xa4, 0x99, 0xbe, 0x50, 0xe3, 0xbc, 0xe6, 0x50, 0x83, 0x34, 0x6d, 0x83, 0x30, 0xc6, + 0x7d, 0xe2, 0xdb, 0x9c, 0x79, 0x6a, 0x75, 0xdd, 0xe4, 0x5e, 0x83, 0x7b, 0x46, 0x95, 0x78, 0x54, + 0x46, 0x37, 0x0e, 0x37, 0xab, 0xd4, 0x27, 0x9b, 0x46, 0x93, 0xd4, 0x6c, 0x26, 0x8c, 0xc3, 0x48, + 0x71, 0x9a, 0x26, 0x71, 0x49, 0x23, 0x8c, 0xb4, 0x14, 0x5f, 0x3d, 0x24, 0x8e, 0x6d, 0x11, 0x9f, + 0xbb, 0x59, 0x06, 0x75, 0xee, 0xf9, 0x95, 0x6f, 0x39, 0xa3, 0xca, 0xe0, 0x5a, 0xdc, 0x80, 0x36, + 0xb9, 0x59, 0xaf, 0xf8, 0x2e, 0x31, 0x9f, 0xd0, 0x30, 0xca, 0x4a, 0xdc, 0x88, 0x58, 0x96, 0x4b, + 0x3d, 0xaf, 0xd2, 0x62, 0x55, 0xce, 0x2c, 0x9b, 0xd5, 0xa4, 0x21, 0x7e, 0x06, 0xab, 0x9f, 0x05, + 0xfb, 0x29, 0x31, 0x9f, 0xba, 0x66, 0x9d, 0xd8, 0x6c, 0xc7, 0x34, 0x79, 0x8b, 0xf9, 0xf7, 0x5d, + 0xde, 0xd8, 0x91, 0x4e, 0x65, 0xfa, 0xb4, 0x45, 0x3d, 0x1f, 0xcd, 0xc2, 0x65, 0xfe, 0x0d, 0xa3, + 0x6e, 0x4e, 0x7b, 0x5b, 0x5b, 0x9d, 0x28, 0xcb, 0x01, 0xba, 0x0b, 0xd3, 0x26, 0x67, 0x8c, 0x9a, + 0x41, 0x0d, 0x2a, 0xb6, 0x95, 0xbb, 0x14, 0xac, 0xee, 0xe6, 0x5e, 0x9f, 0x2e, 0xcd, 0x1e, 0x93, + 0x86, 0xb3, 0x8d, 0x7b, 0x96, 0x71, 0x79, 0xaa, 0x33, 0x2e, 0x59, 0xf8, 0xb9, 0x06, 0x6b, 0x03, + 0x10, 0x78, 0x4d, 0xce, 0x3c, 0x8a, 0x4c, 0xd0, 0xed, 0xc8, 0xae, 0x42, 0xa4, 0x61, 0x45, 0x6d, + 0x4e, 0x72, 0xed, 0xbe, 0xf3, 0xfa, 0x74, 0x69, 0x59, 0x66, 0xce, 0xb6, 0xc5, 0xe5, 0x9c, 0x1d, + 0x4f, 0xa8, 0x92, 0xe1, 0x59, 0x40, 0x82, 0xe8, 0x40, 0x1c, 0x9c, 0xda, 0x3d, 0xde, 0x87, 0xff, + 0xf7, 0xcc, 0x2a, 0xa2, 0xdb, 0x30, 0x2a, 0x0f, 0x58, 0x64, 0x9f, 0x2c, 0xce, 0x15, 0x62, 0x0d, + 0x57, 0x90, 0x0e, 0xbb, 0x23, 0x2f, 0x4f, 0x97, 0x86, 0xca, 0xca, 0x18, 0xbf, 0x0f, 0xf3, 0x22, + 0xda, 0x03, 0xea, 0x3f, 0x0a, 0x3b, 0x20, 0x2a, 0xf4, 0x3c, 0x8c, 0x4b, 0x68, 0xdb, 0x52, 0xb5, + 0x1e, 0x13, 0xe3, 0x92, 0x85, 0xbf, 0x04, 0x3d, 0xcd, 0x4f, 0xc1, 0x6c, 0x03, 0x44, 0xfd, 0x14, + 0x00, 0x0d, 0xaf, 0x4e, 0x16, 0xf5, 0x04, 0x50, 0xe4, 0x58, 0xee, 0xb2, 0xc6, 0xb7, 0x60, 0x2e, + 0x8c, 0xbc, 0xc7, 0x3d, 0xff, 0x31, 0x67, 0x74, 0x20, 0x9e, 0x5c, 0xd2, 0x4b, 0xd1, 0x7c, 0x00, + 0x13, 0x51, 0xf3, 0xaa, 0xea, 0xcc, 0x27, 0x60, 0x42, 0x2f, 0x55, 0x9f, 0xf1, 0xba, 0x1a, 0x63, + 0xa2, 0x78, 0x76, 0x1c, 0x27, 0xce, 0x73, 0x1f, 0xa0, 0x73, 0xed, 0x54, 0xe4, 0x1b, 0x05, 0x79, + 0x47, 0x0b, 0xc1, 0x1d, 0x2d, 0x48, 0x05, 0x50, 0x77, 0xb4, 0x70, 0x40, 0x6a, 0xa1, 0x6f, 0xb9, + 0xcb, 0x13, 0xbf, 0xd0, 0x14, 0x7d, 0x4f, 0x8e, 0x74, 0xfa, 0xe1, 0x0b, 0xd1, 0xa3, 0x07, 0x3d, + 0x88, 0x97, 0x04, 0xe2, 0xca, 0x7f, 0x22, 0xca, 0xd4, 0x3d, 0x8c, 0x86, 0x6a, 0x94, 0x4f, 0xb8, + 0xd5, 0x72, 0x68, 0xec, 0x46, 0x22, 0x18, 0x61, 0xa4, 0x41, 0xd5, 0xa1, 0x88, 0xdf, 0xf8, 0x3d, + 0xd5, 0x21, 0x31, 0x07, 0xb5, 0x2b, 0x04, 0x23, 0xc1, 0x0d, 0x08, 0x3d, 0x82, 0xdf, 0x78, 0x0f, + 0xae, 0x86, 0x67, 0x78, 0x2f, 0xd0, 0x92, 0xcf, 0xa5, 0x94, 0x84, 0x49, 0xd6, 0xe0, 0x7f, 0x52, + 0x62, 0x6c, 0x8b, 0x32, 0xdf, 0xfe, 0xda, 0x8e, 0x14, 0x60, 0x46, 0xcc, 0x97, 0xa2, 0x69, 0x5c, + 0x87, 0x85, 0xf4, 0x48, 0x2a, 0xfb, 0x1e, 0x4c, 0xf7, 0xa8, 0x95, 0x3a, 0xbb, 0xc5, 0x44, 0x5d, + 0xbb, 0xbd, 0x55, 0x6d, 0xa7, 0x68, 0xd7, 0x1c, 0x5e, 0x54, 0xcc, 0x3b, 0x8e, 0x93, 0xc2, 0x1c, + 0x81, 0x24, 0x96, 0xb3, 0x41, 0x86, 0xdf, 0x0c, 0xe4, 0x2b, 0x58, 0x0e, 0xb7, 0xfc, 0x29, 0x3d, + 0xf2, 0x0f, 0x82, 0x59, 0xff, 0x61, 0x80, 0xc1, 0xcc, 0xa8, 0x61, 0x17, 0x01, 0xcc, 0x3a, 0x61, + 0x8c, 0x3a, 0x9d, 0x2b, 0x34, 0xa1, 0x66, 0x4a, 0x16, 0x9a, 0x83, 0xb1, 0x26, 0x77, 0xfd, 0x48, + 0x3c, 0xcb, 0xa3, 0xc1, 0xb0, 0x64, 0xe1, 0x8f, 0x00, 0xf7, 0x0b, 0xae, 0x36, 0xa3, 0xc3, 0xb8, + 0xa7, 0xe6, 0x44, 0xec, 0x91, 0x72, 0x34, 0xc6, 0x45, 0x78, 0x4b, 0x16, 0x42, 0xf6, 0xc1, 0x17, + 0xa1, 0xfc, 0x7b, 0x28, 0x07, 0x63, 0x3d, 0xba, 0x59, 0x0e, 0x87, 0xf8, 0x08, 0xf2, 0xe9, 0x3e, + 0x51, 0xc6, 0x47, 0x80, 0x12, 0x0f, 0x4a, 0xa8, 0x37, 0xcb, 0x89, 0x1a, 0xc6, 0xe3, 0xa8, 0x3a, + 0x5e, 0x21, 0xf1, 0xf8, 0xc5, 0x7f, 0xa6, 0xe0, 0xb2, 0x48, 0x8d, 0x9e, 0xc1, 0xa8, 0xd4, 0x4d, + 0x74, 0x2d, 0x11, 0x2f, 0x29, 0xce, 0xfa, 0xf5, 0xfe, 0x46, 0x12, 0x1b, 0xaf, 0x7f, 0xf7, 0xc7, + 0xdf, 0x3f, 0x5c, 0xba, 0x8e, 0xb0, 0xf1, 0x50, 0x58, 0x3b, 0xa4, 0xea, 0x19, 0xe9, 0xcf, 0x35, + 0x7a, 0xa1, 0x01, 0x74, 0x14, 0x16, 0xad, 0xa7, 0x27, 0x48, 0x93, 0x6f, 0xfd, 0xdd, 0x81, 0x6c, + 0x15, 0xd3, 0xb6, 0x60, 0xba, 0x85, 0x8a, 0x8a, 0xe9, 0xe6, 0x7e, 0x1a, 0x54, 0x47, 0xa7, 0x8d, + 0x93, 0x50, 0x8a, 0xdb, 0xe8, 0x27, 0x0d, 0xc6, 0x43, 0x05, 0x42, 0xab, 0x99, 0x59, 0x63, 0xf2, + 0xa9, 0xaf, 0x0d, 0x60, 0xa9, 0xe8, 0xee, 0x08, 0xba, 0x2d, 0xb4, 0xd9, 0x97, 0x2e, 0xd2, 0xc9, + 0x6e, 0xb8, 0xef, 0x35, 0x98, 0x0c, 0xe3, 0xed, 0x38, 0x4e, 0x16, 0x5f, 0x52, 0xde, 0xb3, 0xf8, + 0x52, 0x44, 0x1a, 0x17, 0x04, 0xdf, 0x2a, 0xba, 0x31, 0x18, 0x1f, 0xfa, 0x45, 0x83, 0xe9, 0x1e, + 0x61, 0xcc, 0x3a, 0xd8, 0x34, 0xb9, 0xcd, 0x3a, 0xd8, 0x54, 0xa5, 0x1d, 0xf0, 0x60, 0x1b, 0xc2, + 0x37, 0xfc, 0x2a, 0x31, 0x4e, 0x02, 0x09, 0x6f, 0xa3, 0x1f, 0x35, 0x58, 0xe8, 0xf7, 0x3d, 0x84, + 0xee, 0xa4, 0x93, 0x0c, 0xf0, 0x15, 0xa7, 0x6f, 0xbf, 0x89, 0xab, 0xba, 0xf7, 0xbf, 0x69, 0x30, + 0xd5, 0xad, 0x88, 0x68, 0x23, 0xb3, 0x95, 0x52, 0x54, 0x59, 0xbf, 0x39, 0xa0, 0xb5, 0xaa, 0xe0, + 0x3d, 0x51, 0xc1, 0x0f, 0xd1, 0xdd, 0xbe, 0x15, 0xec, 0xd1, 0x71, 0xe3, 0x24, 0xfe, 0x54, 0xb5, + 0xd1, 0xcf, 0x1a, 0xcc, 0x74, 0xc7, 0x0f, 0x9a, 0x71, 0x23, 0xb3, 0xc5, 0x2e, 0xc0, 0x9d, 0xf1, + 0xb8, 0xe0, 0xa2, 0xe0, 0xde, 0x40, 0xeb, 0x83, 0x73, 0xa3, 0xdf, 0x35, 0x40, 0x49, 0x89, 0x47, + 0xc5, 0xcc, 0x8a, 0x65, 0x3e, 0x36, 0xfa, 0xd6, 0x85, 0x7c, 0x14, 0xf3, 0x81, 0x60, 0xfe, 0x18, + 0xed, 0xf5, 0x65, 0x66, 0xf4, 0xc8, 0xaf, 0x34, 0x45, 0x84, 0x4a, 0xf8, 0xc4, 0x88, 0x3b, 0xaf, + 0x9e, 0xb6, 0xb6, 0x71, 0xa2, 0x1e, 0xb2, 0x36, 0xfa, 0x55, 0x83, 0x2b, 0xc9, 0x57, 0x67, 0x25, + 0xa3, 0x94, 0x71, 0x43, 0xdd, 0x18, 0xd0, 0xf0, 0x82, 0x52, 0xd5, 0x79, 0xae, 0x8c, 0x13, 0x75, + 0xe9, 0xda, 0xbb, 0xfb, 0x2f, 0xcf, 0xf2, 0xda, 0xab, 0xb3, 0xbc, 0xf6, 0xd7, 0x59, 0x5e, 0x7b, + 0x7e, 0x9e, 0x1f, 0x7a, 0x75, 0x9e, 0x1f, 0xfa, 0xf3, 0x3c, 0x3f, 0xf4, 0xb8, 0x58, 0xb3, 0xfd, + 0x7a, 0xab, 0x5a, 0x30, 0x79, 0x23, 0x2d, 0xec, 0xe1, 0xe6, 0x6d, 0xe3, 0xa8, 0x13, 0xdc, 0x3f, + 0x6e, 0x52, 0xaf, 0x3a, 0x2a, 0xfe, 0x59, 0x6d, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x10, 0x5d, + 0x70, 0xc6, 0x97, 0x0e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index a89e0107ee..e58d0709fa 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1491,100 +1491,100 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1480 bytes of a gzipped FileDescriptorProto + // 1482 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdc, 0xc4, 0x17, 0x8f, 0x9b, 0x34, 0x4d, 0x5f, 0x36, 0xbf, 0x9c, 0x34, 0x75, 0x9c, 0x6f, 0x77, 0x53, 0xe7, - 0x0b, 0x84, 0xd2, 0x24, 0x4a, 0x52, 0x09, 0x51, 0xe0, 0x90, 0x4d, 0x8a, 0x58, 0xa9, 0xa9, 0x90, - 0xd3, 0x52, 0xa9, 0x12, 0x32, 0xb3, 0xf6, 0xd4, 0x6b, 0xd5, 0x1e, 0x6f, 0x3d, 0xde, 0x74, 0xcb, - 0x01, 0x71, 0x41, 0xe2, 0x82, 0x04, 0x42, 0xe2, 0x88, 0x7a, 0xe0, 0x80, 0xc4, 0x0d, 0xf5, 0x8f, - 0xa8, 0xc4, 0xa5, 0xea, 0x09, 0x71, 0x88, 0x50, 0x7b, 0xe1, 0x9c, 0x33, 0x07, 0x34, 0x63, 0xef, - 0xac, 0xed, 0xcc, 0x26, 0x69, 0x1a, 0x7a, 0xca, 0xce, 0xbc, 0xcf, 0xcc, 0xfb, 0xcc, 0x9b, 0x37, - 0x9f, 0xf7, 0x62, 0xd0, 0x68, 0x1c, 0x79, 0x0e, 0x5e, 0xa6, 0x31, 0xba, 0x87, 0xbd, 0xba, 0xbd, - 0x1c, 0xb7, 0x97, 0x9a, 0x51, 0x18, 0x87, 0xea, 0x58, 0x62, 0x59, 0xea, 0x58, 0xf4, 0x8b, 0x45, - 0xa8, 0x67, 0x23, 0x0b, 0xd9, 0x76, 0xd8, 0x22, 0x71, 0xb2, 0x46, 0xaf, 0x14, 0x21, 0x3b, 0xc8, - 0xf7, 0x1c, 0x14, 0x87, 0x51, 0x0a, 0x98, 0x72, 0x43, 0x37, 0xe4, 0x3f, 0x97, 0xd9, 0xaf, 0x74, - 0x76, 0xc6, 0x0e, 0x69, 0x10, 0x52, 0x2b, 0x31, 0x24, 0x83, 0xc4, 0x64, 0xfc, 0x7e, 0x0a, 0x8c, - 0x2d, 0xea, 0xde, 0x6a, 0x3a, 0x28, 0xc6, 0x35, 0x42, 0x70, 0x64, 0x62, 0x07, 0x07, 0xcd, 0xd8, - 0x0b, 0x89, 0x89, 0x62, 0x5c, 0x0d, 0x5b, 0xc4, 0xa1, 0xaa, 0x06, 0x67, 0xec, 0x08, 0x33, 0x47, - 0x9a, 0x32, 0xa7, 0x2c, 0x9c, 0x35, 0x3b, 0x43, 0x75, 0x06, 0x86, 0xec, 0x06, 0xf2, 0x88, 0xe5, - 0x39, 0xda, 0xa9, 0xd4, 0xc4, 0xc6, 0x35, 0x47, 0x7d, 0x00, 0x33, 0x01, 0x33, 0xb0, 0x5d, 0xad, - 0x48, 0x6c, 0x6b, 0x45, 0x28, 0xc6, 0x5a, 0x3f, 0xc3, 0x56, 0x3f, 0x78, 0xb2, 0x5b, 0xe9, 0xfb, - 0x73, 0xb7, 0xf2, 0xa6, 0xeb, 0xc5, 0x8d, 0x56, 0x7d, 0xc9, 0x0e, 0x83, 0x94, 0x5f, 0xfa, 0x67, - 0x91, 0x3a, 0xf7, 0x96, 0xe3, 0x87, 0x4d, 0x4c, 0x97, 0x36, 0xb1, 0xfd, 0xec, 0xf1, 0x22, 0xa4, - 0xf4, 0x37, 0xb1, 0x6d, 0x4e, 0x07, 0x1e, 0x91, 0x70, 0xe6, 0x8e, 0x51, 0xbb, 0x87, 0xe3, 0x81, - 0x13, 0x71, 0x8c, 0xda, 0x12, 0xc7, 0xc6, 0x65, 0xb8, 0x74, 0x78, 0x30, 0x4d, 0x4c, 0x9b, 0x21, - 0xa1, 0xd8, 0xf8, 0x5e, 0x81, 0xd1, 0x2d, 0xea, 0x5e, 0xf7, 0xee, 0xb7, 0x3c, 0x67, 0x9b, 0x5d, - 0xe9, 0x01, 0x71, 0xfe, 0x08, 0x06, 0x51, 0xc0, 0x52, 0x21, 0x89, 0x72, 0x75, 0xe9, 0x25, 0x0e, - 0x50, 0x23, 0xb1, 0x99, 0xae, 0x56, 0x2f, 0x00, 0x34, 0x42, 0x1a, 0x5b, 0x0e, 0x26, 0x61, 0x90, - 0xdc, 0x82, 0x79, 0x96, 0xcd, 0x6c, 0xb2, 0x09, 0x43, 0x83, 0xe9, 0x3c, 0x25, 0xc1, 0xf6, 0x67, - 0x05, 0x26, 0x98, 0x69, 0x7b, 0xeb, 0xf5, 0x12, 0x5e, 0x84, 0x49, 0x9f, 0x06, 0x56, 0x1c, 0xde, - 0xc3, 0xc4, 0xf2, 0xea, 0x76, 0x8e, 0xf9, 0xb8, 0x4f, 0x83, 0x9b, 0xcc, 0x52, 0xab, 0xdb, 0xc9, - 0x01, 0x6e, 0xc0, 0xcc, 0x3e, 0x96, 0x9d, 0x33, 0xa8, 0x2b, 0x30, 0x15, 0x47, 0x88, 0x50, 0x64, - 0xf3, 0x7c, 0xb0, 0xc3, 0xa0, 0xe9, 0xe3, 0x18, 0x73, 0xea, 0x43, 0xe6, 0x64, 0xc6, 0xb6, 0x91, - 0x9a, 0x8c, 0x5f, 0x14, 0x18, 0xdb, 0xa2, 0xee, 0x86, 0x8f, 0x51, 0x54, 0x45, 0x3e, 0x22, 0x36, - 0x3e, 0xde, 0x6b, 0xe8, 0xc6, 0xa3, 0xff, 0x95, 0xe2, 0xc1, 0x9c, 0x37, 0x10, 0x21, 0xd8, 0x4f, - 0x52, 0xd9, 0xec, 0x0c, 0x8d, 0x19, 0x38, 0x5f, 0x60, 0x2a, 0x2e, 0xef, 0xd7, 0x24, 0xd5, 0x58, - 0x3a, 0xe2, 0xe0, 0x75, 0xdd, 0xdc, 0x2c, 0xf0, 0xc4, 0xb2, 0xbe, 0x08, 0x49, 0xfa, 0xde, 0xcd, - 0x21, 0x36, 0x71, 0x27, 0x24, 0x58, 0xd5, 0x61, 0x28, 0xc2, 0x36, 0xf6, 0x76, 0x70, 0x94, 0x9e, - 0x43, 0x8c, 0xd3, 0x24, 0xcc, 0x90, 0x15, 0xe7, 0xf8, 0xed, 0x34, 0x4c, 0x72, 0x93, 0xeb, 0xd1, - 0x18, 0x47, 0x1f, 0x77, 0x76, 0xfb, 0x10, 0x46, 0xec, 0x90, 0x10, 0x9c, 0xdc, 0x6b, 0x27, 0xf8, - 0x55, 0x6d, 0x6f, 0xb7, 0x32, 0xf5, 0x10, 0x05, 0xfe, 0x55, 0x23, 0x67, 0x36, 0xcc, 0x52, 0x77, - 0x5c, 0x73, 0x54, 0x03, 0x4a, 0x75, 0x6c, 0x37, 0xd6, 0x56, 0x9b, 0x11, 0xbe, 0xeb, 0xb5, 0xb5, - 0x12, 0x27, 0x94, 0x9b, 0x53, 0xaf, 0xe4, 0x1e, 0x4e, 0xa2, 0x22, 0xe7, 0xf6, 0x76, 0x2b, 0x13, - 0xc9, 0xfe, 0x5d, 0x9b, 0x91, 0x79, 0x4f, 0xea, 0x0a, 0x9c, 0xed, 0xe6, 0xec, 0x69, 0xbe, 0x68, - 0x6a, 0x6f, 0xb7, 0x32, 0x9e, 0x2c, 0x12, 0x26, 0xc3, 0x1c, 0xf2, 0xd2, 0x0c, 0xce, 0x5e, 0xcc, - 0x60, 0xfe, 0x62, 0x6e, 0x40, 0x92, 0xa2, 0x77, 0x71, 0x64, 0xa5, 0x97, 0xce, 0xce, 0x0a, 0x7c, - 0xdb, 0xf2, 0xde, 0x6e, 0x45, 0x4f, 0xb6, 0x95, 0x80, 0x0c, 0x73, 0xa2, 0x33, 0xbb, 0x91, 0x4c, - 0xf2, 0x94, 0x1c, 0x6f, 0x91, 0x7a, 0x48, 0x1c, 0x8f, 0xb8, 0x56, 0x13, 0x47, 0x5e, 0xe8, 0x68, - 0xc3, 0x73, 0xca, 0xc2, 0x40, 0x75, 0x76, 0x6f, 0xb7, 0x72, 0x3e, 0xd9, 0xac, 0x88, 0x30, 0xcc, - 0x31, 0x31, 0xf5, 0x09, 0x9f, 0x51, 0x7d, 0x98, 0x64, 0x42, 0x5f, 0x54, 0xda, 0x91, 0x13, 0x50, - 0xda, 0x89, 0xc0, 0x23, 0x05, 0x75, 0x67, 0xde, 0x50, 0x7b, 0x9f, 0xb7, 0xd1, 0x13, 0xf1, 0x86, - 0xda, 0x05, 0x6f, 0xef, 0x82, 0xc6, 0xe4, 0xc7, 0xe7, 0x6a, 0x62, 0xf1, 0xc2, 0x6b, 0x61, 0x82, - 0xea, 0x3e, 0x76, 0xb4, 0x31, 0x2e, 0x1b, 0xe7, 0x7c, 0x1a, 0x64, 0xc4, 0xe6, 0x5a, 0x62, 0xbc, - 0x3a, 0xf4, 0xcd, 0xa3, 0x4a, 0xdf, 0xdf, 0x8f, 0x2a, 0x7d, 0xc6, 0x05, 0x98, 0x95, 0xe4, 0xac, - 0xc8, 0xe9, 0xaf, 0x15, 0x2e, 0x59, 0x1b, 0x3e, 0xf2, 0x82, 0x5b, 0xc4, 0xc1, 0x3e, 0x76, 0x51, - 0x8c, 0x1d, 0x2e, 0x6b, 0x07, 0x55, 0xde, 0x39, 0x28, 0x89, 0xe7, 0xd5, 0xd5, 0x1b, 0xe8, 0xbc, - 0xb0, 0x9a, 0xa3, 0x4e, 0xc1, 0x69, 0xdc, 0x0c, 0xed, 0x06, 0x7f, 0x7c, 0x03, 0x66, 0x32, 0x50, - 0xa7, 0x61, 0x90, 0x62, 0xe2, 0x88, 0x77, 0x97, 0x8e, 0x8c, 0x79, 0xb8, 0xd8, 0x93, 0x86, 0x20, - 0x1b, 0xa7, 0x4f, 0xb3, 0x9e, 0x08, 0xcc, 0xa7, 0x9d, 0xfe, 0xe3, 0x20, 0xa2, 0x39, 0x1d, 0x38, - 0x55, 0xd0, 0x81, 0x79, 0x18, 0x21, 0xad, 0xc0, 0x8a, 0x3a, 0x3b, 0xa6, 0x5c, 0x4b, 0xa4, 0x15, - 0x08, 0x2f, 0xc6, 0x1c, 0x94, 0xe5, 0x5e, 0xb3, 0x41, 0x1c, 0xdf, 0xa2, 0xee, 0xba, 0xe3, 0xbc, - 0x3a, 0xa5, 0xab, 0x00, 0xa2, 0xaf, 0xa2, 0x5a, 0xff, 0x5c, 0xff, 0xc2, 0xf0, 0xaa, 0xbe, 0x54, - 0x68, 0xd7, 0x96, 0x84, 0x1f, 0x33, 0x83, 0x36, 0x74, 0xd0, 0x8a, 0x34, 0x04, 0xc7, 0x9f, 0x14, - 0x6e, 0x64, 0xef, 0xcf, 0xed, 0x9e, 0xe1, 0x36, 0xf6, 0xdc, 0x46, 0x7c, 0x5c, 0xae, 0x6b, 0x30, - 0xb4, 0x83, 0x7c, 0x0b, 0x39, 0x4e, 0x94, 0xd6, 0x15, 0xed, 0xd9, 0xe3, 0xc5, 0xa9, 0x34, 0xa7, - 0xd7, 0x1d, 0x27, 0xc2, 0x94, 0x6e, 0xc7, 0x91, 0x47, 0x5c, 0xf3, 0xcc, 0x0e, 0xf2, 0xd9, 0x0c, - 0xcb, 0x80, 0x07, 0xdc, 0x2b, 0xcf, 0x80, 0x01, 0x33, 0x1d, 0x19, 0x06, 0xcc, 0xf5, 0xe2, 0x27, - 0x0e, 0xf1, 0x95, 0x02, 0xea, 0x16, 0x75, 0x37, 0x31, 0xab, 0x8e, 0x02, 0xf4, 0x3a, 0xe9, 0x1b, - 0xff, 0x03, 0x7d, 0x3f, 0x03, 0x41, 0xf0, 0x47, 0x25, 0x7d, 0x6e, 0x34, 0x0e, 0x23, 0x5c, 0x23, - 0x31, 0x8e, 0x78, 0x09, 0x5e, 0x4f, 0x3a, 0xe9, 0xe3, 0x15, 0xef, 0x2a, 0x94, 0xd2, 0x4e, 0xdc, - 0x62, 0xda, 0xc1, 0xb9, 0x8e, 0xae, 0x56, 0xf6, 0x25, 0x45, 0x6d, 0x63, 0x3d, 0xf5, 0x73, 0xf3, - 0x61, 0x13, 0x9b, 0xc3, 0xa8, 0x3b, 0x30, 0xde, 0x80, 0xf9, 0x03, 0x78, 0x09, 0xfe, 0xf7, 0xf9, - 0x25, 0x24, 0x3d, 0xa4, 0x38, 0xdd, 0x76, 0x03, 0x45, 0x98, 0x5e, 0x6b, 0xdb, 0x0d, 0x2e, 0x4a, - 0xc7, 0x3a, 0x83, 0x06, 0x2c, 0x82, 0x61, 0x13, 0xa7, 0xa1, 0x36, 0x3b, 0x43, 0xe3, 0x12, 0x2c, - 0x1c, 0xe6, 0x52, 0xd0, 0x6b, 0xf1, 0x2e, 0xb0, 0x2b, 0x10, 0x4c, 0xce, 0xfe, 0xfb, 0x5e, 0xc2, - 0x98, 0xe5, 0x1a, 0x99, 0x77, 0x2b, 0x38, 0xb9, 0x5c, 0x94, 0x36, 0x90, 0xef, 0xd5, 0x59, 0x29, - 0xd8, 0x4c, 0x30, 0x5e, 0x48, 0x4e, 0x3a, 0x50, 0x89, 0x0e, 0x49, 0x1c, 0x75, 0xa8, 0xac, 0xfe, - 0x53, 0x82, 0xfe, 0x2d, 0xea, 0xaa, 0xb7, 0x61, 0x38, 0xdb, 0x26, 0xef, 0xcf, 0x94, 0x7c, 0x97, - 0xad, 0xbf, 0x75, 0x08, 0x40, 0xb4, 0xb0, 0x9f, 0xc3, 0x68, 0xa1, 0x05, 0x37, 0xa4, 0x4b, 0x73, - 0x18, 0xfd, 0xd2, 0xe1, 0x18, 0xe1, 0xe1, 0x36, 0x0c, 0x67, 0xfb, 0x44, 0x29, 0xf5, 0x0c, 0x40, - 0x4e, 0x5d, 0xd2, 0xbc, 0xa9, 0x77, 0x61, 0x7c, 0x5f, 0xe3, 0xf6, 0x7f, 0xf9, 0xe2, 0x3c, 0x4a, - 0xbf, 0x7c, 0x14, 0x94, 0xf0, 0xd3, 0x86, 0xe9, 0x1e, 0xc5, 0x54, 0x1a, 0x06, 0x39, 0x56, 0x5f, - 0x3d, 0x3a, 0x56, 0x78, 0x0e, 0x61, 0x52, 0x56, 0x1a, 0x7b, 0x44, 0x68, 0x1f, 0x50, 0x5f, 0x3e, - 0x22, 0x50, 0x38, 0xfc, 0x0c, 0x46, 0xf2, 0x25, 0xef, 0xa2, 0x6c, 0x87, 0x1c, 0x44, 0x7f, 0xfb, - 0x50, 0x88, 0xd8, 0xbe, 0x05, 0xe7, 0xe4, 0xd5, 0x4a, 0xba, 0x87, 0x14, 0xaa, 0xaf, 0x1c, 0x19, - 0x2a, 0xdc, 0xda, 0x30, 0x56, 0xac, 0x2f, 0xf3, 0xb2, 0x5d, 0x0a, 0x20, 0xfd, 0x9d, 0x23, 0x80, - 0x84, 0x93, 0x2f, 0x41, 0xeb, 0x59, 0x23, 0x7a, 0xe4, 0x9b, 0x1c, 0xad, 0x5f, 0x79, 0x19, 0xb4, - 0xf0, 0xff, 0xad, 0x02, 0x17, 0x0e, 0x56, 0x79, 0x69, 0xe4, 0x0e, 0x5c, 0xa2, 0xbf, 0xf7, 0xd2, - 0x4b, 0xb2, 0xb9, 0x2b, 0x53, 0x50, 0x69, 0xee, 0x4a, 0x80, 0xf2, 0xdc, 0x3d, 0x40, 0x2a, 0xd5, - 0x3b, 0x50, 0xca, 0xfd, 0x57, 0x3d, 0x27, 0x7f, 0x70, 0x5d, 0x84, 0xbe, 0x70, 0x18, 0x22, 0xab, - 0x92, 0x85, 0x12, 0x25, 0x55, 0xc9, 0x3c, 0x46, 0xae, 0x92, 0xf2, 0x9a, 0xa3, 0xfe, 0xa0, 0x40, - 0xe5, 0xb0, 0xaf, 0x66, 0x6b, 0xbd, 0x6f, 0xa3, 0xe7, 0x22, 0xfd, 0xfd, 0x63, 0x2c, 0xea, 0xb0, - 0xaa, 0x5e, 0x7f, 0xf2, 0xbc, 0xac, 0x3c, 0x7d, 0x5e, 0x56, 0xfe, 0x7a, 0x5e, 0x56, 0xbe, 0x7b, - 0x51, 0xee, 0x7b, 0xfa, 0xa2, 0xdc, 0xf7, 0xc7, 0x8b, 0x72, 0xdf, 0x9d, 0xd5, 0x4c, 0xc1, 0xdd, - 0xe6, 0x0e, 0x16, 0xaf, 0xa3, 0x3a, 0x5d, 0x4e, 0xbf, 0x28, 0xee, 0xac, 0x5c, 0x59, 0x6e, 0x67, - 0xbe, 0x52, 0xb2, 0x02, 0x5c, 0x1f, 0xe4, 0xdf, 0x08, 0xd7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, - 0x53, 0xce, 0xb3, 0x94, 0xc5, 0x14, 0x00, 0x00, + 0xfb, 0xfd, 0x12, 0x4a, 0x93, 0x28, 0x49, 0x11, 0xa2, 0xc0, 0x21, 0x9b, 0x14, 0xb1, 0x52, 0x53, + 0x21, 0xa7, 0xa5, 0x52, 0x25, 0x64, 0x66, 0xed, 0xa9, 0xd7, 0xaa, 0x3d, 0xde, 0x7a, 0xbc, 0xe9, + 0x96, 0x03, 0xe2, 0x82, 0xc4, 0x05, 0x09, 0x84, 0xc4, 0x11, 0xf5, 0xc0, 0x01, 0x89, 0x1b, 0xea, + 0x1f, 0x51, 0x89, 0x4b, 0xd5, 0x13, 0xe2, 0x10, 0xa1, 0xf6, 0xc2, 0x39, 0x67, 0x0e, 0x68, 0xc6, + 0xde, 0x59, 0xdb, 0x99, 0x4d, 0xd2, 0x34, 0xf4, 0x94, 0x9d, 0x79, 0x9f, 0x99, 0xf7, 0x99, 0x37, + 0x6f, 0x3e, 0xef, 0xc5, 0xa0, 0xd1, 0x38, 0xf2, 0x1c, 0xbc, 0x4c, 0x63, 0x74, 0x0f, 0x7b, 0x75, + 0x7b, 0x39, 0x6e, 0x2f, 0x35, 0xa3, 0x30, 0x0e, 0xd5, 0xb1, 0xc4, 0xb2, 0xd4, 0xb1, 0xe8, 0x17, + 0x8b, 0x50, 0xcf, 0x46, 0x16, 0xb2, 0xed, 0xb0, 0x45, 0xe2, 0x64, 0x8d, 0x5e, 0x29, 0x42, 0x76, + 0x90, 0xef, 0x39, 0x28, 0x0e, 0xa3, 0x14, 0x30, 0xe5, 0x86, 0x6e, 0xc8, 0x7f, 0x2e, 0xb3, 0x5f, + 0xe9, 0xec, 0x8c, 0x1d, 0xd2, 0x20, 0xa4, 0x56, 0x62, 0x48, 0x06, 0x89, 0xc9, 0xf8, 0xed, 0x14, + 0x18, 0x5b, 0xd4, 0xbd, 0xd5, 0x74, 0x50, 0x8c, 0x6b, 0x84, 0xe0, 0xc8, 0xc4, 0x0e, 0x0e, 0x9a, + 0xb1, 0x17, 0x12, 0x13, 0xc5, 0xb8, 0x1a, 0xb6, 0x88, 0x43, 0x55, 0x0d, 0xce, 0xd8, 0x11, 0x66, + 0x8e, 0x34, 0x65, 0x4e, 0x59, 0x38, 0x6b, 0x76, 0x86, 0xea, 0x0c, 0x0c, 0xd9, 0x0d, 0xe4, 0x11, + 0xcb, 0x73, 0xb4, 0x53, 0xa9, 0x89, 0x8d, 0x6b, 0x8e, 0xfa, 0x00, 0x66, 0x02, 0x66, 0x60, 0xbb, + 0x5a, 0x91, 0xd8, 0xd6, 0x8a, 0x50, 0x8c, 0xb5, 0x7e, 0x86, 0xad, 0xbe, 0xff, 0x64, 0xb7, 0xd2, + 0xf7, 0xc7, 0x6e, 0xe5, 0xff, 0xae, 0x17, 0x37, 0x5a, 0xf5, 0x25, 0x3b, 0x0c, 0x52, 0x7e, 0xe9, + 0x9f, 0x45, 0xea, 0xdc, 0x5b, 0x8e, 0x1f, 0x36, 0x31, 0x5d, 0xda, 0xc4, 0xf6, 0xb3, 0xc7, 0x8b, + 0x90, 0xd2, 0xdf, 0xc4, 0xb6, 0x39, 0x1d, 0x78, 0x44, 0xc2, 0x99, 0x3b, 0x46, 0xed, 0x1e, 0x8e, + 0x07, 0x4e, 0xc4, 0x31, 0x6a, 0x4b, 0x1c, 0x1b, 0x97, 0xe1, 0xd2, 0xe1, 0xc1, 0x34, 0x31, 0x6d, + 0x86, 0x84, 0x62, 0xe3, 0x3b, 0x05, 0x46, 0xb7, 0xa8, 0x7b, 0xdd, 0xbb, 0xdf, 0xf2, 0x9c, 0x6d, + 0x76, 0xa5, 0x07, 0xc4, 0xf9, 0x43, 0x18, 0x44, 0x01, 0x4b, 0x85, 0x24, 0xca, 0xd5, 0xa5, 0x97, + 0x38, 0x40, 0x8d, 0xc4, 0x66, 0xba, 0x5a, 0xbd, 0x00, 0xd0, 0x08, 0x69, 0x6c, 0x39, 0x98, 0x84, + 0x41, 0x72, 0x0b, 0xe6, 0x59, 0x36, 0xb3, 0xc9, 0x26, 0x0c, 0x0d, 0xa6, 0xf3, 0x94, 0x04, 0xdb, + 0x9f, 0x14, 0x98, 0x60, 0xa6, 0xed, 0xad, 0xd7, 0x4b, 0x78, 0x11, 0x26, 0x7d, 0x1a, 0x58, 0x71, + 0x78, 0x0f, 0x13, 0xcb, 0xab, 0xdb, 0x39, 0xe6, 0xe3, 0x3e, 0x0d, 0x6e, 0x32, 0x4b, 0xad, 0x6e, + 0x27, 0x07, 0xb8, 0x01, 0x33, 0xfb, 0x58, 0x76, 0xce, 0xa0, 0xae, 0xc0, 0x54, 0x1c, 0x21, 0x42, + 0x91, 0xcd, 0xf3, 0xc1, 0x0e, 0x83, 0xa6, 0x8f, 0x63, 0xcc, 0xa9, 0x0f, 0x99, 0x93, 0x19, 0xdb, + 0x46, 0x6a, 0x32, 0x7e, 0x56, 0x60, 0x6c, 0x8b, 0xba, 0x1b, 0x3e, 0x46, 0x51, 0x15, 0xf9, 0x88, + 0xd8, 0xf8, 0x78, 0xaf, 0xa1, 0x1b, 0x8f, 0xfe, 0x57, 0x8a, 0x07, 0x73, 0xde, 0x40, 0x84, 0x60, + 0x3f, 0x49, 0x65, 0xb3, 0x33, 0x34, 0x66, 0xe0, 0x7c, 0x81, 0xa9, 0xb8, 0xbc, 0x5f, 0x92, 0x54, + 0x63, 0xe9, 0x88, 0x83, 0xd7, 0x75, 0x73, 0xb3, 0xc0, 0x13, 0xcb, 0xfa, 0x3c, 0x24, 0xe9, 0x7b, + 0x37, 0x87, 0xd8, 0xc4, 0x9d, 0x90, 0x60, 0x55, 0x87, 0xa1, 0x08, 0xdb, 0xd8, 0xdb, 0xc1, 0x51, + 0x7a, 0x0e, 0x31, 0x4e, 0x93, 0x30, 0x43, 0x56, 0x9c, 0xe3, 0xd7, 0xd3, 0x30, 0xc9, 0x4d, 0xae, + 0x47, 0x63, 0x1c, 0x7d, 0xd4, 0xd9, 0xed, 0x03, 0x18, 0xb1, 0x43, 0x42, 0x70, 0x72, 0xaf, 0x9d, + 0xe0, 0x57, 0xb5, 0xbd, 0xdd, 0xca, 0xd4, 0x43, 0x14, 0xf8, 0x57, 0x8d, 0x9c, 0xd9, 0x30, 0x4b, + 0xdd, 0x71, 0xcd, 0x51, 0x0d, 0x28, 0xd5, 0xb1, 0xdd, 0x58, 0x5b, 0x6d, 0x46, 0xf8, 0xae, 0xd7, + 0xd6, 0x4a, 0x9c, 0x50, 0x6e, 0x4e, 0xbd, 0x92, 0x7b, 0x38, 0x89, 0x8a, 0x9c, 0xdb, 0xdb, 0xad, + 0x4c, 0x24, 0xfb, 0x77, 0x6d, 0x46, 0xe6, 0x3d, 0xa9, 0x2b, 0x70, 0xb6, 0x9b, 0xb3, 0xa7, 0xf9, + 0xa2, 0xa9, 0xbd, 0xdd, 0xca, 0x78, 0xb2, 0x48, 0x98, 0x0c, 0x73, 0xc8, 0x4b, 0x33, 0x38, 0x7b, + 0x31, 0x83, 0xf9, 0x8b, 0xb9, 0x01, 0x49, 0x8a, 0xde, 0xc5, 0x91, 0x95, 0x5e, 0x3a, 0x3b, 0x2b, + 0xf0, 0x6d, 0xcb, 0x7b, 0xbb, 0x15, 0x3d, 0xd9, 0x56, 0x02, 0x32, 0xcc, 0x89, 0xce, 0xec, 0x46, + 0x32, 0xc9, 0x53, 0x72, 0xbc, 0x45, 0xea, 0x21, 0x71, 0x3c, 0xe2, 0x5a, 0x4d, 0x1c, 0x79, 0xa1, + 0xa3, 0x0d, 0xcf, 0x29, 0x0b, 0x03, 0xd5, 0xd9, 0xbd, 0xdd, 0xca, 0xf9, 0x64, 0xb3, 0x22, 0xc2, + 0x30, 0xc7, 0xc4, 0xd4, 0xc7, 0x7c, 0x46, 0xf5, 0x61, 0x92, 0x09, 0x7d, 0x51, 0x69, 0x47, 0x4e, + 0x40, 0x69, 0x27, 0x02, 0x8f, 0x14, 0xd4, 0x9d, 0x79, 0x43, 0xed, 0x7d, 0xde, 0x46, 0x4f, 0xc4, + 0x1b, 0x6a, 0x17, 0xbc, 0xbd, 0x03, 0x1a, 0x93, 0x1f, 0x9f, 0xab, 0x89, 0xc5, 0x0b, 0xaf, 0x85, + 0x09, 0xaa, 0xfb, 0xd8, 0xd1, 0xc6, 0xb8, 0x6c, 0x9c, 0xf3, 0x69, 0x90, 0x11, 0x9b, 0x6b, 0x89, + 0xf1, 0xea, 0xd0, 0xd7, 0x8f, 0x2a, 0x7d, 0x7f, 0x3d, 0xaa, 0xf4, 0x19, 0x17, 0x60, 0x56, 0x92, + 0xb3, 0x22, 0xa7, 0xbf, 0x52, 0xb8, 0x64, 0x6d, 0xf8, 0xc8, 0x0b, 0x6e, 0x11, 0x07, 0xfb, 0xd8, + 0x45, 0x31, 0x76, 0xb8, 0xac, 0x1d, 0x54, 0x79, 0xe7, 0xa0, 0x24, 0x9e, 0x57, 0x57, 0x6f, 0xa0, + 0xf3, 0xc2, 0x6a, 0x8e, 0x3a, 0x05, 0xa7, 0x71, 0x33, 0xb4, 0x1b, 0xfc, 0xf1, 0x0d, 0x98, 0xc9, + 0x40, 0x9d, 0x86, 0x41, 0x8a, 0x89, 0x23, 0xde, 0x5d, 0x3a, 0x32, 0xe6, 0xe1, 0x62, 0x4f, 0x1a, + 0x82, 0x6c, 0x9c, 0x3e, 0xcd, 0x7a, 0x22, 0x30, 0x9f, 0x74, 0xfa, 0x8f, 0x83, 0x88, 0xe6, 0x74, + 0xe0, 0x54, 0x41, 0x07, 0xe6, 0x61, 0x84, 0xb4, 0x02, 0x2b, 0xea, 0xec, 0x98, 0x72, 0x2d, 0x91, + 0x56, 0x20, 0xbc, 0x18, 0x73, 0x50, 0x96, 0x7b, 0xcd, 0x06, 0x71, 0x7c, 0x8b, 0xba, 0xeb, 0x8e, + 0xf3, 0xea, 0x94, 0xae, 0x02, 0x88, 0xbe, 0x8a, 0x6a, 0xfd, 0x73, 0xfd, 0x0b, 0xc3, 0xab, 0xfa, + 0x52, 0xa1, 0x5d, 0x5b, 0x12, 0x7e, 0xcc, 0x0c, 0xda, 0xd0, 0x41, 0x2b, 0xd2, 0x10, 0x1c, 0x7f, + 0x54, 0xb8, 0x91, 0xbd, 0x3f, 0xb7, 0x7b, 0x86, 0xdb, 0xd8, 0x73, 0x1b, 0xf1, 0x71, 0xb9, 0xae, + 0xc1, 0xd0, 0x0e, 0xf2, 0x2d, 0xe4, 0x38, 0x51, 0x5a, 0x57, 0xb4, 0x67, 0x8f, 0x17, 0xa7, 0xd2, + 0x9c, 0x5e, 0x77, 0x9c, 0x08, 0x53, 0xba, 0x1d, 0x47, 0x1e, 0x71, 0xcd, 0x33, 0x3b, 0xc8, 0x67, + 0x33, 0x2c, 0x03, 0x1e, 0x70, 0xaf, 0x3c, 0x03, 0x06, 0xcc, 0x74, 0x64, 0x18, 0x30, 0xd7, 0x8b, + 0x9f, 0x38, 0xc4, 0x97, 0x0a, 0xa8, 0x5b, 0xd4, 0xdd, 0xc4, 0xac, 0x3a, 0x0a, 0xd0, 0xeb, 0xa4, + 0x6f, 0xfc, 0x07, 0xf4, 0xfd, 0x0c, 0x04, 0xc1, 0x1f, 0x94, 0xf4, 0xb9, 0xd1, 0x38, 0x8c, 0x70, + 0x8d, 0xc4, 0x38, 0xe2, 0x25, 0x78, 0x3d, 0xe9, 0xa4, 0x8f, 0x57, 0xbc, 0xab, 0x50, 0x4a, 0x3b, + 0x71, 0x8b, 0x69, 0x07, 0xe7, 0x3a, 0xba, 0x5a, 0xd9, 0x97, 0x14, 0xb5, 0x8d, 0xf5, 0xd4, 0xcf, + 0xcd, 0x87, 0x4d, 0x6c, 0x0e, 0xa3, 0xee, 0xc0, 0xf8, 0x1f, 0xcc, 0x1f, 0xc0, 0x4b, 0xf0, 0xbf, + 0xcf, 0x2f, 0x21, 0xe9, 0x21, 0xc5, 0xe9, 0xb6, 0x1b, 0x28, 0xc2, 0xf4, 0x5a, 0xdb, 0x6e, 0x70, + 0x51, 0x3a, 0xd6, 0x19, 0x34, 0x60, 0x11, 0x0c, 0x9b, 0x38, 0x0d, 0xb5, 0xd9, 0x19, 0x1a, 0x97, + 0x60, 0xe1, 0x30, 0x97, 0x82, 0x5e, 0x8b, 0x77, 0x81, 0x5d, 0x81, 0x60, 0x72, 0xf6, 0xef, 0xf7, + 0x12, 0xc6, 0x2c, 0xd7, 0xc8, 0xbc, 0x5b, 0xc1, 0xc9, 0xe5, 0xa2, 0xb4, 0x81, 0x7c, 0xaf, 0xce, + 0x4a, 0xc1, 0x66, 0x82, 0xf1, 0x42, 0x72, 0xd2, 0x81, 0x4a, 0x74, 0x48, 0xe2, 0xa8, 0x43, 0x65, + 0xf5, 0xef, 0x12, 0xf4, 0x6f, 0x51, 0x57, 0xbd, 0x0d, 0xc3, 0xd9, 0x36, 0x79, 0x7f, 0xa6, 0xe4, + 0xbb, 0x6c, 0xfd, 0x8d, 0x43, 0x00, 0xa2, 0x85, 0xfd, 0x0c, 0x46, 0x0b, 0x2d, 0xb8, 0x21, 0x5d, + 0x9a, 0xc3, 0xe8, 0x97, 0x0e, 0xc7, 0x08, 0x0f, 0xb7, 0x61, 0x38, 0xdb, 0x27, 0x4a, 0xa9, 0x67, + 0x00, 0x72, 0xea, 0x92, 0xe6, 0x4d, 0xbd, 0x0b, 0xe3, 0xfb, 0x1a, 0xb7, 0xff, 0xca, 0x17, 0xe7, + 0x51, 0xfa, 0xe5, 0xa3, 0xa0, 0x84, 0x9f, 0x36, 0x4c, 0xf7, 0x28, 0xa6, 0xd2, 0x30, 0xc8, 0xb1, + 0xfa, 0xea, 0xd1, 0xb1, 0xc2, 0x73, 0x08, 0x93, 0xb2, 0xd2, 0xd8, 0x23, 0x42, 0xfb, 0x80, 0xfa, + 0xf2, 0x11, 0x81, 0xc2, 0xe1, 0xa7, 0x30, 0x92, 0x2f, 0x79, 0x17, 0x65, 0x3b, 0xe4, 0x20, 0xfa, + 0x9b, 0x87, 0x42, 0xc4, 0xf6, 0x2d, 0x38, 0x27, 0xaf, 0x56, 0xd2, 0x3d, 0xa4, 0x50, 0x7d, 0xe5, + 0xc8, 0x50, 0xe1, 0xd6, 0x86, 0xb1, 0x62, 0x7d, 0x99, 0x97, 0xed, 0x52, 0x00, 0xe9, 0x6f, 0x1d, + 0x01, 0x24, 0x9c, 0x7c, 0x01, 0x5a, 0xcf, 0x1a, 0xd1, 0x23, 0xdf, 0xe4, 0x68, 0xfd, 0xca, 0xcb, + 0xa0, 0x85, 0xff, 0x6f, 0x14, 0xb8, 0x70, 0xb0, 0xca, 0x4b, 0x23, 0x77, 0xe0, 0x12, 0xfd, 0xdd, + 0x97, 0x5e, 0x92, 0xcd, 0x5d, 0x99, 0x82, 0x4a, 0x73, 0x57, 0x02, 0x94, 0xe7, 0xee, 0x01, 0x52, + 0xa9, 0xde, 0x81, 0x52, 0xee, 0xbf, 0xea, 0x39, 0xf9, 0x83, 0xeb, 0x22, 0xf4, 0x85, 0xc3, 0x10, + 0x59, 0x95, 0x2c, 0x94, 0x28, 0xa9, 0x4a, 0xe6, 0x31, 0x72, 0x95, 0x94, 0xd7, 0x1c, 0xf5, 0x7b, + 0x05, 0x2a, 0x87, 0x7d, 0x35, 0x5b, 0xeb, 0x7d, 0x1b, 0x3d, 0x17, 0xe9, 0xef, 0x1d, 0x63, 0x51, + 0x87, 0x55, 0xf5, 0xfa, 0x93, 0xe7, 0x65, 0xe5, 0xe9, 0xf3, 0xb2, 0xf2, 0xe7, 0xf3, 0xb2, 0xf2, + 0xed, 0x8b, 0x72, 0xdf, 0xd3, 0x17, 0xe5, 0xbe, 0xdf, 0x5f, 0x94, 0xfb, 0xee, 0xac, 0x66, 0x0a, + 0xee, 0x36, 0x77, 0xb0, 0x78, 0x1d, 0xd5, 0xe9, 0x72, 0xfa, 0x45, 0x71, 0x67, 0xe5, 0xed, 0xe5, + 0x76, 0xe6, 0x2b, 0x25, 0x2b, 0xc0, 0xf5, 0x41, 0xfe, 0x8d, 0x70, 0xed, 0x9f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xc4, 0x68, 0xae, 0x73, 0xc5, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index c08c5e5e1f..4c252c31ab 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -115,34 +115,34 @@ var fileDescriptor_5d2f32e16bd6ab8f = []byte{ // 474 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0x6e, 0xd3, 0x30, 0x18, 0xc7, 0x1b, 0x96, 0x75, 0xa9, 0x01, 0x51, 0x59, 0x65, 0x64, 0x03, 0xa5, 0x15, 0x07, 0xd4, - 0x4b, 0x13, 0x31, 0xe0, 0xc6, 0x85, 0x75, 0x97, 0x55, 0x13, 0x82, 0xac, 0xe2, 0xc0, 0x25, 0x72, - 0x9d, 0x4f, 0x89, 0x95, 0xd6, 0x2e, 0xb6, 0x37, 0xd8, 0x5b, 0x70, 0xe3, 0x45, 0xf6, 0x10, 0x3b, - 0x4e, 0x3b, 0x21, 0x0e, 0x13, 0x6a, 0x5f, 0x04, 0xc5, 0x4e, 0x97, 0x5c, 0xd9, 0x29, 0xf6, 0xe7, - 0xbf, 0x7f, 0xff, 0x7c, 0xff, 0xe4, 0x43, 0x7d, 0xa5, 0x25, 0x4b, 0x21, 0x52, 0x9a, 0x14, 0xc0, - 0x66, 0x34, 0x3a, 0x27, 0x73, 0x96, 0x12, 0x2d, 0x64, 0xb8, 0x94, 0x42, 0x0b, 0xfc, 0xc4, 0x0a, - 0xc2, 0x8d, 0x60, 0x7f, 0x8f, 0x0a, 0xb5, 0x10, 0x2a, 0x31, 0xc7, 0x91, 0xdd, 0x58, 0xed, 0x7e, - 0x2f, 0x13, 0x99, 0xb0, 0xf5, 0x72, 0x65, 0xab, 0x2f, 0x7f, 0x6d, 0xa3, 0xce, 0x97, 0x0d, 0x15, - 0x63, 0xe4, 0x72, 0xb2, 0x00, 0xdf, 0x19, 0x38, 0xc3, 0x4e, 0x6c, 0xd6, 0xf8, 0x00, 0xed, 0x90, - 0x34, 0x95, 0xa0, 0x94, 0xff, 0xa0, 0x2c, 0x1f, 0xfa, 0x37, 0x97, 0xa3, 0x5e, 0x85, 0xfe, 0x60, - 0x4f, 0x4e, 0xb5, 0x64, 0x3c, 0x8b, 0x37, 0x42, 0xbc, 0x8b, 0xda, 0xdf, 0x81, 0x65, 0xb9, 0xf6, - 0xdb, 0x03, 0x67, 0xe8, 0xc6, 0xd5, 0x0e, 0x7f, 0x44, 0x28, 0x85, 0x39, 0x64, 0x44, 0x33, 0xc1, - 0xfd, 0x6d, 0x83, 0x0b, 0xaf, 0x6e, 0xfb, 0xad, 0x3f, 0xb7, 0xfd, 0x57, 0x19, 0xd3, 0xf9, 0xd9, - 0x2c, 0xa4, 0x62, 0x51, 0xbd, 0x78, 0xf5, 0x18, 0xa9, 0xb4, 0x88, 0xf4, 0xc5, 0x12, 0x54, 0x78, - 0xcc, 0x75, 0xdc, 0x20, 0x60, 0x81, 0x5e, 0xa8, 0x39, 0x51, 0x79, 0xf2, 0xed, 0x0c, 0xe4, 0x45, - 0xd9, 0x75, 0x56, 0xfa, 0x27, 0x5a, 0x12, 0x5a, 0x80, 0xf4, 0x3b, 0xf7, 0x72, 0xd8, 0x33, 0xcc, - 0xcf, 0x25, 0xf2, 0x53, 0x45, 0x9c, 0x5a, 0x20, 0x4e, 0xd1, 0x6e, 0xd3, 0x90, 0xe6, 0x40, 0x8b, - 0xa5, 0x60, 0x5c, 0xfb, 0x8f, 0xee, 0x65, 0xd5, 0xab, 0xad, 0xc6, 0x77, 0x2c, 0x2c, 0xd0, 0x53, - 0x95, 0x13, 0x09, 0x2a, 0xd1, 0x22, 0xd1, 0xa2, 0x00, 0xae, 0x12, 0x49, 0x34, 0xf8, 0xc8, 0x98, - 0xbc, 0xff, 0x0f, 0x93, 0x23, 0xa0, 0x37, 0x97, 0x23, 0x54, 0x7d, 0xae, 0x23, 0xa0, 0x31, 0xb6, - 0xe8, 0xa9, 0x98, 0x1a, 0x70, 0x4c, 0x34, 0xe0, 0x31, 0x0a, 0xea, 0x54, 0x13, 0x9a, 0x13, 0x9e, - 0x81, 0x4a, 0x18, 0xbf, 0x4b, 0xd4, 0x7f, 0x38, 0x70, 0x86, 0x5b, 0xf1, 0xf3, 0x5a, 0x35, 0xb6, - 0xa2, 0x63, 0xbe, 0x89, 0x08, 0xbf, 0x43, 0xcf, 0x9a, 0xd9, 0x34, 0x6f, 0x3f, 0x1e, 0x38, 0x43, - 0xaf, 0xd9, 0x6c, 0x7d, 0x6d, 0xe2, 0x7a, 0x5b, 0x5d, 0x77, 0xe2, 0x7a, 0x6e, 0x77, 0x7b, 0xe2, - 0x7a, 0x3b, 0x5d, 0x6f, 0xe2, 0x7a, 0x5e, 0xb7, 0x73, 0x78, 0x72, 0xb5, 0x0a, 0x9c, 0xeb, 0x55, - 0xe0, 0xfc, 0x5d, 0x05, 0xce, 0xcf, 0x75, 0xd0, 0xba, 0x5e, 0x07, 0xad, 0xdf, 0xeb, 0xa0, 0xf5, - 0xf5, 0xa0, 0xd1, 0xf7, 0xa9, 0x19, 0x80, 0xd1, 0x09, 0x99, 0xa9, 0xa8, 0x9a, 0x96, 0xf3, 0xd7, - 0x6f, 0xa3, 0x1f, 0xf5, 0xcc, 0x98, 0x1c, 0x66, 0x6d, 0xf3, 0xbb, 0xbf, 0xf9, 0x17, 0x00, 0x00, - 0xff, 0xff, 0xf6, 0xcd, 0x8e, 0xe1, 0x53, 0x03, 0x00, 0x00, + 0x4b, 0x13, 0x31, 0xb4, 0x1b, 0x17, 0xd6, 0x5d, 0x56, 0x4d, 0x08, 0xb2, 0x8a, 0x03, 0x97, 0xc8, + 0x75, 0x3e, 0x25, 0x56, 0x5a, 0xbb, 0xd8, 0xde, 0x60, 0x6f, 0xc1, 0x8d, 0x17, 0xd9, 0x43, 0xec, + 0x38, 0xed, 0x84, 0x38, 0x4c, 0xa8, 0x7d, 0x11, 0x14, 0x3b, 0x5d, 0x72, 0x65, 0xa7, 0xd8, 0x9f, + 0xff, 0xfe, 0xfd, 0xf3, 0xfd, 0x93, 0x0f, 0xf5, 0x95, 0x96, 0x2c, 0x85, 0x48, 0x69, 0x52, 0x00, + 0x9b, 0xd1, 0xe8, 0x82, 0xcc, 0x59, 0x4a, 0xb4, 0x90, 0xe1, 0x52, 0x0a, 0x2d, 0xf0, 0x33, 0x2b, + 0x08, 0x37, 0x82, 0xfd, 0x3d, 0x2a, 0xd4, 0x42, 0xa8, 0xc4, 0x1c, 0x47, 0x76, 0x63, 0xb5, 0xfb, + 0xbd, 0x4c, 0x64, 0xc2, 0xd6, 0xcb, 0x95, 0xad, 0xbe, 0xfe, 0xb5, 0x8d, 0x3a, 0x5f, 0x36, 0x54, + 0x8c, 0x91, 0xcb, 0xc9, 0x02, 0x7c, 0x67, 0xe0, 0x0c, 0x3b, 0xb1, 0x59, 0xe3, 0x03, 0xb4, 0x43, + 0xd2, 0x54, 0x82, 0x52, 0xfe, 0xa3, 0xb2, 0x7c, 0xe4, 0xdf, 0x5e, 0x8d, 0x7a, 0x15, 0xfa, 0x83, + 0x3d, 0x39, 0xd3, 0x92, 0xf1, 0x2c, 0xde, 0x08, 0xf1, 0x2e, 0x6a, 0x7f, 0x07, 0x96, 0xe5, 0xda, + 0x6f, 0x0f, 0x9c, 0xa1, 0x1b, 0x57, 0x3b, 0xfc, 0x11, 0xa1, 0x14, 0xe6, 0x90, 0x11, 0xcd, 0x04, + 0xf7, 0xb7, 0x0d, 0x2e, 0xbc, 0xbe, 0xeb, 0xb7, 0xfe, 0xdc, 0xf5, 0xdf, 0x64, 0x4c, 0xe7, 0xe7, + 0xb3, 0x90, 0x8a, 0x45, 0xf5, 0xe2, 0xd5, 0x63, 0xa4, 0xd2, 0x22, 0xd2, 0x97, 0x4b, 0x50, 0xe1, + 0x09, 0xd7, 0x71, 0x83, 0x80, 0x05, 0x7a, 0xa5, 0xe6, 0x44, 0xe5, 0xc9, 0xb7, 0x73, 0x90, 0x97, + 0x65, 0xd7, 0x59, 0xe9, 0x9f, 0x68, 0x49, 0x68, 0x01, 0xd2, 0xef, 0x3c, 0xc8, 0x61, 0xcf, 0x30, + 0x3f, 0x97, 0xc8, 0x4f, 0x15, 0x71, 0x6a, 0x81, 0x38, 0x45, 0xbb, 0x4d, 0x43, 0x9a, 0x03, 0x2d, + 0x96, 0x82, 0x71, 0xed, 0x3f, 0x79, 0x90, 0x55, 0xaf, 0xb6, 0x1a, 0xdf, 0xb3, 0xb0, 0x40, 0xcf, + 0x55, 0x4e, 0x24, 0xa8, 0x44, 0x8b, 0x44, 0x8b, 0x02, 0xb8, 0x4a, 0x24, 0xd1, 0xe0, 0x23, 0x63, + 0xf2, 0xfe, 0x3f, 0x4c, 0x8e, 0x81, 0xde, 0x5e, 0x8d, 0x50, 0xf5, 0xb9, 0x8e, 0x81, 0xc6, 0xd8, + 0xa2, 0xa7, 0x62, 0x6a, 0xc0, 0x31, 0xd1, 0x80, 0xc7, 0x28, 0xa8, 0x53, 0x4d, 0x68, 0x4e, 0x78, + 0x06, 0x2a, 0x61, 0xfc, 0x3e, 0x51, 0xff, 0xf1, 0xc0, 0x19, 0x6e, 0xc5, 0x2f, 0x6b, 0xd5, 0xd8, + 0x8a, 0x4e, 0xf8, 0x26, 0x22, 0x7c, 0x88, 0x5e, 0x34, 0xb3, 0x69, 0xde, 0x7e, 0x3a, 0x70, 0x86, + 0x5e, 0xb3, 0xd9, 0xfa, 0xda, 0xc4, 0xf5, 0xb6, 0xba, 0xee, 0xc4, 0xf5, 0xdc, 0xee, 0xf6, 0xc4, + 0xf5, 0x76, 0xba, 0xde, 0xc4, 0xf5, 0xbc, 0x6e, 0xe7, 0xe8, 0xf4, 0x7a, 0x15, 0x38, 0x37, 0xab, + 0xc0, 0xf9, 0xbb, 0x0a, 0x9c, 0x9f, 0xeb, 0xa0, 0x75, 0xb3, 0x0e, 0x5a, 0xbf, 0xd7, 0x41, 0xeb, + 0xeb, 0x41, 0xa3, 0xef, 0x33, 0x33, 0x00, 0xa3, 0x53, 0x32, 0x53, 0x51, 0x35, 0x2d, 0x17, 0x6f, + 0x0f, 0xa3, 0x1f, 0xf5, 0xcc, 0x98, 0x1c, 0x66, 0x6d, 0xf3, 0xbb, 0xbf, 0xfb, 0x17, 0x00, 0x00, + 0xff, 0xff, 0x61, 0x6b, 0x93, 0x06, 0x53, 0x03, 0x00, 0x00, } func (m *Validator) Marshal() (dAtA []byte, err error) { From 80c5db387d2a6c72dfa41922a5cb95f39d7cbb43 Mon Sep 17 00:00:00 2001 From: dev-stride <114107648+dev-stride@users.noreply.github.com> Date: Mon, 18 Sep 2023 03:12:20 -0500 Subject: [PATCH 39/44] v15 Changelog (#945) Co-authored-by: stride-dev --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bbd7255de..64a3533c92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [v15.0.0](https://github.com/Stride-Labs/stride/releases/tag/v15.0.0) - 2023-09-18 + +### On-Chain changes +1. Added ICAOracle route implementations for legacy Msg type ([#923](https://github.com/Stride-Labs/stride/pull/923)) +2. increased precision error buffer on delegator shares callback ([#933](https://github.com/Stride-Labs/stride/pull/933)) +3. Use detokenization amount from tx response ([#934](https://github.com/Stride-Labs/stride/pull/934)) +4. add inner bounds ([#938](https://github.com/Stride-Labs/stride/pull/938)) +5. added cap on undelegate messages ([#940](https://github.com/Stride-Labs/stride/pull/940)) +6. add rounding calibration function ([#936](https://github.com/Stride-Labs/stride/pull/936)) +7. Undel host function ([#935](https://github.com/Stride-Labs/stride/pull/935)) +8. v15 upgrade handler ([#941](https://github.com/Stride-Labs/stride/pull/941)) +9. v15 Import Paths ([#944](https://github.com/Stride-Labs/stride/pull/944)) + +### Off-Chain changes +1. Fixed bug in import path CI ([#919](https://github.com/Stride-Labs/stride/pull/919)) +2. Finished auto changelog script ([#928](https://github.com/Stride-Labs/stride/pull/928)) +3. updated osmo submodule ([#931](https://github.com/Stride-Labs/stride/pull/931)) + + ## [v14.0.0](https://github.com/Stride-Labs/stride/releases/tag/v14.0.0) - 2023-08-27 ### On-Chain changes From 876810c912fb44033b7d78638b44f06039c3b39b Mon Sep 17 00:00:00 2001 From: shellvish <104537253+shellvish@users.noreply.github.com> Date: Sat, 14 Oct 2023 18:41:55 -0400 Subject: [PATCH 40/44] Inflation Fix (#951) Co-authored-by: sampocs --- app/upgrades.go | 12 + app/upgrades/README.md | 26 +- app/upgrades/v16/upgrades.go | 46 ++ app/upgrades/v16/upgrades_test.go | 85 +++ proto/stride/stakeibc/tx.proto | 7 + x/stakeibc/client/cli/tx.go | 1 + x/stakeibc/client/cli/tx_resume_host_zone.go | 39 ++ x/stakeibc/handler.go | 3 + .../keeper/msg_server_lsm_liquid_stake.go | 4 + .../keeper/msg_server_resume_host_zone.go | 40 ++ .../msg_server_resume_host_zone_test.go | 99 +++ ...ver_update_inner_redemption_rate_bounds.go | 1 + x/stakeibc/types/codec.go | 2 + x/stakeibc/types/errors.go | 1 + x/stakeibc/types/events.go | 2 +- x/stakeibc/types/lsm_msgs.go | 5 +- x/stakeibc/types/message_resume_host_zone.go | 52 ++ x/stakeibc/types/tx.pb.go | 564 +++++++++++++++--- 18 files changed, 885 insertions(+), 104 deletions(-) create mode 100644 app/upgrades/v16/upgrades.go create mode 100644 app/upgrades/v16/upgrades_test.go create mode 100644 x/stakeibc/client/cli/tx_resume_host_zone.go create mode 100644 x/stakeibc/keeper/msg_server_resume_host_zone.go create mode 100644 x/stakeibc/keeper/msg_server_resume_host_zone_test.go create mode 100644 x/stakeibc/types/message_resume_host_zone.go diff --git a/app/upgrades.go b/app/upgrades.go index bbc9b3757c..591b9c44ec 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -19,6 +19,7 @@ import ( v13 "github.com/Stride-Labs/stride/v15/app/upgrades/v13" v14 "github.com/Stride-Labs/stride/v15/app/upgrades/v14" v15 "github.com/Stride-Labs/stride/v15/app/upgrades/v15" + v16 "github.com/Stride-Labs/stride/v15/app/upgrades/v16" v2 "github.com/Stride-Labs/stride/v15/app/upgrades/v2" v3 "github.com/Stride-Labs/stride/v15/app/upgrades/v3" v4 "github.com/Stride-Labs/stride/v15/app/upgrades/v4" @@ -204,6 +205,17 @@ func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { ), ) + // v16 upgrade handler + app.UpgradeKeeper.SetUpgradeHandler( + v16.UpgradeName, + v16.CreateUpgradeHandler( + app.mm, + app.configurator, + app.StakeibcKeeper, + app.RatelimitKeeper, + ), + ) + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() if err != nil { panic(fmt.Errorf("Failed to read upgrade info from disk: %w", err)) diff --git a/app/upgrades/README.md b/app/upgrades/README.md index ec0d5a36ed..5137957838 100644 --- a/app/upgrades/README.md +++ b/app/upgrades/README.md @@ -63,20 +63,20 @@ func (app *StrideApp) setupUpgradeHandlers() { } ``` -# Migrations (Only required if the state changed) -## Store Old Proto Types +## Migrations (Only required if the state changed) +### Store Old Proto Types ```go // x/{moduleName}/migrations/{oldVersion}/types/{data_type}.pb.go ``` -## Increment the Module's Consensus Version +### Increment the Module's Consensus Version * The consensus version is different from the chain version - it is specific to each module and is incremented every time state is migrated ```go // x/{moduleName}/module.go func (AppModule) ConsensusVersion() uint64 { return 2 } ``` -## Define Migration Logic +### Define Migration Logic ```go // x/{moduleName}/migrations/{new-consensus-version}/migrations.go package {upgradeVersion} @@ -93,7 +93,7 @@ func MigrateStore(ctx sdk.Context) error { } ``` -## Specify the Migration in the Upgrade Handler +### Specify the Migration in the Upgrade Handler ```go // app/upgrades/{upgradeVersion}/upgrades.go @@ -118,10 +118,22 @@ func CreateUpgradeHandler( } ``` -## Add Additional Parameters to `CreateUpgradeHandler` Invocation +### Add Additional Parameters to `CreateUpgradeHandler` Invocation ```go // app/upgrades.go ... {upgradeVersion}.CreateUpgradeHandler(app.mm, app.configurator, app.appCodec, app.{module}Keeper), ... -``` \ No newline at end of file +``` + +## Import Paths +* Go to GitHub Actions and manually trigger the "Version" job +* This will replace the import path of each file and open a new PR with the changes +* To make the review easier, you can pipe the diffs into a file and open them in an editor which will let you quickly scroll through them (rather than having to wait for each file to render on github) +``` +git diff origin/main..origin/actions/update-stride-version-{upgradeVersion} > diffs.txt +``` + +## Changelog +* Go to GitHub Actions and manually trigger the "Changelog" job +* This will open a PR with the changes \ No newline at end of file diff --git a/app/upgrades/v16/upgrades.go b/app/upgrades/v16/upgrades.go new file mode 100644 index 0000000000..e8df3d8372 --- /dev/null +++ b/app/upgrades/v16/upgrades.go @@ -0,0 +1,46 @@ +package v16 + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + + ratelimitkeeper "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" +) + +var ( + UpgradeName = "v16" + + CosmosHubChainId = "cosmoshub-4" + CosmosHubStToken = "stuatom" +) + +// CreateUpgradeHandler creates an SDK upgrade handler for v15 +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + stakeibcKeeper stakeibckeeper.Keeper, + ratelimitKeeper ratelimitkeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + ctx.Logger().Info("Starting upgrade v16...") + + // unhalt Cosmos Hub host zone + ctx.Logger().Info("Unhalting Cosmos Hub...") + hostZone, found := stakeibcKeeper.GetHostZone(ctx, CosmosHubChainId) + if !found { + return vm, stakeibctypes.ErrHostZoneNotFound.Wrap(CosmosHubChainId) + } + + hostZone.Halted = false + stakeibcKeeper.SetHostZone(ctx, hostZone) + + // remove stuatom from rate limits + ctx.Logger().Info("Removing stuatom as a blacklisted asset...") + ratelimitKeeper.RemoveDenomFromBlacklist(ctx, CosmosHubStToken) + + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/app/upgrades/v16/upgrades_test.go b/app/upgrades/v16/upgrades_test.go new file mode 100644 index 0000000000..2859612f39 --- /dev/null +++ b/app/upgrades/v16/upgrades_test.go @@ -0,0 +1,85 @@ +package v16_test + +import ( + "fmt" + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/stretchr/testify/suite" + + "github.com/Stride-Labs/stride/v15/app/apptesting" + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" +) + +type UpgradeTestSuite struct { + apptesting.AppTestHelper +} + +func (s *UpgradeTestSuite) SetupTest() { + s.Setup() +} + +var ( + CosmosHubChainIdTest = "cosmoshub-4" +) + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} + +func (s *UpgradeTestSuite) TestUpgrade() { + dummyUpgradeHeight := int64(5) + + // Setup the store before the ugprade + checkCosmosHubAfterUpgrade := s.SetupHostZonesBeforeUpgrade() + + // Run the upgrade to set the bounds and clear pending queries + s.ConfirmUpgradeSucceededs("v16", dummyUpgradeHeight) + + // Check the store after the upgrade + checkCosmosHubAfterUpgrade() +} + +func (s *UpgradeTestSuite) SetupHostZonesBeforeUpgrade() func() { + + // Create 10 dummy host zones + for i := 0; i < 10; i++ { + chainId := fmt.Sprintf("chain-%d", i) + + hostZone := stakeibctypes.HostZone{ + ChainId: chainId, + Halted: false, + RedemptionRate: sdk.MustNewDecFromStr("1.0"), + MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.95"), + MinRedemptionRate: sdk.MustNewDecFromStr("0.97"), + MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.05"), + MaxRedemptionRate: sdk.MustNewDecFromStr("1.10"), + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + } + // create Cosmos Hub Host Zone + hostZone := stakeibctypes.HostZone{ + ChainId: CosmosHubChainIdTest, + Halted: true, + RedemptionRate: sdk.MustNewDecFromStr("1.0"), + MinInnerRedemptionRate: sdk.MustNewDecFromStr("0.95"), + MinRedemptionRate: sdk.MustNewDecFromStr("0.97"), + MaxInnerRedemptionRate: sdk.MustNewDecFromStr("1.05"), + MaxRedemptionRate: sdk.MustNewDecFromStr("1.10"), + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + return func() { + + hostZones := s.App.StakeibcKeeper.GetAllHostZone(s.Ctx) + + for _, hostZone := range hostZones { + s.Require().False(hostZone.Halted, fmt.Sprintf("host zone %s should not be halted: %v", hostZone.ChainId, hostZone)) + } + // Confirm Cosmos Hub host zone is not unhalted + cosmosHubHostZone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, CosmosHubChainIdTest) + s.Require().True(found, "Cosmos Hub host zone not found!") + s.Require().False(cosmosHubHostZone.Halted, "Cosmos Hub host zone should not be halted") + } +} diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index f62c63825c..df7c0b8ca1 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -33,6 +33,7 @@ service Msg { rpc UndelegateHost(MsgUndelegateHost) returns (MsgUndelegateHostResponse); rpc UpdateInnerRedemptionRateBounds(MsgUpdateInnerRedemptionRateBounds) returns (MsgUpdateInnerRedemptionRateBoundsResponse); + rpc ResumeHostZone(MsgResumeHostZone) returns (MsgResumeHostZoneResponse); } message MsgUpdateInnerRedemptionRateBounds { @@ -188,3 +189,9 @@ message MsgCalibrateDelegation { string valoper = 3; } message MsgCalibrateDelegationResponse {} + +message MsgResumeHostZone { + string creator = 1; + string chain_id = 2; +} +message MsgResumeHostZoneResponse {} \ No newline at end of file diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index c58b818b89..ff5edaf35d 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -39,6 +39,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand(CmdClearBalance()) cmd.AddCommand(CmdUndelegateHost()) cmd.AddCommand(CmdUpdateInnerRedemptionRateBounds()) + cmd.AddCommand(CmdResumeHostZone()) return cmd } diff --git a/x/stakeibc/client/cli/tx_resume_host_zone.go b/x/stakeibc/client/cli/tx_resume_host_zone.go new file mode 100644 index 0000000000..30f60501de --- /dev/null +++ b/x/stakeibc/client/cli/tx_resume_host_zone.go @@ -0,0 +1,39 @@ +package cli + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" + + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" +) + +func CmdResumeHostZone() *cobra.Command { + cmd := &cobra.Command{ + Use: "resume-host-zone [chainid]", + Short: "Broadcast message resume-host-zone", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + argChainId := args[0] + + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgResumeHostZone( + clientCtx.GetFromAddress().String(), + argChainId, + ) + if err := msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index ba216c46bd..c06f1a4dea 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -67,6 +67,9 @@ func NewMessageHandler(k keeper.Keeper) sdk.Handler { case *types.MsgUpdateInnerRedemptionRateBounds: res, err := msgServer.UpdateInnerRedemptionRateBounds(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgResumeHostZone: + res, err := msgServer.ResumeHostZone(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) default: errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) return nil, errorsmod.Wrap(sdkerrors.ErrUnknownRequest, errMsg) diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go index a458c7eb7d..cad193efa6 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go @@ -67,6 +67,10 @@ func (k Keeper) StartLSMLiquidStake(ctx sdk.Context, msg types.MsgLSMLiquidStake } hostZone := lsmLiquidStake.HostZone + if hostZone.Halted { + return types.LSMLiquidStake{}, errorsmod.Wrapf(types.ErrHaltedHostZone, "host zone %s is halted", hostZone.ChainId) + } + // Check if we already have tokens with this denom in records _, found := k.RecordsKeeper.GetLSMTokenDeposit(ctx, hostZone.ChainId, lsmLiquidStake.Deposit.Denom) if found { diff --git a/x/stakeibc/keeper/msg_server_resume_host_zone.go b/x/stakeibc/keeper/msg_server_resume_host_zone.go new file mode 100644 index 0000000000..96857bf111 --- /dev/null +++ b/x/stakeibc/keeper/msg_server_resume_host_zone.go @@ -0,0 +1,40 @@ +package keeper + +import ( + "context" + "fmt" + + "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k msgServer) ResumeHostZone(goCtx context.Context, msg *types.MsgResumeHostZone) (*types.MsgResumeHostZoneResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + // Get Host Zone + hostZone, found := k.GetHostZone(ctx, msg.ChainId) + if !found { + errMsg := fmt.Sprintf("invalid chain id, zone for %s not found", msg.ChainId) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrHostZoneNotFound, errMsg) + } + + // Check the zone is halted + if !hostZone.Halted { + errMsg := fmt.Sprintf("invalid chain id, zone for %s not halted", msg.ChainId) + k.Logger(ctx).Error(errMsg) + return nil, errorsmod.Wrapf(types.ErrHostZoneNotHalted, errMsg) + } + + // remove from blacklist + stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) + k.RatelimitKeeper.RemoveDenomFromBlacklist(ctx, stDenom) + + // Resume zone + hostZone.Halted = false + k.SetHostZone(ctx, hostZone) + + return &types.MsgResumeHostZoneResponse{}, nil +} diff --git a/x/stakeibc/keeper/msg_server_resume_host_zone_test.go b/x/stakeibc/keeper/msg_server_resume_host_zone_test.go new file mode 100644 index 0000000000..1ccfea0b89 --- /dev/null +++ b/x/stakeibc/keeper/msg_server_resume_host_zone_test.go @@ -0,0 +1,99 @@ +package keeper_test + +import ( + "fmt" + + sdk "github.com/cosmos/cosmos-sdk/types" + _ "github.com/stretchr/testify/suite" + + stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" +) + +type ResumeHostZoneTestCase struct { + validMsg stakeibctypes.MsgResumeHostZone + zone stakeibctypes.HostZone +} + +func (s *KeeperTestSuite) SetupResumeHostZone() ResumeHostZoneTestCase { + // Register a host zone + hostZone := stakeibctypes.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + IbcDenom: IbcAtom, + RedemptionRate: sdk.NewDec(1.0), + MinRedemptionRate: sdk.NewDec(9).Quo(sdk.NewDec(10)), + MaxRedemptionRate: sdk.NewDec(15).Quo(sdk.NewDec(10)), + Halted: true, + } + + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + defaultMsg := stakeibctypes.MsgResumeHostZone{ + Creator: s.TestAccs[0].String(), + ChainId: HostChainId, + } + + return ResumeHostZoneTestCase{ + validMsg: defaultMsg, + zone: hostZone, + } +} + +// Verify that bounds can be set successfully +func (s *KeeperTestSuite) TestResumeHostZone_Success() { + tc := s.SetupResumeHostZone() + + // Set the inner bounds on the host zone + _, err := s.GetMsgServer().ResumeHostZone(s.Ctx, &tc.validMsg) + s.Require().NoError(err, "should not throw an error") + + // Confirm the inner bounds were set + zone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should be in the store") + + s.Require().False(zone.Halted, "host zone should not be halted") +} + +// verify that non-admins can't call the tx +func (s *KeeperTestSuite) TestResumeHostZone_NonAdmin() { + tc := s.SetupResumeHostZone() + + invalidMsg := tc.validMsg + invalidMsg.Creator = s.TestAccs[1].String() + + err := invalidMsg.ValidateBasic() + s.Require().Error(err, "nonadmins shouldn't be able to call this tx") +} + +// verify that the function can't be called on missing zones +func (s *KeeperTestSuite) TestResumeHostZone_MissingZones() { + tc := s.SetupResumeHostZone() + + invalidMsg := tc.validMsg + invalidChainId := "invalid-chain" + invalidMsg.ChainId = invalidChainId + + // Set the inner bounds on the host zone + _, err := s.GetMsgServer().ResumeHostZone(s.Ctx, &invalidMsg) + + s.Require().Error(err, "shouldn't be able to call tx on missing zones") + expectedErrorMsg := fmt.Sprintf("invalid chain id, zone for %s not found: host zone not found", invalidChainId) + s.Require().Equal(expectedErrorMsg, err.Error(), "should return correct error msg") +} + +// verify that the function can't be called on unhalted zones +func (s *KeeperTestSuite) TestResumeHostZone_UnhaltedZones() { + tc := s.SetupResumeHostZone() + + zone, found := s.App.StakeibcKeeper.GetHostZone(s.Ctx, HostChainId) + s.Require().True(found, "host zone should be in the store") + s.Require().True(zone.Halted, "host zone should be halted") + zone.Halted = false + s.App.StakeibcKeeper.SetHostZone(s.Ctx, zone) + + // Set the inner bounds on the host zone + _, err := s.GetMsgServer().ResumeHostZone(s.Ctx, &tc.validMsg) + s.Require().Error(err, "shouldn't be able to call tx on unhalted zones") + expectedErrorMsg := fmt.Sprintf("invalid chain id, zone for %s not halted: host zone is not halted", HostChainId) + s.Require().Equal(expectedErrorMsg, err.Error(), "should return correct error msg") +} diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go index 4e0bbff4a5..bfd8a55719 100644 --- a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go @@ -42,6 +42,7 @@ func (k msgServer) UpdateInnerRedemptionRateBounds(goCtx context.Context, msg *t // Set the inner bounds on the host zone zone.MinInnerRedemptionRate = innerMinSafetyThreshold zone.MaxInnerRedemptionRate = innerMaxSafetyThreshold + k.SetHostZone(ctx, zone) return &types.MsgUpdateInnerRedemptionRateBoundsResponse{}, nil diff --git a/x/stakeibc/types/codec.go b/x/stakeibc/types/codec.go index 71a00545b6..a57537ab16 100644 --- a/x/stakeibc/types/codec.go +++ b/x/stakeibc/types/codec.go @@ -26,6 +26,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUndelegateHost{}, "stakeibc/UndelegateHost", nil) cdc.RegisterConcrete(&MsgCalibrateDelegation{}, "stakeibc/CalibrateDelegation", nil) cdc.RegisterConcrete(&MsgUpdateInnerRedemptionRateBounds{}, "stakeibc/UpdateInnerRedemptionRateBounds", nil) + cdc.RegisterConcrete(&MsgResumeHostZone{}, "stakeibc/ResumeHostZone", nil) // this line is used by starport scaffolding # 2 } @@ -45,6 +46,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgUndelegateHost{}, &MsgCalibrateDelegation{}, &MsgUpdateInnerRedemptionRateBounds{}, + &MsgResumeHostZone{}, ) registry.RegisterImplementations((*govtypes.Content)(nil), diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index 1ab443f0a4..513d44b009 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -58,4 +58,5 @@ var ( ErrUnableToRemoveValidator = errorsmod.Register(ModuleName, 1550, "Unable to remove validator") ErrUndelegateHostNotCallable = errorsmod.Register(ModuleName, 1551, "Undelegate host is disabled") ErrInvalidBounds = errorsmod.Register(ModuleName, 1552, "Invalid safety bounds - inner bounds must be within outer bounds") + ErrHostZoneNotHalted = errorsmod.Register(ModuleName, 1553, "host zone is not halted") ) diff --git a/x/stakeibc/types/events.go b/x/stakeibc/types/events.go index dd5bccb4af..c62f9c3aef 100644 --- a/x/stakeibc/types/events.go +++ b/x/stakeibc/types/events.go @@ -34,7 +34,7 @@ const ( AttributeKeyNativeBaseDenom = "native_base_denom" AttributeKeyNativeIBCDenom = "native_ibc_denom" AttributeKeyTotalUnbondAmount = "total_unbond_amount" - AttributeKeyLSMTokenBaseDenom = "lsm_token_base_denom" + AttributeKeyLSMTokenBaseDenom = "lsm_token_base_denom" // #nosec G101 AttributeKeyNativeAmount = "native_amount" AttributeKeyStTokenAmount = "sttoken_amount" AttributeKeyValidator = "validator" diff --git a/x/stakeibc/types/lsm_msgs.go b/x/stakeibc/types/lsm_msgs.go index 7fd586e6c4..92757e918a 100644 --- a/x/stakeibc/types/lsm_msgs.go +++ b/x/stakeibc/types/lsm_msgs.go @@ -1,3 +1,4 @@ +// #nosec G101 package types import ( @@ -7,10 +8,8 @@ import ( ) // staking message types -// -// #nosec G101 const ( - TypeMsgRedeemTokensForShares = "redeem_tokens_for_shares" + TypeMsgRedeemTokensForShares = "redeem_tokens_for_shares" // #nosec G101 ) var ( diff --git a/x/stakeibc/types/message_resume_host_zone.go b/x/stakeibc/types/message_resume_host_zone.go new file mode 100644 index 0000000000..188a103144 --- /dev/null +++ b/x/stakeibc/types/message_resume_host_zone.go @@ -0,0 +1,52 @@ +package types + +import ( + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + "github.com/Stride-Labs/stride/v15/utils" +) + +const TypeMsgResumeHostZone = "resume_host_zone" + +var _ sdk.Msg = &MsgResumeHostZone{} + +func NewMsgResumeHostZone(creator string, chainId string) *MsgResumeHostZone { + return &MsgResumeHostZone{ + Creator: creator, + ChainId: chainId, + } +} + +func (msg *MsgResumeHostZone) Route() string { + return RouterKey +} + +func (msg *MsgResumeHostZone) Type() string { + return TypeMsgResumeHostZone +} + +func (msg *MsgResumeHostZone) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgResumeHostZone) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgResumeHostZone) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + if err := utils.ValidateAdminAddress(msg.Creator); err != nil { + return err + } + return nil +} diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index e58d0709fa..ac5c3e6e6f 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1455,6 +1455,94 @@ func (m *MsgCalibrateDelegationResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCalibrateDelegationResponse proto.InternalMessageInfo +type MsgResumeHostZone struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + ChainId string `protobuf:"bytes,2,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` +} + +func (m *MsgResumeHostZone) Reset() { *m = MsgResumeHostZone{} } +func (m *MsgResumeHostZone) String() string { return proto.CompactTextString(m) } +func (*MsgResumeHostZone) ProtoMessage() {} +func (*MsgResumeHostZone) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{30} +} +func (m *MsgResumeHostZone) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgResumeHostZone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgResumeHostZone.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgResumeHostZone) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgResumeHostZone.Merge(m, src) +} +func (m *MsgResumeHostZone) XXX_Size() int { + return m.Size() +} +func (m *MsgResumeHostZone) XXX_DiscardUnknown() { + xxx_messageInfo_MsgResumeHostZone.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgResumeHostZone proto.InternalMessageInfo + +func (m *MsgResumeHostZone) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgResumeHostZone) GetChainId() string { + if m != nil { + return m.ChainId + } + return "" +} + +type MsgResumeHostZoneResponse struct { +} + +func (m *MsgResumeHostZoneResponse) Reset() { *m = MsgResumeHostZoneResponse{} } +func (m *MsgResumeHostZoneResponse) String() string { return proto.CompactTextString(m) } +func (*MsgResumeHostZoneResponse) ProtoMessage() {} +func (*MsgResumeHostZoneResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9b7e09c9ad51cd54, []int{31} +} +func (m *MsgResumeHostZoneResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgResumeHostZoneResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgResumeHostZoneResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgResumeHostZoneResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgResumeHostZoneResponse.Merge(m, src) +} +func (m *MsgResumeHostZoneResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgResumeHostZoneResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgResumeHostZoneResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgResumeHostZoneResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgUpdateInnerRedemptionRateBounds)(nil), "stride.stakeibc.MsgUpdateInnerRedemptionRateBounds") proto.RegisterType((*MsgUpdateInnerRedemptionRateBoundsResponse)(nil), "stride.stakeibc.MsgUpdateInnerRedemptionRateBoundsResponse") @@ -1486,105 +1574,109 @@ func init() { proto.RegisterType((*MsgUndelegateHostResponse)(nil), "stride.stakeibc.MsgUndelegateHostResponse") proto.RegisterType((*MsgCalibrateDelegation)(nil), "stride.stakeibc.MsgCalibrateDelegation") proto.RegisterType((*MsgCalibrateDelegationResponse)(nil), "stride.stakeibc.MsgCalibrateDelegationResponse") + proto.RegisterType((*MsgResumeHostZone)(nil), "stride.stakeibc.MsgResumeHostZone") + proto.RegisterType((*MsgResumeHostZoneResponse)(nil), "stride.stakeibc.MsgResumeHostZoneResponse") } func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1482 bytes of a gzipped FileDescriptorProto + // 1512 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdc, 0xc4, - 0x17, 0x8f, 0x9b, 0x34, 0x4d, 0x5f, 0x36, 0xbf, 0x9c, 0x34, 0x75, 0x9c, 0x6f, 0x77, 0x53, 0xe7, - 0xfb, 0xfd, 0x12, 0x4a, 0x93, 0x28, 0x49, 0x11, 0xa2, 0xc0, 0x21, 0x9b, 0x14, 0xb1, 0x52, 0x53, - 0x21, 0xa7, 0xa5, 0x52, 0x25, 0x64, 0x66, 0xed, 0xa9, 0xd7, 0xaa, 0x3d, 0xde, 0x7a, 0xbc, 0xe9, - 0x96, 0x03, 0xe2, 0x82, 0xc4, 0x05, 0x09, 0x84, 0xc4, 0x11, 0xf5, 0xc0, 0x01, 0x89, 0x1b, 0xea, - 0x1f, 0x51, 0x89, 0x4b, 0xd5, 0x13, 0xe2, 0x10, 0xa1, 0xf6, 0xc2, 0x39, 0x67, 0x0e, 0x68, 0xc6, - 0xde, 0x59, 0xdb, 0x99, 0x4d, 0xd2, 0x34, 0xf4, 0x94, 0x9d, 0x79, 0x9f, 0x99, 0xf7, 0x99, 0x37, - 0x6f, 0x3e, 0xef, 0xc5, 0xa0, 0xd1, 0x38, 0xf2, 0x1c, 0xbc, 0x4c, 0x63, 0x74, 0x0f, 0x7b, 0x75, - 0x7b, 0x39, 0x6e, 0x2f, 0x35, 0xa3, 0x30, 0x0e, 0xd5, 0xb1, 0xc4, 0xb2, 0xd4, 0xb1, 0xe8, 0x17, - 0x8b, 0x50, 0xcf, 0x46, 0x16, 0xb2, 0xed, 0xb0, 0x45, 0xe2, 0x64, 0x8d, 0x5e, 0x29, 0x42, 0x76, - 0x90, 0xef, 0x39, 0x28, 0x0e, 0xa3, 0x14, 0x30, 0xe5, 0x86, 0x6e, 0xc8, 0x7f, 0x2e, 0xb3, 0x5f, - 0xe9, 0xec, 0x8c, 0x1d, 0xd2, 0x20, 0xa4, 0x56, 0x62, 0x48, 0x06, 0x89, 0xc9, 0xf8, 0xed, 0x14, - 0x18, 0x5b, 0xd4, 0xbd, 0xd5, 0x74, 0x50, 0x8c, 0x6b, 0x84, 0xe0, 0xc8, 0xc4, 0x0e, 0x0e, 0x9a, - 0xb1, 0x17, 0x12, 0x13, 0xc5, 0xb8, 0x1a, 0xb6, 0x88, 0x43, 0x55, 0x0d, 0xce, 0xd8, 0x11, 0x66, - 0x8e, 0x34, 0x65, 0x4e, 0x59, 0x38, 0x6b, 0x76, 0x86, 0xea, 0x0c, 0x0c, 0xd9, 0x0d, 0xe4, 0x11, - 0xcb, 0x73, 0xb4, 0x53, 0xa9, 0x89, 0x8d, 0x6b, 0x8e, 0xfa, 0x00, 0x66, 0x02, 0x66, 0x60, 0xbb, - 0x5a, 0x91, 0xd8, 0xd6, 0x8a, 0x50, 0x8c, 0xb5, 0x7e, 0x86, 0xad, 0xbe, 0xff, 0x64, 0xb7, 0xd2, - 0xf7, 0xc7, 0x6e, 0xe5, 0xff, 0xae, 0x17, 0x37, 0x5a, 0xf5, 0x25, 0x3b, 0x0c, 0x52, 0x7e, 0xe9, - 0x9f, 0x45, 0xea, 0xdc, 0x5b, 0x8e, 0x1f, 0x36, 0x31, 0x5d, 0xda, 0xc4, 0xf6, 0xb3, 0xc7, 0x8b, - 0x90, 0xd2, 0xdf, 0xc4, 0xb6, 0x39, 0x1d, 0x78, 0x44, 0xc2, 0x99, 0x3b, 0x46, 0xed, 0x1e, 0x8e, - 0x07, 0x4e, 0xc4, 0x31, 0x6a, 0x4b, 0x1c, 0x1b, 0x97, 0xe1, 0xd2, 0xe1, 0xc1, 0x34, 0x31, 0x6d, - 0x86, 0x84, 0x62, 0xe3, 0x3b, 0x05, 0x46, 0xb7, 0xa8, 0x7b, 0xdd, 0xbb, 0xdf, 0xf2, 0x9c, 0x6d, - 0x76, 0xa5, 0x07, 0xc4, 0xf9, 0x43, 0x18, 0x44, 0x01, 0x4b, 0x85, 0x24, 0xca, 0xd5, 0xa5, 0x97, - 0x38, 0x40, 0x8d, 0xc4, 0x66, 0xba, 0x5a, 0xbd, 0x00, 0xd0, 0x08, 0x69, 0x6c, 0x39, 0x98, 0x84, - 0x41, 0x72, 0x0b, 0xe6, 0x59, 0x36, 0xb3, 0xc9, 0x26, 0x0c, 0x0d, 0xa6, 0xf3, 0x94, 0x04, 0xdb, - 0x9f, 0x14, 0x98, 0x60, 0xa6, 0xed, 0xad, 0xd7, 0x4b, 0x78, 0x11, 0x26, 0x7d, 0x1a, 0x58, 0x71, - 0x78, 0x0f, 0x13, 0xcb, 0xab, 0xdb, 0x39, 0xe6, 0xe3, 0x3e, 0x0d, 0x6e, 0x32, 0x4b, 0xad, 0x6e, - 0x27, 0x07, 0xb8, 0x01, 0x33, 0xfb, 0x58, 0x76, 0xce, 0xa0, 0xae, 0xc0, 0x54, 0x1c, 0x21, 0x42, - 0x91, 0xcd, 0xf3, 0xc1, 0x0e, 0x83, 0xa6, 0x8f, 0x63, 0xcc, 0xa9, 0x0f, 0x99, 0x93, 0x19, 0xdb, - 0x46, 0x6a, 0x32, 0x7e, 0x56, 0x60, 0x6c, 0x8b, 0xba, 0x1b, 0x3e, 0x46, 0x51, 0x15, 0xf9, 0x88, - 0xd8, 0xf8, 0x78, 0xaf, 0xa1, 0x1b, 0x8f, 0xfe, 0x57, 0x8a, 0x07, 0x73, 0xde, 0x40, 0x84, 0x60, - 0x3f, 0x49, 0x65, 0xb3, 0x33, 0x34, 0x66, 0xe0, 0x7c, 0x81, 0xa9, 0xb8, 0xbc, 0x5f, 0x92, 0x54, - 0x63, 0xe9, 0x88, 0x83, 0xd7, 0x75, 0x73, 0xb3, 0xc0, 0x13, 0xcb, 0xfa, 0x3c, 0x24, 0xe9, 0x7b, - 0x37, 0x87, 0xd8, 0xc4, 0x9d, 0x90, 0x60, 0x55, 0x87, 0xa1, 0x08, 0xdb, 0xd8, 0xdb, 0xc1, 0x51, - 0x7a, 0x0e, 0x31, 0x4e, 0x93, 0x30, 0x43, 0x56, 0x9c, 0xe3, 0xd7, 0xd3, 0x30, 0xc9, 0x4d, 0xae, - 0x47, 0x63, 0x1c, 0x7d, 0xd4, 0xd9, 0xed, 0x03, 0x18, 0xb1, 0x43, 0x42, 0x70, 0x72, 0xaf, 0x9d, - 0xe0, 0x57, 0xb5, 0xbd, 0xdd, 0xca, 0xd4, 0x43, 0x14, 0xf8, 0x57, 0x8d, 0x9c, 0xd9, 0x30, 0x4b, - 0xdd, 0x71, 0xcd, 0x51, 0x0d, 0x28, 0xd5, 0xb1, 0xdd, 0x58, 0x5b, 0x6d, 0x46, 0xf8, 0xae, 0xd7, - 0xd6, 0x4a, 0x9c, 0x50, 0x6e, 0x4e, 0xbd, 0x92, 0x7b, 0x38, 0x89, 0x8a, 0x9c, 0xdb, 0xdb, 0xad, - 0x4c, 0x24, 0xfb, 0x77, 0x6d, 0x46, 0xe6, 0x3d, 0xa9, 0x2b, 0x70, 0xb6, 0x9b, 0xb3, 0xa7, 0xf9, - 0xa2, 0xa9, 0xbd, 0xdd, 0xca, 0x78, 0xb2, 0x48, 0x98, 0x0c, 0x73, 0xc8, 0x4b, 0x33, 0x38, 0x7b, - 0x31, 0x83, 0xf9, 0x8b, 0xb9, 0x01, 0x49, 0x8a, 0xde, 0xc5, 0x91, 0x95, 0x5e, 0x3a, 0x3b, 0x2b, - 0xf0, 0x6d, 0xcb, 0x7b, 0xbb, 0x15, 0x3d, 0xd9, 0x56, 0x02, 0x32, 0xcc, 0x89, 0xce, 0xec, 0x46, - 0x32, 0xc9, 0x53, 0x72, 0xbc, 0x45, 0xea, 0x21, 0x71, 0x3c, 0xe2, 0x5a, 0x4d, 0x1c, 0x79, 0xa1, - 0xa3, 0x0d, 0xcf, 0x29, 0x0b, 0x03, 0xd5, 0xd9, 0xbd, 0xdd, 0xca, 0xf9, 0x64, 0xb3, 0x22, 0xc2, - 0x30, 0xc7, 0xc4, 0xd4, 0xc7, 0x7c, 0x46, 0xf5, 0x61, 0x92, 0x09, 0x7d, 0x51, 0x69, 0x47, 0x4e, - 0x40, 0x69, 0x27, 0x02, 0x8f, 0x14, 0xd4, 0x9d, 0x79, 0x43, 0xed, 0x7d, 0xde, 0x46, 0x4f, 0xc4, - 0x1b, 0x6a, 0x17, 0xbc, 0xbd, 0x03, 0x1a, 0x93, 0x1f, 0x9f, 0xab, 0x89, 0xc5, 0x0b, 0xaf, 0x85, - 0x09, 0xaa, 0xfb, 0xd8, 0xd1, 0xc6, 0xb8, 0x6c, 0x9c, 0xf3, 0x69, 0x90, 0x11, 0x9b, 0x6b, 0x89, - 0xf1, 0xea, 0xd0, 0xd7, 0x8f, 0x2a, 0x7d, 0x7f, 0x3d, 0xaa, 0xf4, 0x19, 0x17, 0x60, 0x56, 0x92, - 0xb3, 0x22, 0xa7, 0xbf, 0x52, 0xb8, 0x64, 0x6d, 0xf8, 0xc8, 0x0b, 0x6e, 0x11, 0x07, 0xfb, 0xd8, - 0x45, 0x31, 0x76, 0xb8, 0xac, 0x1d, 0x54, 0x79, 0xe7, 0xa0, 0x24, 0x9e, 0x57, 0x57, 0x6f, 0xa0, - 0xf3, 0xc2, 0x6a, 0x8e, 0x3a, 0x05, 0xa7, 0x71, 0x33, 0xb4, 0x1b, 0xfc, 0xf1, 0x0d, 0x98, 0xc9, - 0x40, 0x9d, 0x86, 0x41, 0x8a, 0x89, 0x23, 0xde, 0x5d, 0x3a, 0x32, 0xe6, 0xe1, 0x62, 0x4f, 0x1a, - 0x82, 0x6c, 0x9c, 0x3e, 0xcd, 0x7a, 0x22, 0x30, 0x9f, 0x74, 0xfa, 0x8f, 0x83, 0x88, 0xe6, 0x74, - 0xe0, 0x54, 0x41, 0x07, 0xe6, 0x61, 0x84, 0xb4, 0x02, 0x2b, 0xea, 0xec, 0x98, 0x72, 0x2d, 0x91, - 0x56, 0x20, 0xbc, 0x18, 0x73, 0x50, 0x96, 0x7b, 0xcd, 0x06, 0x71, 0x7c, 0x8b, 0xba, 0xeb, 0x8e, - 0xf3, 0xea, 0x94, 0xae, 0x02, 0x88, 0xbe, 0x8a, 0x6a, 0xfd, 0x73, 0xfd, 0x0b, 0xc3, 0xab, 0xfa, - 0x52, 0xa1, 0x5d, 0x5b, 0x12, 0x7e, 0xcc, 0x0c, 0xda, 0xd0, 0x41, 0x2b, 0xd2, 0x10, 0x1c, 0x7f, - 0x54, 0xb8, 0x91, 0xbd, 0x3f, 0xb7, 0x7b, 0x86, 0xdb, 0xd8, 0x73, 0x1b, 0xf1, 0x71, 0xb9, 0xae, - 0xc1, 0xd0, 0x0e, 0xf2, 0x2d, 0xe4, 0x38, 0x51, 0x5a, 0x57, 0xb4, 0x67, 0x8f, 0x17, 0xa7, 0xd2, - 0x9c, 0x5e, 0x77, 0x9c, 0x08, 0x53, 0xba, 0x1d, 0x47, 0x1e, 0x71, 0xcd, 0x33, 0x3b, 0xc8, 0x67, - 0x33, 0x2c, 0x03, 0x1e, 0x70, 0xaf, 0x3c, 0x03, 0x06, 0xcc, 0x74, 0x64, 0x18, 0x30, 0xd7, 0x8b, - 0x9f, 0x38, 0xc4, 0x97, 0x0a, 0xa8, 0x5b, 0xd4, 0xdd, 0xc4, 0xac, 0x3a, 0x0a, 0xd0, 0xeb, 0xa4, - 0x6f, 0xfc, 0x07, 0xf4, 0xfd, 0x0c, 0x04, 0xc1, 0x1f, 0x94, 0xf4, 0xb9, 0xd1, 0x38, 0x8c, 0x70, - 0x8d, 0xc4, 0x38, 0xe2, 0x25, 0x78, 0x3d, 0xe9, 0xa4, 0x8f, 0x57, 0xbc, 0xab, 0x50, 0x4a, 0x3b, - 0x71, 0x8b, 0x69, 0x07, 0xe7, 0x3a, 0xba, 0x5a, 0xd9, 0x97, 0x14, 0xb5, 0x8d, 0xf5, 0xd4, 0xcf, - 0xcd, 0x87, 0x4d, 0x6c, 0x0e, 0xa3, 0xee, 0xc0, 0xf8, 0x1f, 0xcc, 0x1f, 0xc0, 0x4b, 0xf0, 0xbf, - 0xcf, 0x2f, 0x21, 0xe9, 0x21, 0xc5, 0xe9, 0xb6, 0x1b, 0x28, 0xc2, 0xf4, 0x5a, 0xdb, 0x6e, 0x70, - 0x51, 0x3a, 0xd6, 0x19, 0x34, 0x60, 0x11, 0x0c, 0x9b, 0x38, 0x0d, 0xb5, 0xd9, 0x19, 0x1a, 0x97, - 0x60, 0xe1, 0x30, 0x97, 0x82, 0x5e, 0x8b, 0x77, 0x81, 0x5d, 0x81, 0x60, 0x72, 0xf6, 0xef, 0xf7, - 0x12, 0xc6, 0x2c, 0xd7, 0xc8, 0xbc, 0x5b, 0xc1, 0xc9, 0xe5, 0xa2, 0xb4, 0x81, 0x7c, 0xaf, 0xce, - 0x4a, 0xc1, 0x66, 0x82, 0xf1, 0x42, 0x72, 0xd2, 0x81, 0x4a, 0x74, 0x48, 0xe2, 0xa8, 0x43, 0x65, - 0xf5, 0xef, 0x12, 0xf4, 0x6f, 0x51, 0x57, 0xbd, 0x0d, 0xc3, 0xd9, 0x36, 0x79, 0x7f, 0xa6, 0xe4, - 0xbb, 0x6c, 0xfd, 0x8d, 0x43, 0x00, 0xa2, 0x85, 0xfd, 0x0c, 0x46, 0x0b, 0x2d, 0xb8, 0x21, 0x5d, - 0x9a, 0xc3, 0xe8, 0x97, 0x0e, 0xc7, 0x08, 0x0f, 0xb7, 0x61, 0x38, 0xdb, 0x27, 0x4a, 0xa9, 0x67, - 0x00, 0x72, 0xea, 0x92, 0xe6, 0x4d, 0xbd, 0x0b, 0xe3, 0xfb, 0x1a, 0xb7, 0xff, 0xca, 0x17, 0xe7, - 0x51, 0xfa, 0xe5, 0xa3, 0xa0, 0x84, 0x9f, 0x36, 0x4c, 0xf7, 0x28, 0xa6, 0xd2, 0x30, 0xc8, 0xb1, - 0xfa, 0xea, 0xd1, 0xb1, 0xc2, 0x73, 0x08, 0x93, 0xb2, 0xd2, 0xd8, 0x23, 0x42, 0xfb, 0x80, 0xfa, - 0xf2, 0x11, 0x81, 0xc2, 0xe1, 0xa7, 0x30, 0x92, 0x2f, 0x79, 0x17, 0x65, 0x3b, 0xe4, 0x20, 0xfa, - 0x9b, 0x87, 0x42, 0xc4, 0xf6, 0x2d, 0x38, 0x27, 0xaf, 0x56, 0xd2, 0x3d, 0xa4, 0x50, 0x7d, 0xe5, - 0xc8, 0x50, 0xe1, 0xd6, 0x86, 0xb1, 0x62, 0x7d, 0x99, 0x97, 0xed, 0x52, 0x00, 0xe9, 0x6f, 0x1d, - 0x01, 0x24, 0x9c, 0x7c, 0x01, 0x5a, 0xcf, 0x1a, 0xd1, 0x23, 0xdf, 0xe4, 0x68, 0xfd, 0xca, 0xcb, - 0xa0, 0x85, 0xff, 0x6f, 0x14, 0xb8, 0x70, 0xb0, 0xca, 0x4b, 0x23, 0x77, 0xe0, 0x12, 0xfd, 0xdd, - 0x97, 0x5e, 0x92, 0xcd, 0x5d, 0x99, 0x82, 0x4a, 0x73, 0x57, 0x02, 0x94, 0xe7, 0xee, 0x01, 0x52, - 0xa9, 0xde, 0x81, 0x52, 0xee, 0xbf, 0xea, 0x39, 0xf9, 0x83, 0xeb, 0x22, 0xf4, 0x85, 0xc3, 0x10, - 0x59, 0x95, 0x2c, 0x94, 0x28, 0xa9, 0x4a, 0xe6, 0x31, 0x72, 0x95, 0x94, 0xd7, 0x1c, 0xf5, 0x7b, - 0x05, 0x2a, 0x87, 0x7d, 0x35, 0x5b, 0xeb, 0x7d, 0x1b, 0x3d, 0x17, 0xe9, 0xef, 0x1d, 0x63, 0x51, - 0x87, 0x55, 0xf5, 0xfa, 0x93, 0xe7, 0x65, 0xe5, 0xe9, 0xf3, 0xb2, 0xf2, 0xe7, 0xf3, 0xb2, 0xf2, - 0xed, 0x8b, 0x72, 0xdf, 0xd3, 0x17, 0xe5, 0xbe, 0xdf, 0x5f, 0x94, 0xfb, 0xee, 0xac, 0x66, 0x0a, - 0xee, 0x36, 0x77, 0xb0, 0x78, 0x1d, 0xd5, 0xe9, 0x72, 0xfa, 0x45, 0x71, 0x67, 0xe5, 0xed, 0xe5, - 0x76, 0xe6, 0x2b, 0x25, 0x2b, 0xc0, 0xf5, 0x41, 0xfe, 0x8d, 0x70, 0xed, 0x9f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xc4, 0x68, 0xae, 0x73, 0xc5, 0x14, 0x00, 0x00, + 0x17, 0x8f, 0x9b, 0x34, 0x4d, 0x5f, 0x7e, 0x3b, 0x69, 0xea, 0x38, 0xdf, 0xee, 0xa6, 0xce, 0xf7, + 0xfb, 0x25, 0x94, 0x26, 0x51, 0x92, 0x22, 0x44, 0x81, 0x43, 0x36, 0x29, 0xea, 0x4a, 0x4d, 0x85, + 0x9c, 0x96, 0x4a, 0x95, 0x90, 0x99, 0xb5, 0xa7, 0x5e, 0xab, 0xf6, 0x78, 0xeb, 0xf1, 0xa6, 0x5b, + 0x0e, 0x88, 0x0b, 0x12, 0x17, 0x24, 0x10, 0x12, 0x47, 0xd4, 0x03, 0x07, 0x24, 0x6e, 0xa8, 0x7f, + 0x44, 0x25, 0x2e, 0x55, 0x4f, 0x88, 0xc3, 0x0a, 0xb5, 0x17, 0xce, 0xf9, 0x0b, 0xd0, 0x8c, 0xbd, + 0xb3, 0xb6, 0x33, 0x9b, 0xa4, 0x69, 0xe8, 0x29, 0x3b, 0xf3, 0x3e, 0x33, 0xef, 0x33, 0x6f, 0xde, + 0x7c, 0xde, 0x8b, 0x41, 0xa3, 0x71, 0xe4, 0x39, 0x78, 0x85, 0xc6, 0xe8, 0x3e, 0xf6, 0x6a, 0xf6, + 0x4a, 0xdc, 0x5a, 0x6e, 0x44, 0x61, 0x1c, 0xaa, 0xe3, 0x89, 0x65, 0xb9, 0x63, 0xd1, 0x2f, 0x16, + 0xa1, 0x9e, 0x8d, 0x2c, 0x64, 0xdb, 0x61, 0x93, 0xc4, 0xc9, 0x1a, 0xbd, 0x5c, 0x84, 0xec, 0x22, + 0xdf, 0x73, 0x50, 0x1c, 0x46, 0x29, 0x60, 0xda, 0x0d, 0xdd, 0x90, 0xff, 0x5c, 0x61, 0xbf, 0xd2, + 0xd9, 0x59, 0x3b, 0xa4, 0x41, 0x48, 0xad, 0xc4, 0x90, 0x0c, 0x12, 0x93, 0xf1, 0xfb, 0x29, 0x30, + 0xb6, 0xa9, 0x7b, 0xbb, 0xe1, 0xa0, 0x18, 0x57, 0x09, 0xc1, 0x91, 0x89, 0x1d, 0x1c, 0x34, 0x62, + 0x2f, 0x24, 0x26, 0x8a, 0x71, 0x25, 0x6c, 0x12, 0x87, 0xaa, 0x1a, 0x9c, 0xb1, 0x23, 0xcc, 0x1c, + 0x69, 0xca, 0xbc, 0xb2, 0x78, 0xd6, 0xec, 0x0c, 0xd5, 0x59, 0x18, 0xb2, 0xeb, 0xc8, 0x23, 0x96, + 0xe7, 0x68, 0xa7, 0x52, 0x13, 0x1b, 0x57, 0x1d, 0xf5, 0x21, 0xcc, 0x06, 0xcc, 0xc0, 0x76, 0xb5, + 0x22, 0xb1, 0xad, 0x15, 0xa1, 0x18, 0x6b, 0xfd, 0x0c, 0x5b, 0xf9, 0xf0, 0x69, 0xbb, 0xdc, 0xf7, + 0x67, 0xbb, 0xfc, 0x7f, 0xd7, 0x8b, 0xeb, 0xcd, 0xda, 0xb2, 0x1d, 0x06, 0x29, 0xbf, 0xf4, 0xcf, + 0x12, 0x75, 0xee, 0xaf, 0xc4, 0x8f, 0x1a, 0x98, 0x2e, 0x6f, 0x61, 0xfb, 0xf9, 0x93, 0x25, 0x48, + 0xe9, 0x6f, 0x61, 0xdb, 0x9c, 0x09, 0x3c, 0x22, 0xe1, 0xcc, 0x1d, 0xa3, 0x56, 0x0f, 0xc7, 0x03, + 0x27, 0xe2, 0x18, 0xb5, 0x24, 0x8e, 0x8d, 0xcb, 0x70, 0xe9, 0xf0, 0x60, 0x9a, 0x98, 0x36, 0x42, + 0x42, 0xb1, 0xf1, 0xbd, 0x02, 0x63, 0xdb, 0xd4, 0xbd, 0xe1, 0x3d, 0x68, 0x7a, 0xce, 0x0e, 0xbb, + 0xd2, 0x03, 0xe2, 0xfc, 0x31, 0x0c, 0xa2, 0x80, 0xa5, 0x42, 0x12, 0xe5, 0xca, 0xf2, 0x2b, 0x1c, + 0xa0, 0x4a, 0x62, 0x33, 0x5d, 0xad, 0x5e, 0x00, 0xa8, 0x87, 0x34, 0xb6, 0x1c, 0x4c, 0xc2, 0x20, + 0xb9, 0x05, 0xf3, 0x2c, 0x9b, 0xd9, 0x62, 0x13, 0x86, 0x06, 0x33, 0x79, 0x4a, 0x82, 0xed, 0xcf, + 0x0a, 0x4c, 0x32, 0xd3, 0xce, 0xf6, 0x9b, 0x25, 0xbc, 0x04, 0x53, 0x3e, 0x0d, 0xac, 0x38, 0xbc, + 0x8f, 0x89, 0xe5, 0xd5, 0xec, 0x1c, 0xf3, 0x09, 0x9f, 0x06, 0xb7, 0x98, 0xa5, 0x5a, 0xb3, 0x93, + 0x03, 0xdc, 0x84, 0xd9, 0x7d, 0x2c, 0x3b, 0x67, 0x50, 0x57, 0x61, 0x3a, 0x8e, 0x10, 0xa1, 0xc8, + 0xe6, 0xf9, 0x60, 0x87, 0x41, 0xc3, 0xc7, 0x31, 0xe6, 0xd4, 0x87, 0xcc, 0xa9, 0x8c, 0x6d, 0x33, + 0x35, 0x19, 0xbf, 0x28, 0x30, 0xbe, 0x4d, 0xdd, 0x4d, 0x1f, 0xa3, 0xa8, 0x82, 0x7c, 0x44, 0x6c, + 0x7c, 0xbc, 0xd7, 0xd0, 0x8d, 0x47, 0xff, 0x6b, 0xc5, 0x83, 0x39, 0xaf, 0x23, 0x42, 0xb0, 0x9f, + 0xa4, 0xb2, 0xd9, 0x19, 0x1a, 0xb3, 0x70, 0xbe, 0xc0, 0x54, 0x5c, 0xde, 0xaf, 0x49, 0xaa, 0xb1, + 0x74, 0xc4, 0xc1, 0x9b, 0xba, 0xb9, 0x39, 0xe0, 0x89, 0x65, 0x7d, 0x11, 0x92, 0xf4, 0xbd, 0x9b, + 0x43, 0x6c, 0xe2, 0x6e, 0x48, 0xb0, 0xaa, 0xc3, 0x50, 0x84, 0x6d, 0xec, 0xed, 0xe2, 0x28, 0x3d, + 0x87, 0x18, 0xa7, 0x49, 0x98, 0x21, 0x2b, 0xce, 0xf1, 0xdb, 0x69, 0x98, 0xe2, 0x26, 0xd7, 0xa3, + 0x31, 0x8e, 0xae, 0x77, 0x76, 0xfb, 0x08, 0x46, 0xed, 0x90, 0x10, 0x9c, 0xdc, 0x6b, 0x27, 0xf8, + 0x15, 0x6d, 0xaf, 0x5d, 0x9e, 0x7e, 0x84, 0x02, 0xff, 0xaa, 0x91, 0x33, 0x1b, 0xe6, 0x48, 0x77, + 0x5c, 0x75, 0x54, 0x03, 0x46, 0x6a, 0xd8, 0xae, 0xaf, 0xaf, 0x35, 0x22, 0x7c, 0xcf, 0x6b, 0x69, + 0x23, 0x9c, 0x50, 0x6e, 0x4e, 0xbd, 0x92, 0x7b, 0x38, 0x89, 0x8a, 0x9c, 0xdb, 0x6b, 0x97, 0x27, + 0x93, 0xfd, 0xbb, 0x36, 0x23, 0xf3, 0x9e, 0xd4, 0x55, 0x38, 0xdb, 0xcd, 0xd9, 0xd3, 0x7c, 0xd1, + 0xf4, 0x5e, 0xbb, 0x3c, 0x91, 0x2c, 0x12, 0x26, 0xc3, 0x1c, 0xf2, 0xd2, 0x0c, 0xce, 0x5e, 0xcc, + 0x60, 0xfe, 0x62, 0x6e, 0x42, 0x92, 0xa2, 0xf7, 0x70, 0x64, 0xa5, 0x97, 0xce, 0xce, 0x0a, 0x7c, + 0xdb, 0xd2, 0x5e, 0xbb, 0xac, 0x27, 0xdb, 0x4a, 0x40, 0x86, 0x39, 0xd9, 0x99, 0xdd, 0x4c, 0x26, + 0x79, 0x4a, 0x4e, 0x34, 0x49, 0x2d, 0x24, 0x8e, 0x47, 0x5c, 0xab, 0x81, 0x23, 0x2f, 0x74, 0xb4, + 0xe1, 0x79, 0x65, 0x71, 0xa0, 0x32, 0xb7, 0xd7, 0x2e, 0x9f, 0x4f, 0x36, 0x2b, 0x22, 0x0c, 0x73, + 0x5c, 0x4c, 0x7d, 0xc2, 0x67, 0x54, 0x1f, 0xa6, 0x98, 0xd0, 0x17, 0x95, 0x76, 0xf4, 0x04, 0x94, + 0x76, 0x32, 0xf0, 0x48, 0x41, 0xdd, 0x99, 0x37, 0xd4, 0xda, 0xe7, 0x6d, 0xec, 0x44, 0xbc, 0xa1, + 0x56, 0xc1, 0xdb, 0x7b, 0xa0, 0x31, 0xf9, 0xf1, 0xb9, 0x9a, 0x58, 0xbc, 0xf0, 0x5a, 0x98, 0xa0, + 0x9a, 0x8f, 0x1d, 0x6d, 0x9c, 0xcb, 0xc6, 0x39, 0x9f, 0x06, 0x19, 0xb1, 0xb9, 0x96, 0x18, 0xaf, + 0x0e, 0x7d, 0xf3, 0xb8, 0xdc, 0xf7, 0xf7, 0xe3, 0x72, 0x9f, 0x71, 0x01, 0xe6, 0x24, 0x39, 0x2b, + 0x72, 0xfa, 0x6b, 0x85, 0x4b, 0xd6, 0xa6, 0x8f, 0xbc, 0xe0, 0x36, 0x71, 0xb0, 0x8f, 0x5d, 0x14, + 0x63, 0x87, 0xcb, 0xda, 0x41, 0x95, 0x77, 0x1e, 0x46, 0xc4, 0xf3, 0xea, 0xea, 0x0d, 0x74, 0x5e, + 0x58, 0xd5, 0x51, 0xa7, 0xe1, 0x34, 0x6e, 0x84, 0x76, 0x9d, 0x3f, 0xbe, 0x01, 0x33, 0x19, 0xa8, + 0x33, 0x30, 0x48, 0x31, 0x71, 0xc4, 0xbb, 0x4b, 0x47, 0xc6, 0x02, 0x5c, 0xec, 0x49, 0x43, 0x90, + 0x8d, 0xd3, 0xa7, 0x59, 0x4b, 0x04, 0xe6, 0xd3, 0x4e, 0xff, 0x71, 0x10, 0xd1, 0x9c, 0x0e, 0x9c, + 0x2a, 0xe8, 0xc0, 0x02, 0x8c, 0x92, 0x66, 0x60, 0x45, 0x9d, 0x1d, 0x53, 0xae, 0x23, 0xa4, 0x19, + 0x08, 0x2f, 0xc6, 0x3c, 0x94, 0xe4, 0x5e, 0xb3, 0x41, 0x9c, 0xd8, 0xa6, 0xee, 0x86, 0xe3, 0xbc, + 0x3e, 0xa5, 0xab, 0x00, 0xa2, 0xaf, 0xa2, 0x5a, 0xff, 0x7c, 0xff, 0xe2, 0xf0, 0x9a, 0xbe, 0x5c, + 0x68, 0xd7, 0x96, 0x85, 0x1f, 0x33, 0x83, 0x36, 0x74, 0xd0, 0x8a, 0x34, 0x04, 0xc7, 0x9f, 0x14, + 0x6e, 0x64, 0xef, 0xcf, 0xed, 0x9e, 0xe1, 0x0e, 0xf6, 0xdc, 0x7a, 0x7c, 0x5c, 0xae, 0xeb, 0x30, + 0xb4, 0x8b, 0x7c, 0x0b, 0x39, 0x4e, 0x94, 0xd6, 0x15, 0xed, 0xf9, 0x93, 0xa5, 0xe9, 0x34, 0xa7, + 0x37, 0x1c, 0x27, 0xc2, 0x94, 0xee, 0xc4, 0x91, 0x47, 0x5c, 0xf3, 0xcc, 0x2e, 0xf2, 0xd9, 0x0c, + 0xcb, 0x80, 0x87, 0xdc, 0x2b, 0xcf, 0x80, 0x01, 0x33, 0x1d, 0x19, 0x06, 0xcc, 0xf7, 0xe2, 0x27, + 0x0e, 0xf1, 0x95, 0x02, 0xea, 0x36, 0x75, 0xb7, 0x30, 0xab, 0x8e, 0x02, 0xf4, 0x26, 0xe9, 0x1b, + 0xff, 0x01, 0x7d, 0x3f, 0x03, 0x41, 0xf0, 0x47, 0x25, 0x7d, 0x6e, 0x34, 0x0e, 0x23, 0x5c, 0x25, + 0x31, 0x8e, 0x78, 0x09, 0xde, 0x48, 0x3a, 0xe9, 0xe3, 0x15, 0xef, 0x0a, 0x8c, 0xa4, 0x9d, 0xb8, + 0xc5, 0xb4, 0x83, 0x73, 0x1d, 0x5b, 0x2b, 0xef, 0x4b, 0x8a, 0xea, 0xe6, 0x46, 0xea, 0xe7, 0xd6, + 0xa3, 0x06, 0x36, 0x87, 0x51, 0x77, 0x60, 0xfc, 0x0f, 0x16, 0x0e, 0xe0, 0x25, 0xf8, 0x3f, 0xe0, + 0x97, 0x90, 0xf4, 0x90, 0xe2, 0x74, 0x3b, 0x75, 0x14, 0x61, 0x7a, 0xad, 0x65, 0xd7, 0xb9, 0x28, + 0x1d, 0xeb, 0x0c, 0x1a, 0xb0, 0x08, 0x86, 0x0d, 0x9c, 0x86, 0xda, 0xec, 0x0c, 0x8d, 0x4b, 0xb0, + 0x78, 0x98, 0x4b, 0x41, 0xaf, 0xc9, 0xbb, 0xc0, 0xae, 0x40, 0x30, 0x39, 0xfb, 0xf7, 0x7b, 0x09, + 0x63, 0x8e, 0x6b, 0x64, 0xde, 0xad, 0xe0, 0xe4, 0x72, 0x51, 0xda, 0x44, 0xbe, 0x57, 0x63, 0xa5, + 0x60, 0x2b, 0xc1, 0x78, 0x21, 0x39, 0xe9, 0x40, 0x25, 0x3a, 0x24, 0x71, 0x24, 0xa8, 0x5c, 0xe7, + 0xe1, 0x31, 0x31, 0x6d, 0x06, 0x58, 0x74, 0x27, 0xc7, 0x61, 0x91, 0x9e, 0x38, 0xbf, 0x53, 0xc7, + 0xcd, 0x5a, 0x7b, 0x14, 0xfa, 0xb7, 0xa9, 0xab, 0xde, 0x81, 0xe1, 0x6c, 0x37, 0xbe, 0x3f, 0x21, + 0xf3, 0xcd, 0xbc, 0xfe, 0xd6, 0x21, 0x00, 0xd1, 0x29, 0x7f, 0x0e, 0x63, 0x85, 0x4e, 0xdf, 0x90, + 0x2e, 0xcd, 0x61, 0xf4, 0x4b, 0x87, 0x63, 0x84, 0x87, 0x3b, 0x30, 0x9c, 0x6d, 0x47, 0xa5, 0xd4, + 0x33, 0x00, 0x39, 0x75, 0x49, 0x8f, 0xa8, 0xde, 0x83, 0x89, 0x7d, 0xfd, 0xe1, 0x7f, 0xe5, 0x8b, + 0xf3, 0x28, 0xfd, 0xf2, 0x51, 0x50, 0xc2, 0x4f, 0x0b, 0x66, 0x7a, 0xd4, 0x6c, 0x69, 0x18, 0xe4, + 0x58, 0x7d, 0xed, 0xe8, 0x58, 0xe1, 0x39, 0x84, 0x29, 0x59, 0x05, 0xee, 0x11, 0xa1, 0x7d, 0x40, + 0x7d, 0xe5, 0x88, 0x40, 0xe1, 0xf0, 0x33, 0x18, 0xcd, 0x57, 0xd6, 0x8b, 0xb2, 0x1d, 0x72, 0x10, + 0xfd, 0xed, 0x43, 0x21, 0x62, 0xfb, 0x26, 0x9c, 0x93, 0x17, 0x45, 0xe9, 0x1e, 0x52, 0xa8, 0xbe, + 0x7a, 0x64, 0xa8, 0x70, 0x6b, 0xc3, 0x78, 0xb1, 0x8c, 0x2d, 0xc8, 0x76, 0x29, 0x80, 0xf4, 0x77, + 0x8e, 0x00, 0x12, 0x4e, 0xbe, 0x04, 0xad, 0x67, 0x29, 0xea, 0x91, 0x6f, 0x72, 0xb4, 0x7e, 0xe5, + 0x55, 0xd0, 0xc2, 0xff, 0xb7, 0x0a, 0x5c, 0x38, 0xb8, 0x98, 0x48, 0x23, 0x77, 0xe0, 0x12, 0xfd, + 0xfd, 0x57, 0x5e, 0x92, 0xcd, 0x5d, 0x99, 0x50, 0x4b, 0x73, 0x57, 0x02, 0x94, 0xe7, 0xee, 0x01, + 0x8a, 0xac, 0xde, 0x85, 0x91, 0xdc, 0x3f, 0xef, 0xf3, 0xf2, 0x07, 0xd7, 0x45, 0xe8, 0x8b, 0x87, + 0x21, 0xb2, 0x2a, 0x59, 0xa8, 0x84, 0x52, 0x95, 0xcc, 0x63, 0xe4, 0x2a, 0x29, 0x2f, 0x6d, 0xea, + 0x0f, 0x0a, 0x94, 0x0f, 0xfb, 0x38, 0xb7, 0xde, 0xfb, 0x36, 0x7a, 0x2e, 0xd2, 0x3f, 0x38, 0xc6, + 0xa2, 0xec, 0xb9, 0x0b, 0x25, 0xce, 0xe8, 0x91, 0x9c, 0x19, 0x8c, 0xfc, 0xdc, 0xf2, 0x02, 0x57, + 0xb9, 0xf1, 0xf4, 0x45, 0x49, 0x79, 0xf6, 0xa2, 0xa4, 0xfc, 0xf5, 0xa2, 0xa4, 0x7c, 0xf7, 0xb2, + 0xd4, 0xf7, 0xec, 0x65, 0xa9, 0xef, 0x8f, 0x97, 0xa5, 0xbe, 0xbb, 0x6b, 0x99, 0xce, 0x61, 0x87, + 0xef, 0xb7, 0x74, 0x03, 0xd5, 0xe8, 0x4a, 0xfa, 0x69, 0x74, 0x77, 0xf5, 0xdd, 0x95, 0x56, 0xe6, + 0x73, 0x2b, 0xeb, 0x24, 0x6a, 0x83, 0xfc, 0x63, 0xe7, 0xfa, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, + 0xfc, 0x33, 0xdb, 0xaa, 0x8e, 0x15, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1614,6 +1706,7 @@ type MsgClient interface { ClearBalance(ctx context.Context, in *MsgClearBalance, opts ...grpc.CallOption) (*MsgClearBalanceResponse, error) UndelegateHost(ctx context.Context, in *MsgUndelegateHost, opts ...grpc.CallOption) (*MsgUndelegateHostResponse, error) UpdateInnerRedemptionRateBounds(ctx context.Context, in *MsgUpdateInnerRedemptionRateBounds, opts ...grpc.CallOption) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) + ResumeHostZone(ctx context.Context, in *MsgResumeHostZone, opts ...grpc.CallOption) (*MsgResumeHostZoneResponse, error) } type msgClient struct { @@ -1759,6 +1852,15 @@ func (c *msgClient) UpdateInnerRedemptionRateBounds(ctx context.Context, in *Msg return out, nil } +func (c *msgClient) ResumeHostZone(ctx context.Context, in *MsgResumeHostZone, opts ...grpc.CallOption) (*MsgResumeHostZoneResponse, error) { + out := new(MsgResumeHostZoneResponse) + err := c.cc.Invoke(ctx, "/stride.stakeibc.Msg/ResumeHostZone", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { LiquidStake(context.Context, *MsgLiquidStake) (*MsgLiquidStakeResponse, error) @@ -1776,6 +1878,7 @@ type MsgServer interface { ClearBalance(context.Context, *MsgClearBalance) (*MsgClearBalanceResponse, error) UndelegateHost(context.Context, *MsgUndelegateHost) (*MsgUndelegateHostResponse, error) UpdateInnerRedemptionRateBounds(context.Context, *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) + ResumeHostZone(context.Context, *MsgResumeHostZone) (*MsgResumeHostZoneResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1827,6 +1930,9 @@ func (*UnimplementedMsgServer) UndelegateHost(ctx context.Context, req *MsgUndel func (*UnimplementedMsgServer) UpdateInnerRedemptionRateBounds(ctx context.Context, req *MsgUpdateInnerRedemptionRateBounds) (*MsgUpdateInnerRedemptionRateBoundsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateInnerRedemptionRateBounds not implemented") } +func (*UnimplementedMsgServer) ResumeHostZone(ctx context.Context, req *MsgResumeHostZone) (*MsgResumeHostZoneResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResumeHostZone not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -2102,6 +2208,24 @@ func _Msg_UpdateInnerRedemptionRateBounds_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _Msg_ResumeHostZone_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgResumeHostZone) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).ResumeHostZone(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/stride.stakeibc.Msg/ResumeHostZone", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).ResumeHostZone(ctx, req.(*MsgResumeHostZone)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "stride.stakeibc.Msg", HandlerType: (*MsgServer)(nil), @@ -2166,6 +2290,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateInnerRedemptionRateBounds", Handler: _Msg_UpdateInnerRedemptionRateBounds_Handler, }, + { + MethodName: "ResumeHostZone", + Handler: _Msg_ResumeHostZone_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "stride/stakeibc/tx.proto", @@ -3290,6 +3418,66 @@ func (m *MsgCalibrateDelegationResponse) MarshalToSizedBuffer(dAtA []byte) (int, return len(dAtA) - i, nil } +func (m *MsgResumeHostZone) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgResumeHostZone) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgResumeHostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChainId) > 0 { + i -= len(m.ChainId) + copy(dAtA[i:], m.ChainId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ChainId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgResumeHostZoneResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgResumeHostZoneResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgResumeHostZoneResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -3776,6 +3964,32 @@ func (m *MsgCalibrateDelegationResponse) Size() (n int) { return n } +func (m *MsgResumeHostZone) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ChainId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgResumeHostZoneResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -7037,6 +7251,170 @@ func (m *MsgCalibrateDelegationResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgResumeHostZone) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgResumeHostZone: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgResumeHostZone: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChainId", 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.ChainId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgResumeHostZoneResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgResumeHostZoneResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgResumeHostZoneResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 From 1317c3d1b13e9c10b956eb5372045ac06195d3e2 Mon Sep 17 00:00:00 2001 From: dev-stride <114107648+dev-stride@users.noreply.github.com> Date: Sat, 14 Oct 2023 17:51:11 -0500 Subject: [PATCH 41/44] v16 Import Paths (#952) Co-authored-by: stride-dev --- app/app.go | 76 ++++----- app/apptesting/test_helpers.go | 4 +- app/proposals_whitelisting.go | 6 +- app/test_setup.go | 4 +- app/upgrades.go | 44 ++--- app/upgrades/v10/upgrades.go | 24 +-- app/upgrades/v10/upgrades_test.go | 24 +-- app/upgrades/v13/upgrades.go | 2 +- app/upgrades/v13/upgrades_test.go | 2 +- app/upgrades/v14/upgrades.go | 14 +- app/upgrades/v14/upgrades_test.go | 14 +- app/upgrades/v15/upgrades.go | 4 +- app/upgrades/v15/upgrades_test.go | 10 +- app/upgrades/v16/upgrades.go | 6 +- app/upgrades/v16/upgrades_test.go | 4 +- app/upgrades/v3/upgrades.go | 6 +- app/upgrades/v3/upgrades_test.go | 2 +- app/upgrades/v4/upgrades_test.go | 2 +- app/upgrades/v5/upgrades.go | 20 +-- app/upgrades/v5/upgrades_test.go | 30 ++-- app/upgrades/v6/upgrades.go | 2 +- app/upgrades/v6/upgrades_test.go | 8 +- app/upgrades/v7/upgrades.go | 16 +- app/upgrades/v7/upgrades_test.go | 14 +- app/upgrades/v8/upgrades.go | 12 +- app/upgrades/v8/upgrades_test.go | 10 +- app/upgrades/v9/upgrades.go | 2 +- app/upgrades/v9/upgrades_test.go | 14 +- cmd/consumer.go | 2 +- cmd/strided/main.go | 6 +- cmd/strided/root.go | 4 +- go.mod | 2 +- proto/cosmos/staking/v1beta1/lsm_tx.proto | 2 +- proto/cosmwasm/wasm/v1/cosmwasm.proto | 2 +- proto/stride/autopilot/genesis.proto | 2 +- proto/stride/autopilot/params.proto | 2 +- proto/stride/autopilot/query.proto | 2 +- proto/stride/claim/claim.proto | 2 +- proto/stride/claim/genesis.proto | 2 +- proto/stride/claim/params.proto | 2 +- proto/stride/claim/query.proto | 2 +- proto/stride/claim/tx.proto | 2 +- proto/stride/epochs/genesis.proto | 2 +- proto/stride/epochs/query.proto | 4 +- proto/stride/icacallbacks/callback_data.proto | 2 +- proto/stride/icacallbacks/genesis.proto | 2 +- proto/stride/icacallbacks/packet.proto | 2 +- proto/stride/icacallbacks/params.proto | 2 +- proto/stride/icacallbacks/query.proto | 2 +- proto/stride/icacallbacks/tx.proto | 2 +- proto/stride/icaoracle/callbacks.proto | 2 +- proto/stride/icaoracle/contract.proto | 2 +- proto/stride/icaoracle/genesis.proto | 2 +- proto/stride/icaoracle/icaoracle.proto | 2 +- proto/stride/icaoracle/query.proto | 2 +- proto/stride/icaoracle/tx.proto | 2 +- proto/stride/interchainquery/v1/genesis.proto | 2 +- .../stride/interchainquery/v1/messages.proto | 2 +- proto/stride/interchainquery/v1/query.proto | 2 +- proto/stride/mint/v1beta1/genesis.proto | 2 +- proto/stride/mint/v1beta1/mint.proto | 2 +- proto/stride/mint/v1beta1/query.proto | 2 +- proto/stride/ratelimit/genesis.proto | 2 +- proto/stride/ratelimit/gov.proto | 2 +- proto/stride/ratelimit/params.proto | 2 +- proto/stride/ratelimit/query.proto | 2 +- proto/stride/ratelimit/ratelimit.proto | 2 +- proto/stride/records/callbacks.proto | 2 +- proto/stride/records/genesis.proto | 2 +- proto/stride/records/params.proto | 2 +- proto/stride/records/query.proto | 2 +- proto/stride/records/records.proto | 2 +- proto/stride/stakeibc/address_unbonding.proto | 2 +- proto/stride/stakeibc/callbacks.proto | 2 +- proto/stride/stakeibc/epoch_tracker.proto | 2 +- proto/stride/stakeibc/genesis.proto | 2 +- proto/stride/stakeibc/gov.proto | 2 +- proto/stride/stakeibc/host_zone.proto | 2 +- proto/stride/stakeibc/ica_account.proto | 2 +- proto/stride/stakeibc/packet.proto | 2 +- proto/stride/stakeibc/params.proto | 2 +- proto/stride/stakeibc/query.proto | 2 +- proto/stride/stakeibc/tx.proto | 2 +- proto/stride/stakeibc/validator.proto | 2 +- proto/stride/vesting/tx.proto | 2 +- proto/stride/vesting/vesting.proto | 2 +- scripts/protocgen.sh | 2 +- testutil/keeper/claim.go | 4 +- testutil/keeper/epochs.go | 4 +- testutil/keeper/icacallbacks.go | 4 +- testutil/keeper/interchainquery.go | 4 +- testutil/keeper/records.go | 4 +- testutil/keeper/stakeibc.go | 4 +- testutil/network/network.go | 4 +- utils/cache_ctx_test.go | 2 +- utils/module_account_test.go | 2 +- utils/utils.go | 6 +- utils/utils_test.go | 2 +- x/autopilot/client/cli/query.go | 2 +- x/autopilot/genesis.go | 4 +- x/autopilot/genesis_test.go | 6 +- x/autopilot/handler.go | 4 +- x/autopilot/keeper/airdrop.go | 8 +- x/autopilot/keeper/airdrop_test.go | 10 +- x/autopilot/keeper/grpc_query_params.go | 2 +- x/autopilot/keeper/grpc_query_params_test.go | 2 +- x/autopilot/keeper/keeper.go | 6 +- x/autopilot/keeper/keeper_test.go | 4 +- x/autopilot/keeper/liquidstake.go | 6 +- x/autopilot/keeper/liquidstake_test.go | 14 +- x/autopilot/keeper/params.go | 2 +- x/autopilot/keeper/params_test.go | 2 +- x/autopilot/module.go | 6 +- x/autopilot/module_ibc.go | 4 +- x/autopilot/types/genesis.pb.go | 4 +- x/autopilot/types/genesis_test.go | 2 +- x/autopilot/types/params.pb.go | 4 +- x/autopilot/types/parser_test.go | 4 +- x/autopilot/types/query.pb.go | 6 +- x/claim/client/cli/cli_test.go | 14 +- x/claim/client/cli/query.go | 2 +- x/claim/client/cli/tx.go | 2 +- x/claim/client/cli/tx_claim_free_amount.go | 2 +- x/claim/client/cli/tx_create_airdrop.go | 2 +- x/claim/client/cli/tx_delete_airdrop.go | 2 +- .../client/cli/tx_set_airdrop_allocations.go | 2 +- x/claim/genesis_test.go | 6 +- x/claim/handler.go | 4 +- x/claim/keeper/claim.go | 8 +- x/claim/keeper/claim_test.go | 10 +- x/claim/keeper/genesis.go | 2 +- x/claim/keeper/grpc_query.go | 2 +- x/claim/keeper/hooks.go | 6 +- x/claim/keeper/hooks_test.go | 6 +- x/claim/keeper/keeper.go | 2 +- x/claim/keeper/keeper_test.go | 6 +- x/claim/keeper/msg_server.go | 2 +- x/claim/keeper/msg_server_test.go | 4 +- x/claim/keeper/params.go | 2 +- x/claim/migrations/v2/convert.go | 4 +- x/claim/migrations/v2/convert_test.go | 4 +- x/claim/migrations/v2/migrations.go | 4 +- x/claim/module.go | 6 +- x/claim/types/claim.pb.go | 52 +++--- x/claim/types/expected_keepers.go | 2 +- x/claim/types/genesis.pb.go | 6 +- x/claim/types/msgs.go | 2 +- x/claim/types/params.pb.go | 64 ++++---- x/claim/types/query.pb.go | 152 +++++++++--------- x/claim/types/tx.pb.go | 78 ++++----- x/claim/vesting/client/cli/tx.go | 2 +- x/claim/vesting/client/testutil/suite.go | 2 +- x/claim/vesting/handler.go | 2 +- x/claim/vesting/module.go | 4 +- x/claim/vesting/msg_server.go | 2 +- x/claim/vesting/types/codec.go | 2 +- x/claim/vesting/types/common_test.go | 2 +- x/claim/vesting/types/tx.pb.go | 4 +- x/claim/vesting/types/vesting.pb.go | 4 +- x/claim/vesting/types/vesting_account.go | 4 +- x/claim/vesting/types/vesting_account_test.go | 2 +- x/epochs/client/cli/query.go | 2 +- x/epochs/genesis.go | 4 +- x/epochs/genesis_test.go | 8 +- x/epochs/handler.go | 4 +- x/epochs/keeper/abci.go | 4 +- x/epochs/keeper/abci_test.go | 4 +- x/epochs/keeper/epoch.go | 2 +- x/epochs/keeper/epoch_test.go | 2 +- x/epochs/keeper/grpc_query.go | 2 +- x/epochs/keeper/grpc_query_test.go | 2 +- x/epochs/keeper/hooks.go | 2 +- x/epochs/keeper/keeper.go | 2 +- x/epochs/keeper/keeper_test.go | 4 +- x/epochs/module.go | 8 +- x/epochs/simulation/genesis.go | 2 +- x/epochs/types/genesis.pb.go | 54 +++---- x/epochs/types/query.pb.go | 60 +++---- x/icacallbacks/client/cli/query.go | 2 +- .../client/cli/query_callback_data.go | 2 +- .../client/cli/query_callback_data_test.go | 8 +- x/icacallbacks/client/cli/query_params.go | 2 +- x/icacallbacks/client/cli/tx.go | 2 +- x/icacallbacks/genesis.go | 4 +- x/icacallbacks/genesis_test.go | 8 +- x/icacallbacks/handler.go | 4 +- x/icacallbacks/ibc_module.go | 4 +- x/icacallbacks/icacallbacks.go | 2 +- x/icacallbacks/icacallbacks_test.go | 6 +- x/icacallbacks/keeper/callback_data.go | 2 +- x/icacallbacks/keeper/callback_data_test.go | 8 +- x/icacallbacks/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_callback_data.go | 2 +- .../keeper/grpc_query_callback_data_test.go | 6 +- x/icacallbacks/keeper/grpc_query_params.go | 2 +- .../keeper/grpc_query_params_test.go | 4 +- x/icacallbacks/keeper/keeper.go | 2 +- x/icacallbacks/keeper/msg_server.go | 2 +- x/icacallbacks/keeper/params.go | 2 +- x/icacallbacks/keeper/params_test.go | 4 +- x/icacallbacks/migrations/v2/convert.go | 6 +- x/icacallbacks/migrations/v2/convert_test.go | 4 +- x/icacallbacks/migrations/v2/migrations.go | 2 +- x/icacallbacks/module.go | 6 +- x/icacallbacks/module_simulation.go | 6 +- x/icacallbacks/types/callback_data.pb.go | 4 +- x/icacallbacks/types/genesis.pb.go | 6 +- x/icacallbacks/types/genesis_test.go | 2 +- x/icacallbacks/types/packet.pb.go | 4 +- x/icacallbacks/types/params.pb.go | 4 +- x/icacallbacks/types/query.pb.go | 64 ++++---- x/icacallbacks/types/tx.pb.go | 4 +- x/icaoracle/client/cli/cli_test.go | 10 +- x/icaoracle/client/cli/query.go | 2 +- x/icaoracle/client/cli/query_test.go | 2 +- x/icaoracle/client/cli/tx.go | 2 +- x/icaoracle/client/cli/tx_test.go | 2 +- x/icaoracle/ibc_middleware.go | 2 +- x/icaoracle/keeper/events.go | 2 +- x/icaoracle/keeper/genesis.go | 2 +- x/icaoracle/keeper/genesis_test.go | 2 +- x/icaoracle/keeper/grpc_query.go | 2 +- x/icaoracle/keeper/grpc_query_test.go | 2 +- x/icaoracle/keeper/ibc.go | 4 +- x/icaoracle/keeper/ibc_test.go | 4 +- x/icaoracle/keeper/icacallbacks.go | 2 +- .../keeper/icacallbacks_instantiate_oracle.go | 6 +- .../icacallbacks_instantiate_oracle_test.go | 4 +- .../keeper/icacallbacks_update_oracle.go | 6 +- .../keeper/icacallbacks_update_oracle_test.go | 4 +- x/icaoracle/keeper/icaoracle.go | 2 +- x/icaoracle/keeper/icaoracle_test.go | 6 +- x/icaoracle/keeper/keeper.go | 2 +- x/icaoracle/keeper/keeper_test.go | 6 +- x/icaoracle/keeper/metric.go | 2 +- x/icaoracle/keeper/metric_test.go | 2 +- x/icaoracle/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_oracle_test.go | 2 +- .../msg_server_instantiate_oracle_test.go | 4 +- .../keeper/msg_server_remove_oracle_test.go | 2 +- .../msg_server_restore_oracle_ica_test.go | 2 +- .../keeper/msg_server_toggle_oracle_test.go | 2 +- x/icaoracle/keeper/oracle.go | 2 +- x/icaoracle/keeper/oracle_test.go | 2 +- x/icaoracle/module.go | 6 +- x/icaoracle/types/callbacks.pb.go | 6 +- x/icaoracle/types/contract.pb.go | 46 +++--- x/icaoracle/types/cosmwasm.pb.go | 50 +++--- x/icaoracle/types/expected_keepers.go | 2 +- x/icaoracle/types/genesis.pb.go | 4 +- x/icaoracle/types/genesis_test.go | 4 +- x/icaoracle/types/ica_test.go | 2 +- x/icaoracle/types/icaoracle.pb.go | 66 ++++---- x/icaoracle/types/message_add_oracle.go | 2 +- x/icaoracle/types/message_add_oracle_test.go | 4 +- .../types/message_instantiate_oracle.go | 2 +- .../types/message_instantiate_oracle_test.go | 4 +- .../types/message_remove_oracle_test.go | 4 +- ..._restore_oracle_interchain_account_test.go | 4 +- .../types/message_toggle_oracle_test.go | 4 +- x/icaoracle/types/metric_test.go | 2 +- x/icaoracle/types/oracle_test.go | 2 +- x/icaoracle/types/query.pb.go | 6 +- x/icaoracle/types/tx.pb.go | 10 +- x/interchainquery/client/cli/query.go | 2 +- x/interchainquery/genesis.go | 4 +- x/interchainquery/handler.go | 4 +- x/interchainquery/keeper/abci.go | 2 +- x/interchainquery/keeper/grpc_query.go | 2 +- x/interchainquery/keeper/keeper.go | 4 +- x/interchainquery/keeper/keeper_test.go | 6 +- x/interchainquery/keeper/msg_server.go | 4 +- .../keeper/msg_submit_query_response_test.go | 4 +- x/interchainquery/keeper/queries.go | 2 +- x/interchainquery/keeper/queries_test.go | 8 +- x/interchainquery/module.go | 6 +- x/interchainquery/types/genesis.pb.go | 86 +++++----- x/interchainquery/types/messages.pb.go | 63 ++++---- x/interchainquery/types/query.pb.go | 4 +- x/mint/client/cli/cli_test.go | 4 +- x/mint/client/cli/query.go | 2 +- x/mint/client/rest/grpc_query_test.go | 4 +- x/mint/genesis.go | 4 +- x/mint/keeper/grpc_query.go | 2 +- x/mint/keeper/hooks.go | 4 +- x/mint/keeper/keeper.go | 2 +- x/mint/module.go | 8 +- x/mint/types/expected_keepers.go | 2 +- x/mint/types/genesis.pb.go | 4 +- x/mint/types/mint.pb.go | 78 ++++----- x/mint/types/params.go | 2 +- x/mint/types/query.pb.go | 4 +- x/ratelimit/client/cli/query.go | 2 +- x/ratelimit/client/cli/tx.go | 2 +- x/ratelimit/client/proposal_handler.go | 2 +- x/ratelimit/genesis.go | 4 +- x/ratelimit/genesis_test.go | 8 +- x/ratelimit/handler.go | 6 +- x/ratelimit/ibc_middleware.go | 2 +- x/ratelimit/keeper/gov/gov.go | 4 +- x/ratelimit/keeper/gov/gov_test.go | 8 +- x/ratelimit/keeper/grpc_query.go | 2 +- x/ratelimit/keeper/grpc_query_test.go | 2 +- x/ratelimit/keeper/hooks.go | 2 +- x/ratelimit/keeper/hooks_test.go | 4 +- x/ratelimit/keeper/keeper.go | 2 +- x/ratelimit/keeper/keeper_test.go | 4 +- x/ratelimit/keeper/packet.go | 6 +- x/ratelimit/keeper/packet_test.go | 4 +- x/ratelimit/keeper/params.go | 2 +- x/ratelimit/keeper/rate_limit.go | 2 +- x/ratelimit/keeper/rate_limit_test.go | 6 +- x/ratelimit/module.go | 6 +- x/ratelimit/types/flow_test.go | 2 +- x/ratelimit/types/genesis.pb.go | 46 +++--- x/ratelimit/types/gov.pb.go | 52 +++--- x/ratelimit/types/gov_add_rate_limit_test.go | 4 +- .../types/gov_remove_rate_limit_test.go | 4 +- .../types/gov_reset_rate_limit_test.go | 4 +- .../types/gov_update_rate_limit_test.go | 4 +- x/ratelimit/types/params.pb.go | 4 +- x/ratelimit/types/query.pb.go | 90 +++++------ x/ratelimit/types/quota_test.go | 2 +- x/ratelimit/types/ratelimit.pb.go | 14 +- x/records/client/cli/query.go | 2 +- x/records/client/cli/query_deposit_record.go | 2 +- .../client/cli/query_deposit_record_test.go | 8 +- .../cli/query_epoch_unbonding_record.go | 2 +- x/records/client/cli/query_lsm_deposits.go | 2 +- x/records/client/cli/query_params.go | 2 +- .../cli/query_user_redemption_record.go | 2 +- .../cli/query_user_redemption_record_test.go | 8 +- x/records/client/cli/tx.go | 2 +- x/records/genesis.go | 4 +- x/records/genesis_test.go | 8 +- x/records/handler.go | 4 +- x/records/keeper/callback_lsm_transfer.go | 6 +- .../keeper/callback_lsm_transfer_test.go | 4 +- x/records/keeper/callback_native_transfer.go | 4 +- .../keeper/callback_native_transfer_test.go | 6 +- x/records/keeper/callbacks.go | 2 +- x/records/keeper/deposit_record.go | 2 +- x/records/keeper/epoch_unbonding_record.go | 4 +- .../keeper/epoch_unbonding_record_test.go | 8 +- x/records/keeper/grpc_query.go | 2 +- x/records/keeper/grpc_query_deposit_record.go | 2 +- .../keeper/grpc_query_deposit_record_test.go | 8 +- .../grpc_query_epoch_unbonding_record.go | 2 +- .../grpc_query_epoch_unbonding_record_test.go | 6 +- x/records/keeper/grpc_query_lsm_deposits.go | 2 +- .../keeper/grpc_query_lsm_deposits_test.go | 2 +- x/records/keeper/grpc_query_params.go | 2 +- x/records/keeper/grpc_query_params_test.go | 4 +- .../grpc_query_user_redemption_record.go | 2 +- ...c_query_user_redemption_record_for_user.go | 2 +- .../grpc_query_user_redemption_record_test.go | 6 +- x/records/keeper/ibc.go | 4 +- x/records/keeper/keeper.go | 4 +- x/records/keeper/keeper_test.go | 2 +- x/records/keeper/lsm_token_deposit.go | 2 +- x/records/keeper/lsm_token_deposit_test.go | 2 +- x/records/keeper/params.go | 2 +- x/records/keeper/params_test.go | 4 +- x/records/keeper/transfer.go | 6 +- x/records/keeper/transfer_test.go | 4 +- x/records/keeper/user_redemption_record.go | 2 +- .../keeper/user_redemption_record_test.go | 8 +- x/records/migrations/v2/convert.go | 4 +- x/records/migrations/v2/convert_test.go | 4 +- x/records/migrations/v2/migrations.go | 4 +- x/records/module.go | 6 +- x/records/module_ibc.go | 2 +- x/records/module_simulation.go | 6 +- x/records/types/callbacks.pb.go | 4 +- x/records/types/genesis.pb.go | 52 +++--- x/records/types/genesis_test.go | 2 +- x/records/types/params.pb.go | 4 +- x/records/types/query.pb.go | 100 ++++++------ x/records/types/records.pb.go | 74 ++++----- x/stakeibc/client/cli/query.go | 2 +- x/stakeibc/client/cli/query_epoch_tracker.go | 2 +- .../client/cli/query_epoch_tracker_test.go | 6 +- x/stakeibc/client/cli/query_host_zone.go | 2 +- x/stakeibc/client/cli/query_module_address.go | 2 +- .../client/cli/query_next_packet_sequence.go | 2 +- x/stakeibc/client/cli/query_params.go | 2 +- x/stakeibc/client/cli/query_register_ica.go | 2 +- x/stakeibc/client/cli/query_validator.go | 2 +- x/stakeibc/client/cli/tx.go | 2 +- x/stakeibc/client/cli/tx_add_validators.go | 2 +- .../client/cli/tx_add_validators_proposal.go | 2 +- .../client/cli/tx_calibrate_delegation.go | 2 +- .../client/cli/tx_change_validator_weight.go | 2 +- .../client/cli/tx_claim_undelegated_tokens.go | 2 +- x/stakeibc/client/cli/tx_clear_balance.go | 2 +- x/stakeibc/client/cli/tx_delete_validator.go | 2 +- x/stakeibc/client/cli/tx_liquid_stake.go | 2 +- x/stakeibc/client/cli/tx_lsm_liquid_stake.go | 2 +- .../client/cli/tx_rebalance_validators.go | 2 +- x/stakeibc/client/cli/tx_redeem_stake.go | 2 +- .../client/cli/tx_register_host_zone.go | 2 +- .../cli/tx_restore_interchain_account.go | 2 +- x/stakeibc/client/cli/tx_resume_host_zone.go | 2 +- .../client/cli/tx_toggle_lsm_proposal.go | 2 +- x/stakeibc/client/cli/tx_undelegate_host.go | 2 +- x/stakeibc/client/cli/tx_update_delegation.go | 2 +- .../tx_update_inner_redemption_rate_bounds.go | 2 +- x/stakeibc/client/proposal_handler.go | 2 +- x/stakeibc/genesis.go | 4 +- x/stakeibc/genesis_test.go | 8 +- x/stakeibc/handler.go | 4 +- x/stakeibc/ibc_middleware.go | 4 +- x/stakeibc/keeper/abci.go | 2 +- x/stakeibc/keeper/consumer.go | 2 +- x/stakeibc/keeper/consumer_test.go | 2 +- x/stakeibc/keeper/deposit_records.go | 6 +- x/stakeibc/keeper/deposit_records_test.go | 8 +- .../keeper/epoch_elapsed_shares_test.go | 4 +- x/stakeibc/keeper/epoch_tracker.go | 2 +- x/stakeibc/keeper/epoch_tracker_test.go | 8 +- x/stakeibc/keeper/events.go | 4 +- x/stakeibc/keeper/gov.go | 2 +- x/stakeibc/keeper/grpc_query.go | 2 +- .../keeper/grpc_query_address_unbondings.go | 4 +- x/stakeibc/keeper/grpc_query_epoch_tracker.go | 2 +- .../keeper/grpc_query_epoch_tracker_test.go | 6 +- x/stakeibc/keeper/grpc_query_host_zone.go | 2 +- .../keeper/grpc_query_host_zone_test.go | 6 +- .../keeper/grpc_query_module_address.go | 2 +- .../keeper/grpc_query_next_packet_sequence.go | 2 +- .../grpc_query_next_packet_sequence_test.go | 2 +- x/stakeibc/keeper/grpc_query_params.go | 2 +- x/stakeibc/keeper/grpc_query_params_test.go | 4 +- x/stakeibc/keeper/grpc_query_register_ica.go | 2 +- x/stakeibc/keeper/grpc_query_validator.go | 2 +- .../keeper/grpc_query_validator_test.go | 6 +- x/stakeibc/keeper/hooks.go | 10 +- x/stakeibc/keeper/host_zone.go | 4 +- x/stakeibc/keeper/host_zone_test.go | 8 +- x/stakeibc/keeper/icacallbacks.go | 2 +- x/stakeibc/keeper/icacallbacks_claim.go | 8 +- x/stakeibc/keeper/icacallbacks_claim_test.go | 6 +- x/stakeibc/keeper/icacallbacks_delegate.go | 8 +- .../keeper/icacallbacks_delegate_test.go | 6 +- x/stakeibc/keeper/icacallbacks_detokenize.go | 8 +- .../keeper/icacallbacks_detokenize_test.go | 8 +- x/stakeibc/keeper/icacallbacks_rebalance.go | 6 +- .../keeper/icacallbacks_rebalance_test.go | 6 +- x/stakeibc/keeper/icacallbacks_redemption.go | 8 +- .../keeper/icacallbacks_redemption_test.go | 6 +- x/stakeibc/keeper/icacallbacks_reinvest.go | 12 +- .../keeper/icacallbacks_reinvest_test.go | 16 +- x/stakeibc/keeper/icacallbacks_undelegate.go | 8 +- .../keeper/icacallbacks_undelegate_test.go | 8 +- x/stakeibc/keeper/icqcallbacks.go | 2 +- .../icqcallbacks_callibrate_delegation.go | 6 +- .../keeper/icqcallbacks_delegator_shares.go | 6 +- .../icqcallbacks_delegator_shares_test.go | 6 +- x/stakeibc/keeper/icqcallbacks_fee_balance.go | 10 +- .../keeper/icqcallbacks_fee_balance_test.go | 8 +- .../icqcallbacks_validator_exchange_rate.go | 6 +- ...qcallbacks_validator_exchange_rate_test.go | 8 +- .../keeper/icqcallbacks_withdrawal_balance.go | 8 +- .../icqcallbacks_withdrawal_balance_test.go | 10 +- x/stakeibc/keeper/invariants.go | 2 +- x/stakeibc/keeper/keeper.go | 10 +- x/stakeibc/keeper/keeper_test.go | 6 +- x/stakeibc/keeper/lsm.go | 4 +- x/stakeibc/keeper/lsm_test.go | 6 +- x/stakeibc/keeper/msg_server.go | 2 +- .../keeper/msg_server_add_validators.go | 2 +- .../keeper/msg_server_add_validators_test.go | 2 +- .../keeper/msg_server_calibrate_delegation.go | 2 +- .../msg_server_change_validator_weight.go | 2 +- .../msg_server_claim_undelegated_tokens.go | 6 +- ...sg_server_claim_undelegated_tokens_test.go | 8 +- x/stakeibc/keeper/msg_server_clear_balance.go | 2 +- .../keeper/msg_server_clear_balance_test.go | 4 +- .../keeper/msg_server_delete_validator.go | 2 +- .../msg_server_delete_validator_test.go | 2 +- x/stakeibc/keeper/msg_server_liquid_stake.go | 4 +- .../keeper/msg_server_liquid_stake_test.go | 6 +- .../keeper/msg_server_lsm_liquid_stake.go | 6 +- .../msg_server_lsm_liquid_stake_test.go | 8 +- .../keeper/msg_server_rebalance_validators.go | 2 +- x/stakeibc/keeper/msg_server_redeem_stake.go | 6 +- .../keeper/msg_server_redeem_stake_test.go | 6 +- .../keeper/msg_server_register_host_zone.go | 8 +- .../msg_server_register_host_zone_test.go | 8 +- .../msg_server_restore_interchain_account.go | 4 +- ..._server_restore_interchain_account_test.go | 4 +- .../keeper/msg_server_resume_host_zone.go | 2 +- .../msg_server_resume_host_zone_test.go | 2 +- x/stakeibc/keeper/msg_server_submit_tx.go | 12 +- ...ver_update_inner_redemption_rate_bounds.go | 2 +- ...pdate_inner_redemption_rate_bounds_test.go | 2 +- ...erver_update_validator_shares_exch_rate.go | 2 +- x/stakeibc/keeper/msg_undelegate_host.go | 2 +- x/stakeibc/keeper/params.go | 2 +- x/stakeibc/keeper/params_test.go | 4 +- x/stakeibc/keeper/reward_allocation.go | 2 +- x/stakeibc/keeper/reward_allocation_test.go | 6 +- x/stakeibc/keeper/unbonding_records.go | 6 +- .../keeper/unbonding_records_cleanup_test.go | 4 +- ...ords_get_host_zone_unbondings_msgs_test.go | 8 +- ...ng_records_initiate_all_unbondings_test.go | 4 +- ...ding_records_sweep_unbonded_tokens_test.go | 6 +- x/stakeibc/keeper/undelegate_host.go | 4 +- x/stakeibc/keeper/undelegate_host_test.go | 6 +- .../keeper/update_redemption_rates_test.go | 6 +- .../update_validator_shares_exch_rate_test.go | 2 +- x/stakeibc/keeper/validator_selection.go | 6 +- x/stakeibc/keeper/validator_selection_test.go | 6 +- x/stakeibc/migrations/v2/convert.go | 4 +- x/stakeibc/migrations/v2/convert_test.go | 4 +- x/stakeibc/migrations/v2/migrations.go | 4 +- x/stakeibc/migrations/v3/convert.go | 4 +- x/stakeibc/migrations/v3/convert_test.go | 4 +- x/stakeibc/migrations/v3/migrations.go | 4 +- x/stakeibc/module.go | 6 +- x/stakeibc/module_simulation.go | 6 +- x/stakeibc/simulation/add_validator.go | 4 +- .../simulation/change_validator_weight.go | 4 +- .../simulation/claim_undelegated_tokens.go | 4 +- x/stakeibc/simulation/delete_validator.go | 4 +- x/stakeibc/simulation/liquid_stake.go | 4 +- x/stakeibc/simulation/rebalance_validators.go | 4 +- .../simulation/restore_interchain_account.go | 4 +- x/stakeibc/simulation/update_delegation.go | 4 +- x/stakeibc/types/address_unbonding.pb.go | 4 +- x/stakeibc/types/callbacks.pb.go | 106 ++++++------ x/stakeibc/types/epoch_tracker.pb.go | 4 +- x/stakeibc/types/expected_keepers.go | 2 +- x/stakeibc/types/genesis.pb.go | 40 ++--- x/stakeibc/types/genesis_test.go | 2 +- x/stakeibc/types/gov.pb.go | 4 +- x/stakeibc/types/host_zone.pb.go | 4 +- x/stakeibc/types/host_zone_test.go | 2 +- x/stakeibc/types/ica_account.pb.go | 6 +- x/stakeibc/types/lsm_tx.pb.go | 6 +- x/stakeibc/types/message_add_validators.go | 2 +- .../types/message_add_validators_test.go | 4 +- .../types/message_calibrate_delegation.go | 2 +- .../types/message_change_validator_weight.go | 2 +- .../message_change_validator_weight_test.go | 2 +- .../types/message_claim_undelegated_tokens.go | 2 +- .../message_claim_undelegated_tokens_test.go | 2 +- x/stakeibc/types/message_clear_balance.go | 2 +- x/stakeibc/types/message_delete_validator.go | 2 +- .../types/message_delete_validator_test.go | 2 +- x/stakeibc/types/message_liquid_stake_test.go | 2 +- .../types/message_lsm_liquid_stake_test.go | 4 +- .../types/message_rebalance_validators.go | 2 +- .../message_rebalance_validators_test.go | 4 +- x/stakeibc/types/message_redeem_stake_test.go | 2 +- .../types/message_register_host_zone.go | 2 +- ...message_restore_interchain_account_test.go | 2 +- x/stakeibc/types/message_resume_host_zone.go | 2 +- x/stakeibc/types/message_undelegate_host.go | 2 +- ...age_update_inner_redemption_rate_bounds.go | 2 +- x/stakeibc/types/packet.pb.go | 4 +- x/stakeibc/types/params.pb.go | 4 +- x/stakeibc/types/query.pb.go | 10 +- x/stakeibc/types/tx.pb.go | 4 +- x/stakeibc/types/validator.pb.go | 58 +++---- 565 files changed, 1920 insertions(+), 1919 deletions(-) diff --git a/app/app.go b/app/app.go index 1b2a0ef8fe..de1a2494b8 100644 --- a/app/app.go +++ b/app/app.go @@ -13,7 +13,7 @@ import ( nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" @@ -66,12 +66,12 @@ import ( evmosvestingkeeper "github.com/evmos/vesting/x/vesting/keeper" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - claimvesting "github.com/Stride-Labs/stride/v15/x/claim/vesting" - claimvestingtypes "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + claimvesting "github.com/Stride-Labs/stride/v16/x/claim/vesting" + claimvestingtypes "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" - "github.com/Stride-Labs/stride/v15/x/mint" - mintkeeper "github.com/Stride-Labs/stride/v15/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/mint" + mintkeeper "github.com/Stride-Labs/stride/v16/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" dbm "github.com/cometbft/cometbft-db" abci "github.com/cometbft/cometbft/abci/types" @@ -118,38 +118,38 @@ import ( // monitoringp "github.com/tendermint/spn/x/monitoringp" // monitoringpkeeper "github.com/tendermint/spn/x/monitoringp/keeper" - epochsmodule "github.com/Stride-Labs/stride/v15/x/epochs" - epochsmodulekeeper "github.com/Stride-Labs/stride/v15/x/epochs/keeper" - epochsmoduletypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - - "github.com/Stride-Labs/stride/v15/x/interchainquery" - interchainquerykeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - interchainquerytypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - - "github.com/Stride-Labs/stride/v15/x/autopilot" - autopilotkeeper "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" - - "github.com/Stride-Labs/stride/v15/x/claim" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - icacallbacksmodule "github.com/Stride-Labs/stride/v15/x/icacallbacks" - icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - icacallbacksmoduletypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - icaoracle "github.com/Stride-Labs/stride/v15/x/icaoracle" - icaoraclekeeper "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" - icaoracletypes "github.com/Stride-Labs/stride/v15/x/icaoracle/types" - ratelimitmodule "github.com/Stride-Labs/stride/v15/x/ratelimit" - ratelimitclient "github.com/Stride-Labs/stride/v15/x/ratelimit/client" - ratelimitmodulekeeper "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - ratelimitmoduletypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" - recordsmodule "github.com/Stride-Labs/stride/v15/x/records" - recordsmodulekeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" - recordsmoduletypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibcmodule "github.com/Stride-Labs/stride/v15/x/stakeibc" - stakeibcclient "github.com/Stride-Labs/stride/v15/x/stakeibc/client" - stakeibcmodulekeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibcmoduletypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochsmodule "github.com/Stride-Labs/stride/v16/x/epochs" + epochsmodulekeeper "github.com/Stride-Labs/stride/v16/x/epochs/keeper" + epochsmoduletypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + + "github.com/Stride-Labs/stride/v16/x/interchainquery" + interchainquerykeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + interchainquerytypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + + "github.com/Stride-Labs/stride/v16/x/autopilot" + autopilotkeeper "github.com/Stride-Labs/stride/v16/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v16/x/autopilot/types" + + "github.com/Stride-Labs/stride/v16/x/claim" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + icacallbacksmodule "github.com/Stride-Labs/stride/v16/x/icacallbacks" + icacallbacksmodulekeeper "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + icacallbacksmoduletypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + icaoracle "github.com/Stride-Labs/stride/v16/x/icaoracle" + icaoraclekeeper "github.com/Stride-Labs/stride/v16/x/icaoracle/keeper" + icaoracletypes "github.com/Stride-Labs/stride/v16/x/icaoracle/types" + ratelimitmodule "github.com/Stride-Labs/stride/v16/x/ratelimit" + ratelimitclient "github.com/Stride-Labs/stride/v16/x/ratelimit/client" + ratelimitmodulekeeper "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + ratelimitmoduletypes "github.com/Stride-Labs/stride/v16/x/ratelimit/types" + recordsmodule "github.com/Stride-Labs/stride/v16/x/records" + recordsmodulekeeper "github.com/Stride-Labs/stride/v16/x/records/keeper" + recordsmoduletypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibcmodule "github.com/Stride-Labs/stride/v16/x/stakeibc" + stakeibcclient "github.com/Stride-Labs/stride/v16/x/stakeibc/client" + stakeibcmodulekeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibcmoduletypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ccvconsumer "github.com/cosmos/interchain-security/v3/x/ccv/consumer" ccvconsumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper" diff --git a/app/apptesting/test_helpers.go b/app/apptesting/test_helpers.go index 5f31a728a5..6ad11e6f32 100644 --- a/app/apptesting/test_helpers.go +++ b/app/apptesting/test_helpers.go @@ -32,8 +32,8 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/utils" ) var ( diff --git a/app/proposals_whitelisting.go b/app/proposals_whitelisting.go index be1928072c..94bcac3109 100644 --- a/app/proposals_whitelisting.go +++ b/app/proposals_whitelisting.go @@ -17,9 +17,9 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" ccvgov "github.com/cosmos/interchain-security/v3/x/ccv/democracy/governance" - autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + autopilottypes "github.com/Stride-Labs/stride/v16/x/autopilot/types" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var WhiteListModule = map[string]struct{}{ diff --git a/app/test_setup.go b/app/test_setup.go index 1a31f750cc..d056fc67b5 100644 --- a/app/test_setup.go +++ b/app/test_setup.go @@ -21,9 +21,9 @@ import ( ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing" consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - testutil "github.com/Stride-Labs/stride/v15/testutil" + testutil "github.com/Stride-Labs/stride/v16/testutil" - cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v16/cmd/strided/config" ) const Bech32Prefix = "stride" diff --git a/app/upgrades.go b/app/upgrades.go index 591b9c44ec..ecc9c3472c 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -13,28 +13,28 @@ import ( consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - v10 "github.com/Stride-Labs/stride/v15/app/upgrades/v10" - v11 "github.com/Stride-Labs/stride/v15/app/upgrades/v11" - v12 "github.com/Stride-Labs/stride/v15/app/upgrades/v12" - v13 "github.com/Stride-Labs/stride/v15/app/upgrades/v13" - v14 "github.com/Stride-Labs/stride/v15/app/upgrades/v14" - v15 "github.com/Stride-Labs/stride/v15/app/upgrades/v15" - v16 "github.com/Stride-Labs/stride/v15/app/upgrades/v16" - v2 "github.com/Stride-Labs/stride/v15/app/upgrades/v2" - v3 "github.com/Stride-Labs/stride/v15/app/upgrades/v3" - v4 "github.com/Stride-Labs/stride/v15/app/upgrades/v4" - v5 "github.com/Stride-Labs/stride/v15/app/upgrades/v5" - v6 "github.com/Stride-Labs/stride/v15/app/upgrades/v6" - v7 "github.com/Stride-Labs/stride/v15/app/upgrades/v7" - v8 "github.com/Stride-Labs/stride/v15/app/upgrades/v8" - v9 "github.com/Stride-Labs/stride/v15/app/upgrades/v9" - autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - icaoracletypes "github.com/Stride-Labs/stride/v15/x/icaoracle/types" - ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + v10 "github.com/Stride-Labs/stride/v16/app/upgrades/v10" + v11 "github.com/Stride-Labs/stride/v16/app/upgrades/v11" + v12 "github.com/Stride-Labs/stride/v16/app/upgrades/v12" + v13 "github.com/Stride-Labs/stride/v16/app/upgrades/v13" + v14 "github.com/Stride-Labs/stride/v16/app/upgrades/v14" + v15 "github.com/Stride-Labs/stride/v16/app/upgrades/v15" + v16 "github.com/Stride-Labs/stride/v16/app/upgrades/v16" + v2 "github.com/Stride-Labs/stride/v16/app/upgrades/v2" + v3 "github.com/Stride-Labs/stride/v16/app/upgrades/v3" + v4 "github.com/Stride-Labs/stride/v16/app/upgrades/v4" + v5 "github.com/Stride-Labs/stride/v16/app/upgrades/v5" + v6 "github.com/Stride-Labs/stride/v16/app/upgrades/v6" + v7 "github.com/Stride-Labs/stride/v16/app/upgrades/v7" + v8 "github.com/Stride-Labs/stride/v16/app/upgrades/v8" + v9 "github.com/Stride-Labs/stride/v16/app/upgrades/v9" + autopilottypes "github.com/Stride-Labs/stride/v16/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + icaoracletypes "github.com/Stride-Labs/stride/v16/x/icaoracle/types" + ratelimittypes "github.com/Stride-Labs/stride/v16/x/ratelimit/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (app *StrideApp) setupUpgradeHandlers(appOpts servertypes.AppOptions) { diff --git a/app/upgrades/v10/upgrades.go b/app/upgrades/v10/upgrades.go index 994eda4b93..64ba882dc4 100644 --- a/app/upgrades/v10/upgrades.go +++ b/app/upgrades/v10/upgrades.go @@ -25,18 +25,18 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibctmmigrations "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint/migrations" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - mintkeeper "github.com/Stride-Labs/stride/v15/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - ratelimitkeeper "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - ratelimitgov "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper/gov" - ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + mintkeeper "github.com/Stride-Labs/stride/v16/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + ratelimitkeeper "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + ratelimitgov "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper/gov" + ratelimittypes "github.com/Stride-Labs/stride/v16/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v16/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck diff --git a/app/upgrades/v10/upgrades_test.go b/app/upgrades/v10/upgrades_test.go index ab182c64aa..6d37bedf5e 100644 --- a/app/upgrades/v10/upgrades_test.go +++ b/app/upgrades/v10/upgrades_test.go @@ -16,22 +16,22 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/app/apptesting" - v10 "github.com/Stride-Labs/stride/v15/app/upgrades/v10" - "github.com/Stride-Labs/stride/v15/utils" - - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" - recordskeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + v10 "github.com/Stride-Labs/stride/v16/app/upgrades/v10" + "github.com/Stride-Labs/stride/v16/utils" + + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + ratelimittypes "github.com/Stride-Labs/stride/v16/x/ratelimit/types" + recordskeeper "github.com/Stride-Labs/stride/v16/x/records/keeper" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" cosmosproto "github.com/cosmos/gogoproto/proto" deprecatedproto "github.com/golang/protobuf/proto" //nolint:staticcheck - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) var initialRateLimitChannelValue = sdk.NewInt(1_000_000) diff --git a/app/upgrades/v13/upgrades.go b/app/upgrades/v13/upgrades.go index 115cb64d31..4ca984bd0f 100644 --- a/app/upgrades/v13/upgrades.go +++ b/app/upgrades/v13/upgrades.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v13/upgrades_test.go b/app/upgrades/v13/upgrades_test.go index 1e824ec964..d56cca5568 100644 --- a/app/upgrades/v13/upgrades_test.go +++ b/app/upgrades/v13/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v16/app/apptesting" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v14/upgrades.go b/app/upgrades/v14/upgrades.go index ef06d87d03..759a23b795 100644 --- a/app/upgrades/v14/upgrades.go +++ b/app/upgrades/v14/upgrades.go @@ -23,13 +23,13 @@ import ( "github.com/evmos/vesting/x/vesting/types" evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" - "github.com/Stride-Labs/stride/v15/utils" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + icqkeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v14/upgrades_test.go b/app/upgrades/v14/upgrades_test.go index 2ad6615857..19cc621d09 100644 --- a/app/upgrades/v14/upgrades_test.go +++ b/app/upgrades/v14/upgrades_test.go @@ -13,13 +13,13 @@ import ( evmosvestingtypes "github.com/evmos/vesting/x/vesting/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/app/apptesting" - v14 "github.com/Stride-Labs/stride/v15/app/upgrades/v14" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - interchainquerytypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/app/apptesting" + v14 "github.com/Stride-Labs/stride/v16/app/upgrades/v14" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + interchainquerytypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v15/upgrades.go b/app/upgrades/v15/upgrades.go index e6be6a38fb..8624953539 100644 --- a/app/upgrades/v15/upgrades.go +++ b/app/upgrades/v15/upgrades.go @@ -5,8 +5,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + icqkeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" ) var ( diff --git a/app/upgrades/v15/upgrades_test.go b/app/upgrades/v15/upgrades_test.go index 6de1186d3c..f2d3731de2 100644 --- a/app/upgrades/v15/upgrades_test.go +++ b/app/upgrades/v15/upgrades_test.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/app/apptesting" - v15 "github.com/Stride-Labs/stride/v15/app/upgrades/v15" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + v15 "github.com/Stride-Labs/stride/v16/app/upgrades/v15" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v16/upgrades.go b/app/upgrades/v16/upgrades.go index e8df3d8372..4b5aacfae2 100644 --- a/app/upgrades/v16/upgrades.go +++ b/app/upgrades/v16/upgrades.go @@ -5,9 +5,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - ratelimitkeeper "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + ratelimitkeeper "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var ( diff --git a/app/upgrades/v16/upgrades_test.go b/app/upgrades/v16/upgrades_test.go index 2859612f39..2a10d65777 100644 --- a/app/upgrades/v16/upgrades_test.go +++ b/app/upgrades/v16/upgrades_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type UpgradeTestSuite struct { diff --git a/app/upgrades/v3/upgrades.go b/app/upgrades/v3/upgrades.go index fe3982ec18..5978c29519 100644 --- a/app/upgrades/v3/upgrades.go +++ b/app/upgrades/v3/upgrades.go @@ -7,9 +7,9 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" + "github.com/Stride-Labs/stride/v16/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v3/upgrades_test.go b/app/upgrades/v3/upgrades_test.go index 2c544edea0..e97faac868 100644 --- a/app/upgrades/v3/upgrades_test.go +++ b/app/upgrades/v3/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v16/app/apptesting" ) var ( diff --git a/app/upgrades/v4/upgrades_test.go b/app/upgrades/v4/upgrades_test.go index a3ebe67ba9..6d7fa2a01a 100644 --- a/app/upgrades/v4/upgrades_test.go +++ b/app/upgrades/v4/upgrades_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v16/app/apptesting" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v5/upgrades.go b/app/upgrades/v5/upgrades.go index 4b93546eb0..6a380e06c3 100644 --- a/app/upgrades/v5/upgrades.go +++ b/app/upgrades/v5/upgrades.go @@ -12,16 +12,16 @@ import ( authz "github.com/cosmos/cosmos-sdk/x/authz" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimmigration "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - icacallbacksmigration "github.com/Stride-Labs/stride/v15/x/icacallbacks/migrations/v2" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - interchainquerykeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - recordsmigration "github.com/Stride-Labs/stride/v15/x/records/migrations/v2" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibcmigration "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + claimmigration "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + icacallbacksmigration "github.com/Stride-Labs/stride/v16/x/icacallbacks/migrations/v2" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + interchainquerykeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + recordsmigration "github.com/Stride-Labs/stride/v16/x/records/migrations/v2" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibcmigration "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v5/upgrades_test.go b/app/upgrades/v5/upgrades_test.go index fadf48352c..02ce3c0e9f 100644 --- a/app/upgrades/v5/upgrades_test.go +++ b/app/upgrades/v5/upgrades_test.go @@ -12,21 +12,21 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - - "github.com/Stride-Labs/stride/v15/app/apptesting" - upgradev5 "github.com/Stride-Labs/stride/v15/app/upgrades/v5" - oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - recordkeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" - oldrecordtypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" - newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app" + + "github.com/Stride-Labs/stride/v16/app/apptesting" + upgradev5 "github.com/Stride-Labs/stride/v16/app/upgrades/v5" + oldclaimtypes "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + recordkeeper "github.com/Stride-Labs/stride/v16/x/records/keeper" + oldrecordtypes "github.com/Stride-Labs/stride/v16/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" + newstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v6/upgrades.go b/app/upgrades/v6/upgrades.go index b528b60d0c..685f7ca961 100644 --- a/app/upgrades/v6/upgrades.go +++ b/app/upgrades/v6/upgrades.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" ) // Note: ensure these values are properly set before running upgrade diff --git a/app/upgrades/v6/upgrades_test.go b/app/upgrades/v6/upgrades_test.go index 7ea95897c7..b683a415b6 100644 --- a/app/upgrades/v6/upgrades_test.go +++ b/app/upgrades/v6/upgrades_test.go @@ -10,11 +10,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v16/app" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) const dummyUpgradeHeight = 5 diff --git a/app/upgrades/v7/upgrades.go b/app/upgrades/v7/upgrades.go index 4218e5a08a..fea2c3cae5 100644 --- a/app/upgrades/v7/upgrades.go +++ b/app/upgrades/v7/upgrades.go @@ -23,14 +23,14 @@ import ( icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v15/utils" - epochskeeper "github.com/Stride-Labs/stride/v15/x/epochs/keeper" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - mintkeeper "github.com/Stride-Labs/stride/v15/x/mint/keeper" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + epochskeeper "github.com/Stride-Labs/stride/v16/x/epochs/keeper" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + mintkeeper "github.com/Stride-Labs/stride/v16/x/mint/keeper" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + newstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // CreateUpgradeHandler creates an SDK upgrade handler for v7 diff --git a/app/upgrades/v7/upgrades_test.go b/app/upgrades/v7/upgrades_test.go index f831e09bbd..5620e7e790 100644 --- a/app/upgrades/v7/upgrades_test.go +++ b/app/upgrades/v7/upgrades_test.go @@ -9,17 +9,17 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/app/apptesting" - v7 "github.com/Stride-Labs/stride/v15/app/upgrades/v7" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/app/apptesting" + v7 "github.com/Stride-Labs/stride/v16/app/upgrades/v7" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + newstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" ) var ( diff --git a/app/upgrades/v8/upgrades.go b/app/upgrades/v8/upgrades.go index 88bcebdb17..e2f9e60d56 100644 --- a/app/upgrades/v8/upgrades.go +++ b/app/upgrades/v8/upgrades.go @@ -12,12 +12,12 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/Stride-Labs/stride/v15/utils" - autopilotkeeper "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" - autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/utils" + autopilotkeeper "github.com/Stride-Labs/stride/v16/x/autopilot/keeper" + autopilottypes "github.com/Stride-Labs/stride/v16/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" + "github.com/Stride-Labs/stride/v16/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) var ( diff --git a/app/upgrades/v8/upgrades_test.go b/app/upgrades/v8/upgrades_test.go index 872b9f92f1..b9785b2b19 100644 --- a/app/upgrades/v8/upgrades_test.go +++ b/app/upgrades/v8/upgrades_test.go @@ -9,11 +9,11 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - v8 "github.com/Stride-Labs/stride/v15/app/upgrades/v8" - autopilottypes "github.com/Stride-Labs/stride/v15/x/autopilot/types" - "github.com/Stride-Labs/stride/v15/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + v8 "github.com/Stride-Labs/stride/v16/app/upgrades/v8" + autopilottypes "github.com/Stride-Labs/stride/v16/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) var ( diff --git a/app/upgrades/v9/upgrades.go b/app/upgrades/v9/upgrades.go index ed51bb37d1..0b5a6eed10 100644 --- a/app/upgrades/v9/upgrades.go +++ b/app/upgrades/v9/upgrades.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" ) // CreateUpgradeHandler creates an SDK upgrade handler for v29 diff --git a/app/upgrades/v9/upgrades_test.go b/app/upgrades/v9/upgrades_test.go index ef4077cb7c..70162b0668 100644 --- a/app/upgrades/v9/upgrades_test.go +++ b/app/upgrades/v9/upgrades_test.go @@ -6,18 +6,18 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/app/apptesting" - v9 "github.com/Stride-Labs/stride/v15/app/upgrades/v9" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/app/apptesting" + v9 "github.com/Stride-Labs/stride/v16/app/upgrades/v9" + "github.com/Stride-Labs/stride/v16/utils" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" // This isn't the exact type host zone schema as the one that's will be in the store // before the upgrade, but the only thing that matters, for the sake of the test, // is that it doesn't have min/max redemption rate as attributes - "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" - oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" + "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2/types" + oldclaimtypes "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2/types" ) type UpgradeTestSuite struct { diff --git a/cmd/consumer.go b/cmd/consumer.go index 723066f09a..fe7845cde3 100644 --- a/cmd/consumer.go +++ b/cmd/consumer.go @@ -18,7 +18,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/testutil" + "github.com/Stride-Labs/stride/v16/testutil" ) func AddConsumerSectionCmd(defaultNodeHome string) *cobra.Command { diff --git a/cmd/strided/main.go b/cmd/strided/main.go index 2962a335a6..4a0a1427d3 100644 --- a/cmd/strided/main.go +++ b/cmd/strided/main.go @@ -5,10 +5,10 @@ import ( svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/cmd" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/cmd" - cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" + cmdcfg "github.com/Stride-Labs/stride/v16/cmd/strided/config" ) func main() { diff --git a/cmd/strided/root.go b/cmd/strided/root.go index 1467a80fc9..e5b52710cf 100644 --- a/cmd/strided/root.go +++ b/cmd/strided/root.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/snapshots" "gopkg.in/yaml.v2" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" cometbftdb "github.com/cometbft/cometbft-db" "github.com/cometbft/cometbft/libs/cli" @@ -47,7 +47,7 @@ import ( genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/Stride-Labs/stride/v15/app" + "github.com/Stride-Labs/stride/v16/app" ) var ChainID string diff --git a/go.mod b/go.mod index 5781b497f7..e143d44935 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Stride-Labs/stride/v15 +module github.com/Stride-Labs/stride/v16 go 1.19 diff --git a/proto/cosmos/staking/v1beta1/lsm_tx.proto b/proto/cosmos/staking/v1beta1/lsm_tx.proto index dd37379909..239a11ebf6 100644 --- a/proto/cosmos/staking/v1beta1/lsm_tx.proto +++ b/proto/cosmos/staking/v1beta1/lsm_tx.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; // Given SDK version conflicts between gaia with LSM and Stride, // we can't import the RedeemTokensForShares type diff --git a/proto/cosmwasm/wasm/v1/cosmwasm.proto b/proto/cosmwasm/wasm/v1/cosmwasm.proto index b683cefc75..9e6c35cd8b 100644 --- a/proto/cosmwasm/wasm/v1/cosmwasm.proto +++ b/proto/cosmwasm/wasm/v1/cosmwasm.proto @@ -4,7 +4,7 @@ package cosmwasm.wasm.v1; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // MsgExecuteContract submits the given message data to a smart contract message MsgExecuteContract { diff --git a/proto/stride/autopilot/genesis.proto b/proto/stride/autopilot/genesis.proto index 5bc9695ce0..4f4570aad2 100644 --- a/proto/stride/autopilot/genesis.proto +++ b/proto/stride/autopilot/genesis.proto @@ -4,7 +4,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/autopilot/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/autopilot/params.proto b/proto/stride/autopilot/params.proto index c18c8fde1c..e48f7792ba 100644 --- a/proto/stride/autopilot/params.proto +++ b/proto/stride/autopilot/params.proto @@ -3,7 +3,7 @@ package stride.autopilot; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/autopilot/types"; // Params defines the parameters for the module. // next id: 1 diff --git a/proto/stride/autopilot/query.proto b/proto/stride/autopilot/query.proto index 52b8a06b90..b9120d6d90 100644 --- a/proto/stride/autopilot/query.proto +++ b/proto/stride/autopilot/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/autopilot/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/autopilot/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/autopilot/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/claim.proto b/proto/stride/claim/claim.proto index f9aeb5515f..56aeeb8bcf 100644 --- a/proto/stride/claim/claim.proto +++ b/proto/stride/claim/claim.proto @@ -3,7 +3,7 @@ package stride.claim; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/types"; enum Action { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/claim/genesis.proto b/proto/stride/claim/genesis.proto index 62583049b9..06f9aca4d6 100644 --- a/proto/stride/claim/genesis.proto +++ b/proto/stride/claim/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/claim/claim.proto"; import "stride/claim/params.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/types"; // GenesisState defines the claim module's genesis state. message GenesisState { diff --git a/proto/stride/claim/params.proto b/proto/stride/claim/params.proto index 33e832f059..2f49747995 100644 --- a/proto/stride/claim/params.proto +++ b/proto/stride/claim/params.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/types"; // Params defines the claim module's parameters. message Params { repeated Airdrop airdrops = 1; } diff --git a/proto/stride/claim/query.proto b/proto/stride/claim/query.proto index f327a22bf5..f89258d8e5 100644 --- a/proto/stride/claim/query.proto +++ b/proto/stride/claim/query.proto @@ -9,7 +9,7 @@ import "stride/claim/params.proto"; import "stride/vesting/vesting.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/claim/tx.proto b/proto/stride/claim/tx.proto index 05dbbd18bc..9c776fc20e 100644 --- a/proto/stride/claim/tx.proto +++ b/proto/stride/claim/tx.proto @@ -4,7 +4,7 @@ package stride.claim; import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/epochs/genesis.proto b/proto/stride/epochs/genesis.proto index 9829ebd0ca..42188adb3d 100755 --- a/proto/stride/epochs/genesis.proto +++ b/proto/stride/epochs/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/epochs/types"; message EpochInfo { string identifier = 1; diff --git a/proto/stride/epochs/query.proto b/proto/stride/epochs/query.proto index 600bd6b0db..22526b7f04 100644 --- a/proto/stride/epochs/query.proto +++ b/proto/stride/epochs/query.proto @@ -6,7 +6,7 @@ import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; import "stride/epochs/genesis.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/epochs/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/epochs/types"; // Query defines the gRPC querier service. service Query { @@ -51,7 +51,7 @@ message QueryEpochInfoResponse { // import "epochs/params.proto"; // // this line is used by starport scaffolding # 1 -// option go_package = "github.com/Stride-Labs/stride/v15/x/epochs/types"; +// option go_package = "github.com/Stride-Labs/stride/v16/x/epochs/types"; // // Query defines the gRPC querier service. // service Query { diff --git a/proto/stride/icacallbacks/callback_data.proto b/proto/stride/icacallbacks/callback_data.proto index bb6919c6b6..6efe8fb358 100755 --- a/proto/stride/icacallbacks/callback_data.proto +++ b/proto/stride/icacallbacks/callback_data.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icacallbacks; -option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icacallbacks/types"; message CallbackData { string callback_key = 1; diff --git a/proto/stride/icacallbacks/genesis.proto b/proto/stride/icacallbacks/genesis.proto index 71674a441b..09d6f9a55e 100755 --- a/proto/stride/icacallbacks/genesis.proto +++ b/proto/stride/icacallbacks/genesis.proto @@ -6,7 +6,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icacallbacks/types"; // GenesisState defines the icacallbacks module's genesis state. message GenesisState { diff --git a/proto/stride/icacallbacks/packet.proto b/proto/stride/icacallbacks/packet.proto index cb40c226a6..ba9f470a7e 100755 --- a/proto/stride/icacallbacks/packet.proto +++ b/proto/stride/icacallbacks/packet.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icacallbacks/types"; message IcacallbacksPacketData { oneof packet { diff --git a/proto/stride/icacallbacks/params.proto b/proto/stride/icacallbacks/params.proto index 5a731f22bf..7fb8a6b748 100755 --- a/proto/stride/icacallbacks/params.proto +++ b/proto/stride/icacallbacks/params.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icacallbacks/types"; // Params defines the parameters for the module. message Params { option (gogoproto.goproto_stringer) = false; } diff --git a/proto/stride/icacallbacks/query.proto b/proto/stride/icacallbacks/query.proto index 1cd1fef5f0..eb91c33f65 100644 --- a/proto/stride/icacallbacks/query.proto +++ b/proto/stride/icacallbacks/query.proto @@ -8,7 +8,7 @@ import "stride/icacallbacks/params.proto"; import "stride/icacallbacks/callback_data.proto"; // this line is used by starport scaffolding # 1 -option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icacallbacks/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icacallbacks/tx.proto b/proto/stride/icacallbacks/tx.proto index 1cb488d6c9..02b45f254f 100755 --- a/proto/stride/icacallbacks/tx.proto +++ b/proto/stride/icacallbacks/tx.proto @@ -3,7 +3,7 @@ package stride.icacallbacks; // this line is used by starport scaffolding # proto/tx/import -option go_package = "github.com/Stride-Labs/stride/v15/x/icacallbacks/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icacallbacks/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/icaoracle/callbacks.proto b/proto/stride/icaoracle/callbacks.proto index fb99bbfae3..ab01c8a27b 100644 --- a/proto/stride/icaoracle/callbacks.proto +++ b/proto/stride/icaoracle/callbacks.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // Callback data for instantiating an oracle message InstantiateOracleCallback { string oracle_chain_id = 1; } diff --git a/proto/stride/icaoracle/contract.proto b/proto/stride/icaoracle/contract.proto index cecee957ee..5e3c44ee56 100644 --- a/proto/stride/icaoracle/contract.proto +++ b/proto/stride/icaoracle/contract.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.icaoracle; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // InstanitateOracleContract is the contract-specific instantiate message message MsgInstantiateOracleContract { diff --git a/proto/stride/icaoracle/genesis.proto b/proto/stride/icaoracle/genesis.proto index be8e03554d..e149bbc8dc 100644 --- a/proto/stride/icaoracle/genesis.proto +++ b/proto/stride/icaoracle/genesis.proto @@ -4,7 +4,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; import "stride/icaoracle/icaoracle.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // Params defines the icaoracle module parameters. message Params {} diff --git a/proto/stride/icaoracle/icaoracle.proto b/proto/stride/icaoracle/icaoracle.proto index f09ace582c..886eaca5da 100644 --- a/proto/stride/icaoracle/icaoracle.proto +++ b/proto/stride/icaoracle/icaoracle.proto @@ -3,7 +3,7 @@ package stride.icaoracle; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // Oracle structure stores context about the CW oracle sitting a different chain message Oracle { diff --git a/proto/stride/icaoracle/query.proto b/proto/stride/icaoracle/query.proto index 0a3138087e..be7ac9b1f0 100644 --- a/proto/stride/icaoracle/query.proto +++ b/proto/stride/icaoracle/query.proto @@ -5,7 +5,7 @@ import "stride/icaoracle/icaoracle.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/icaoracle/tx.proto b/proto/stride/icaoracle/tx.proto index 5c824e5abc..525dbc5062 100644 --- a/proto/stride/icaoracle/tx.proto +++ b/proto/stride/icaoracle/tx.proto @@ -5,7 +5,7 @@ import "cosmos_proto/cosmos.proto"; import "cosmos/msg/v1/msg.proto"; import "amino/amino.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/icaoracle/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/icaoracle/types"; // Msg defines the Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/genesis.proto b/proto/stride/interchainquery/v1/genesis.proto index 786928b39a..32ae3e9448 100644 --- a/proto/stride/interchainquery/v1/genesis.proto +++ b/proto/stride/interchainquery/v1/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/protobuf/duration.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/interchainquery/types"; enum TimeoutPolicy { REJECT_QUERY_RESPONSE = 0; diff --git a/proto/stride/interchainquery/v1/messages.proto b/proto/stride/interchainquery/v1/messages.proto index a55a1c7e1f..24cad9bbdf 100755 --- a/proto/stride/interchainquery/v1/messages.proto +++ b/proto/stride/interchainquery/v1/messages.proto @@ -6,7 +6,7 @@ import "cosmos_proto/cosmos.proto"; import "google/api/annotations.proto"; import "tendermint/crypto/proof.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/interchainquery/types"; // Msg defines the interchainquery Msg service. service Msg { diff --git a/proto/stride/interchainquery/v1/query.proto b/proto/stride/interchainquery/v1/query.proto index 6251e89ad9..b8eb9d21d3 100644 --- a/proto/stride/interchainquery/v1/query.proto +++ b/proto/stride/interchainquery/v1/query.proto @@ -5,7 +5,7 @@ import "stride/interchainquery/v1/genesis.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/interchainquery/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/interchainquery/types"; service QueryService { rpc PendingQueries(QueryPendingQueriesRequest) diff --git a/proto/stride/mint/v1beta1/genesis.proto b/proto/stride/mint/v1beta1/genesis.proto index 3e4f0d5997..b0a9e38f5a 100755 --- a/proto/stride/mint/v1beta1/genesis.proto +++ b/proto/stride/mint/v1beta1/genesis.proto @@ -4,7 +4,7 @@ package stride.mint.v1beta1; import "gogoproto/gogo.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/mint/types"; // GenesisState defines the mint module's genesis state. message GenesisState { diff --git a/proto/stride/mint/v1beta1/mint.proto b/proto/stride/mint/v1beta1/mint.proto index c8a746f93a..dc062ce5b6 100755 --- a/proto/stride/mint/v1beta1/mint.proto +++ b/proto/stride/mint/v1beta1/mint.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.mint.v1beta1; -option go_package = "github.com/Stride-Labs/stride/v15/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/mint/types"; import "gogoproto/gogo.proto"; diff --git a/proto/stride/mint/v1beta1/query.proto b/proto/stride/mint/v1beta1/query.proto index 6c08d91854..560697bd6c 100755 --- a/proto/stride/mint/v1beta1/query.proto +++ b/proto/stride/mint/v1beta1/query.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "stride/mint/v1beta1/mint.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/mint/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/mint/types"; // Query provides defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/genesis.proto b/proto/stride/ratelimit/genesis.proto index e2ccd5a52b..48a0b2b097 100644 --- a/proto/stride/ratelimit/genesis.proto +++ b/proto/stride/ratelimit/genesis.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "stride/ratelimit/params.proto"; import "stride/ratelimit/ratelimit.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/ratelimit/types"; // GenesisState defines the ratelimit module's genesis state. message GenesisState { diff --git a/proto/stride/ratelimit/gov.proto b/proto/stride/ratelimit/gov.proto index 8eb347d686..e81851df13 100644 --- a/proto/stride/ratelimit/gov.proto +++ b/proto/stride/ratelimit/gov.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/ratelimit/types"; message AddRateLimitProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/ratelimit/params.proto b/proto/stride/ratelimit/params.proto index 1c823a44c2..c209b01ce2 100644 --- a/proto/stride/ratelimit/params.proto +++ b/proto/stride/ratelimit/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.ratelimit; -option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/ratelimit/types"; // Params defines the ratelimit module's parameters. message Params {} diff --git a/proto/stride/ratelimit/query.proto b/proto/stride/ratelimit/query.proto index 7f838d4780..e6425beb17 100644 --- a/proto/stride/ratelimit/query.proto +++ b/proto/stride/ratelimit/query.proto @@ -5,7 +5,7 @@ import "stride/ratelimit/ratelimit.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/ratelimit/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/ratelimit/ratelimit.proto b/proto/stride/ratelimit/ratelimit.proto index 6ea0710c26..77430eadbd 100644 --- a/proto/stride/ratelimit/ratelimit.proto +++ b/proto/stride/ratelimit/ratelimit.proto @@ -3,7 +3,7 @@ package stride.ratelimit; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/ratelimit/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/ratelimit/types"; enum PacketDirection { option (gogoproto.goproto_enum_prefix) = false; diff --git a/proto/stride/records/callbacks.proto b/proto/stride/records/callbacks.proto index f7d0954399..8c70a33f5c 100644 --- a/proto/stride/records/callbacks.proto +++ b/proto/stride/records/callbacks.proto @@ -3,7 +3,7 @@ package stride.records; import "stride/records/records.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/records/types"; message TransferCallback { uint64 deposit_record_id = 1; } diff --git a/proto/stride/records/genesis.proto b/proto/stride/records/genesis.proto index 538745788a..05731d8c1e 100644 --- a/proto/stride/records/genesis.proto +++ b/proto/stride/records/genesis.proto @@ -5,7 +5,7 @@ import "stride/records/params.proto"; import "stride/records/records.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/records/types"; // GenesisState defines the records module's genesis state. message GenesisState { diff --git a/proto/stride/records/params.proto b/proto/stride/records/params.proto index f557291f0e..db9d06b65e 100644 --- a/proto/stride/records/params.proto +++ b/proto/stride/records/params.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.records; -option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/records/types"; // Params defines the parameters for the module. message Params {} \ No newline at end of file diff --git a/proto/stride/records/query.proto b/proto/stride/records/query.proto index 9d21b318c4..502bd4cb47 100644 --- a/proto/stride/records/query.proto +++ b/proto/stride/records/query.proto @@ -8,7 +8,7 @@ import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; import "cosmos/base/query/v1beta1/pagination.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/records/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/records/records.proto b/proto/stride/records/records.proto index f9e50ac627..660fb23a03 100644 --- a/proto/stride/records/records.proto +++ b/proto/stride/records/records.proto @@ -4,7 +4,7 @@ package stride.records; import "cosmos/base/v1beta1/coin.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/records/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/records/types"; message UserRedemptionRecord { string id = 1; // {chain_id}.{epoch}.{sender} diff --git a/proto/stride/stakeibc/address_unbonding.proto b/proto/stride/stakeibc/address_unbonding.proto index d3b2c4244b..8510cacbc6 100644 --- a/proto/stride/stakeibc/address_unbonding.proto +++ b/proto/stride/stakeibc/address_unbonding.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message AddressUnbonding { string address = 1; diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index f752cf3700..23bcc0f5bb 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -6,7 +6,7 @@ import "stride/records/records.proto"; import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message SplitDelegation { string validator = 1; diff --git a/proto/stride/stakeibc/epoch_tracker.proto b/proto/stride/stakeibc/epoch_tracker.proto index 3acfd0a480..ed0c9f97a5 100755 --- a/proto/stride/stakeibc/epoch_tracker.proto +++ b/proto/stride/stakeibc/epoch_tracker.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message EpochTracker { string epoch_identifier = 1; diff --git a/proto/stride/stakeibc/genesis.proto b/proto/stride/stakeibc/genesis.proto index 1c5433cb38..7c72ed1bcd 100644 --- a/proto/stride/stakeibc/genesis.proto +++ b/proto/stride/stakeibc/genesis.proto @@ -7,7 +7,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; // this line is used by starport scaffolding # genesis/proto/import -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; // GenesisState defines the stakeibc module's genesis state. message GenesisState { diff --git a/proto/stride/stakeibc/gov.proto b/proto/stride/stakeibc/gov.proto index 289c765b6a..affdd132b4 100644 --- a/proto/stride/stakeibc/gov.proto +++ b/proto/stride/stakeibc/gov.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "gogoproto/gogo.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message AddValidatorsProposal { option (gogoproto.equal) = true; diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index fd25783922..ecea4e4c1d 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -5,7 +5,7 @@ import "stride/stakeibc/validator.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message HostZone { string chain_id = 1; diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto index 0a4288cbcb..d25937a24e 100755 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.stakeibc; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; enum ICAAccountType { DELEGATION = 0; diff --git a/proto/stride/stakeibc/packet.proto b/proto/stride/stakeibc/packet.proto index 2f99129c33..9a6fc938d2 100755 --- a/proto/stride/stakeibc/packet.proto +++ b/proto/stride/stakeibc/packet.proto @@ -3,7 +3,7 @@ package stride.stakeibc; // this line is used by starport scaffolding # proto/packet/import -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message StakeibcPacketData { oneof packet { diff --git a/proto/stride/stakeibc/params.proto b/proto/stride/stakeibc/params.proto index b532155ec9..1c1c743bfa 100755 --- a/proto/stride/stakeibc/params.proto +++ b/proto/stride/stakeibc/params.proto @@ -3,7 +3,7 @@ package stride.stakeibc; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; // Params defines the parameters for the module. // next id: 20 diff --git a/proto/stride/stakeibc/query.proto b/proto/stride/stakeibc/query.proto index f991fbff67..feb50668e3 100644 --- a/proto/stride/stakeibc/query.proto +++ b/proto/stride/stakeibc/query.proto @@ -10,7 +10,7 @@ import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/epoch_tracker.proto"; import "stride/stakeibc/address_unbonding.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; // Query defines the gRPC querier service. service Query { diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index df7c0b8ca1..ee91c0dfdc 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -4,7 +4,7 @@ package stride.stakeibc; import "stride/stakeibc/ica_account.proto"; import "stride/stakeibc/validator.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/stride/stakeibc/validator.proto b/proto/stride/stakeibc/validator.proto index 795992d772..670c24c35d 100644 --- a/proto/stride/stakeibc/validator.proto +++ b/proto/stride/stakeibc/validator.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package stride.stakeibc; import "cosmos_proto/cosmos.proto"; import "gogoproto/gogo.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/stakeibc/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; message Validator { string name = 1; diff --git a/proto/stride/vesting/tx.proto b/proto/stride/vesting/tx.proto index 81a6804045..6db6b93206 100644 --- a/proto/stride/vesting/tx.proto +++ b/proto/stride/vesting/tx.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package stride.vesting; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/vesting/types"; // Msg defines the bank Msg service. service Msg {} diff --git a/proto/stride/vesting/vesting.proto b/proto/stride/vesting/vesting.proto index 80faa06b57..b13707dbcc 100644 --- a/proto/stride/vesting/vesting.proto +++ b/proto/stride/vesting/vesting.proto @@ -5,7 +5,7 @@ import "gogoproto/gogo.proto"; import "cosmos/base/v1beta1/coin.proto"; import "cosmos/auth/v1beta1/auth.proto"; -option go_package = "github.com/Stride-Labs/stride/v15/x/claim/vesting/types"; +option go_package = "github.com/Stride-Labs/stride/v16/x/claim/vesting/types"; // BaseVestingAccount implements the VestingAccount interface. It contains all // the necessary fields needed for any vesting account implementation. diff --git a/scripts/protocgen.sh b/scripts/protocgen.sh index 581becbea9..b6f56f13a1 100644 --- a/scripts/protocgen.sh +++ b/scripts/protocgen.sh @@ -26,5 +26,5 @@ cd .. # move proto files to the right places # # Note: Proto files are suffixed with the current binary version. -cp -r github.com/Stride-Labs/stride/v15/* ./ +cp -r github.com/Stride-Labs/stride/v16/* ./ rm -rf github.com diff --git a/testutil/keeper/claim.go b/testutil/keeper/claim.go index 051c5b6202..173304bd99 100644 --- a/testutil/keeper/claim.go +++ b/testutil/keeper/claim.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/claim/keeper" + strideapp "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/claim/keeper" ) func ClaimKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/epochs.go b/testutil/keeper/epochs.go index 88e5993d7f..34405c0b7d 100644 --- a/testutil/keeper/epochs.go +++ b/testutil/keeper/epochs.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/epochs/keeper" + strideapp "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/epochs/keeper" ) func EpochsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/icacallbacks.go b/testutil/keeper/icacallbacks.go index 49ad438176..cefdf269a1 100644 --- a/testutil/keeper/icacallbacks.go +++ b/testutil/keeper/icacallbacks.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + strideapp "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" ) func IcacallbacksKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/interchainquery.go b/testutil/keeper/interchainquery.go index 9007e31151..03114c5f24 100644 --- a/testutil/keeper/interchainquery.go +++ b/testutil/keeper/interchainquery.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + strideapp "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" ) func InterchainqueryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/records.go b/testutil/keeper/records.go index 0e318b07e4..c0b1b59260 100644 --- a/testutil/keeper/records.go +++ b/testutil/keeper/records.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/records/keeper" + strideapp "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/records/keeper" ) func RecordsKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/keeper/stakeibc.go b/testutil/keeper/stakeibc.go index 5e108bc983..818c92cd62 100644 --- a/testutil/keeper/stakeibc.go +++ b/testutil/keeper/stakeibc.go @@ -7,8 +7,8 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" sdk "github.com/cosmos/cosmos-sdk/types" - strideapp "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + strideapp "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" ) func StakeibcKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { diff --git a/testutil/network/network.go b/testutil/network/network.go index 41acc324b8..32e4649da4 100644 --- a/testutil/network/network.go +++ b/testutil/network/network.go @@ -25,8 +25,8 @@ import ( genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - "github.com/Stride-Labs/stride/v15/app" - testutil "github.com/Stride-Labs/stride/v15/testutil" + "github.com/Stride-Labs/stride/v16/app" + testutil "github.com/Stride-Labs/stride/v16/testutil" ) type ( diff --git a/utils/cache_ctx_test.go b/utils/cache_ctx_test.go index 5c36aa609c..625507364d 100644 --- a/utils/cache_ctx_test.go +++ b/utils/cache_ctx_test.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) var expectedOutOfGasError = types.ErrorOutOfGas{Descriptor: "my func"} diff --git a/utils/module_account_test.go b/utils/module_account_test.go index c54734bb58..7c38b76be5 100644 --- a/utils/module_account_test.go +++ b/utils/module_account_test.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/address" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) func (s *UtilsTestSuite) TestCreateModuleAccount() { diff --git a/utils/utils.go b/utils/utils.go index 48a9f9de97..fab4a00f68 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -17,9 +17,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - config "github.com/Stride-Labs/stride/v15/cmd/strided/config" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + config "github.com/Stride-Labs/stride/v16/cmd/strided/config" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" ) func FilterDepositRecords(arr []recordstypes.DepositRecord, condition func(recordstypes.DepositRecord) bool) (ret []recordstypes.DepositRecord) { diff --git a/utils/utils_test.go b/utils/utils_test.go index 6eac596ae4..33c7a4e83b 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v16/app/apptesting" ) type UtilsTestSuite struct { diff --git a/x/autopilot/client/cli/query.go b/x/autopilot/client/cli/query.go index db1414954e..35df3db0c8 100644 --- a/x/autopilot/client/cli/query.go +++ b/x/autopilot/client/cli/query.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" "github.com/cosmos/cosmos-sdk/client/flags" ) diff --git a/x/autopilot/genesis.go b/x/autopilot/genesis.go index a662446829..9c87a2d30b 100644 --- a/x/autopilot/genesis.go +++ b/x/autopilot/genesis.go @@ -3,8 +3,8 @@ package autopilot import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/autopilot/genesis_test.go b/x/autopilot/genesis_test.go index 602c02ded1..b6728b14aa 100644 --- a/x/autopilot/genesis_test.go +++ b/x/autopilot/genesis_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/autopilot" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/autopilot" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) func TestGenesis(t *testing.T) { diff --git a/x/autopilot/handler.go b/x/autopilot/handler.go index 537398936a..cb76e5b7aa 100644 --- a/x/autopilot/handler.go +++ b/x/autopilot/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) // NewHandler returns autopilot module messages diff --git a/x/autopilot/keeper/airdrop.go b/x/autopilot/keeper/airdrop.go index 735629fc9c..54e04a1d02 100644 --- a/x/autopilot/keeper/airdrop.go +++ b/x/autopilot/keeper/airdrop.go @@ -11,10 +11,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) TryUpdateAirdropClaim( diff --git a/x/autopilot/keeper/airdrop_test.go b/x/autopilot/keeper/airdrop_test.go index 7f528742b2..f58b918f4d 100644 --- a/x/autopilot/keeper/airdrop_test.go +++ b/x/autopilot/keeper/airdrop_test.go @@ -12,11 +12,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/autopilot" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/autopilot" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // TODO: Separate out tests cases that are not necessarily Claim or Stakeibc related, diff --git a/x/autopilot/keeper/grpc_query_params.go b/x/autopilot/keeper/grpc_query_params.go index 5df0fbd626..f18f032b7a 100644 --- a/x/autopilot/keeper/grpc_query_params.go +++ b/x/autopilot/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/autopilot/keeper/grpc_query_params_test.go b/x/autopilot/keeper/grpc_query_params_test.go index c0078fc987..209e1343fd 100644 --- a/x/autopilot/keeper/grpc_query_params_test.go +++ b/x/autopilot/keeper/grpc_query_params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "context" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) func (s *KeeperTestSuite) TestParamsQuery() { diff --git a/x/autopilot/keeper/keeper.go b/x/autopilot/keeper/keeper.go index a3f2a8ff47..e9e8ceff43 100644 --- a/x/autopilot/keeper/keeper.go +++ b/x/autopilot/keeper/keeper.go @@ -10,9 +10,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" ) type ( diff --git a/x/autopilot/keeper/keeper_test.go b/x/autopilot/keeper/keeper_test.go index e3240652ca..9adfbd57f5 100644 --- a/x/autopilot/keeper/keeper_test.go +++ b/x/autopilot/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) type KeeperTestSuite struct { diff --git a/x/autopilot/keeper/liquidstake.go b/x/autopilot/keeper/liquidstake.go index 6adc680471..29a2aa8155 100644 --- a/x/autopilot/keeper/liquidstake.go +++ b/x/autopilot/keeper/liquidstake.go @@ -11,9 +11,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) TryLiquidStaking( diff --git a/x/autopilot/keeper/liquidstake_test.go b/x/autopilot/keeper/liquidstake_test.go index efbc4de0a4..24642d7833 100644 --- a/x/autopilot/keeper/liquidstake_test.go +++ b/x/autopilot/keeper/liquidstake_test.go @@ -10,16 +10,16 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordsmodule "github.com/Stride-Labs/stride/v15/x/records" + recordsmodule "github.com/Stride-Labs/stride/v16/x/records" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/autopilot" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/autopilot" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func getStakeibcPacketMetadata(address, action string) string { diff --git a/x/autopilot/keeper/params.go b/x/autopilot/keeper/params.go index 61f2881e2e..5cb363dd37 100644 --- a/x/autopilot/keeper/params.go +++ b/x/autopilot/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) // GetParams get all parameters as types.Params diff --git a/x/autopilot/keeper/params_test.go b/x/autopilot/keeper/params_test.go index f00cdf9b72..d1ec09894c 100644 --- a/x/autopilot/keeper/params_test.go +++ b/x/autopilot/keeper/params_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) func (s *KeeperTestSuite) TestGetParams() { diff --git a/x/autopilot/module.go b/x/autopilot/module.go index 45458052f1..9c4c292efb 100644 --- a/x/autopilot/module.go +++ b/x/autopilot/module.go @@ -18,9 +18,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/autopilot/client/cli" - "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/client/cli" + "github.com/Stride-Labs/stride/v16/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) var ( diff --git a/x/autopilot/module_ibc.go b/x/autopilot/module_ibc.go index 3c2dadb498..53ffefc8ed 100644 --- a/x/autopilot/module_ibc.go +++ b/x/autopilot/module_ibc.go @@ -12,8 +12,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" - "github.com/Stride-Labs/stride/v15/x/autopilot/keeper" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/keeper" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" ) diff --git a/x/autopilot/types/genesis.pb.go b/x/autopilot/types/genesis.pb.go index 7fac063389..34a9e3dc6e 100644 --- a/x/autopilot/types/genesis.pb.go +++ b/x/autopilot/types/genesis.pb.go @@ -88,8 +88,8 @@ var fileDescriptor_a7e087b21fd12e65 = []byte{ 0xbb, 0x93, 0xef, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa7, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x0d, 0xd7, 0xf5, 0x49, 0x4c, - 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, - 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x75, 0x6a, 0xc9, + 0x2a, 0xd6, 0x87, 0x3a, 0xb4, 0xcc, 0xd0, 0x4c, 0xbf, 0x02, 0xc9, 0xb9, 0x25, 0x95, 0x05, 0xa9, + 0xc5, 0x49, 0x6c, 0x60, 0xe7, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x33, 0x58, 0xfe, 0x7a, 0x17, 0x01, 0x00, 0x00, } diff --git a/x/autopilot/types/genesis_test.go b/x/autopilot/types/genesis_test.go index d98e9f478d..0ff5fc463d 100644 --- a/x/autopilot/types/genesis_test.go +++ b/x/autopilot/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/autopilot/types/params.pb.go b/x/autopilot/types/params.pb.go index 533836a674..3113d192b7 100644 --- a/x/autopilot/types/params.pb.go +++ b/x/autopilot/types/params.pb.go @@ -96,8 +96,8 @@ var fileDescriptor_b0b993e9f5195319 = []byte{ 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x0e, 0xd5, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xfa, - 0xa9, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, - 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x34, 0x1f, 0xd9, 0x4c, 0xfa, 0x00, 0x00, 0x00, + 0xa9, 0xcc, 0xd0, 0x4c, 0xbf, 0x02, 0xc9, 0x67, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, + 0x17, 0x1b, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x32, 0x4d, 0xff, 0xfa, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/autopilot/types/parser_test.go b/x/autopilot/types/parser_test.go index b7c9fa8e18..4679e77445 100644 --- a/x/autopilot/types/parser_test.go +++ b/x/autopilot/types/parser_test.go @@ -6,8 +6,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/autopilot/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/autopilot/types" ) func init() { diff --git a/x/autopilot/types/query.pb.go b/x/autopilot/types/query.pb.go index fe9e7f13f4..b64e870afe 100644 --- a/x/autopilot/types/query.pb.go +++ b/x/autopilot/types/query.pb.go @@ -136,9 +136,9 @@ var fileDescriptor_1dd160550c308365 = []byte{ 0xfd, 0x60, 0xb0, 0x72, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0x1c, 0x5e, 0x77, 0xf2, 0x3d, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xe3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, - 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x9a, 0xea, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, - 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x60, 0xd7, - 0x9b, 0x27, 0xcf, 0x01, 0x00, 0x00, + 0xbd, 0xe4, 0xfc, 0x5c, 0x6c, 0x26, 0x95, 0x19, 0x9a, 0xe9, 0x57, 0x20, 0x99, 0x57, 0x52, 0x59, + 0x90, 0x5a, 0x9c, 0xc4, 0x06, 0x0e, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xfa, + 0x0f, 0x94, 0xcf, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/client/cli/cli_test.go b/x/claim/client/cli/cli_test.go index 9535866495..31ba8b3461 100644 --- a/x/claim/client/cli/cli_test.go +++ b/x/claim/client/cli/cli_test.go @@ -14,23 +14,23 @@ import ( clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - strideclitestutil "github.com/Stride-Labs/stride/v15/testutil/cli" + strideclitestutil "github.com/Stride-Labs/stride/v16/testutil/cli" - "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v16/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" tmcli "github.com/cometbft/cometbft/libs/cli" - "github.com/Stride-Labs/stride/v15/x/claim/client/cli" + "github.com/Stride-Labs/stride/v16/x/claim/client/cli" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/app" - cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" - "github.com/Stride-Labs/stride/v15/x/claim/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/app" + cmdcfg "github.com/Stride-Labs/stride/v16/cmd/strided/config" + "github.com/Stride-Labs/stride/v16/x/claim/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) var addr1 sdk.AccAddress diff --git a/x/claim/client/cli/query.go b/x/claim/client/cli/query.go index 206c4d7754..c88bd3cf07 100644 --- a/x/claim/client/cli/query.go +++ b/x/claim/client/cli/query.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/claim/client/cli/tx.go b/x/claim/client/cli/tx.go index fcf50248c0..20a8c9dcca 100644 --- a/x/claim/client/cli/tx.go +++ b/x/claim/client/cli/tx.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/claim/client/cli/tx_claim_free_amount.go b/x/claim/client/cli/tx_claim_free_amount.go index b6f35d19d1..d282b01cb6 100644 --- a/x/claim/client/cli/tx_claim_free_amount.go +++ b/x/claim/client/cli/tx_claim_free_amount.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func CmdClaimFreeAmount() *cobra.Command { diff --git a/x/claim/client/cli/tx_create_airdrop.go b/x/claim/client/cli/tx_create_airdrop.go index f2a33480eb..0318fb9191 100644 --- a/x/claim/client/cli/tx_create_airdrop.go +++ b/x/claim/client/cli/tx_create_airdrop.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func CmdCreateAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_delete_airdrop.go b/x/claim/client/cli/tx_delete_airdrop.go index 2fd34e5866..41a5663b52 100644 --- a/x/claim/client/cli/tx_delete_airdrop.go +++ b/x/claim/client/cli/tx_delete_airdrop.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func CmdDeleteAirdrop() *cobra.Command { diff --git a/x/claim/client/cli/tx_set_airdrop_allocations.go b/x/claim/client/cli/tx_set_airdrop_allocations.go index 9e557c9b42..0783d828eb 100644 --- a/x/claim/client/cli/tx_set_airdrop_allocations.go +++ b/x/claim/client/cli/tx_set_airdrop_allocations.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func CmdSetAirdropAllocations() *cobra.Command { diff --git a/x/claim/genesis_test.go b/x/claim/genesis_test.go index bea159e124..5a073077c0 100644 --- a/x/claim/genesis_test.go +++ b/x/claim/genesis_test.go @@ -9,9 +9,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/claim/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func TestGenesis(t *testing.T) { diff --git a/x/claim/handler.go b/x/claim/handler.go index ba2c23806a..7838776d5d 100644 --- a/x/claim/handler.go +++ b/x/claim/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/claim/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/keeper" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) // NewHandler returns claim module messages diff --git a/x/claim/keeper/claim.go b/x/claim/keeper/claim.go index be5cf506bc..5c5deaa0d5 100644 --- a/x/claim/keeper/claim.go +++ b/x/claim/keeper/claim.go @@ -14,10 +14,10 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/claim/types" - vestingtypes "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/claim/types" + vestingtypes "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" ) func (k Keeper) LoadAllocationData(ctx sdk.Context, allocationData string) bool { diff --git a/x/claim/keeper/claim_test.go b/x/claim/keeper/claim_test.go index 7d883d6643..9240beced8 100644 --- a/x/claim/keeper/claim_test.go +++ b/x/claim/keeper/claim_test.go @@ -11,12 +11,12 @@ import ( vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/utils" - claimkeeper "github.com/Stride-Labs/stride/v15/x/claim/keeper" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/utils" + claimkeeper "github.com/Stride-Labs/stride/v16/x/claim/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/types" - stridevestingtypes "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" + stridevestingtypes "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" ) // Test functionality for loading allocation data(csv) diff --git a/x/claim/keeper/genesis.go b/x/claim/keeper/genesis.go index 8743967e70..1139034a8f 100644 --- a/x/claim/keeper/genesis.go +++ b/x/claim/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/claim/keeper/grpc_query.go b/x/claim/keeper/grpc_query.go index 6efc959582..5d049ed8d3 100644 --- a/x/claim/keeper/grpc_query.go +++ b/x/claim/keeper/grpc_query.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/claim/keeper/hooks.go b/x/claim/keeper/hooks.go index bc978fdc49..9ca1d3c4b8 100644 --- a/x/claim/keeper/hooks.go +++ b/x/claim/keeper/hooks.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - stakingibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + stakingibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func (k Keeper) AfterDelegationModified(ctx sdk.Context, delAddr sdk.AccAddress, valAddr sdk.ValAddress) error { diff --git a/x/claim/keeper/hooks_test.go b/x/claim/keeper/hooks_test.go index 1a40135857..41d2a7450e 100644 --- a/x/claim/keeper/hooks_test.go +++ b/x/claim/keeper/hooks_test.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/claim/types" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/claim/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" ) func (s *KeeperTestSuite) TestAfterEpochEnd() { diff --git a/x/claim/keeper/keeper.go b/x/claim/keeper/keeper.go index ba11c0430d..7b5b629572 100644 --- a/x/claim/keeper/keeper.go +++ b/x/claim/keeper/keeper.go @@ -9,7 +9,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) // Keeper struct diff --git a/x/claim/keeper/keeper_test.go b/x/claim/keeper/keeper_test.go index 6c3aab25da..9ff8829f89 100644 --- a/x/claim/keeper/keeper_test.go +++ b/x/claim/keeper/keeper_test.go @@ -12,9 +12,9 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/claim/types" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/claim/types" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" ) type KeeperTestSuite struct { diff --git a/x/claim/keeper/msg_server.go b/x/claim/keeper/msg_server.go index 7a27342059..fd3efcd93a 100644 --- a/x/claim/keeper/msg_server.go +++ b/x/claim/keeper/msg_server.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) type msgServer struct { diff --git a/x/claim/keeper/msg_server_test.go b/x/claim/keeper/msg_server_test.go index 0fb8f554c2..58ddcbc9ee 100644 --- a/x/claim/keeper/msg_server_test.go +++ b/x/claim/keeper/msg_server_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/claim/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/keeper" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) func (suite *KeeperTestSuite) TestSetAirdropAllocationsForMultiAirdrops() { diff --git a/x/claim/keeper/params.go b/x/claim/keeper/params.go index 9ab0b4fc84..54c5474d57 100644 --- a/x/claim/keeper/params.go +++ b/x/claim/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) // GetParams get params diff --git a/x/claim/migrations/v2/convert.go b/x/claim/migrations/v2/convert.go index 330650481c..8c8ee6c931 100644 --- a/x/claim/migrations/v2/convert.go +++ b/x/claim/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) func convertToNewAirdrop(oldAirdrop oldclaimtypes.Airdrop) claimtypes.Airdrop { diff --git a/x/claim/migrations/v2/convert_test.go b/x/claim/migrations/v2/convert_test.go index 9a694c630c..89de7c9c73 100644 --- a/x/claim/migrations/v2/convert_test.go +++ b/x/claim/migrations/v2/convert_test.go @@ -10,8 +10,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) func TestConvertToNewAirdrop(t *testing.T) { diff --git a/x/claim/migrations/v2/migrations.go b/x/claim/migrations/v2/migrations.go index fed1c41de9..6debe23a60 100644 --- a/x/claim/migrations/v2/migrations.go +++ b/x/claim/migrations/v2/migrations.go @@ -7,8 +7,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldclaimtypes "github.com/Stride-Labs/stride/v15/x/claim/migrations/v2/types" - claimtypes "github.com/Stride-Labs/stride/v15/x/claim/types" + oldclaimtypes "github.com/Stride-Labs/stride/v16/x/claim/migrations/v2/types" + claimtypes "github.com/Stride-Labs/stride/v16/x/claim/types" ) func migrateClaimParams(store sdk.KVStore, cdc codec.Codec) error { diff --git a/x/claim/module.go b/x/claim/module.go index e3f98c8455..63dca440bc 100644 --- a/x/claim/module.go +++ b/x/claim/module.go @@ -16,9 +16,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/claim/client/cli" - "github.com/Stride-Labs/stride/v15/x/claim/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/types" + "github.com/Stride-Labs/stride/v16/x/claim/client/cli" + "github.com/Stride-Labs/stride/v16/x/claim/keeper" + "github.com/Stride-Labs/stride/v16/x/claim/types" ) var ( diff --git a/x/claim/types/claim.pb.go b/x/claim/types/claim.pb.go index d66f9b99f9..1b9cbda42f 100644 --- a/x/claim/types/claim.pb.go +++ b/x/claim/types/claim.pb.go @@ -127,32 +127,32 @@ func init() { func init() { proto.RegisterFile("stride/claim/claim.proto", fileDescriptor_b4747d999b9dc0da) } var fileDescriptor_b4747d999b9dc0da = []byte{ - // 394 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0xce, 0xd2, 0x40, - 0x00, 0xc5, 0x5b, 0x20, 0xa8, 0x83, 0x0a, 0x8e, 0x1a, 0x0a, 0xc6, 0x96, 0x74, 0x61, 0x88, 0x91, - 0x36, 0xc6, 0xb8, 0x71, 0x63, 0x0a, 0x14, 0xd3, 0xd8, 0x68, 0x2c, 0x18, 0x13, 0x37, 0x4d, 0xe9, - 0x8c, 0x65, 0x22, 0x65, 0x9a, 0xce, 0xf8, 0x87, 0x1b, 0xb8, 0xf4, 0x0e, 0xee, 0x3c, 0x09, 0x4b, - 0x96, 0xc6, 0x45, 0x63, 0xe0, 0x06, 0x3d, 0x81, 0x61, 0x3a, 0x18, 0xf3, 0x7d, 0x9b, 0xb6, 0xf9, - 0xfd, 0x5e, 0x5e, 0x3a, 0xf3, 0x80, 0xc6, 0x78, 0x4e, 0x10, 0xb6, 0xe3, 0x75, 0x44, 0xd2, 0xea, - 0x69, 0x65, 0x39, 0xe5, 0x14, 0x5e, 0xaf, 0x8c, 0x25, 0x58, 0xff, 0x4e, 0x42, 0x13, 0x2a, 0x84, - 0x7d, 0xfa, 0xaa, 0x32, 0xe6, 0xcf, 0x1a, 0x68, 0x4d, 0x4e, 0x3e, 0xc0, 0x31, 0xcd, 0x11, 0xf4, - 0x01, 0x8c, 0x48, 0x8e, 0x72, 0x9a, 0x85, 0x04, 0xe1, 0x0d, 0x27, 0x1f, 0x08, 0xce, 0x35, 0x75, - 0xa0, 0x0e, 0xaf, 0x8d, 0xef, 0x97, 0x85, 0xd1, 0xdb, 0x46, 0xe9, 0xfa, 0x99, 0x79, 0x39, 0x63, - 0x06, 0xb7, 0x24, 0xf4, 0xfe, 0x31, 0xf8, 0x08, 0x5c, 0x89, 0x10, 0xca, 0x31, 0x63, 0x5a, 0x4d, - 0x54, 0xc0, 0xb2, 0x30, 0x6e, 0xca, 0x8a, 0x4a, 0x98, 0xc1, 0x39, 0x02, 0xdf, 0x81, 0xe6, 0x17, - 0x4c, 0x92, 0x15, 0xd7, 0xea, 0x22, 0xfc, 0x7c, 0x57, 0x18, 0xca, 0xef, 0xc2, 0x78, 0x90, 0x10, - 0xbe, 0xfa, 0xb4, 0xb4, 0x62, 0x9a, 0xda, 0x31, 0x65, 0x29, 0x65, 0xf2, 0x35, 0x62, 0xe8, 0xa3, - 0xcd, 0xb7, 0x19, 0x66, 0xd6, 0x14, 0xc7, 0x65, 0x61, 0xdc, 0xa8, 0xaa, 0xab, 0x16, 0x33, 0x90, - 0x75, 0x70, 0x06, 0x3a, 0x51, 0xcc, 0x09, 0xdd, 0x84, 0x31, 0x4d, 0xb3, 0x35, 0xe6, 0x18, 0x69, - 0x8d, 0x41, 0x7d, 0x78, 0x75, 0x7c, 0xaf, 0x2c, 0x8c, 0xae, 0xfc, 0x9f, 0x0b, 0x09, 0x33, 0x68, - 0x57, 0x68, 0x72, 0x26, 0x0f, 0xe7, 0xa0, 0xe9, 0x08, 0x04, 0xdb, 0xa0, 0xe5, 0x4c, 0x16, 0xde, - 0xeb, 0x57, 0xe1, 0x2c, 0x70, 0xdd, 0x8e, 0x02, 0xbb, 0xe0, 0xb6, 0x04, 0xbe, 0xf7, 0xe6, 0xad, - 0x37, 0x0d, 0xe7, 0x0b, 0xe7, 0xa5, 0xdb, 0x51, 0x61, 0x0f, 0xdc, 0x95, 0x62, 0xea, 0xfa, 0xee, - 0x0b, 0x67, 0xe1, 0x4a, 0x55, 0xeb, 0x37, 0xbe, 0xfd, 0xd0, 0x95, 0xb1, 0xb7, 0x3b, 0xe8, 0xea, - 0xfe, 0xa0, 0xab, 0x7f, 0x0e, 0xba, 0xfa, 0xfd, 0xa8, 0x2b, 0xfb, 0xa3, 0xae, 0xfc, 0x3a, 0xea, - 0xca, 0x7b, 0xfb, 0xbf, 0x73, 0xcf, 0xc5, 0x94, 0x23, 0x3f, 0x5a, 0x32, 0x5b, 0x0e, 0xfe, 0xf9, - 0xf1, 0x53, 0xfb, 0xab, 0x9c, 0x5d, 0x5c, 0xc2, 0xb2, 0x29, 0x36, 0x7d, 0xf2, 0x37, 0x00, 0x00, - 0xff, 0xff, 0x99, 0x41, 0xf3, 0x13, 0x13, 0x02, 0x00, 0x00, + // 395 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x91, 0x4f, 0xca, 0xd3, 0x40, + 0x00, 0xc5, 0x93, 0xb6, 0x54, 0x9d, 0xaa, 0xad, 0xa3, 0xd2, 0xb4, 0x62, 0x52, 0xb2, 0x90, 0x22, + 0x36, 0x41, 0x04, 0x17, 0x6e, 0x24, 0x6d, 0x53, 0x09, 0x06, 0xc5, 0xb4, 0x22, 0xb8, 0x09, 0x69, + 0x66, 0x4c, 0x07, 0x9b, 0x4e, 0xc8, 0x8c, 0x7f, 0x7a, 0x03, 0x97, 0xde, 0xc1, 0x9d, 0x27, 0xe9, + 0xb2, 0x4b, 0x71, 0x11, 0xa4, 0xbd, 0x41, 0x4e, 0x20, 0x9d, 0x4c, 0x45, 0xbe, 0x6f, 0x93, 0x84, + 0xdf, 0xef, 0xf1, 0xc8, 0xcc, 0x03, 0x1a, 0xe3, 0x39, 0x41, 0xd8, 0x8e, 0xd7, 0x11, 0x49, 0xab, + 0xa7, 0x95, 0xe5, 0x94, 0x53, 0x78, 0xbd, 0x32, 0x96, 0x60, 0xfd, 0x3b, 0x09, 0x4d, 0xa8, 0x10, + 0xf6, 0xe9, 0xab, 0xca, 0x98, 0x3f, 0x6b, 0xa0, 0x35, 0x39, 0xf9, 0x00, 0xc7, 0x34, 0x47, 0xd0, + 0x07, 0x30, 0x22, 0x39, 0xca, 0x69, 0x16, 0x12, 0x84, 0x37, 0x9c, 0x7c, 0x20, 0x38, 0xd7, 0xd4, + 0x81, 0x3a, 0xbc, 0x36, 0xbe, 0x5f, 0x16, 0x46, 0x6f, 0x1b, 0xa5, 0xeb, 0x67, 0xe6, 0xe5, 0x8c, + 0x19, 0xdc, 0x92, 0xd0, 0xfb, 0xc7, 0xe0, 0x23, 0x70, 0x25, 0x42, 0x28, 0xc7, 0x8c, 0x69, 0x35, + 0x51, 0x01, 0xcb, 0xc2, 0xb8, 0x29, 0x2b, 0x2a, 0x61, 0x06, 0xe7, 0x08, 0x7c, 0x07, 0x9a, 0x5f, + 0x30, 0x49, 0x56, 0x5c, 0xab, 0x8b, 0xf0, 0xf3, 0x5d, 0x61, 0x28, 0xbf, 0x0b, 0xe3, 0x41, 0x42, + 0xf8, 0xea, 0xd3, 0xd2, 0x8a, 0x69, 0x6a, 0xc7, 0x94, 0xa5, 0x94, 0xc9, 0xd7, 0x88, 0xa1, 0x8f, + 0x36, 0xdf, 0x66, 0x98, 0x59, 0x53, 0x1c, 0x97, 0x85, 0x71, 0xa3, 0xaa, 0xae, 0x5a, 0xcc, 0x40, + 0xd6, 0xc1, 0x19, 0xe8, 0x44, 0x31, 0x27, 0x74, 0x13, 0xc6, 0x34, 0xcd, 0xd6, 0x98, 0x63, 0xa4, + 0x35, 0x06, 0xf5, 0xe1, 0xd5, 0xf1, 0xbd, 0xb2, 0x30, 0xba, 0xf2, 0x7f, 0x2e, 0x24, 0xcc, 0xa0, + 0x5d, 0xa1, 0xc9, 0x99, 0x3c, 0x9c, 0x83, 0xa6, 0x23, 0x10, 0x6c, 0x83, 0x96, 0x33, 0x59, 0x78, + 0xaf, 0x5f, 0x85, 0xb3, 0xc0, 0x75, 0x3b, 0x0a, 0xec, 0x82, 0xdb, 0x12, 0xf8, 0xde, 0x9b, 0xb7, + 0xde, 0x34, 0x9c, 0x2f, 0x9c, 0x97, 0x6e, 0x47, 0x85, 0x3d, 0x70, 0x57, 0x8a, 0xa9, 0xeb, 0xbb, + 0x2f, 0x9c, 0x85, 0x2b, 0x55, 0xad, 0xdf, 0xf8, 0xf6, 0x43, 0x57, 0xc6, 0xde, 0xee, 0xa0, 0xab, + 0xfb, 0x83, 0xae, 0xfe, 0x39, 0xe8, 0xea, 0xf7, 0xa3, 0xae, 0xec, 0x8f, 0xba, 0xf2, 0xeb, 0xa8, + 0x2b, 0xef, 0xed, 0xff, 0xce, 0x3d, 0x17, 0x53, 0x8e, 0xfc, 0x68, 0xc9, 0x6c, 0x39, 0xf8, 0xe7, + 0xc7, 0x4f, 0xed, 0xaf, 0x72, 0x76, 0x71, 0x09, 0xcb, 0xa6, 0xd8, 0xf4, 0xc9, 0xdf, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xa4, 0x78, 0x16, 0x65, 0x13, 0x02, 0x00, 0x00, } func (m *ClaimRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/expected_keepers.go b/x/claim/types/expected_keepers.go index 12bf4ec4d1..01c306c1f3 100644 --- a/x/claim/types/expected_keepers.go +++ b/x/claim/types/expected_keepers.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // BankKeeper defines the banking contract that must be fulfilled when diff --git a/x/claim/types/genesis.pb.go b/x/claim/types/genesis.pb.go index 952c4399ac..8567d0d98d 100644 --- a/x/claim/types/genesis.pb.go +++ b/x/claim/types/genesis.pb.go @@ -100,9 +100,9 @@ var fileDescriptor_ecf5648202726596 = []byte{ 0xa1, 0xb4, 0xd8, 0xc9, 0xf3, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xf4, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x56, 0xe9, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xaa, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xa5, - 0x77, 0xe7, 0x7c, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0xfd, 0x5f, 0x66, 0x68, 0xa6, 0x5f, 0x01, 0x0d, 0x85, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x28, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x89, 0x9c, + 0x92, 0x91, 0x7c, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/msgs.go b/x/claim/types/msgs.go index f8ab029af1..b7a5167712 100644 --- a/x/claim/types/msgs.go +++ b/x/claim/types/msgs.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) // Msg type for MsgSetAirdropAllocations diff --git a/x/claim/types/params.pb.go b/x/claim/types/params.pb.go index 05900c5b1c..44cc67750e 100644 --- a/x/claim/types/params.pb.go +++ b/x/claim/types/params.pb.go @@ -180,40 +180,40 @@ func init() { func init() { proto.RegisterFile("stride/claim/params.proto", fileDescriptor_dd7ac871d3875dc3) } var fileDescriptor_dd7ac871d3875dc3 = []byte{ - // 516 bytes of a gzipped FileDescriptorProto + // 517 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x6d, 0xd8, 0x68, 0x8b, 0x3b, 0xc1, 0x66, 0x40, 0xa4, 0x95, 0x48, 0xaa, 0x48, 0xa0, 0x4a, - 0xb0, 0x58, 0x1b, 0xe2, 0x02, 0xa7, 0x56, 0x03, 0xa9, 0xd2, 0x0e, 0x28, 0xdd, 0x89, 0x4b, 0xe4, - 0xd4, 0x6e, 0x67, 0xd1, 0xc4, 0x91, 0xed, 0x22, 0xfa, 0x0b, 0xb8, 0xee, 0xc8, 0xef, 0xe1, 0xb4, - 0xe3, 0x8e, 0x88, 0x43, 0x40, 0xed, 0x8d, 0xe3, 0x7e, 0x01, 0xb2, 0xe3, 0x74, 0xdd, 0x7a, 0x6a, - 0xfd, 0xde, 0xfb, 0xbe, 0xf7, 0x3e, 0x7f, 0x31, 0x68, 0x4b, 0x25, 0x18, 0xa1, 0x68, 0x3c, 0xc3, - 0x2c, 0x45, 0x39, 0x16, 0x38, 0x95, 0x61, 0x2e, 0xb8, 0xe2, 0x70, 0xaf, 0xa4, 0x42, 0x43, 0x75, - 0x9e, 0x4c, 0xf9, 0x94, 0x1b, 0x02, 0xe9, 0x7f, 0xa5, 0xa6, 0xe3, 0x4d, 0x39, 0x9f, 0xce, 0x28, - 0x32, 0xa7, 0x64, 0x3e, 0x41, 0x64, 0x2e, 0xb0, 0x62, 0x3c, 0xb3, 0xbc, 0x7f, 0x97, 0x57, 0x2c, - 0xa5, 0x52, 0xe1, 0x34, 0x2f, 0x05, 0xc1, 0x7b, 0x50, 0xff, 0x64, 0x4c, 0xe1, 0x11, 0x68, 0x62, - 0x26, 0x88, 0xe0, 0xb9, 0x74, 0x9d, 0xee, 0x4e, 0xaf, 0x75, 0xfc, 0x34, 0xdc, 0x4c, 0x10, 0xf6, - 0x4b, 0x36, 0x5a, 0xcb, 0x82, 0x9f, 0xbb, 0xa0, 0x61, 0x51, 0x78, 0x0a, 0xa0, 0xc5, 0x63, 0x46, - 0x68, 0xa6, 0xd8, 0x84, 0x51, 0xe1, 0x3a, 0x5d, 0xa7, 0xf7, 0x60, 0xf0, 0xfc, 0xba, 0xf0, 0xdb, - 0x0b, 0x9c, 0xce, 0xde, 0x05, 0xdb, 0x9a, 0x20, 0x3a, 0xb0, 0xe0, 0x70, 0x8d, 0xc1, 0x36, 0x68, - 0x8e, 0xcf, 0x31, 0xcb, 0x62, 0x46, 0xdc, 0x86, 0xee, 0x11, 0x35, 0xcc, 0x79, 0x48, 0x20, 0xbf, - 0x31, 0x92, 0x0a, 0x0b, 0x15, 0xeb, 0x91, 0xdc, 0x7b, 0x5d, 0xa7, 0xd7, 0x3a, 0xee, 0x84, 0xe5, - 0xbc, 0x61, 0x35, 0x6f, 0x78, 0x56, 0xcd, 0x3b, 0x78, 0x71, 0x59, 0xf8, 0xb5, 0xed, 0x20, 0x37, - 0x3d, 0x82, 0x8b, 0x3f, 0xbe, 0x13, 0xed, 0x5b, 0x62, 0xa4, 0x71, 0x5d, 0x0d, 0xbf, 0x3b, 0xa0, - 0x02, 0xe3, 0xea, 0x7a, 0xdd, 0x1d, 0xe3, 0xd7, 0xde, 0xf2, 0x3b, 0xb1, 0x82, 0x41, 0x5f, 0xdb, - 0xfd, 0x2b, 0xfc, 0xce, 0xdd, 0xd2, 0xd7, 0x3c, 0x65, 0x8a, 0xa6, 0xb9, 0x5a, 0x5c, 0x17, 0xfe, - 0xb3, 0xdb, 0x61, 0x2a, 0x4d, 0xf0, 0x43, 0x47, 0x79, 0x64, 0xe1, 0xaa, 0x27, 0xf4, 0x41, 0xcb, - 0xac, 0x22, 0x26, 0x34, 0xe3, 0xa9, 0xbb, 0x6b, 0x2e, 0x06, 0x18, 0xe8, 0x44, 0x23, 0x10, 0x81, - 0xc7, 0x84, 0xe9, 0xa5, 0x25, 0x73, 0xc5, 0x45, 0x8c, 0x09, 0x11, 0x54, 0x4a, 0xf7, 0xbe, 0x11, - 0xc2, 0x0d, 0xaa, 0x5f, 0x32, 0xf0, 0x0c, 0x3c, 0x34, 0xe5, 0x94, 0xc4, 0x92, 0xc7, 0x13, 0x2c, - 0xdc, 0xba, 0xd9, 0x58, 0xa8, 0xd3, 0xff, 0x2e, 0xfc, 0x97, 0x53, 0xa6, 0xce, 0xe7, 0x49, 0x38, - 0xe6, 0x29, 0x1a, 0x73, 0x99, 0x72, 0x69, 0x7f, 0x0e, 0x25, 0xf9, 0x82, 0xd4, 0x22, 0xa7, 0x32, - 0x1c, 0x66, 0x2a, 0xda, 0xb3, 0x5d, 0x46, 0xfc, 0x23, 0x16, 0xf0, 0x15, 0x38, 0xc0, 0x73, 0xc5, - 0x73, 0x36, 0xe3, 0x2a, 0xa6, 0x19, 0x4e, 0x66, 0x94, 0xb8, 0xcd, 0xae, 0xd3, 0x6b, 0x46, 0xfb, - 0x6b, 0xe2, 0x43, 0x89, 0x0f, 0x86, 0x97, 0x4b, 0xcf, 0xb9, 0x5a, 0x7a, 0xce, 0xdf, 0xa5, 0xe7, - 0x5c, 0xac, 0xbc, 0xda, 0xd5, 0xca, 0xab, 0xfd, 0x5a, 0x79, 0xb5, 0xcf, 0x68, 0xc3, 0x7c, 0x64, - 0xbe, 0xc4, 0xc3, 0x53, 0x9c, 0x48, 0x64, 0x9f, 0xcc, 0xd7, 0xa3, 0xb7, 0xe8, 0x9b, 0x7d, 0x38, - 0x26, 0x49, 0x52, 0x37, 0x6b, 0x78, 0xf3, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xce, 0xd3, 0x12, 0x31, - 0x55, 0x03, 0x00, 0x00, + 0xb0, 0x58, 0x1b, 0x12, 0x07, 0x38, 0xb5, 0x1a, 0x48, 0x95, 0x76, 0x40, 0xe9, 0x4e, 0x5c, 0x22, + 0xa7, 0x76, 0x3b, 0x8b, 0x26, 0x8e, 0x6c, 0x17, 0xd1, 0x5f, 0xc0, 0x75, 0x47, 0x7e, 0x0f, 0xa7, + 0x1d, 0x77, 0x44, 0x1c, 0x02, 0x6a, 0x6f, 0x1c, 0xf7, 0x0b, 0x90, 0x1d, 0xa7, 0xeb, 0xd6, 0x53, + 0xeb, 0xf7, 0xde, 0xf7, 0xbd, 0xf7, 0xf9, 0x8b, 0x41, 0x5b, 0x2a, 0xc1, 0x08, 0x45, 0xe3, 0x19, + 0x66, 0x29, 0xca, 0xb1, 0xc0, 0xa9, 0x0c, 0x73, 0xc1, 0x15, 0x87, 0x7b, 0x25, 0x15, 0x1a, 0xaa, + 0xf3, 0x64, 0xca, 0xa7, 0xdc, 0x10, 0x48, 0xff, 0x2b, 0x35, 0x1d, 0x6f, 0xca, 0xf9, 0x74, 0x46, + 0x91, 0x39, 0x25, 0xf3, 0x09, 0x22, 0x73, 0x81, 0x15, 0xe3, 0x99, 0xe5, 0xfd, 0xbb, 0xbc, 0x62, + 0x29, 0x95, 0x0a, 0xa7, 0x79, 0x29, 0x08, 0xde, 0x83, 0xfa, 0x27, 0x63, 0x0a, 0x8f, 0x40, 0x13, + 0x33, 0x41, 0x04, 0xcf, 0xa5, 0xeb, 0x74, 0x77, 0x7a, 0xad, 0xe3, 0xa7, 0xe1, 0x66, 0x82, 0xb0, + 0x5f, 0xb2, 0xd1, 0x5a, 0x16, 0xfc, 0xdc, 0x05, 0x0d, 0x8b, 0xc2, 0x53, 0x00, 0x2d, 0x1e, 0x33, + 0x42, 0x33, 0xc5, 0x26, 0x8c, 0x0a, 0xd7, 0xe9, 0x3a, 0xbd, 0x07, 0x83, 0xe7, 0xd7, 0x85, 0xdf, + 0x5e, 0xe0, 0x74, 0xf6, 0x2e, 0xd8, 0xd6, 0x04, 0xd1, 0x81, 0x05, 0x87, 0x6b, 0x0c, 0xb6, 0x41, + 0x73, 0x7c, 0x8e, 0x59, 0x16, 0x33, 0xe2, 0x36, 0x74, 0x8f, 0xa8, 0x61, 0xce, 0x43, 0x02, 0xf9, + 0x8d, 0x91, 0x54, 0x58, 0xa8, 0x58, 0x8f, 0xe4, 0xde, 0xeb, 0x3a, 0xbd, 0xd6, 0x71, 0x27, 0x2c, + 0xe7, 0x0d, 0xab, 0x79, 0xc3, 0xb3, 0x6a, 0xde, 0xc1, 0x8b, 0xcb, 0xc2, 0xaf, 0x6d, 0x07, 0xb9, + 0xe9, 0x11, 0x5c, 0xfc, 0xf1, 0x9d, 0x68, 0xdf, 0x12, 0x23, 0x8d, 0xeb, 0x6a, 0xf8, 0xdd, 0x01, + 0x15, 0x18, 0x57, 0xd7, 0xeb, 0xee, 0x18, 0xbf, 0xf6, 0x96, 0xdf, 0x89, 0x15, 0x0c, 0xfa, 0xda, + 0xee, 0x5f, 0xe1, 0x77, 0xee, 0x96, 0xbe, 0xe6, 0x29, 0x53, 0x34, 0xcd, 0xd5, 0xe2, 0xba, 0xf0, + 0x9f, 0xdd, 0x0e, 0x53, 0x69, 0x82, 0x1f, 0x3a, 0xca, 0x23, 0x0b, 0x57, 0x3d, 0xa1, 0x0f, 0x5a, + 0x66, 0x15, 0x31, 0xa1, 0x19, 0x4f, 0xdd, 0x5d, 0x73, 0x31, 0xc0, 0x40, 0x27, 0x1a, 0x81, 0x08, + 0x3c, 0x26, 0x4c, 0x2f, 0x2d, 0x99, 0x2b, 0x2e, 0x62, 0x4c, 0x88, 0xa0, 0x52, 0xba, 0xf7, 0x8d, + 0x10, 0x6e, 0x50, 0xfd, 0x92, 0x81, 0x67, 0xe0, 0xa1, 0x29, 0xa7, 0x24, 0x96, 0x3c, 0x9e, 0x60, + 0xe1, 0xd6, 0xcd, 0xc6, 0x42, 0x9d, 0xfe, 0x77, 0xe1, 0xbf, 0x9c, 0x32, 0x75, 0x3e, 0x4f, 0xc2, + 0x31, 0x4f, 0xd1, 0x98, 0xcb, 0x94, 0x4b, 0xfb, 0x73, 0x28, 0xc9, 0x17, 0xa4, 0x16, 0x39, 0x95, + 0xe1, 0x30, 0x53, 0xd1, 0x9e, 0xed, 0x32, 0xe2, 0x1f, 0xb1, 0x80, 0xaf, 0xc0, 0x01, 0x9e, 0x2b, + 0x9e, 0xb3, 0x19, 0x57, 0x31, 0xcd, 0x70, 0x32, 0xa3, 0xc4, 0x6d, 0x76, 0x9d, 0x5e, 0x33, 0xda, + 0x5f, 0x13, 0x1f, 0x4a, 0x7c, 0x30, 0xbc, 0x5c, 0x7a, 0xce, 0xd5, 0xd2, 0x73, 0xfe, 0x2e, 0x3d, + 0xe7, 0x62, 0xe5, 0xd5, 0xae, 0x56, 0x5e, 0xed, 0xd7, 0xca, 0xab, 0x7d, 0x46, 0x1b, 0xe6, 0x23, + 0xf3, 0x25, 0x1e, 0x9e, 0xe2, 0x44, 0x22, 0xfb, 0x64, 0xbe, 0x1e, 0xbd, 0x45, 0xdf, 0xec, 0xc3, + 0x31, 0x49, 0x92, 0xba, 0x59, 0xc3, 0x9b, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf3, 0xea, 0xf7, + 0x47, 0x55, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/types/query.pb.go b/x/claim/types/query.pb.go index 247aa0d07a..63b0ead72c 100644 --- a/x/claim/types/query.pb.go +++ b/x/claim/types/query.pb.go @@ -6,7 +6,7 @@ package types import ( context "context" fmt "fmt" - types2 "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + types2 "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types1 "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -927,81 +927,81 @@ var fileDescriptor_baa87682a02846df = []byte{ // 1227 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0xc5, 0x1b, 0xcf, 0x24, 0x6d, 0xda, 0x4e, 0x12, 0x47, 0x99, 0x26, 0xa9, 0xbd, 0x69, 0x6c, 0xff, 0xe7, - 0x4f, 0x12, 0x23, 0x35, 0xbb, 0x24, 0x05, 0x0e, 0x5c, 0x00, 0x87, 0x97, 0x06, 0x15, 0xa9, 0x6c, - 0x4a, 0x24, 0xb8, 0x58, 0xe3, 0xdd, 0x89, 0x59, 0x61, 0xef, 0x3a, 0x3b, 0xb3, 0x15, 0x51, 0x55, - 0x21, 0xe0, 0xc0, 0x0d, 0x22, 0x01, 0x1f, 0x02, 0x24, 0x0e, 0x7c, 0x04, 0x0e, 0x48, 0x3d, 0x56, - 0xe2, 0xc2, 0x01, 0x52, 0x94, 0xf0, 0x09, 0x22, 0xc1, 0x19, 0xed, 0xcc, 0xb3, 0xce, 0xae, 0xb3, - 0xae, 0x13, 0x24, 0x44, 0x2f, 0x71, 0x76, 0x9e, 0xb7, 0xdf, 0xf3, 0x32, 0xbf, 0x99, 0xc1, 0x45, - 0x21, 0x43, 0xcf, 0xe5, 0x96, 0xd3, 0x66, 0x5e, 0xc7, 0xda, 0x8d, 0x78, 0xb8, 0x67, 0x76, 0xc3, - 0x40, 0x06, 0x64, 0x52, 0x4b, 0x4c, 0x25, 0x31, 0x66, 0x5b, 0x41, 0x2b, 0x50, 0x02, 0x2b, 0xfe, - 0x4f, 0xeb, 0x18, 0xd7, 0x5b, 0x41, 0xd0, 0x6a, 0x73, 0x8b, 0x75, 0x3d, 0x8b, 0xf9, 0x7e, 0x20, - 0x99, 0xf4, 0x02, 0x5f, 0x80, 0xb4, 0xec, 0x04, 0xa2, 0x13, 0x08, 0xab, 0xc9, 0x04, 0xb7, 0xee, - 0xad, 0x35, 0xb9, 0x64, 0x6b, 0x96, 0x13, 0x78, 0x3e, 0xc8, 0xb3, 0xb1, 0xd5, 0x5f, 0x90, 0x94, - 0x32, 0x92, 0x2e, 0x0b, 0x59, 0x27, 0x71, 0x7a, 0x1d, 0x44, 0xf7, 0xb8, 0x90, 0x9e, 0xdf, 0x4a, - 0x7e, 0x41, 0x5a, 0x01, 0x40, 0xea, 0xab, 0x19, 0xed, 0x58, 0xd2, 0xeb, 0x70, 0x21, 0x59, 0xa7, - 0xab, 0x15, 0xe8, 0x36, 0x9e, 0xd8, 0x88, 0x9d, 0x6e, 0x49, 0x26, 0x23, 0x41, 0x56, 0x31, 0x61, - 0x5e, 0xe8, 0x86, 0x41, 0xb7, 0xe1, 0xb9, 0xdc, 0x97, 0xde, 0x8e, 0xc7, 0xc3, 0x22, 0xaa, 0xa2, - 0xda, 0x15, 0x7b, 0x06, 0x24, 0x9b, 0x3d, 0x01, 0x29, 0xe2, 0x4b, 0x0a, 0x12, 0x77, 0x8b, 0xa3, - 0x55, 0x54, 0xbb, 0x6c, 0x27, 0x9f, 0xf4, 0x4d, 0x7c, 0xed, 0x9d, 0xb8, 0x78, 0x29, 0xe7, 0x36, - 0xdf, 0x8d, 0xb8, 0x90, 0xe4, 0x06, 0xbe, 0xc4, 0x5c, 0x37, 0xe4, 0x42, 0x68, 0xc7, 0x75, 0x72, - 0x7c, 0x50, 0x29, 0xec, 0xb1, 0x4e, 0xfb, 0x25, 0x0a, 0x02, 0x6a, 0x27, 0x2a, 0x34, 0xc2, 0xc5, - 0xd3, 0x8e, 0x44, 0x37, 0xf0, 0x05, 0x27, 0xef, 0xe1, 0x49, 0x15, 0xaf, 0x21, 0xd4, 0x7a, 0x11, - 0x55, 0xc7, 0x6a, 0x13, 0xeb, 0x25, 0x33, 0xdd, 0x29, 0x33, 0x65, 0x58, 0x5f, 0x78, 0x78, 0x50, - 0x19, 0x39, 0x3e, 0xa8, 0x5c, 0xd5, 0xd1, 0xd2, 0xc6, 0xd4, 0x9e, 0x70, 0x4e, 0x34, 0xe9, 0x4f, - 0xa3, 0x78, 0x4a, 0x59, 0xbe, 0xcd, 0x25, 0x73, 0x99, 0x64, 0xe7, 0x2d, 0xcd, 0xff, 0xf1, 0x94, - 0x13, 0x85, 0x21, 0xf7, 0x65, 0x23, 0x0c, 0x22, 0x5f, 0x17, 0xe8, 0x8a, 0x3d, 0x09, 0x8b, 0x76, - 0xbc, 0x46, 0x42, 0x7c, 0x35, 0xa3, 0x14, 0x63, 0x09, 0x65, 0x71, 0xac, 0x8a, 0x6a, 0x13, 0xeb, - 0x86, 0xa9, 0x9b, 0x67, 0x26, 0xcd, 0x33, 0xef, 0x26, 0xcd, 0xab, 0x2f, 0x43, 0x22, 0x06, 0x24, - 0x72, 0xda, 0x09, 0xdd, 0x7f, 0x5c, 0x41, 0xf6, 0x4c, 0x3a, 0xdc, 0x56, 0xbc, 0x4e, 0xda, 0x78, - 0x26, 0xab, 0xce, 0x7d, 0xb7, 0x78, 0x61, 0x68, 0xc4, 0x67, 0x20, 0x62, 0x31, 0x2f, 0x22, 0xf7, - 0x5d, 0x1d, 0x6f, 0x3a, 0x1d, 0xef, 0x75, 0xdf, 0xa5, 0x0b, 0xb8, 0x74, 0xd2, 0xbe, 0xa4, 0x96, - 0x30, 0x09, 0xf4, 0x63, 0x6c, 0xe4, 0x09, 0xa1, 0xbb, 0x0c, 0x17, 0x74, 0x83, 0x3a, 0x20, 0x81, - 0xfe, 0x2e, 0xe4, 0xf4, 0x37, 0x31, 0xae, 0x2f, 0x02, 0xcc, 0xb9, 0x74, 0x87, 0x13, 0x07, 0xd4, - 0x9e, 0x72, 0xd2, 0xda, 0x34, 0xc2, 0x4b, 0x0a, 0xc0, 0x6b, 0x5e, 0xec, 0xb2, 0x19, 0xc9, 0x20, - 0x7c, 0xd5, 0x71, 0x82, 0xc8, 0x97, 0x75, 0xd6, 0x66, 0xbe, 0xc3, 0x93, 0x99, 0xbd, 0x3d, 0xb8, - 0xf9, 0xf5, 0xc5, 0xe3, 0x83, 0x4a, 0x09, 0xc6, 0xf7, 0x94, 0x0e, 0xcd, 0x99, 0x0d, 0xfa, 0x2b, - 0xc2, 0xcb, 0xc3, 0xe2, 0x42, 0x11, 0x7e, 0x40, 0x78, 0xc1, 0x3d, 0xd1, 0x6a, 0x30, 0xad, 0xd6, - 0x68, 0x6a, 0xbd, 0xde, 0xc8, 0x6b, 0x6a, 0x31, 0x63, 0x6a, 0x31, 0x81, 0x5a, 0xcc, 0x8d, 0xc0, - 0xf3, 0xeb, 0xdb, 0x50, 0x10, 0xaa, 0x11, 0x3e, 0xc1, 0x17, 0xfd, 0xee, 0x71, 0xa5, 0xd6, 0xf2, - 0xe4, 0x07, 0x51, 0xd3, 0x74, 0x82, 0x8e, 0x05, 0x6c, 0xa5, 0x7f, 0x56, 0x85, 0xfb, 0xa1, 0x25, - 0xf7, 0xba, 0x5c, 0x28, 0xb7, 0xc2, 0x2e, 0xb9, 0x83, 0xb0, 0xd3, 0x59, 0x4c, 0x54, 0x76, 0x77, - 0x14, 0x4f, 0x25, 0xcd, 0xde, 0xc4, 0x57, 0x33, 0xab, 0x90, 0xe0, 0x3a, 0x1e, 0xd7, 0x7c, 0xa6, - 0xaa, 0x39, 0xb1, 0x3e, 0x9b, 0xed, 0xae, 0xd6, 0xae, 0x5f, 0x88, 0xb3, 0xb0, 0x41, 0x93, 0x7e, - 0x83, 0xd2, 0xec, 0x62, 0x73, 0x27, 0x08, 0xdd, 0x7f, 0xa5, 0x53, 0x69, 0xae, 0x1a, 0x3d, 0x27, - 0x57, 0x25, 0xb0, 0xfa, 0xb9, 0x2a, 0x54, 0xeb, 0x90, 0x6d, 0x1e, 0x57, 0x69, 0xc3, 0x7c, 0xae, - 0xd2, 0xc6, 0x09, 0x57, 0x69, 0x4d, 0xfa, 0x1b, 0xc2, 0xe5, 0x93, 0xb8, 0xac, 0xd9, 0xe6, 0x6f, - 0xc4, 0x3d, 0x89, 0x8f, 0x9e, 0xa7, 0xa0, 0x2a, 0xe4, 0x65, 0x3c, 0xce, 0x14, 0x18, 0xc5, 0x6b, - 0x85, 0xfe, 0x0e, 0x6b, 0xa0, 0xf5, 0x99, 0xe3, 0x83, 0xca, 0x14, 0xb8, 0x50, 0x2b, 0xd4, 0x06, - 0x33, 0xfa, 0x35, 0xc2, 0x95, 0x81, 0xf9, 0x41, 0x79, 0x77, 0xf1, 0xc5, 0xf8, 0x24, 0x15, 0xc3, - 0x37, 0xc4, 0x2b, 0x50, 0xd7, 0x49, 0xa8, 0x6b, 0x6c, 0x75, 0xbe, 0xd1, 0xd7, 0x91, 0xe8, 0x8f, - 0x08, 0xe8, 0xeb, 0x6e, 0x20, 0x59, 0xbb, 0x87, 0xed, 0x69, 0x28, 0xf9, 0x0a, 0x9e, 0xf6, 0x7c, - 0xa7, 0x1d, 0xb9, 0xbc, 0x91, 0x9c, 0xcf, 0x63, 0xea, 0x7c, 0x2e, 0xc0, 0xf2, 0x06, 0x1c, 0xd3, - 0xfb, 0x08, 0x2f, 0xe4, 0xe6, 0xf0, 0xdf, 0x95, 0xf5, 0x16, 0x6c, 0xa2, 0x77, 0x05, 0x0f, 0xb7, - 0xf5, 0x65, 0xe6, 0x1f, 0x5e, 0x1d, 0xfe, 0x42, 0x70, 0xf8, 0x64, 0x5d, 0x41, 0x6a, 0x5f, 0x20, - 0x3c, 0x2d, 0xba, 0xdc, 0x77, 0xe3, 0x84, 0x1b, 0x3a, 0xcb, 0xb1, 0x61, 0x59, 0xbe, 0x05, 0x59, - 0xce, 0xeb, 0x98, 0x7d, 0xf6, 0xe7, 0xcb, 0xb7, 0xd0, 0xb3, 0x56, 0xdf, 0xe4, 0x16, 0xbe, 0xd4, - 0xe5, 0xa1, 0x17, 0xb8, 0x49, 0xb5, 0xe7, 0x93, 0x8d, 0x92, 0xdc, 0xe9, 0xee, 0x28, 0x71, 0x7d, - 0x1e, 0x40, 0x40, 0xe2, 0x60, 0x44, 0xed, 0xc4, 0x7c, 0xfd, 0xcf, 0xcb, 0xf8, 0xa2, 0x4a, 0x9c, - 0x7c, 0x8f, 0x70, 0x69, 0xe0, 0x21, 0x43, 0x6e, 0x66, 0x77, 0xe2, 0x99, 0x8e, 0x42, 0xe3, 0xf9, - 0xf3, 0x19, 0xe9, 0x6a, 0xd3, 0xa5, 0x4f, 0x7f, 0xfe, 0xe3, 0xab, 0xd1, 0x0a, 0x59, 0x84, 0x3b, - 0x6c, 0x27, 0x70, 0xa3, 0x36, 0xef, 0x3f, 0x82, 0x88, 0x8b, 0xc7, 0x35, 0xe3, 0x93, 0x6a, 0x4e, - 0x98, 0xcc, 0x81, 0x62, 0xfc, 0xef, 0x09, 0x1a, 0x10, 0x75, 0x4e, 0x45, 0x9d, 0x26, 0x53, 0x99, - 0x9b, 0x33, 0xf9, 0x0c, 0xc1, 0xad, 0x57, 0x13, 0x28, 0x59, 0xca, 0xf1, 0x74, 0xfa, 0x68, 0x31, - 0x96, 0x87, 0xa9, 0x0d, 0xc8, 0x35, 0x4d, 0xdd, 0xd6, 0x7d, 0x98, 0xce, 0x07, 0xe4, 0x5b, 0x84, - 0xc9, 0x69, 0x46, 0x23, 0x37, 0x06, 0x45, 0xc9, 0x23, 0x76, 0x63, 0xf5, 0x8c, 0xda, 0x00, 0xed, - 0x45, 0x05, 0xed, 0x39, 0x62, 0xa6, 0xa1, 0xa9, 0x01, 0xde, 0x51, 0x17, 0x82, 0x58, 0xf9, 0x04, - 0xa2, 0x75, 0x5f, 0xaf, 0x3c, 0x20, 0x5f, 0x22, 0x5c, 0xc8, 0x52, 0x04, 0xa9, 0xe5, 0x44, 0xce, - 0x65, 0x42, 0xe3, 0xd9, 0x33, 0x68, 0x02, 0xbe, 0x9a, 0xc2, 0x47, 0x49, 0x15, 0xf0, 0xc9, 0x58, - 0xad, 0xd1, 0x43, 0x99, 0xaa, 0xde, 0xe7, 0x08, 0x4f, 0xa6, 0xf7, 0x35, 0xc9, 0xeb, 0x4e, 0x0e, - 0x87, 0x18, 0x2b, 0x43, 0xf5, 0x00, 0xcb, 0xb2, 0xc2, 0x52, 0x25, 0x65, 0xc0, 0x12, 0x09, 0x1e, - 0x36, 0x60, 0x2b, 0x8a, 0x14, 0x92, 0xde, 0x34, 0xc1, 0x1b, 0x6a, 0xe0, 0x34, 0x65, 0x9e, 0x41, - 0x83, 0xa7, 0x29, 0xfb, 0xc8, 0x19, 0x30, 0x4d, 0xfa, 0xd1, 0x92, 0x42, 0xf1, 0x09, 0xea, 0x7f, - 0xb0, 0xac, 0x0c, 0x0a, 0xd0, 0x77, 0x0d, 0x37, 0x6a, 0xc3, 0x15, 0x01, 0xcb, 0xa2, 0xc2, 0x72, - 0x8d, 0xcc, 0x65, 0xb0, 0x24, 0xd7, 0xeb, 0xfa, 0xe6, 0xc3, 0xc3, 0x32, 0x7a, 0x74, 0x58, 0x46, - 0xbf, 0x1f, 0x96, 0xd1, 0xfe, 0x51, 0x79, 0xe4, 0xd1, 0x51, 0x79, 0xe4, 0x97, 0xa3, 0xf2, 0xc8, - 0xfb, 0x56, 0x8a, 0x15, 0xb7, 0x54, 0xb0, 0xd5, 0xdb, 0xac, 0x29, 0xac, 0xe4, 0xf1, 0xba, 0xf6, - 0x82, 0xf5, 0x51, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xea, 0x09, 0x72, 0xf3, 0xef, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xc2, 0x9b, 0xf3, 0x1c, 0x90, 0x0f, 0x00, 0x00, + 0x4f, 0x12, 0x23, 0x35, 0xbb, 0x24, 0x45, 0x3d, 0x70, 0x01, 0x1c, 0x5e, 0x1a, 0x54, 0xa4, 0xb2, + 0x29, 0x91, 0xe0, 0x62, 0x8d, 0x77, 0x27, 0x66, 0x85, 0xbd, 0xeb, 0xec, 0xcc, 0x56, 0x44, 0x55, + 0x85, 0x80, 0x03, 0x37, 0x88, 0x04, 0x7c, 0x08, 0x90, 0x38, 0xf0, 0x11, 0x38, 0x20, 0xf5, 0x58, + 0x89, 0x0b, 0x07, 0x48, 0x51, 0xc2, 0x27, 0x88, 0x04, 0x67, 0xb4, 0x33, 0xcf, 0x3a, 0xbb, 0xce, + 0xba, 0x4e, 0x90, 0x10, 0xbd, 0xc4, 0xd9, 0x79, 0xde, 0x7e, 0xcf, 0xcb, 0xfc, 0x66, 0x06, 0x17, + 0x85, 0x0c, 0x3d, 0x97, 0x5b, 0x4e, 0x9b, 0x79, 0x1d, 0x6b, 0x37, 0xe2, 0xe1, 0x9e, 0xd9, 0x0d, + 0x03, 0x19, 0x90, 0x49, 0x2d, 0x31, 0x95, 0xc4, 0x98, 0x6d, 0x05, 0xad, 0x40, 0x09, 0xac, 0xf8, + 0x3f, 0xad, 0x63, 0x5c, 0x6f, 0x05, 0x41, 0xab, 0xcd, 0x2d, 0xd6, 0xf5, 0x2c, 0xe6, 0xfb, 0x81, + 0x64, 0xd2, 0x0b, 0x7c, 0x01, 0xd2, 0xb2, 0x13, 0x88, 0x4e, 0x20, 0xac, 0x26, 0x13, 0xdc, 0xba, + 0xbf, 0xd6, 0xe4, 0x92, 0xad, 0x59, 0x4e, 0xe0, 0xf9, 0x20, 0xcf, 0xc6, 0x56, 0x7f, 0x41, 0x52, + 0xca, 0x48, 0xba, 0x2c, 0x64, 0x9d, 0xc4, 0xe9, 0x75, 0x10, 0xdd, 0xe7, 0x42, 0x7a, 0x7e, 0x2b, + 0xf9, 0x05, 0x69, 0x05, 0x00, 0xa9, 0xaf, 0x66, 0xb4, 0x63, 0x49, 0xaf, 0xc3, 0x85, 0x64, 0x9d, + 0xae, 0x56, 0xa0, 0xdb, 0x78, 0x62, 0x23, 0x76, 0xba, 0x25, 0x99, 0x8c, 0x04, 0x59, 0xc5, 0x84, + 0x79, 0xa1, 0x1b, 0x06, 0xdd, 0x86, 0xe7, 0x72, 0x5f, 0x7a, 0x3b, 0x1e, 0x0f, 0x8b, 0xa8, 0x8a, + 0x6a, 0x57, 0xec, 0x19, 0x90, 0x6c, 0xf6, 0x04, 0xa4, 0x88, 0x2f, 0x29, 0x48, 0xdc, 0x2d, 0x8e, + 0x56, 0x51, 0xed, 0xb2, 0x9d, 0x7c, 0xd2, 0x37, 0xf1, 0xb5, 0x77, 0xe2, 0xe2, 0xa5, 0x9c, 0xdb, + 0x7c, 0x37, 0xe2, 0x42, 0x92, 0x1b, 0xf8, 0x12, 0x73, 0xdd, 0x90, 0x0b, 0xa1, 0x1d, 0xd7, 0xc9, + 0xf1, 0x41, 0xa5, 0xb0, 0xc7, 0x3a, 0xed, 0x97, 0x28, 0x08, 0xa8, 0x9d, 0xa8, 0xd0, 0x08, 0x17, + 0x4f, 0x3b, 0x12, 0xdd, 0xc0, 0x17, 0x9c, 0xbc, 0x87, 0x27, 0x55, 0xbc, 0x86, 0x50, 0xeb, 0x45, + 0x54, 0x1d, 0xab, 0x4d, 0xac, 0x97, 0xcc, 0x74, 0xa7, 0xcc, 0x94, 0x61, 0x7d, 0xe1, 0xd1, 0x41, + 0x65, 0xe4, 0xf8, 0xa0, 0x72, 0x55, 0x47, 0x4b, 0x1b, 0x53, 0x7b, 0xc2, 0x39, 0xd1, 0xa4, 0x3f, + 0x8d, 0xe2, 0x29, 0x65, 0xf9, 0x36, 0x97, 0xcc, 0x65, 0x92, 0x9d, 0xb7, 0x34, 0xff, 0xc7, 0x53, + 0x4e, 0x14, 0x86, 0xdc, 0x97, 0x8d, 0x30, 0x88, 0x7c, 0x5d, 0xa0, 0x2b, 0xf6, 0x24, 0x2c, 0xda, + 0xf1, 0x1a, 0x09, 0xf1, 0xd5, 0x8c, 0x52, 0x8c, 0x25, 0x94, 0xc5, 0xb1, 0x2a, 0xaa, 0x4d, 0xac, + 0x1b, 0xa6, 0x6e, 0x9e, 0x99, 0x34, 0xcf, 0xbc, 0x97, 0x34, 0xaf, 0xbe, 0x0c, 0x89, 0x18, 0x90, + 0xc8, 0x69, 0x27, 0x74, 0xff, 0x49, 0x05, 0xd9, 0x33, 0xe9, 0x70, 0x5b, 0xf1, 0x3a, 0x69, 0xe3, + 0x99, 0xac, 0x3a, 0xf7, 0xdd, 0xe2, 0x85, 0xa1, 0x11, 0x9f, 0x83, 0x88, 0xc5, 0xbc, 0x88, 0xdc, + 0x77, 0x75, 0xbc, 0xe9, 0x74, 0xbc, 0xd7, 0x7d, 0x97, 0x2e, 0xe0, 0xd2, 0x49, 0xfb, 0x92, 0x5a, + 0xc2, 0x24, 0xd0, 0x8f, 0xb1, 0x91, 0x27, 0x84, 0xee, 0x32, 0x5c, 0xd0, 0x0d, 0xea, 0x80, 0x04, + 0xfa, 0xbb, 0x90, 0xd3, 0xdf, 0xc4, 0xb8, 0xbe, 0x08, 0x30, 0xe7, 0xd2, 0x1d, 0x4e, 0x1c, 0x50, + 0x7b, 0xca, 0x49, 0x6b, 0xd3, 0x08, 0x2f, 0x29, 0x00, 0xaf, 0x79, 0xb1, 0xcb, 0x66, 0x24, 0x83, + 0xf0, 0x55, 0xc7, 0x09, 0x22, 0x5f, 0xd6, 0x59, 0x9b, 0xf9, 0x0e, 0x4f, 0x66, 0xf6, 0xce, 0xe0, + 0xe6, 0xd7, 0x17, 0x8f, 0x0f, 0x2a, 0x25, 0x18, 0xdf, 0x53, 0x3a, 0x34, 0x67, 0x36, 0xe8, 0xaf, + 0x08, 0x2f, 0x0f, 0x8b, 0x0b, 0x45, 0xf8, 0x01, 0xe1, 0x05, 0xf7, 0x44, 0xab, 0xc1, 0xb4, 0x5a, + 0xa3, 0xa9, 0xf5, 0x7a, 0x23, 0xaf, 0xa9, 0xc5, 0x8c, 0xa9, 0xc5, 0x04, 0x6a, 0x31, 0x37, 0x02, + 0xcf, 0xaf, 0x6f, 0x43, 0x41, 0xa8, 0x46, 0xf8, 0x14, 0x5f, 0xf4, 0xbb, 0x27, 0x95, 0x5a, 0xcb, + 0x93, 0x1f, 0x44, 0x4d, 0xd3, 0x09, 0x3a, 0x16, 0xb0, 0x95, 0xfe, 0x59, 0x15, 0xee, 0x87, 0x96, + 0xdc, 0xeb, 0x72, 0xa1, 0xdc, 0x0a, 0xbb, 0xe4, 0x0e, 0xc2, 0x4e, 0x67, 0x31, 0x51, 0xd9, 0xdd, + 0x55, 0x3c, 0x95, 0x34, 0x7b, 0x13, 0x5f, 0xcd, 0xac, 0x42, 0x82, 0xeb, 0x78, 0x5c, 0xf3, 0x99, + 0xaa, 0xe6, 0xc4, 0xfa, 0x6c, 0xb6, 0xbb, 0x5a, 0xbb, 0x7e, 0x21, 0xce, 0xc2, 0x06, 0x4d, 0xfa, + 0x0d, 0x4a, 0xb3, 0x8b, 0xcd, 0x9d, 0x20, 0x74, 0xff, 0x95, 0x4e, 0xa5, 0xb9, 0x6a, 0xf4, 0x9c, + 0x5c, 0x95, 0xc0, 0xea, 0xe7, 0xaa, 0x50, 0xad, 0x43, 0xb6, 0x79, 0x5c, 0xa5, 0x0d, 0xf3, 0xb9, + 0x4a, 0x1b, 0x27, 0x5c, 0xa5, 0x35, 0xe9, 0x6f, 0x08, 0x97, 0x4f, 0xe2, 0xb2, 0x66, 0x9b, 0xbf, + 0x11, 0xf7, 0x24, 0x3e, 0x7a, 0x9e, 0x81, 0xaa, 0x90, 0x97, 0xf1, 0x38, 0x53, 0x60, 0x14, 0xaf, + 0x15, 0xfa, 0x3b, 0xac, 0x81, 0xd6, 0x67, 0x8e, 0x0f, 0x2a, 0x53, 0xe0, 0x42, 0xad, 0x50, 0x1b, + 0xcc, 0xe8, 0xd7, 0x08, 0x57, 0x06, 0xe6, 0x07, 0xe5, 0xdd, 0xc5, 0x17, 0xe3, 0x93, 0x54, 0x0c, + 0xdf, 0x10, 0xaf, 0x40, 0x5d, 0x27, 0xa1, 0xae, 0xb1, 0xd5, 0xf9, 0x46, 0x5f, 0x47, 0xa2, 0x3f, + 0x22, 0xa0, 0xaf, 0x7b, 0x81, 0x64, 0xed, 0x1e, 0xb6, 0x67, 0xa1, 0xe4, 0x2b, 0x78, 0xda, 0xf3, + 0x9d, 0x76, 0xe4, 0xf2, 0x46, 0x72, 0x3e, 0x8f, 0xa9, 0xf3, 0xb9, 0x00, 0xcb, 0x1b, 0x70, 0x4c, + 0xef, 0x23, 0xbc, 0x90, 0x9b, 0xc3, 0x7f, 0x57, 0xd6, 0xdb, 0xb0, 0x89, 0xde, 0x15, 0x3c, 0xdc, + 0xd6, 0x97, 0x99, 0x7f, 0x78, 0x75, 0xf8, 0x0b, 0xc1, 0xe1, 0x93, 0x75, 0x05, 0xa9, 0x7d, 0x81, + 0xf0, 0xb4, 0xe8, 0x72, 0xdf, 0x8d, 0x13, 0x6e, 0xe8, 0x2c, 0xc7, 0x86, 0x65, 0xf9, 0x16, 0x64, + 0x39, 0xaf, 0x63, 0xf6, 0xd9, 0x9f, 0x2f, 0xdf, 0x42, 0xcf, 0x5a, 0x7d, 0x93, 0xdb, 0xf8, 0x52, + 0x97, 0x87, 0x5e, 0xe0, 0x26, 0xd5, 0x9e, 0x4f, 0x36, 0x4a, 0x72, 0xa7, 0xbb, 0xab, 0xc4, 0xf5, + 0x79, 0x00, 0x01, 0x89, 0x83, 0x11, 0xb5, 0x13, 0xf3, 0xf5, 0x3f, 0x2f, 0xe3, 0x8b, 0x2a, 0x71, + 0xf2, 0x3d, 0xc2, 0xa5, 0x81, 0x87, 0x0c, 0xb9, 0x99, 0xdd, 0x89, 0x67, 0x3a, 0x0a, 0x8d, 0x17, + 0xcf, 0x67, 0xa4, 0xab, 0x4d, 0x97, 0x3e, 0xfd, 0xf9, 0x8f, 0xaf, 0x46, 0x2b, 0x64, 0x11, 0xee, + 0xb0, 0x9d, 0xc0, 0x8d, 0xda, 0xbc, 0xff, 0x08, 0x22, 0x2e, 0x1e, 0xd7, 0x8c, 0x4f, 0xaa, 0x39, + 0x61, 0x32, 0x07, 0x8a, 0xf1, 0xbf, 0xa7, 0x68, 0x40, 0xd4, 0x39, 0x15, 0x75, 0x9a, 0x4c, 0x65, + 0x6e, 0xce, 0xe4, 0x33, 0x04, 0xb7, 0x5e, 0x4d, 0xa0, 0x64, 0x29, 0xc7, 0xd3, 0xe9, 0xa3, 0xc5, + 0x58, 0x1e, 0xa6, 0x36, 0x20, 0xd7, 0x34, 0x75, 0x5b, 0x0f, 0x60, 0x3a, 0x1f, 0x92, 0x6f, 0x11, + 0x26, 0xa7, 0x19, 0x8d, 0xdc, 0x18, 0x14, 0x25, 0x8f, 0xd8, 0x8d, 0xd5, 0x33, 0x6a, 0x03, 0xb4, + 0x5b, 0x0a, 0xda, 0x0b, 0xc4, 0x4c, 0x43, 0x53, 0x03, 0xbc, 0xa3, 0x2e, 0x04, 0xb1, 0xf2, 0x09, + 0x44, 0xeb, 0x81, 0x5e, 0x79, 0x48, 0xbe, 0x44, 0xb8, 0x90, 0xa5, 0x08, 0x52, 0xcb, 0x89, 0x9c, + 0xcb, 0x84, 0xc6, 0xf3, 0x67, 0xd0, 0x04, 0x7c, 0x35, 0x85, 0x8f, 0x92, 0x2a, 0xe0, 0x93, 0xb1, + 0x5a, 0xa3, 0x87, 0x32, 0x55, 0xbd, 0xcf, 0x11, 0x9e, 0x4c, 0xef, 0x6b, 0x92, 0xd7, 0x9d, 0x1c, + 0x0e, 0x31, 0x56, 0x86, 0xea, 0x01, 0x96, 0x65, 0x85, 0xa5, 0x4a, 0xca, 0x80, 0x25, 0x12, 0x3c, + 0x6c, 0xc0, 0x56, 0x14, 0x29, 0x24, 0xbd, 0x69, 0x82, 0x37, 0xd4, 0xc0, 0x69, 0xca, 0x3c, 0x83, + 0x06, 0x4f, 0x53, 0xf6, 0x91, 0x33, 0x60, 0x9a, 0xf4, 0xa3, 0x25, 0x85, 0xe2, 0x13, 0xd4, 0xff, + 0x60, 0x59, 0x19, 0x14, 0xa0, 0xef, 0x1a, 0x6e, 0xd4, 0x86, 0x2b, 0x02, 0x96, 0x45, 0x85, 0xe5, + 0x1a, 0x99, 0xcb, 0x60, 0x49, 0xae, 0xd7, 0xf5, 0xcd, 0x47, 0x87, 0x65, 0xf4, 0xf8, 0xb0, 0x8c, + 0x7e, 0x3f, 0x2c, 0xa3, 0xfd, 0xa3, 0xf2, 0xc8, 0xe3, 0xa3, 0xf2, 0xc8, 0x2f, 0x47, 0xe5, 0x91, + 0xf7, 0xad, 0x14, 0x2b, 0x6e, 0xa9, 0x60, 0xab, 0x77, 0x58, 0x53, 0x58, 0xc9, 0xe3, 0x75, 0xed, + 0x96, 0xf5, 0x51, 0xd2, 0xf2, 0x98, 0x22, 0x9b, 0xe3, 0xea, 0x09, 0x72, 0xf3, 0xef, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xa2, 0x16, 0x6a, 0x90, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/types/tx.pb.go b/x/claim/types/tx.pb.go index 6d3d0e9eb6..149f9d315a 100644 --- a/x/claim/types/tx.pb.go +++ b/x/claim/types/tx.pb.go @@ -448,45 +448,45 @@ var fileDescriptor_9d435242bf328977 = []byte{ // 646 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0xdb, 0x4e, 0x10, 0x8d, 0x7f, 0x09, 0x7f, 0xb2, 0xfc, 0xa0, 0xb0, 0x02, 0xc9, 0x58, 0xc5, 0xb1, 0x7c, 0x40, - 0x96, 0x2a, 0xec, 0x42, 0xd5, 0x4b, 0x4f, 0x25, 0xd0, 0x4a, 0x48, 0x70, 0x31, 0x48, 0x95, 0x90, - 0xaa, 0x68, 0x6d, 0x4f, 0xcd, 0xaa, 0xb6, 0x37, 0xf2, 0x6e, 0x28, 0x7c, 0x82, 0x5e, 0xf9, 0x1c, - 0xfd, 0x24, 0x1c, 0x39, 0x56, 0x3d, 0xa4, 0x15, 0x9c, 0x7b, 0xe1, 0xd4, 0x63, 0xe5, 0x5d, 0x27, - 0x38, 0x24, 0xb4, 0x1c, 0x7a, 0xb2, 0xe7, 0xbd, 0xd9, 0xb7, 0x3b, 0xf3, 0x66, 0x17, 0xad, 0x70, - 0x91, 0xd3, 0x08, 0xbc, 0x30, 0x21, 0x34, 0xf5, 0xc4, 0x99, 0xdb, 0xcd, 0x99, 0x60, 0xf8, 0x7f, - 0x05, 0xbb, 0x12, 0x36, 0x96, 0x63, 0x16, 0x33, 0x49, 0x78, 0xc5, 0x9f, 0xca, 0x31, 0xcc, 0x90, - 0xf1, 0x94, 0x71, 0x2f, 0x20, 0x1c, 0xbc, 0xd3, 0xcd, 0x00, 0x04, 0xd9, 0xf4, 0x42, 0x46, 0x33, - 0xc5, 0xdb, 0xbf, 0x34, 0xa4, 0x1f, 0xf0, 0xf8, 0x10, 0xc4, 0x36, 0xcd, 0xa3, 0x9c, 0x75, 0xb7, - 0x93, 0x84, 0x85, 0x44, 0x50, 0x96, 0x71, 0xfc, 0x14, 0x35, 0x89, 0x0a, 0x59, 0xae, 0x6b, 0x96, - 0xe6, 0x34, 0xfd, 0x3b, 0x00, 0xef, 0x23, 0x4c, 0xd4, 0x9a, 0x0e, 0x8d, 0x20, 0x13, 0xf4, 0x03, - 0x85, 0x5c, 0xff, 0xaf, 0x48, 0x6b, 0xaf, 0xdd, 0xf6, 0x5b, 0xab, 0xe7, 0x24, 0x4d, 0x5e, 0xd9, - 0xe3, 0x39, 0xb6, 0xbf, 0x54, 0x82, 0x7b, 0x43, 0x0c, 0x2f, 0xa3, 0xa9, 0x1e, 0x87, 0x9c, 0xeb, - 0x75, 0xab, 0xee, 0x34, 0x7d, 0x15, 0xe0, 0x63, 0x34, 0xf3, 0x09, 0x68, 0x7c, 0x22, 0xb8, 0xde, - 0x28, 0xf0, 0xf6, 0xeb, 0xcb, 0x7e, 0xab, 0xf6, 0xad, 0xdf, 0x5a, 0x8f, 0xa9, 0x38, 0xe9, 0x05, - 0x6e, 0xc8, 0x52, 0xaf, 0x2c, 0x51, 0x7d, 0x36, 0x78, 0xf4, 0xd1, 0x13, 0xe7, 0x5d, 0xe0, 0xee, - 0x2e, 0x84, 0xb7, 0xfd, 0xd6, 0x82, 0x3a, 0x46, 0x29, 0x63, 0xfb, 0x03, 0x41, 0xdb, 0x46, 0xd6, - 0x43, 0x95, 0xfb, 0xc0, 0xbb, 0x2c, 0xe3, 0x60, 0x3b, 0x08, 0x1f, 0xf0, 0x78, 0xa7, 0x68, 0xf0, - 0xdb, 0x1c, 0x60, 0x3b, 0x65, 0xbd, 0x4c, 0x60, 0x8c, 0x1a, 0xc5, 0xf1, 0xca, 0x96, 0xc8, 0x7f, - 0xfb, 0x42, 0x43, 0xc6, 0x78, 0xea, 0x40, 0x08, 0xe7, 0x68, 0x41, 0xda, 0x04, 0x51, 0x87, 0x48, - 0x46, 0xd6, 0x39, 0xb7, 0xb5, 0xea, 0xaa, 0x63, 0xbb, 0x85, 0x41, 0x6e, 0x69, 0x90, 0xbb, 0xc3, - 0x68, 0xd6, 0x7e, 0x5e, 0x94, 0xfa, 0xe5, 0x7b, 0xcb, 0x79, 0x44, 0xa9, 0xc5, 0x02, 0xee, 0xcf, - 0x97, 0x5b, 0xa8, 0xbd, 0xed, 0x9f, 0x1a, 0x5a, 0x2c, 0x8e, 0x94, 0x03, 0x11, 0x50, 0x16, 0x89, - 0x2d, 0x34, 0x17, 0xd1, 0x62, 0x70, 0x82, 0xde, 0x9d, 0xab, 0x55, 0x08, 0x9b, 0x08, 0xdd, 0xf7, - 0xd3, 0xaf, 0x20, 0x78, 0x15, 0xcd, 0x86, 0x27, 0x84, 0x66, 0x1d, 0x1a, 0xe9, 0xd3, 0x92, 0x9d, - 0x91, 0xf1, 0x5e, 0x54, 0x98, 0x18, 0x41, 0xc6, 0x52, 0x7d, 0x4a, 0xe2, 0x2a, 0xc0, 0x6b, 0x08, - 0x71, 0x41, 0x72, 0xd1, 0x11, 0x34, 0x05, 0xbd, 0x6e, 0x69, 0x4e, 0xc3, 0x6f, 0x4a, 0xe4, 0x88, - 0xa6, 0x80, 0x0d, 0x34, 0x1b, 0xf5, 0x72, 0xd9, 0x78, 0xbd, 0x21, 0xc9, 0x61, 0x8c, 0x9f, 0xa1, - 0x25, 0xd2, 0x13, 0xac, 0x4b, 0x13, 0x26, 0x3a, 0x90, 0x91, 0x20, 0x81, 0x48, 0x9f, 0xb1, 0x34, - 0x67, 0xd6, 0x5f, 0x1c, 0x12, 0x6f, 0x14, 0x6e, 0x1b, 0x72, 0x94, 0x47, 0xca, 0x1d, 0x1a, 0x79, - 0x24, 0x5b, 0xb1, 0x0b, 0x09, 0xfc, 0xc3, 0x56, 0x94, 0x3b, 0x8e, 0xa8, 0x0e, 0x76, 0xdc, 0xfa, - 0x5c, 0x47, 0xf5, 0x03, 0x1e, 0x63, 0x86, 0x56, 0x26, 0xdf, 0xae, 0x75, 0xb7, 0x7a, 0x7f, 0xdd, - 0x87, 0x66, 0xd1, 0x70, 0x1f, 0x97, 0x37, 0x1c, 0xb5, 0xf7, 0xe8, 0xc9, 0xfd, 0x81, 0xb5, 0xc6, - 0x24, 0xee, 0x65, 0x18, 0xce, 0xdf, 0x32, 0x86, 0xf2, 0xef, 0xd0, 0xfc, 0xe8, 0x44, 0x99, 0xe3, - 0x4b, 0xab, 0xbc, 0xb1, 0xfe, 0x67, 0xbe, 0x2a, 0x3c, 0xea, 0xcf, 0xb8, 0xf0, 0x08, 0x3f, 0x41, - 0x78, 0xa2, 0x13, 0xed, 0xbd, 0xcb, 0x6b, 0x53, 0xbb, 0xba, 0x36, 0xb5, 0x1f, 0xd7, 0xa6, 0x76, - 0x71, 0x63, 0xd6, 0xae, 0x6e, 0xcc, 0xda, 0xd7, 0x1b, 0xb3, 0x76, 0xec, 0x55, 0xae, 0xd6, 0xa1, - 0xd4, 0xda, 0xd8, 0x27, 0x01, 0xf7, 0xca, 0xf7, 0xf6, 0x74, 0xf3, 0xa5, 0x77, 0x36, 0x78, 0x75, - 0x8b, 0x7b, 0x16, 0x4c, 0xcb, 0x57, 0xf3, 0xc5, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x6d, - 0xad, 0xb0, 0x92, 0x05, 0x00, 0x00, + 0x96, 0x2a, 0xec, 0x42, 0xa5, 0x1e, 0x7a, 0x2a, 0x81, 0x56, 0x42, 0x82, 0x8b, 0x41, 0xaa, 0x84, + 0x54, 0x45, 0x6b, 0x7b, 0x6a, 0x56, 0xb5, 0xbd, 0x91, 0x77, 0x43, 0xe1, 0x13, 0xf4, 0xca, 0xe7, + 0xe8, 0x27, 0xe1, 0xc8, 0xb1, 0xea, 0x21, 0xad, 0xe0, 0xdc, 0x0b, 0xa7, 0x1e, 0x2b, 0xef, 0x3a, + 0xc1, 0x21, 0xa1, 0xe5, 0xd0, 0x93, 0x3d, 0xef, 0xcd, 0xbe, 0xdd, 0x99, 0x37, 0xbb, 0x68, 0x85, + 0x8b, 0x9c, 0x46, 0xe0, 0x85, 0x09, 0xa1, 0xa9, 0x27, 0xce, 0xdc, 0x6e, 0xce, 0x04, 0xc3, 0xff, + 0x2b, 0xd8, 0x95, 0xb0, 0xb1, 0x1c, 0xb3, 0x98, 0x49, 0xc2, 0x2b, 0xfe, 0x54, 0x8e, 0x61, 0x86, + 0x8c, 0xa7, 0x8c, 0x7b, 0x01, 0xe1, 0xe0, 0x9d, 0x6e, 0x06, 0x20, 0xc8, 0xa6, 0x17, 0x32, 0x9a, + 0x29, 0xde, 0xfe, 0xa5, 0x21, 0xfd, 0x80, 0xc7, 0x87, 0x20, 0xb6, 0x69, 0x1e, 0xe5, 0xac, 0xbb, + 0x9d, 0x24, 0x2c, 0x24, 0x82, 0xb2, 0x8c, 0xe3, 0xa7, 0xa8, 0x49, 0x54, 0xc8, 0x72, 0x5d, 0xb3, + 0x34, 0xa7, 0xe9, 0xdf, 0x01, 0x78, 0x1f, 0x61, 0xa2, 0xd6, 0x74, 0x68, 0x04, 0x99, 0xa0, 0x1f, + 0x28, 0xe4, 0xfa, 0x7f, 0x45, 0x5a, 0x7b, 0xed, 0xb6, 0xdf, 0x5a, 0x3d, 0x27, 0x69, 0xf2, 0xca, + 0x1e, 0xcf, 0xb1, 0xfd, 0xa5, 0x12, 0xdc, 0x1b, 0x62, 0x78, 0x19, 0x4d, 0xf5, 0x38, 0xe4, 0x5c, + 0xaf, 0x5b, 0x75, 0xa7, 0xe9, 0xab, 0x00, 0x1f, 0xa3, 0x99, 0x4f, 0x40, 0xe3, 0x13, 0xc1, 0xf5, + 0x46, 0x81, 0xb7, 0x5f, 0x5f, 0xf6, 0x5b, 0xb5, 0x6f, 0xfd, 0xd6, 0x7a, 0x4c, 0xc5, 0x49, 0x2f, + 0x70, 0x43, 0x96, 0x7a, 0x65, 0x89, 0xea, 0xb3, 0xc1, 0xa3, 0x8f, 0x9e, 0x38, 0xef, 0x02, 0x77, + 0x77, 0x21, 0xbc, 0xed, 0xb7, 0x16, 0xd4, 0x31, 0x4a, 0x19, 0xdb, 0x1f, 0x08, 0xda, 0x36, 0xb2, + 0x1e, 0xaa, 0xdc, 0x07, 0xde, 0x65, 0x19, 0x07, 0xdb, 0x41, 0xf8, 0x80, 0xc7, 0x3b, 0x45, 0x83, + 0xdf, 0xe6, 0x00, 0xdb, 0x29, 0xeb, 0x65, 0x02, 0x63, 0xd4, 0x28, 0x8e, 0x57, 0xb6, 0x44, 0xfe, + 0xdb, 0x17, 0x1a, 0x32, 0xc6, 0x53, 0x07, 0x42, 0x38, 0x47, 0x0b, 0xd2, 0x26, 0x88, 0x3a, 0x44, + 0x32, 0xb2, 0xce, 0xb9, 0xad, 0x55, 0x57, 0x1d, 0xdb, 0x2d, 0x0c, 0x72, 0x4b, 0x83, 0xdc, 0x1d, + 0x46, 0xb3, 0xf6, 0xf3, 0xa2, 0xd4, 0x2f, 0xdf, 0x5b, 0xce, 0x23, 0x4a, 0x2d, 0x16, 0x70, 0x7f, + 0xbe, 0xdc, 0x42, 0xed, 0x6d, 0xff, 0xd4, 0xd0, 0x62, 0x71, 0xa4, 0x1c, 0x88, 0x80, 0xb2, 0x48, + 0x6c, 0xa1, 0xb9, 0x88, 0x16, 0x83, 0x13, 0xf4, 0xee, 0x5c, 0xad, 0x42, 0xd8, 0x44, 0xe8, 0xbe, + 0x9f, 0x7e, 0x05, 0xc1, 0xab, 0x68, 0x36, 0x3c, 0x21, 0x34, 0xeb, 0xd0, 0x48, 0x9f, 0x96, 0xec, + 0x8c, 0x8c, 0xf7, 0xa2, 0xc2, 0xc4, 0x08, 0x32, 0x96, 0xea, 0x53, 0x12, 0x57, 0x01, 0x5e, 0x43, + 0x88, 0x0b, 0x92, 0x8b, 0x8e, 0xa0, 0x29, 0xe8, 0x75, 0x4b, 0x73, 0x1a, 0x7e, 0x53, 0x22, 0x47, + 0x34, 0x05, 0x6c, 0xa0, 0xd9, 0xa8, 0x97, 0xcb, 0xc6, 0xeb, 0x0d, 0x49, 0x0e, 0x63, 0xfc, 0x0c, + 0x2d, 0x91, 0x9e, 0x60, 0x5d, 0x9a, 0x30, 0xd1, 0x81, 0x8c, 0x04, 0x09, 0x44, 0xfa, 0x8c, 0xa5, + 0x39, 0xb3, 0xfe, 0xe2, 0x90, 0x78, 0xa3, 0x70, 0xdb, 0x90, 0xa3, 0x3c, 0x52, 0xee, 0xd0, 0xc8, + 0x23, 0xd9, 0x8a, 0x5d, 0x48, 0xe0, 0x1f, 0xb6, 0xa2, 0xdc, 0x71, 0x44, 0x75, 0xb0, 0xe3, 0xd6, + 0xe7, 0x3a, 0xaa, 0x1f, 0xf0, 0x18, 0x33, 0xb4, 0x32, 0xf9, 0x76, 0xad, 0xbb, 0xd5, 0xfb, 0xeb, + 0x3e, 0x34, 0x8b, 0x86, 0xfb, 0xb8, 0xbc, 0xe1, 0xa8, 0xbd, 0x47, 0x4f, 0xee, 0x0f, 0xac, 0x35, + 0x26, 0x71, 0x2f, 0xc3, 0x70, 0xfe, 0x96, 0x31, 0x94, 0x7f, 0x87, 0xe6, 0x47, 0x27, 0xca, 0x1c, + 0x5f, 0x5a, 0xe5, 0x8d, 0xf5, 0x3f, 0xf3, 0x55, 0xe1, 0x51, 0x7f, 0xc6, 0x85, 0x47, 0xf8, 0x09, + 0xc2, 0x13, 0x9d, 0x68, 0xef, 0x5d, 0x5e, 0x9b, 0xda, 0xd5, 0xb5, 0xa9, 0xfd, 0xb8, 0x36, 0xb5, + 0x8b, 0x1b, 0xb3, 0x76, 0x75, 0x63, 0xd6, 0xbe, 0xde, 0x98, 0xb5, 0x63, 0xaf, 0x72, 0xb5, 0x0e, + 0xa5, 0xd6, 0xc6, 0x3e, 0x09, 0xb8, 0x57, 0xbe, 0xb7, 0xa7, 0x9b, 0x2f, 0xbd, 0xb3, 0xc1, 0xab, + 0x5b, 0xdc, 0xb3, 0x60, 0x5a, 0xbe, 0x9a, 0x2f, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x54, + 0x48, 0xc6, 0x92, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/client/cli/tx.go b/x/claim/vesting/client/cli/tx.go index fe233f504a..4a8fa5c351 100644 --- a/x/claim/vesting/client/cli/tx.go +++ b/x/claim/vesting/client/cli/tx.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" ) // GetTxCmd returns stride vesting module's transaction commands. diff --git a/x/claim/vesting/client/testutil/suite.go b/x/claim/vesting/client/testutil/suite.go index c63a5554e5..4388c96d60 100644 --- a/x/claim/vesting/client/testutil/suite.go +++ b/x/claim/vesting/client/testutil/suite.go @@ -3,7 +3,7 @@ package testutil import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/testutil/network" + "github.com/Stride-Labs/stride/v16/testutil/network" ) type IntegrationTestSuite struct { diff --git a/x/claim/vesting/handler.go b/x/claim/vesting/handler.go index e071a55613..7695a15f0c 100644 --- a/x/claim/vesting/handler.go +++ b/x/claim/vesting/handler.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" ) // NewHandler returns a handler for x/auth message types. diff --git a/x/claim/vesting/module.go b/x/claim/vesting/module.go index 1b20e4eca7..4afaecc4d8 100644 --- a/x/claim/vesting/module.go +++ b/x/claim/vesting/module.go @@ -15,8 +15,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/client/cli" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/client/cli" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" ) var ( diff --git a/x/claim/vesting/msg_server.go b/x/claim/vesting/msg_server.go index 6710301843..79d6eaa6a3 100644 --- a/x/claim/vesting/msg_server.go +++ b/x/claim/vesting/msg_server.go @@ -3,7 +3,7 @@ package vesting import ( "github.com/cosmos/cosmos-sdk/x/auth/keeper" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" ) type msgServer struct { diff --git a/x/claim/vesting/types/codec.go b/x/claim/vesting/types/codec.go index 32a702052f..093674ea75 100644 --- a/x/claim/vesting/types/codec.go +++ b/x/claim/vesting/types/codec.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/msgservice" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/exported" ) // RegisterLegacyAminoCodec registers the vesting interfaces and concrete types on the diff --git a/x/claim/vesting/types/common_test.go b/x/claim/vesting/types/common_test.go index 35ae88d744..bdbd9e76d5 100644 --- a/x/claim/vesting/types/common_test.go +++ b/x/claim/vesting/types/common_test.go @@ -1,7 +1,7 @@ package types_test import ( - strideApp "github.com/Stride-Labs/stride/v15/app" + strideApp "github.com/Stride-Labs/stride/v16/app" ) var ( diff --git a/x/claim/vesting/types/tx.pb.go b/x/claim/vesting/types/tx.pb.go index 2cdffbb46b..076b733c4f 100644 --- a/x/claim/vesting/types/tx.pb.go +++ b/x/claim/vesting/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_5ebed07aad5e90bd = []byte{ 0xd3, 0x9d, 0x02, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x3c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0xac, 0x57, 0xd7, 0x27, 0x31, - 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0xa9, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, + 0xa9, 0x58, 0x1f, 0x66, 0x81, 0xa1, 0x99, 0x7e, 0x85, 0x7e, 0x72, 0x4e, 0x62, 0x66, 0x2e, 0xc2, 0xb2, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x85, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xcf, 0x85, 0xe6, 0xbe, 0x8b, 0x00, 0x00, 0x00, + 0xbc, 0xbc, 0xce, 0xad, 0x8b, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/claim/vesting/types/vesting.pb.go b/x/claim/vesting/types/vesting.pb.go index 263c1f8855..fb18905710 100644 --- a/x/claim/vesting/types/vesting.pb.go +++ b/x/claim/vesting/types/vesting.pb.go @@ -187,7 +187,7 @@ var fileDescriptor_41f0278a453c26b3 = []byte{ // 590 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xd3, 0x3e, 0x1c, 0x8d, 0xd7, 0xae, 0xff, 0xfd, 0x5d, 0xd8, 0x46, 0x18, 0x25, 0x4c, 0x23, 0xa9, 0x72, 0xea, - 0x65, 0x09, 0x1d, 0x42, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, + 0x65, 0x09, 0x1d, 0x12, 0x48, 0xbd, 0x11, 0x24, 0xa4, 0x89, 0x1d, 0x20, 0x4c, 0x1c, 0x76, 0x89, 0x9c, 0xc4, 0xa4, 0x16, 0x4d, 0x5c, 0xc5, 0xee, 0x44, 0xbf, 0x01, 0x12, 0x17, 0x90, 0x38, 0x70, 0xdc, 0x99, 0x4f, 0x32, 0x89, 0x4b, 0xc5, 0x89, 0x53, 0x41, 0xad, 0xf8, 0x02, 0xfb, 0x04, 0x28, 0xb6, 0xd3, 0xb2, 0xec, 0x50, 0x8d, 0x53, 0x62, 0xff, 0xfc, 0x9e, 0xdf, 0xef, 0xd9, 0xcf, 0x70, @@ -221,7 +221,7 @@ var fileDescriptor_41f0278a453c26b3 = []byte{ 0x99, 0x99, 0xe0, 0xd7, 0xcc, 0x04, 0x1f, 0xe7, 0xa6, 0x36, 0x99, 0x9b, 0xda, 0x8f, 0xb9, 0xa9, 0x9d, 0x3c, 0xfe, 0xcb, 0x5a, 0xe9, 0xc4, 0xfe, 0x11, 0x0a, 0x99, 0x5b, 0xbe, 0x5f, 0xdd, 0x47, 0xee, 0x3b, 0x37, 0x1a, 0x20, 0x92, 0x2e, 0xde, 0x32, 0xe1, 0x77, 0xd8, 0x10, 0x8f, 0xcc, 0xc3, - 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x82, 0x51, 0x28, 0x89, 0xea, 0x04, 0x00, 0x00, + 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf1, 0x68, 0x00, 0x9a, 0xea, 0x04, 0x00, 0x00, } func (m *BaseVestingAccount) Marshal() (dAtA []byte, err error) { diff --git a/x/claim/vesting/types/vesting_account.go b/x/claim/vesting/types/vesting_account.go index e4ab8b95ff..51dd001451 100644 --- a/x/claim/vesting/types/vesting_account.go +++ b/x/claim/vesting/types/vesting_account.go @@ -12,8 +12,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/utils" - vestexported "github.com/Stride-Labs/stride/v15/x/claim/vesting/exported" + "github.com/Stride-Labs/stride/v16/utils" + vestexported "github.com/Stride-Labs/stride/v16/x/claim/vesting/exported" ) // Compile-time type assertions diff --git a/x/claim/vesting/types/vesting_account_test.go b/x/claim/vesting/types/vesting_account_test.go index 23f71da458..3b11ac7077 100644 --- a/x/claim/vesting/types/vesting_account_test.go +++ b/x/claim/vesting/types/vesting_account_test.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v15/x/claim/vesting/types" + "github.com/Stride-Labs/stride/v16/x/claim/vesting/types" ) var ( diff --git a/x/epochs/client/cli/query.go b/x/epochs/client/cli/query.go index 615ffe68f1..93557edd6e 100644 --- a/x/epochs/client/cli/query.go +++ b/x/epochs/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/epochs/genesis.go b/x/epochs/genesis.go index 556da21c95..cfc69ab391 100644 --- a/x/epochs/genesis.go +++ b/x/epochs/genesis.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/epochs/keeper" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/keeper" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/epochs/genesis_test.go b/x/epochs/genesis_test.go index 8d4ab5dae7..6d0c99e32e 100644 --- a/x/epochs/genesis_test.go +++ b/x/epochs/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/epochs" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/epochs" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) func TestGenesis(t *testing.T) { diff --git a/x/epochs/handler.go b/x/epochs/handler.go index bf9caa9457..4aa43bd61b 100644 --- a/x/epochs/handler.go +++ b/x/epochs/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/epochs/keeper" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/keeper" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // NewHandler returns a handler for epochs module messages diff --git a/x/epochs/keeper/abci.go b/x/epochs/keeper/abci.go index 9e65a0535f..a5952d9a0f 100644 --- a/x/epochs/keeper/abci.go +++ b/x/epochs/keeper/abci.go @@ -9,8 +9,8 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // BeginBlocker of epochs module diff --git a/x/epochs/keeper/abci_test.go b/x/epochs/keeper/abci_test.go index d0e29c8420..0283688d5b 100644 --- a/x/epochs/keeper/abci_test.go +++ b/x/epochs/keeper/abci_test.go @@ -4,8 +4,8 @@ import ( "fmt" "time" - "github.com/Stride-Labs/stride/v15/x/epochs" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochInfoChangesBeginBlockerAndInitGenesis() { diff --git a/x/epochs/keeper/epoch.go b/x/epochs/keeper/epoch.go index 3441b2645c..d11c2ebb71 100644 --- a/x/epochs/keeper/epoch.go +++ b/x/epochs/keeper/epoch.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // GetEpochInfo returns epoch info by identifier diff --git a/x/epochs/keeper/epoch_test.go b/x/epochs/keeper/epoch_test.go index 222461733d..3bfd80d3aa 100644 --- a/x/epochs/keeper/epoch_test.go +++ b/x/epochs/keeper/epoch_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) func (suite *KeeperTestSuite) TestEpochLifeCycle() { diff --git a/x/epochs/keeper/grpc_query.go b/x/epochs/keeper/grpc_query.go index 5a46563c29..971f3234f9 100644 --- a/x/epochs/keeper/grpc_query.go +++ b/x/epochs/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/epochs/keeper/grpc_query_test.go b/x/epochs/keeper/grpc_query_test.go index 45f8ac8d91..f19bed05ad 100644 --- a/x/epochs/keeper/grpc_query_test.go +++ b/x/epochs/keeper/grpc_query_test.go @@ -6,7 +6,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) func (suite *KeeperTestSuite) TestQueryEpochInfos() { diff --git a/x/epochs/keeper/hooks.go b/x/epochs/keeper/hooks.go index 38cdeba2da..6ae007f34f 100644 --- a/x/epochs/keeper/hooks.go +++ b/x/epochs/keeper/hooks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // AfterEpochEnd executes the indicated hook after epochs ends diff --git a/x/epochs/keeper/keeper.go b/x/epochs/keeper/keeper.go index be714ccd2e..a7e193ce19 100644 --- a/x/epochs/keeper/keeper.go +++ b/x/epochs/keeper/keeper.go @@ -8,7 +8,7 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // Keeper of this module maintains collections of epochs and hooks. diff --git a/x/epochs/keeper/keeper_test.go b/x/epochs/keeper/keeper_test.go index c4657733bc..e53283193a 100644 --- a/x/epochs/keeper/keeper_test.go +++ b/x/epochs/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) type KeeperTestSuite struct { diff --git a/x/epochs/module.go b/x/epochs/module.go index 23154d0765..4c235c428f 100644 --- a/x/epochs/module.go +++ b/x/epochs/module.go @@ -20,10 +20,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/epochs/client/cli" - "github.com/Stride-Labs/stride/v15/x/epochs/keeper" - "github.com/Stride-Labs/stride/v15/x/epochs/simulation" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/client/cli" + "github.com/Stride-Labs/stride/v16/x/epochs/keeper" + "github.com/Stride-Labs/stride/v16/x/epochs/simulation" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) var ( diff --git a/x/epochs/simulation/genesis.go b/x/epochs/simulation/genesis.go index ac927984fc..a7618bd390 100644 --- a/x/epochs/simulation/genesis.go +++ b/x/epochs/simulation/genesis.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // RandomizedGenState generates a random GenesisState for mint diff --git a/x/epochs/types/genesis.pb.go b/x/epochs/types/genesis.pb.go index 3f75668515..6c2636cb6c 100644 --- a/x/epochs/types/genesis.pb.go +++ b/x/epochs/types/genesis.pb.go @@ -175,33 +175,33 @@ var fileDescriptor_92af8154b2eb736d = []byte{ // 468 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x6f, 0xd3, 0x40, 0x14, 0xc7, 0x73, 0x24, 0x84, 0xe6, 0xda, 0x0a, 0x71, 0x2a, 0x70, 0x04, 0x61, 0x5b, 0x66, 0xb1, - 0x04, 0xd8, 0xb4, 0xfc, 0x18, 0x60, 0x0b, 0xbf, 0x11, 0x93, 0xc3, 0x80, 0x58, 0x22, 0x27, 0xb9, - 0x9c, 0x4f, 0xaa, 0x7d, 0x96, 0xef, 0x19, 0x91, 0x8d, 0x99, 0xa9, 0x23, 0x7f, 0x52, 0xc7, 0x8e, - 0x4c, 0x06, 0x25, 0x1b, 0x63, 0xff, 0x02, 0xe4, 0x3b, 0x3b, 0xa4, 0x04, 0xd4, 0xcd, 0xbe, 0xcf, - 0xf7, 0x7d, 0xbf, 0xf7, 0x9e, 0xde, 0xe1, 0x9b, 0x0a, 0x72, 0x31, 0x65, 0x01, 0xcb, 0xe4, 0x24, - 0x56, 0x01, 0x67, 0x29, 0x53, 0x42, 0xf9, 0x59, 0x2e, 0x41, 0x92, 0x5d, 0x03, 0x7d, 0x03, 0xfb, - 0x7b, 0x5c, 0x72, 0xa9, 0x49, 0x50, 0x7d, 0x19, 0x51, 0xdf, 0xe2, 0x52, 0xf2, 0x43, 0x16, 0xe8, - 0xbf, 0x71, 0x31, 0x0b, 0xa6, 0x45, 0x1e, 0x81, 0x90, 0x69, 0xcd, 0xed, 0xbf, 0x39, 0x88, 0x84, - 0x29, 0x88, 0x92, 0xcc, 0x08, 0xdc, 0xaf, 0x1d, 0xdc, 0x7b, 0x51, 0x25, 0xbc, 0x49, 0x67, 0x92, - 0x58, 0x18, 0x8b, 0x29, 0x4b, 0x41, 0xcc, 0x04, 0xcb, 0x29, 0x72, 0x90, 0xd7, 0x0b, 0xd7, 0x4e, - 0xc8, 0x07, 0x8c, 0x15, 0x44, 0x39, 0x8c, 0x2a, 0x1b, 0x7a, 0xc1, 0x41, 0xde, 0xf6, 0x41, 0xdf, - 0x37, 0x19, 0x7e, 0x93, 0xe1, 0xbf, 0x6f, 0x32, 0x06, 0xb7, 0x8e, 0x4b, 0xbb, 0x75, 0x5a, 0xda, - 0x57, 0xe6, 0x51, 0x72, 0xf8, 0xc4, 0xfd, 0x53, 0xeb, 0x1e, 0xfd, 0xb0, 0x51, 0xd8, 0xd3, 0x07, - 0x95, 0x9c, 0xc4, 0x78, 0xab, 0xb9, 0x3a, 0x6d, 0x6b, 0xdf, 0x1b, 0x1b, 0xbe, 0xcf, 0x6b, 0xc1, - 0x60, 0xbf, 0xb2, 0xfd, 0x55, 0xda, 0xa4, 0x29, 0xb9, 0x2b, 0x13, 0x01, 0x2c, 0xc9, 0x60, 0x7e, - 0x5a, 0xda, 0x97, 0x4d, 0x58, 0xc3, 0xdc, 0x6f, 0x55, 0xd4, 0xca, 0x9d, 0xdc, 0xc6, 0xbb, 0x93, - 0x22, 0xcf, 0x59, 0x0a, 0x23, 0x3d, 0x5a, 0xda, 0x71, 0x90, 0xd7, 0x0e, 0x77, 0xea, 0x43, 0x3d, - 0x0c, 0xf2, 0x05, 0x61, 0x7a, 0x46, 0x35, 0x5a, 0xeb, 0xfb, 0xe2, 0xb9, 0x7d, 0xdf, 0xa9, 0xfb, - 0xb6, 0xcd, 0x55, 0xfe, 0xe7, 0x64, 0xa6, 0x70, 0x75, 0x3d, 0x79, 0xb8, 0x9a, 0xc8, 0x43, 0x7c, - 0xcd, 0xe8, 0x27, 0xb2, 0x48, 0x41, 0xa4, 0xdc, 0x14, 0xb2, 0x29, 0xed, 0x3a, 0xc8, 0xdb, 0x0a, - 0xf7, 0x34, 0x7d, 0x56, 0xc3, 0xa1, 0x61, 0xe4, 0x29, 0xee, 0xff, 0x2b, 0x2d, 0x66, 0x82, 0xc7, - 0x40, 0x2f, 0xe9, 0x56, 0xaf, 0x6f, 0x04, 0xbe, 0xd6, 0xd8, 0x7d, 0x89, 0x77, 0x5e, 0x99, 0x1d, - 0x1c, 0x42, 0x04, 0x8c, 0x3c, 0xc6, 0x5d, 0xb3, 0x7d, 0x14, 0x39, 0x6d, 0x6f, 0xfb, 0x80, 0xfa, - 0x67, 0x76, 0xd2, 0x5f, 0x2d, 0xce, 0xa0, 0x53, 0x35, 0x1c, 0xd6, 0xea, 0xc1, 0xdb, 0xe3, 0x85, - 0x85, 0x4e, 0x16, 0x16, 0xfa, 0xb9, 0xb0, 0xd0, 0xd1, 0xd2, 0x6a, 0x9d, 0x2c, 0xad, 0xd6, 0xf7, - 0xa5, 0xd5, 0xfa, 0x78, 0x9f, 0x0b, 0x88, 0x8b, 0xb1, 0x3f, 0x91, 0x49, 0x30, 0xd4, 0x5e, 0xf7, - 0xde, 0x45, 0x63, 0x15, 0xd4, 0x0f, 0xe1, 0xd3, 0xfe, 0xa3, 0xe0, 0x73, 0xf3, 0x1c, 0x60, 0x9e, - 0x31, 0x35, 0xee, 0xea, 0xf1, 0x3e, 0xf8, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x94, 0x86, 0x88, 0x1c, + 0x04, 0xd8, 0xb4, 0xa0, 0x0e, 0xb0, 0x85, 0xdf, 0x88, 0xc9, 0x61, 0x40, 0x2c, 0x91, 0x93, 0x5c, + 0xce, 0x27, 0xd5, 0x3e, 0xcb, 0xf7, 0x8c, 0xc8, 0xc6, 0xcc, 0xd4, 0x91, 0x3f, 0xa9, 0x63, 0x47, + 0x26, 0x83, 0x92, 0x8d, 0xb1, 0x7f, 0x01, 0xf2, 0x9d, 0x1d, 0x52, 0x02, 0xea, 0x66, 0xdf, 0xe7, + 0xfb, 0xbe, 0xdf, 0x7b, 0x4f, 0xef, 0xf0, 0x6d, 0x05, 0xb9, 0x98, 0xb2, 0x80, 0x65, 0x72, 0x12, + 0xab, 0x80, 0xb3, 0x94, 0x29, 0xa1, 0xfc, 0x2c, 0x97, 0x20, 0xc9, 0xae, 0x81, 0xbe, 0x81, 0xfd, + 0x3d, 0x2e, 0xb9, 0xd4, 0x24, 0xa8, 0xbe, 0x8c, 0xa8, 0x6f, 0x71, 0x29, 0xf9, 0x11, 0x0b, 0xf4, + 0xdf, 0xb8, 0x98, 0x05, 0xd3, 0x22, 0x8f, 0x40, 0xc8, 0xb4, 0xe6, 0xf6, 0xdf, 0x1c, 0x44, 0xc2, + 0x14, 0x44, 0x49, 0x66, 0x04, 0xee, 0xd7, 0x0e, 0xee, 0xbd, 0xa8, 0x12, 0xde, 0xa4, 0x33, 0x49, + 0x2c, 0x8c, 0xc5, 0x94, 0xa5, 0x20, 0x66, 0x82, 0xe5, 0x14, 0x39, 0xc8, 0xeb, 0x85, 0x6b, 0x27, + 0xe4, 0x03, 0xc6, 0x0a, 0xa2, 0x1c, 0x46, 0x95, 0x0d, 0xbd, 0xe4, 0x20, 0x6f, 0xfb, 0xa0, 0xef, + 0x9b, 0x0c, 0xbf, 0xc9, 0xf0, 0xdf, 0x37, 0x19, 0x83, 0x3b, 0x27, 0xa5, 0xdd, 0x3a, 0x2b, 0xed, + 0x6b, 0xf3, 0x28, 0x39, 0x7a, 0xe2, 0xfe, 0xa9, 0x75, 0x8f, 0x7f, 0xd8, 0x28, 0xec, 0xe9, 0x83, + 0x4a, 0x4e, 0x62, 0xbc, 0xd5, 0x5c, 0x9d, 0xb6, 0xb5, 0xef, 0xad, 0x0d, 0xdf, 0xe7, 0xb5, 0x60, + 0xb0, 0x5f, 0xd9, 0xfe, 0x2a, 0x6d, 0xd2, 0x94, 0xdc, 0x97, 0x89, 0x00, 0x96, 0x64, 0x30, 0x3f, + 0x2b, 0xed, 0xab, 0x26, 0xac, 0x61, 0xee, 0xb7, 0x2a, 0x6a, 0xe5, 0x4e, 0xee, 0xe2, 0xdd, 0x49, + 0x91, 0xe7, 0x2c, 0x85, 0x91, 0x1e, 0x2d, 0xed, 0x38, 0xc8, 0x6b, 0x87, 0x3b, 0xf5, 0xa1, 0x1e, + 0x06, 0xf9, 0x82, 0x30, 0x3d, 0xa7, 0x1a, 0xad, 0xf5, 0x7d, 0xf9, 0xc2, 0xbe, 0xef, 0xd5, 0x7d, + 0xdb, 0xe6, 0x2a, 0xff, 0x73, 0x32, 0x53, 0xb8, 0xbe, 0x9e, 0x3c, 0x5c, 0x4d, 0xe4, 0x31, 0xbe, + 0x61, 0xf4, 0x13, 0x59, 0xa4, 0x20, 0x52, 0x6e, 0x0a, 0xd9, 0x94, 0x76, 0x1d, 0xe4, 0x6d, 0x85, + 0x7b, 0x9a, 0x3e, 0xab, 0xe1, 0xd0, 0x30, 0xf2, 0x14, 0xf7, 0xff, 0x95, 0x16, 0x33, 0xc1, 0x63, + 0xa0, 0x57, 0x74, 0xab, 0x37, 0x37, 0x02, 0x5f, 0x6b, 0xec, 0xbe, 0xc4, 0x3b, 0xaf, 0xcc, 0x0e, + 0x0e, 0x21, 0x02, 0x46, 0x0e, 0x71, 0xd7, 0x6c, 0x1f, 0x45, 0x4e, 0xdb, 0xdb, 0x3e, 0xa0, 0xfe, + 0xb9, 0x9d, 0xf4, 0x57, 0x8b, 0x33, 0xe8, 0x54, 0x0d, 0x87, 0xb5, 0x7a, 0xf0, 0xf6, 0x64, 0x61, + 0xa1, 0xd3, 0x85, 0x85, 0x7e, 0x2e, 0x2c, 0x74, 0xbc, 0xb4, 0x5a, 0xa7, 0x4b, 0xab, 0xf5, 0x7d, + 0x69, 0xb5, 0x3e, 0x3e, 0xe4, 0x02, 0xe2, 0x62, 0xec, 0x4f, 0x64, 0x12, 0x0c, 0xb5, 0xd7, 0x83, + 0x77, 0xd1, 0x58, 0x05, 0xf5, 0x43, 0xf8, 0xb4, 0x7f, 0x18, 0x7c, 0x6e, 0x9e, 0x03, 0xcc, 0x33, + 0xa6, 0xc6, 0x5d, 0x3d, 0xde, 0x47, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x2f, 0x96, 0x44, 0x2c, 0x03, 0x00, 0x00, } diff --git a/x/epochs/types/query.pb.go b/x/epochs/types/query.pb.go index faf767b2e6..4b03437239 100644 --- a/x/epochs/types/query.pb.go +++ b/x/epochs/types/query.pb.go @@ -317,36 +317,36 @@ var fileDescriptor_de81e87fff8f1327 = []byte{ // 508 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x4d, 0x6f, 0xd3, 0x30, 0x18, 0xae, 0x57, 0x36, 0x69, 0xef, 0xb6, 0x8b, 0xc5, 0x47, 0xdb, 0xa1, 0x30, 0xc2, 0xd6, 0x16, - 0x04, 0x36, 0x2d, 0x5f, 0x12, 0x27, 0x04, 0x02, 0x04, 0x42, 0x08, 0xc2, 0x8d, 0xcb, 0x48, 0x32, - 0x2f, 0xb3, 0xb4, 0xd9, 0x59, 0xec, 0x4e, 0xec, 0xc2, 0x81, 0x03, 0x67, 0x04, 0x37, 0xee, 0xfc, - 0x97, 0x1d, 0x27, 0x71, 0xe1, 0x84, 0x50, 0xcb, 0x0f, 0x41, 0xb1, 0xbd, 0x35, 0x81, 0x54, 0x39, - 0xb5, 0xf2, 0xfb, 0x7c, 0xf9, 0x79, 0xad, 0x40, 0x5b, 0xe9, 0x8c, 0x6f, 0x31, 0xca, 0x52, 0x19, - 0xef, 0x28, 0xba, 0x3f, 0x62, 0xd9, 0x21, 0x49, 0x33, 0xa9, 0x25, 0x5e, 0xb1, 0x23, 0x62, 0x47, - 0x9d, 0xb3, 0x89, 0x4c, 0xa4, 0x99, 0xd0, 0xfc, 0x9f, 0x05, 0x75, 0x2e, 0x26, 0x52, 0x26, 0xbb, - 0x8c, 0x86, 0x29, 0xa7, 0xa1, 0x10, 0x52, 0x87, 0x9a, 0x4b, 0xa1, 0xdc, 0xf4, 0x5a, 0x2c, 0xd5, - 0x9e, 0x54, 0x34, 0x0a, 0x15, 0xb3, 0xda, 0xf4, 0x60, 0x10, 0x31, 0x1d, 0x0e, 0x68, 0x1a, 0x26, - 0x5c, 0x18, 0xb0, 0xc3, 0xae, 0x96, 0x93, 0x24, 0x4c, 0x30, 0xc5, 0x9d, 0x90, 0xff, 0x0e, 0xce, - 0xbf, 0xce, 0xe9, 0x8f, 0xcd, 0xf0, 0x99, 0xd8, 0x96, 0x01, 0xdb, 0x1f, 0x31, 0xa5, 0xf1, 0x13, - 0x80, 0xa9, 0x54, 0x0b, 0xad, 0xa1, 0xfe, 0xd2, 0xb0, 0x4b, 0xac, 0x2f, 0xc9, 0x7d, 0x89, 0xbd, - 0x93, 0xf3, 0x25, 0xaf, 0xc2, 0x84, 0x39, 0x6e, 0x50, 0x60, 0xfa, 0xdf, 0x10, 0x5c, 0xf8, 0xcf, - 0x42, 0xa5, 0x52, 0x28, 0x86, 0xef, 0xc2, 0x82, 0x4d, 0xd5, 0x42, 0x6b, 0xcd, 0xfe, 0xd2, 0xb0, - 0x45, 0x4a, 0xd5, 0x10, 0x43, 0xc9, 0x19, 0x0f, 0xcf, 0x1c, 0xfd, 0xba, 0xd4, 0x08, 0x1c, 0x1a, - 0x3f, 0x2d, 0x65, 0x9b, 0x33, 0xd9, 0x7a, 0xb5, 0xd9, 0xac, 0x69, 0x29, 0xdc, 0x7d, 0x68, 0x99, - 0x6c, 0x8f, 0x46, 0x59, 0xc6, 0x84, 0x36, 0x7e, 0x27, 0x05, 0x78, 0x00, 0x7c, 0x8b, 0x09, 0xcd, - 0xb7, 0x39, 0xcb, 0x4c, 0x01, 0x8b, 0x41, 0xe1, 0xc4, 0x7f, 0x00, 0xed, 0x0a, 0xae, 0xbb, 0xd9, - 0x15, 0x58, 0x89, 0xed, 0xf9, 0xa6, 0xc9, 0x6c, 0xf8, 0xcd, 0x60, 0x39, 0x2e, 0x80, 0xfd, 0x7b, - 0x70, 0x6e, 0xda, 0x4c, 0xb1, 0xfb, 0x3a, 0xeb, 0x97, 0xc5, 0xad, 0x95, 0x1a, 0xbd, 0x0d, 0xf3, - 0x53, 0xbf, 0xfa, 0x42, 0x2d, 0x78, 0xf8, 0xbd, 0x09, 0xf3, 0x46, 0x10, 0x7f, 0x00, 0x38, 0xc5, - 0x28, 0xbc, 0xf1, 0x0f, 0xbd, 0xfa, 0xa9, 0x74, 0xba, 0x75, 0x30, 0x1b, 0xce, 0xbf, 0xfc, 0xf1, - 0xc7, 0x9f, 0xaf, 0x73, 0xab, 0xb8, 0x4d, 0xdf, 0x18, 0xfc, 0x6e, 0x18, 0x29, 0x5a, 0x7a, 0x9d, - 0xf8, 0x0b, 0x82, 0xe5, 0x62, 0xa1, 0xb8, 0x57, 0xa5, 0x5d, 0xb1, 0xae, 0x4e, 0xbf, 0x1e, 0xe8, - 0x62, 0x50, 0x13, 0xe3, 0x2a, 0xee, 0xcd, 0x8c, 0x41, 0x4b, 0xbb, 0xc3, 0x9f, 0x10, 0x2c, 0x9e, - 0xb6, 0x82, 0xd7, 0x67, 0xde, 0xb6, 0xd8, 0xc9, 0x46, 0x0d, 0xca, 0x65, 0xb9, 0x6e, 0xb2, 0x74, - 0xf1, 0xfa, 0xec, 0x2c, 0xe6, 0x67, 0x93, 0xe7, 0x4b, 0x7b, 0x7e, 0x34, 0xf6, 0xd0, 0xf1, 0xd8, - 0x43, 0xbf, 0xc7, 0x1e, 0xfa, 0x3c, 0xf1, 0x1a, 0xc7, 0x13, 0xaf, 0xf1, 0x73, 0xe2, 0x35, 0xde, - 0xde, 0x4c, 0xb8, 0xde, 0x19, 0x45, 0x24, 0x96, 0x7b, 0x4e, 0xe9, 0xc6, 0x8b, 0x82, 0xd4, 0xc1, - 0xe0, 0x0e, 0x7d, 0x7f, 0x22, 0xa8, 0x0f, 0x53, 0xa6, 0xa2, 0x05, 0xf3, 0x01, 0xb8, 0xf5, 0x37, - 0x00, 0x00, 0xff, 0xff, 0x0c, 0x79, 0xce, 0x6f, 0xa9, 0x04, 0x00, 0x00, + 0x04, 0x36, 0x2d, 0x68, 0x48, 0x9c, 0x10, 0x08, 0x10, 0x08, 0x21, 0x08, 0x37, 0x2e, 0x23, 0xc9, + 0xbc, 0xcc, 0xd2, 0x66, 0x67, 0xb1, 0x3b, 0xb1, 0x0b, 0x07, 0x0e, 0x9c, 0x11, 0xdc, 0xb8, 0xf3, + 0x5f, 0x76, 0x9c, 0xc4, 0x85, 0x13, 0x42, 0x2d, 0x3f, 0x04, 0xc5, 0xf6, 0xd6, 0x04, 0x52, 0xe5, + 0xd4, 0xca, 0xef, 0xf3, 0xe5, 0xe7, 0xb5, 0x02, 0x6d, 0xa5, 0x33, 0xbe, 0xcd, 0x28, 0x4b, 0x65, + 0xbc, 0xab, 0xe8, 0xc1, 0x88, 0x65, 0x47, 0x24, 0xcd, 0xa4, 0x96, 0x78, 0xc5, 0x8e, 0x88, 0x1d, + 0x75, 0xce, 0x27, 0x32, 0x91, 0x66, 0x42, 0xf3, 0x7f, 0x16, 0xd4, 0xb9, 0x9c, 0x48, 0x99, 0xec, + 0x31, 0x1a, 0xa6, 0x9c, 0x86, 0x42, 0x48, 0x1d, 0x6a, 0x2e, 0x85, 0x72, 0xd3, 0x1b, 0xb1, 0x54, + 0xfb, 0x52, 0xd1, 0x28, 0x54, 0xcc, 0x6a, 0xd3, 0xc3, 0x41, 0xc4, 0x74, 0x38, 0xa0, 0x69, 0x98, + 0x70, 0x61, 0xc0, 0x0e, 0xbb, 0x5a, 0x4e, 0x92, 0x30, 0xc1, 0x14, 0x77, 0x42, 0xfe, 0x3b, 0xb8, + 0xf8, 0x3a, 0xa7, 0x3f, 0x36, 0xc3, 0x67, 0x62, 0x47, 0x06, 0xec, 0x60, 0xc4, 0x94, 0xc6, 0x4f, + 0x00, 0xa6, 0x52, 0x2d, 0xb4, 0x86, 0xfa, 0x4b, 0xc3, 0x2e, 0xb1, 0xbe, 0x24, 0xf7, 0x25, 0xf6, + 0x4e, 0xce, 0x97, 0xbc, 0x0a, 0x13, 0xe6, 0xb8, 0x41, 0x81, 0xe9, 0x7f, 0x43, 0x70, 0xe9, 0x3f, + 0x0b, 0x95, 0x4a, 0xa1, 0x18, 0xde, 0x84, 0x05, 0x9b, 0xaa, 0x85, 0xd6, 0x9a, 0xfd, 0xa5, 0x61, + 0x8b, 0x94, 0xaa, 0x21, 0x86, 0x92, 0x33, 0x1e, 0x9e, 0x3b, 0xfe, 0x75, 0xa5, 0x11, 0x38, 0x34, + 0x7e, 0x5a, 0xca, 0x36, 0x67, 0xb2, 0xf5, 0x6a, 0xb3, 0x59, 0xd3, 0x52, 0xb8, 0xfb, 0xd0, 0x32, + 0xd9, 0x1e, 0x8d, 0xb2, 0x8c, 0x09, 0x6d, 0xfc, 0x4e, 0x0b, 0xf0, 0x00, 0xf8, 0x36, 0x13, 0x9a, + 0xef, 0x70, 0x96, 0x99, 0x02, 0x16, 0x83, 0xc2, 0x89, 0xff, 0x00, 0xda, 0x15, 0x5c, 0x77, 0xb3, + 0x6b, 0xb0, 0x12, 0xdb, 0xf3, 0x2d, 0x93, 0xd9, 0xf0, 0x9b, 0xc1, 0x72, 0x5c, 0x00, 0xfb, 0xf7, + 0xe0, 0xc2, 0xb4, 0x99, 0x62, 0xf7, 0x75, 0xd6, 0x2f, 0x8b, 0x5b, 0x2b, 0x35, 0x7a, 0x17, 0xe6, + 0xa7, 0x7e, 0xf5, 0x85, 0x5a, 0xf0, 0xf0, 0x7b, 0x13, 0xe6, 0x8d, 0x20, 0xfe, 0x00, 0x70, 0x86, + 0x51, 0x78, 0xe3, 0x1f, 0x7a, 0xf5, 0x53, 0xe9, 0x74, 0xeb, 0x60, 0x36, 0x9c, 0x7f, 0xf5, 0xe3, + 0x8f, 0x3f, 0x5f, 0xe7, 0x56, 0x71, 0x9b, 0xbe, 0x31, 0xf8, 0xbd, 0x30, 0x52, 0xb4, 0xf4, 0x3a, + 0xf1, 0x17, 0x04, 0xcb, 0xc5, 0x42, 0x71, 0xaf, 0x4a, 0xbb, 0x62, 0x5d, 0x9d, 0x7e, 0x3d, 0xd0, + 0xc5, 0xa0, 0x26, 0xc6, 0x75, 0xdc, 0x9b, 0x19, 0x83, 0x96, 0x76, 0x87, 0x3f, 0x21, 0x58, 0x3c, + 0x6b, 0x05, 0xaf, 0xcf, 0xbc, 0x6d, 0xb1, 0x93, 0x8d, 0x1a, 0x94, 0xcb, 0x72, 0xd3, 0x64, 0xe9, + 0xe2, 0xf5, 0xd9, 0x59, 0xcc, 0xcf, 0x16, 0xcf, 0x97, 0xf6, 0xfc, 0x78, 0xec, 0xa1, 0x93, 0xb1, + 0x87, 0x7e, 0x8f, 0x3d, 0xf4, 0x79, 0xe2, 0x35, 0x4e, 0x26, 0x5e, 0xe3, 0xe7, 0xc4, 0x6b, 0xbc, + 0xbd, 0x9d, 0x70, 0xbd, 0x3b, 0x8a, 0x48, 0x2c, 0xf7, 0x9d, 0xd2, 0xad, 0x17, 0x05, 0xa9, 0xc3, + 0xc1, 0x26, 0x7d, 0x7f, 0x2a, 0xa8, 0x8f, 0x52, 0xa6, 0xa2, 0x05, 0xf3, 0x01, 0xb8, 0xf3, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x24, 0xd0, 0xd0, 0x37, 0xa9, 0x04, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/client/cli/query.go b/x/icacallbacks/client/cli/query.go index e65ce5788b..cba3808e7b 100644 --- a/x/icacallbacks/client/cli/query.go +++ b/x/icacallbacks/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/icacallbacks/client/cli/query_callback_data.go b/x/icacallbacks/client/cli/query_callback_data.go index 36741bbcc0..6f7d8eac46 100644 --- a/x/icacallbacks/client/cli/query_callback_data.go +++ b/x/icacallbacks/client/cli/query_callback_data.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func CmdListCallbackData() *cobra.Command { diff --git a/x/icacallbacks/client/cli/query_callback_data_test.go b/x/icacallbacks/client/cli/query_callback_data_test.go index 94f3839f7c..c4dd8654c8 100644 --- a/x/icacallbacks/client/cli/query_callback_data_test.go +++ b/x/icacallbacks/client/cli/query_callback_data_test.go @@ -12,10 +12,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/testutil/network" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/testutil/network" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/client/cli/query_params.go b/x/icacallbacks/client/cli/query_params.go index 90a181421c..abe3faf2f4 100644 --- a/x/icacallbacks/client/cli/query_params.go +++ b/x/icacallbacks/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/icacallbacks/client/cli/tx.go b/x/icacallbacks/client/cli/tx.go index db5e929d34..964c36cb57 100644 --- a/x/icacallbacks/client/cli/tx.go +++ b/x/icacallbacks/client/cli/tx.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icacallbacks/genesis.go b/x/icacallbacks/genesis.go index 8abd90472e..d020332519 100644 --- a/x/icacallbacks/genesis.go +++ b/x/icacallbacks/genesis.go @@ -3,8 +3,8 @@ package icacallbacks import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icacallbacks/genesis_test.go b/x/icacallbacks/genesis_test.go index a3f9ae5e85..3cc70c9e45 100644 --- a/x/icacallbacks/genesis_test.go +++ b/x/icacallbacks/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/icacallbacks" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/icacallbacks" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func TestGenesis(t *testing.T) { diff --git a/x/icacallbacks/handler.go b/x/icacallbacks/handler.go index a9515d6e43..ab7b2f6e4d 100644 --- a/x/icacallbacks/handler.go +++ b/x/icacallbacks/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // NewHandler ... diff --git a/x/icacallbacks/ibc_module.go b/x/icacallbacks/ibc_module.go index 785d85eb34..3115ebafdf 100644 --- a/x/icacallbacks/ibc_module.go +++ b/x/icacallbacks/ibc_module.go @@ -10,8 +10,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) var _ porttypes.IBCModule = &IBCModule{} diff --git a/x/icacallbacks/icacallbacks.go b/x/icacallbacks/icacallbacks.go index 4aa9c04a4c..29ba9a5d9e 100644 --- a/x/icacallbacks/icacallbacks.go +++ b/x/icacallbacks/icacallbacks.go @@ -11,7 +11,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // Parses ICA tx responses and returns a list of each serialized response diff --git a/x/icacallbacks/icacallbacks_test.go b/x/icacallbacks/icacallbacks_test.go index 6c6ccbb14d..43cbc84bae 100644 --- a/x/icacallbacks/icacallbacks_test.go +++ b/x/icacallbacks/icacallbacks_test.go @@ -17,9 +17,9 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func TestParseTxMsgDataCurrent(t *testing.T) { diff --git a/x/icacallbacks/keeper/callback_data.go b/x/icacallbacks/keeper/callback_data.go index 28d352ca44..f9f011882c 100644 --- a/x/icacallbacks/keeper/callback_data.go +++ b/x/icacallbacks/keeper/callback_data.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // SetCallbackData set a specific callbackData in the store from its index diff --git a/x/icacallbacks/keeper/callback_data_test.go b/x/icacallbacks/keeper/callback_data_test.go index ba555f86cc..31b3337161 100644 --- a/x/icacallbacks/keeper/callback_data_test.go +++ b/x/icacallbacks/keeper/callback_data_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query.go b/x/icacallbacks/keeper/grpc_query.go index cf2bdb2e9b..26b7f248a6 100644 --- a/x/icacallbacks/keeper/grpc_query.go +++ b/x/icacallbacks/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icacallbacks/keeper/grpc_query_callback_data.go b/x/icacallbacks/keeper/grpc_query_callback_data.go index f290a0a933..e3dbe5cba1 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func (k Keeper) CallbackDataAll(c context.Context, req *types.QueryAllCallbackDataRequest) (*types.QueryAllCallbackDataResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_callback_data_test.go b/x/icacallbacks/keeper/grpc_query_callback_data_test.go index 22b76b5c82..72bbf466c1 100644 --- a/x/icacallbacks/keeper/grpc_query_callback_data_test.go +++ b/x/icacallbacks/keeper/grpc_query_callback_data_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // Prevent strconv unused error diff --git a/x/icacallbacks/keeper/grpc_query_params.go b/x/icacallbacks/keeper/grpc_query_params.go index cc5b6b4004..62e335dd47 100644 --- a/x/icacallbacks/keeper/grpc_query_params.go +++ b/x/icacallbacks/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/icacallbacks/keeper/grpc_query_params_test.go b/x/icacallbacks/keeper/grpc_query_params_test.go index 50c4a9fa1f..dc38d3d050 100644 --- a/x/icacallbacks/keeper/grpc_query_params_test.go +++ b/x/icacallbacks/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/icacallbacks/keeper/keeper.go b/x/icacallbacks/keeper/keeper.go index 1816325a06..87b5ace1f0 100644 --- a/x/icacallbacks/keeper/keeper.go +++ b/x/icacallbacks/keeper/keeper.go @@ -13,7 +13,7 @@ import ( ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" diff --git a/x/icacallbacks/keeper/msg_server.go b/x/icacallbacks/keeper/msg_server.go index db62477570..7517db5dc7 100644 --- a/x/icacallbacks/keeper/msg_server.go +++ b/x/icacallbacks/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) type msgServer struct { diff --git a/x/icacallbacks/keeper/params.go b/x/icacallbacks/keeper/params.go index ce1bbc42a0..174c1a591b 100644 --- a/x/icacallbacks/keeper/params.go +++ b/x/icacallbacks/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // GetParams get all parameters as types.Params diff --git a/x/icacallbacks/keeper/params_test.go b/x/icacallbacks/keeper/params_test.go index 7a3409945d..6be56b6584 100644 --- a/x/icacallbacks/keeper/params_test.go +++ b/x/icacallbacks/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + testkeeper "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func TestGetParams(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/convert.go b/x/icacallbacks/migrations/v2/convert.go index 81c26fde81..191f440359 100644 --- a/x/icacallbacks/migrations/v2/convert.go +++ b/x/icacallbacks/migrations/v2/convert.go @@ -5,9 +5,9 @@ import ( sdkmath "cosmossdk.io/math" "github.com/golang/protobuf/proto" //nolint:staticcheck - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const ( diff --git a/x/icacallbacks/migrations/v2/convert_test.go b/x/icacallbacks/migrations/v2/convert_test.go index 748fbf4d4c..36214b3a1e 100644 --- a/x/icacallbacks/migrations/v2/convert_test.go +++ b/x/icacallbacks/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/golang/protobuf/proto" //nolint:staticcheck "github.com/stretchr/testify/require" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" ) func TestConvertDelegateCallback(t *testing.T) { diff --git a/x/icacallbacks/migrations/v2/migrations.go b/x/icacallbacks/migrations/v2/migrations.go index 5ba35b6807..a775c4de22 100644 --- a/x/icacallbacks/migrations/v2/migrations.go +++ b/x/icacallbacks/migrations/v2/migrations.go @@ -8,7 +8,7 @@ import ( errorsmod "cosmossdk.io/errors" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func migrateCallbacks(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/icacallbacks/module.go b/x/icacallbacks/module.go index eb65502b96..7acf35a19a 100644 --- a/x/icacallbacks/module.go +++ b/x/icacallbacks/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/client/cli" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/client/cli" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) var ( diff --git a/x/icacallbacks/module_simulation.go b/x/icacallbacks/module_simulation.go index aa9221b4e5..584277c455 100644 --- a/x/icacallbacks/module_simulation.go +++ b/x/icacallbacks/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v15/testutil/sample" - icacallbackssimulation "github.com/Stride-Labs/stride/v15/x/icacallbacks/simulation" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/testutil/sample" + icacallbackssimulation "github.com/Stride-Labs/stride/v16/x/icacallbacks/simulation" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // avoid unused import issue diff --git a/x/icacallbacks/types/callback_data.pb.go b/x/icacallbacks/types/callback_data.pb.go index a249e3a8cd..8473a1ef58 100644 --- a/x/icacallbacks/types/callback_data.pb.go +++ b/x/icacallbacks/types/callback_data.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_19b6f19ce856679b = []byte{ 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, 0x38, 0x1c, 0x74, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x81, 0x57, 0x66, 0x68, - 0xaa, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, - 0x04, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x8f, 0x8e, 0xaf, 0x66, 0x01, 0x00, 0x00, + 0xa6, 0x5f, 0x81, 0x1a, 0x84, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x33, 0x06, + 0x04, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xaa, 0x2f, 0xeb, 0x66, 0x01, 0x00, 0x00, } func (m *CallbackData) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis.pb.go b/x/icacallbacks/types/genesis.pb.go index 7e1f77c1d9..01bd2972ea 100644 --- a/x/icacallbacks/types/genesis.pb.go +++ b/x/icacallbacks/types/genesis.pb.go @@ -107,9 +107,9 @@ var fileDescriptor_8c333baddfa20681 = []byte{ 0x32, 0x8b, 0x4b, 0x9c, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x18, 0x6c, 0xbc, 0xae, - 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0x4d, 0xf5, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, - 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, - 0xac, 0x29, 0x74, 0xaf, 0x01, 0x00, 0x00, + 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0x34, 0x54, 0xca, 0x0c, 0xcd, 0xf4, 0x2b, 0x50, 0xc3, 0xa6, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x1c, 0x28, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, + 0x89, 0x88, 0x30, 0xaf, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/genesis_test.go b/x/icacallbacks/types/genesis_test.go index 4614a93f25..037e0c0ef9 100644 --- a/x/icacallbacks/types/genesis_test.go +++ b/x/icacallbacks/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/icacallbacks/types/packet.pb.go b/x/icacallbacks/types/packet.pb.go index 2b4f6781c1..4753ebefb5 100644 --- a/x/icacallbacks/types/packet.pb.go +++ b/x/icacallbacks/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_e68b4c401320f2a0 = []byte{ 0x14, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x66, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0x60, 0xe3, 0x75, 0x7d, 0x12, 0x93, 0x8a, - 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd5, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x48, 0xf8, 0x13, 0x65, 0xf7, + 0xf5, 0xa1, 0xbe, 0x29, 0x33, 0x34, 0xd3, 0xaf, 0x40, 0xf5, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0xd8, 0x4f, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x50, 0xdd, 0xb2, 0x21, 0xf7, 0x00, 0x00, 0x00, } diff --git a/x/icacallbacks/types/params.pb.go b/x/icacallbacks/types/params.pb.go index 1b8fdc5f3b..ea6afce1d0 100644 --- a/x/icacallbacks/types/params.pb.go +++ b/x/icacallbacks/types/params.pb.go @@ -75,8 +75,8 @@ var fileDescriptor_4c402599e6cfed62 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xb3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0xf9, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0xd7, 0x94, 0x19, 0x9a, 0xea, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, - 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xe4, 0x44, 0x73, 0xb7, 0x00, 0x00, 0x00, + 0xd7, 0x94, 0x19, 0x9a, 0xe9, 0x57, 0xa0, 0xba, 0xa9, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, + 0x6c, 0x91, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x86, 0xc1, 0xe5, 0x37, 0xb7, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/icacallbacks/types/query.pb.go b/x/icacallbacks/types/query.pb.go index 239e5e20af..4277ce5447 100644 --- a/x/icacallbacks/types/query.pb.go +++ b/x/icacallbacks/types/query.pb.go @@ -309,40 +309,40 @@ func init() { func init() { proto.RegisterFile("stride/icacallbacks/query.proto", fileDescriptor_5e73b99abb7e91c2) } var fileDescriptor_5e73b99abb7e91c2 = []byte{ - // 521 bytes of a gzipped FileDescriptorProto + // 520 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3f, 0x6f, 0x13, 0x31, 0x18, 0xc6, 0xe3, 0x52, 0x22, 0xe1, 0x16, 0x21, 0xb9, 0x1d, 0x50, 0x5a, 0x5d, 0xdb, 0x1b, 0x48, - 0x41, 0xc2, 0x6e, 0x8a, 0xa8, 0xc4, 0x80, 0xa0, 0xe5, 0x4f, 0x07, 0x3a, 0x84, 0xb0, 0xb1, 0xa0, - 0xf7, 0xae, 0xd6, 0x71, 0xaa, 0x73, 0xbe, 0xc6, 0x4e, 0x45, 0x84, 0x58, 0x10, 0x23, 0x03, 0x12, - 0xdf, 0x83, 0x8d, 0x85, 0x4f, 0xd0, 0xb1, 0x12, 0x0b, 0x13, 0x42, 0x09, 0x1f, 0x04, 0xc5, 0x76, - 0xca, 0x9d, 0xea, 0x6b, 0xd4, 0x6e, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, - 0x45, 0xe9, 0x5e, 0xba, 0xcf, 0x59, 0x1a, 0x43, 0x0c, 0x42, 0x44, 0x10, 0x1f, 0x28, 0x76, 0xd8, - 0xe7, 0xbd, 0x01, 0xcd, 0x7b, 0x52, 0x4b, 0xb2, 0x60, 0x05, 0xb4, 0x28, 0x68, 0x2c, 0x26, 0x32, - 0x91, 0xe6, 0x9d, 0x8d, 0x4f, 0x56, 0xda, 0x58, 0x4e, 0xa4, 0x4c, 0x04, 0x67, 0x90, 0xa7, 0x0c, - 0xb2, 0x4c, 0x6a, 0xd0, 0xa9, 0xcc, 0x94, 0x7b, 0xbd, 0x13, 0x4b, 0xd5, 0x95, 0x8a, 0x45, 0xa0, - 0xb8, 0x4d, 0x60, 0x47, 0xad, 0x88, 0x6b, 0x68, 0xb1, 0x1c, 0x92, 0x34, 0x33, 0x62, 0xa7, 0x5d, - 0xf5, 0x51, 0xe5, 0xd0, 0x83, 0xee, 0xc4, 0xad, 0xe9, 0x53, 0x4c, 0x4e, 0x6f, 0xf6, 0x41, 0x83, - 0x15, 0x86, 0x8b, 0x98, 0xbc, 0x1c, 0x87, 0xb5, 0x4d, 0x75, 0x87, 0x1f, 0xf6, 0xb9, 0xd2, 0x61, - 0x1b, 0x2f, 0x94, 0x6e, 0x55, 0x2e, 0x33, 0xc5, 0xc9, 0x03, 0x5c, 0xb7, 0x29, 0x37, 0xd1, 0x2a, - 0x5a, 0x9f, 0xdb, 0x5c, 0xa2, 0x9e, 0xee, 0xa9, 0x2d, 0xda, 0x99, 0x3d, 0xfe, 0xbd, 0x52, 0xeb, - 0xb8, 0x82, 0xf0, 0x31, 0x5e, 0x32, 0x8e, 0xbb, 0x5c, 0x3f, 0x71, 0xca, 0xa7, 0xa0, 0xc1, 0x05, - 0x92, 0x35, 0x3c, 0x7f, 0x4a, 0x77, 0xc0, 0x07, 0xc6, 0xff, 0x5a, 0x67, 0x6e, 0x72, 0xf7, 0x82, - 0x0f, 0x42, 0x81, 0x97, 0xfd, 0x0e, 0x0e, 0x6e, 0x0f, 0x5f, 0x2f, 0x35, 0xe8, 0x18, 0xd7, 0xbc, - 0x8c, 0x45, 0x07, 0x47, 0x7a, 0x0a, 0x30, 0xbe, 0x0b, 0xb9, 0xe3, 0xdd, 0x16, 0xc2, 0xc7, 0xfb, - 0x1c, 0xe3, 0xff, 0x53, 0x71, 0x49, 0xb7, 0xa8, 0x1d, 0x21, 0x1d, 0x8f, 0x90, 0xda, 0x25, 0x71, - 0x23, 0xa4, 0x6d, 0x48, 0xb8, 0xab, 0xed, 0x14, 0x2a, 0xc3, 0xef, 0xc8, 0x75, 0x75, 0x26, 0xa7, - 0xba, 0xab, 0x2b, 0x97, 0xee, 0x8a, 0xec, 0x96, 0xb0, 0x67, 0x0c, 0x76, 0x73, 0x2a, 0xb6, 0x45, - 0x29, 0x72, 0x6f, 0x7e, 0x9a, 0xc5, 0x57, 0x0d, 0x37, 0xf9, 0x8c, 0x70, 0xdd, 0x4e, 0x9c, 0x34, - 0xbd, 0x50, 0x67, 0xd7, 0xab, 0xb1, 0x3e, 0x5d, 0x68, 0x33, 0x43, 0xf6, 0xf1, 0xe7, 0xdf, 0xaf, - 0x33, 0xb7, 0x49, 0x93, 0xbd, 0x32, 0x15, 0x77, 0xf7, 0x20, 0x52, 0xac, 0x7a, 0xfd, 0xc9, 0x0f, - 0x84, 0xe7, 0x8b, 0x9f, 0x81, 0x6c, 0x54, 0x67, 0xf9, 0x77, 0xb1, 0xd1, 0xba, 0x40, 0x85, 0xc3, - 0x7c, 0x66, 0x30, 0x1f, 0x91, 0x87, 0x53, 0x31, 0x4b, 0xc3, 0x64, 0xef, 0x8b, 0x4b, 0xff, 0x81, - 0x7c, 0x43, 0xf8, 0x46, 0xd1, 0x7f, 0x5b, 0x88, 0xf3, 0xf8, 0xfd, 0xbb, 0x79, 0x1e, 0x7f, 0xc5, - 0x96, 0x85, 0x5b, 0x86, 0x7f, 0x83, 0xd0, 0x8b, 0xf1, 0xef, 0xb4, 0x8f, 0x87, 0x01, 0x3a, 0x19, - 0x06, 0xe8, 0xcf, 0x30, 0x40, 0x5f, 0x46, 0x41, 0xed, 0x64, 0x14, 0xd4, 0x7e, 0x8d, 0x82, 0xda, - 0xeb, 0xad, 0x24, 0xd5, 0x6f, 0xfb, 0x11, 0x8d, 0x65, 0xd7, 0xe7, 0x79, 0xd4, 0xba, 0xcf, 0xde, - 0x95, 0x9d, 0xf5, 0x20, 0xe7, 0x2a, 0xaa, 0x9b, 0xdf, 0xd2, 0xbd, 0x7f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xa6, 0xb7, 0xad, 0x5f, 0x79, 0x05, 0x00, 0x00, + 0x41, 0xc2, 0x6e, 0x8a, 0x14, 0x89, 0x01, 0x41, 0xcb, 0x9f, 0x0e, 0x74, 0x08, 0x61, 0x63, 0x41, + 0xef, 0x5d, 0xad, 0xe3, 0x54, 0xe7, 0x7c, 0x8d, 0x9d, 0x8a, 0x08, 0xb1, 0x20, 0x46, 0x06, 0x24, + 0xbe, 0x07, 0x1b, 0x0b, 0x9f, 0xa0, 0x63, 0x25, 0x16, 0x26, 0x84, 0x12, 0x3e, 0x08, 0x8a, 0xed, + 0x94, 0x3b, 0xd5, 0xd7, 0xa8, 0x6c, 0x96, 0xfd, 0xbc, 0xcf, 0xf3, 0x7b, 0xef, 0x7d, 0x75, 0x78, + 0x4d, 0xe9, 0x7e, 0x7a, 0xc0, 0x59, 0x1a, 0x43, 0x0c, 0x42, 0x44, 0x10, 0x1f, 0x2a, 0x76, 0x34, + 0xe0, 0xfd, 0x21, 0xcd, 0xfb, 0x52, 0x4b, 0xb2, 0x64, 0x05, 0xb4, 0x28, 0x68, 0x2c, 0x27, 0x32, + 0x91, 0xe6, 0x9d, 0x4d, 0x4e, 0x56, 0xda, 0x58, 0x4d, 0xa4, 0x4c, 0x04, 0x67, 0x90, 0xa7, 0x0c, + 0xb2, 0x4c, 0x6a, 0xd0, 0xa9, 0xcc, 0x94, 0x7b, 0xbd, 0x13, 0x4b, 0xd5, 0x93, 0x8a, 0x45, 0xa0, + 0xb8, 0x4d, 0x60, 0xc7, 0xad, 0x88, 0x6b, 0x68, 0xb1, 0x1c, 0x92, 0x34, 0x33, 0x62, 0xa7, 0x5d, + 0xf7, 0x51, 0xe5, 0xd0, 0x87, 0xde, 0xd4, 0xad, 0xe9, 0x53, 0x4c, 0x4f, 0xaf, 0x0f, 0x40, 0x83, + 0x15, 0x86, 0xcb, 0x98, 0xbc, 0x98, 0x84, 0x75, 0x4c, 0x75, 0x97, 0x1f, 0x0d, 0xb8, 0xd2, 0x61, + 0x07, 0x2f, 0x95, 0x6e, 0x55, 0x2e, 0x33, 0xc5, 0xc9, 0x7d, 0x5c, 0xb7, 0x29, 0x37, 0xd1, 0x3a, + 0xda, 0x5c, 0xd8, 0x5e, 0xa1, 0x9e, 0xee, 0xa9, 0x2d, 0xda, 0x9d, 0x3f, 0xf9, 0xb5, 0x56, 0xeb, + 0xba, 0x82, 0xf0, 0x11, 0x5e, 0x31, 0x8e, 0x7b, 0x5c, 0x3f, 0x76, 0xca, 0x27, 0xa0, 0xc1, 0x05, + 0x92, 0x0d, 0xbc, 0x78, 0x46, 0x77, 0xc8, 0x87, 0xc6, 0xff, 0x5a, 0x77, 0x61, 0x7a, 0xf7, 0x9c, + 0x0f, 0x43, 0x81, 0x57, 0xfd, 0x0e, 0x0e, 0x6e, 0x1f, 0x5f, 0x2f, 0x35, 0xe8, 0x18, 0x37, 0xbc, + 0x8c, 0x45, 0x07, 0x47, 0x7a, 0x06, 0x30, 0xb9, 0x0b, 0xb9, 0xe3, 0xdd, 0x11, 0xc2, 0xc7, 0xfb, + 0x0c, 0xe3, 0x7f, 0x53, 0x71, 0x49, 0xb7, 0xa8, 0x1d, 0x21, 0x9d, 0x8c, 0x90, 0xda, 0x25, 0x71, + 0x23, 0xa4, 0x1d, 0x48, 0xb8, 0xab, 0xed, 0x16, 0x2a, 0xc3, 0x6f, 0xc8, 0x75, 0x75, 0x2e, 0xa7, + 0xba, 0xab, 0x2b, 0xff, 0xdd, 0x15, 0xd9, 0x2b, 0x61, 0xcf, 0x19, 0xec, 0xe6, 0x4c, 0x6c, 0x8b, + 0x52, 0xe4, 0xde, 0xfe, 0x38, 0x8f, 0xaf, 0x1a, 0x6e, 0xf2, 0x09, 0xe1, 0xba, 0x9d, 0x38, 0x69, + 0x7a, 0xa1, 0xce, 0xaf, 0x57, 0x63, 0x73, 0xb6, 0xd0, 0x66, 0x86, 0xec, 0xc3, 0x8f, 0x3f, 0x5f, + 0xe6, 0x6e, 0x93, 0x26, 0x7b, 0x69, 0x2a, 0xee, 0xee, 0x43, 0xa4, 0x58, 0xf5, 0xfa, 0x93, 0xef, + 0x08, 0x2f, 0x16, 0x3f, 0x03, 0xd9, 0xaa, 0xce, 0xf2, 0xef, 0x62, 0xa3, 0x75, 0x89, 0x0a, 0x87, + 0xf9, 0xd4, 0x60, 0x3e, 0x24, 0x0f, 0x66, 0x62, 0x96, 0x86, 0xc9, 0xde, 0x15, 0x97, 0xfe, 0x3d, + 0xf9, 0x8a, 0xf0, 0x8d, 0xa2, 0xff, 0x8e, 0x10, 0x17, 0xf1, 0xfb, 0x77, 0xf3, 0x22, 0xfe, 0x8a, + 0x2d, 0x0b, 0xdb, 0x86, 0x7f, 0x8b, 0xd0, 0xcb, 0xf1, 0xef, 0x76, 0x4e, 0x46, 0x01, 0x3a, 0x1d, + 0x05, 0xe8, 0xf7, 0x28, 0x40, 0x9f, 0xc7, 0x41, 0xed, 0x74, 0x1c, 0xd4, 0x7e, 0x8e, 0x83, 0xda, + 0xab, 0x76, 0x92, 0xea, 0x37, 0x83, 0x88, 0xc6, 0xb2, 0xe7, 0xf3, 0x3c, 0x6e, 0xb5, 0xd9, 0xdb, + 0xb2, 0xb3, 0x1e, 0xe6, 0x5c, 0x45, 0x75, 0xf3, 0x5b, 0xba, 0xf7, 0x37, 0x00, 0x00, 0xff, 0xff, + 0xbe, 0x92, 0x0c, 0x1b, 0x79, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icacallbacks/types/tx.pb.go b/x/icacallbacks/types/tx.pb.go index 32a1c3d631..20f904f188 100644 --- a/x/icacallbacks/types/tx.pb.go +++ b/x/icacallbacks/types/tx.pb.go @@ -33,9 +33,9 @@ var fileDescriptor_c4981fec5f7fee51 = []byte{ 0xb1, 0x72, 0x31, 0xfb, 0x16, 0xa7, 0x3b, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x30, - 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0xa6, 0xfa, 0x15, 0x68, + 0xd8, 0x00, 0x5d, 0x9f, 0xc4, 0xa4, 0x62, 0x7d, 0xa8, 0x55, 0x65, 0x86, 0x66, 0xfa, 0x15, 0x68, 0x16, 0x56, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x2d, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0xff, 0x70, 0xd5, 0xfd, 0x94, 0x00, 0x00, 0x00, + 0xe7, 0x55, 0x74, 0xb9, 0x94, 0x00, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/client/cli/cli_test.go b/x/icaoracle/client/cli/cli_test.go index 5fa257142f..d55aa74dba 100644 --- a/x/icaoracle/client/cli/cli_test.go +++ b/x/icaoracle/client/cli/cli_test.go @@ -11,11 +11,11 @@ import ( "github.com/spf13/cobra" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - cmdcfg "github.com/Stride-Labs/stride/v15/cmd/strided/config" - strideclitestutil "github.com/Stride-Labs/stride/v15/testutil/cli" - "github.com/Stride-Labs/stride/v15/testutil/network" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app" + cmdcfg "github.com/Stride-Labs/stride/v16/cmd/strided/config" + strideclitestutil "github.com/Stride-Labs/stride/v16/testutil/cli" + "github.com/Stride-Labs/stride/v16/testutil/network" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/client/cli/query.go b/x/icaoracle/client/cli/query.go index e55b4f0206..0c920f2d4e 100644 --- a/x/icaoracle/client/cli/query.go +++ b/x/icaoracle/client/cli/query.go @@ -13,7 +13,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" "github.com/gogo/protobuf/proto" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) const ( diff --git a/x/icaoracle/client/cli/query_test.go b/x/icaoracle/client/cli/query_test.go index 6352f15eec..ea5df2cbec 100644 --- a/x/icaoracle/client/cli/query_test.go +++ b/x/icaoracle/client/cli/query_test.go @@ -1,6 +1,6 @@ package cli_test -import "github.com/Stride-Labs/stride/v15/x/icaoracle/client/cli" +import "github.com/Stride-Labs/stride/v16/x/icaoracle/client/cli" func (s *ClientTestSuite) TestCmdQueryOracle() { args := []string{ diff --git a/x/icaoracle/client/cli/tx.go b/x/icaoracle/client/cli/tx.go index 2bcddc1513..3afc866711 100644 --- a/x/icaoracle/client/cli/tx.go +++ b/x/icaoracle/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // GetTxCmd returns the transaction commands for this module diff --git a/x/icaoracle/client/cli/tx_test.go b/x/icaoracle/client/cli/tx_test.go index e03bed84e8..98026514c2 100644 --- a/x/icaoracle/client/cli/tx_test.go +++ b/x/icaoracle/client/cli/tx_test.go @@ -1,7 +1,7 @@ package cli_test import ( - "github.com/Stride-Labs/stride/v15/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v16/x/icaoracle/client/cli" ) func (s *ClientTestSuite) TestCmdRestoreOracleICA() { diff --git a/x/icaoracle/ibc_middleware.go b/x/icaoracle/ibc_middleware.go index 040f86c0ef..ecebebc353 100644 --- a/x/icaoracle/ibc_middleware.go +++ b/x/icaoracle/ibc_middleware.go @@ -11,7 +11,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v16/x/icaoracle/keeper" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/icaoracle/keeper/events.go b/x/icaoracle/keeper/events.go index 2b203b93b9..00d4466a8c 100644 --- a/x/icaoracle/keeper/events.go +++ b/x/icaoracle/keeper/events.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // Emits an event for an oracle update diff --git a/x/icaoracle/keeper/genesis.go b/x/icaoracle/keeper/genesis.go index ba13c54b0a..9a1d289f1f 100644 --- a/x/icaoracle/keeper/genesis.go +++ b/x/icaoracle/keeper/genesis.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/icaoracle/keeper/genesis_test.go b/x/icaoracle/keeper/genesis_test.go index 6288daf455..29f8407419 100644 --- a/x/icaoracle/keeper/genesis_test.go +++ b/x/icaoracle/keeper/genesis_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGenesis() { diff --git a/x/icaoracle/keeper/grpc_query.go b/x/icaoracle/keeper/grpc_query.go index 13d63e61f1..e30cfc2a7c 100644 --- a/x/icaoracle/keeper/grpc_query.go +++ b/x/icaoracle/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/icaoracle/keeper/grpc_query_test.go b/x/icaoracle/keeper/grpc_query_test.go index c54ec65480..f25c003e41 100644 --- a/x/icaoracle/keeper/grpc_query_test.go +++ b/x/icaoracle/keeper/grpc_query_test.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) TestQueryOracle() { diff --git a/x/icaoracle/keeper/ibc.go b/x/icaoracle/keeper/ibc.go index d6640ca182..437bf55734 100644 --- a/x/icaoracle/keeper/ibc.go +++ b/x/icaoracle/keeper/ibc.go @@ -10,8 +10,8 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (k Keeper) OnChanOpenAck(ctx sdk.Context, portID, channelID string) error { diff --git a/x/icaoracle/keeper/ibc_test.go b/x/icaoracle/keeper/ibc_test.go index e154747596..6ae7e653a3 100644 --- a/x/icaoracle/keeper/ibc_test.go +++ b/x/icaoracle/keeper/ibc_test.go @@ -10,9 +10,9 @@ import ( proto "github.com/cosmos/gogoproto/proto" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // ------------------------------------------ diff --git a/x/icaoracle/keeper/icacallbacks.go b/x/icaoracle/keeper/icacallbacks.go index 32c26bc7a8..99de4c0d48 100644 --- a/x/icaoracle/keeper/icacallbacks.go +++ b/x/icaoracle/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) const ( diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go index a32e2b41bb..51826e964c 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go index df20f69444..875820ff43 100644 --- a/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_instantiate_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) type InstantiateOracleCallbackTestCase struct { diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle.go b/x/icaoracle/keeper/icacallbacks_update_oracle.go index c51bb8ff47..72e5756679 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle.go @@ -3,10 +3,10 @@ package keeper import ( errorsmod "cosmossdk.io/errors" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" diff --git a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go index de7ecc51ab..b2663f6f23 100644 --- a/x/icaoracle/keeper/icacallbacks_update_oracle_test.go +++ b/x/icaoracle/keeper/icacallbacks_update_oracle_test.go @@ -4,8 +4,8 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestUpdateOracleCallback() types.Metric { diff --git a/x/icaoracle/keeper/icaoracle.go b/x/icaoracle/keeper/icaoracle.go index 0d601e9c56..5ab06d3577 100644 --- a/x/icaoracle/keeper/icaoracle.go +++ b/x/icaoracle/keeper/icaoracle.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/icaoracle_test.go b/x/icaoracle/keeper/icaoracle_test.go index 92a7c998b6..f465532c16 100644 --- a/x/icaoracle/keeper/icaoracle_test.go +++ b/x/icaoracle/keeper/icaoracle_test.go @@ -5,9 +5,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) type SubmitMetricUpdateTestCase struct { diff --git a/x/icaoracle/keeper/keeper.go b/x/icaoracle/keeper/keeper.go index c80bacd279..7cb8eaeceb 100644 --- a/x/icaoracle/keeper/keeper.go +++ b/x/icaoracle/keeper/keeper.go @@ -10,7 +10,7 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) type Keeper struct { diff --git a/x/icaoracle/keeper/keeper_test.go b/x/icaoracle/keeper/keeper_test.go index f61077063b..4baab9b243 100644 --- a/x/icaoracle/keeper/keeper_test.go +++ b/x/icaoracle/keeper/keeper_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/keeper/metric.go b/x/icaoracle/keeper/metric.go index 22038c556b..b36a82da69 100644 --- a/x/icaoracle/keeper/metric.go +++ b/x/icaoracle/keeper/metric.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // Stores a metric in the main metric store and then either diff --git a/x/icaoracle/keeper/metric_test.go b/x/icaoracle/keeper/metric_test.go index 305ddd4336..83e60ea00b 100644 --- a/x/icaoracle/keeper/metric_test.go +++ b/x/icaoracle/keeper/metric_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "strconv" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // Helper function to create 5 metric objects with various attributes diff --git a/x/icaoracle/keeper/msg_server.go b/x/icaoracle/keeper/msg_server.go index 2ec01fa539..6c9d2dcccc 100644 --- a/x/icaoracle/keeper/msg_server.go +++ b/x/icaoracle/keeper/msg_server.go @@ -12,7 +12,7 @@ import ( icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) type msgServer struct { diff --git a/x/icaoracle/keeper/msg_server_add_oracle_test.go b/x/icaoracle/keeper/msg_server_add_oracle_test.go index d83fba1907..9a2e5f65f2 100644 --- a/x/icaoracle/keeper/msg_server_add_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_add_oracle_test.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) SetupTestAddOracle() types.MsgAddOracle { diff --git a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go index 2f9cfcb70e..8d93b031c7 100644 --- a/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) type InstantiateOracleTestCase struct { diff --git a/x/icaoracle/keeper/msg_server_remove_oracle_test.go b/x/icaoracle/keeper/msg_server_remove_oracle_test.go index b05d8d52a5..933facbce8 100644 --- a/x/icaoracle/keeper/msg_server_remove_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_remove_oracle_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "fmt" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovRemoveOracle() { diff --git a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go index 69649376ec..287a7ede48 100644 --- a/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go +++ b/x/icaoracle/keeper/msg_server_restore_oracle_ica_test.go @@ -8,7 +8,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) type RestoreOracleICATestCase struct { diff --git a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go index f97457d373..59ebc47d0f 100644 --- a/x/icaoracle/keeper/msg_server_toggle_oracle_test.go +++ b/x/icaoracle/keeper/msg_server_toggle_oracle_test.go @@ -1,7 +1,7 @@ package keeper_test import ( - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGovToggleOracle() { diff --git a/x/icaoracle/keeper/oracle.go b/x/icaoracle/keeper/oracle.go index 3a2efd0b88..1e98385a98 100644 --- a/x/icaoracle/keeper/oracle.go +++ b/x/icaoracle/keeper/oracle.go @@ -7,7 +7,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // Stores/updates an oracle object in the store diff --git a/x/icaoracle/keeper/oracle_test.go b/x/icaoracle/keeper/oracle_test.go index 3952cbf6e0..5b49e26c43 100644 --- a/x/icaoracle/keeper/oracle_test.go +++ b/x/icaoracle/keeper/oracle_test.go @@ -5,7 +5,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func (s *KeeperTestSuite) TestGetOracle() { diff --git a/x/icaoracle/module.go b/x/icaoracle/module.go index c4041d096a..2ad3e7c678 100644 --- a/x/icaoracle/module.go +++ b/x/icaoracle/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/icaoracle/client/cli" - "github.com/Stride-Labs/stride/v15/x/icaoracle/keeper" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/client/cli" + "github.com/Stride-Labs/stride/v16/x/icaoracle/keeper" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) var ( diff --git a/x/icaoracle/types/callbacks.pb.go b/x/icaoracle/types/callbacks.pb.go index 2331be6d7e..35c03d7134 100644 --- a/x/icaoracle/types/callbacks.pb.go +++ b/x/icaoracle/types/callbacks.pb.go @@ -141,9 +141,9 @@ var fileDescriptor_7b4c39df2554f0a2 = []byte{ 0x08, 0xaa, 0xce, 0xc9, 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0xa6, 0xe8, 0xfa, - 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x8b, - 0x0c, 0x4f, 0x64, 0x01, 0x00, 0x00, + 0x24, 0x26, 0x15, 0xeb, 0x43, 0x43, 0xa2, 0xcc, 0xd0, 0x4c, 0xbf, 0x02, 0x29, 0x3c, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x61, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xa6, + 0x98, 0xfc, 0x64, 0x01, 0x00, 0x00, } func (m *InstantiateOracleCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/contract.pb.go b/x/icaoracle/types/contract.pb.go index a952b29fe2..7dac699de9 100644 --- a/x/icaoracle/types/contract.pb.go +++ b/x/icaoracle/types/contract.pb.go @@ -214,31 +214,31 @@ func init() { func init() { proto.RegisterFile("stride/icaoracle/contract.proto", fileDescriptor_8bf036e49b48ee03) } var fileDescriptor_8bf036e49b48ee03 = []byte{ - // 375 bytes of a gzipped FileDescriptorProto + // 376 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xc1, 0xae, 0xd2, 0x40, 0x14, 0x86, 0xa9, 0x08, 0x89, 0x53, 0x48, 0x70, 0x74, 0xd1, 0x85, 0x29, 0x88, 0x1b, 0x36, 0xb6, - 0x51, 0xe2, 0x5e, 0x25, 0x26, 0x92, 0xd8, 0x68, 0x90, 0x95, 0x9b, 0x3a, 0x9d, 0x1e, 0xdb, 0x09, - 0x6d, 0xa7, 0x99, 0x39, 0x25, 0xf0, 0x16, 0x3e, 0x90, 0x0f, 0xe0, 0x92, 0xa5, 0x4b, 0x03, 0x2f, - 0x72, 0xc3, 0x4c, 0x2f, 0xdc, 0x7b, 0x77, 0xe7, 0x7c, 0xff, 0x7f, 0xf2, 0x9f, 0x99, 0x43, 0xc6, - 0x1a, 0x95, 0x48, 0x21, 0x14, 0x9c, 0x49, 0xc5, 0x78, 0x01, 0x21, 0x97, 0x15, 0x2a, 0xc6, 0x31, - 0xa8, 0x95, 0x44, 0x49, 0x47, 0xd6, 0x10, 0x5c, 0x0c, 0x53, 0x4d, 0x5e, 0x44, 0x3a, 0x5b, 0x56, - 0x1a, 0x59, 0x85, 0x82, 0x21, 0x7c, 0x35, 0x7c, 0xd1, 0xce, 0xd1, 0x57, 0x64, 0xc8, 0xd2, 0x52, - 0x54, 0x31, 0x4b, 0x53, 0x05, 0x5a, 0x7b, 0xce, 0xc4, 0x99, 0x3d, 0x59, 0x0d, 0x0c, 0xfc, 0x60, - 0x19, 0x0d, 0xc8, 0x33, 0x54, 0xac, 0xd2, 0xbf, 0x40, 0xc5, 0x3c, 0x67, 0x55, 0x05, 0x45, 0x2c, - 0x52, 0xef, 0x91, 0xb1, 0x3e, 0xbd, 0x95, 0x16, 0x56, 0x59, 0xa6, 0xd3, 0x9f, 0x26, 0xf4, 0xd3, - 0x0e, 0x78, 0x83, 0x97, 0xa8, 0x6f, 0x52, 0x63, 0x04, 0xa8, 0x04, 0xa7, 0xef, 0x89, 0x5b, 0x4b, - 0x8d, 0x71, 0x69, 0x5a, 0x13, 0xe9, 0xbe, 0x1d, 0x07, 0x0f, 0x97, 0x0f, 0x22, 0x9d, 0x5d, 0xa7, - 0x56, 0xa4, 0xbe, 0xd4, 0xd3, 0x3f, 0x0e, 0x19, 0xde, 0x53, 0xe9, 0x88, 0x74, 0x37, 0xb0, 0x6f, - 0xd7, 0x3f, 0x97, 0xf4, 0x39, 0xe9, 0x6d, 0x59, 0xd1, 0x40, 0xbb, 0xa7, 0x6d, 0xe8, 0x98, 0xb8, - 0x36, 0x36, 0xc6, 0x7d, 0x0d, 0x5e, 0xd7, 0x68, 0xc4, 0xa2, 0xf5, 0xbe, 0x36, 0x86, 0xa6, 0x4e, - 0x19, 0x42, 0x8c, 0xa2, 0x04, 0xef, 0xf1, 0xc4, 0x99, 0x75, 0x57, 0xc4, 0xa2, 0xb5, 0x28, 0x81, - 0xbe, 0x24, 0x83, 0xa4, 0x90, 0x7c, 0x13, 0xe7, 0x20, 0xb2, 0x1c, 0xbd, 0x9e, 0x71, 0xb8, 0x86, - 0x7d, 0x36, 0x88, 0xfa, 0x84, 0x30, 0x44, 0x25, 0x92, 0x06, 0x41, 0x7b, 0x7d, 0x9b, 0x71, 0x25, - 0x1f, 0xa3, 0xbf, 0x47, 0xdf, 0x39, 0x1c, 0x7d, 0xe7, 0xff, 0xd1, 0x77, 0x7e, 0x9f, 0xfc, 0xce, - 0xe1, 0xe4, 0x77, 0xfe, 0x9d, 0xfc, 0xce, 0x8f, 0x79, 0x26, 0x30, 0x6f, 0x92, 0x80, 0xcb, 0x32, - 0xfc, 0x6e, 0xfe, 0xe3, 0xf5, 0x17, 0x96, 0xe8, 0xb0, 0xbd, 0xfc, 0xf6, 0xcd, 0xbb, 0x70, 0x77, - 0xe7, 0xfe, 0xe7, 0x37, 0xe8, 0xa4, 0x6f, 0xae, 0x3f, 0xbf, 0x09, 0x00, 0x00, 0xff, 0xff, 0x96, - 0xb2, 0xe9, 0xb8, 0x20, 0x02, 0x00, 0x00, + 0x51, 0x12, 0xd7, 0x2a, 0x31, 0x91, 0xc4, 0x46, 0x83, 0xac, 0xdc, 0xd4, 0xe9, 0xf4, 0xd8, 0x4e, + 0x68, 0x3b, 0xcd, 0xcc, 0x29, 0x81, 0xb7, 0xf0, 0x81, 0x7c, 0x00, 0x97, 0x2c, 0x5d, 0x1a, 0x78, + 0x91, 0x1b, 0x66, 0x7a, 0xe1, 0xde, 0xbb, 0x3b, 0xe7, 0xfb, 0xff, 0x93, 0xff, 0xcc, 0x1c, 0x32, + 0xd6, 0xa8, 0x44, 0x0a, 0xa1, 0xe0, 0x4c, 0x2a, 0xc6, 0x0b, 0x08, 0xb9, 0xac, 0x50, 0x31, 0x8e, + 0x41, 0xad, 0x24, 0x4a, 0x3a, 0xb2, 0x86, 0xe0, 0x62, 0x98, 0x6a, 0xf2, 0x22, 0xd2, 0xd9, 0xb2, + 0xd2, 0xc8, 0x2a, 0x14, 0x0c, 0xe1, 0xab, 0xe1, 0x8b, 0x76, 0x8e, 0xbe, 0x22, 0x43, 0x96, 0x96, + 0xa2, 0x8a, 0x59, 0x9a, 0x2a, 0xd0, 0xda, 0x73, 0x26, 0xce, 0xec, 0xc9, 0x6a, 0x60, 0xe0, 0x07, + 0xcb, 0x68, 0x40, 0x9e, 0xa1, 0x62, 0x95, 0xfe, 0x05, 0x2a, 0xe6, 0x39, 0xab, 0x2a, 0x28, 0x62, + 0x91, 0x7a, 0x8f, 0x8c, 0xf5, 0xe9, 0xad, 0xb4, 0xb0, 0xca, 0x32, 0x9d, 0xfe, 0x34, 0xa1, 0x9f, + 0x76, 0xc0, 0x1b, 0xbc, 0x44, 0x7d, 0x93, 0x1a, 0x23, 0x40, 0x25, 0x38, 0x7d, 0x4f, 0xdc, 0x5a, + 0x6a, 0x8c, 0x4b, 0xd3, 0x9a, 0x48, 0xf7, 0xed, 0x38, 0x78, 0xb8, 0x7c, 0x10, 0xe9, 0xec, 0x3a, + 0xb5, 0x22, 0xf5, 0xa5, 0x9e, 0xfe, 0x71, 0xc8, 0xf0, 0x9e, 0x4a, 0x47, 0xa4, 0xbb, 0x81, 0x7d, + 0xbb, 0xfe, 0xb9, 0xa4, 0xcf, 0x49, 0x6f, 0xcb, 0x8a, 0x06, 0xda, 0x3d, 0x6d, 0x43, 0xc7, 0xc4, + 0xb5, 0xb1, 0x31, 0xee, 0x6b, 0xf0, 0xba, 0x46, 0x23, 0x16, 0xad, 0xf7, 0xb5, 0x31, 0x34, 0x75, + 0xca, 0x10, 0x62, 0x14, 0x25, 0x78, 0x8f, 0x27, 0xce, 0xac, 0xbb, 0x22, 0x16, 0xad, 0x45, 0x09, + 0xf4, 0x25, 0x19, 0x24, 0x85, 0xe4, 0x9b, 0x38, 0x07, 0x91, 0xe5, 0xe8, 0xf5, 0x8c, 0xc3, 0x35, + 0xec, 0xb3, 0x41, 0xd4, 0x27, 0x84, 0x21, 0x2a, 0x91, 0x34, 0x08, 0xda, 0xeb, 0xdb, 0x8c, 0x2b, + 0xf9, 0x18, 0xfd, 0x3d, 0xfa, 0xce, 0xe1, 0xe8, 0x3b, 0xff, 0x8f, 0xbe, 0xf3, 0xfb, 0xe4, 0x77, + 0x0e, 0x27, 0xbf, 0xf3, 0xef, 0xe4, 0x77, 0x7e, 0xcc, 0x33, 0x81, 0x79, 0x93, 0x04, 0x5c, 0x96, + 0xe1, 0x77, 0xf3, 0x1f, 0xaf, 0xbf, 0xb0, 0x44, 0x87, 0xed, 0xe5, 0xb7, 0x6f, 0xde, 0x85, 0xbb, + 0x3b, 0xf7, 0x3f, 0xbf, 0x41, 0x27, 0x7d, 0x73, 0xfd, 0xf9, 0x4d, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x55, 0x9f, 0x7d, 0x0b, 0x20, 0x02, 0x00, 0x00, } func (m *MsgInstantiateOracleContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/cosmwasm.pb.go b/x/icaoracle/types/cosmwasm.pb.go index f97edf83a4..7e47fe9c7f 100644 --- a/x/icaoracle/types/cosmwasm.pb.go +++ b/x/icaoracle/types/cosmwasm.pb.go @@ -257,31 +257,31 @@ var fileDescriptor_42aeb672f768be80 = []byte{ // 428 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x52, 0xb1, 0x8e, 0xd3, 0x40, 0x10, 0x8d, 0x2f, 0x89, 0x0f, 0x96, 0x2b, 0xd0, 0xea, 0x14, 0x99, 0x14, 0x76, 0x74, 0x34, 0x6e, - 0xce, 0x4b, 0x38, 0xf1, 0x03, 0x09, 0x14, 0x91, 0x08, 0x85, 0xe9, 0x68, 0xd0, 0xd8, 0x3b, 0x18, - 0x8b, 0x78, 0x37, 0xf2, 0x6c, 0x72, 0xc7, 0x4f, 0x20, 0xbe, 0x83, 0x2f, 0xb9, 0xf2, 0x1a, 0x24, - 0xaa, 0x80, 0x92, 0xbf, 0xa0, 0x42, 0xde, 0xb5, 0x23, 0x0a, 0x0a, 0x28, 0x68, 0xc6, 0xf3, 0x3c, - 0x6f, 0x46, 0xef, 0x3d, 0x2d, 0x8b, 0x72, 0x4d, 0xd5, 0x35, 0x50, 0x25, 0x6c, 0xd9, 0x4e, 0x45, - 0xf7, 0x23, 0x59, 0xd7, 0xda, 0x68, 0xfe, 0xf0, 0x88, 0x6d, 0xd9, 0x4e, 0xc7, 0xe7, 0x85, 0x2e, - 0xb4, 0x1d, 0x8a, 0xa6, 0x73, 0xbc, 0x71, 0xd8, 0xf0, 0x34, 0x89, 0x0c, 0x08, 0xc5, 0x76, 0x9a, - 0xa1, 0x81, 0xe6, 0x56, 0xa9, 0xdc, 0xfc, 0xe2, 0xab, 0xc7, 0xf8, 0x92, 0x8a, 0x17, 0x37, 0x98, - 0x6f, 0x0c, 0xce, 0xb5, 0x32, 0x35, 0xe4, 0x86, 0x8f, 0x98, 0x4f, 0xa8, 0x24, 0xd6, 0x81, 0x37, - 0xf1, 0xe2, 0xfb, 0x69, 0x8b, 0xf8, 0x98, 0xdd, 0xcb, 0x5b, 0x4e, 0x70, 0x62, 0x27, 0x47, 0xcc, - 0x63, 0xd6, 0xaf, 0xa8, 0x08, 0xfa, 0x13, 0x2f, 0x3e, 0x9b, 0x8d, 0x7e, 0xee, 0x22, 0x9e, 0xc2, - 0x75, 0x77, 0x71, 0x89, 0x44, 0x50, 0x60, 0xda, 0x50, 0x38, 0xb0, 0xe1, 0xbb, 0x8d, 0x92, 0x14, - 0x0c, 0x27, 0xfd, 0xf8, 0xc1, 0xd3, 0x47, 0x89, 0x13, 0x99, 0x34, 0x22, 0x93, 0x56, 0x64, 0x32, - 0xd7, 0xa5, 0x9a, 0x3d, 0xb9, 0xdd, 0x45, 0xbd, 0x2f, 0xdf, 0xa3, 0xb8, 0x28, 0xcd, 0xfb, 0x4d, - 0x96, 0xe4, 0xba, 0x12, 0xad, 0x23, 0xf7, 0xb9, 0x24, 0xf9, 0x41, 0x98, 0x8f, 0x6b, 0x24, 0xbb, - 0x40, 0xa9, 0xbb, 0x7c, 0xf1, 0xe9, 0x84, 0x8d, 0x96, 0x54, 0x2c, 0x14, 0x19, 0x50, 0xa6, 0x84, - 0xbf, 0xf0, 0x76, 0xce, 0x86, 0x20, 0xab, 0x52, 0xb5, 0xc6, 0x1c, 0xe0, 0x8f, 0xd9, 0x69, 0xae, - 0x25, 0xbe, 0x2d, 0xa5, 0x75, 0x36, 0x98, 0xb1, 0xfd, 0x2e, 0xf2, 0xe7, 0x5a, 0xe2, 0xe2, 0x79, - 0xea, 0x37, 0xa3, 0x85, 0x6c, 0x56, 0x57, 0x90, 0xe1, 0x2a, 0x18, 0xb8, 0x55, 0x0b, 0xba, 0x40, - 0x86, 0xff, 0x10, 0x88, 0xff, 0xdf, 0x02, 0x79, 0xc5, 0xc2, 0x3f, 0xe7, 0x91, 0x22, 0xad, 0xb5, - 0x22, 0xe4, 0x01, 0x3b, 0x05, 0x29, 0x6b, 0x24, 0x6a, 0x83, 0xe9, 0x20, 0xe7, 0x6c, 0x20, 0xc1, - 0x80, 0x0d, 0xe6, 0x2c, 0xb5, 0xfd, 0x6c, 0x79, 0xbb, 0x0f, 0xbd, 0xbb, 0x7d, 0xe8, 0xfd, 0xd8, - 0x87, 0xde, 0xe7, 0x43, 0xd8, 0xbb, 0x3b, 0x84, 0xbd, 0x6f, 0x87, 0xb0, 0xf7, 0xe6, 0xea, 0x37, - 0x69, 0xaf, 0x4d, 0x5d, 0x4a, 0xbc, 0x7c, 0x09, 0x19, 0x09, 0xb2, 0xbd, 0xd8, 0x4e, 0x9f, 0x89, - 0x1b, 0x51, 0xe6, 0xa0, 0x6b, 0xc8, 0x57, 0xe8, 0xb4, 0x66, 0xbe, 0x7d, 0x8e, 0x57, 0xbf, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x9c, 0x1f, 0x60, 0x9b, 0xf9, 0x02, 0x00, 0x00, + 0xce, 0x4b, 0x38, 0x89, 0x0f, 0x48, 0xa0, 0x88, 0x44, 0x28, 0x4c, 0x47, 0x83, 0xc6, 0xde, 0xc1, + 0x58, 0xc4, 0xbb, 0x91, 0x67, 0x93, 0x3b, 0x7e, 0x02, 0xf1, 0x1d, 0x7c, 0xc9, 0x95, 0xd7, 0x20, + 0x51, 0x05, 0x94, 0xfc, 0x05, 0x15, 0xf2, 0xae, 0x1d, 0x51, 0x50, 0x40, 0x41, 0x33, 0x9e, 0xe7, + 0x79, 0x33, 0x7a, 0xef, 0x69, 0x59, 0x94, 0x6b, 0xaa, 0xae, 0x81, 0x2a, 0x61, 0xcb, 0x76, 0x2a, + 0xba, 0x1f, 0xc9, 0xba, 0xd6, 0x46, 0xf3, 0x87, 0x47, 0x6c, 0xcb, 0x76, 0x3a, 0x3e, 0x2f, 0x74, + 0xa1, 0xed, 0x50, 0x34, 0x9d, 0xe3, 0x8d, 0xc3, 0x86, 0xa7, 0x49, 0x64, 0x40, 0x28, 0xb6, 0xd3, + 0x0c, 0x0d, 0x34, 0xb7, 0x4a, 0xe5, 0xe6, 0x17, 0x5f, 0x3d, 0xc6, 0x97, 0x54, 0xbc, 0xb8, 0xc1, + 0x7c, 0x63, 0x70, 0xae, 0x95, 0xa9, 0x21, 0x37, 0x7c, 0xc4, 0x7c, 0x42, 0x25, 0xb1, 0x0e, 0xbc, + 0x89, 0x17, 0xdf, 0x4f, 0x5b, 0xc4, 0xc7, 0xec, 0x5e, 0xde, 0x72, 0x82, 0x13, 0x3b, 0x39, 0x62, + 0x1e, 0xb3, 0x7e, 0x45, 0x45, 0xd0, 0x9f, 0x78, 0xf1, 0xd9, 0x6c, 0xf4, 0x73, 0x17, 0xf1, 0x14, + 0xae, 0xbb, 0x8b, 0x4b, 0x24, 0x82, 0x02, 0xd3, 0x86, 0xc2, 0x81, 0x0d, 0xdf, 0x6d, 0x94, 0xa4, + 0x60, 0x38, 0xe9, 0xc7, 0x0f, 0x9e, 0x3e, 0x4a, 0x9c, 0xc8, 0xa4, 0x11, 0x99, 0xb4, 0x22, 0x93, + 0xb9, 0x2e, 0xd5, 0xec, 0xc9, 0xed, 0x2e, 0xea, 0x7d, 0xf9, 0x1e, 0xc5, 0x45, 0x69, 0xde, 0x6f, + 0xb2, 0x24, 0xd7, 0x95, 0x68, 0x1d, 0xb9, 0xcf, 0x25, 0xc9, 0x0f, 0xc2, 0x7c, 0x5c, 0x23, 0xd9, + 0x05, 0x4a, 0xdd, 0xe5, 0x8b, 0x4f, 0x27, 0x6c, 0xb4, 0xa4, 0x62, 0xa1, 0xc8, 0x80, 0x32, 0x25, + 0xfc, 0x85, 0xb7, 0x73, 0x36, 0x04, 0x59, 0x95, 0xaa, 0x35, 0xe6, 0x00, 0x7f, 0xcc, 0x4e, 0x73, + 0x2d, 0xf1, 0x6d, 0x29, 0xad, 0xb3, 0xc1, 0x8c, 0xed, 0x77, 0x91, 0x3f, 0xd7, 0x12, 0x17, 0xcf, + 0x53, 0xbf, 0x19, 0x2d, 0x64, 0xb3, 0xba, 0x82, 0x0c, 0x57, 0xc1, 0xc0, 0xad, 0x5a, 0xd0, 0x05, + 0x32, 0xfc, 0x87, 0x40, 0xfc, 0xff, 0x16, 0xc8, 0x2b, 0x16, 0xfe, 0x39, 0x8f, 0x14, 0x69, 0xad, + 0x15, 0x21, 0x0f, 0xd8, 0x29, 0x48, 0x59, 0x23, 0x51, 0x1b, 0x4c, 0x07, 0x39, 0x67, 0x03, 0x09, + 0x06, 0x6c, 0x30, 0x67, 0xa9, 0xed, 0x67, 0xcb, 0xdb, 0x7d, 0xe8, 0xdd, 0xed, 0x43, 0xef, 0xc7, + 0x3e, 0xf4, 0x3e, 0x1f, 0xc2, 0xde, 0xdd, 0x21, 0xec, 0x7d, 0x3b, 0x84, 0xbd, 0x37, 0x57, 0xbf, + 0x49, 0x7b, 0x6d, 0xea, 0x52, 0xe2, 0xe5, 0x4b, 0xc8, 0x48, 0x90, 0xed, 0xc5, 0x76, 0xfa, 0x4c, + 0xdc, 0x88, 0x32, 0x07, 0x5d, 0x43, 0xbe, 0x42, 0xa7, 0x35, 0xf3, 0xed, 0x73, 0xbc, 0xfa, 0x15, + 0x00, 0x00, 0xff, 0xff, 0x5f, 0x32, 0xf4, 0x28, 0xf9, 0x02, 0x00, 0x00, } func (m *MsgExecuteContract) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/expected_keepers.go b/x/icaoracle/types/expected_keepers.go index c999f32b56..29f00fe55d 100644 --- a/x/icaoracle/types/expected_keepers.go +++ b/x/icaoracle/types/expected_keepers.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/ibc-go/v7/modules/core/exported" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // ClientKeeper defines the expected IBC client keeper diff --git a/x/icaoracle/types/genesis.pb.go b/x/icaoracle/types/genesis.pb.go index 33ad1f91e2..50ef97e114 100644 --- a/x/icaoracle/types/genesis.pb.go +++ b/x/icaoracle/types/genesis.pb.go @@ -145,8 +145,8 @@ var fileDescriptor_89fd81957c6adfb8 = []byte{ 0xdf, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x4e, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x0f, 0x06, 0x1b, 0xaf, 0xeb, 0x93, 0x98, 0x54, 0xac, - 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x53, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, - 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xb9, 0xd8, 0x5d, 0xdb, 0xbd, 0x01, + 0x0f, 0x0d, 0xce, 0x32, 0x43, 0x33, 0xfd, 0x0a, 0xa4, 0x40, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, + 0x62, 0x03, 0x87, 0xa8, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x7a, 0xf5, 0xc9, 0x68, 0xbd, 0x01, 0x00, 0x00, } diff --git a/x/icaoracle/types/genesis_test.go b/x/icaoracle/types/genesis_test.go index fab5e49b9f..0b1d21aeb4 100644 --- a/x/icaoracle/types/genesis_test.go +++ b/x/icaoracle/types/genesis_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestValidateGenesis(t *testing.T) { diff --git a/x/icaoracle/types/ica_test.go b/x/icaoracle/types/ica_test.go index b88970a860..ffb6e72f2e 100644 --- a/x/icaoracle/types/ica_test.go +++ b/x/icaoracle/types/ica_test.go @@ -9,7 +9,7 @@ import ( proto "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestValidateICATx(t *testing.T) { diff --git a/x/icaoracle/types/icaoracle.pb.go b/x/icaoracle/types/icaoracle.pb.go index 118a1d71de..e366e35e03 100644 --- a/x/icaoracle/types/icaoracle.pb.go +++ b/x/icaoracle/types/icaoracle.pb.go @@ -305,39 +305,39 @@ var fileDescriptor_842e38c1f0da9e66 = []byte{ // 557 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0xc1, 0x6e, 0xd3, 0x4c, 0x14, 0x85, 0xe3, 0xe6, 0xaf, 0xdb, 0xde, 0xa6, 0x7f, 0xcd, 0x28, 0x82, 0x34, 0x12, 0xc6, 0xa4, - 0x2c, 0x02, 0x52, 0x1d, 0x41, 0x05, 0x5b, 0x14, 0x1a, 0x03, 0x96, 0x48, 0x5b, 0xec, 0x64, 0xc3, - 0xc6, 0x9a, 0xcc, 0x8c, 0x92, 0x51, 0x62, 0x8f, 0x65, 0x4f, 0x22, 0xf2, 0x0a, 0x5d, 0xb1, 0x60, - 0x49, 0xdf, 0x87, 0x65, 0x97, 0x2c, 0x51, 0xc2, 0x83, 0x20, 0x8f, 0x9d, 0xd6, 0xc0, 0x6e, 0xee, - 0x77, 0x8e, 0xaf, 0x7c, 0xee, 0xcc, 0x05, 0x2b, 0x95, 0x09, 0xa7, 0xac, 0xc3, 0x09, 0x16, 0x09, - 0x26, 0xb3, 0xd2, 0xc9, 0x8e, 0x13, 0x21, 0x05, 0x32, 0x72, 0x87, 0x7d, 0xcb, 0x9b, 0xf5, 0xb1, - 0x18, 0x0b, 0x25, 0x76, 0xb2, 0x53, 0xee, 0x6b, 0xfd, 0xd2, 0x40, 0xbf, 0x50, 0x06, 0x74, 0x04, - 0xbb, 0x64, 0x82, 0x79, 0x14, 0x70, 0xda, 0xd0, 0x2c, 0xad, 0xbd, 0xe7, 0xed, 0xa8, 0xda, 0xa5, - 0xe8, 0x18, 0x0e, 0x88, 0x88, 0x22, 0x46, 0x24, 0x17, 0x4a, 0xdf, 0x52, 0x7a, 0xed, 0x0e, 0xba, - 0x14, 0x3d, 0x04, 0x20, 0x13, 0x1c, 0x45, 0x6c, 0x96, 0x39, 0xaa, 0xca, 0xb1, 0x57, 0x10, 0x97, - 0xa2, 0x07, 0xb0, 0x13, 0x8b, 0x44, 0x66, 0xda, 0x7f, 0x4a, 0xd3, 0xb3, 0xd2, 0xa5, 0xe8, 0x11, - 0xec, 0x73, 0x82, 0x03, 0x4c, 0x69, 0xc2, 0xd2, 0xb4, 0xb1, 0xad, 0x44, 0xe0, 0x04, 0x77, 0x73, - 0x82, 0x9e, 0x82, 0x41, 0x44, 0x24, 0x13, 0x4c, 0xe4, 0xad, 0x4b, 0x57, 0xae, 0xc3, 0x0d, 0xdf, - 0x58, 0xef, 0x83, 0x8e, 0x89, 0xe4, 0x0b, 0xd6, 0xd8, 0xb1, 0xb4, 0xf6, 0xae, 0x57, 0x54, 0xad, - 0x6f, 0x5b, 0xa0, 0xf7, 0x99, 0x4c, 0x38, 0x41, 0x06, 0x54, 0xa7, 0x6c, 0x59, 0x24, 0xcc, 0x8e, - 0xa8, 0x0e, 0xdb, 0x0b, 0x3c, 0x9b, 0xb3, 0x22, 0x55, 0x5e, 0x64, 0xbf, 0x15, 0xaa, 0x2f, 0x02, - 0xb9, 0x8c, 0x59, 0x91, 0x07, 0x72, 0x34, 0x58, 0xc6, 0xca, 0x30, 0x8f, 0x29, 0x96, 0x2c, 0x90, - 0x3c, 0x64, 0x2a, 0x54, 0xd5, 0x83, 0x1c, 0x0d, 0x78, 0xc8, 0xd0, 0x63, 0xa8, 0x8d, 0x66, 0x82, - 0x4c, 0x83, 0x09, 0xe3, 0xe3, 0x89, 0x54, 0xc9, 0xaa, 0xde, 0xbe, 0x62, 0xef, 0x15, 0x42, 0x26, - 0x00, 0x96, 0x32, 0xe1, 0xa3, 0xb9, 0x64, 0x9b, 0x50, 0x25, 0x82, 0x4e, 0x00, 0x51, 0x96, 0x4a, - 0x1e, 0x61, 0x35, 0xf9, 0xfc, 0x2a, 0x55, 0xb6, 0x3d, 0xef, 0x5e, 0x49, 0x29, 0xae, 0xf0, 0x15, - 0xe8, 0xa9, 0xc4, 0x72, 0x9e, 0x36, 0x76, 0x2d, 0xad, 0xfd, 0xff, 0x0b, 0xd3, 0xfe, 0xfb, 0x19, - 0xd8, 0xf9, 0x14, 0x7c, 0xe5, 0xf2, 0x0a, 0x77, 0xeb, 0x35, 0x34, 0x3c, 0x46, 0x59, 0x18, 0x67, - 0xbd, 0x3c, 0x2c, 0x59, 0xf7, 0xee, 0x17, 0x8e, 0xe1, 0x20, 0x95, 0x52, 0x4c, 0x59, 0x14, 0x50, - 0x16, 0x89, 0xb0, 0x98, 0x5c, 0xad, 0x80, 0xbd, 0x8c, 0x3d, 0xfb, 0xaa, 0x41, 0xad, 0xdc, 0x19, - 0xd9, 0x70, 0xd4, 0x77, 0x06, 0x9e, 0x7b, 0x16, 0xf8, 0x83, 0xee, 0x60, 0xe8, 0x07, 0xc3, 0x73, - 0xff, 0xd2, 0x39, 0x73, 0xdf, 0xba, 0x4e, 0xcf, 0xa8, 0x34, 0x0f, 0xaf, 0xae, 0xad, 0xfd, 0x12, - 0x42, 0x4f, 0xa0, 0xfe, 0xa7, 0xff, 0xe3, 0xd0, 0x19, 0x3a, 0x3d, 0x43, 0x6b, 0xc2, 0xd5, 0xb5, - 0xa5, 0xe7, 0xd5, 0xbf, 0x5d, 0xdd, 0xf3, 0xe0, 0xd2, 0xbb, 0x78, 0xe7, 0x39, 0xbe, 0x6f, 0x6c, - 0xe5, 0x5d, 0x4b, 0xe8, 0x4d, 0xff, 0xfb, 0xca, 0xd4, 0x6e, 0x56, 0xa6, 0xf6, 0x73, 0x65, 0x6a, - 0x5f, 0xd6, 0x66, 0xe5, 0x66, 0x6d, 0x56, 0x7e, 0xac, 0xcd, 0xca, 0xa7, 0xd3, 0x31, 0x97, 0x93, - 0xf9, 0xc8, 0x26, 0x22, 0xec, 0xf8, 0x6a, 0x46, 0x27, 0x1f, 0xf0, 0x28, 0xed, 0x14, 0x8b, 0xb5, - 0x78, 0xfe, 0xb2, 0xf3, 0xb9, 0xb4, 0x5e, 0xd9, 0x13, 0x48, 0x47, 0xba, 0xda, 0x99, 0xd3, 0xdf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x89, 0xc7, 0x7a, 0x7f, 0x03, 0x00, 0x00, + 0x2c, 0x02, 0x52, 0x1d, 0x41, 0xa5, 0x6e, 0x51, 0x68, 0x0c, 0x58, 0x22, 0x6d, 0xb1, 0x93, 0x0d, + 0x1b, 0x6b, 0x32, 0x33, 0x4a, 0x46, 0x89, 0x3d, 0x96, 0x3d, 0x89, 0xc8, 0x2b, 0x74, 0xc5, 0x82, + 0x25, 0x7d, 0x1f, 0x96, 0x5d, 0xb2, 0x44, 0x09, 0x0f, 0x82, 0x3c, 0x76, 0x5a, 0x03, 0xbb, 0xb9, + 0xdf, 0x39, 0xbe, 0xf2, 0xb9, 0x33, 0x17, 0xac, 0x54, 0x26, 0x9c, 0xb2, 0x0e, 0x27, 0x58, 0x24, + 0x98, 0xcc, 0x4a, 0x27, 0x3b, 0x4e, 0x84, 0x14, 0xc8, 0xc8, 0x1d, 0xf6, 0x1d, 0x6f, 0xd6, 0xc7, + 0x62, 0x2c, 0x94, 0xd8, 0xc9, 0x4e, 0xb9, 0xaf, 0xf5, 0x4b, 0x03, 0xfd, 0x52, 0x19, 0xd0, 0x11, + 0xec, 0x92, 0x09, 0xe6, 0x51, 0xc0, 0x69, 0x43, 0xb3, 0xb4, 0xf6, 0x9e, 0xb7, 0xa3, 0x6a, 0x97, + 0xa2, 0x63, 0x38, 0x20, 0x22, 0x8a, 0x18, 0x91, 0x5c, 0x28, 0x7d, 0x4b, 0xe9, 0xb5, 0x7b, 0xe8, + 0x52, 0xf4, 0x18, 0x80, 0x4c, 0x70, 0x14, 0xb1, 0x59, 0xe6, 0xa8, 0x2a, 0xc7, 0x5e, 0x41, 0x5c, + 0x8a, 0x1e, 0xc1, 0x4e, 0x2c, 0x12, 0x99, 0x69, 0xff, 0x29, 0x4d, 0xcf, 0x4a, 0x97, 0xa2, 0x27, + 0xb0, 0xcf, 0x09, 0x0e, 0x30, 0xa5, 0x09, 0x4b, 0xd3, 0xc6, 0xb6, 0x12, 0x81, 0x13, 0xdc, 0xcd, + 0x09, 0x7a, 0x0e, 0x06, 0x11, 0x91, 0x4c, 0x30, 0x91, 0x77, 0x2e, 0x5d, 0xb9, 0x0e, 0x37, 0x7c, + 0x63, 0x7d, 0x08, 0x3a, 0x26, 0x92, 0x2f, 0x58, 0x63, 0xc7, 0xd2, 0xda, 0xbb, 0x5e, 0x51, 0xb5, + 0xbe, 0x6d, 0x81, 0xde, 0x67, 0x32, 0xe1, 0x04, 0x19, 0x50, 0x9d, 0xb2, 0x65, 0x91, 0x30, 0x3b, + 0xa2, 0x3a, 0x6c, 0x2f, 0xf0, 0x6c, 0xce, 0x8a, 0x54, 0x79, 0x91, 0xfd, 0x56, 0xa8, 0xbe, 0x08, + 0xe4, 0x32, 0x66, 0x45, 0x1e, 0xc8, 0xd1, 0x60, 0x19, 0x2b, 0xc3, 0x3c, 0xa6, 0x58, 0xb2, 0x40, + 0xf2, 0x90, 0xa9, 0x50, 0x55, 0x0f, 0x72, 0x34, 0xe0, 0x21, 0x43, 0x4f, 0xa1, 0x36, 0x9a, 0x09, + 0x32, 0x0d, 0x26, 0x8c, 0x8f, 0x27, 0x52, 0x25, 0xab, 0x7a, 0xfb, 0x8a, 0xbd, 0x57, 0x08, 0x99, + 0x00, 0x58, 0xca, 0x84, 0x8f, 0xe6, 0x92, 0x6d, 0x42, 0x95, 0x08, 0x3a, 0x01, 0x44, 0x59, 0x2a, + 0x79, 0x84, 0xd5, 0xe4, 0xf3, 0xab, 0x54, 0xd9, 0xf6, 0xbc, 0x07, 0x25, 0xa5, 0xb8, 0xc2, 0x33, + 0xd0, 0x53, 0x89, 0xe5, 0x3c, 0x6d, 0xec, 0x5a, 0x5a, 0xfb, 0xff, 0x57, 0xa6, 0xfd, 0xf7, 0x33, + 0xb0, 0xf3, 0x29, 0xf8, 0xca, 0xe5, 0x15, 0xee, 0xd6, 0x6b, 0x68, 0x78, 0x8c, 0xb2, 0x30, 0xce, + 0x7a, 0x79, 0x58, 0xb2, 0xee, 0xfd, 0x2f, 0x1c, 0xc3, 0x41, 0x2a, 0xa5, 0x98, 0xb2, 0x28, 0xa0, + 0x2c, 0x12, 0x61, 0x31, 0xb9, 0x5a, 0x01, 0x7b, 0x19, 0x7b, 0xf1, 0x55, 0x83, 0x5a, 0xb9, 0x33, + 0xb2, 0xe1, 0xa8, 0xef, 0x0c, 0x3c, 0xf7, 0x3c, 0xf0, 0x07, 0xdd, 0xc1, 0xd0, 0x0f, 0x86, 0x17, + 0xfe, 0x95, 0x73, 0xee, 0xbe, 0x75, 0x9d, 0x9e, 0x51, 0x69, 0x1e, 0x5e, 0xdf, 0x58, 0xfb, 0x25, + 0x84, 0x9e, 0x41, 0xfd, 0x4f, 0xff, 0xc7, 0xa1, 0x33, 0x74, 0x7a, 0x86, 0xd6, 0x84, 0xeb, 0x1b, + 0x4b, 0xcf, 0xab, 0x7f, 0xbb, 0xba, 0x17, 0xc1, 0x95, 0x77, 0xf9, 0xce, 0x73, 0x7c, 0xdf, 0xd8, + 0xca, 0xbb, 0x96, 0xd0, 0x9b, 0xfe, 0xf7, 0x95, 0xa9, 0xdd, 0xae, 0x4c, 0xed, 0xe7, 0xca, 0xd4, + 0xbe, 0xac, 0xcd, 0xca, 0xed, 0xda, 0xac, 0xfc, 0x58, 0x9b, 0x95, 0x4f, 0xa7, 0x63, 0x2e, 0x27, + 0xf3, 0x91, 0x4d, 0x44, 0xd8, 0xf1, 0xd5, 0x8c, 0x4e, 0x3e, 0xe0, 0x51, 0xda, 0x29, 0x16, 0x6b, + 0xf1, 0xf2, 0xac, 0xf3, 0xb9, 0xb4, 0x5e, 0xd9, 0x13, 0x48, 0x47, 0xba, 0xda, 0x99, 0xd3, 0xdf, + 0x01, 0x00, 0x00, 0xff, 0xff, 0x24, 0xa4, 0x53, 0xc9, 0x7f, 0x03, 0x00, 0x00, } func (m *Oracle) Marshal() (dAtA []byte, err error) { diff --git a/x/icaoracle/types/message_add_oracle.go b/x/icaoracle/types/message_add_oracle.go index e88c999d2e..9be898cbf5 100644 --- a/x/icaoracle/types/message_add_oracle.go +++ b/x/icaoracle/types/message_add_oracle.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgAddOracle = "add_oracle" diff --git a/x/icaoracle/types/message_add_oracle_test.go b/x/icaoracle/types/message_add_oracle_test.go index fe79a3cfec..8570554c11 100644 --- a/x/icaoracle/types/message_add_oracle_test.go +++ b/x/icaoracle/types/message_add_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestMsgAddOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_instantiate_oracle.go b/x/icaoracle/types/message_instantiate_oracle.go index bcefea7241..73d1ff9338 100644 --- a/x/icaoracle/types/message_instantiate_oracle.go +++ b/x/icaoracle/types/message_instantiate_oracle.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgInstantiateOracle = "instantiate_oracle" diff --git a/x/icaoracle/types/message_instantiate_oracle_test.go b/x/icaoracle/types/message_instantiate_oracle_test.go index baf30af9ba..b88cddfa16 100644 --- a/x/icaoracle/types/message_instantiate_oracle_test.go +++ b/x/icaoracle/types/message_instantiate_oracle_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestMsgInstantiateOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_remove_oracle_test.go b/x/icaoracle/types/message_remove_oracle_test.go index c52a8c71c3..3b9ced6b7d 100644 --- a/x/icaoracle/types/message_remove_oracle_test.go +++ b/x/icaoracle/types/message_remove_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestMsgRemoveOracle(t *testing.T) { diff --git a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go index 45e564f0c9..e3b8ffe7b6 100644 --- a/x/icaoracle/types/message_restore_oracle_interchain_account_test.go +++ b/x/icaoracle/types/message_restore_oracle_interchain_account_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestMsgRestoreOracleICA(t *testing.T) { diff --git a/x/icaoracle/types/message_toggle_oracle_test.go b/x/icaoracle/types/message_toggle_oracle_test.go index a8b53ad980..d4a7990034 100644 --- a/x/icaoracle/types/message_toggle_oracle_test.go +++ b/x/icaoracle/types/message_toggle_oracle_test.go @@ -7,8 +7,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestMsgMsgToggleOracle(t *testing.T) { diff --git a/x/icaoracle/types/metric_test.go b/x/icaoracle/types/metric_test.go index 8021c5be7b..46f8dc6090 100644 --- a/x/icaoracle/types/metric_test.go +++ b/x/icaoracle/types/metric_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) // Tests NewMetric and GetMetricID diff --git a/x/icaoracle/types/oracle_test.go b/x/icaoracle/types/oracle_test.go index 40569b9900..52bfcb9652 100644 --- a/x/icaoracle/types/oracle_test.go +++ b/x/icaoracle/types/oracle_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/icaoracle/types" + "github.com/Stride-Labs/stride/v16/x/icaoracle/types" ) func TestValidateICASetup(t *testing.T) { diff --git a/x/icaoracle/types/query.pb.go b/x/icaoracle/types/query.pb.go index 6922cf7f49..6370ebb9b9 100644 --- a/x/icaoracle/types/query.pb.go +++ b/x/icaoracle/types/query.pb.go @@ -402,7 +402,7 @@ var fileDescriptor_d4d4563f64cd9510 = []byte{ // 519 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xce, 0xd4, 0x9a, 0xb4, 0x4f, 0x8a, 0xf2, 0x2c, 0x35, 0x5d, 0xea, 0x1a, 0x16, 0x5b, 0x2b, - 0xda, 0x1d, 0xdb, 0x20, 0x7a, 0xb5, 0x1e, 0x44, 0xb4, 0xa8, 0x29, 0x78, 0x10, 0x21, 0x6c, 0x36, + 0xda, 0x1d, 0xdb, 0x80, 0x7a, 0xb5, 0x1e, 0x44, 0xb4, 0xa8, 0x29, 0x78, 0x10, 0x21, 0x6c, 0x36, 0xc3, 0x76, 0x30, 0xdd, 0x49, 0x77, 0x26, 0xc5, 0x45, 0xbc, 0x78, 0xf1, 0x26, 0x05, 0x7f, 0x82, 0x7f, 0xa6, 0xc7, 0x82, 0x17, 0x41, 0x10, 0x49, 0xfc, 0x21, 0xd2, 0x99, 0x49, 0xea, 0xba, 0x49, 0x13, 0xed, 0x29, 0xb3, 0xef, 0x7d, 0xef, 0xfb, 0xbe, 0x79, 0xf3, 0x11, 0x58, 0x92, 0x2a, 0xe1, @@ -431,8 +431,8 @@ var fileDescriptor_d4d4563f64cd9510 = []byte{ 0x07, 0xfb, 0xb7, 0x7d, 0xd9, 0x74, 0x6d, 0x6e, 0x1d, 0x76, 0x5d, 0x72, 0xd4, 0x75, 0xc9, 0xcf, 0xae, 0x4b, 0x0e, 0x7a, 0x6e, 0xe1, 0xa8, 0xe7, 0x16, 0xbe, 0xf5, 0xdc, 0xc2, 0xab, 0x6a, 0xc4, 0xd5, 0x4e, 0xa7, 0xe1, 0x87, 0x62, 0x77, 0x18, 0xd5, 0xfe, 0xfa, 0x5d, 0xfa, 0xf6, 0x0f, 0x42, - 0x95, 0xb6, 0x99, 0x6c, 0x14, 0xf5, 0x3f, 0x5b, 0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, - 0x03, 0x04, 0x9a, 0x61, 0x05, 0x00, 0x00, + 0x95, 0xb6, 0x99, 0x6c, 0x14, 0xf5, 0x3f, 0x5b, 0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x09, + 0x2e, 0x90, 0x29, 0x61, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/icaoracle/types/tx.pb.go b/x/icaoracle/types/tx.pb.go index bd960ceda8..49673eb746 100644 --- a/x/icaoracle/types/tx.pb.go +++ b/x/icaoracle/types/tx.pb.go @@ -522,7 +522,7 @@ var fileDescriptor_6e58a377bb8520d3 = []byte{ // 627 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x95, 0x3f, 0x6f, 0xd3, 0x4e, 0x18, 0xc7, 0xeb, 0xb6, 0xea, 0xef, 0xd7, 0x53, 0x4b, 0x53, 0x53, 0x35, 0x89, 0x01, 0xd3, 0x1a, - 0x11, 0x42, 0xa5, 0xd8, 0xb4, 0x55, 0x01, 0x85, 0x29, 0xcd, 0x14, 0x89, 0xa8, 0x92, 0xc3, 0x84, + 0x11, 0x42, 0xa5, 0xd8, 0xb4, 0x15, 0x05, 0x85, 0x29, 0xcd, 0x14, 0x89, 0xa8, 0x92, 0xc3, 0x84, 0x90, 0xac, 0xcb, 0xf9, 0x70, 0x2c, 0x92, 0xbb, 0xe8, 0xee, 0x1a, 0xb5, 0x2b, 0x23, 0x13, 0x12, 0x13, 0xef, 0x00, 0x31, 0x75, 0xe0, 0x05, 0x30, 0x32, 0x56, 0x4c, 0x8c, 0x28, 0x19, 0x3a, 0xf1, 0x1e, 0x90, 0xff, 0xc6, 0x71, 0x5c, 0x1a, 0x84, 0x60, 0x49, 0x74, 0xcf, 0xf3, 0xbd, 0xef, 0x3d, @@ -545,9 +545,9 @@ var fileDescriptor_6e58a377bb8520d3 = []byte{ 0x37, 0xb3, 0xe2, 0xf1, 0xae, 0x7d, 0x94, 0xc0, 0xf5, 0x26, 0x77, 0x4c, 0xcc, 0x05, 0x65, 0x61, 0xb2, 0x51, 0xaf, 0xfd, 0xcd, 0x4d, 0xab, 0x3e, 0x4a, 0xd3, 0x94, 0xb2, 0x69, 0xd2, 0x45, 0x69, 0xb7, 0xc0, 0x8d, 0x8c, 0x70, 0xcc, 0xf2, 0x59, 0x02, 0x6b, 0x4d, 0xee, 0x3c, 0xa3, 0x8e, 0xd3, - 0x8d, 0x0e, 0xff, 0x21, 0x58, 0x86, 0xc7, 0xa2, 0x43, 0x99, 0x2b, 0x4e, 0xaf, 0x24, 0x19, 0x4b, - 0x67, 0x6e, 0x80, 0x4d, 0xb0, 0x04, 0x91, 0x70, 0x07, 0xd8, 0x3f, 0xf6, 0xff, 0xcd, 0x70, 0x54, - 0x3d, 0xf0, 0x18, 0xc7, 0x7e, 0x1e, 0xa5, 0x96, 0x4d, 0x99, 0x2c, 0x57, 0x2b, 0x82, 0x7c, 0x2a, + 0x8d, 0x0e, 0xff, 0x00, 0x2c, 0xc3, 0x63, 0xd1, 0xa1, 0xcc, 0x15, 0xa7, 0x57, 0x92, 0x8c, 0xa5, + 0x33, 0x37, 0xc0, 0x26, 0x58, 0x82, 0x48, 0xb8, 0x03, 0xec, 0x1f, 0xfb, 0xff, 0x66, 0x38, 0xaa, + 0x3e, 0xf4, 0x18, 0xc7, 0x7e, 0x1e, 0xa5, 0x96, 0x4d, 0x99, 0x2c, 0x57, 0x2b, 0x82, 0x7c, 0x2a, 0x14, 0xd3, 0x7d, 0x08, 0xe8, 0x4c, 0xdc, 0xa3, 0x83, 0x7f, 0x44, 0xf7, 0x1b, 0x14, 0xc9, 0xb2, 0x42, 0x8a, 0x64, 0x28, 0xa2, 0xd8, 0xfb, 0xb1, 0x00, 0x16, 0x9a, 0xdc, 0x91, 0x5b, 0x60, 0x79, 0xfc, 0xba, 0xa8, 0x7a, 0xfa, 0x21, 0xd3, 0x93, 0x57, 0x5c, 0x29, 0xfd, 0x3a, 0x1f, 0x99, 0xcb, @@ -558,7 +558,7 @@ var fileDescriptor_6e58a377bb8520d3 = []byte{ 0x74, 0x3e, 0x54, 0xa5, 0xef, 0x43, 0x55, 0x7a, 0x3b, 0x52, 0xe7, 0xce, 0x47, 0xea, 0xdc, 0xb7, 0x91, 0x3a, 0xf7, 0x7c, 0xdf, 0x71, 0x45, 0xe7, 0xb8, 0xad, 0x23, 0xda, 0x33, 0x5a, 0xbe, 0x5d, 0xe5, 0x29, 0x6c, 0x73, 0x23, 0xec, 0xaf, 0xc1, 0xee, 0xc1, 0x44, 0x8f, 0x89, 0xd3, 0x3e, 0xe6, - 0xed, 0x25, 0xff, 0xfb, 0xb4, 0xff, 0x33, 0x00, 0x00, 0xff, 0xff, 0x23, 0xf8, 0x8e, 0x70, 0x15, + 0xed, 0x25, 0xff, 0xfb, 0xb4, 0xff, 0x33, 0x00, 0x00, 0xff, 0xff, 0xe0, 0xd5, 0x1a, 0xc3, 0x15, 0x07, 0x00, 0x00, } diff --git a/x/interchainquery/client/cli/query.go b/x/interchainquery/client/cli/query.go index b8b1486f23..ee8b1177c9 100644 --- a/x/interchainquery/client/cli/query.go +++ b/x/interchainquery/client/cli/query.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) // GetQueryCmd returns the cli query commands for this module. diff --git a/x/interchainquery/genesis.go b/x/interchainquery/genesis.go index 94ea4d9837..18d05dd726 100644 --- a/x/interchainquery/genesis.go +++ b/x/interchainquery/genesis.go @@ -3,8 +3,8 @@ package interchainquery import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/interchainquery/handler.go b/x/interchainquery/handler.go index 714424ac48..a1d1298cfe 100644 --- a/x/interchainquery/handler.go +++ b/x/interchainquery/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) // NewHandler returns a handler for interchainquery module messages diff --git a/x/interchainquery/keeper/abci.go b/x/interchainquery/keeper/abci.go index 0abfa99c60..d155205010 100644 --- a/x/interchainquery/keeper/abci.go +++ b/x/interchainquery/keeper/abci.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) // EndBlocker of interchainquery module diff --git a/x/interchainquery/keeper/grpc_query.go b/x/interchainquery/keeper/grpc_query.go index d00ef762e6..c38730f7c5 100644 --- a/x/interchainquery/keeper/grpc_query.go +++ b/x/interchainquery/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) var _ types.QueryServiceServer = Keeper{} diff --git a/x/interchainquery/keeper/keeper.go b/x/interchainquery/keeper/keeper.go index 245ecb481d..dc575d0642 100644 --- a/x/interchainquery/keeper/keeper.go +++ b/x/interchainquery/keeper/keeper.go @@ -13,8 +13,8 @@ import ( connectiontypes "github.com/cosmos/ibc-go/v7/modules/core/03-connection/types" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) // Keeper of this module maintains collections of registered zones. diff --git a/x/interchainquery/keeper/keeper_test.go b/x/interchainquery/keeper/keeper_test.go index a46c6884de..a99a347cf9 100644 --- a/x/interchainquery/keeper/keeper_test.go +++ b/x/interchainquery/keeper/keeper_test.go @@ -5,9 +5,9 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) type KeeperTestSuite struct { diff --git a/x/interchainquery/keeper/msg_server.go b/x/interchainquery/keeper/msg_server.go index d8b156225b..549e2254cf 100644 --- a/x/interchainquery/keeper/msg_server.go +++ b/x/interchainquery/keeper/msg_server.go @@ -16,8 +16,8 @@ import ( ics23 "github.com/cosmos/ics23/go" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) type msgServer struct { diff --git a/x/interchainquery/keeper/msg_submit_query_response_test.go b/x/interchainquery/keeper/msg_submit_query_response_test.go index e936e6ca66..9e66255bd0 100644 --- a/x/interchainquery/keeper/msg_submit_query_response_test.go +++ b/x/interchainquery/keeper/msg_submit_query_response_test.go @@ -10,8 +10,8 @@ import ( banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const ( diff --git a/x/interchainquery/keeper/queries.go b/x/interchainquery/keeper/queries.go index 1fbb47c215..61713ea8ef 100644 --- a/x/interchainquery/keeper/queries.go +++ b/x/interchainquery/keeper/queries.go @@ -16,7 +16,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/store/prefix" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) // Generates a query ID based on the request information diff --git a/x/interchainquery/keeper/queries_test.go b/x/interchainquery/keeper/queries_test.go index df41bac804..4ba5751ec9 100644 --- a/x/interchainquery/keeper/queries_test.go +++ b/x/interchainquery/keeper/queries_test.go @@ -10,10 +10,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (s *KeeperTestSuite) TestGetQueryId() { diff --git a/x/interchainquery/module.go b/x/interchainquery/module.go index f0ed1e04ca..09d6f43032 100644 --- a/x/interchainquery/module.go +++ b/x/interchainquery/module.go @@ -19,10 +19,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/x/interchainquery/client/cli" - "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/interchainquery/client/cli" + "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) var ( diff --git a/x/interchainquery/types/genesis.pb.go b/x/interchainquery/types/genesis.pb.go index 329bc0a2ed..9102071ea7 100644 --- a/x/interchainquery/types/genesis.pb.go +++ b/x/interchainquery/types/genesis.pb.go @@ -311,49 +311,49 @@ var fileDescriptor_74cd646eb05658fd = []byte{ // 717 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x4c, 0x10, 0x8e, 0xd3, 0xf4, 0x6f, 0xb2, 0x71, 0xd2, 0xfc, 0x4b, 0x01, 0xa7, 0x12, 0x89, 0x29, 0x12, - 0xb5, 0x0a, 0xb5, 0xd5, 0x22, 0x0e, 0x48, 0x1c, 0x68, 0x52, 0x0b, 0x02, 0xa5, 0x4d, 0x9d, 0x54, - 0xa2, 0x5c, 0x2c, 0xc7, 0x5e, 0x92, 0x55, 0x6d, 0x6f, 0xea, 0x5d, 0x47, 0xe4, 0x19, 0xb8, 0x70, - 0xe4, 0x09, 0x78, 0x02, 0x1e, 0xa2, 0xc7, 0x8a, 0x13, 0xe2, 0x50, 0x50, 0x7b, 0xe3, 0x29, 0x90, - 0xd7, 0xde, 0xb6, 0x50, 0xc1, 0x89, 0x93, 0xbd, 0xf3, 0x7d, 0xf3, 0xcd, 0x78, 0xe6, 0xf3, 0x82, - 0x65, 0xca, 0x22, 0xec, 0x21, 0x03, 0x87, 0x0c, 0x45, 0xee, 0xc8, 0xc1, 0xe1, 0x61, 0x8c, 0xa2, - 0xa9, 0x31, 0x59, 0x33, 0x86, 0x28, 0x44, 0x14, 0x53, 0x7d, 0x1c, 0x11, 0x46, 0x60, 0x3d, 0x25, - 0xea, 0xbf, 0x11, 0xf5, 0xc9, 0xda, 0xe2, 0xc2, 0x90, 0x0c, 0x09, 0x67, 0x19, 0xc9, 0x5b, 0x9a, - 0xb0, 0xd8, 0x18, 0x12, 0x32, 0xf4, 0x91, 0xc1, 0x4f, 0x83, 0xf8, 0x8d, 0xe1, 0xc5, 0x91, 0xc3, - 0x30, 0x09, 0x33, 0xbc, 0xee, 0x12, 0x1a, 0x10, 0x6a, 0xa7, 0x89, 0xe9, 0x21, 0x85, 0x96, 0x3e, - 0x16, 0xc0, 0xec, 0x6e, 0xa2, 0x0e, 0xab, 0x20, 0x8f, 0x3d, 0x45, 0x52, 0x25, 0xad, 0x64, 0xe5, - 0xb1, 0x07, 0xef, 0x80, 0x8a, 0x4b, 0xc2, 0x10, 0xb9, 0x89, 0x90, 0x8d, 0x3d, 0x25, 0xcf, 0x21, - 0xf9, 0x22, 0xd8, 0xf1, 0x60, 0x1d, 0x14, 0x79, 0x83, 0x09, 0x3e, 0xc3, 0xf1, 0x39, 0x7e, 0xee, - 0x78, 0xf0, 0x16, 0x00, 0xbc, 0x6d, 0x9b, 0x4d, 0xc7, 0x48, 0x29, 0x70, 0xb0, 0xc4, 0x23, 0xfd, - 0xe9, 0x18, 0xc1, 0xdb, 0x40, 0x8e, 0xd0, 0x61, 0x8c, 0x28, 0xb3, 0x3d, 0x87, 0x39, 0xca, 0xac, - 0x2a, 0x69, 0xb2, 0x55, 0xce, 0x62, 0x9b, 0x0e, 0x73, 0xe0, 0x32, 0x98, 0x77, 0x1d, 0xdf, 0x1f, - 0x38, 0xee, 0x81, 0x1d, 0x10, 0x2f, 0xf6, 0x91, 0x52, 0xe1, 0x32, 0x55, 0x11, 0x7e, 0xc9, 0xa3, - 0xb0, 0x09, 0xca, 0xe7, 0x44, 0xec, 0x29, 0x45, 0x4e, 0x02, 0x22, 0xd4, 0x49, 0xbf, 0x45, 0x10, - 0x78, 0x35, 0x99, 0x57, 0x93, 0x45, 0x90, 0x97, 0xdb, 0x01, 0x55, 0x86, 0x03, 0x44, 0x62, 0x66, - 0x8f, 0x89, 0x8f, 0xdd, 0xa9, 0x32, 0xaf, 0x4a, 0x5a, 0x75, 0x5d, 0xd3, 0xff, 0xb8, 0x0f, 0xbd, - 0x9f, 0x26, 0x74, 0x39, 0xdf, 0xaa, 0xb0, 0xcb, 0x47, 0xb8, 0x0d, 0x6a, 0x42, 0x50, 0x2c, 0x44, - 0xa9, 0xaa, 0x92, 0x56, 0x5e, 0xaf, 0xeb, 0xe9, 0xc6, 0x74, 0xb1, 0x31, 0x7d, 0x33, 0x23, 0xb4, - 0x8a, 0x47, 0x27, 0xcd, 0xdc, 0x87, 0x6f, 0x4d, 0xc9, 0x9a, 0xcf, 0x92, 0x05, 0x04, 0xef, 0x81, - 0xff, 0x85, 0x5e, 0xf2, 0xa4, 0xcc, 0x09, 0xc6, 0x4a, 0x49, 0x95, 0xb4, 0x82, 0x25, 0x0a, 0xf5, - 0x45, 0xfc, 0xf2, 0x7c, 0x29, 0x0a, 0x99, 0x52, 0x56, 0x25, 0xad, 0x78, 0x3e, 0xdf, 0x1e, 0x0a, - 0x59, 0xa2, 0x47, 0xe3, 0x41, 0x80, 0x29, 0x4d, 0x36, 0x3c, 0x42, 0x78, 0x38, 0x62, 0x4a, 0x2d, - 0xd5, 0xbb, 0x00, 0x9e, 0xf1, 0xf8, 0xd2, 0xbb, 0x3c, 0x28, 0x25, 0x63, 0xea, 0x12, 0x1c, 0xb2, - 0x2b, 0x66, 0x71, 0x40, 0x25, 0x42, 0x01, 0x61, 0x48, 0xc8, 0x70, 0xb3, 0xb4, 0x1e, 0x27, 0x1f, - 0xf3, 0xf5, 0xa4, 0x79, 0x77, 0x88, 0xd9, 0x28, 0x1e, 0xe8, 0x2e, 0x09, 0x32, 0xfb, 0x65, 0x8f, - 0x55, 0xea, 0x1d, 0x18, 0x89, 0x41, 0xa8, 0xde, 0x09, 0xd9, 0xe7, 0x4f, 0xab, 0x20, 0x73, 0x67, - 0x27, 0x64, 0x96, 0x9c, 0x4a, 0xa6, 0x0d, 0x40, 0x1b, 0xc8, 0x3e, 0x71, 0x1d, 0x5f, 0x54, 0x98, - 0xf9, 0x07, 0x15, 0xca, 0x5c, 0x31, 0x2b, 0xb0, 0x02, 0x66, 0x27, 0x8e, 0x1f, 0xa7, 0x5e, 0x95, - 0x5b, 0x0b, 0x3f, 0x4e, 0x9a, 0xb5, 0x08, 0xd1, 0xd8, 0x67, 0xf7, 0x49, 0x80, 0x19, 0x0a, 0xc6, - 0x6c, 0x6a, 0xa5, 0x94, 0xa5, 0x2e, 0x90, 0x9f, 0xa6, 0xff, 0x6c, 0x8f, 0x39, 0x0c, 0xc1, 0x27, - 0x60, 0x2e, 0xf1, 0x04, 0x46, 0x54, 0x91, 0xd4, 0x19, 0xad, 0xbc, 0xae, 0xfe, 0xc5, 0x34, 0xfc, - 0x7f, 0x6b, 0x15, 0x92, 0xce, 0x2d, 0x91, 0xb6, 0x62, 0x83, 0xca, 0x2f, 0x66, 0x82, 0x75, 0x70, - 0xdd, 0x32, 0x9f, 0x9b, 0xed, 0xbe, 0xbd, 0xbb, 0x67, 0x5a, 0xfb, 0xb6, 0x65, 0xf6, 0xba, 0x3b, - 0xdb, 0x3d, 0xb3, 0x96, 0x83, 0x37, 0xc1, 0x35, 0xcb, 0xec, 0x5b, 0xfb, 0xe7, 0xc8, 0xee, 0x9e, - 0xd9, 0xeb, 0xd7, 0x24, 0xb8, 0x08, 0x6e, 0x98, 0xaf, 0xcc, 0xf6, 0x5e, 0xdf, 0xcc, 0xa0, 0xf6, - 0xc6, 0xd6, 0x56, 0x6b, 0xa3, 0xfd, 0xa2, 0x96, 0x6f, 0xf5, 0x8e, 0x4e, 0x1b, 0xd2, 0xf1, 0x69, - 0x43, 0xfa, 0x7e, 0xda, 0x90, 0xde, 0x9f, 0x35, 0x72, 0xc7, 0x67, 0x8d, 0xdc, 0x97, 0xb3, 0x46, - 0xee, 0xf5, 0xa3, 0x4b, 0xb3, 0xeb, 0xf1, 0xae, 0x57, 0xb7, 0x9c, 0x01, 0x35, 0xb2, 0xfb, 0x6a, - 0xb2, 0xf6, 0xd0, 0x78, 0x7b, 0xe5, 0xd6, 0xe2, 0x23, 0x1d, 0xfc, 0xc7, 0x0d, 0xfc, 0xe0, 0x67, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xd8, 0xf4, 0x23, 0xe7, 0xdc, 0x04, 0x00, 0x00, + 0xb5, 0x0a, 0xb5, 0xd5, 0x22, 0x21, 0x21, 0x71, 0xa0, 0x49, 0x2d, 0x08, 0x94, 0x36, 0x75, 0x52, + 0x89, 0x72, 0xb1, 0x1c, 0x7b, 0x49, 0x56, 0xb5, 0xbd, 0xa9, 0x77, 0x1d, 0x91, 0x67, 0xe0, 0xc2, + 0x91, 0x27, 0xe0, 0x09, 0x78, 0x88, 0x1e, 0x2b, 0x4e, 0x88, 0x43, 0x41, 0xed, 0x8d, 0xa7, 0x40, + 0x5e, 0x7b, 0xdb, 0x42, 0x05, 0x27, 0x4e, 0xf6, 0xce, 0xf7, 0xcd, 0x37, 0xe3, 0x99, 0xcf, 0x0b, + 0x96, 0x29, 0x8b, 0xb0, 0x87, 0x0c, 0x1c, 0x32, 0x14, 0xb9, 0x23, 0x07, 0x87, 0x87, 0x31, 0x8a, + 0xa6, 0xc6, 0x64, 0xcd, 0x18, 0xa2, 0x10, 0x51, 0x4c, 0xf5, 0x71, 0x44, 0x18, 0x81, 0xf5, 0x94, + 0xa8, 0xff, 0x46, 0xd4, 0x27, 0x6b, 0x8b, 0x0b, 0x43, 0x32, 0x24, 0x9c, 0x65, 0x24, 0x6f, 0x69, + 0xc2, 0x62, 0x63, 0x48, 0xc8, 0xd0, 0x47, 0x06, 0x3f, 0x0d, 0xe2, 0x37, 0x86, 0x17, 0x47, 0x0e, + 0xc3, 0x24, 0xcc, 0xf0, 0xba, 0x4b, 0x68, 0x40, 0xa8, 0x9d, 0x26, 0xa6, 0x87, 0x14, 0x5a, 0xfa, + 0x58, 0x00, 0xb3, 0xbb, 0x89, 0x3a, 0xac, 0x82, 0x3c, 0xf6, 0x14, 0x49, 0x95, 0xb4, 0x92, 0x95, + 0xc7, 0x1e, 0xbc, 0x03, 0x2a, 0x2e, 0x09, 0x43, 0xe4, 0x26, 0x42, 0x36, 0xf6, 0x94, 0x3c, 0x87, + 0xe4, 0x8b, 0x60, 0xc7, 0x83, 0x75, 0x50, 0xe4, 0x0d, 0x26, 0xf8, 0x0c, 0xc7, 0xe7, 0xf8, 0xb9, + 0xe3, 0xc1, 0x5b, 0x00, 0xf0, 0xb6, 0x6d, 0x36, 0x1d, 0x23, 0xa5, 0xc0, 0xc1, 0x12, 0x8f, 0xf4, + 0xa7, 0x63, 0x04, 0x6f, 0x03, 0x39, 0x42, 0x87, 0x31, 0xa2, 0xcc, 0xf6, 0x1c, 0xe6, 0x28, 0xb3, + 0xaa, 0xa4, 0xc9, 0x56, 0x39, 0x8b, 0x6d, 0x3a, 0xcc, 0x81, 0xcb, 0x60, 0xde, 0x75, 0x7c, 0x7f, + 0xe0, 0xb8, 0x07, 0x76, 0x40, 0xbc, 0xd8, 0x47, 0x4a, 0x85, 0xcb, 0x54, 0x45, 0xf8, 0x25, 0x8f, + 0xc2, 0x26, 0x28, 0x9f, 0x13, 0xb1, 0xa7, 0x14, 0x39, 0x09, 0x88, 0x50, 0x27, 0xfd, 0x16, 0x41, + 0xe0, 0xd5, 0x64, 0x5e, 0x4d, 0x16, 0x41, 0x5e, 0x6e, 0x07, 0x54, 0x19, 0x0e, 0x10, 0x89, 0x99, + 0x3d, 0x26, 0x3e, 0x76, 0xa7, 0xca, 0xbc, 0x2a, 0x69, 0xd5, 0x75, 0x4d, 0xff, 0xe3, 0x3e, 0xf4, + 0x7e, 0x9a, 0xd0, 0xe5, 0x7c, 0xab, 0xc2, 0x2e, 0x1f, 0xe1, 0x36, 0xa8, 0x09, 0x41, 0xb1, 0x10, + 0xa5, 0xaa, 0x4a, 0x5a, 0x79, 0xbd, 0xae, 0xa7, 0x1b, 0xd3, 0xc5, 0xc6, 0xf4, 0xcd, 0x8c, 0xd0, + 0x2a, 0x1e, 0x9d, 0x34, 0x73, 0x1f, 0xbe, 0x35, 0x25, 0x6b, 0x3e, 0x4b, 0x16, 0x10, 0xbc, 0x07, + 0xfe, 0x17, 0x7a, 0xc9, 0x93, 0x32, 0x27, 0x18, 0x2b, 0x25, 0x55, 0xd2, 0x0a, 0x96, 0x28, 0xd4, + 0x17, 0xf1, 0xcb, 0xf3, 0xa5, 0x28, 0x64, 0x4a, 0x59, 0x95, 0xb4, 0xe2, 0xf9, 0x7c, 0x7b, 0x28, + 0x64, 0x89, 0x1e, 0x8d, 0x07, 0x01, 0xa6, 0x34, 0xd9, 0xf0, 0x08, 0xe1, 0xe1, 0x88, 0x29, 0xb5, + 0x54, 0xef, 0x02, 0x78, 0xc6, 0xe3, 0x4b, 0xef, 0xf2, 0xa0, 0x94, 0x8c, 0xa9, 0x4b, 0x70, 0xc8, + 0xae, 0x98, 0xc5, 0x01, 0x95, 0x08, 0x05, 0x84, 0x21, 0x21, 0xc3, 0xcd, 0xd2, 0x7a, 0x9c, 0x7c, + 0xcc, 0xd7, 0x93, 0xe6, 0xdd, 0x21, 0x66, 0xa3, 0x78, 0xa0, 0xbb, 0x24, 0xc8, 0xec, 0x97, 0x3d, + 0x56, 0xa9, 0x77, 0x60, 0x24, 0x06, 0xa1, 0x7a, 0x27, 0x64, 0x9f, 0x3f, 0xad, 0x82, 0xcc, 0x9d, + 0x9d, 0x90, 0x59, 0x72, 0x2a, 0x99, 0x36, 0x00, 0x6d, 0x20, 0xfb, 0xc4, 0x75, 0x7c, 0x51, 0x61, + 0xe6, 0x1f, 0x54, 0x28, 0x73, 0xc5, 0xac, 0xc0, 0x0a, 0x98, 0x9d, 0x38, 0x7e, 0x9c, 0x7a, 0x55, + 0x6e, 0x2d, 0xfc, 0x38, 0x69, 0xd6, 0x22, 0x44, 0x63, 0x9f, 0xdd, 0x27, 0x01, 0x66, 0x28, 0x18, + 0xb3, 0xa9, 0x95, 0x52, 0x96, 0xba, 0x40, 0x7e, 0x9a, 0xfe, 0xb3, 0x3d, 0xe6, 0x30, 0x04, 0x9f, + 0x80, 0xb9, 0xc4, 0x13, 0x18, 0x51, 0x45, 0x52, 0x67, 0xb4, 0xf2, 0xba, 0xfa, 0x17, 0xd3, 0xf0, + 0xff, 0xad, 0x55, 0x48, 0x3a, 0xb7, 0x44, 0xda, 0x8a, 0x0d, 0x2a, 0xbf, 0x98, 0x09, 0xd6, 0xc1, + 0x75, 0xcb, 0x7c, 0x6e, 0xb6, 0xfb, 0xf6, 0xee, 0x9e, 0x69, 0xed, 0xdb, 0x96, 0xd9, 0xeb, 0xee, + 0x6c, 0xf7, 0xcc, 0x5a, 0x0e, 0xde, 0x04, 0xd7, 0x2c, 0xb3, 0x6f, 0xed, 0x9f, 0x23, 0xbb, 0x7b, + 0x66, 0xaf, 0x5f, 0x93, 0xe0, 0x22, 0xb8, 0x61, 0xbe, 0x32, 0xdb, 0x7b, 0x7d, 0x33, 0x83, 0xda, + 0x1b, 0x5b, 0x5b, 0xad, 0x8d, 0xf6, 0x8b, 0x5a, 0xbe, 0xd5, 0x3b, 0x3a, 0x6d, 0x48, 0xc7, 0xa7, + 0x0d, 0xe9, 0xfb, 0x69, 0x43, 0x7a, 0x7f, 0xd6, 0xc8, 0x1d, 0x9f, 0x35, 0x72, 0x5f, 0xce, 0x1a, + 0xb9, 0xd7, 0x8f, 0x2e, 0xcd, 0xae, 0xc7, 0xbb, 0x5e, 0xdd, 0x72, 0x06, 0xd4, 0xc8, 0xee, 0xab, + 0xc9, 0xda, 0x43, 0xe3, 0xed, 0x95, 0x5b, 0x8b, 0x8f, 0x74, 0xf0, 0x1f, 0x37, 0xf0, 0x83, 0x9f, + 0x01, 0x00, 0x00, 0xff, 0xff, 0xcd, 0x45, 0x34, 0xbc, 0xdc, 0x04, 0x00, 0x00, } func (m *Query) Marshal() (dAtA []byte, err error) { diff --git a/x/interchainquery/types/messages.pb.go b/x/interchainquery/types/messages.pb.go index 52b45cf769..531db820dc 100644 --- a/x/interchainquery/types/messages.pb.go +++ b/x/interchainquery/types/messages.pb.go @@ -122,39 +122,40 @@ func init() { } var fileDescriptor_25adad4f8ed32400 = []byte{ - // 512 bytes of a gzipped FileDescriptorProto + // 513 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x3f, 0x8f, 0xd3, 0x3e, 0x18, 0xc7, 0xeb, 0xf6, 0xf7, 0xeb, 0xdd, 0xe5, 0x8a, 0x80, 0x5c, 0x85, 0x72, 0x05, 0x92, 0xca, - 0x0b, 0x05, 0x71, 0xb6, 0x52, 0xc4, 0x70, 0x65, 0xa2, 0xdb, 0x49, 0x1c, 0x7f, 0xd2, 0x8d, 0xa5, - 0x4a, 0x1b, 0x9f, 0x6b, 0xa9, 0x89, 0x83, 0xed, 0x56, 0xd7, 0x95, 0x89, 0x11, 0x89, 0x85, 0xb1, - 0x2f, 0x02, 0x89, 0x91, 0x95, 0xf1, 0x04, 0x0b, 0x53, 0x85, 0x5a, 0x06, 0x58, 0xfb, 0x0a, 0x50, - 0xec, 0x04, 0xd0, 0x5d, 0x19, 0x98, 0xfc, 0xe4, 0xf9, 0x7e, 0x9e, 0x7f, 0xf1, 0x63, 0xab, 0x25, - 0x95, 0x60, 0x11, 0xc1, 0x2c, 0x51, 0x44, 0x0c, 0x47, 0x21, 0x4b, 0x5e, 0x4c, 0x88, 0x98, 0xe1, - 0xa9, 0x8f, 0x63, 0x22, 0x65, 0x48, 0x89, 0x44, 0xa9, 0xe0, 0x8a, 0xdb, 0xfb, 0x86, 0x44, 0xe7, - 0x48, 0x34, 0xf5, 0x1b, 0x75, 0xca, 0x29, 0xd7, 0x14, 0xce, 0x2c, 0x13, 0xd0, 0xd8, 0x1f, 0x72, - 0x19, 0x73, 0xd9, 0x37, 0x82, 0xf9, 0xc8, 0xa5, 0x1b, 0x94, 0x73, 0x3a, 0x26, 0x38, 0x4c, 0x19, - 0x0e, 0x93, 0x84, 0xab, 0x50, 0x31, 0x9e, 0x14, 0xea, 0x4d, 0x45, 0x92, 0x88, 0x88, 0x98, 0x25, - 0x0a, 0x0f, 0xc5, 0x2c, 0x55, 0x1c, 0xa7, 0x82, 0xf3, 0x13, 0x23, 0xc3, 0x1f, 0x65, 0xeb, 0xda, - 0xb1, 0xa4, 0xbd, 0xc9, 0x20, 0x66, 0xea, 0x59, 0xd6, 0x43, 0x40, 0x64, 0xca, 0x13, 0x49, 0x6c, - 0x64, 0x6d, 0xeb, 0xce, 0xfa, 0x2c, 0x72, 0x40, 0x13, 0xb4, 0x76, 0xba, 0x7b, 0xeb, 0x85, 0x77, - 0x79, 0x16, 0xc6, 0xe3, 0x0e, 0x2c, 0x14, 0x18, 0x6c, 0x69, 0xf3, 0x28, 0xca, 0x78, 0x3d, 0x44, - 0xc6, 0x97, 0xcf, 0xf3, 0x85, 0x02, 0x83, 0x2d, 0x6d, 0x1e, 0x45, 0xf6, 0x6d, 0xab, 0x2a, 0x88, - 0x9c, 0x8c, 0x95, 0x53, 0x69, 0x82, 0x56, 0xad, 0x7b, 0x75, 0xbd, 0xf0, 0x2e, 0x19, 0xda, 0xf8, - 0x61, 0x90, 0x03, 0xf6, 0x63, 0x6b, 0x47, 0x37, 0xdd, 0xe7, 0xa9, 0x74, 0xfe, 0x6b, 0x82, 0xd6, - 0x6e, 0xfb, 0x3a, 0xfa, 0x3d, 0x18, 0x32, 0x83, 0xa1, 0xa7, 0x19, 0xf3, 0x24, 0x95, 0xdd, 0xfa, - 0x7a, 0xe1, 0x5d, 0x31, 0xa9, 0x7e, 0xc5, 0xc1, 0x60, 0x3b, 0xcd, 0xf5, 0xac, 0xf4, 0x88, 0x30, - 0x3a, 0x52, 0xce, 0xff, 0x4d, 0xd0, 0xaa, 0xfc, 0x59, 0xda, 0xf8, 0x61, 0x90, 0x03, 0xf6, 0x03, - 0xab, 0x76, 0x22, 0x78, 0xdc, 0x0f, 0xa3, 0x48, 0x10, 0x29, 0x9d, 0xaa, 0x9e, 0xcc, 0xf9, 0xf4, - 0xee, 0xa0, 0x9e, 0xdf, 0xc2, 0x43, 0xa3, 0xf4, 0x94, 0x60, 0x09, 0x0d, 0x76, 0x33, 0x3a, 0x77, - 0x75, 0x6a, 0xaf, 0xe6, 0x5e, 0xe9, 0xed, 0xdc, 0x03, 0xdf, 0xe7, 0x5e, 0x09, 0x36, 0x2d, 0x77, - 0xf3, 0xaf, 0x2e, 0xce, 0xf6, 0x07, 0x60, 0x55, 0x8e, 0x25, 0xb5, 0xdf, 0x03, 0x6b, 0x6f, 0xd3, - 0x95, 0xf8, 0xe8, 0xaf, 0x7b, 0x83, 0x36, 0xa7, 0x6e, 0x1c, 0xfe, 0x73, 0x48, 0x71, 0xc2, 0xf6, - 0xcb, 0xcf, 0xdf, 0xde, 0x94, 0xef, 0x76, 0xc0, 0x1d, 0x78, 0xeb, 0xc2, 0x4e, 0xab, 0x53, 0x3c, - 0xf5, 0x07, 0x44, 0x85, 0x3e, 0x96, 0x3a, 0x87, 0x76, 0x77, 0x7b, 0x1f, 0x97, 0x2e, 0x38, 0x5b, - 0xba, 0xe0, 0xeb, 0xd2, 0x05, 0xaf, 0x57, 0x6e, 0xe9, 0x6c, 0xe5, 0x96, 0xbe, 0xac, 0xdc, 0xd2, - 0xf3, 0x43, 0xca, 0xd4, 0x68, 0x32, 0x40, 0x43, 0x1e, 0xe3, 0x9e, 0x6e, 0xe9, 0xe0, 0x51, 0x38, - 0x90, 0x38, 0x7f, 0x33, 0x53, 0xff, 0x3e, 0x3e, 0xbd, 0x58, 0x65, 0x96, 0x12, 0x39, 0xa8, 0xea, - 0x5d, 0xbd, 0xf7, 0x33, 0x00, 0x00, 0xff, 0xff, 0x52, 0xf3, 0x24, 0x78, 0x60, 0x03, 0x00, 0x00, + 0x0b, 0x05, 0x71, 0xb6, 0x52, 0x24, 0xa4, 0x2b, 0x13, 0xdd, 0x4e, 0xe2, 0xf8, 0x93, 0x6e, 0x2c, + 0x55, 0xda, 0xf8, 0x5c, 0x4b, 0x4d, 0x1c, 0x6c, 0xb7, 0xba, 0xae, 0x4c, 0x8c, 0x48, 0x2c, 0x8c, + 0x7d, 0x11, 0x48, 0x8c, 0xac, 0x8c, 0x27, 0x58, 0x98, 0x2a, 0xd4, 0x32, 0xc0, 0xda, 0x57, 0x80, + 0x62, 0x27, 0x80, 0xee, 0xca, 0xc0, 0xe4, 0x27, 0xcf, 0xf7, 0xf3, 0xfc, 0x8b, 0x1f, 0x5b, 0x2d, + 0xa9, 0x04, 0x8b, 0x08, 0x66, 0x89, 0x22, 0x62, 0x38, 0x0a, 0x59, 0xf2, 0x62, 0x42, 0xc4, 0x0c, + 0x4f, 0x7d, 0x1c, 0x13, 0x29, 0x43, 0x4a, 0x24, 0x4a, 0x05, 0x57, 0xdc, 0xde, 0x37, 0x24, 0x3a, + 0x47, 0xa2, 0xa9, 0xdf, 0xa8, 0x53, 0x4e, 0xb9, 0xa6, 0x70, 0x66, 0x99, 0x80, 0xc6, 0xfe, 0x90, + 0xcb, 0x98, 0xcb, 0xbe, 0x11, 0xcc, 0x47, 0x2e, 0xdd, 0xa0, 0x9c, 0xd3, 0x31, 0xc1, 0x61, 0xca, + 0x70, 0x98, 0x24, 0x5c, 0x85, 0x8a, 0xf1, 0xa4, 0x50, 0x6f, 0x2a, 0x92, 0x44, 0x44, 0xc4, 0x2c, + 0x51, 0x78, 0x28, 0x66, 0xa9, 0xe2, 0x38, 0x15, 0x9c, 0x9f, 0x18, 0x19, 0xfe, 0x28, 0x5b, 0xd7, + 0x8e, 0x25, 0xed, 0x4d, 0x06, 0x31, 0x53, 0xcf, 0xb2, 0x1e, 0x02, 0x22, 0x53, 0x9e, 0x48, 0x62, + 0x23, 0x6b, 0x5b, 0x77, 0xd6, 0x67, 0x91, 0x03, 0x9a, 0xa0, 0xb5, 0xd3, 0xdd, 0x5b, 0x2f, 0xbc, + 0xcb, 0xb3, 0x30, 0x1e, 0x77, 0x60, 0xa1, 0xc0, 0x60, 0x4b, 0x9b, 0x47, 0x51, 0xc6, 0xeb, 0x21, + 0x32, 0xbe, 0x7c, 0x9e, 0x2f, 0x14, 0x18, 0x6c, 0x69, 0xf3, 0x28, 0xb2, 0x6f, 0x5b, 0x55, 0x41, + 0xe4, 0x64, 0xac, 0x9c, 0x4a, 0x13, 0xb4, 0x6a, 0xdd, 0xab, 0xeb, 0x85, 0x77, 0xc9, 0xd0, 0xc6, + 0x0f, 0x83, 0x1c, 0xb0, 0x1f, 0x5b, 0x3b, 0xba, 0xe9, 0x3e, 0x4f, 0xa5, 0xf3, 0x5f, 0x13, 0xb4, + 0x76, 0xdb, 0xd7, 0xd1, 0xef, 0xc1, 0x90, 0x19, 0x0c, 0x3d, 0xcd, 0x98, 0x27, 0xa9, 0xec, 0xd6, + 0xd7, 0x0b, 0xef, 0x8a, 0x49, 0xf5, 0x2b, 0x0e, 0x06, 0xdb, 0x69, 0xae, 0x67, 0xa5, 0x47, 0x84, + 0xd1, 0x91, 0x72, 0xfe, 0x6f, 0x82, 0x56, 0xe5, 0xcf, 0xd2, 0xc6, 0x0f, 0x83, 0x1c, 0xb0, 0x1f, + 0x58, 0xb5, 0x13, 0xc1, 0xe3, 0x7e, 0x18, 0x45, 0x82, 0x48, 0xe9, 0x54, 0xf5, 0x64, 0xce, 0xa7, + 0x77, 0x07, 0xf5, 0xfc, 0x16, 0x1e, 0x1a, 0xa5, 0xa7, 0x04, 0x4b, 0x68, 0xb0, 0x9b, 0xd1, 0xb9, + 0xab, 0x53, 0x7b, 0x35, 0xf7, 0x4a, 0x6f, 0xe7, 0x1e, 0xf8, 0x3e, 0xf7, 0x4a, 0xb0, 0x69, 0xb9, + 0x9b, 0x7f, 0x75, 0x71, 0xb6, 0x3f, 0x00, 0xab, 0x72, 0x2c, 0xa9, 0xfd, 0x1e, 0x58, 0x7b, 0x9b, + 0xae, 0xc4, 0x47, 0x7f, 0xdd, 0x1b, 0xb4, 0x39, 0x75, 0xe3, 0xf0, 0x9f, 0x43, 0x8a, 0x13, 0xb6, + 0x5f, 0x7e, 0xfe, 0xf6, 0xa6, 0x7c, 0xb7, 0x03, 0xee, 0xc0, 0x5b, 0x17, 0x76, 0x5a, 0x9d, 0xe2, + 0xa9, 0x3f, 0x20, 0x2a, 0xf4, 0xb1, 0xd4, 0x39, 0xb4, 0xbb, 0xdb, 0xfb, 0xb8, 0x74, 0xc1, 0xd9, + 0xd2, 0x05, 0x5f, 0x97, 0x2e, 0x78, 0xbd, 0x72, 0x4b, 0x67, 0x2b, 0xb7, 0xf4, 0x65, 0xe5, 0x96, + 0x9e, 0x1f, 0x52, 0xa6, 0x46, 0x93, 0x01, 0x1a, 0xf2, 0x18, 0xf7, 0x74, 0x4b, 0x07, 0x8f, 0xc2, + 0x81, 0xc4, 0xf9, 0x9b, 0x99, 0xfa, 0xf7, 0xf1, 0xe9, 0xc5, 0x2a, 0xb3, 0x94, 0xc8, 0x41, 0x55, + 0xef, 0xea, 0xbd, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x47, 0x42, 0x33, 0x23, 0x60, 0x03, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/interchainquery/types/query.pb.go b/x/interchainquery/types/query.pb.go index 2183899f02..4a5c7b157d 100644 --- a/x/interchainquery/types/query.pb.go +++ b/x/interchainquery/types/query.pb.go @@ -137,9 +137,9 @@ var fileDescriptor_b720c147b9144d5b = []byte{ 0x85, 0x8c, 0xf5, 0x83, 0xc1, 0xfa, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0x71, 0x44, 0x09, 0x5a, 0x68, 0x38, 0x05, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x65, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0x4d, 0xf5, 0x2b, + 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x36, 0x83, 0xcb, 0x0c, 0xcd, 0xf4, 0x2b, 0x30, 0x8c, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xc7, 0x9c, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0x2b, 0xdc, 0x3d, 0xa9, 0x5a, 0x02, 0x00, 0x00, + 0xff, 0xff, 0x3e, 0x6d, 0x2a, 0xf2, 0x5a, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/mint/client/cli/cli_test.go b/x/mint/client/cli/cli_test.go index 83837dd1f7..1fa8a0db63 100644 --- a/x/mint/client/cli/cli_test.go +++ b/x/mint/client/cli/cli_test.go @@ -11,8 +11,8 @@ import ( tmcli "github.com/cometbft/cometbft/libs/cli" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - "github.com/Stride-Labs/stride/v15/x/mint/client/cli" + "github.com/Stride-Labs/stride/v16/app" + "github.com/Stride-Labs/stride/v16/x/mint/client/cli" "github.com/cosmos/cosmos-sdk/client/flags" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" diff --git a/x/mint/client/cli/query.go b/x/mint/client/cli/query.go index bcbbe047d5..b54e55ec7c 100644 --- a/x/mint/client/cli/query.go +++ b/x/mint/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/mint/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/x/mint/client/rest/grpc_query_test.go b/x/mint/client/rest/grpc_query_test.go index 043c6fbee9..086f8e120d 100644 --- a/x/mint/client/rest/grpc_query_test.go +++ b/x/mint/client/rest/grpc_query_test.go @@ -14,8 +14,8 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/app" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" "github.com/cosmos/cosmos-sdk/testutil/network" ) diff --git a/x/mint/genesis.go b/x/mint/genesis.go index bd2a8f0427..0b679882cd 100644 --- a/x/mint/genesis.go +++ b/x/mint/genesis.go @@ -3,8 +3,8 @@ package mint import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/mint/keeper" - "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/mint/keeper" + "github.com/Stride-Labs/stride/v16/x/mint/types" ) // InitGenesis new mint genesis. diff --git a/x/mint/keeper/grpc_query.go b/x/mint/keeper/grpc_query.go index a0be2ab527..85e6b0c10d 100644 --- a/x/mint/keeper/grpc_query.go +++ b/x/mint/keeper/grpc_query.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/mint/types" ) var _ types.QueryServer = Querier{} diff --git a/x/mint/keeper/hooks.go b/x/mint/keeper/hooks.go index 6e36418596..81254092b6 100644 --- a/x/mint/keeper/hooks.go +++ b/x/mint/keeper/hooks.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/mint/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/mint/types" "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/mint/keeper/keeper.go b/x/mint/keeper/keeper.go index 37d4c0efe7..24a8641002 100644 --- a/x/mint/keeper/keeper.go +++ b/x/mint/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v15/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/mint/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" diff --git a/x/mint/module.go b/x/mint/module.go index adf8e6ae67..2eaa0fb263 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -17,11 +17,11 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/mint/client/cli" - "github.com/Stride-Labs/stride/v15/x/mint/keeper" + "github.com/Stride-Labs/stride/v16/x/mint/client/cli" + "github.com/Stride-Labs/stride/v16/x/mint/keeper" - //"github.com/Stride-Labs/stride/v15/x/mint/simulation" - "github.com/Stride-Labs/stride/v15/x/mint/types" + //"github.com/Stride-Labs/stride/v16/x/mint/simulation" + "github.com/Stride-Labs/stride/v16/x/mint/types" ) var ( diff --git a/x/mint/types/expected_keepers.go b/x/mint/types/expected_keepers.go index fdca5be4a7..7ffb121c99 100644 --- a/x/mint/types/expected_keepers.go +++ b/x/mint/types/expected_keepers.go @@ -1,7 +1,7 @@ package types // noalias import ( - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/x/mint/types/genesis.pb.go b/x/mint/types/genesis.pb.go index 02974f1934..bdf5cb4cd3 100644 --- a/x/mint/types/genesis.pb.go +++ b/x/mint/types/genesis.pb.go @@ -110,9 +110,9 @@ var fileDescriptor_f4521d63f51851f3 = []byte{ 0x5c, 0x26, 0x18, 0x22, 0xe1, 0x0a, 0x12, 0x77, 0xf2, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xbd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, - 0x60, 0xb0, 0x53, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x61, 0x56, 0x66, 0x68, 0xaa, 0x5f, + 0x60, 0xb0, 0x53, 0x75, 0x7d, 0x12, 0x93, 0x8a, 0xf5, 0xa1, 0x61, 0x56, 0x66, 0x68, 0xa6, 0x5f, 0x01, 0x09, 0xb9, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x98, 0x19, 0x03, 0x02, 0x00, - 0x00, 0xff, 0xff, 0xd8, 0x57, 0x15, 0xc8, 0xa3, 0x01, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x98, 0xfa, 0x6d, 0xf1, 0xa3, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/mint.pb.go b/x/mint/types/mint.pb.go index 67783f5ed4..fb812441ba 100644 --- a/x/mint/types/mint.pb.go +++ b/x/mint/types/mint.pb.go @@ -206,47 +206,47 @@ func init() { func init() { proto.RegisterFile("stride/mint/v1beta1/mint.proto", fileDescriptor_5ad5fa4b1fdb702f) } var fileDescriptor_5ad5fa4b1fdb702f = []byte{ - // 634 bytes of a gzipped FileDescriptorProto + // 635 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x4c, 0x14, 0x8d, 0xbf, 0xb6, 0xa9, 0x3a, 0x9f, 0x44, 0x8b, 0x4b, 0x89, 0xd5, 0x0a, 0xbb, 0x58, 0x80, - 0xba, 0xa0, 0xb6, 0x4a, 0xc5, 0xa6, 0x2b, 0x14, 0x95, 0x96, 0x48, 0x20, 0x05, 0x67, 0xd7, 0x8d, - 0xe5, 0x9f, 0xa9, 0x33, 0x6a, 0x3c, 0x63, 0xcd, 0x8c, 0x53, 0x22, 0x24, 0x5e, 0xa0, 0x2c, 0x58, - 0xb2, 0xe4, 0x71, 0xba, 0xec, 0x12, 0x75, 0x11, 0xa1, 0xe4, 0x0d, 0xb2, 0x61, 0x8b, 0x66, 0xc6, - 0xf9, 0x85, 0x48, 0x44, 0x74, 0x15, 0xcf, 0xb9, 0x77, 0xee, 0x39, 0x39, 0x73, 0xef, 0x05, 0x26, - 0xe3, 0x14, 0xc5, 0xd0, 0x4d, 0x11, 0xe6, 0x6e, 0xfb, 0x20, 0x84, 0x3c, 0x38, 0x90, 0x07, 0x27, - 0xa3, 0x84, 0x13, 0x7d, 0x53, 0xc5, 0x1d, 0x09, 0x15, 0xf1, 0xed, 0x07, 0x09, 0x49, 0x88, 0x8c, - 0xbb, 0xe2, 0x4b, 0xa5, 0xda, 0x9f, 0x40, 0xf9, 0x1d, 0xc2, 0x1c, 0x52, 0x9d, 0x83, 0x0d, 0x98, - 0x91, 0xa8, 0xe9, 0x67, 0x94, 0xb4, 0x11, 0x43, 0x04, 0x33, 0x43, 0xdb, 0xd5, 0xf6, 0xd6, 0xaa, - 0xb5, 0xeb, 0xae, 0x55, 0xba, 0xed, 0x5a, 0xcf, 0x12, 0xc4, 0x9b, 0x79, 0xe8, 0x44, 0x24, 0x75, - 0x23, 0xc2, 0x52, 0xc2, 0x8a, 0x9f, 0x7d, 0x16, 0x5f, 0xb8, 0xbc, 0x93, 0x41, 0xe6, 0x1c, 0xc3, - 0x68, 0xd0, 0xb5, 0x2a, 0x9d, 0x20, 0x6d, 0x1d, 0xd9, 0xb3, 0xf5, 0x6c, 0x6f, 0x5d, 0x42, 0xf5, - 0x31, 0xf2, 0x73, 0x09, 0x54, 0x8e, 0x91, 0xd0, 0x1b, 0xe6, 0x1c, 0x11, 0x5c, 0xa7, 0x24, 0x23, - 0x54, 0x7c, 0x31, 0xfd, 0x0c, 0xac, 0x32, 0x1e, 0x5c, 0x20, 0x9c, 0x14, 0x42, 0x5e, 0x2d, 0x2c, - 0xe4, 0x9e, 0x12, 0x52, 0x94, 0xb1, 0xbd, 0x61, 0x41, 0xfd, 0x23, 0xd8, 0x8a, 0x48, 0x9a, 0xe6, - 0x18, 0xf1, 0x8e, 0x9f, 0x11, 0xd2, 0xf2, 0x13, 0x4a, 0x2e, 0x79, 0xd3, 0xf8, 0x4f, 0x32, 0x9d, - 0x2e, 0xcc, 0xb4, 0xa5, 0x98, 0xa6, 0x8b, 0xda, 0xde, 0xe6, 0x08, 0xa8, 0x13, 0xd2, 0x3a, 0x95, - 0x1c, 0xfa, 0x67, 0x0d, 0x98, 0x33, 0xec, 0x0c, 0x46, 0x39, 0x15, 0xa7, 0x30, 0x8f, 0x13, 0xc8, - 0x8d, 0xa5, 0xbb, 0x95, 0xb1, 0x33, 0x25, 0xa3, 0x51, 0x90, 0x55, 0x25, 0x97, 0xce, 0xc1, 0x7d, - 0xc6, 0x69, 0xc0, 0x61, 0x82, 0x22, 0x9f, 0x42, 0x06, 0x69, 0x1b, 0x1a, 0xcb, 0x77, 0x2b, 0x60, - 0x63, 0xc4, 0xe0, 0x29, 0x02, 0xfb, 0x76, 0x05, 0x94, 0xeb, 0x01, 0x0d, 0x52, 0xa6, 0x3f, 0x02, - 0x40, 0xb4, 0xaa, 0x1f, 0x43, 0x4c, 0x52, 0xf5, 0xd6, 0xde, 0x9a, 0x40, 0x8e, 0x05, 0xa0, 0x5f, - 0x69, 0xc0, 0x48, 0x20, 0x86, 0x0c, 0x31, 0xff, 0xb7, 0x16, 0x55, 0xef, 0xf5, 0x7e, 0x61, 0x9d, - 0x96, 0xd2, 0x39, 0xaf, 0xae, 0xed, 0x3d, 0x2c, 0x42, 0xaf, 0xa7, 0x3b, 0x56, 0x3f, 0x19, 0xce, - 0x09, 0x8a, 0x21, 0xe6, 0xe8, 0x1c, 0x41, 0x5a, 0xbc, 0xd6, 0xce, 0x6c, 0xe7, 0x8f, 0x33, 0x86, - 0x9d, 0x5f, 0x1b, 0x21, 0x7a, 0x08, 0xb6, 0x29, 0x8c, 0xf3, 0x48, 0xf4, 0xba, 0x9f, 0x41, 0x8a, - 0x48, 0xec, 0x23, 0xac, 0x84, 0x30, 0x69, 0xff, 0x52, 0xf5, 0xe9, 0xa0, 0x6b, 0x3d, 0x56, 0x15, - 0xe7, 0xe7, 0xda, 0x5e, 0x65, 0x14, 0xac, 0xcb, 0x58, 0x0d, 0x4b, 0xd1, 0x4c, 0xcc, 0xf4, 0xf8, - 0xde, 0x79, 0x10, 0x71, 0x42, 0x8d, 0x95, 0x7f, 0x9b, 0xe9, 0xd9, 0x7a, 0xb6, 0xb7, 0x3e, 0x82, - 0x4e, 0x24, 0xa2, 0xa7, 0xc0, 0x88, 0x27, 0x46, 0x5a, 0xb8, 0x3a, 0x9c, 0x69, 0xa3, 0xbc, 0xab, - 0xed, 0xfd, 0xff, 0xe2, 0xb9, 0xf3, 0x87, 0x0d, 0xe5, 0xcc, 0xd9, 0x03, 0xd5, 0x65, 0xa1, 0xd5, - 0xab, 0xc4, 0x73, 0xd6, 0xc4, 0x95, 0x06, 0xf6, 0x44, 0x1d, 0x84, 0x13, 0x9f, 0xc2, 0xcb, 0x80, - 0xc6, 0xcc, 0x9f, 0xe2, 0x67, 0x3c, 0xa0, 0x5c, 0x99, 0x65, 0xac, 0x4a, 0x5f, 0x0f, 0x07, 0x5d, - 0xcb, 0x55, 0xff, 0xe7, 0x6f, 0x6f, 0xda, 0xde, 0x93, 0x22, 0xd5, 0x53, 0x99, 0x93, 0x6a, 0x1b, - 0x22, 0x4f, 0x7a, 0x7e, 0xb4, 0xfc, 0xf5, 0x9b, 0x55, 0xaa, 0xbe, 0xb9, 0xee, 0x99, 0xda, 0x4d, - 0xcf, 0xd4, 0x7e, 0xf4, 0x4c, 0xed, 0x4b, 0xdf, 0x2c, 0xdd, 0xf4, 0xcd, 0xd2, 0xf7, 0xbe, 0x59, - 0x3a, 0x73, 0x26, 0x0c, 0x6f, 0x48, 0x13, 0xf6, 0xdf, 0x06, 0x21, 0x73, 0x8b, 0x95, 0xde, 0x3e, - 0x78, 0xe9, 0x7e, 0x50, 0x8b, 0x5d, 0x9a, 0x1f, 0x96, 0xe5, 0x9e, 0x3e, 0xfc, 0x15, 0x00, 0x00, - 0xff, 0xff, 0x11, 0x21, 0x60, 0x4d, 0xf4, 0x05, 0x00, 0x00, + 0xba, 0xa0, 0xb6, 0x4a, 0x25, 0x16, 0x5d, 0xa1, 0xa8, 0xb4, 0x44, 0x02, 0x29, 0x38, 0xbb, 0x6e, + 0x2c, 0xff, 0x4c, 0x9d, 0x51, 0xe3, 0x19, 0x6b, 0x66, 0x9c, 0x12, 0x21, 0xf1, 0x02, 0x65, 0xc1, + 0x92, 0x25, 0x8f, 0xd3, 0x65, 0x97, 0xa8, 0x8b, 0x08, 0x25, 0x6f, 0x90, 0x0d, 0x5b, 0x34, 0x33, + 0xce, 0x2f, 0x44, 0x22, 0xa2, 0xab, 0x78, 0xce, 0xbd, 0x73, 0xcf, 0xc9, 0x99, 0x7b, 0x2f, 0x30, + 0x19, 0xa7, 0x28, 0x86, 0x6e, 0x8a, 0x30, 0x77, 0xdb, 0x07, 0x21, 0xe4, 0xc1, 0x81, 0x3c, 0x38, + 0x19, 0x25, 0x9c, 0xe8, 0x9b, 0x2a, 0xee, 0x48, 0xa8, 0x88, 0x6f, 0x3f, 0x48, 0x48, 0x42, 0x64, + 0xdc, 0x15, 0x5f, 0x2a, 0xd5, 0xfe, 0x04, 0xca, 0xef, 0x10, 0xe6, 0x90, 0xea, 0x1c, 0x6c, 0xc0, + 0x8c, 0x44, 0x4d, 0x3f, 0xa3, 0xa4, 0x8d, 0x18, 0x22, 0x98, 0x19, 0xda, 0xae, 0xb6, 0xb7, 0x56, + 0xad, 0x5d, 0x77, 0xad, 0xd2, 0x6d, 0xd7, 0x7a, 0x96, 0x20, 0xde, 0xcc, 0x43, 0x27, 0x22, 0xa9, + 0x1b, 0x11, 0x96, 0x12, 0x56, 0xfc, 0xec, 0xb3, 0xf8, 0xc2, 0xe5, 0x9d, 0x0c, 0x32, 0xe7, 0x18, + 0x46, 0x83, 0xae, 0x55, 0xe9, 0x04, 0x69, 0xeb, 0xc8, 0x9e, 0xad, 0x67, 0x7b, 0xeb, 0x12, 0xaa, + 0x8f, 0x91, 0x9f, 0x4b, 0xa0, 0x72, 0x8c, 0x84, 0xde, 0x30, 0xe7, 0x88, 0xe0, 0x3a, 0x25, 0x19, + 0xa1, 0xe2, 0x8b, 0xe9, 0x67, 0x60, 0x95, 0xf1, 0xe0, 0x02, 0xe1, 0xa4, 0x10, 0xf2, 0x6a, 0x61, + 0x21, 0xf7, 0x94, 0x90, 0xa2, 0x8c, 0xed, 0x0d, 0x0b, 0xea, 0x1f, 0xc1, 0x56, 0x44, 0xd2, 0x34, + 0xc7, 0x88, 0x77, 0xfc, 0x8c, 0x90, 0x96, 0x9f, 0x50, 0x72, 0xc9, 0x9b, 0xc6, 0x7f, 0x92, 0xe9, + 0x74, 0x61, 0xa6, 0x2d, 0xc5, 0x34, 0x5d, 0xd4, 0xf6, 0x36, 0x47, 0x40, 0x9d, 0x90, 0xd6, 0xa9, + 0xe4, 0xd0, 0x3f, 0x6b, 0xc0, 0x9c, 0x61, 0x67, 0x30, 0xca, 0xa9, 0x38, 0x85, 0x79, 0x9c, 0x40, + 0x6e, 0x2c, 0xdd, 0xad, 0x8c, 0x9d, 0x29, 0x19, 0x8d, 0x82, 0xac, 0x2a, 0xb9, 0x74, 0x0e, 0xee, + 0x33, 0x4e, 0x03, 0x0e, 0x13, 0x14, 0xf9, 0x14, 0x32, 0x48, 0xdb, 0xd0, 0x58, 0xbe, 0x5b, 0x01, + 0x1b, 0x23, 0x06, 0x4f, 0x11, 0xd8, 0xb7, 0x2b, 0xa0, 0x5c, 0x0f, 0x68, 0x90, 0x32, 0xfd, 0x11, + 0x00, 0xa2, 0x55, 0xfd, 0x18, 0x62, 0x92, 0xaa, 0xb7, 0xf6, 0xd6, 0x04, 0x72, 0x2c, 0x00, 0xfd, + 0x4a, 0x03, 0x46, 0x02, 0x31, 0x64, 0x88, 0xf9, 0xbf, 0xb5, 0xa8, 0x7a, 0xaf, 0xf7, 0x0b, 0xeb, + 0xb4, 0x94, 0xce, 0x79, 0x75, 0x6d, 0xef, 0x61, 0x11, 0x7a, 0x3d, 0xdd, 0xb1, 0xfa, 0xc9, 0x70, + 0x4e, 0x50, 0x0c, 0x31, 0x47, 0xe7, 0x08, 0xd2, 0xe2, 0xb5, 0x76, 0x66, 0x3b, 0x7f, 0x9c, 0x31, + 0xec, 0xfc, 0xda, 0x08, 0xd1, 0x43, 0xb0, 0x4d, 0x61, 0x9c, 0x47, 0xa2, 0xd7, 0xfd, 0x0c, 0x52, + 0x44, 0x62, 0x1f, 0x61, 0x25, 0x84, 0x49, 0xfb, 0x97, 0xaa, 0x4f, 0x07, 0x5d, 0xeb, 0xb1, 0xaa, + 0x38, 0x3f, 0xd7, 0xf6, 0x2a, 0xa3, 0x60, 0x5d, 0xc6, 0x6a, 0x58, 0x8a, 0x66, 0x62, 0xa6, 0xc7, + 0xf7, 0xce, 0x83, 0x88, 0x13, 0x6a, 0xac, 0xfc, 0xdb, 0x4c, 0xcf, 0xd6, 0xb3, 0xbd, 0xf5, 0x11, + 0x74, 0x22, 0x11, 0x3d, 0x05, 0x46, 0x3c, 0x31, 0xd2, 0xc2, 0xd5, 0xe1, 0x4c, 0x1b, 0xe5, 0x5d, + 0x6d, 0xef, 0xff, 0x17, 0xcf, 0x9d, 0x3f, 0x6c, 0x28, 0x67, 0xce, 0x1e, 0xa8, 0x2e, 0x0b, 0xad, + 0x5e, 0x25, 0x9e, 0xb3, 0x26, 0xae, 0x34, 0xb0, 0x27, 0xea, 0x20, 0x9c, 0xf8, 0x14, 0x5e, 0x06, + 0x34, 0x66, 0xfe, 0x14, 0x3f, 0xe3, 0x01, 0xe5, 0xca, 0x2c, 0x63, 0x55, 0xfa, 0x7a, 0x38, 0xe8, + 0x5a, 0xae, 0xfa, 0x3f, 0x7f, 0x7b, 0xd3, 0xf6, 0x9e, 0x14, 0xa9, 0x9e, 0xca, 0x9c, 0x54, 0xdb, + 0x10, 0x79, 0xd2, 0xf3, 0xa3, 0xe5, 0xaf, 0xdf, 0xac, 0x52, 0xf5, 0xcd, 0x75, 0xcf, 0xd4, 0x6e, + 0x7a, 0xa6, 0xf6, 0xa3, 0x67, 0x6a, 0x5f, 0xfa, 0x66, 0xe9, 0xa6, 0x6f, 0x96, 0xbe, 0xf7, 0xcd, + 0xd2, 0x99, 0x33, 0x61, 0x78, 0x43, 0x9a, 0xb0, 0xff, 0x36, 0x08, 0x99, 0x5b, 0xac, 0xf4, 0xf6, + 0xc1, 0x4b, 0xf7, 0x83, 0x5a, 0xec, 0xd2, 0xfc, 0xb0, 0x2c, 0xf7, 0xf4, 0xe1, 0xaf, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x51, 0x8c, 0x18, 0x74, 0xf4, 0x05, 0x00, 0x00, } func (m *Minter) Marshal() (dAtA []byte, err error) { diff --git a/x/mint/types/params.go b/x/mint/types/params.go index c9cb4aaefa..729817705f 100644 --- a/x/mint/types/params.go +++ b/x/mint/types/params.go @@ -7,7 +7,7 @@ import ( yaml "gopkg.in/yaml.v2" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" diff --git a/x/mint/types/query.pb.go b/x/mint/types/query.pb.go index 0d4a421d17..ac01910dd1 100644 --- a/x/mint/types/query.pb.go +++ b/x/mint/types/query.pb.go @@ -204,7 +204,7 @@ var fileDescriptor_b5a371e09ad2a41a = []byte{ // 392 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4b, 0xfb, 0x40, 0x1c, 0x4d, 0xca, 0xff, 0xdf, 0xe1, 0x14, 0x2a, 0xd7, 0x22, 0x92, 0xd6, 0x6b, 0xc9, 0x50, 0xbb, - 0xf4, 0xce, 0x54, 0x1c, 0x5c, 0x8b, 0x82, 0x83, 0x43, 0xad, 0x93, 0x2e, 0x92, 0xa4, 0x47, 0x1a, + 0xf4, 0xce, 0x54, 0x10, 0x5c, 0x8b, 0x82, 0x83, 0x43, 0xad, 0x93, 0x2e, 0x92, 0xa4, 0x47, 0x1a, 0x34, 0xb9, 0x34, 0x77, 0x2d, 0x66, 0xf5, 0x13, 0x08, 0xee, 0x2e, 0x7e, 0x99, 0x8e, 0x05, 0x17, 0x71, 0x28, 0xd2, 0xfa, 0x41, 0x24, 0x97, 0x28, 0xa6, 0x46, 0xc4, 0x29, 0xe1, 0xde, 0xfb, 0xbd, 0xf7, 0x7e, 0xef, 0x0e, 0xd4, 0xb9, 0x08, 0xdd, 0x01, 0x25, 0x9e, 0xeb, 0x0b, 0x32, 0x31, 0x2c, @@ -226,7 +226,7 @@ var fileDescriptor_b5a371e09ad2a41a = []byte{ 0xb3, 0x05, 0x52, 0x5f, 0x17, 0x48, 0xbd, 0x5b, 0x22, 0x65, 0xb6, 0x44, 0xca, 0xf3, 0x12, 0x29, 0x17, 0xf8, 0x4b, 0xf1, 0x67, 0xd2, 0xbe, 0x7d, 0x62, 0x5a, 0x9c, 0xa4, 0x0f, 0x6f, 0x62, 0xec, 0x93, 0x9b, 0x44, 0x5c, 0x5e, 0x82, 0x55, 0x94, 0x0f, 0x6f, 0xef, 0x3d, 0x00, 0x00, 0xff, 0xff, - 0xc2, 0x47, 0x69, 0xa6, 0x04, 0x03, 0x00, 0x00, + 0x82, 0xea, 0x11, 0x9f, 0x04, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/client/cli/query.go b/x/ratelimit/client/cli/query.go index 42fd5fc21b..ca7de01fdd 100644 --- a/x/ratelimit/client/cli/query.go +++ b/x/ratelimit/client/cli/query.go @@ -11,7 +11,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/version" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/client/cli/tx.go b/x/ratelimit/client/cli/tx.go index d1efb62e81..a0815ac787 100644 --- a/x/ratelimit/client/cli/tx.go +++ b/x/ratelimit/client/cli/tx.go @@ -19,7 +19,7 @@ import ( govcli "github.com/cosmos/cosmos-sdk/x/gov/client/cli" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // Parse the gov proposal file into a proto message diff --git a/x/ratelimit/client/proposal_handler.go b/x/ratelimit/client/proposal_handler.go index dda362d912..e750b89640 100644 --- a/x/ratelimit/client/proposal_handler.go +++ b/x/ratelimit/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v15/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v16/x/ratelimit/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/ratelimit/genesis.go b/x/ratelimit/genesis.go index 6c948a3522..cd1ccd56c6 100644 --- a/x/ratelimit/genesis.go +++ b/x/ratelimit/genesis.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/ratelimit/genesis_test.go b/x/ratelimit/genesis_test.go index 24832a54dd..cf387e3046 100644 --- a/x/ratelimit/genesis_test.go +++ b/x/ratelimit/genesis_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/ratelimit" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/ratelimit" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func createRateLimits() []types.RateLimit { diff --git a/x/ratelimit/handler.go b/x/ratelimit/handler.go index 6a63db556c..30af443fba 100644 --- a/x/ratelimit/handler.go +++ b/x/ratelimit/handler.go @@ -10,9 +10,9 @@ import ( channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // NewMessageHandler returns ratelimit module messages diff --git a/x/ratelimit/ibc_middleware.go b/x/ratelimit/ibc_middleware.go index 89200436a7..07e28d3a26 100644 --- a/x/ratelimit/ibc_middleware.go +++ b/x/ratelimit/ibc_middleware.go @@ -3,7 +3,7 @@ package ratelimit import ( "fmt" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" diff --git a/x/ratelimit/keeper/gov/gov.go b/x/ratelimit/keeper/gov/gov.go index 8e2e276253..df78947e25 100644 --- a/x/ratelimit/keeper/gov/gov.go +++ b/x/ratelimit/keeper/gov/gov.go @@ -6,8 +6,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channelkeeper "github.com/cosmos/ibc-go/v7/modules/core/04-channel/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // Adds a new rate limit. Fails if the rate limit already exists or the channel value is 0 diff --git a/x/ratelimit/keeper/gov/gov_test.go b/x/ratelimit/keeper/gov/gov_test.go index 1989e329be..39bdcc21d3 100644 --- a/x/ratelimit/keeper/gov/gov_test.go +++ b/x/ratelimit/keeper/gov/gov_test.go @@ -12,10 +12,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/app/apptesting" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper/gov" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper/gov" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/grpc_query.go b/x/ratelimit/keeper/grpc_query.go index 4fe25b0a9d..0dcfe8b5ca 100644 --- a/x/ratelimit/keeper/grpc_query.go +++ b/x/ratelimit/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/ratelimit/keeper/grpc_query_test.go b/x/ratelimit/keeper/grpc_query_test.go index d9066281d7..4b2ed6bb4d 100644 --- a/x/ratelimit/keeper/grpc_query_test.go +++ b/x/ratelimit/keeper/grpc_query_test.go @@ -11,7 +11,7 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // Add three rate limits on different channels diff --git a/x/ratelimit/keeper/hooks.go b/x/ratelimit/keeper/hooks.go index 60d3666a38..4a055d976e 100644 --- a/x/ratelimit/keeper/hooks.go +++ b/x/ratelimit/keeper/hooks.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // Before each hour epoch, check if any of the rate limits have expired, diff --git a/x/ratelimit/keeper/hooks_test.go b/x/ratelimit/keeper/hooks_test.go index 3735a14142..26d1ede9d9 100644 --- a/x/ratelimit/keeper/hooks_test.go +++ b/x/ratelimit/keeper/hooks_test.go @@ -5,8 +5,8 @@ import ( sdkmath "cosmossdk.io/math" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // Store a rate limit with a non-zero flow for each duration diff --git a/x/ratelimit/keeper/keeper.go b/x/ratelimit/keeper/keeper.go index 15252ff978..590eef64ac 100644 --- a/x/ratelimit/keeper/keeper.go +++ b/x/ratelimit/keeper/keeper.go @@ -10,7 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) type ( diff --git a/x/ratelimit/keeper/keeper_test.go b/x/ratelimit/keeper/keeper_test.go index 82f248745a..8593068ba3 100644 --- a/x/ratelimit/keeper/keeper_test.go +++ b/x/ratelimit/keeper/keeper_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) type KeeperTestSuite struct { diff --git a/x/ratelimit/keeper/packet.go b/x/ratelimit/keeper/packet.go index fb33455b7d..c59086fd58 100644 --- a/x/ratelimit/keeper/packet.go +++ b/x/ratelimit/keeper/packet.go @@ -14,9 +14,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v15/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) type RateLimitedPacketInfo struct { diff --git a/x/ratelimit/keeper/packet_test.go b/x/ratelimit/keeper/packet_test.go index c3979632e8..4339798909 100644 --- a/x/ratelimit/keeper/packet_test.go +++ b/x/ratelimit/keeper/packet_test.go @@ -13,8 +13,8 @@ import ( tmbytes "github.com/cometbft/cometbft/libs/bytes" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/keeper/params.go b/x/ratelimit/keeper/params.go index a50072a73b..b4c897629b 100644 --- a/x/ratelimit/keeper/params.go +++ b/x/ratelimit/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // GetParams get all parameters as types.Params diff --git a/x/ratelimit/keeper/rate_limit.go b/x/ratelimit/keeper/rate_limit.go index 2a65ccba20..cc4051e930 100644 --- a/x/ratelimit/keeper/rate_limit.go +++ b/x/ratelimit/keeper/rate_limit.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // Get the rate limit byte key built from the denom and channelId diff --git a/x/ratelimit/keeper/rate_limit_test.go b/x/ratelimit/keeper/rate_limit_test.go index 6c328b4914..8409b33ee2 100644 --- a/x/ratelimit/keeper/rate_limit_test.go +++ b/x/ratelimit/keeper/rate_limit_test.go @@ -7,9 +7,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) const ( diff --git a/x/ratelimit/module.go b/x/ratelimit/module.go index 725ba04900..65c0c7873f 100644 --- a/x/ratelimit/module.go +++ b/x/ratelimit/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/ratelimit/client/cli" - "github.com/Stride-Labs/stride/v15/x/ratelimit/keeper" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/client/cli" + "github.com/Stride-Labs/stride/v16/x/ratelimit/keeper" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) var ( diff --git a/x/ratelimit/types/flow_test.go b/x/ratelimit/types/flow_test.go index 4aa5ace05b..ec488ba958 100644 --- a/x/ratelimit/types/flow_test.go +++ b/x/ratelimit/types/flow_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func TestAddInflow(t *testing.T) { diff --git a/x/ratelimit/types/genesis.pb.go b/x/ratelimit/types/genesis.pb.go index 958b9ca3da..ceaef052e5 100644 --- a/x/ratelimit/types/genesis.pb.go +++ b/x/ratelimit/types/genesis.pb.go @@ -110,29 +110,29 @@ var fileDescriptor_9e224b293959881c = []byte{ // 403 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6b, 0xd4, 0x40, 0x18, 0x86, 0x37, 0xae, 0x16, 0x9c, 0x55, 0xd0, 0x41, 0x31, 0xae, 0x98, 0x86, 0xe0, 0x21, 0x97, - 0x26, 0xd8, 0xe2, 0xc5, 0x9b, 0x41, 0xe8, 0xa5, 0x96, 0x25, 0x39, 0x28, 0x5e, 0xc2, 0x24, 0xf3, - 0x91, 0x0e, 0xdd, 0x4c, 0xe2, 0x7c, 0xb3, 0xd6, 0xfe, 0x09, 0xf1, 0x2f, 0x79, 0xeb, 0xb1, 0x47, - 0x4f, 0x45, 0x76, 0xff, 0x81, 0xbf, 0x40, 0x32, 0x33, 0xd6, 0xc5, 0xd8, 0xdb, 0xc0, 0xfb, 0x3e, - 0xcf, 0x1b, 0xc2, 0x47, 0x02, 0xd4, 0x4a, 0x70, 0x48, 0x15, 0xd3, 0xb0, 0x14, 0xad, 0xd0, 0x69, - 0x03, 0x12, 0x50, 0x60, 0xd2, 0xab, 0x4e, 0x77, 0xf4, 0x81, 0xcd, 0x93, 0xeb, 0x7c, 0xfe, 0xa8, - 0xe9, 0x9a, 0xce, 0x84, 0xe9, 0xf0, 0xb2, 0xbd, 0xf9, 0xf3, 0x91, 0xa7, 0x67, 0x8a, 0xb5, 0x4e, - 0x33, 0x0f, 0x47, 0xf1, 0xf5, 0xcb, 0x36, 0xa2, 0xef, 0x53, 0x72, 0xef, 0xd0, 0x4e, 0x17, 0x9a, - 0x69, 0xa0, 0x87, 0x64, 0xc7, 0x2a, 0x7c, 0x2f, 0xf4, 0xe2, 0xd9, 0xbe, 0x9f, 0xfc, 0xfb, 0x29, - 0xc9, 0xc2, 0xe4, 0xd9, 0xe3, 0x8b, 0xab, 0xdd, 0xc9, 0xaf, 0xab, 0xdd, 0xfb, 0xe7, 0xac, 0x5d, - 0xbe, 0x8e, 0x2c, 0x15, 0xe5, 0x0e, 0xa7, 0x1f, 0xc8, 0x6c, 0x40, 0x4a, 0xc3, 0xa0, 0x7f, 0x2b, - 0x9c, 0xc6, 0xb3, 0xfd, 0x67, 0x63, 0x5b, 0xce, 0x34, 0x1c, 0x0d, 0xaf, 0x6c, 0xee, 0x84, 0xd4, - 0x0a, 0xb7, 0xe8, 0x28, 0x27, 0xea, 0x4f, 0x0d, 0xe9, 0x57, 0x8f, 0x3c, 0x3d, 0x3b, 0x11, 0x83, - 0x00, 0x35, 0xf0, 0x92, 0x71, 0xae, 0x00, 0xb1, 0xec, 0x99, 0x50, 0xe8, 0x4f, 0xcd, 0x50, 0x3c, - 0x1e, 0x7a, 0xff, 0x17, 0x79, 0x63, 0x89, 0x05, 0x13, 0x2a, 0x8b, 0xdd, 0x6a, 0x68, 0x57, 0x6f, - 0x14, 0x47, 0xf9, 0x93, 0xb3, 0xff, 0x1a, 0x90, 0xee, 0x11, 0x5a, 0x2d, 0x59, 0x7d, 0xea, 0x30, - 0x0e, 0xb2, 0x6b, 0xd1, 0xbf, 0x1d, 0x4e, 0xe3, 0xbb, 0xf9, 0xc3, 0xad, 0xe4, 0xad, 0x09, 0xe8, - 0x31, 0x79, 0xd1, 0x83, 0xe4, 0x42, 0x36, 0x25, 0x82, 0xe4, 0x65, 0xcf, 0xea, 0x53, 0xd0, 0x25, - 0xc2, 0xa7, 0x15, 0xc8, 0x1a, 0x4a, 0xb9, 0x6a, 0x2b, 0x50, 0xe8, 0xdf, 0x31, 0x82, 0xd0, 0x75, - 0x0b, 0x90, 0x7c, 0x61, 0x9a, 0x85, 0x2b, 0x1e, 0xdb, 0x5e, 0xf6, 0xee, 0x62, 0x1d, 0x78, 0x97, - 0xeb, 0xc0, 0xfb, 0xb9, 0x0e, 0xbc, 0x6f, 0x9b, 0x60, 0x72, 0xb9, 0x09, 0x26, 0x3f, 0x36, 0xc1, - 0xe4, 0xe3, 0x41, 0x23, 0xf4, 0xc9, 0xaa, 0x4a, 0xea, 0xae, 0x4d, 0x0b, 0xf3, 0x3f, 0xf6, 0x8e, - 0x58, 0x85, 0xa9, 0x3b, 0x8b, 0xcf, 0x2f, 0x5f, 0xa5, 0x5f, 0xb6, 0x8e, 0x43, 0x9f, 0xf7, 0x80, - 0xd5, 0x8e, 0xb9, 0x8c, 0x83, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x23, 0xdd, 0x8c, 0xf0, 0xa4, + 0x26, 0xd8, 0x82, 0x07, 0x6f, 0x06, 0xa1, 0x97, 0x5a, 0x96, 0xe4, 0xa0, 0x78, 0x09, 0x93, 0xcc, + 0x47, 0x3a, 0x74, 0x33, 0x89, 0xf3, 0xcd, 0x5a, 0xfb, 0x27, 0xc4, 0xbf, 0xe4, 0xad, 0xc7, 0x1e, + 0x3d, 0x15, 0xd9, 0xfd, 0x07, 0xfe, 0x02, 0xc9, 0xcc, 0x58, 0x17, 0x63, 0x6f, 0x03, 0xef, 0xfb, + 0x3c, 0x6f, 0x08, 0x1f, 0x09, 0x50, 0x2b, 0xc1, 0x21, 0x55, 0x4c, 0xc3, 0x52, 0xb4, 0x42, 0xa7, + 0x0d, 0x48, 0x40, 0x81, 0x49, 0xaf, 0x3a, 0xdd, 0xd1, 0x07, 0x36, 0x4f, 0xae, 0xf3, 0xf9, 0xa3, + 0xa6, 0x6b, 0x3a, 0x13, 0xa6, 0xc3, 0xcb, 0xf6, 0xe6, 0xcf, 0x47, 0x9e, 0x9e, 0x29, 0xd6, 0x3a, + 0xcd, 0x3c, 0x1c, 0xc5, 0xd7, 0x2f, 0xdb, 0x88, 0xbe, 0x4f, 0xc9, 0xbd, 0x43, 0x3b, 0x5d, 0x68, + 0xa6, 0x81, 0x1e, 0x92, 0x1d, 0xab, 0xf0, 0xbd, 0xd0, 0x8b, 0x67, 0xfb, 0x7e, 0xf2, 0xef, 0xa7, + 0x24, 0x0b, 0x93, 0x67, 0x8f, 0x2f, 0xae, 0x76, 0x27, 0xbf, 0xae, 0x76, 0xef, 0x9f, 0xb3, 0x76, + 0xf9, 0x3a, 0xb2, 0x54, 0x94, 0x3b, 0x9c, 0x7e, 0x20, 0xb3, 0x01, 0x29, 0x0d, 0x83, 0xfe, 0xad, + 0x70, 0x1a, 0xcf, 0xf6, 0x9f, 0x8d, 0x6d, 0x39, 0xd3, 0x70, 0x34, 0xbc, 0xb2, 0xb9, 0x13, 0x52, + 0x2b, 0xdc, 0xa2, 0xa3, 0x9c, 0xa8, 0x3f, 0x35, 0xa4, 0x5f, 0x3d, 0xf2, 0xf4, 0xec, 0x44, 0x0c, + 0x02, 0xd4, 0xc0, 0x4b, 0xc6, 0xb9, 0x02, 0xc4, 0xb2, 0x67, 0x42, 0xa1, 0x3f, 0x35, 0x43, 0xf1, + 0x78, 0xe8, 0xfd, 0x5f, 0xe4, 0x8d, 0x25, 0x16, 0x4c, 0xa8, 0x2c, 0x76, 0xab, 0xa1, 0x5d, 0xbd, + 0x51, 0x1c, 0xe5, 0x4f, 0xce, 0xfe, 0x6b, 0x40, 0xba, 0x47, 0x68, 0xb5, 0x64, 0xf5, 0xa9, 0xc3, + 0x38, 0xc8, 0xae, 0x45, 0xff, 0x76, 0x38, 0x8d, 0xef, 0xe6, 0x0f, 0xb7, 0x92, 0xb7, 0x26, 0xa0, + 0xc7, 0xe4, 0x45, 0x0f, 0x92, 0x0b, 0xd9, 0x94, 0x08, 0x92, 0x97, 0x3d, 0xab, 0x4f, 0x41, 0x97, + 0x08, 0x9f, 0x56, 0x20, 0x6b, 0x28, 0xe5, 0xaa, 0xad, 0x40, 0xa1, 0x7f, 0xc7, 0x08, 0x42, 0xd7, + 0x2d, 0x40, 0xf2, 0x85, 0x69, 0x16, 0xae, 0x78, 0x6c, 0x7b, 0xd9, 0xbb, 0x8b, 0x75, 0xe0, 0x5d, + 0xae, 0x03, 0xef, 0xe7, 0x3a, 0xf0, 0xbe, 0x6d, 0x82, 0xc9, 0xe5, 0x26, 0x98, 0xfc, 0xd8, 0x04, + 0x93, 0x8f, 0x07, 0x8d, 0xd0, 0x27, 0xab, 0x2a, 0xa9, 0xbb, 0x36, 0x2d, 0xcc, 0xff, 0xd8, 0x3b, + 0x62, 0x15, 0xa6, 0xee, 0x2c, 0x3e, 0xbf, 0x7c, 0x95, 0x7e, 0xd9, 0x3a, 0x0e, 0x7d, 0xde, 0x03, + 0x56, 0x3b, 0xe6, 0x32, 0x0e, 0x7e, 0x07, 0x00, 0x00, 0xff, 0xff, 0xe0, 0xf0, 0x18, 0x43, 0xa4, 0x02, 0x00, 0x00, } diff --git a/x/ratelimit/types/gov.pb.go b/x/ratelimit/types/gov.pb.go index 5b9edb41dd..7fb9e2debd 100644 --- a/x/ratelimit/types/gov.pb.go +++ b/x/ratelimit/types/gov.pb.go @@ -203,32 +203,32 @@ var fileDescriptor_3ad7ef7cb59a1c37 = []byte{ // 438 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x54, 0x41, 0x6b, 0x13, 0x41, 0x14, 0xde, 0x31, 0x4d, 0x6b, 0x47, 0x0d, 0x65, 0x08, 0x76, 0x28, 0xb8, 0x1b, 0x02, 0x4a, 0x0f, - 0x76, 0x17, 0x29, 0x5e, 0x7a, 0xb3, 0x27, 0x0b, 0x15, 0xca, 0x14, 0x41, 0xbc, 0x84, 0xc9, 0xce, - 0x23, 0x19, 0xdc, 0x99, 0x59, 0x66, 0x26, 0x4b, 0xfa, 0x0f, 0x3c, 0x7a, 0x14, 0x41, 0xc8, 0x5f, - 0xd1, 0x53, 0x8f, 0x3d, 0x8a, 0x87, 0x20, 0xc9, 0xc5, 0xb3, 0xbf, 0x40, 0x76, 0x36, 0x95, 0x80, - 0x27, 0xf1, 0xa0, 0x82, 0xa7, 0xdd, 0xf7, 0x7d, 0xdf, 0x7b, 0xc3, 0xc7, 0x7b, 0x7c, 0x78, 0xcf, - 0x79, 0x2b, 0x05, 0x64, 0x96, 0x7b, 0x28, 0xa4, 0x92, 0x3e, 0x1b, 0x99, 0x2a, 0x2d, 0xad, 0xf1, - 0x86, 0xec, 0x34, 0x5c, 0xfa, 0x83, 0xdb, 0xeb, 0x8e, 0xcc, 0xc8, 0x04, 0x32, 0xab, 0xff, 0x1a, - 0x5d, 0xff, 0x5d, 0x0b, 0x77, 0x9f, 0x08, 0xc1, 0xb8, 0x87, 0xd3, 0x5a, 0x76, 0x66, 0x4d, 0x69, - 0x1c, 0x2f, 0x48, 0x17, 0xb7, 0xbd, 0xf4, 0x05, 0x50, 0xd4, 0x43, 0xfb, 0xdb, 0xac, 0x29, 0x48, - 0x0f, 0xdf, 0x12, 0xe0, 0x72, 0x2b, 0x4b, 0x2f, 0x8d, 0xa6, 0x37, 0x02, 0xb7, 0x0e, 0xd5, 0x7d, - 0x02, 0xb4, 0x51, 0xb4, 0xd5, 0xf4, 0x85, 0x82, 0xdc, 0xc3, 0x38, 0x1f, 0x73, 0xad, 0xa1, 0x18, - 0x48, 0x41, 0x37, 0x02, 0xb5, 0xbd, 0x42, 0x4e, 0x04, 0x79, 0x81, 0x77, 0x14, 0x9f, 0x0e, 0x4a, - 0xb0, 0x39, 0x68, 0x3f, 0x70, 0xa0, 0x05, 0x6d, 0xd7, 0xa2, 0xe3, 0xf4, 0x72, 0x9e, 0x44, 0x9f, - 0xe7, 0xc9, 0x83, 0x91, 0xf4, 0xe3, 0xc9, 0x30, 0xcd, 0x8d, 0xca, 0x72, 0xe3, 0x94, 0x71, 0xab, - 0xcf, 0x81, 0x13, 0xaf, 0x32, 0x7f, 0x51, 0x82, 0x4b, 0x4f, 0xb4, 0x67, 0x1d, 0xc5, 0xa7, 0x67, - 0xcd, 0x98, 0x73, 0xd0, 0x3f, 0x4d, 0xb6, 0x90, 0x57, 0x74, 0xf3, 0x77, 0x27, 0x33, 0xc8, 0x2b, - 0x72, 0x1f, 0x77, 0xc4, 0xc4, 0xf2, 0xda, 0xf4, 0x60, 0x6c, 0x26, 0xd6, 0xd1, 0xad, 0x1e, 0xda, - 0xdf, 0x60, 0x77, 0xae, 0xd1, 0xa7, 0x35, 0x48, 0x1e, 0xe2, 0x2d, 0x01, 0xa5, 0x71, 0xd2, 0xd3, - 0x9b, 0xe1, 0x5d, 0xf2, 0x6d, 0x9e, 0x74, 0x2e, 0xb8, 0x2a, 0x8e, 0xfa, 0x2b, 0xa2, 0xcf, 0xae, - 0x25, 0x47, 0xb7, 0x5f, 0xcf, 0x92, 0xe8, 0xed, 0x2c, 0x89, 0xbe, 0xce, 0x12, 0xd4, 0x7f, 0xdf, - 0xc2, 0xbb, 0xcf, 0x4b, 0xc1, 0x3d, 0xfc, 0xdf, 0xcf, 0xdf, 0xb8, 0x9f, 0x8f, 0x08, 0xef, 0x32, - 0x50, 0xa6, 0xfa, 0xd3, 0xfb, 0x59, 0x33, 0xd1, 0xfe, 0x55, 0x13, 0x1f, 0x10, 0xbe, 0xcb, 0xc0, - 0x81, 0xff, 0x77, 0x3d, 0x1c, 0x3f, 0xbb, 0x5c, 0xc4, 0xe8, 0x6a, 0x11, 0xa3, 0x2f, 0x8b, 0x18, - 0xbd, 0x59, 0xc6, 0xd1, 0xd5, 0x32, 0x8e, 0x3e, 0x2d, 0xe3, 0xe8, 0xe5, 0xe1, 0xda, 0xf5, 0x9c, - 0x87, 0x48, 0x3c, 0x38, 0xe5, 0x43, 0x97, 0xad, 0xa2, 0xb3, 0x7a, 0xf4, 0x38, 0x9b, 0xae, 0x05, - 0x68, 0x38, 0xa7, 0xe1, 0x66, 0xc8, 0xc6, 0xc3, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0x93, 0xa0, - 0xab, 0x42, 0x61, 0x05, 0x00, 0x00, + 0x76, 0x17, 0x29, 0x78, 0xe8, 0xcd, 0x9e, 0x2c, 0x54, 0x28, 0x53, 0x04, 0xf1, 0x12, 0x26, 0x3b, + 0x8f, 0x64, 0x70, 0x67, 0x66, 0x99, 0x99, 0x2c, 0xe9, 0x3f, 0xf0, 0xe8, 0x51, 0x04, 0x21, 0x7f, + 0x45, 0x4f, 0x3d, 0xf6, 0x28, 0x1e, 0x82, 0x24, 0x17, 0xcf, 0xfe, 0x02, 0xd9, 0xd9, 0x54, 0x02, + 0x9e, 0xc4, 0x83, 0x0a, 0x9e, 0x76, 0xdf, 0xf7, 0x7d, 0xef, 0x0d, 0x1f, 0xef, 0xf1, 0xe1, 0x3d, + 0xe7, 0xad, 0x14, 0x90, 0x59, 0xee, 0xa1, 0x90, 0x4a, 0xfa, 0x6c, 0x64, 0xaa, 0xb4, 0xb4, 0xc6, + 0x1b, 0xb2, 0xd3, 0x70, 0xe9, 0x0f, 0x6e, 0xaf, 0x3b, 0x32, 0x23, 0x13, 0xc8, 0xac, 0xfe, 0x6b, + 0x74, 0xfd, 0x77, 0x2d, 0xdc, 0x7d, 0x22, 0x04, 0xe3, 0x1e, 0x4e, 0x6b, 0xd9, 0x99, 0x35, 0xa5, + 0x71, 0xbc, 0x20, 0x5d, 0xdc, 0xf6, 0xd2, 0x17, 0x40, 0x51, 0x0f, 0xed, 0x6f, 0xb3, 0xa6, 0x20, + 0x3d, 0x7c, 0x4b, 0x80, 0xcb, 0xad, 0x2c, 0xbd, 0x34, 0x9a, 0xde, 0x08, 0xdc, 0x3a, 0x54, 0xf7, + 0x09, 0xd0, 0x46, 0xd1, 0x56, 0xd3, 0x17, 0x0a, 0x72, 0x0f, 0xe3, 0x7c, 0xcc, 0xb5, 0x86, 0x62, + 0x20, 0x05, 0xdd, 0x08, 0xd4, 0xf6, 0x0a, 0x39, 0x11, 0xe4, 0x05, 0xde, 0x51, 0x7c, 0x3a, 0x28, + 0xc1, 0xe6, 0xa0, 0xfd, 0xc0, 0x81, 0x16, 0xb4, 0x5d, 0x8b, 0x8e, 0xd3, 0xcb, 0x79, 0x12, 0x7d, + 0x9e, 0x27, 0x0f, 0x46, 0xd2, 0x8f, 0x27, 0xc3, 0x34, 0x37, 0x2a, 0xcb, 0x8d, 0x53, 0xc6, 0xad, + 0x3e, 0x07, 0x4e, 0xbc, 0xca, 0xfc, 0x45, 0x09, 0x2e, 0x3d, 0xd1, 0x9e, 0x75, 0x14, 0x9f, 0x9e, + 0x35, 0x63, 0xce, 0x41, 0xff, 0x34, 0xd9, 0x42, 0x5e, 0xd1, 0xcd, 0xdf, 0x9d, 0xcc, 0x20, 0xaf, + 0xc8, 0x7d, 0xdc, 0x11, 0x13, 0xcb, 0x6b, 0xd3, 0x83, 0xb1, 0x99, 0x58, 0x47, 0xb7, 0x7a, 0x68, + 0x7f, 0x83, 0xdd, 0xb9, 0x46, 0x9f, 0xd6, 0x20, 0x79, 0x88, 0xb7, 0x04, 0x94, 0xc6, 0x49, 0x4f, + 0x6f, 0x86, 0x77, 0xc9, 0xb7, 0x79, 0xd2, 0xb9, 0xe0, 0xaa, 0x38, 0xea, 0xaf, 0x88, 0x3e, 0xbb, + 0x96, 0x1c, 0xdd, 0x7e, 0x3d, 0x4b, 0xa2, 0xb7, 0xb3, 0x24, 0xfa, 0x3a, 0x4b, 0x50, 0xff, 0x7d, + 0x0b, 0xef, 0x3e, 0x2f, 0x05, 0xf7, 0xf0, 0x7f, 0x3f, 0x7f, 0xe3, 0x7e, 0x3e, 0x22, 0xbc, 0xcb, + 0x40, 0x99, 0xea, 0x4f, 0xef, 0x67, 0xcd, 0x44, 0xfb, 0x57, 0x4d, 0x7c, 0x40, 0xf8, 0x2e, 0x03, + 0x07, 0xfe, 0xdf, 0xf5, 0x70, 0xfc, 0xec, 0x72, 0x11, 0xa3, 0xab, 0x45, 0x8c, 0xbe, 0x2c, 0x62, + 0xf4, 0x66, 0x19, 0x47, 0x57, 0xcb, 0x38, 0xfa, 0xb4, 0x8c, 0xa3, 0x97, 0x87, 0x6b, 0xd7, 0x73, + 0x1e, 0x22, 0xf1, 0xe0, 0x94, 0x0f, 0x5d, 0xb6, 0x8a, 0xce, 0xea, 0xd1, 0xe3, 0x6c, 0xba, 0x16, + 0xa0, 0xe1, 0x9c, 0x86, 0x9b, 0x21, 0x1b, 0x0f, 0xbf, 0x07, 0x00, 0x00, 0xff, 0xff, 0x50, 0x8d, + 0x3f, 0xf1, 0x61, 0x05, 0x00, 0x00, } func (this *AddRateLimitProposal) Equal(that interface{}) bool { diff --git a/x/ratelimit/types/gov_add_rate_limit_test.go b/x/ratelimit/types/gov_add_rate_limit_test.go index b7f0d3148c..4339dfa1e1 100644 --- a/x/ratelimit/types/gov_add_rate_limit_test.go +++ b/x/ratelimit/types/gov_add_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func TestGovAddRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_remove_rate_limit_test.go b/x/ratelimit/types/gov_remove_rate_limit_test.go index d49c8772c6..bb874c6554 100644 --- a/x/ratelimit/types/gov_remove_rate_limit_test.go +++ b/x/ratelimit/types/gov_remove_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func TestGovRemoveRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_reset_rate_limit_test.go b/x/ratelimit/types/gov_reset_rate_limit_test.go index 6f0da74cf1..ba7c1c9f04 100644 --- a/x/ratelimit/types/gov_reset_rate_limit_test.go +++ b/x/ratelimit/types/gov_reset_rate_limit_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func TestGovResetRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/gov_update_rate_limit_test.go b/x/ratelimit/types/gov_update_rate_limit_test.go index c02b8231f5..6ce411f8f4 100644 --- a/x/ratelimit/types/gov_update_rate_limit_test.go +++ b/x/ratelimit/types/gov_update_rate_limit_test.go @@ -6,8 +6,8 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func TestGovUpdateRateLimit(t *testing.T) { diff --git a/x/ratelimit/types/params.pb.go b/x/ratelimit/types/params.pb.go index b6ab472ba7..8515c2e002 100644 --- a/x/ratelimit/types/params.pb.go +++ b/x/ratelimit/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_7af4964ecd08f136 = []byte{ 0x95, 0x38, 0xb8, 0xd8, 0x02, 0xc0, 0x2a, 0x9c, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, - 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x53, 0xfd, 0x0a, + 0x18, 0x6c, 0x80, 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xae, 0x32, 0x43, 0x33, 0xfd, 0x0a, 0x24, 0x1b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x36, 0x1a, 0x03, 0x02, 0x00, 0x00, - 0xff, 0xff, 0xb1, 0x8e, 0x15, 0x58, 0x92, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x72, 0xa3, 0x81, 0xeb, 0x92, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/ratelimit/types/query.pb.go b/x/ratelimit/types/query.pb.go index bafb720aa6..4af4207982 100644 --- a/x/ratelimit/types/query.pb.go +++ b/x/ratelimit/types/query.pb.go @@ -559,51 +559,51 @@ func init() { func init() { proto.RegisterFile("stride/ratelimit/query.proto", fileDescriptor_97a373ef8fcef03b) } var fileDescriptor_97a373ef8fcef03b = []byte{ - // 692 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0x4f, 0x4f, 0x13, 0x4f, - 0x18, 0xc7, 0x3b, 0xfc, 0x7e, 0x20, 0x7d, 0x90, 0xc4, 0x8c, 0x80, 0xb0, 0x60, 0xa9, 0xab, 0xc6, - 0xc6, 0x3f, 0x5d, 0x68, 0xad, 0x1a, 0x91, 0x18, 0xaa, 0x1e, 0x48, 0x30, 0xd1, 0x62, 0x62, 0xe2, - 0xa5, 0x4e, 0xbb, 0x63, 0x3b, 0x71, 0xd9, 0x2d, 0x3b, 0x8b, 0xda, 0x10, 0x2e, 0xbe, 0x02, 0x13, - 0xaf, 0x5e, 0x7d, 0x11, 0x1e, 0x3d, 0x98, 0x70, 0x24, 0x7a, 0xf1, 0x64, 0x0c, 0xf8, 0x42, 0xcc, - 0xce, 0xcc, 0x6e, 0x6d, 0xbb, 0x5b, 0xba, 0x09, 0xb7, 0xe9, 0xcc, 0xf3, 0x7c, 0x9f, 0xcf, 0xf7, - 0xd9, 0x79, 0x26, 0x85, 0x05, 0xee, 0xb9, 0xcc, 0xa4, 0x86, 0x4b, 0x3c, 0x6a, 0xb1, 0x2d, 0xe6, - 0x19, 0xdb, 0x3b, 0xd4, 0x6d, 0xe7, 0x5b, 0xae, 0xe3, 0x39, 0xf8, 0x8c, 0x3c, 0xcd, 0x87, 0xa7, - 0x5a, 0xb6, 0x2f, 0x3e, 0x5c, 0xc9, 0x1c, 0x6d, 0xa1, 0xe1, 0x38, 0x0d, 0x8b, 0x1a, 0xa4, 0xc5, - 0x0c, 0x62, 0xdb, 0x8e, 0x47, 0x3c, 0xe6, 0xd8, 0x5c, 0x9d, 0x4e, 0x35, 0x9c, 0x86, 0x23, 0x96, - 0x86, 0xbf, 0x92, 0xbb, 0xfa, 0x3c, 0xcc, 0x3d, 0xf5, 0xcb, 0xae, 0x59, 0x56, 0x85, 0x78, 0x74, - 0xc3, 0x97, 0xe3, 0x15, 0xba, 0xbd, 0x43, 0xb9, 0xa7, 0xbf, 0x04, 0x2d, 0xea, 0x90, 0xb7, 0x1c, - 0x9b, 0x53, 0x5c, 0x86, 0x09, 0x9f, 0xa0, 0x2a, 0x10, 0xf8, 0x2c, 0xca, 0xfe, 0x97, 0x9b, 0x28, - 0xcc, 0xe7, 0x7b, 0xc1, 0xf3, 0x61, 0x6a, 0xf9, 0xff, 0xfd, 0x5f, 0x8b, 0xa9, 0x0a, 0xb8, 0xa1, - 0x96, 0xbe, 0x01, 0xd3, 0xa2, 0x42, 0x18, 0xa3, 0x4a, 0xe3, 0x29, 0x18, 0x35, 0xa9, 0xed, 0x6c, - 0xcd, 0xa2, 0x2c, 0xca, 0xa5, 0x2b, 0xf2, 0x07, 0x3e, 0x0f, 0x50, 0x6f, 0x12, 0xdb, 0xa6, 0x56, - 0x95, 0x99, 0xb3, 0x23, 0xe2, 0x28, 0xad, 0x76, 0xd6, 0x4d, 0xfd, 0x19, 0xcc, 0xf4, 0xaa, 0x29, - 0xd6, 0xbb, 0x00, 0x1d, 0x56, 0xa1, 0x39, 0x18, 0xb5, 0x92, 0x0e, 0x21, 0xf5, 0x7b, 0xb0, 0xd8, - 0xad, 0xca, 0xcb, 0xed, 0x07, 0x4d, 0xc2, 0xec, 0x75, 0x33, 0xa0, 0x9d, 0x83, 0xf1, 0xba, 0xbf, - 0xe3, 0x53, 0x49, 0xe0, 0x53, 0x75, 0x19, 0xa1, 0xbf, 0x82, 0x6c, 0x7c, 0xf6, 0x09, 0x76, 0xb2, - 0x0c, 0x17, 0xa2, 0xea, 0xc8, 0xce, 0x04, 0x9c, 0xdd, 0xfd, 0x43, 0xbd, 0xfd, 0x6b, 0x82, 0x3e, - 0x48, 0xe3, 0x04, 0x69, 0x75, 0xd5, 0x95, 0x35, 0xcb, 0x2a, 0x5b, 0xa4, 0xfe, 0xda, 0x62, 0xdc, - 0xa3, 0xe6, 0x43, 0xff, 0x23, 0x87, 0xb7, 0x6f, 0x45, 0x39, 0x8a, 0x8e, 0x51, 0x30, 0x33, 0x30, - 0x26, 0xae, 0x86, 0xe4, 0x48, 0x57, 0xd4, 0x2f, 0xfd, 0x32, 0x5c, 0x0c, 0x92, 0x9f, 0x37, 0x99, - 0x8f, 0xe4, 0x27, 0xaf, 0x99, 0xa6, 0x4b, 0x39, 0xa7, 0x61, 0x8d, 0x5d, 0xb8, 0x34, 0x38, 0x4c, - 0x95, 0xd9, 0x84, 0x49, 0x22, 0x37, 0xab, 0x2d, 0xc2, 0xdc, 0xc0, 0x75, 0xae, 0xdf, 0x75, 0xbf, - 0xcc, 0x13, 0xc2, 0x5c, 0xd5, 0x82, 0xd3, 0xa4, 0xb3, 0xc5, 0x0b, 0xdf, 0xc7, 0x61, 0x54, 0x54, - 0xc7, 0x9f, 0x10, 0x4c, 0x76, 0x0d, 0x19, 0xbe, 0xd6, 0xaf, 0x1c, 0x3b, 0xa7, 0xda, 0xf5, 0xe1, - 0x82, 0xa5, 0x17, 0x7d, 0xe9, 0xfd, 0x8f, 0x3f, 0x1f, 0x47, 0xae, 0xe2, 0x9c, 0xb1, 0x29, 0xb2, - 0x6e, 0x6c, 0x90, 0x1a, 0x37, 0xe2, 0x5f, 0x17, 0x8e, 0x3f, 0x23, 0x48, 0x87, 0x42, 0xf8, 0x4a, - 0x4c, 0xb5, 0xde, 0x19, 0xd6, 0x72, 0xc7, 0x07, 0x2a, 0xa4, 0x47, 0x02, 0xe9, 0x3e, 0x5e, 0x1d, - 0x12, 0xc9, 0xd8, 0xed, 0x5c, 0xe3, 0x3d, 0xa3, 0xd6, 0xae, 0xca, 0xe7, 0xe1, 0x0b, 0x82, 0xb3, - 0x11, 0x73, 0x86, 0x97, 0x8f, 0x03, 0xe9, 0x9b, 0x68, 0xad, 0x90, 0x24, 0x45, 0xb9, 0x58, 0x11, - 0x2e, 0x4a, 0xb8, 0x38, 0x6c, 0x63, 0x85, 0x0d, 0xf1, 0x6a, 0xec, 0xe1, 0xaf, 0x08, 0xa6, 0x23, - 0xe7, 0x0e, 0x17, 0x87, 0x43, 0xe9, 0x9a, 0x74, 0xed, 0x66, 0xb2, 0x24, 0xe5, 0x60, 0x55, 0x38, - 0xb8, 0x8d, 0x4b, 0x89, 0x1c, 0x04, 0x1f, 0xc2, 0xef, 0xff, 0x54, 0xd4, 0xb4, 0xe2, 0x42, 0xfc, - 0x05, 0x8d, 0x1b, 0x7f, 0xad, 0x98, 0x28, 0x47, 0x19, 0xb8, 0x23, 0x0c, 0x14, 0xf0, 0xd2, 0x60, - 0x03, 0xb5, 0x8e, 0x80, 0xbc, 0x3a, 0x1c, 0x7f, 0x43, 0x70, 0x2e, 0xe6, 0x15, 0xc0, 0xa5, 0x78, - 0x94, 0x01, 0x8f, 0x8b, 0x76, 0x2b, 0x69, 0x5a, 0xb2, 0x7b, 0xf4, 0xb6, 0xa3, 0x51, 0x25, 0x81, - 0x48, 0xf9, 0xf1, 0xfe, 0x61, 0x06, 0x1d, 0x1c, 0x66, 0xd0, 0xef, 0xc3, 0x0c, 0xfa, 0x70, 0x94, - 0x49, 0x1d, 0x1c, 0x65, 0x52, 0x3f, 0x8f, 0x32, 0xa9, 0x17, 0xc5, 0x06, 0xf3, 0x9a, 0x3b, 0xb5, - 0x7c, 0xdd, 0xd9, 0x8a, 0x12, 0x7e, 0xb3, 0x5c, 0x32, 0xde, 0xfd, 0x23, 0xef, 0xb5, 0x5b, 0x94, - 0xd7, 0xc6, 0xc4, 0xdf, 0x84, 0xe2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xa6, 0x10, 0xa8, - 0xae, 0x08, 0x00, 0x00, + // 690 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x4f, 0x13, 0x41, + 0x14, 0xc7, 0x3b, 0x28, 0x48, 0x1f, 0x92, 0x98, 0x11, 0x10, 0x16, 0x2c, 0x75, 0xd5, 0xd8, 0xf8, + 0xa3, 0x0b, 0xad, 0xa0, 0x11, 0x89, 0xa1, 0xea, 0x81, 0x04, 0x13, 0x2d, 0x26, 0x26, 0x5e, 0xea, + 0xb4, 0x3b, 0xb6, 0x13, 0x97, 0xdd, 0xb2, 0xb3, 0xa8, 0x0d, 0xe1, 0xe2, 0x5f, 0x60, 0xe2, 0xd5, + 0xab, 0x7f, 0x84, 0x47, 0x0f, 0x26, 0x1c, 0x89, 0x5e, 0x3c, 0x19, 0x03, 0xfe, 0x21, 0x66, 0x67, + 0x66, 0xb7, 0xb6, 0xdd, 0x2d, 0xdd, 0x84, 0xdb, 0x74, 0xe6, 0xbd, 0xef, 0xfb, 0x7c, 0xdf, 0xce, + 0x9b, 0x14, 0xe6, 0xb8, 0xe7, 0x32, 0x93, 0x1a, 0x2e, 0xf1, 0xa8, 0xc5, 0xb6, 0x98, 0x67, 0x6c, + 0xef, 0x50, 0xb7, 0x95, 0x6f, 0xba, 0x8e, 0xe7, 0xe0, 0x73, 0xf2, 0x34, 0x1f, 0x9e, 0x6a, 0xd9, + 0x9e, 0xf8, 0x70, 0x25, 0x73, 0xb4, 0xb9, 0xba, 0xe3, 0xd4, 0x2d, 0x6a, 0x90, 0x26, 0x33, 0x88, + 0x6d, 0x3b, 0x1e, 0xf1, 0x98, 0x63, 0x73, 0x75, 0x3a, 0x51, 0x77, 0xea, 0x8e, 0x58, 0x1a, 0xfe, + 0x4a, 0xee, 0xea, 0xb3, 0x30, 0xf3, 0xcc, 0x2f, 0xbb, 0x66, 0x59, 0x65, 0xe2, 0xd1, 0x0d, 0x5f, + 0x8e, 0x97, 0xe9, 0xf6, 0x0e, 0xe5, 0x9e, 0xfe, 0x0a, 0xb4, 0xa8, 0x43, 0xde, 0x74, 0x6c, 0x4e, + 0x71, 0x09, 0xc6, 0x7c, 0x82, 0x8a, 0x40, 0xe0, 0xd3, 0x28, 0x7b, 0x2a, 0x37, 0x56, 0x98, 0xcd, + 0x77, 0x83, 0xe7, 0xc3, 0xd4, 0xd2, 0xe9, 0xfd, 0xdf, 0xf3, 0xa9, 0x32, 0xb8, 0xa1, 0x96, 0xbe, + 0x01, 0x93, 0xa2, 0x42, 0x18, 0xa3, 0x4a, 0xe3, 0x09, 0x18, 0x36, 0xa9, 0xed, 0x6c, 0x4d, 0xa3, + 0x2c, 0xca, 0xa5, 0xcb, 0xf2, 0x07, 0xbe, 0x08, 0x50, 0x6b, 0x10, 0xdb, 0xa6, 0x56, 0x85, 0x99, + 0xd3, 0x43, 0xe2, 0x28, 0xad, 0x76, 0xd6, 0x4d, 0xfd, 0x39, 0x4c, 0x75, 0xab, 0x29, 0xd6, 0x7b, + 0x00, 0x6d, 0x56, 0xa1, 0xd9, 0x1f, 0xb5, 0x9c, 0x0e, 0x21, 0xf5, 0xfb, 0x30, 0xdf, 0xa9, 0xca, + 0x4b, 0xad, 0x87, 0x0d, 0xc2, 0xec, 0x75, 0x33, 0xa0, 0x9d, 0x81, 0xd1, 0x9a, 0xbf, 0xe3, 0x53, + 0x49, 0xe0, 0x33, 0x35, 0x19, 0xa1, 0xbf, 0x86, 0x6c, 0x7c, 0xf6, 0x09, 0x76, 0xb2, 0x04, 0x97, + 0xa2, 0xea, 0xc8, 0xce, 0x04, 0x9c, 0x9d, 0xfd, 0x43, 0xdd, 0xfd, 0x6b, 0x80, 0xde, 0x4f, 0xe3, + 0x04, 0x69, 0x75, 0xd5, 0x95, 0x35, 0xcb, 0x2a, 0x59, 0xa4, 0xf6, 0xc6, 0x62, 0xdc, 0xa3, 0xe6, + 0x23, 0xff, 0x23, 0x87, 0xb7, 0x6f, 0x45, 0x39, 0x8a, 0x8e, 0x51, 0x30, 0x53, 0x30, 0x22, 0xae, + 0x86, 0xe4, 0x48, 0x97, 0xd5, 0x2f, 0xfd, 0x2a, 0x5c, 0x0e, 0x92, 0x5f, 0x34, 0x98, 0x8f, 0xe4, + 0x27, 0xaf, 0x99, 0xa6, 0x4b, 0x39, 0xa7, 0x61, 0x8d, 0x5d, 0xb8, 0xd2, 0x3f, 0x4c, 0x95, 0xd9, + 0x84, 0x71, 0x22, 0x37, 0x2b, 0x4d, 0xc2, 0xdc, 0xc0, 0x75, 0xae, 0xd7, 0x75, 0xaf, 0xcc, 0x53, + 0xc2, 0x5c, 0xd5, 0x82, 0xb3, 0xa4, 0xbd, 0xc5, 0x0b, 0x3f, 0x46, 0x61, 0x58, 0x54, 0xc7, 0x9f, + 0x11, 0x8c, 0x77, 0x0c, 0x19, 0xbe, 0xd1, 0xab, 0x1c, 0x3b, 0xa7, 0xda, 0xcd, 0xc1, 0x82, 0xa5, + 0x17, 0x7d, 0xe1, 0xc3, 0xcf, 0xbf, 0x9f, 0x86, 0xae, 0xe3, 0x9c, 0xb1, 0x29, 0xb2, 0x6e, 0x6d, + 0x90, 0x2a, 0x37, 0xe2, 0x5f, 0x17, 0x8e, 0xbf, 0x20, 0x48, 0x87, 0x42, 0xf8, 0x5a, 0x4c, 0xb5, + 0xee, 0x19, 0xd6, 0x72, 0xc7, 0x07, 0x2a, 0xa4, 0xc7, 0x02, 0xe9, 0x01, 0x5e, 0x1d, 0x10, 0xc9, + 0xd8, 0x6d, 0x5f, 0xe3, 0x3d, 0xa3, 0xda, 0xaa, 0xc8, 0xe7, 0xe1, 0x2b, 0x82, 0xf3, 0x11, 0x73, + 0x86, 0x17, 0x8f, 0x03, 0xe9, 0x99, 0x68, 0xad, 0x90, 0x24, 0x45, 0xb9, 0x58, 0x11, 0x2e, 0x96, + 0x70, 0x71, 0xd0, 0xc6, 0x0a, 0x1b, 0xe2, 0xd5, 0xd8, 0xc3, 0xdf, 0x10, 0x4c, 0x46, 0xce, 0x1d, + 0x2e, 0x0e, 0x86, 0xd2, 0x31, 0xe9, 0xda, 0xed, 0x64, 0x49, 0xca, 0xc1, 0xaa, 0x70, 0x70, 0x07, + 0x2f, 0x25, 0x72, 0x10, 0x7c, 0x08, 0xbf, 0xff, 0x13, 0x51, 0xd3, 0x8a, 0x0b, 0xf1, 0x17, 0x34, + 0x6e, 0xfc, 0xb5, 0x62, 0xa2, 0x1c, 0x65, 0xe0, 0xae, 0x30, 0x50, 0xc0, 0x0b, 0xfd, 0x0d, 0x54, + 0xdb, 0x02, 0xf2, 0xea, 0x70, 0xfc, 0x1d, 0xc1, 0x85, 0x98, 0x57, 0x00, 0x2f, 0xc5, 0xa3, 0xf4, + 0x79, 0x5c, 0xb4, 0xe5, 0xa4, 0x69, 0xc9, 0xee, 0xd1, 0xbb, 0xb6, 0x46, 0x85, 0x04, 0x22, 0xa5, + 0x27, 0xfb, 0x87, 0x19, 0x74, 0x70, 0x98, 0x41, 0x7f, 0x0e, 0x33, 0xe8, 0xe3, 0x51, 0x26, 0x75, + 0x70, 0x94, 0x49, 0xfd, 0x3a, 0xca, 0xa4, 0x5e, 0x16, 0xeb, 0xcc, 0x6b, 0xec, 0x54, 0xf3, 0x35, + 0x67, 0x2b, 0x4a, 0xf8, 0xed, 0xe2, 0xb2, 0xf1, 0xfe, 0x3f, 0x79, 0xaf, 0xd5, 0xa4, 0xbc, 0x3a, + 0x22, 0xfe, 0x26, 0x14, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x69, 0x8b, 0x84, 0x1b, 0xae, 0x08, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/ratelimit/types/quota_test.go b/x/ratelimit/types/quota_test.go index 20f9caf48e..f647a01a03 100644 --- a/x/ratelimit/types/quota_test.go +++ b/x/ratelimit/types/quota_test.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) func TestCheckExceedsQuota(t *testing.T) { diff --git a/x/ratelimit/types/ratelimit.pb.go b/x/ratelimit/types/ratelimit.pb.go index 13c04962e1..b525347585 100644 --- a/x/ratelimit/types/ratelimit.pb.go +++ b/x/ratelimit/types/ratelimit.pb.go @@ -311,12 +311,12 @@ func init() { proto.RegisterFile("stride/ratelimit/ratelimit.proto", fileDescrip var fileDescriptor_a3e00ee2c967d747 = []byte{ // 521 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcd, 0x6e, 0xd3, 0x4c, - 0x14, 0xb5, 0xbf, 0x26, 0xf9, 0xc8, 0x84, 0xb6, 0xd1, 0xa8, 0x0a, 0x51, 0x24, 0xdc, 0x28, 0x12, - 0xa8, 0xaa, 0x14, 0x5b, 0xb4, 0x62, 0x81, 0x58, 0xf5, 0x27, 0x55, 0x2b, 0x02, 0x0a, 0x0e, 0x2a, - 0x88, 0x4d, 0x34, 0xf1, 0x5c, 0xe2, 0x51, 0x63, 0x4f, 0x98, 0x19, 0xbb, 0xe1, 0x0d, 0x58, 0x22, - 0x5e, 0x81, 0x97, 0xe9, 0xb2, 0x4b, 0xc4, 0xa2, 0x42, 0xc9, 0x9a, 0x77, 0x40, 0x33, 0x76, 0x4a, - 0x54, 0xc4, 0x82, 0xb2, 0xf2, 0xdc, 0x73, 0xcf, 0x1c, 0xf9, 0xdc, 0x39, 0x17, 0x35, 0xa5, 0x12, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0x5f, 0x6b, 0x13, 0x4f, + 0x14, 0xdd, 0xfd, 0x35, 0xc9, 0xcf, 0x4c, 0x6c, 0x1b, 0x86, 0x12, 0x43, 0xc0, 0x6d, 0x08, 0x28, + 0xa5, 0x90, 0x5d, 0x6c, 0x41, 0x10, 0x9f, 0xfa, 0x27, 0xa5, 0xc5, 0x28, 0x71, 0x23, 0x55, 0x7c, + 0x09, 0x93, 0x9d, 0x6b, 0x76, 0x68, 0x76, 0x27, 0xce, 0xcc, 0x6e, 0xe3, 0x37, 0xf0, 0x51, 0xfc, + 0x0a, 0x7e, 0x99, 0x3e, 0xf6, 0x51, 0x7c, 0x28, 0x92, 0x3c, 0xfb, 0x1d, 0x64, 0x66, 0x37, 0x35, + 0x54, 0x7c, 0xb0, 0x3e, 0xed, 0xdc, 0x73, 0xcf, 0x1c, 0xf6, 0xdc, 0x39, 0x17, 0x35, 0xa5, 0x12, 0x8c, 0x82, 0x27, 0x88, 0x82, 0x31, 0x8b, 0x98, 0xfa, 0x75, 0x72, 0x27, 0x82, 0x2b, 0x8e, 0xab, 0x19, 0xc3, 0xbd, 0xc6, 0x1b, 0x1b, 0x23, 0x3e, 0xe2, 0xa6, 0xe9, 0xe9, 0x53, 0xc6, 0x6b, 0x3d, 0x45, 0x85, 0x1e, 0x51, 0x21, 0xde, 0x40, 0x45, 0x0a, 0x31, 0x8f, 0xea, 0x76, 0xd3, 0xde, 0x2a, @@ -343,7 +343,7 @@ var fileDescriptor_a3e00ee2c967d747 = []byte{ 0xd8, 0xdf, 0x67, 0x8e, 0xfd, 0x69, 0xee, 0x58, 0x97, 0x73, 0xc7, 0xfa, 0x3a, 0x77, 0xac, 0xb7, 0xbb, 0x4b, 0xd3, 0xee, 0x1b, 0x2b, 0xed, 0x2e, 0x19, 0x4a, 0x2f, 0x5f, 0xd5, 0xf4, 0xd1, 0x63, 0x6f, 0xba, 0xb4, 0xb0, 0x66, 0xfc, 0xc3, 0x92, 0xd9, 0xc2, 0xdd, 0x9f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x6a, 0x15, 0x22, 0xde, 0xd1, 0x03, 0x00, 0x00, + 0xff, 0xa9, 0x38, 0xb6, 0x6d, 0xd1, 0x03, 0x00, 0x00, } func (m *Path) Marshal() (dAtA []byte, err error) { diff --git a/x/records/client/cli/query.go b/x/records/client/cli/query.go index f3a4da8c61..fcf09038ae 100644 --- a/x/records/client/cli/query.go +++ b/x/records/client/cli/query.go @@ -10,7 +10,7 @@ import ( // "github.com/cosmos/cosmos-sdk/client/flags" // sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/records/client/cli/query_deposit_record.go b/x/records/client/cli/query_deposit_record.go index b76b0eda7c..63998e1c6b 100644 --- a/x/records/client/cli/query_deposit_record.go +++ b/x/records/client/cli/query_deposit_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func CmdListDepositRecord() *cobra.Command { diff --git a/x/records/client/cli/query_deposit_record_test.go b/x/records/client/cli/query_deposit_record_test.go index 49b73d161b..1654affdf0 100644 --- a/x/records/client/cli/query_deposit_record_test.go +++ b/x/records/client/cli/query_deposit_record_test.go @@ -11,10 +11,10 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/testutil/network" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records/client/cli" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/testutil/network" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records/client/cli" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func networkWithDepositRecordObjects(t *testing.T, n int) (*network.Network, []types.DepositRecord) { diff --git a/x/records/client/cli/query_epoch_unbonding_record.go b/x/records/client/cli/query_epoch_unbonding_record.go index 1372a2b9bc..cb3ad57736 100644 --- a/x/records/client/cli/query_epoch_unbonding_record.go +++ b/x/records/client/cli/query_epoch_unbonding_record.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func CmdListEpochUnbondingRecord() *cobra.Command { diff --git a/x/records/client/cli/query_lsm_deposits.go b/x/records/client/cli/query_lsm_deposits.go index f4683aac29..1d7e68ca7a 100644 --- a/x/records/client/cli/query_lsm_deposits.go +++ b/x/records/client/cli/query_lsm_deposits.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) const ( diff --git a/x/records/client/cli/query_params.go b/x/records/client/cli/query_params.go index 71886d10c2..cb212331f1 100644 --- a/x/records/client/cli/query_params.go +++ b/x/records/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record.go b/x/records/client/cli/query_user_redemption_record.go index d1d39bca61..b72a489fea 100644 --- a/x/records/client/cli/query_user_redemption_record.go +++ b/x/records/client/cli/query_user_redemption_record.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func CmdListUserRedemptionRecord() *cobra.Command { diff --git a/x/records/client/cli/query_user_redemption_record_test.go b/x/records/client/cli/query_user_redemption_record_test.go index f1d43292ca..a04c6df7fa 100644 --- a/x/records/client/cli/query_user_redemption_record_test.go +++ b/x/records/client/cli/query_user_redemption_record_test.go @@ -14,10 +14,10 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/testutil/network" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records/client/cli" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/testutil/network" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records/client/cli" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func networkWithUserRedemptionRecordObjects(t *testing.T, n int) (*network.Network, []types.UserRedemptionRecord) { diff --git a/x/records/client/cli/tx.go b/x/records/client/cli/tx.go index 902bb80972..83269e4feb 100644 --- a/x/records/client/cli/tx.go +++ b/x/records/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" // "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/records/genesis.go b/x/records/genesis.go index d5cf021867..48bc5edf65 100644 --- a/x/records/genesis.go +++ b/x/records/genesis.go @@ -3,8 +3,8 @@ package records import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/records/genesis_test.go b/x/records/genesis_test.go index 0e50d7b330..f105684efd 100644 --- a/x/records/genesis_test.go +++ b/x/records/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records" - "github.com/Stride-Labs/stride/v15/x/records/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestGenesis(t *testing.T) { diff --git a/x/records/handler.go b/x/records/handler.go index 9baaa5db50..8fdf09af10 100644 --- a/x/records/handler.go +++ b/x/records/handler.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/x/records/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // NewHandler ... diff --git a/x/records/keeper/callback_lsm_transfer.go b/x/records/keeper/callback_lsm_transfer.go index 9639cb1366..94f64dfc73 100644 --- a/x/records/keeper/callback_lsm_transfer.go +++ b/x/records/keeper/callback_lsm_transfer.go @@ -1,9 +1,9 @@ package keeper import ( - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_lsm_transfer_test.go b/x/records/keeper/callback_lsm_transfer_test.go index caf15fbea6..9487382122 100644 --- a/x/records/keeper/callback_lsm_transfer_test.go +++ b/x/records/keeper/callback_lsm_transfer_test.go @@ -9,8 +9,8 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) var ( diff --git a/x/records/keeper/callback_native_transfer.go b/x/records/keeper/callback_native_transfer.go index f94345c486..12aae07c25 100644 --- a/x/records/keeper/callback_native_transfer.go +++ b/x/records/keeper/callback_native_transfer.go @@ -5,8 +5,8 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/records/keeper/callback_native_transfer_test.go b/x/records/keeper/callback_native_transfer_test.go index acd1915831..44a77b3375 100644 --- a/x/records/keeper/callback_native_transfer_test.go +++ b/x/records/keeper/callback_native_transfer_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" ) const chainId = "GAIA" diff --git a/x/records/keeper/callbacks.go b/x/records/keeper/callbacks.go index 6c8da778c5..ed4e57cef7 100644 --- a/x/records/keeper/callbacks.go +++ b/x/records/keeper/callbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) const IBCCallbacksID_NativeTransfer = "transfer" diff --git a/x/records/keeper/deposit_record.go b/x/records/keeper/deposit_record.go index e06ae2aacb..8a070b667c 100644 --- a/x/records/keeper/deposit_record.go +++ b/x/records/keeper/deposit_record.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // GetDepositRecordCount get the total number of depositRecord diff --git a/x/records/keeper/epoch_unbonding_record.go b/x/records/keeper/epoch_unbonding_record.go index 0c9dfbb177..90194f54bc 100644 --- a/x/records/keeper/epoch_unbonding_record.go +++ b/x/records/keeper/epoch_unbonding_record.go @@ -9,9 +9,9 @@ import ( errorsmod "cosmossdk.io/errors" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // SetEpochUnbondingRecord set a specific epochUnbondingRecord in the store diff --git a/x/records/keeper/epoch_unbonding_record_test.go b/x/records/keeper/epoch_unbonding_record_test.go index d135fa5344..d20c732183 100644 --- a/x/records/keeper/epoch_unbonding_record_test.go +++ b/x/records/keeper/epoch_unbonding_record_test.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func createNEpochUnbondingRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) ([]types.EpochUnbondingRecord, map[string]types.HostZoneUnbonding) { diff --git a/x/records/keeper/grpc_query.go b/x/records/keeper/grpc_query.go index ba69d21a2f..4c51da8154 100644 --- a/x/records/keeper/grpc_query.go +++ b/x/records/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/records/keeper/grpc_query_deposit_record.go b/x/records/keeper/grpc_query_deposit_record.go index 85cecea1f9..6067441dc5 100644 --- a/x/records/keeper/grpc_query_deposit_record.go +++ b/x/records/keeper/grpc_query_deposit_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) DepositRecordAll(c context.Context, req *types.QueryAllDepositRecordRequest) (*types.QueryAllDepositRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_deposit_record_test.go b/x/records/keeper/grpc_query_deposit_record_test.go index df711b8d4d..5f245e174e 100644 --- a/x/records/keeper/grpc_query_deposit_record_test.go +++ b/x/records/keeper/grpc_query_deposit_record_test.go @@ -10,13 +10,13 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/x/records/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func createNDepositRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.DepositRecord { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record.go b/x/records/keeper/grpc_query_epoch_unbonding_record.go index afe69475ca..e576396368 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) EpochUnbondingRecordAll(c context.Context, req *types.QueryAllEpochUnbondingRecordRequest) (*types.QueryAllEpochUnbondingRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go index 65371ed106..1985c85de2 100644 --- a/x/records/keeper/grpc_query_epoch_unbonding_record_test.go +++ b/x/records/keeper/grpc_query_epoch_unbonding_record_test.go @@ -10,9 +10,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestEpochUnbondingRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/grpc_query_lsm_deposits.go b/x/records/keeper/grpc_query_lsm_deposits.go index ad1043b2f3..4e1c577790 100644 --- a/x/records/keeper/grpc_query_lsm_deposits.go +++ b/x/records/keeper/grpc_query_lsm_deposits.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) LSMDeposit(c context.Context, req *types.QueryLSMDepositRequest) (*types.QueryLSMDepositResponse, error) { diff --git a/x/records/keeper/grpc_query_lsm_deposits_test.go b/x/records/keeper/grpc_query_lsm_deposits_test.go index 01a0275051..2e56b8abe0 100644 --- a/x/records/keeper/grpc_query_lsm_deposits_test.go +++ b/x/records/keeper/grpc_query_lsm_deposits_test.go @@ -5,7 +5,7 @@ import ( _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (s *KeeperTestSuite) TestLSMDeposit() { diff --git a/x/records/keeper/grpc_query_params.go b/x/records/keeper/grpc_query_params.go index bcda155152..c4013955fe 100644 --- a/x/records/keeper/grpc_query_params.go +++ b/x/records/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/records/keeper/grpc_query_params_test.go b/x/records/keeper/grpc_query_params_test.go index 52318a5873..96f16f5de3 100644 --- a/x/records/keeper/grpc_query_params_test.go +++ b/x/records/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/records/keeper/grpc_query_user_redemption_record.go b/x/records/keeper/grpc_query_user_redemption_record.go index e6ddcf1664..f4f61e01b4 100644 --- a/x/records/keeper/grpc_query_user_redemption_record.go +++ b/x/records/keeper/grpc_query_user_redemption_record.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) UserRedemptionRecordAll(c context.Context, req *types.QueryAllUserRedemptionRecordRequest) (*types.QueryAllUserRedemptionRecordResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_for_user.go b/x/records/keeper/grpc_query_user_redemption_record_for_user.go index 0d55a2b010..7b4cc0b518 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_for_user.go +++ b/x/records/keeper/grpc_query_user_redemption_record_for_user.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) UserRedemptionRecordForUser(c context.Context, req *types.QueryAllUserRedemptionRecordForUserRequest) (*types.QueryAllUserRedemptionRecordForUserResponse, error) { diff --git a/x/records/keeper/grpc_query_user_redemption_record_test.go b/x/records/keeper/grpc_query_user_redemption_record_test.go index 13926f55ff..3b7a80cd52 100644 --- a/x/records/keeper/grpc_query_user_redemption_record_test.go +++ b/x/records/keeper/grpc_query_user_redemption_record_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestUserRedemptionRecordQuerySingle(t *testing.T) { diff --git a/x/records/keeper/ibc.go b/x/records/keeper/ibc.go index 8331df7d0d..f123f11766 100644 --- a/x/records/keeper/ibc.go +++ b/x/records/keeper/ibc.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/x/icacallbacks" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/icacallbacks" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) // OnAcknowledgementPacket unmarshals the acknowledgement object to determine if the ack was successful and diff --git a/x/records/keeper/keeper.go b/x/records/keeper/keeper.go index b20c1a21a1..87f229e032 100644 --- a/x/records/keeper/keeper.go +++ b/x/records/keeper/keeper.go @@ -11,9 +11,9 @@ import ( ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper" ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper" - icacallbackskeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" + icacallbackskeeper "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) type ( diff --git a/x/records/keeper/keeper_test.go b/x/records/keeper/keeper_test.go index 2d45c3ccd5..d93db066e0 100644 --- a/x/records/keeper/keeper_test.go +++ b/x/records/keeper/keeper_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" + "github.com/Stride-Labs/stride/v16/app/apptesting" ) const ( diff --git a/x/records/keeper/lsm_token_deposit.go b/x/records/keeper/lsm_token_deposit.go index 7e435ca34f..adb6fb024e 100644 --- a/x/records/keeper/lsm_token_deposit.go +++ b/x/records/keeper/lsm_token_deposit.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (k Keeper) SetLSMTokenDeposit(ctx sdk.Context, deposit types.LSMTokenDeposit) { diff --git a/x/records/keeper/lsm_token_deposit_test.go b/x/records/keeper/lsm_token_deposit_test.go index 693a14c593..1087c6d165 100644 --- a/x/records/keeper/lsm_token_deposit_test.go +++ b/x/records/keeper/lsm_token_deposit_test.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func (s *KeeperTestSuite) createNLSMTokenDeposit(n int) []types.LSMTokenDeposit { diff --git a/x/records/keeper/params.go b/x/records/keeper/params.go index 5599f410eb..d1dd39c6d0 100644 --- a/x/records/keeper/params.go +++ b/x/records/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // GetParams get all parameters as types.Params diff --git a/x/records/keeper/params_test.go b/x/records/keeper/params_test.go index b8970c7de6..9f216fdc91 100644 --- a/x/records/keeper/params_test.go +++ b/x/records/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + testkeeper "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestGetParams(t *testing.T) { diff --git a/x/records/keeper/transfer.go b/x/records/keeper/transfer.go index 95fc25c092..3d61a55320 100644 --- a/x/records/keeper/transfer.go +++ b/x/records/keeper/transfer.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) var ( diff --git a/x/records/keeper/transfer_test.go b/x/records/keeper/transfer_test.go index d37f8443e6..88d367814b 100644 --- a/x/records/keeper/transfer_test.go +++ b/x/records/keeper/transfer_test.go @@ -9,8 +9,8 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" ) type TransferTestCase struct { diff --git a/x/records/keeper/user_redemption_record.go b/x/records/keeper/user_redemption_record.go index 708fc33070..f3c89c3288 100644 --- a/x/records/keeper/user_redemption_record.go +++ b/x/records/keeper/user_redemption_record.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // SetUserRedemptionRecord set a specific userRedemptionRecord in the store diff --git a/x/records/keeper/user_redemption_record_test.go b/x/records/keeper/user_redemption_record_test.go index b8d21c10bd..f204beb611 100644 --- a/x/records/keeper/user_redemption_record_test.go +++ b/x/records/keeper/user_redemption_record_test.go @@ -9,10 +9,10 @@ import ( sdkmath "cosmossdk.io/math" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/records/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func createNUserRedemptionRecord(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.UserRedemptionRecord { diff --git a/x/records/migrations/v2/convert.go b/x/records/migrations/v2/convert.go index 7337663827..4a765d1a11 100644 --- a/x/records/migrations/v2/convert.go +++ b/x/records/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldrecordstypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v16/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" ) func convertToNewDepositRecord(oldDepositRecord oldrecordstypes.DepositRecord) recordstypes.DepositRecord { diff --git a/x/records/migrations/v2/convert_test.go b/x/records/migrations/v2/convert_test.go index 94c9d085b7..29af7d6bee 100644 --- a/x/records/migrations/v2/convert_test.go +++ b/x/records/migrations/v2/convert_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - oldrecordstypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + oldrecordstypes "github.com/Stride-Labs/stride/v16/x/records/migrations/v2/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestConvertDepositRecord(t *testing.T) { diff --git a/x/records/migrations/v2/migrations.go b/x/records/migrations/v2/migrations.go index 621f05a090..f75148d886 100644 --- a/x/records/migrations/v2/migrations.go +++ b/x/records/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" - oldrecordtypes "github.com/Stride-Labs/stride/v15/x/records/migrations/v2/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + oldrecordtypes "github.com/Stride-Labs/stride/v16/x/records/migrations/v2/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" ) func migrateDepositRecord(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/records/module.go b/x/records/module.go index e286278150..36379d78a9 100644 --- a/x/records/module.go +++ b/x/records/module.go @@ -17,9 +17,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/records/client/cli" - "github.com/Stride-Labs/stride/v15/x/records/keeper" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/client/cli" + "github.com/Stride-Labs/stride/v16/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/types" ) var ( diff --git a/x/records/module_ibc.go b/x/records/module_ibc.go index b3630b702b..f73ebff59e 100644 --- a/x/records/module_ibc.go +++ b/x/records/module_ibc.go @@ -12,7 +12,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v15/x/records/keeper" + "github.com/Stride-Labs/stride/v16/x/records/keeper" ) // IBC MODULE IMPLEMENTATION diff --git a/x/records/module_simulation.go b/x/records/module_simulation.go index 6b81b635c7..16d80a1531 100644 --- a/x/records/module_simulation.go +++ b/x/records/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v15/testutil/sample" - recordssimulation "github.com/Stride-Labs/stride/v15/x/records/simulation" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/testutil/sample" + recordssimulation "github.com/Stride-Labs/stride/v16/x/records/simulation" + "github.com/Stride-Labs/stride/v16/x/records/types" ) // avoid unused import issue diff --git a/x/records/types/callbacks.pb.go b/x/records/types/callbacks.pb.go index 24a5dae337..9d60e3443a 100644 --- a/x/records/types/callbacks.pb.go +++ b/x/records/types/callbacks.pb.go @@ -131,8 +131,8 @@ var fileDescriptor_6f7cdd5c1d8b3a46 = []byte{ 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xc3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0xfd, 0x60, 0xb0, 0x69, 0xba, 0x3e, 0x89, 0x49, 0xc5, 0xfa, 0x50, - 0x5f, 0x96, 0x19, 0x9a, 0xea, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, - 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x8b, 0x36, 0x71, 0xcf, 0x3a, 0x01, 0x00, 0x00, + 0x5f, 0x96, 0x19, 0x9a, 0xe9, 0x57, 0xc0, 0xfd, 0x5a, 0x52, 0x59, 0x90, 0x5a, 0x9c, 0xc4, 0x06, + 0xf6, 0xaa, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xd8, 0x80, 0x9c, 0xfa, 0x3a, 0x01, 0x00, 0x00, } func (m *TransferCallback) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/genesis.pb.go b/x/records/types/genesis.pb.go index 2c2259884d..cf30644cbb 100644 --- a/x/records/types/genesis.pb.go +++ b/x/records/types/genesis.pb.go @@ -131,34 +131,34 @@ func init() { func init() { proto.RegisterFile("stride/records/genesis.proto", fileDescriptor_98cfd0253c8b6797) } var fileDescriptor_98cfd0253c8b6797 = []byte{ - // 418 bytes of a gzipped FileDescriptorProto + // 419 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x8e, 0x93, 0x40, 0x1c, 0xc7, 0xc1, 0xc5, 0xae, 0x3b, 0x6b, 0x4c, 0x64, 0x9b, 0x8a, 0x6d, 0xa5, 0xc4, 0x78, 0xe0, - 0x22, 0xd8, 0xaa, 0x67, 0x93, 0xaa, 0x31, 0xc6, 0x9a, 0x18, 0xb0, 0x97, 0x5e, 0x08, 0x30, 0x13, - 0x3a, 0xb1, 0x30, 0x64, 0x66, 0x30, 0xfa, 0x16, 0x3e, 0x56, 0x8f, 0xbd, 0xe9, 0xc9, 0x98, 0xf6, - 0x45, 0x0c, 0x33, 0xd3, 0xa6, 0x10, 0xf6, 0xc4, 0xf0, 0xfb, 0x7d, 0xff, 0x7c, 0x26, 0x19, 0x30, - 0x66, 0x9c, 0x62, 0x88, 0x7c, 0x8a, 0x52, 0x42, 0x21, 0xf3, 0x33, 0x54, 0x20, 0x86, 0x99, 0x57, - 0x52, 0xc2, 0x89, 0xf9, 0x40, 0x6e, 0x3d, 0xb5, 0x1d, 0x8e, 0x5a, 0xea, 0x32, 0xa6, 0x71, 0xae, - 0xc4, 0xc3, 0x76, 0x94, 0xfa, 0xaa, 0x6d, 0x3f, 0x23, 0x19, 0x11, 0x47, 0xbf, 0x3e, 0xc9, 0xe9, - 0xd3, 0xdf, 0x06, 0xb8, 0xff, 0x41, 0x56, 0x86, 0x3c, 0xe6, 0xc8, 0x7c, 0x05, 0x7a, 0x32, 0xd4, - 0xd2, 0x1d, 0xdd, 0xbd, 0x9e, 0x0d, 0xbc, 0x26, 0x82, 0xf7, 0x45, 0x6c, 0xe7, 0xc6, 0xf6, 0xef, - 0x44, 0x0b, 0x94, 0xd6, 0x7c, 0x04, 0x2e, 0x4b, 0x42, 0x79, 0x84, 0xa1, 0x75, 0xc7, 0xd1, 0xdd, - 0xab, 0xa0, 0x57, 0xff, 0x7e, 0x84, 0x26, 0x06, 0xa3, 0x8a, 0x21, 0x1a, 0x51, 0x04, 0x51, 0x5e, - 0x72, 0x4c, 0x8a, 0x48, 0x06, 0x45, 0x1b, 0xcc, 0xb8, 0x75, 0xe1, 0x5c, 0xb8, 0xd7, 0xb3, 0x67, - 0xed, 0x8e, 0x25, 0x43, 0x34, 0x38, 0x39, 0x02, 0x31, 0x55, 0x8d, 0x56, 0xd5, 0xb1, 0x5b, 0x60, - 0xc6, 0xcd, 0x37, 0x60, 0x7c, 0x4b, 0x55, 0x4a, 0xaa, 0x82, 0x5b, 0x86, 0xa3, 0xbb, 0x46, 0xf0, - 0xb8, 0xcb, 0xff, 0xb6, 0x16, 0xd4, 0xac, 0xa8, 0x24, 0xe9, 0x3a, 0xaa, 0x8a, 0x84, 0x14, 0x10, - 0x17, 0x59, 0x83, 0xf5, 0x6e, 0x37, 0xeb, 0xfb, 0xda, 0xb2, 0x3c, 0x3a, 0x9a, 0xac, 0xa8, 0x63, - 0x27, 0x58, 0x43, 0x70, 0x03, 0x51, 0x49, 0x18, 0xe6, 0x8d, 0x8a, 0x4b, 0x51, 0xf1, 0xa4, 0x5d, - 0xf1, 0x4e, 0x4a, 0x1b, 0xd9, 0x0f, 0xe1, 0xf9, 0x50, 0x84, 0xbe, 0x00, 0xfd, 0x56, 0xa8, 0xbc, - 0xf8, 0x3d, 0x71, 0x71, 0xb3, 0x61, 0x90, 0x37, 0x5e, 0x81, 0xc1, 0x86, 0xe5, 0x11, 0x27, 0xdf, - 0x50, 0x11, 0x1d, 0xbd, 0x82, 0xe4, 0x4a, 0x90, 0x4c, 0xda, 0x24, 0x8b, 0xf0, 0xf3, 0xd7, 0x5a, - 0xac, 0x88, 0x14, 0xcb, 0xcd, 0x86, 0xe5, 0xe7, 0xe3, 0x9a, 0x66, 0xfe, 0x69, 0xbb, 0xb7, 0xf5, - 0xdd, 0xde, 0xd6, 0xff, 0xed, 0x6d, 0xfd, 0xd7, 0xc1, 0xd6, 0x76, 0x07, 0x5b, 0xfb, 0x73, 0xb0, - 0xb5, 0xd5, 0x34, 0xc3, 0x7c, 0x5d, 0x25, 0x5e, 0x4a, 0x72, 0x3f, 0x14, 0xf9, 0xcf, 0x17, 0x71, - 0xc2, 0x7c, 0xf5, 0x7c, 0xbf, 0x4f, 0x5f, 0xfb, 0x3f, 0x4e, 0x8f, 0x98, 0xff, 0x2c, 0x11, 0x4b, - 0x7a, 0xe2, 0xb5, 0xbe, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x4a, 0xbe, 0xcf, 0x1c, 0x2e, 0x03, - 0x00, 0x00, + 0x22, 0xd8, 0x6a, 0xbc, 0x9a, 0x54, 0x8d, 0x31, 0xd6, 0xc4, 0x80, 0xbd, 0xf4, 0x42, 0x80, 0x99, + 0xd0, 0x89, 0x85, 0x21, 0x33, 0x83, 0xd1, 0xb7, 0xf0, 0xb1, 0x7a, 0xec, 0x4d, 0x4f, 0xc6, 0xb4, + 0x2f, 0x62, 0x98, 0x99, 0x36, 0x85, 0xb0, 0x27, 0x86, 0xdf, 0xef, 0xfb, 0xe7, 0x33, 0xc9, 0x80, + 0x31, 0xe3, 0x14, 0x43, 0xe4, 0x53, 0x94, 0x12, 0x0a, 0x99, 0x9f, 0xa1, 0x02, 0x31, 0xcc, 0xbc, + 0x92, 0x12, 0x4e, 0xcc, 0x07, 0x72, 0xeb, 0xa9, 0xed, 0x70, 0xd4, 0x52, 0x97, 0x31, 0x8d, 0x73, + 0x25, 0x1e, 0xb6, 0xa3, 0xd4, 0x57, 0x6d, 0xfb, 0x19, 0xc9, 0x88, 0x38, 0xfa, 0xf5, 0x49, 0x4e, + 0x9f, 0xfe, 0x36, 0xc0, 0xfd, 0x0f, 0xb2, 0x32, 0xe4, 0x31, 0x47, 0xe6, 0x2b, 0xd0, 0x93, 0xa1, + 0x96, 0xee, 0xe8, 0xee, 0xf5, 0x6c, 0xe0, 0x35, 0x11, 0xbc, 0x2f, 0x62, 0x3b, 0x37, 0xb6, 0x7f, + 0x27, 0x5a, 0xa0, 0xb4, 0xe6, 0x23, 0x70, 0x59, 0x12, 0xca, 0x23, 0x0c, 0xad, 0x3b, 0x8e, 0xee, + 0x5e, 0x05, 0xbd, 0xfa, 0xf7, 0x23, 0x34, 0x31, 0x18, 0x55, 0x0c, 0xd1, 0x88, 0x22, 0x88, 0xf2, + 0x92, 0x63, 0x52, 0x44, 0x32, 0x28, 0xda, 0x60, 0xc6, 0xad, 0x0b, 0xe7, 0xc2, 0xbd, 0x9e, 0x3d, + 0x6b, 0x77, 0x2c, 0x19, 0xa2, 0xc1, 0xc9, 0x11, 0x88, 0xa9, 0x6a, 0xb4, 0xaa, 0x8e, 0xdd, 0x02, + 0x33, 0x6e, 0xbe, 0x01, 0xe3, 0x5b, 0xaa, 0x52, 0x52, 0x15, 0xdc, 0x32, 0x1c, 0xdd, 0x35, 0x82, + 0xc7, 0x5d, 0xfe, 0xb7, 0xb5, 0xa0, 0x66, 0x45, 0x25, 0x49, 0xd7, 0x51, 0x55, 0x24, 0xa4, 0x80, + 0xb8, 0xc8, 0x1a, 0xac, 0x77, 0xbb, 0x59, 0xdf, 0xd7, 0x96, 0xe5, 0xd1, 0xd1, 0x64, 0x45, 0x1d, + 0x3b, 0xc1, 0x1a, 0x82, 0x1b, 0x88, 0x4a, 0xc2, 0x30, 0x6f, 0x54, 0x5c, 0x8a, 0x8a, 0x27, 0xed, + 0x8a, 0x77, 0x52, 0xda, 0xc8, 0x7e, 0x08, 0xcf, 0x87, 0x22, 0xf4, 0x05, 0xe8, 0xb7, 0x42, 0xe5, + 0xc5, 0xef, 0x89, 0x8b, 0x9b, 0x0d, 0x83, 0xbc, 0xf1, 0x0a, 0x0c, 0x36, 0x2c, 0x8f, 0x38, 0xf9, + 0x86, 0x8a, 0xe8, 0xe8, 0x15, 0x24, 0x57, 0x82, 0x64, 0xd2, 0x26, 0x59, 0x84, 0x9f, 0xbf, 0xd6, + 0x62, 0x45, 0xa4, 0x58, 0x6e, 0x36, 0x2c, 0x3f, 0x1f, 0xd7, 0x34, 0xf3, 0x4f, 0xdb, 0xbd, 0xad, + 0xef, 0xf6, 0xb6, 0xfe, 0x6f, 0x6f, 0xeb, 0xbf, 0x0e, 0xb6, 0xb6, 0x3b, 0xd8, 0xda, 0x9f, 0x83, + 0xad, 0xad, 0xa6, 0x19, 0xe6, 0xeb, 0x2a, 0xf1, 0x52, 0x92, 0xfb, 0xa1, 0xc8, 0x7f, 0xbe, 0x88, + 0x13, 0xe6, 0xab, 0xe7, 0xfb, 0x7d, 0xfa, 0xda, 0xff, 0x71, 0x7a, 0xc4, 0xfc, 0x67, 0x89, 0x58, + 0xd2, 0x13, 0xaf, 0xf5, 0xe5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x19, 0x08, 0x22, 0x29, 0x2e, + 0x03, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/genesis_test.go b/x/records/types/genesis_test.go index 397f02ccfe..ef57dcd57e 100644 --- a/x/records/types/genesis_test.go +++ b/x/records/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/records/types" + "github.com/Stride-Labs/stride/v16/x/records/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/records/types/params.pb.go b/x/records/types/params.pb.go index d18889b7e8..cb2b10235c 100644 --- a/x/records/types/params.pb.go +++ b/x/records/types/params.pb.go @@ -73,9 +73,9 @@ var fileDescriptor_5d92633ea4bee482 = []byte{ 0xb8, 0xd8, 0x02, 0xc0, 0xf2, 0x4e, 0xde, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x98, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0xd6, - 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x54, 0xbf, 0x02, 0x6e, 0x5b, + 0xae, 0xeb, 0x93, 0x98, 0x54, 0xac, 0x0f, 0xb5, 0xa7, 0xcc, 0xd0, 0x4c, 0xbf, 0x02, 0x6e, 0x5b, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x36, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x0d, 0x8a, 0xb4, 0xb9, 0x8c, 0x00, 0x00, 0x00, + 0x5e, 0x3c, 0x59, 0x8c, 0x8c, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/records/types/query.pb.go b/x/records/types/query.pb.go index de1b21ba7c..42ff17ac00 100644 --- a/x/records/types/query.pb.go +++ b/x/records/types/query.pb.go @@ -1119,81 +1119,81 @@ func init() { proto.RegisterFile("stride/records/query.proto", fileDescriptor_25 var fileDescriptor_25e7cc311be81f7b = []byte{ // 1193 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4f, 0x4f, 0x1b, 0xc7, - 0x1b, 0xc7, 0x59, 0xfe, 0x86, 0x87, 0x84, 0x1f, 0xbf, 0x89, 0x45, 0xa8, 0x43, 0x0c, 0x59, 0xa2, - 0xfc, 0x01, 0xe2, 0xa9, 0x09, 0x51, 0xd4, 0x44, 0x55, 0xe4, 0xd0, 0x12, 0x68, 0x48, 0x94, 0x9a, - 0xe6, 0x82, 0xd4, 0x6e, 0xd6, 0xde, 0xc1, 0xac, 0xb0, 0x77, 0x9c, 0x9d, 0x35, 0xaa, 0xeb, 0xfa, - 0xd2, 0x53, 0x8f, 0x95, 0xf2, 0x0e, 0x5a, 0xf5, 0x1d, 0xf4, 0x05, 0x54, 0x3d, 0x71, 0xe8, 0x21, - 0x51, 0x2f, 0x39, 0x55, 0x15, 0xf4, 0x25, 0xf4, 0x5c, 0x55, 0x9e, 0x99, 0xb5, 0xbd, 0xf6, 0xec, - 0xda, 0x46, 0xee, 0xa1, 0x27, 0xbc, 0x33, 0xcf, 0x3c, 0xcf, 0xe7, 0xfb, 0xcc, 0x33, 0xff, 0x80, - 0x38, 0xf3, 0x5c, 0xdb, 0x22, 0xd8, 0x25, 0x39, 0xea, 0x5a, 0x0c, 0xbf, 0x2a, 0x13, 0xb7, 0x92, - 0x2c, 0xb9, 0xd4, 0xa3, 0x68, 0x5a, 0xf4, 0x25, 0x65, 0x5f, 0x7c, 0xbe, 0xcd, 0x56, 0xfe, 0x15, - 0xd6, 0xf1, 0xcb, 0x6d, 0xbd, 0x25, 0xd3, 0x35, 0x8b, 0x7e, 0x67, 0x2c, 0x4f, 0xf3, 0x94, 0xff, - 0xc4, 0xf5, 0x5f, 0xb2, 0x75, 0x3e, 0x4f, 0x69, 0xbe, 0x40, 0xb0, 0x59, 0xb2, 0xb1, 0xe9, 0x38, - 0xd4, 0x33, 0x3d, 0x9b, 0x3a, 0xfe, 0x98, 0xe5, 0x1c, 0x65, 0x45, 0xca, 0x70, 0xd6, 0x64, 0x44, - 0x70, 0xe1, 0xa3, 0x54, 0x96, 0x78, 0x66, 0x0a, 0x97, 0xcc, 0xbc, 0xed, 0x70, 0x63, 0x61, 0xab, - 0xc7, 0x00, 0x7d, 0x5a, 0xb7, 0x78, 0xce, 0x83, 0x66, 0xc8, 0xab, 0x32, 0x61, 0x9e, 0xfe, 0x04, - 0x2e, 0x06, 0x5a, 0x59, 0x89, 0x3a, 0x8c, 0xa0, 0x75, 0x18, 0x17, 0x70, 0x73, 0xda, 0xa2, 0x76, - 0x73, 0x6a, 0x6d, 0x36, 0x19, 0x14, 0x9a, 0x14, 0xf6, 0x8f, 0x46, 0x8f, 0x7f, 0x5f, 0x18, 0xca, - 0x48, 0x5b, 0x3d, 0x09, 0xf3, 0xdc, 0xd9, 0x63, 0xe2, 0x7d, 0x44, 0x4a, 0x94, 0xd9, 0x5e, 0x86, - 0x9b, 0xcb, 0x60, 0x68, 0x1a, 0x86, 0x6d, 0x8b, 0x7b, 0x1c, 0xcd, 0x0c, 0xdb, 0x96, 0x7e, 0x08, - 0x57, 0x42, 0xec, 0x25, 0xc6, 0x27, 0x30, 0x6d, 0x89, 0x0e, 0x43, 0x04, 0x96, 0x38, 0x57, 0xda, - 0x71, 0x02, 0xc3, 0x25, 0xd5, 0x05, 0xab, 0xb5, 0x51, 0xdf, 0x97, 0x70, 0xe9, 0x42, 0x41, 0x09, - 0xb7, 0x09, 0xd0, 0xcc, 0x99, 0x8c, 0x73, 0x3d, 0x29, 0x12, 0x9c, 0xac, 0x27, 0x38, 0x29, 0x26, - 0x5e, 0x26, 0x38, 0xf9, 0xdc, 0xcc, 0x13, 0x39, 0x36, 0xd3, 0x32, 0x52, 0xff, 0x49, 0x93, 0xaa, - 0x3a, 0x03, 0x45, 0xa8, 0x1a, 0x39, 0x9b, 0x2a, 0xf4, 0x38, 0x40, 0x3d, 0xcc, 0xa9, 0x6f, 0x74, - 0xa5, 0x16, 0x20, 0x01, 0xec, 0x0d, 0x58, 0xe0, 0xd4, 0xc1, 0x98, 0x95, 0x2d, 0xca, 0x3c, 0x3f, - 0x43, 0x8b, 0x70, 0xfe, 0x80, 0x32, 0xcf, 0xf8, 0x8a, 0x3a, 0xc4, 0x90, 0x13, 0x39, 0x99, 0x81, - 0x7a, 0xdb, 0x1e, 0x75, 0xc8, 0xb6, 0xa5, 0x3b, 0xb0, 0x18, 0xee, 0x64, 0xf0, 0xea, 0xf5, 0xbb, - 0xb0, 0xe4, 0x17, 0xd0, 0x0b, 0x46, 0xdc, 0x0c, 0xb1, 0x48, 0xb1, 0x54, 0x97, 0x13, 0x56, 0x77, - 0x93, 0xbc, 0xee, 0xbe, 0xd5, 0xe0, 0x5a, 0xf4, 0x38, 0xc9, 0xfa, 0x12, 0x66, 0xcb, 0x8c, 0xb8, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x98, 0x4f, 0x6f, 0x1b, 0xc5, + 0x1b, 0xc7, 0xb3, 0xf9, 0xdb, 0x3c, 0x69, 0xf3, 0xcb, 0x6f, 0x6a, 0xa5, 0xc1, 0x4d, 0x9d, 0x74, + 0x53, 0xf5, 0x4f, 0x92, 0x7a, 0x70, 0x1a, 0xa8, 0x68, 0x85, 0x2a, 0x37, 0x90, 0x26, 0x34, 0xad, + 0x8a, 0x43, 0x2f, 0x91, 0x60, 0xbb, 0xf6, 0x4e, 0x9c, 0x55, 0xec, 0x1d, 0x77, 0x67, 0x1d, 0x61, + 0x8c, 0x2f, 0x9c, 0x38, 0x22, 0xf5, 0x1d, 0x80, 0x78, 0x07, 0xbc, 0x00, 0xc4, 0x29, 0x07, 0x0e, + 0xad, 0xb8, 0xf4, 0x84, 0x50, 0xc2, 0x4b, 0xe0, 0x8c, 0x90, 0x67, 0x66, 0x6d, 0xaf, 0x3d, 0xbb, + 0xb6, 0x23, 0x73, 0xe0, 0x14, 0xef, 0xcc, 0x33, 0xcf, 0xf3, 0xf9, 0x3e, 0xf3, 0xcc, 0xbf, 0x40, + 0x9c, 0x79, 0xae, 0x6d, 0x11, 0xec, 0x92, 0x1c, 0x75, 0x2d, 0x86, 0x5f, 0x96, 0x89, 0x5b, 0x49, + 0x96, 0x5c, 0xea, 0x51, 0x34, 0x2d, 0xfa, 0x92, 0xb2, 0x2f, 0x3e, 0xdf, 0x66, 0x2b, 0xff, 0x0a, + 0xeb, 0xf8, 0xe5, 0xb6, 0xde, 0x92, 0xe9, 0x9a, 0x45, 0xbf, 0x33, 0x96, 0xa7, 0x79, 0xca, 0x7f, + 0xe2, 0xfa, 0x2f, 0xd9, 0x3a, 0x9f, 0xa7, 0x34, 0x5f, 0x20, 0xd8, 0x2c, 0xd9, 0xd8, 0x74, 0x1c, + 0xea, 0x99, 0x9e, 0x4d, 0x1d, 0x7f, 0xcc, 0x72, 0x8e, 0xb2, 0x22, 0x65, 0x38, 0x6b, 0x32, 0x22, + 0xb8, 0xf0, 0x51, 0x2a, 0x4b, 0x3c, 0x33, 0x85, 0x4b, 0x66, 0xde, 0x76, 0xb8, 0xb1, 0xb0, 0xd5, + 0x63, 0x80, 0x3e, 0xad, 0x5b, 0x3c, 0xe3, 0x41, 0x33, 0xe4, 0x65, 0x99, 0x30, 0x4f, 0x7f, 0x0c, + 0x17, 0x03, 0xad, 0xac, 0x44, 0x1d, 0x46, 0xd0, 0x3a, 0x8c, 0x0b, 0xb8, 0x39, 0x6d, 0x51, 0xbb, + 0x39, 0xb5, 0x36, 0x9b, 0x0c, 0x0a, 0x4d, 0x0a, 0xfb, 0x87, 0xa3, 0xc7, 0xbf, 0x2f, 0x0c, 0x65, + 0xa4, 0xad, 0x9e, 0x84, 0x79, 0xee, 0xec, 0x11, 0xf1, 0x3e, 0x22, 0x25, 0xca, 0x6c, 0x2f, 0xc3, + 0xcd, 0x65, 0x30, 0x34, 0x0d, 0xc3, 0xb6, 0xc5, 0x3d, 0x8e, 0x66, 0x86, 0x6d, 0x4b, 0x3f, 0x84, + 0x2b, 0x21, 0xf6, 0x12, 0xe3, 0x13, 0x98, 0xb6, 0x44, 0x87, 0x21, 0x02, 0x4b, 0x9c, 0x2b, 0xed, + 0x38, 0x81, 0xe1, 0x92, 0xea, 0x82, 0xd5, 0xda, 0xa8, 0xef, 0x4b, 0xb8, 0x74, 0xa1, 0xa0, 0x84, + 0xdb, 0x04, 0x68, 0xe6, 0x4c, 0xc6, 0xb9, 0x9e, 0x14, 0x09, 0x4e, 0xd6, 0x13, 0x9c, 0x14, 0x13, + 0x2f, 0x13, 0x9c, 0x7c, 0x66, 0xe6, 0x89, 0x1c, 0x9b, 0x69, 0x19, 0xa9, 0xff, 0xa4, 0x49, 0x55, + 0x9d, 0x81, 0x22, 0x54, 0x8d, 0x9c, 0x4d, 0x15, 0x7a, 0x14, 0xa0, 0x1e, 0xe6, 0xd4, 0x37, 0xba, + 0x52, 0x0b, 0x90, 0x00, 0xf6, 0x06, 0x2c, 0x70, 0xea, 0x60, 0xcc, 0xca, 0x16, 0x65, 0x9e, 0x9f, + 0xa1, 0x45, 0x38, 0x7f, 0x40, 0x99, 0x67, 0x7c, 0x45, 0x1d, 0x62, 0xc8, 0x89, 0x9c, 0xcc, 0x40, + 0xbd, 0x6d, 0x8f, 0x3a, 0x64, 0xdb, 0xd2, 0x1d, 0x58, 0x0c, 0x77, 0x32, 0x78, 0xf5, 0xfa, 0x7b, + 0xb0, 0xe4, 0x17, 0xd0, 0x73, 0x46, 0xdc, 0x0c, 0xb1, 0x48, 0xb1, 0x54, 0x97, 0x13, 0x56, 0x77, + 0x93, 0xbc, 0xee, 0xbe, 0xd5, 0xe0, 0x5a, 0xf4, 0x38, 0xc9, 0xfa, 0x02, 0x66, 0xcb, 0x8c, 0xb8, 0x86, 0xdb, 0x30, 0x08, 0xd6, 0xe1, 0xb5, 0x76, 0x66, 0x95, 0x37, 0x89, 0x1e, 0x2b, 0x2b, 0xfa, - 0xf4, 0xa2, 0x54, 0x90, 0x2e, 0x14, 0xa2, 0x14, 0x0c, 0xaa, 0x38, 0xdf, 0xfa, 0xca, 0x43, 0xe3, - 0xf5, 0xa0, 0x7c, 0x64, 0x10, 0xca, 0x07, 0x57, 0xb9, 0x6f, 0x35, 0x58, 0x8e, 0xd2, 0xb4, 0x49, - 0x5d, 0xd1, 0x2c, 0x52, 0xf9, 0x1e, 0x9c, 0xcb, 0x1d, 0x98, 0xb6, 0xd3, 0xac, 0xe0, 0x09, 0xfe, + 0xf4, 0xa2, 0x54, 0x90, 0x2e, 0x14, 0xa2, 0x14, 0x0c, 0xaa, 0x38, 0xdf, 0xf8, 0xca, 0x43, 0xe3, + 0xf5, 0xa0, 0x7c, 0x64, 0x10, 0xca, 0x07, 0x57, 0xb9, 0x6f, 0x34, 0x58, 0x8e, 0xd2, 0xb4, 0x49, + 0x5d, 0xd1, 0x2c, 0x52, 0xf9, 0x0e, 0x9c, 0xcb, 0x1d, 0x98, 0xb6, 0xd3, 0xac, 0xe0, 0x09, 0xfe, 0xbd, 0x6d, 0xa1, 0x19, 0x18, 0xb1, 0xcc, 0x0a, 0x67, 0x19, 0xcd, 0xd4, 0x7f, 0xa2, 0x39, 0x98, 0x30, 0x2d, 0xcb, 0x25, 0x8c, 0xcd, 0x8d, 0x08, 0x5b, 0xf9, 0x89, 0x62, 0x30, 0x56, 0xb0, 0x8b, - 0xb6, 0x37, 0x37, 0xca, 0xad, 0xc5, 0x47, 0xdb, 0x3c, 0x8d, 0x9d, 0x79, 0x9e, 0xde, 0x69, 0xb0, - 0xd2, 0x93, 0xa6, 0xff, 0xde, 0x74, 0x6d, 0x35, 0xd7, 0xec, 0xc7, 0x25, 0x9a, 0x3b, 0x78, 0xe1, + 0xb6, 0x37, 0x37, 0xca, 0xad, 0xc5, 0x47, 0xdb, 0x3c, 0x8d, 0x9d, 0x79, 0x9e, 0xde, 0x6a, 0xb0, + 0xd2, 0x93, 0xa6, 0xff, 0xde, 0x74, 0x6d, 0x35, 0xd7, 0xec, 0xc7, 0x25, 0x9a, 0x3b, 0x78, 0xee, 0x64, 0xa9, 0x63, 0xd9, 0x4e, 0x3e, 0x58, 0xf1, 0x57, 0xe1, 0x3c, 0xa9, 0x77, 0x1b, 0x4e, 0xb9, - 0x98, 0x25, 0xae, 0x3c, 0x35, 0xa6, 0x78, 0xdb, 0x33, 0xde, 0x14, 0x58, 0xc6, 0x6a, 0x57, 0xcd, + 0x98, 0x25, 0xae, 0x3c, 0x35, 0xa6, 0x78, 0xdb, 0x53, 0xde, 0x14, 0x58, 0xc6, 0x6a, 0x57, 0xcd, 0xec, 0x08, 0x5f, 0x65, 0xdf, 0xa0, 0xcb, 0x32, 0x56, 0x79, 0xf3, 0xb3, 0x43, 0x14, 0x7d, 0xad, 0xcb, 0x38, 0x4a, 0xd4, 0xbf, 0xb1, 0x8c, 0xcf, 0xac, 0x7c, 0x64, 0x10, 0xca, 0x07, 0x57, 0x17, - 0xdb, 0x30, 0xcb, 0x25, 0xed, 0xec, 0x3e, 0x6d, 0xec, 0xfc, 0x5d, 0x57, 0x6c, 0x0c, 0xc6, 0x2c, + 0xdb, 0x30, 0xcb, 0x25, 0xed, 0xec, 0x3e, 0x69, 0xec, 0xfc, 0x5d, 0x57, 0x6c, 0x0c, 0xc6, 0x2c, 0xe2, 0xd0, 0x22, 0x0f, 0x3c, 0x99, 0x11, 0x1f, 0xfa, 0x1e, 0x5c, 0xea, 0x70, 0x25, 0x13, 0xf2, - 0x10, 0x26, 0xe4, 0x11, 0x22, 0xd3, 0xbf, 0xd0, 0x9e, 0x81, 0x9d, 0xdd, 0xa7, 0x9f, 0xd1, 0x43, + 0x00, 0x26, 0xe4, 0x11, 0x22, 0xd3, 0xbf, 0xd0, 0x9e, 0x81, 0x9d, 0xdd, 0x27, 0x9f, 0xd1, 0x43, 0xe2, 0xc8, 0x91, 0x52, 0xbc, 0x3f, 0x4a, 0xaf, 0x74, 0xf8, 0x66, 0x3d, 0x70, 0xae, 0xc0, 0xff, 0x8f, 0xcc, 0x82, 0x6d, 0x99, 0x1e, 0x75, 0x0d, 0x7f, 0x47, 0x11, 0xcc, 0x33, 0x8d, 0x8e, 0xb4, 0xdc, 0x5a, 0x66, 0x61, 0x9c, 0x79, 0xa6, 0x57, 0xf6, 0xf7, 0x1c, 0xf9, 0xa5, 0x7f, 0x0e, 0x73, 0x9d, 0xa1, 0xa5, 0xae, 0x34, 0x9c, 0x93, 0x84, 0x4c, 0x4e, 0x6d, 0x8f, 0xc2, 0x1a, 0xc3, 0xd6, 0xfe, 0xfa, 0x1f, 0x8c, 0x71, 0xff, 0xe8, 0x6b, 0x18, 0x17, 0xf7, 0x3b, 0xa4, 0xb7, 0x3b, 0xe9, - 0xbc, 0x42, 0xc6, 0x97, 0x22, 0x6d, 0x04, 0x9f, 0x7e, 0xeb, 0x9b, 0xdf, 0xfe, 0x7c, 0x3d, 0xbc, + 0xbc, 0x42, 0xc6, 0x97, 0x22, 0x6d, 0x04, 0x9f, 0x7e, 0xeb, 0x9b, 0xdf, 0xfe, 0x7c, 0x35, 0xbc, 0x84, 0xae, 0xe2, 0x5d, 0x6e, 0xbc, 0x63, 0x66, 0x19, 0x56, 0x5e, 0x87, 0xd1, 0x2f, 0x1a, 0xc4, 0x54, 0xdb, 0x13, 0xba, 0xa3, 0x0c, 0x14, 0x7d, 0xf6, 0xc7, 0xd7, 0xfb, 0x1b, 0x24, 0x71, 0x1f, - 0x72, 0xdc, 0x0f, 0xd0, 0x3d, 0x89, 0x7b, 0x5b, 0xc5, 0xab, 0xde, 0x71, 0x71, 0xd5, 0xb6, 0x6a, + 0x70, 0xdc, 0x0f, 0xd0, 0x5d, 0x89, 0x7b, 0x5b, 0xc5, 0xab, 0xde, 0x71, 0x71, 0xd5, 0xb6, 0x6a, 0xe8, 0x67, 0x0d, 0x2e, 0xa9, 0x22, 0xa4, 0x0b, 0x85, 0x10, 0x1d, 0xd1, 0x37, 0x80, 0x10, 0x1d, - 0x5d, 0x8e, 0x71, 0xfd, 0x3e, 0xd7, 0xb1, 0x8e, 0xd6, 0xfa, 0xd7, 0x81, 0xfe, 0xd6, 0xe0, 0x72, - 0xc4, 0xd9, 0x83, 0xee, 0xf7, 0x43, 0x14, 0x3c, 0x84, 0xe3, 0x0f, 0xce, 0x34, 0x56, 0x8a, 0xda, - 0xe7, 0xa2, 0x5e, 0xa2, 0x2f, 0xfa, 0x17, 0x65, 0xec, 0x53, 0xd7, 0xa8, 0x77, 0xe1, 0xaa, 0xbf, + 0x5d, 0x8e, 0x71, 0xfd, 0x1e, 0xd7, 0xb1, 0x8e, 0xd6, 0xfa, 0xd7, 0x81, 0xfe, 0xd6, 0xe0, 0x72, + 0xc4, 0xd9, 0x83, 0xee, 0xf5, 0x43, 0x14, 0x3c, 0x84, 0xe3, 0xf7, 0xcf, 0x34, 0x56, 0x8a, 0xda, + 0xe7, 0xa2, 0x5e, 0xa0, 0x2f, 0xfa, 0x17, 0x65, 0xec, 0x53, 0xd7, 0xa8, 0x77, 0xe1, 0xaa, 0xbf, 0x54, 0x6b, 0xb8, 0x6a, 0x99, 0x95, 0x1a, 0xae, 0xca, 0x65, 0x59, 0xc3, 0x55, 0x7e, 0x96, 0xd7, 0xd0, 0xaf, 0x1a, 0xc4, 0x54, 0xfb, 0x61, 0x78, 0x21, 0x46, 0xec, 0xfd, 0xe1, 0x85, 0x18, 0xb5, 0x81, 0xeb, 0xdb, 0x5c, 0xeb, 0x06, 0x4a, 0x47, 0x69, 0x55, 0x6f, 0xf1, 0xb8, 0xda, 0x7a, 0x80, 0x8a, 0x92, 0x54, 0xc5, 0x8a, 0x2c, 0xc9, 0xfe, 0x15, 0x75, 0x39, 0x92, 0x7a, 0x2b, 0x49, 0xb5, 0x22, 0xf4, 0xa3, 0x06, 0x17, 0x02, 0xcf, 0x02, 0xb4, 0x1a, 0x96, 0x55, 0xd5, 0x1b, 0x2f, 0x7e, - 0xbb, 0x47, 0x6b, 0x89, 0x7a, 0x8f, 0xa3, 0xa6, 0x10, 0x8e, 0x42, 0x0d, 0x3e, 0x66, 0xc4, 0xea, + 0xbb, 0x47, 0x6b, 0x89, 0x7a, 0x97, 0xa3, 0xa6, 0x10, 0x8e, 0x42, 0x0d, 0x3e, 0x66, 0xc4, 0xea, 0xff, 0x41, 0x83, 0x99, 0x80, 0xcb, 0x7a, 0x8e, 0x57, 0xc3, 0xd2, 0xd5, 0x07, 0x6a, 0xd8, 0x9b, 0x52, 0x5f, 0xe3, 0xa8, 0xab, 0x68, 0xb9, 0x77, 0x54, 0x74, 0xac, 0xc1, 0x45, 0xc5, 0x4b, 0x0d, - 0x61, 0x65, 0xe8, 0xf0, 0x87, 0x61, 0xfc, 0xfd, 0xde, 0x07, 0x48, 0xdc, 0x67, 0x1c, 0x77, 0x0b, + 0x61, 0x65, 0xe8, 0xf0, 0x87, 0x61, 0xfc, 0xdd, 0xde, 0x07, 0x48, 0xdc, 0xa7, 0x1c, 0x77, 0x0b, 0x6d, 0xf6, 0x8e, 0x6b, 0x64, 0x2b, 0x46, 0xe3, 0xf9, 0x89, 0xab, 0xad, 0x2f, 0xd1, 0x1a, 0xfa, 0x5e, 0x03, 0x68, 0x1e, 0x8b, 0xe8, 0xba, 0x12, 0xa8, 0xe3, 0x66, 0x11, 0xbf, 0xd1, 0xd5, 0x4e, - 0xf2, 0x6e, 0x70, 0xde, 0x0f, 0xd1, 0x03, 0x15, 0x2f, 0xf3, 0xcc, 0x43, 0x62, 0x67, 0x73, 0xb8, - 0xc0, 0x8a, 0x86, 0x84, 0x0e, 0xee, 0x2f, 0xf5, 0x5b, 0x49, 0x0d, 0xbd, 0xd6, 0x60, 0xaa, 0xe5, + 0xf2, 0x6e, 0x70, 0xde, 0x0f, 0xd1, 0x7d, 0x15, 0x2f, 0xf3, 0xcc, 0x43, 0x62, 0x67, 0x73, 0xb8, + 0xc0, 0x8a, 0x86, 0x84, 0x0e, 0xee, 0x2f, 0xf5, 0x5b, 0x49, 0x0d, 0xbd, 0xd2, 0x60, 0xaa, 0xe5, 0xec, 0x46, 0xdd, 0xa2, 0x37, 0x4e, 0xd8, 0x9b, 0xdd, 0x0d, 0x25, 0x67, 0x8a, 0x73, 0xae, 0xa0, - 0x5b, 0xbd, 0x72, 0xb2, 0x47, 0x4f, 0x8e, 0x4f, 0x12, 0xda, 0x9b, 0x93, 0x84, 0xf6, 0xc7, 0x49, - 0x42, 0xfb, 0xee, 0x34, 0x31, 0xf4, 0xe6, 0x34, 0x31, 0xf4, 0xee, 0x34, 0x31, 0xb4, 0x97, 0xca, - 0xdb, 0xde, 0x41, 0x39, 0x9b, 0xcc, 0xd1, 0xa2, 0xca, 0xdd, 0x51, 0xea, 0x2e, 0xfe, 0xb2, 0x31, - 0x59, 0x5e, 0xa5, 0x44, 0x58, 0x76, 0x9c, 0xff, 0xaf, 0xe9, 0xce, 0x3f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x84, 0xb7, 0x4c, 0x75, 0x34, 0x13, 0x00, 0x00, + 0x5b, 0xbd, 0x72, 0xb2, 0x87, 0x8f, 0x8f, 0x4f, 0x12, 0xda, 0xeb, 0x93, 0x84, 0xf6, 0xc7, 0x49, + 0x42, 0xfb, 0xee, 0x34, 0x31, 0xf4, 0xfa, 0x34, 0x31, 0xf4, 0xf6, 0x34, 0x31, 0xb4, 0x97, 0xca, + 0xdb, 0xde, 0x41, 0x39, 0x9b, 0xcc, 0xd1, 0xa2, 0xca, 0xdd, 0x51, 0xea, 0x7d, 0xfc, 0x65, 0x63, + 0xb2, 0xbc, 0x4a, 0x89, 0xb0, 0xec, 0x38, 0xff, 0x5f, 0xd3, 0x9d, 0x7f, 0x02, 0x00, 0x00, 0xff, + 0xff, 0xd7, 0x01, 0xa1, 0x40, 0x34, 0x13, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/records/types/records.pb.go b/x/records/types/records.pb.go index e22c5dcf4a..b858236f3f 100644 --- a/x/records/types/records.pb.go +++ b/x/records/types/records.pb.go @@ -586,14 +586,14 @@ func init() { func init() { proto.RegisterFile("stride/records/records.proto", fileDescriptor_295ee594cc85d8ca) } var fileDescriptor_295ee594cc85d8ca = []byte{ - // 999 bytes of a gzipped FileDescriptorProto + // 998 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xc1, 0x8e, 0xda, 0x46, 0x18, 0x5e, 0x83, 0xd7, 0xc0, 0x9f, 0xc0, 0x7a, 0x67, 0x49, 0xe2, 0xa5, 0x0d, 0x21, 0xa8, 0x89, - 0x90, 0xaa, 0x98, 0xee, 0x56, 0xed, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, + 0x90, 0xaa, 0x98, 0xee, 0x56, 0xca, 0xa1, 0xaa, 0xaa, 0x9a, 0xc5, 0xbb, 0x71, 0x42, 0x60, 0x6b, 0xa0, 0xa9, 0xf6, 0x50, 0xcb, 0xd8, 0xa3, 0x65, 0xb4, 0xc1, 0x83, 0x3c, 0x06, 0xb5, 0xbd, 0xf4, 0x15, 0x7a, 0xe8, 0x2b, 0x54, 0x7d, 0x82, 0xbe, 0x43, 0x4e, 0x55, 0x8e, 0x55, 0x0f, 0x51, 0xb5, 0x7b, 0xe8, 0x6b, 0x54, 0x1e, 0x1b, 0x03, 0x26, 0x69, 0xa4, 0x6d, 0x4f, 0x30, 0xdf, 0x37, 0xf3, - 0x8f, 0xe7, 0x9b, 0xef, 0xff, 0x6c, 0x78, 0x9f, 0x05, 0x3e, 0x71, 0x71, 0xd3, 0xc7, 0x0e, 0xf5, + 0x8f, 0xe7, 0x9b, 0xef, 0xff, 0x6c, 0xf8, 0x90, 0x05, 0x3e, 0x71, 0x71, 0xd3, 0xc7, 0x0e, 0xf5, 0x5d, 0xb6, 0xf8, 0x55, 0xa7, 0x3e, 0x0d, 0x28, 0x2a, 0x45, 0xac, 0x1a, 0xa3, 0x95, 0xaa, 0x43, 0xd9, 0x84, 0xb2, 0xe6, 0xc8, 0x66, 0xb8, 0x39, 0x3f, 0x18, 0xe1, 0xc0, 0x3e, 0x68, 0x3a, 0x94, 0x78, 0xd1, 0xfc, 0x4a, 0xf9, 0x9c, 0x9e, 0x53, 0xfe, 0xb7, 0x19, 0xfe, 0x8b, 0xd0, 0xfa, 0xaf, @@ -601,55 +601,55 @@ var fileDescriptor_295ee594cc85d8ca = []byte{ 0x82, 0x0c, 0x71, 0x15, 0xa1, 0x26, 0x34, 0x0a, 0x66, 0x86, 0xb8, 0xe8, 0x36, 0x48, 0x0c, 0x7b, 0x2e, 0xf6, 0x95, 0x0c, 0xc7, 0xe2, 0x11, 0xaa, 0x40, 0xde, 0xc7, 0x0e, 0x26, 0x73, 0xec, 0x2b, 0x59, 0xce, 0x24, 0x63, 0x74, 0x0c, 0x92, 0x3d, 0xa1, 0x33, 0x2f, 0x50, 0xc4, 0x90, 0x69, 0xa9, - 0x2f, 0x5f, 0xdf, 0xdb, 0xfa, 0xf3, 0xf5, 0xbd, 0x87, 0xe7, 0x24, 0x18, 0xcf, 0x46, 0xaa, 0x43, + 0xaf, 0xde, 0xdc, 0xdb, 0xfa, 0xf3, 0xcd, 0xbd, 0x87, 0xe7, 0x24, 0x18, 0xcf, 0x46, 0xaa, 0x43, 0x27, 0xcd, 0xf8, 0xa9, 0xa3, 0x9f, 0x47, 0xcc, 0xbd, 0x68, 0x06, 0xdf, 0x4f, 0x31, 0x53, 0x0d, 0x2f, 0x30, 0xe3, 0xd5, 0xa8, 0x0c, 0xdb, 0x2e, 0xf6, 0xe8, 0x44, 0xd9, 0xe6, 0x1b, 0x44, 0x03, 0x54, 0x83, 0x9b, 0x63, 0xca, 0x02, 0xeb, 0x07, 0xea, 0x61, 0x8b, 0xb8, 0x8a, 0xc4, 0x49, 0x08, 0xb1, 0x33, 0xea, 0x61, 0xc3, 0x45, 0xf7, 0xe1, 0x26, 0x9e, 0x52, 0x67, 0x6c, 0x79, 0xb3, 0xc9, 0x08, 0xfb, 0x4a, 0xae, 0x26, 0x34, 0x44, 0xf3, 0x06, 0xc7, 0xba, 0x1c, 0x42, 0x0d, 0x90, 0x9d, - 0x17, 0x36, 0x99, 0x58, 0x84, 0x59, 0x53, 0xec, 0xb9, 0xc4, 0x3b, 0x57, 0xf2, 0x35, 0xa1, 0x91, + 0x97, 0x36, 0x99, 0x58, 0x84, 0x59, 0x53, 0xec, 0xb9, 0xc4, 0x3b, 0x57, 0xf2, 0x35, 0xa1, 0x91, 0x37, 0x4b, 0x1c, 0x37, 0xd8, 0x69, 0x84, 0xd6, 0xff, 0xce, 0x42, 0xb1, 0x8d, 0xa7, 0x94, 0x91, 0x60, 0x43, 0x22, 0x91, 0x4b, 0xb4, 0x3c, 0x6e, 0xe6, 0xff, 0x39, 0x6e, 0xf6, 0xdf, 0x8e, 0x2b, - 0x6e, 0x1c, 0xf7, 0x73, 0x90, 0x58, 0x60, 0x07, 0x33, 0xc6, 0xa5, 0x28, 0x1d, 0x7e, 0xa0, 0xae, - 0x5b, 0x44, 0x5d, 0x7b, 0x7c, 0xb5, 0xcf, 0xe7, 0x9a, 0xf1, 0x1a, 0xf4, 0x11, 0x94, 0xdd, 0x88, - 0xb7, 0xde, 0x20, 0x1a, 0x8a, 0x39, 0x7d, 0x45, 0xbb, 0x70, 0x3f, 0x3a, 0xf3, 0x1d, 0xcc, 0x15, - 0x7b, 0xf7, 0x7e, 0x7c, 0xae, 0x19, 0xaf, 0xa9, 0x8f, 0x41, 0x8a, 0x9e, 0x00, 0x21, 0x28, 0x0d, + 0x6e, 0x1c, 0xf7, 0x73, 0x90, 0x58, 0x60, 0x07, 0x33, 0xc6, 0xa5, 0x28, 0x1d, 0x7e, 0xa4, 0xae, + 0x5b, 0x44, 0x5d, 0x7b, 0x7c, 0xb5, 0xcf, 0xe7, 0x9a, 0xf1, 0x1a, 0xf4, 0x09, 0x94, 0xdd, 0x88, + 0xb7, 0xde, 0x22, 0x1a, 0x8a, 0x39, 0x7d, 0x45, 0xbb, 0x70, 0x3f, 0x3a, 0xf3, 0x1d, 0xcc, 0x15, + 0x7b, 0xff, 0x7e, 0x7c, 0xae, 0x19, 0xaf, 0xa9, 0x8f, 0x41, 0x8a, 0x9e, 0x00, 0x21, 0x28, 0x0d, 0x4c, 0xad, 0xdb, 0x3f, 0xd6, 0x4d, 0xeb, 0xab, 0xa1, 0x3e, 0xd4, 0xe5, 0x2d, 0xa4, 0x40, 0x39, 0xc1, 0x8c, 0xae, 0x75, 0x6a, 0xf6, 0x4e, 0x4c, 0xbd, 0xdf, 0x97, 0x33, 0xa8, 0x0c, 0x72, 0x5b, 0xef, 0xe8, 0x27, 0xda, 0xc0, 0xe8, 0x75, 0xe3, 0xf9, 0x02, 0xaa, 0xc0, 0xed, 0x15, 0x74, 0x75, 0x45, 0xb6, 0xde, 0x00, 0x29, 0xda, 0x1b, 0x01, 0x48, 0xfd, 0x81, 0x69, 0xb4, 0xc3, 0x1d, 0x10, - 0x94, 0x9e, 0x1b, 0x83, 0xc7, 0x6d, 0x53, 0x7b, 0xae, 0x75, 0x2c, 0xe3, 0x48, 0x93, 0x85, 0x27, - 0x62, 0x7e, 0x5b, 0x96, 0xea, 0xbf, 0x88, 0xb0, 0xfb, 0x38, 0x96, 0x75, 0xe8, 0x8d, 0x28, 0xbf, + 0x94, 0x5e, 0x18, 0x83, 0x27, 0x6d, 0x53, 0x7b, 0xa1, 0x75, 0x2c, 0xe3, 0x48, 0x93, 0x85, 0xa7, + 0x62, 0x7e, 0x5b, 0x96, 0xea, 0xbf, 0x88, 0xb0, 0xfb, 0x24, 0x96, 0x75, 0xe8, 0x8d, 0x28, 0xbf, 0x7f, 0xf4, 0x35, 0xec, 0xb0, 0xc0, 0x0a, 0xe8, 0x05, 0xf6, 0xac, 0xf8, 0x9a, 0x85, 0x6b, 0x5d, 0x73, 0x91, 0x05, 0x83, 0xb0, 0x8a, 0x16, 0xdd, 0xf6, 0xb7, 0xb0, 0xe7, 0xd9, 0x01, 0x99, 0xe3, 0xf5, 0xda, 0xd7, 0xb3, 0xd0, 0x6e, 0x54, 0x6a, 0xb5, 0xfe, 0x75, 0xdd, 0xf4, 0x00, 0x4a, 0xb3, 0xc5, 0xe1, 0xad, 0x80, 0x4c, 0x30, 0xef, 0x3e, 0xd1, 0x2c, 0x26, 0xe8, 0x80, 0x4c, 0x30, 0xfa, - 0x32, 0x65, 0xba, 0x46, 0xda, 0x04, 0x1b, 0x4a, 0xa6, 0x8d, 0xf7, 0x29, 0xdc, 0x99, 0x31, 0xec, - 0x5b, 0x7e, 0x12, 0x41, 0x56, 0xbc, 0x56, 0xc9, 0xd5, 0xb2, 0x8d, 0x82, 0x79, 0x6b, 0xf6, 0x86, - 0x80, 0x62, 0xf5, 0x1f, 0x13, 0x03, 0xed, 0xc1, 0xce, 0xb0, 0xdb, 0xea, 0x75, 0xdb, 0x46, 0xf7, - 0x24, 0x71, 0xd0, 0x3e, 0xdc, 0x5a, 0x82, 0x6b, 0x86, 0x40, 0x77, 0x60, 0x4f, 0xff, 0xc6, 0x18, - 0x58, 0x29, 0xd7, 0x09, 0xe8, 0x2e, 0xec, 0xaf, 0x13, 0xab, 0xeb, 0x44, 0x54, 0x84, 0xc2, 0x51, - 0x47, 0x33, 0x9e, 0x69, 0xad, 0x8e, 0x2e, 0x67, 0xea, 0x3f, 0x0b, 0x50, 0xe6, 0xfd, 0x90, 0x1c, - 0x2d, 0x0e, 0x86, 0x74, 0xee, 0x08, 0x9b, 0xb9, 0xd3, 0x87, 0xf2, 0x52, 0xff, 0x44, 0x51, 0xa6, - 0x64, 0x6b, 0xd9, 0xc6, 0x8d, 0xc3, 0xfb, 0xef, 0x14, 0xd1, 0x44, 0xe3, 0x34, 0xc4, 0x9e, 0x88, - 0xf9, 0x8c, 0x9c, 0xad, 0xff, 0x2e, 0xc2, 0x4e, 0xa7, 0xff, 0x8c, 0x7b, 0x20, 0xee, 0x40, 0x74, - 0x17, 0x60, 0xd1, 0xdc, 0x49, 0xaa, 0x17, 0x62, 0xc4, 0x70, 0xd1, 0x3e, 0xe4, 0x9d, 0xb1, 0x4d, - 0xbc, 0x90, 0x8c, 0xe2, 0x3d, 0xc7, 0xc7, 0x86, 0xfb, 0x16, 0xfb, 0xbc, 0x07, 0x05, 0x32, 0x72, - 0xac, 0x88, 0x89, 0xbc, 0x93, 0x27, 0x23, 0xa7, 0xcd, 0xc9, 0x07, 0x50, 0x62, 0x81, 0x7d, 0x81, - 0x7d, 0xcb, 0x76, 0x5d, 0x1f, 0x33, 0x16, 0xe7, 0x76, 0x31, 0x42, 0xb5, 0x08, 0x44, 0x1f, 0xc2, - 0xee, 0xdc, 0x7e, 0x41, 0x5c, 0x3b, 0xa0, 0xcb, 0x99, 0x51, 0x88, 0xcb, 0x09, 0xb1, 0x98, 0xbc, - 0xcc, 0xd6, 0xdc, 0x7f, 0xca, 0xd6, 0xcf, 0x20, 0xbf, 0xe8, 0x62, 0x9e, 0x5a, 0x37, 0x0e, 0xf7, - 0xd5, 0x68, 0x81, 0x1a, 0xbe, 0x38, 0xd5, 0xf8, 0xc5, 0xa9, 0x1e, 0x51, 0xe2, 0xb5, 0xc4, 0x70, - 0x13, 0x33, 0x17, 0xf7, 0x2b, 0xfa, 0x22, 0xb1, 0x7a, 0x81, 0x5b, 0xfd, 0x61, 0xfa, 0x96, 0x52, - 0xaa, 0xa7, 0x8c, 0x5e, 0xff, 0x4d, 0x58, 0x75, 0x6c, 0x5b, 0x3f, 0xed, 0xf5, 0x8d, 0x81, 0x75, - 0xaa, 0x73, 0x8b, 0x46, 0x89, 0xb4, 0xe1, 0xc8, 0xb7, 0xe7, 0xe0, 0x1e, 0xec, 0x24, 0xcc, 0xb1, - 0x66, 0x74, 0xf4, 0xb6, 0x9c, 0x0d, 0xa7, 0xb7, 0xf5, 0x41, 0xef, 0xa9, 0xde, 0x35, 0xce, 0x56, - 0x03, 0x52, 0x44, 0x55, 0xa8, 0xa4, 0x98, 0xd5, 0x72, 0xdb, 0x61, 0xbb, 0xa4, 0xf8, 0xb8, 0xa8, - 0xd4, 0x7a, 0xfa, 0xf2, 0xb2, 0x2a, 0xbc, 0xba, 0xac, 0x0a, 0x7f, 0x5d, 0x56, 0x85, 0x9f, 0xae, - 0xaa, 0x5b, 0xaf, 0xae, 0xaa, 0x5b, 0x7f, 0x5c, 0x55, 0xb7, 0xce, 0x0e, 0x56, 0xd4, 0xef, 0x73, - 0x2d, 0x1e, 0x75, 0xec, 0x11, 0x6b, 0xc6, 0x1f, 0x2e, 0xf3, 0x83, 0x4f, 0x9a, 0xdf, 0x25, 0x9f, - 0x2f, 0xfc, 0x32, 0x46, 0x12, 0xff, 0xee, 0xf8, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x98, - 0x36, 0xf6, 0x45, 0xdd, 0x08, 0x00, 0x00, + 0x32, 0x65, 0xba, 0x46, 0xda, 0x04, 0x1b, 0x4a, 0xa6, 0x8d, 0xf7, 0x18, 0xee, 0xcc, 0x18, 0xf6, + 0x2d, 0x3f, 0x89, 0x20, 0x2b, 0x5e, 0xab, 0xe4, 0x6a, 0xd9, 0x46, 0xc1, 0xbc, 0x35, 0x7b, 0x4b, + 0x40, 0xb1, 0xfa, 0x8f, 0x89, 0x81, 0xf6, 0x60, 0x67, 0xd8, 0x6d, 0xf5, 0xba, 0x6d, 0xa3, 0x7b, + 0x92, 0x38, 0x68, 0x1f, 0x6e, 0x2d, 0xc1, 0x35, 0x43, 0xa0, 0x3b, 0xb0, 0xa7, 0x7f, 0x63, 0x0c, + 0xac, 0x94, 0xeb, 0x04, 0x74, 0x17, 0xf6, 0xd7, 0x89, 0xd5, 0x75, 0x22, 0x2a, 0x42, 0xe1, 0xa8, + 0xa3, 0x19, 0xcf, 0xb5, 0x56, 0x47, 0x97, 0x33, 0xf5, 0x9f, 0x05, 0x28, 0xf3, 0x7e, 0x48, 0x8e, + 0x16, 0x07, 0x43, 0x3a, 0x77, 0x84, 0xcd, 0xdc, 0xe9, 0x43, 0x79, 0xa9, 0x7f, 0xa2, 0x28, 0x53, + 0xb2, 0xb5, 0x6c, 0xe3, 0xc6, 0xe1, 0xfd, 0xf7, 0x8a, 0x68, 0xa2, 0x71, 0x1a, 0x62, 0x4f, 0xc5, + 0x7c, 0x46, 0xce, 0xd6, 0x7f, 0x17, 0x61, 0xa7, 0xd3, 0x7f, 0xce, 0x3d, 0x10, 0x77, 0x20, 0xba, + 0x0b, 0xb0, 0x68, 0xee, 0x24, 0xd5, 0x0b, 0x31, 0x62, 0xb8, 0x68, 0x1f, 0xf2, 0xce, 0xd8, 0x26, + 0x5e, 0x48, 0x46, 0xf1, 0x9e, 0xe3, 0x63, 0xc3, 0x7d, 0x87, 0x7d, 0x3e, 0x80, 0x02, 0x19, 0x39, + 0x56, 0xc4, 0x44, 0xde, 0xc9, 0x93, 0x91, 0xd3, 0xe6, 0xe4, 0x03, 0x28, 0xb1, 0xc0, 0xbe, 0xc0, + 0xbe, 0x65, 0xbb, 0xae, 0x8f, 0x19, 0x8b, 0x73, 0xbb, 0x18, 0xa1, 0x5a, 0x04, 0xa2, 0x8f, 0x61, + 0x77, 0x6e, 0xbf, 0x24, 0xae, 0x1d, 0xd0, 0xe5, 0xcc, 0x28, 0xc4, 0xe5, 0x84, 0x58, 0x4c, 0x5e, + 0x66, 0x6b, 0xee, 0x3f, 0x65, 0xeb, 0x67, 0x90, 0x5f, 0x74, 0x31, 0x4f, 0xad, 0x1b, 0x87, 0xfb, + 0x6a, 0xb4, 0x40, 0x0d, 0x5f, 0x9c, 0x6a, 0xfc, 0xe2, 0x54, 0x8f, 0x28, 0xf1, 0x5a, 0x62, 0xb8, + 0x89, 0x99, 0x8b, 0xfb, 0x15, 0x7d, 0x91, 0x58, 0xbd, 0xc0, 0xad, 0xfe, 0x30, 0x7d, 0x4b, 0x29, + 0xd5, 0x53, 0x46, 0xaf, 0xff, 0x26, 0xac, 0x3a, 0xb6, 0xad, 0x9f, 0xf6, 0xfa, 0xc6, 0xc0, 0x3a, + 0xd5, 0xb9, 0x45, 0xa3, 0x44, 0xda, 0x70, 0xe4, 0xbb, 0x73, 0x70, 0x0f, 0x76, 0x12, 0xe6, 0x58, + 0x33, 0x3a, 0x7a, 0x5b, 0xce, 0x86, 0xd3, 0xdb, 0xfa, 0xa0, 0xf7, 0x4c, 0xef, 0x1a, 0x67, 0xab, + 0x01, 0x29, 0xa2, 0x2a, 0x54, 0x52, 0xcc, 0x6a, 0xb9, 0xed, 0xb0, 0x5d, 0x52, 0x7c, 0x5c, 0x54, + 0x6a, 0x3d, 0x7b, 0x75, 0x59, 0x15, 0x5e, 0x5f, 0x56, 0x85, 0xbf, 0x2e, 0xab, 0xc2, 0x4f, 0x57, + 0xd5, 0xad, 0xd7, 0x57, 0xd5, 0xad, 0x3f, 0xae, 0xaa, 0x5b, 0x67, 0x07, 0x2b, 0xea, 0xf7, 0xb9, + 0x16, 0x8f, 0x3a, 0xf6, 0x88, 0x35, 0xe3, 0x0f, 0x97, 0xf9, 0xc1, 0xe3, 0xe6, 0x77, 0xc9, 0xe7, + 0x0b, 0xbf, 0x8c, 0x91, 0xc4, 0xbf, 0x3b, 0x3e, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x80, + 0x1b, 0x70, 0xdd, 0x08, 0x00, 0x00, } func (m *UserRedemptionRecord) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/client/cli/query.go b/x/stakeibc/client/cli/query.go index 070d267e12..0d687a6029 100644 --- a/x/stakeibc/client/cli/query.go +++ b/x/stakeibc/client/cli/query.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // GetQueryCmd returns the cli query commands for this module diff --git a/x/stakeibc/client/cli/query_epoch_tracker.go b/x/stakeibc/client/cli/query_epoch_tracker.go index c29a3d3f82..9ffbf60cd6 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker.go +++ b/x/stakeibc/client/cli/query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdListEpochTracker() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_epoch_tracker_test.go b/x/stakeibc/client/cli/query_epoch_tracker_test.go index a080857865..dd60b5b1c4 100644 --- a/x/stakeibc/client/cli/query_epoch_tracker_test.go +++ b/x/stakeibc/client/cli/query_epoch_tracker_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/testutil/network" - "github.com/Stride-Labs/stride/v15/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/testutil/network" + "github.com/Stride-Labs/stride/v16/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/client/cli/query_host_zone.go b/x/stakeibc/client/cli/query_host_zone.go index 254896db6d..31b3c69cac 100644 --- a/x/stakeibc/client/cli/query_host_zone.go +++ b/x/stakeibc/client/cli/query_host_zone.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdListHostZone() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_module_address.go b/x/stakeibc/client/cli/query_module_address.go index 178e181470..35e9d7460c 100644 --- a/x/stakeibc/client/cli/query_module_address.go +++ b/x/stakeibc/client/cli/query_module_address.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/query_next_packet_sequence.go b/x/stakeibc/client/cli/query_next_packet_sequence.go index f83c96c1c0..487a498ffc 100644 --- a/x/stakeibc/client/cli/query_next_packet_sequence.go +++ b/x/stakeibc/client/cli/query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdNextPacketSequence() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_params.go b/x/stakeibc/client/cli/query_params.go index 6e46f36bcb..eb9260b2d2 100644 --- a/x/stakeibc/client/cli/query_params.go +++ b/x/stakeibc/client/cli/query_params.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdQueryParams() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_register_ica.go b/x/stakeibc/client/cli/query_register_ica.go index bb531b586f..cdd153ad5c 100644 --- a/x/stakeibc/client/cli/query_register_ica.go +++ b/x/stakeibc/client/cli/query_register_ica.go @@ -5,7 +5,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdShowInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/query_validator.go b/x/stakeibc/client/cli/query_validator.go index 1bd7aef4a3..c981587b66 100644 --- a/x/stakeibc/client/cli/query_validator.go +++ b/x/stakeibc/client/cli/query_validator.go @@ -7,7 +7,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdShowValidators() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx.go b/x/stakeibc/client/cli/tx.go index ff5edaf35d..d821f06a5a 100644 --- a/x/stakeibc/client/cli/tx.go +++ b/x/stakeibc/client/cli/tx.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var DefaultRelativePacketTimeoutTimestamp = cast.ToUint64((time.Duration(10) * time.Minute).Nanoseconds()) diff --git a/x/stakeibc/client/cli/tx_add_validators.go b/x/stakeibc/client/cli/tx_add_validators.go index b2e7979cdd..f2d4661fbb 100644 --- a/x/stakeibc/client/cli/tx_add_validators.go +++ b/x/stakeibc/client/cli/tx_add_validators.go @@ -9,7 +9,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ValidatorsList struct { diff --git a/x/stakeibc/client/cli/tx_add_validators_proposal.go b/x/stakeibc/client/cli/tx_add_validators_proposal.go index 2e63a99b8e..ada100c1f8 100644 --- a/x/stakeibc/client/cli/tx_add_validators_proposal.go +++ b/x/stakeibc/client/cli/tx_add_validators_proposal.go @@ -18,7 +18,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func parseAddValidatorsProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.AddValidatorsProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_calibrate_delegation.go b/x/stakeibc/client/cli/tx_calibrate_delegation.go index 72d58a0d3a..e81d4e3374 100644 --- a/x/stakeibc/client/cli/tx_calibrate_delegation.go +++ b/x/stakeibc/client/cli/tx_calibrate_delegation.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdCalibrateDelegation() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_change_validator_weight.go b/x/stakeibc/client/cli/tx_change_validator_weight.go index 3d7dc6acf1..8009bcea98 100644 --- a/x/stakeibc/client/cli/tx_change_validator_weight.go +++ b/x/stakeibc/client/cli/tx_change_validator_weight.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go index 1b7b1f352b..5147a4a3ca 100644 --- a/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go +++ b/x/stakeibc/client/cli/tx_claim_undelegated_tokens.go @@ -9,7 +9,7 @@ import ( "github.com/spf13/cast" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_clear_balance.go b/x/stakeibc/client/cli/tx_clear_balance.go index 88576f2c8d..459e8094c0 100644 --- a/x/stakeibc/client/cli/tx_clear_balance.go +++ b/x/stakeibc/client/cli/tx_clear_balance.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_delete_validator.go b/x/stakeibc/client/cli/tx_delete_validator.go index cb75dbcd18..6fd7afc528 100644 --- a/x/stakeibc/client/cli/tx_delete_validator.go +++ b/x/stakeibc/client/cli/tx_delete_validator.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdDeleteValidator() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_liquid_stake.go b/x/stakeibc/client/cli/tx_liquid_stake.go index 8ce3c50d65..02d8b5d500 100644 --- a/x/stakeibc/client/cli/tx_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_liquid_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go index 239f26af9c..09125cf5a1 100644 --- a/x/stakeibc/client/cli/tx_lsm_liquid_stake.go +++ b/x/stakeibc/client/cli/tx_lsm_liquid_stake.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdLSMLiquidStake() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_rebalance_validators.go b/x/stakeibc/client/cli/tx_rebalance_validators.go index ff9306c7bd..6534286d95 100644 --- a/x/stakeibc/client/cli/tx_rebalance_validators.go +++ b/x/stakeibc/client/cli/tx_rebalance_validators.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_redeem_stake.go b/x/stakeibc/client/cli/tx_redeem_stake.go index 6fd8c26b33..11a7ca7130 100644 --- a/x/stakeibc/client/cli/tx_redeem_stake.go +++ b/x/stakeibc/client/cli/tx_redeem_stake.go @@ -12,7 +12,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_register_host_zone.go b/x/stakeibc/client/cli/tx_register_host_zone.go index d0456a894f..9713488530 100644 --- a/x/stakeibc/client/cli/tx_register_host_zone.go +++ b/x/stakeibc/client/cli/tx_register_host_zone.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/client/cli/tx_restore_interchain_account.go b/x/stakeibc/client/cli/tx_restore_interchain_account.go index 33ebc3396c..92b9adb29f 100644 --- a/x/stakeibc/client/cli/tx_restore_interchain_account.go +++ b/x/stakeibc/client/cli/tx_restore_interchain_account.go @@ -10,7 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdRestoreInterchainAccount() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_resume_host_zone.go b/x/stakeibc/client/cli/tx_resume_host_zone.go index 30f60501de..7b826e1051 100644 --- a/x/stakeibc/client/cli/tx_resume_host_zone.go +++ b/x/stakeibc/client/cli/tx_resume_host_zone.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdResumeHostZone() *cobra.Command { diff --git a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go index 733822d7f0..fe6fc210cc 100644 --- a/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go +++ b/x/stakeibc/client/cli/tx_toggle_lsm_proposal.go @@ -16,7 +16,7 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func parseToggleLSMProposalFile(cdc codec.JSONCodec, proposalFile string) (proposal types.ToggleLSMProposal, err error) { diff --git a/x/stakeibc/client/cli/tx_undelegate_host.go b/x/stakeibc/client/cli/tx_undelegate_host.go index eaf516d10b..ca528c131a 100644 --- a/x/stakeibc/client/cli/tx_undelegate_host.go +++ b/x/stakeibc/client/cli/tx_undelegate_host.go @@ -11,7 +11,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_update_delegation.go b/x/stakeibc/client/cli/tx_update_delegation.go index 0c52fdf1d6..62e3336207 100644 --- a/x/stakeibc/client/cli/tx_update_delegation.go +++ b/x/stakeibc/client/cli/tx_update_delegation.go @@ -8,7 +8,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/tx" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ = strconv.Itoa(0) diff --git a/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go b/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go index 227eded745..2113c5ee5b 100644 --- a/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/client/cli/tx_update_inner_redemption_rate_bounds.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cobra" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func CmdUpdateInnerRedemptionRateBounds() *cobra.Command { diff --git a/x/stakeibc/client/proposal_handler.go b/x/stakeibc/client/proposal_handler.go index db056c22ed..a5c6e33af4 100644 --- a/x/stakeibc/client/proposal_handler.go +++ b/x/stakeibc/client/proposal_handler.go @@ -1,7 +1,7 @@ package client import ( - "github.com/Stride-Labs/stride/v15/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v16/x/stakeibc/client/cli" govclient "github.com/cosmos/cosmos-sdk/x/gov/client" ) diff --git a/x/stakeibc/genesis.go b/x/stakeibc/genesis.go index a6c2ddf853..89a02ec9c5 100644 --- a/x/stakeibc/genesis.go +++ b/x/stakeibc/genesis.go @@ -3,8 +3,8 @@ package stakeibc import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/stakeibc/genesis_test.go b/x/stakeibc/genesis_test.go index 27cd6f2ff0..8674e56c19 100644 --- a/x/stakeibc/genesis_test.go +++ b/x/stakeibc/genesis_test.go @@ -5,10 +5,10 @@ import ( "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/stakeibc" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/stakeibc" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestGenesis(t *testing.T) { diff --git a/x/stakeibc/handler.go b/x/stakeibc/handler.go index c06f1a4dea..7663e7aa21 100644 --- a/x/stakeibc/handler.go +++ b/x/stakeibc/handler.go @@ -9,8 +9,8 @@ import ( govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Handles stakeibc transactions diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index 7f3f3c2e01..b12ff93dca 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -11,8 +11,8 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ porttypes.Middleware = &IBCMiddleware{} diff --git a/x/stakeibc/keeper/abci.go b/x/stakeibc/keeper/abci.go index ce6d79824b..75dcc1a553 100644 --- a/x/stakeibc/keeper/abci.go +++ b/x/stakeibc/keeper/abci.go @@ -6,7 +6,7 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/stakeibc/keeper/consumer.go b/x/stakeibc/keeper/consumer.go index 56b4e43f7a..1720f52034 100644 --- a/x/stakeibc/keeper/consumer.go +++ b/x/stakeibc/keeper/consumer.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Register new stTokens to the consumer reward denom whitelist diff --git a/x/stakeibc/keeper/consumer_test.go b/x/stakeibc/keeper/consumer_test.go index 7b7c5012a2..c7450a530b 100644 --- a/x/stakeibc/keeper/consumer_test.go +++ b/x/stakeibc/keeper/consumer_test.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (s *KeeperTestSuite) TestRegisterStTokenDenomsToWhitelist() { diff --git a/x/stakeibc/keeper/deposit_records.go b/x/stakeibc/keeper/deposit_records.go index d0a80a70a5..8c5fe80be8 100644 --- a/x/stakeibc/keeper/deposit_records.go +++ b/x/stakeibc/keeper/deposit_records.go @@ -11,9 +11,9 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Create a new deposit record for each host zone for the given epoch diff --git a/x/stakeibc/keeper/deposit_records_test.go b/x/stakeibc/keeper/deposit_records_test.go index d533827d75..1d44ce31ac 100644 --- a/x/stakeibc/keeper/deposit_records_test.go +++ b/x/stakeibc/keeper/deposit_records_test.go @@ -10,10 +10,10 @@ import ( sdkmath "cosmossdk.io/math" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type TestDepositRecords struct { diff --git a/x/stakeibc/keeper/epoch_elapsed_shares_test.go b/x/stakeibc/keeper/epoch_elapsed_shares_test.go index 8a21d654db..1f53306064 100644 --- a/x/stakeibc/keeper/epoch_elapsed_shares_test.go +++ b/x/stakeibc/keeper/epoch_elapsed_shares_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // These are used to indicate that the value does not matter for the sake of the test diff --git a/x/stakeibc/keeper/epoch_tracker.go b/x/stakeibc/keeper/epoch_tracker.go index 5899392c9c..cb96876261 100644 --- a/x/stakeibc/keeper/epoch_tracker.go +++ b/x/stakeibc/keeper/epoch_tracker.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // SetEpochTracker set a specific epochTracker in the store from its index diff --git a/x/stakeibc/keeper/epoch_tracker_test.go b/x/stakeibc/keeper/epoch_tracker_test.go index 5494c0558a..0b8949188f 100644 --- a/x/stakeibc/keeper/epoch_tracker_test.go +++ b/x/stakeibc/keeper/epoch_tracker_test.go @@ -7,10 +7,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/events.go b/x/stakeibc/keeper/events.go index 19ef490f32..1943197c90 100644 --- a/x/stakeibc/keeper/events.go +++ b/x/stakeibc/keeper/events.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Emits a successful liquid stake event, and displays metadata such as the stToken amount diff --git a/x/stakeibc/keeper/gov.go b/x/stakeibc/keeper/gov.go index e0f1b5bde3..801073e93f 100644 --- a/x/stakeibc/keeper/gov.go +++ b/x/stakeibc/keeper/gov.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) AddValidatorsProposal(ctx sdk.Context, msg *types.AddValidatorsProposal) error { diff --git a/x/stakeibc/keeper/grpc_query.go b/x/stakeibc/keeper/grpc_query.go index d25971c44f..83eb8db0c3 100644 --- a/x/stakeibc/keeper/grpc_query.go +++ b/x/stakeibc/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/stakeibc/keeper/grpc_query_address_unbondings.go b/x/stakeibc/keeper/grpc_query_address_unbondings.go index 6a10b5d1d9..332deed626 100644 --- a/x/stakeibc/keeper/grpc_query_address_unbondings.go +++ b/x/stakeibc/keeper/grpc_query_address_unbondings.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const nanosecondsInDay = 86400000000000 diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker.go b/x/stakeibc/keeper/grpc_query_epoch_tracker.go index c2e8a424d7..c81e7fc265 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) EpochTrackerAll(c context.Context, req *types.QueryAllEpochTrackerRequest) (*types.QueryAllEpochTrackerResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go index 4048e5841a..33b31fd00a 100644 --- a/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go +++ b/x/stakeibc/keeper/grpc_query_epoch_tracker_test.go @@ -9,9 +9,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Prevent strconv unused error diff --git a/x/stakeibc/keeper/grpc_query_host_zone.go b/x/stakeibc/keeper/grpc_query_host_zone.go index 3011b81b10..cd39f9eba5 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone.go +++ b/x/stakeibc/keeper/grpc_query_host_zone.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) HostZoneAll(c context.Context, req *types.QueryAllHostZoneRequest) (*types.QueryAllHostZoneResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_host_zone_test.go b/x/stakeibc/keeper/grpc_query_host_zone_test.go index ff4d6ffe03..7e24d0c2bc 100644 --- a/x/stakeibc/keeper/grpc_query_host_zone_test.go +++ b/x/stakeibc/keeper/grpc_query_host_zone_test.go @@ -11,9 +11,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestHostZoneQuerySingle(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_module_address.go b/x/stakeibc/keeper/grpc_query_module_address.go index 6b82c07541..68cfc648bb 100644 --- a/x/stakeibc/keeper/grpc_query_module_address.go +++ b/x/stakeibc/keeper/grpc_query_module_address.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) ModuleAddress(goCtx context.Context, req *types.QueryModuleAddressRequest) (*types.QueryModuleAddressResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go index 69fa4bd33d..caac38d332 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) NextPacketSequence(c context.Context, req *types.QueryGetNextPacketSequenceRequest) (*types.QueryGetNextPacketSequenceResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go index 801e9923e1..6e7900111f 100644 --- a/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go +++ b/x/stakeibc/keeper/grpc_query_next_packet_sequence_test.go @@ -3,7 +3,7 @@ package keeper_test import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (s *KeeperTestSuite) TestNextPacketSequenceQuery() { diff --git a/x/stakeibc/keeper/grpc_query_params.go b/x/stakeibc/keeper/grpc_query_params.go index 59856d34d7..a09209e063 100644 --- a/x/stakeibc/keeper/grpc_query_params.go +++ b/x/stakeibc/keeper/grpc_query_params.go @@ -7,7 +7,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_params_test.go b/x/stakeibc/keeper/grpc_query_params_test.go index d54ac9f80a..8e8689485c 100644 --- a/x/stakeibc/keeper/grpc_query_params_test.go +++ b/x/stakeibc/keeper/grpc_query_params_test.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestParamsQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/grpc_query_register_ica.go b/x/stakeibc/keeper/grpc_query_register_ica.go index 03e21c3e7d..ba45fb2b0d 100644 --- a/x/stakeibc/keeper/grpc_query_register_ica.go +++ b/x/stakeibc/keeper/grpc_query_register_ica.go @@ -9,7 +9,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // InterchainAccountFromAddress implements the Query/InterchainAccountFromAddress gRPC method diff --git a/x/stakeibc/keeper/grpc_query_validator.go b/x/stakeibc/keeper/grpc_query_validator.go index 427bb35788..8faeb43ce6 100644 --- a/x/stakeibc/keeper/grpc_query_validator.go +++ b/x/stakeibc/keeper/grpc_query_validator.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k Keeper) Validators(c context.Context, req *types.QueryGetValidatorsRequest) (*types.QueryGetValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/grpc_query_validator_test.go b/x/stakeibc/keeper/grpc_query_validator_test.go index 9c4643db5e..715bceb748 100644 --- a/x/stakeibc/keeper/grpc_query_validator_test.go +++ b/x/stakeibc/keeper/grpc_query_validator_test.go @@ -8,9 +8,9 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestValidatorQuery(t *testing.T) { diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index d9c167fc8c..cb08420972 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -8,11 +8,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icaoracletypes "github.com/Stride-Labs/stride/v15/x/icaoracle/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icaoracletypes "github.com/Stride-Labs/stride/v16/x/icaoracle/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const StrideEpochsPerDayEpoch = uint64(4) diff --git a/x/stakeibc/keeper/host_zone.go b/x/stakeibc/keeper/host_zone.go index 587b9f3f57..2630c54f54 100644 --- a/x/stakeibc/keeper/host_zone.go +++ b/x/stakeibc/keeper/host_zone.go @@ -13,8 +13,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // SetHostZone set a specific hostZone in the store diff --git a/x/stakeibc/keeper/host_zone_test.go b/x/stakeibc/keeper/host_zone_test.go index 3463cb56ff..c82735271a 100644 --- a/x/stakeibc/keeper/host_zone_test.go +++ b/x/stakeibc/keeper/host_zone_test.go @@ -9,10 +9,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" - keepertest "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/testutil/nullify" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + keepertest "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/testutil/nullify" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func createNHostZone(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.HostZone { diff --git a/x/stakeibc/keeper/icacallbacks.go b/x/stakeibc/keeper/icacallbacks.go index 48000aba89..6979707216 100644 --- a/x/stakeibc/keeper/icacallbacks.go +++ b/x/stakeibc/keeper/icacallbacks.go @@ -1,7 +1,7 @@ package keeper import ( - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" ) const ( diff --git a/x/stakeibc/keeper/icacallbacks_claim.go b/x/stakeibc/keeper/icacallbacks_claim.go index 91d21dfcd5..c68126cc73 100644 --- a/x/stakeibc/keeper/icacallbacks_claim.go +++ b/x/stakeibc/keeper/icacallbacks_claim.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_claim_test.go b/x/stakeibc/keeper/icacallbacks_claim_test.go index 10abda7eab..b6784e2822 100644 --- a/x/stakeibc/keeper/icacallbacks_claim_test.go +++ b/x/stakeibc/keeper/icacallbacks_claim_test.go @@ -7,9 +7,9 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ClaimCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_delegate.go b/x/stakeibc/keeper/icacallbacks_delegate.go index df9eeec22a..555ebf5241 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate.go +++ b/x/stakeibc/keeper/icacallbacks_delegate.go @@ -6,11 +6,11 @@ import ( "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_delegate_test.go b/x/stakeibc/keeper/icacallbacks_delegate_test.go index de68907c9c..52eed81c3a 100644 --- a/x/stakeibc/keeper/icacallbacks_delegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_delegate_test.go @@ -6,10 +6,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type DelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_detokenize.go b/x/stakeibc/keeper/icacallbacks_detokenize.go index 7edf1819c4..d7111549b1 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize.go @@ -8,10 +8,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // ICACallback after an LSM token is detokenized into native stake diff --git a/x/stakeibc/keeper/icacallbacks_detokenize_test.go b/x/stakeibc/keeper/icacallbacks_detokenize_test.go index ced2911efa..37dbc7fb10 100644 --- a/x/stakeibc/keeper/icacallbacks_detokenize_test.go +++ b/x/stakeibc/keeper/icacallbacks_detokenize_test.go @@ -6,10 +6,10 @@ import ( "github.com/cosmos/gogoproto/proto" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type DetokenizeCallbackTestCase struct { diff --git a/x/stakeibc/keeper/icacallbacks_rebalance.go b/x/stakeibc/keeper/icacallbacks_rebalance.go index bca3d498da..9c39c96791 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance.go @@ -3,9 +3,9 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_rebalance_test.go b/x/stakeibc/keeper/icacallbacks_rebalance_test.go index ddc84178f1..87a229694f 100644 --- a/x/stakeibc/keeper/icacallbacks_rebalance_test.go +++ b/x/stakeibc/keeper/icacallbacks_rebalance_test.go @@ -6,9 +6,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type RebalanceCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_redemption.go b/x/stakeibc/keeper/icacallbacks_redemption.go index 039927dec7..7de8349575 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption.go +++ b/x/stakeibc/keeper/icacallbacks_redemption.go @@ -3,10 +3,10 @@ package keeper import ( "fmt" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_redemption_test.go b/x/stakeibc/keeper/icacallbacks_redemption_test.go index beac3d42a8..d951e651c4 100644 --- a/x/stakeibc/keeper/icacallbacks_redemption_test.go +++ b/x/stakeibc/keeper/icacallbacks_redemption_test.go @@ -7,10 +7,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type RedemptionCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_reinvest.go b/x/stakeibc/keeper/icacallbacks_reinvest.go index 259f35295b..0acc862acf 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest.go @@ -8,13 +8,13 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/utils" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_reinvest_test.go b/x/stakeibc/keeper/icacallbacks_reinvest_test.go index eaff53d5de..1fd935e83b 100644 --- a/x/stakeibc/keeper/icacallbacks_reinvest_test.go +++ b/x/stakeibc/keeper/icacallbacks_reinvest_test.go @@ -9,16 +9,16 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ReinvestCallbackState struct { diff --git a/x/stakeibc/keeper/icacallbacks_undelegate.go b/x/stakeibc/keeper/icacallbacks_undelegate.go index cd44fa4516..3be93092f7 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/icacallbacks_undelegate_test.go b/x/stakeibc/keeper/icacallbacks_undelegate_test.go index 1343366e64..38a5a1f3cc 100644 --- a/x/stakeibc/keeper/icacallbacks_undelegate_test.go +++ b/x/stakeibc/keeper/icacallbacks_undelegate_test.go @@ -10,10 +10,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" _ "github.com/stretchr/testify/suite" - icacallbacktypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibckeeper "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icacallbacktypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibckeeper "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type UndelegateCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index 3c4518d08d..0b2a96f747 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" ) const ( diff --git a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go index f258a16a29..171b852ec4 100644 --- a/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go +++ b/x/stakeibc/keeper/icqcallbacks_callibrate_delegation.go @@ -6,9 +6,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v15/utils" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go index 65a2c95c61..ee5f9af257 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares.go @@ -12,9 +12,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // DelegatorSharesCallback is a callback handler for UpdateValidatorSharesExchRate queries. diff --git a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go index be94762956..7bb9efdb2e 100644 --- a/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go +++ b/x/stakeibc/keeper/icqcallbacks_delegator_shares_test.go @@ -11,9 +11,9 @@ import ( "github.com/cosmos/gogoproto/proto" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type DelegatorSharesICQCallbackArgs struct { diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance.go b/x/stakeibc/keeper/icqcallbacks_fee_balance.go index 2a417a3f8f..729c194f08 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance.go @@ -11,11 +11,11 @@ import ( clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/utils" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icqkeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // FeeBalanceCallback is a callback handler for FeeBalnce queries. diff --git a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go index a2de89d60e..a0ef76437c 100644 --- a/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_fee_balance_test.go @@ -6,10 +6,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type FeeBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go index eaa3f7f4ed..33251b8ccf 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate.go @@ -9,9 +9,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/Stride-Labs/stride/v15/utils" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // ValidatorCallback is a callback handler for validator queries. diff --git a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go index 275be7bf28..094f42f6c6 100644 --- a/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go +++ b/x/stakeibc/keeper/icqcallbacks_validator_exchange_rate_test.go @@ -13,10 +13,10 @@ import ( "github.com/cosmos/cosmos-sdk/types/bech32" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ValidatorICQCallbackState struct { diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go index c067d6ca6e..dacc5b7a2b 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance.go @@ -12,11 +12,11 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" + icqkeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/utils" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // WithdrawalBalanceCallback is a callback handler for WithdrawalBalance queries. diff --git a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go index 8aa9340f8d..c9f9ed96b6 100644 --- a/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go +++ b/x/stakeibc/keeper/icqcallbacks_withdrawal_balance_test.go @@ -7,11 +7,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type WithdrawalBalanceICQCallbackState struct { diff --git a/x/stakeibc/keeper/invariants.go b/x/stakeibc/keeper/invariants.go index 867c89d590..b3bdcdb9f4 100644 --- a/x/stakeibc/keeper/invariants.go +++ b/x/stakeibc/keeper/invariants.go @@ -5,7 +5,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" ) // RegisterInvariants registers all governance invariants. diff --git a/x/stakeibc/keeper/keeper.go b/x/stakeibc/keeper/keeper.go index 05b80a29a8..c0c6e4bfc6 100644 --- a/x/stakeibc/keeper/keeper.go +++ b/x/stakeibc/keeper/keeper.go @@ -12,8 +12,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - icqkeeper "github.com/Stride-Labs/stride/v15/x/interchainquery/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icqkeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -23,9 +23,9 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icacallbackskeeper "github.com/Stride-Labs/stride/v15/x/icacallbacks/keeper" - recordsmodulekeeper "github.com/Stride-Labs/stride/v15/x/records/keeper" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icacallbackskeeper "github.com/Stride-Labs/stride/v16/x/icacallbacks/keeper" + recordsmodulekeeper "github.com/Stride-Labs/stride/v16/x/records/keeper" ) type ( diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index f2d9da7148..dc8cc0b0d4 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -6,9 +6,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/lsm.go b/x/stakeibc/keeper/lsm.go index 419c6e5f37..0fc834c9d9 100644 --- a/x/stakeibc/keeper/lsm.go +++ b/x/stakeibc/keeper/lsm.go @@ -16,8 +16,8 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go index b3db081344..dfeb0c713e 100644 --- a/x/stakeibc/keeper/lsm_test.go +++ b/x/stakeibc/keeper/lsm_test.go @@ -9,9 +9,9 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" "github.com/cosmos/gogoproto/proto" ) diff --git a/x/stakeibc/keeper/msg_server.go b/x/stakeibc/keeper/msg_server.go index b1569cbc3d..2ca5af1db4 100644 --- a/x/stakeibc/keeper/msg_server.go +++ b/x/stakeibc/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type msgServer struct { diff --git a/x/stakeibc/keeper/msg_server_add_validators.go b/x/stakeibc/keeper/msg_server_add_validators.go index 6e1e279f62..7834220a84 100644 --- a/x/stakeibc/keeper/msg_server_add_validators.go +++ b/x/stakeibc/keeper/msg_server_add_validators.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) AddValidators(goCtx context.Context, msg *types.MsgAddValidators) (*types.MsgAddValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_add_validators_test.go b/x/stakeibc/keeper/msg_server_add_validators_test.go index ecedaacd74..9f289997b8 100644 --- a/x/stakeibc/keeper/msg_server_add_validators_test.go +++ b/x/stakeibc/keeper/msg_server_add_validators_test.go @@ -11,7 +11,7 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type AddValidatorsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_calibrate_delegation.go b/x/stakeibc/keeper/msg_server_calibrate_delegation.go index ab44eabe26..c4c965a7a7 100644 --- a/x/stakeibc/keeper/msg_server_calibrate_delegation.go +++ b/x/stakeibc/keeper/msg_server_calibrate_delegation.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Submits an ICQ to get the validator's delegated shares diff --git a/x/stakeibc/keeper/msg_server_change_validator_weight.go b/x/stakeibc/keeper/msg_server_change_validator_weight.go index 608c663165..971e24030b 100644 --- a/x/stakeibc/keeper/msg_server_change_validator_weight.go +++ b/x/stakeibc/keeper/msg_server_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) ChangeValidatorWeight(goCtx context.Context, msg *types.MsgChangeValidatorWeight) (*types.MsgChangeValidatorWeightResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go index d486381c11..29afe3b799 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens.go @@ -4,15 +4,15 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" proto "github.com/cosmos/gogoproto/proto" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type IcaTx struct { diff --git a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go index 22870b9a96..08d6edf4f6 100644 --- a/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go +++ b/x/stakeibc/keeper/msg_server_claim_undelegated_tokens_test.go @@ -11,10 +11,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ClaimUndelegatedState struct { diff --git a/x/stakeibc/keeper/msg_server_clear_balance.go b/x/stakeibc/keeper/msg_server_clear_balance.go index d07070783a..c2ddf3325e 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance.go +++ b/x/stakeibc/keeper/msg_server_clear_balance.go @@ -10,7 +10,7 @@ import ( ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) ClearBalance(goCtx context.Context, msg *types.MsgClearBalance) (*types.MsgClearBalanceResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_clear_balance_test.go b/x/stakeibc/keeper/msg_server_clear_balance_test.go index f0bad7920d..1cfc7cbae7 100644 --- a/x/stakeibc/keeper/msg_server_clear_balance_test.go +++ b/x/stakeibc/keeper/msg_server_clear_balance_test.go @@ -9,8 +9,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ClearBalanceState struct { diff --git a/x/stakeibc/keeper/msg_server_delete_validator.go b/x/stakeibc/keeper/msg_server_delete_validator.go index dd23f26edb..36aeac0d16 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator.go +++ b/x/stakeibc/keeper/msg_server_delete_validator.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) DeleteValidator(goCtx context.Context, msg *types.MsgDeleteValidator) (*types.MsgDeleteValidatorResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_delete_validator_test.go b/x/stakeibc/keeper/msg_server_delete_validator_test.go index 08859f7ec4..2acf96289e 100644 --- a/x/stakeibc/keeper/msg_server_delete_validator_test.go +++ b/x/stakeibc/keeper/msg_server_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type DeleteValidatorTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_liquid_stake.go b/x/stakeibc/keeper/msg_server_liquid_stake.go index 64d20b8283..abfbd35d02 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Exchanges a user's native tokens for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_liquid_stake_test.go index efdd7cbe3d..dc2b6f4108 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type Account struct { diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go index cad193efa6..41c480ffb9 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake.go @@ -8,9 +8,9 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/gogoproto/proto" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Exchanges a user's LSM tokenized shares for stTokens using the current redemption rate diff --git a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go index 63ba579752..012a2fa5c9 100644 --- a/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go +++ b/x/stakeibc/keeper/msg_server_lsm_liquid_stake_test.go @@ -10,10 +10,10 @@ import ( transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type LSMLiquidStakeTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_rebalance_validators.go b/x/stakeibc/keeper/msg_server_rebalance_validators.go index a51d2bb6f4..2df5816d05 100644 --- a/x/stakeibc/keeper/msg_server_rebalance_validators.go +++ b/x/stakeibc/keeper/msg_server_rebalance_validators.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) RebalanceValidators(goCtx context.Context, msg *types.MsgRebalanceValidators) (*types.MsgRebalanceValidatorsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake.go b/x/stakeibc/keeper/msg_server_redeem_stake.go index b0fa9b52ae..48639a83fe 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake.go @@ -4,14 +4,14 @@ import ( "context" "fmt" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) func (k msgServer) RedeemStake(goCtx context.Context, msg *types.MsgRedeemStake) (*types.MsgRedeemStakeResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_redeem_stake_test.go b/x/stakeibc/keeper/msg_server_redeem_stake_test.go index 9bf676a7b1..75f759e0f9 100644 --- a/x/stakeibc/keeper/msg_server_redeem_stake_test.go +++ b/x/stakeibc/keeper/msg_server_redeem_stake_test.go @@ -7,9 +7,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type RedeemStakeState struct { diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 3f3b649be1..5a3acc57cc 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -7,10 +7,10 @@ import ( sdkmath "cosmossdk.io/math" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - "github.com/Stride-Labs/stride/v15/utils" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/msg_server_register_host_zone_test.go b/x/stakeibc/keeper/msg_server_register_host_zone_test.go index 2aab36b504..be8bb03330 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone_test.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone_test.go @@ -12,10 +12,10 @@ import ( channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type RegisterHostZoneTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account.go b/x/stakeibc/keeper/msg_server_restore_interchain_account.go index a943122314..4b981a2ee1 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) RestoreInterchainAccount(goCtx context.Context, msg *types.MsgRestoreInterchainAccount) (*types.MsgRestoreInterchainAccountResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go index 32ca47e8d1..05b4f0a485 100644 --- a/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go +++ b/x/stakeibc/keeper/msg_server_restore_interchain_account_test.go @@ -6,8 +6,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type DepositRecordStatusUpdate struct { diff --git a/x/stakeibc/keeper/msg_server_resume_host_zone.go b/x/stakeibc/keeper/msg_server_resume_host_zone.go index 96857bf111..d8b6cd2e29 100644 --- a/x/stakeibc/keeper/msg_server_resume_host_zone.go +++ b/x/stakeibc/keeper/msg_server_resume_host_zone.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/stakeibc/keeper/msg_server_resume_host_zone_test.go b/x/stakeibc/keeper/msg_server_resume_host_zone_test.go index 1ccfea0b89..e13fb507ad 100644 --- a/x/stakeibc/keeper/msg_server_resume_host_zone_test.go +++ b/x/stakeibc/keeper/msg_server_resume_host_zone_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ResumeHostZoneTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_submit_tx.go b/x/stakeibc/keeper/msg_server_submit_tx.go index e9b2f5f12a..8bb88b83f8 100644 --- a/x/stakeibc/keeper/msg_server_submit_tx.go +++ b/x/stakeibc/keeper/msg_server_submit_tx.go @@ -11,19 +11,19 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - icacallbackstypes "github.com/Stride-Labs/stride/v15/x/icacallbacks/types" + "github.com/Stride-Labs/stride/v16/utils" + icacallbackstypes "github.com/Stride-Labs/stride/v16/x/icacallbacks/types" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" bankTypes "github.com/cosmos/cosmos-sdk/x/bank/types" distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - icqtypes "github.com/Stride-Labs/stride/v15/x/interchainquery/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" sdk "github.com/cosmos/cosmos-sdk/types" icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper" diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go index bfd8a55719..750d4d962b 100644 --- a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (k msgServer) UpdateInnerRedemptionRateBounds(goCtx context.Context, msg *types.MsgUpdateInnerRedemptionRateBounds) (*types.MsgUpdateInnerRedemptionRateBoundsResponse, error) { diff --git a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go index 3386ecde33..cd8251d85f 100644 --- a/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go +++ b/x/stakeibc/keeper/msg_server_update_inner_redemption_rate_bounds_test.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type UpdateInnerRedemptionRateBoundsTestCase struct { diff --git a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go index 653f4abbd1..2034f5d6df 100644 --- a/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go +++ b/x/stakeibc/keeper/msg_server_update_validator_shares_exch_rate.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // This kicks off two ICQs, each with a callback, that will update the number of tokens on a validator diff --git a/x/stakeibc/keeper/msg_undelegate_host.go b/x/stakeibc/keeper/msg_undelegate_host.go index 9bd14eb2ee..701df21e46 100644 --- a/x/stakeibc/keeper/msg_undelegate_host.go +++ b/x/stakeibc/keeper/msg_undelegate_host.go @@ -7,7 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const isUndelegateHostPreventedKey = "is-undelegate-host-prevented" diff --git a/x/stakeibc/keeper/params.go b/x/stakeibc/keeper/params.go index 1cefcbc1bd..4812c188d9 100644 --- a/x/stakeibc/keeper/params.go +++ b/x/stakeibc/keeper/params.go @@ -3,7 +3,7 @@ package keeper import ( sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // GetParams get all parameters as types.Params diff --git a/x/stakeibc/keeper/params_test.go b/x/stakeibc/keeper/params_test.go index e464114174..a21fd0d280 100644 --- a/x/stakeibc/keeper/params_test.go +++ b/x/stakeibc/keeper/params_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - testkeeper "github.com/Stride-Labs/stride/v15/testutil/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + testkeeper "github.com/Stride-Labs/stride/v16/testutil/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestGetParams(t *testing.T) { diff --git a/x/stakeibc/keeper/reward_allocation.go b/x/stakeibc/keeper/reward_allocation.go index e640f1643b..6817d45bff 100644 --- a/x/stakeibc/keeper/reward_allocation.go +++ b/x/stakeibc/keeper/reward_allocation.go @@ -8,7 +8,7 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // Liquid Stake Reward Collector Balance diff --git a/x/stakeibc/keeper/reward_allocation_test.go b/x/stakeibc/keeper/reward_allocation_test.go index e5e13af09d..23a9b6731f 100644 --- a/x/stakeibc/keeper/reward_allocation_test.go +++ b/x/stakeibc/keeper/reward_allocation_test.go @@ -15,9 +15,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" _ "github.com/stretchr/testify/suite" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func (s *KeeperTestSuite) SetupTestRewardAllocation() { diff --git a/x/stakeibc/keeper/unbonding_records.go b/x/stakeibc/keeper/unbonding_records.go index 4c9c7ec2c9..d5b830612a 100644 --- a/x/stakeibc/keeper/unbonding_records.go +++ b/x/stakeibc/keeper/unbonding_records.go @@ -14,9 +14,9 @@ import ( "github.com/cosmos/gogoproto/proto" "github.com/spf13/cast" - "github.com/Stride-Labs/stride/v15/utils" - recordstypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + recordstypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/unbonding_records_cleanup_test.go b/x/stakeibc/keeper/unbonding_records_cleanup_test.go index 8d48cd1cae..0c249c7d50 100644 --- a/x/stakeibc/keeper/unbonding_records_cleanup_test.go +++ b/x/stakeibc/keeper/unbonding_records_cleanup_test.go @@ -4,9 +4,9 @@ import ( sdkmath "cosmossdk.io/math" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" - stakeibc "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + stakeibc "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type CleanupEpochUnbondingRecordsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go index b071ae85e5..ba687aaa0c 100644 --- a/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go +++ b/x/stakeibc/keeper/unbonding_records_get_host_zone_unbondings_msgs_test.go @@ -9,10 +9,10 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type ValidatorUnbonding struct { diff --git a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go index e90d304ef3..d447ec3897 100644 --- a/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go +++ b/x/stakeibc/keeper/unbonding_records_initiate_all_unbondings_test.go @@ -5,8 +5,8 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type InitiateAllHostZoneUnbondingsTestCase struct { diff --git a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go index 015c420b5a..60c7909164 100644 --- a/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go +++ b/x/stakeibc/keeper/unbonding_records_sweep_unbonded_tokens_test.go @@ -5,10 +5,10 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - stakeibc "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + stakeibc "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type SweepUnbondedTokensTestCase struct { diff --git a/x/stakeibc/keeper/undelegate_host.go b/x/stakeibc/keeper/undelegate_host.go index ce51c52630..98b13ffb06 100644 --- a/x/stakeibc/keeper/undelegate_host.go +++ b/x/stakeibc/keeper/undelegate_host.go @@ -9,8 +9,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v15/utils" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const ( diff --git a/x/stakeibc/keeper/undelegate_host_test.go b/x/stakeibc/keeper/undelegate_host_test.go index e0ed72c4cd..e90dda9a70 100644 --- a/x/stakeibc/keeper/undelegate_host_test.go +++ b/x/stakeibc/keeper/undelegate_host_test.go @@ -9,9 +9,9 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const UndelegateHostZoneChainId = "evmos_9001-2" // the relevant zone for this test diff --git a/x/stakeibc/keeper/update_redemption_rates_test.go b/x/stakeibc/keeper/update_redemption_rates_test.go index cc2c60d1ab..0061591941 100644 --- a/x/stakeibc/keeper/update_redemption_rates_test.go +++ b/x/stakeibc/keeper/update_redemption_rates_test.go @@ -8,9 +8,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" _ "github.com/stretchr/testify/suite" - minttypes "github.com/Stride-Labs/stride/v15/x/mint/types" - recordtypes "github.com/Stride-Labs/stride/v15/x/records/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + minttypes "github.com/Stride-Labs/stride/v16/x/mint/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type UpdateRedemptionRateTestCase struct { diff --git a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go index 970c8d2fde..77351054ba 100644 --- a/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go +++ b/x/stakeibc/keeper/update_validator_shares_exch_rate_test.go @@ -8,7 +8,7 @@ import ( ibctesting "github.com/cosmos/ibc-go/v7/testing" _ "github.com/stretchr/testify/suite" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // ================================ 1: QueryValidatorSharesToTokensRate ============================================= diff --git a/x/stakeibc/keeper/validator_selection.go b/x/stakeibc/keeper/validator_selection.go index aeb84ebd35..2d9ad8cc3a 100644 --- a/x/stakeibc/keeper/validator_selection.go +++ b/x/stakeibc/keeper/validator_selection.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/gogoproto/proto" - "github.com/Stride-Labs/stride/v15/utils" - epochstypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/utils" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) const RebalanceIcaBatchSize = 5 diff --git a/x/stakeibc/keeper/validator_selection_test.go b/x/stakeibc/keeper/validator_selection_test.go index b92c2057e2..4708eddf0b 100644 --- a/x/stakeibc/keeper/validator_selection_test.go +++ b/x/stakeibc/keeper/validator_selection_test.go @@ -11,9 +11,9 @@ import ( stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ibctesting "github.com/cosmos/ibc-go/v7/testing" - epochtypes "github.com/Stride-Labs/stride/v15/x/epochs/types" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) type RebalanceDelegationsForHostZoneTestCase struct { diff --git a/x/stakeibc/migrations/v2/convert.go b/x/stakeibc/migrations/v2/convert.go index ef52c42671..4a9d2cff4a 100644 --- a/x/stakeibc/migrations/v2/convert.go +++ b/x/stakeibc/migrations/v2/convert.go @@ -3,8 +3,8 @@ package v2 import ( sdkmath "cosmossdk.io/math" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" ) func convertToNewValidator(oldValidator oldstakeibctypes.Validator) stakeibctypes.Validator { diff --git a/x/stakeibc/migrations/v2/convert_test.go b/x/stakeibc/migrations/v2/convert_test.go index b105d3b365..e8cd858d65 100644 --- a/x/stakeibc/migrations/v2/convert_test.go +++ b/x/stakeibc/migrations/v2/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v2/migrations.go b/x/stakeibc/migrations/v2/migrations.go index 2a222dafcf..236c4a7d64 100644 --- a/x/stakeibc/migrations/v2/migrations.go +++ b/x/stakeibc/migrations/v2/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v2/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v2/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/migrations/v3/convert.go b/x/stakeibc/migrations/v3/convert.go index 20b96bf03b..97a5fb9874 100644 --- a/x/stakeibc/migrations/v3/convert.go +++ b/x/stakeibc/migrations/v3/convert.go @@ -4,8 +4,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/migrations/v3/convert_test.go b/x/stakeibc/migrations/v3/convert_test.go index fc0d536532..d002441daf 100644 --- a/x/stakeibc/migrations/v3/convert_test.go +++ b/x/stakeibc/migrations/v3/convert_test.go @@ -8,8 +8,8 @@ import ( "github.com/stretchr/testify/require" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - newstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + newstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestConvertToNewValidator(t *testing.T) { diff --git a/x/stakeibc/migrations/v3/migrations.go b/x/stakeibc/migrations/v3/migrations.go index 5e6cb3ef84..bfeef6a5ef 100644 --- a/x/stakeibc/migrations/v3/migrations.go +++ b/x/stakeibc/migrations/v3/migrations.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - oldstakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/migrations/v3/types" - stakeibctypes "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + oldstakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/migrations/v3/types" + stakeibctypes "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func migrateHostZone(store sdk.KVStore, cdc codec.BinaryCodec) error { diff --git a/x/stakeibc/module.go b/x/stakeibc/module.go index 4f2c8c9ebd..28b0f4a711 100644 --- a/x/stakeibc/module.go +++ b/x/stakeibc/module.go @@ -19,9 +19,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/Stride-Labs/stride/v15/x/stakeibc/client/cli" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/client/cli" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) var ( diff --git a/x/stakeibc/module_simulation.go b/x/stakeibc/module_simulation.go index 90c3ff0e36..2a4c8728d5 100644 --- a/x/stakeibc/module_simulation.go +++ b/x/stakeibc/module_simulation.go @@ -10,9 +10,9 @@ import ( simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/Stride-Labs/stride/v15/testutil/sample" - stakeibcsimulation "github.com/Stride-Labs/stride/v15/x/stakeibc/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/testutil/sample" + stakeibcsimulation "github.com/Stride-Labs/stride/v16/x/stakeibc/simulation" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) // avoid unused import issue diff --git a/x/stakeibc/simulation/add_validator.go b/x/stakeibc/simulation/add_validator.go index f395580775..a49267378c 100644 --- a/x/stakeibc/simulation/add_validator.go +++ b/x/stakeibc/simulation/add_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgAddValidator( diff --git a/x/stakeibc/simulation/change_validator_weight.go b/x/stakeibc/simulation/change_validator_weight.go index 0c8c643f35..17a16e13b6 100644 --- a/x/stakeibc/simulation/change_validator_weight.go +++ b/x/stakeibc/simulation/change_validator_weight.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgChangeValidatorWeight( diff --git a/x/stakeibc/simulation/claim_undelegated_tokens.go b/x/stakeibc/simulation/claim_undelegated_tokens.go index 2f74e86170..954fc42e2e 100644 --- a/x/stakeibc/simulation/claim_undelegated_tokens.go +++ b/x/stakeibc/simulation/claim_undelegated_tokens.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgClaimUndelegatedTokens( diff --git a/x/stakeibc/simulation/delete_validator.go b/x/stakeibc/simulation/delete_validator.go index 4109335b65..6d86d9fcb2 100644 --- a/x/stakeibc/simulation/delete_validator.go +++ b/x/stakeibc/simulation/delete_validator.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgDeleteValidator( diff --git a/x/stakeibc/simulation/liquid_stake.go b/x/stakeibc/simulation/liquid_stake.go index b7ab7021fb..6bac6b4a83 100644 --- a/x/stakeibc/simulation/liquid_stake.go +++ b/x/stakeibc/simulation/liquid_stake.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgLiquidStake( diff --git a/x/stakeibc/simulation/rebalance_validators.go b/x/stakeibc/simulation/rebalance_validators.go index f8c679eedc..1f04c322e0 100644 --- a/x/stakeibc/simulation/rebalance_validators.go +++ b/x/stakeibc/simulation/rebalance_validators.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgRebalanceValidators( diff --git a/x/stakeibc/simulation/restore_interchain_account.go b/x/stakeibc/simulation/restore_interchain_account.go index 14cbbd44ae..0a1731c29c 100644 --- a/x/stakeibc/simulation/restore_interchain_account.go +++ b/x/stakeibc/simulation/restore_interchain_account.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgRestoreInterchainAccount( diff --git a/x/stakeibc/simulation/update_delegation.go b/x/stakeibc/simulation/update_delegation.go index caf55131be..a53bca6ee5 100644 --- a/x/stakeibc/simulation/update_delegation.go +++ b/x/stakeibc/simulation/update_delegation.go @@ -7,8 +7,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/Stride-Labs/stride/v15/x/stakeibc/keeper" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func SimulateMsgUpdateValidatorSharesExchRate( diff --git a/x/stakeibc/types/address_unbonding.pb.go b/x/stakeibc/types/address_unbonding.pb.go index 01fe4b7efa..6a00277fbc 100644 --- a/x/stakeibc/types/address_unbonding.pb.go +++ b/x/stakeibc/types/address_unbonding.pb.go @@ -121,7 +121,7 @@ var fileDescriptor_6491082275bcb473 = []byte{ // 348 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x51, 0xcd, 0x4a, 0xeb, 0x40, 0x18, 0x4d, 0x7a, 0xdb, 0xde, 0x76, 0xee, 0x45, 0xcb, 0x50, 0x64, 0xe8, 0x22, 0xad, 0x2e, 0x34, - 0x9b, 0x26, 0xa8, 0x08, 0x6e, 0x2d, 0x28, 0x14, 0x8a, 0x48, 0xd4, 0x8d, 0x9b, 0x90, 0x9f, 0x8f, + 0x9b, 0x26, 0xa8, 0x20, 0x6e, 0x2d, 0x28, 0x14, 0x8a, 0x48, 0xd4, 0x8d, 0x9b, 0x90, 0x9f, 0x8f, 0x74, 0xa8, 0x33, 0x13, 0x32, 0x93, 0xa2, 0x6f, 0xe1, 0x8b, 0xf8, 0x1e, 0x5d, 0x76, 0x29, 0x2e, 0x8a, 0xb4, 0x2f, 0x22, 0x9d, 0x24, 0xd5, 0xd5, 0xcc, 0x77, 0xce, 0x99, 0xf3, 0x1d, 0xe6, 0xa0, 0x13, 0xa9, 0x32, 0x1a, 0x83, 0x2b, 0x55, 0x30, 0x03, 0x1a, 0x46, 0x6e, 0x10, 0xc7, 0x19, 0x48, @@ -140,7 +140,7 @@ var fileDescriptor_6491082275bcb473 = []byte{ 0xb5, 0x65, 0x2e, 0xd7, 0x96, 0xf9, 0xb5, 0xb6, 0xcc, 0xb7, 0x8d, 0x65, 0x2c, 0x37, 0x96, 0xf1, 0xb1, 0xb1, 0x8c, 0xa7, 0xb3, 0x5f, 0x61, 0xef, 0xf5, 0xdf, 0x0f, 0x27, 0x41, 0x28, 0xdd, 0xb2, 0xb0, 0xf9, 0xe9, 0x85, 0xfb, 0xf2, 0x53, 0x9b, 0x0e, 0x1f, 0x36, 0x75, 0x09, 0xe7, 0xdf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0x97, 0xea, 0x4e, 0xc1, 0xd6, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x6f, 0x07, 0x19, 0x33, 0xd6, 0x01, 0x00, 0x00, } func (m *AddressUnbonding) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index 8675d2a086..3a8d9b8e3f 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -5,7 +5,7 @@ package types import ( fmt "fmt" - types1 "github.com/Stride-Labs/stride/v15/x/records/types" + types1 "github.com/Stride-Labs/stride/v16/x/records/types" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" @@ -710,60 +710,60 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 840 bytes of a gzipped FileDescriptorProto + // 841 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4f, 0x6f, 0x23, 0x35, 0x14, 0xcf, 0x34, 0xab, 0xdd, 0x8d, 0x93, 0x36, 0xe9, 0x08, 0x2d, 0x69, 0x14, 0x25, 0x61, 0x16, - 0xc1, 0x0a, 0x69, 0x67, 0xd4, 0x22, 0x10, 0x88, 0xcb, 0xd2, 0x56, 0x68, 0x23, 0xa5, 0x48, 0x4c, - 0x5a, 0x0e, 0xbd, 0x8c, 0x3c, 0x63, 0x2b, 0xb1, 0x32, 0x63, 0xa7, 0x63, 0x27, 0xa5, 0xfd, 0x04, - 0x1c, 0x7b, 0xe5, 0x23, 0xc0, 0x85, 0x4f, 0xc0, 0x85, 0x53, 0x8f, 0x3d, 0x22, 0x0e, 0x05, 0xb5, - 0x5f, 0x04, 0xd9, 0xe3, 0xf9, 0x93, 0x04, 0x2a, 0x52, 0x38, 0x25, 0xf3, 0xfc, 0xb3, 0xdf, 0xfb, - 0xfd, 0x7e, 0x7e, 0xcf, 0xa0, 0xcb, 0x45, 0x4c, 0x10, 0x76, 0xb8, 0x80, 0x13, 0x4c, 0xfc, 0xc0, - 0x09, 0x60, 0x18, 0xfa, 0x30, 0x98, 0x70, 0x7b, 0x1a, 0x33, 0xc1, 0xcc, 0x7a, 0x02, 0xb0, 0x53, - 0x40, 0xeb, 0x9d, 0x11, 0x1b, 0x31, 0xb5, 0xe6, 0xc8, 0x7f, 0x09, 0xac, 0xd5, 0x09, 0x18, 0x8f, - 0x18, 0x77, 0x7c, 0xc8, 0xb1, 0x33, 0xdf, 0xf5, 0xb1, 0x80, 0xbb, 0x4e, 0xc0, 0x08, 0xd5, 0xeb, - 0x6d, 0x9d, 0x27, 0xc6, 0x01, 0x8b, 0x11, 0x4f, 0x7f, 0xf5, 0xea, 0x4a, 0x15, 0x63, 0xc6, 0x85, - 0x77, 0xc9, 0x28, 0xfe, 0x27, 0xc0, 0x1c, 0x86, 0x04, 0x41, 0xc1, 0xe2, 0x04, 0x60, 0x9d, 0x83, - 0xfa, 0x70, 0x1a, 0x12, 0x71, 0x88, 0x43, 0x3c, 0x82, 0x82, 0x30, 0x6a, 0xb6, 0x41, 0x25, 0x43, - 0x35, 0x8d, 0x9e, 0xf1, 0xaa, 0xe2, 0xe6, 0x01, 0xf3, 0x2b, 0xf0, 0x14, 0x46, 0x6c, 0x46, 0x45, - 0x73, 0x43, 0x2e, 0xed, 0xdb, 0xd7, 0xb7, 0xdd, 0xd2, 0xef, 0xb7, 0xdd, 0x0f, 0x46, 0x44, 0x8c, - 0x67, 0xbe, 0x1d, 0xb0, 0xc8, 0xd1, 0x9c, 0x92, 0x9f, 0xd7, 0x1c, 0x4d, 0x1c, 0x71, 0x31, 0xc5, - 0xdc, 0xee, 0x53, 0xe1, 0xea, 0xdd, 0xd6, 0xcf, 0x06, 0x68, 0xe8, 0xa4, 0xf8, 0x40, 0x6b, 0x67, - 0xf6, 0x40, 0x2d, 0x63, 0xe0, 0x11, 0xa4, 0xb3, 0x03, 0x19, 0x3b, 0x65, 0x14, 0xf7, 0x91, 0xf9, - 0x11, 0xd8, 0x46, 0x78, 0xca, 0x38, 0x11, 0x5e, 0x22, 0x85, 0x84, 0xc9, 0x4a, 0x9e, 0xb8, 0x75, - 0xbd, 0xe0, 0xaa, 0x78, 0x1f, 0x99, 0x47, 0x60, 0x9b, 0x4b, 0x6e, 0x1e, 0xca, 0xc8, 0xf1, 0x66, - 0xb9, 0x57, 0x7e, 0x55, 0xdd, 0xeb, 0xd9, 0x4b, 0xf6, 0xd8, 0x4b, 0x2a, 0xb8, 0x0d, 0xbe, 0x18, - 0xe0, 0xd6, 0xf7, 0x06, 0xd8, 0x3c, 0x08, 0x21, 0x89, 0xb2, 0x72, 0x3f, 0x07, 0x3b, 0x33, 0x8e, - 0x63, 0x2f, 0xc6, 0x08, 0x47, 0x53, 0x89, 0x2a, 0x14, 0x95, 0xd4, 0xfe, 0x42, 0x02, 0xdc, 0x6c, - 0x3d, 0xab, 0x6d, 0x07, 0x3c, 0x0f, 0xc6, 0x90, 0xd0, 0xb4, 0xfc, 0x8a, 0xfb, 0x4c, 0x7d, 0xf7, - 0x91, 0xf9, 0x1e, 0xa8, 0xe1, 0x29, 0x0b, 0xc6, 0x1e, 0x9d, 0x45, 0x3e, 0x8e, 0x9b, 0x65, 0xc5, - 0xae, 0xaa, 0x62, 0x5f, 0xab, 0x90, 0xf5, 0xa3, 0x01, 0x1a, 0x2e, 0x26, 0x74, 0x8e, 0xb9, 0xc8, - 0xaa, 0xe1, 0xa0, 0x1e, 0xeb, 0x98, 0xa7, 0x2d, 0x92, 0x35, 0x54, 0xf7, 0x76, 0xec, 0xc4, 0x09, - 0x5b, 0x5e, 0x32, 0x5b, 0x5f, 0x32, 0xfb, 0x80, 0x11, 0xba, 0xef, 0x48, 0xf7, 0x7e, 0xfa, 0xa3, - 0xfb, 0xe1, 0xbf, 0x70, 0x4f, 0x6e, 0x70, 0xb7, 0xd2, 0x14, 0x5f, 0xaa, 0x0c, 0x2b, 0x8e, 0x95, - 0x97, 0x1d, 0xb3, 0x7e, 0x35, 0x80, 0x79, 0x42, 0xd1, 0xfa, 0x56, 0xff, 0xad, 0x7d, 0x1b, 0x8f, - 0xb5, 0xcf, 0xfc, 0x02, 0xb4, 0x12, 0x59, 0x67, 0xd4, 0x67, 0x14, 0x11, 0x3a, 0xca, 0xcd, 0x4a, - 0xae, 0xc5, 0x13, 0xf7, 0x5d, 0x85, 0x38, 0x49, 0x01, 0xa9, 0x5b, 0x5c, 0x0a, 0xfe, 0x22, 0x27, - 0xf1, 0x96, 0x15, 0x64, 0x7f, 0x03, 0xca, 0x30, 0x4a, 0xa4, 0x5e, 0xbf, 0x1b, 0xe4, 0xd6, 0xff, - 0x99, 0xa8, 0xc5, 0x81, 0x99, 0x5f, 0xb8, 0x35, 0xf4, 0x7e, 0x58, 0xa0, 0x8d, 0x87, 0x05, 0xfa, - 0xc1, 0x00, 0x55, 0x17, 0xfb, 0x30, 0x84, 0x34, 0x20, 0x74, 0x64, 0xbe, 0x04, 0x9b, 0x3c, 0x0e, - 0xbc, 0xe5, 0x41, 0x52, 0xe3, 0x71, 0xf0, 0x6d, 0x36, 0x4b, 0x5e, 0x82, 0x4d, 0xc4, 0x45, 0x01, - 0x94, 0x74, 0x42, 0x0d, 0x71, 0x91, 0x83, 0xb4, 0xbe, 0xe5, 0x47, 0xeb, 0x6b, 0x9d, 0x83, 0xed, - 0xb4, 0xb4, 0x75, 0xee, 0xdf, 0x1b, 0x50, 0x8b, 0x73, 0x46, 0xa9, 0x23, 0xed, 0x15, 0x47, 0x0a, - 0xb4, 0xdd, 0x85, 0x1d, 0xd6, 0x09, 0x68, 0x1e, 0x62, 0xc1, 0x26, 0x98, 0x92, 0x4b, 0x3c, 0x1c, - 0xc3, 0x18, 0xf3, 0xc2, 0xec, 0x78, 0xa6, 0xe7, 0x95, 0xee, 0xd2, 0x6e, 0x7a, 0x70, 0x3a, 0xe2, - 0x07, 0xc3, 0xa3, 0x63, 0xb9, 0xf7, 0x50, 0x8f, 0xb5, 0x14, 0x6f, 0xfd, 0x62, 0x80, 0xad, 0xc1, - 0xf0, 0x68, 0x40, 0xce, 0x66, 0x04, 0x0d, 0x65, 0x19, 0xff, 0xe1, 0x34, 0xf3, 0x53, 0x50, 0xc9, - 0x84, 0x50, 0x06, 0xc8, 0x81, 0xb1, 0xcc, 0xf1, 0xad, 0x96, 0xc5, 0x7d, 0x9e, 0x0a, 0x64, 0x7e, - 0x56, 0x7c, 0x26, 0xca, 0x6a, 0x5f, 0x6b, 0x65, 0x5f, 0x66, 0x63, 0xe1, 0x09, 0xb1, 0xce, 0xc0, - 0xfb, 0x59, 0x3c, 0x51, 0xe5, 0x98, 0xa9, 0xda, 0xf8, 0x37, 0x33, 0x1c, 0x5f, 0x64, 0x12, 0xf5, - 0x41, 0x23, 0xe4, 0x91, 0x17, 0x2a, 0x9e, 0x9e, 0x3a, 0x73, 0x99, 0x5d, 0x96, 0x68, 0x51, 0x0f, - 0x77, 0x2b, 0xe4, 0x51, 0xe1, 0xdb, 0xba, 0x32, 0x40, 0x5b, 0xf7, 0x48, 0x9a, 0x73, 0x31, 0xd7, - 0x14, 0xb4, 0x09, 0x25, 0x82, 0xc0, 0x30, 0xbf, 0x8e, 0x85, 0x7e, 0x7c, 0x64, 0x7b, 0xb7, 0xf4, - 0x99, 0x19, 0xdd, 0xbc, 0x4f, 0xf7, 0x07, 0xd7, 0x77, 0x1d, 0xe3, 0xe6, 0xae, 0x63, 0xfc, 0x79, - 0xd7, 0x31, 0xae, 0xee, 0x3b, 0xa5, 0x9b, 0xfb, 0x4e, 0xe9, 0xb7, 0xfb, 0x4e, 0xe9, 0x74, 0xaf, - 0x70, 0xfa, 0x50, 0xf1, 0x7c, 0x3d, 0x80, 0x3e, 0x77, 0xf4, 0x5b, 0x3e, 0xdf, 0xfd, 0xc4, 0xf9, - 0x2e, 0x7f, 0xd1, 0x55, 0x36, 0xff, 0xa9, 0x7a, 0xce, 0x3f, 0xfe, 0x2b, 0x00, 0x00, 0xff, 0xff, - 0x70, 0x57, 0x4d, 0x1c, 0x98, 0x08, 0x00, 0x00, + 0xc1, 0x0a, 0x69, 0x67, 0xd4, 0x22, 0xad, 0x40, 0x5c, 0x96, 0xb6, 0x42, 0x1b, 0x29, 0x45, 0x62, + 0xd2, 0x72, 0xe8, 0x65, 0xe4, 0x19, 0x5b, 0x89, 0x95, 0x19, 0x3b, 0x1d, 0x3b, 0x29, 0xed, 0x27, + 0xe0, 0xd8, 0x2b, 0x1f, 0x01, 0x2e, 0x7c, 0x02, 0x2e, 0x9c, 0x7a, 0xec, 0x11, 0x71, 0x28, 0xa8, + 0xfd, 0x22, 0xc8, 0x1e, 0xcf, 0x9f, 0x24, 0x50, 0x91, 0xc2, 0x29, 0x99, 0xe7, 0x9f, 0xfd, 0xde, + 0xef, 0xf7, 0xf3, 0x7b, 0x06, 0x5d, 0x2e, 0x62, 0x82, 0xb0, 0xc3, 0x05, 0x9c, 0x60, 0xe2, 0x07, + 0x4e, 0x00, 0xc3, 0xd0, 0x87, 0xc1, 0x84, 0xdb, 0xd3, 0x98, 0x09, 0x66, 0xd6, 0x13, 0x80, 0x9d, + 0x02, 0x5a, 0xef, 0x8d, 0xd8, 0x88, 0xa9, 0x35, 0x47, 0xfe, 0x4b, 0x60, 0xad, 0x4e, 0xc0, 0x78, + 0xc4, 0xb8, 0xe3, 0x43, 0x8e, 0x9d, 0xf9, 0xae, 0x8f, 0x05, 0xdc, 0x75, 0x02, 0x46, 0xa8, 0x5e, + 0x6f, 0xeb, 0x3c, 0x31, 0x0e, 0x58, 0x8c, 0x78, 0xfa, 0xab, 0x57, 0x57, 0xaa, 0x18, 0x33, 0x2e, + 0xbc, 0x4b, 0x46, 0xf1, 0x3f, 0x01, 0xe6, 0x30, 0x24, 0x08, 0x0a, 0x16, 0x27, 0x00, 0xeb, 0x1c, + 0xd4, 0x87, 0xd3, 0x90, 0x88, 0x43, 0x1c, 0xe2, 0x11, 0x14, 0x84, 0x51, 0xb3, 0x0d, 0x2a, 0x19, + 0xaa, 0x69, 0xf4, 0x8c, 0x57, 0x15, 0x37, 0x0f, 0x98, 0x5f, 0x81, 0xa7, 0x30, 0x62, 0x33, 0x2a, + 0x9a, 0x1b, 0x72, 0x69, 0xdf, 0xbe, 0xbe, 0xed, 0x96, 0x7e, 0xbf, 0xed, 0x7e, 0x34, 0x22, 0x62, + 0x3c, 0xf3, 0xed, 0x80, 0x45, 0x8e, 0xe6, 0x94, 0xfc, 0xbc, 0xe6, 0x68, 0xe2, 0x88, 0x8b, 0x29, + 0xe6, 0x76, 0x9f, 0x0a, 0x57, 0xef, 0xb6, 0x7e, 0x36, 0x40, 0x43, 0x27, 0xc5, 0x07, 0x5a, 0x3b, + 0xb3, 0x07, 0x6a, 0x19, 0x03, 0x8f, 0x20, 0x9d, 0x1d, 0xc8, 0xd8, 0x29, 0xa3, 0xb8, 0x8f, 0xcc, + 0x4f, 0xc0, 0x36, 0xc2, 0x53, 0xc6, 0x89, 0xf0, 0x12, 0x29, 0x24, 0x4c, 0x56, 0xf2, 0xc4, 0xad, + 0xeb, 0x05, 0x57, 0xc5, 0xfb, 0xc8, 0x3c, 0x02, 0xdb, 0x5c, 0x72, 0xf3, 0x50, 0x46, 0x8e, 0x37, + 0xcb, 0xbd, 0xf2, 0xab, 0xea, 0x5e, 0xcf, 0x5e, 0xb2, 0xc7, 0x5e, 0x52, 0xc1, 0x6d, 0xf0, 0xc5, + 0x00, 0xb7, 0xbe, 0x37, 0xc0, 0xe6, 0x41, 0x08, 0x49, 0x94, 0x95, 0xfb, 0x39, 0xd8, 0x99, 0x71, + 0x1c, 0x7b, 0x31, 0x46, 0x38, 0x9a, 0x4a, 0x54, 0xa1, 0xa8, 0xa4, 0xf6, 0x17, 0x12, 0xe0, 0x66, + 0xeb, 0x59, 0x6d, 0x3b, 0xe0, 0x79, 0x30, 0x86, 0x84, 0xa6, 0xe5, 0x57, 0xdc, 0x67, 0xea, 0xbb, + 0x8f, 0xcc, 0x0f, 0x40, 0x0d, 0x4f, 0x59, 0x30, 0xf6, 0xe8, 0x2c, 0xf2, 0x71, 0xdc, 0x2c, 0x2b, + 0x76, 0x55, 0x15, 0xfb, 0x5a, 0x85, 0xac, 0x1f, 0x0d, 0xd0, 0x70, 0x31, 0xa1, 0x73, 0xcc, 0x45, + 0x56, 0x0d, 0x07, 0xf5, 0x58, 0xc7, 0x3c, 0x6d, 0x91, 0xac, 0xa1, 0xba, 0xb7, 0x63, 0x27, 0x4e, + 0xd8, 0xf2, 0x92, 0xd9, 0xfa, 0x92, 0xd9, 0x07, 0x8c, 0xd0, 0x7d, 0x47, 0xba, 0xf7, 0xd3, 0x1f, + 0xdd, 0x8f, 0xff, 0x85, 0x7b, 0x72, 0x83, 0xbb, 0x95, 0xa6, 0xf8, 0x52, 0x65, 0x58, 0x71, 0xac, + 0xbc, 0xec, 0x98, 0xf5, 0xab, 0x01, 0xcc, 0x13, 0x8a, 0xd6, 0xb7, 0xfa, 0x6f, 0xed, 0xdb, 0x78, + 0xac, 0x7d, 0xe6, 0x17, 0xa0, 0x95, 0xc8, 0x3a, 0xa3, 0x3e, 0xa3, 0x88, 0xd0, 0x51, 0x6e, 0x56, + 0x72, 0x2d, 0x9e, 0xb8, 0xef, 0x2b, 0xc4, 0x49, 0x0a, 0x48, 0xdd, 0xe2, 0x52, 0xf0, 0x17, 0x39, + 0x89, 0x77, 0xac, 0x20, 0xfb, 0x5b, 0x50, 0x86, 0x51, 0x22, 0xf5, 0xfa, 0xdd, 0x20, 0xb7, 0xfe, + 0xcf, 0x44, 0x2d, 0x0e, 0xcc, 0xfc, 0xc2, 0xad, 0xa1, 0xf7, 0xc3, 0x02, 0x6d, 0x3c, 0x2c, 0xd0, + 0x0f, 0x06, 0xa8, 0xba, 0xd8, 0x87, 0x21, 0xa4, 0x01, 0xa1, 0x23, 0xf3, 0x25, 0xd8, 0xe4, 0x71, + 0xe0, 0x2d, 0x0f, 0x92, 0x1a, 0x8f, 0x83, 0x6f, 0xb3, 0x59, 0xf2, 0x12, 0x6c, 0x22, 0x2e, 0x0a, + 0xa0, 0xa4, 0x13, 0x6a, 0x88, 0x8b, 0x1c, 0xa4, 0xf5, 0x2d, 0x3f, 0x5a, 0x5f, 0xeb, 0x1c, 0x6c, + 0xa7, 0xa5, 0xad, 0x73, 0xff, 0xde, 0x82, 0x5a, 0x9c, 0x33, 0x4a, 0x1d, 0x69, 0xaf, 0x38, 0x52, + 0xa0, 0xed, 0x2e, 0xec, 0xb0, 0x4e, 0x40, 0xf3, 0x10, 0x0b, 0x36, 0xc1, 0x94, 0x5c, 0xe2, 0xe1, + 0x18, 0xc6, 0x98, 0x17, 0x66, 0xc7, 0x33, 0x3d, 0xaf, 0x74, 0x97, 0x76, 0xd3, 0x83, 0xd3, 0x11, + 0x3f, 0x18, 0x1e, 0x1d, 0xcb, 0xbd, 0x87, 0x7a, 0xac, 0xa5, 0x78, 0xeb, 0x17, 0x03, 0x6c, 0x0d, + 0x86, 0x47, 0x03, 0x72, 0x36, 0x23, 0x68, 0x28, 0xcb, 0xf8, 0x0f, 0xa7, 0x99, 0x6f, 0x40, 0x25, + 0x13, 0x42, 0x19, 0x20, 0x07, 0xc6, 0x32, 0xc7, 0x77, 0x5a, 0x16, 0xf7, 0x79, 0x2a, 0x90, 0xf9, + 0x59, 0xf1, 0x99, 0x28, 0xab, 0x7d, 0xad, 0x95, 0x7d, 0x99, 0x8d, 0x85, 0x27, 0xc4, 0x3a, 0x03, + 0x1f, 0x66, 0xf1, 0x44, 0x95, 0x63, 0xa6, 0x6a, 0xe3, 0xdf, 0xcc, 0x70, 0x7c, 0x91, 0x49, 0xd4, + 0x07, 0x8d, 0x90, 0x47, 0x5e, 0xa8, 0x78, 0x7a, 0xea, 0xcc, 0x65, 0x76, 0x59, 0xa2, 0x45, 0x3d, + 0xdc, 0xad, 0x90, 0x47, 0x85, 0x6f, 0xeb, 0xca, 0x00, 0x6d, 0xdd, 0x23, 0x69, 0xce, 0xc5, 0x5c, + 0x53, 0xd0, 0x26, 0x94, 0x08, 0x02, 0xc3, 0xfc, 0x3a, 0x16, 0xfa, 0xf1, 0x91, 0xed, 0xdd, 0xd2, + 0x67, 0x66, 0x74, 0xf3, 0x3e, 0xdd, 0x1f, 0x5c, 0xdf, 0x75, 0x8c, 0x9b, 0xbb, 0x8e, 0xf1, 0xe7, + 0x5d, 0xc7, 0xb8, 0xba, 0xef, 0x94, 0x6e, 0xee, 0x3b, 0xa5, 0xdf, 0xee, 0x3b, 0xa5, 0xd3, 0xbd, + 0xc2, 0xe9, 0x43, 0xc5, 0xf3, 0xf5, 0x00, 0xfa, 0xdc, 0xd1, 0x6f, 0xf9, 0x7c, 0xf7, 0x8d, 0xf3, + 0x5d, 0xfe, 0xa2, 0xab, 0x6c, 0xfe, 0x53, 0xf5, 0x9c, 0x7f, 0xfa, 0x57, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x88, 0xba, 0x1a, 0xee, 0x98, 0x08, 0x00, 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/epoch_tracker.pb.go b/x/stakeibc/types/epoch_tracker.pb.go index ddae1c94e6..e4607d611d 100644 --- a/x/stakeibc/types/epoch_tracker.pb.go +++ b/x/stakeibc/types/epoch_tracker.pb.go @@ -114,8 +114,8 @@ var fileDescriptor_e7c48143f24adf66 = []byte{ 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x8c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x83, 0xc1, 0x7e, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, - 0x06, 0x4a, 0x99, 0xa1, 0xa9, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, - 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xa3, 0x02, 0xd3, 0x3a, 0x01, 0x00, + 0x06, 0x4a, 0x99, 0xa1, 0x99, 0x7e, 0x05, 0x22, 0x68, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, + 0xc0, 0x61, 0x62, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x93, 0x4e, 0x55, 0x21, 0x3a, 0x01, 0x00, 0x00, } diff --git a/x/stakeibc/types/expected_keepers.go b/x/stakeibc/types/expected_keepers.go index 5e39fd770b..dabd84aaec 100644 --- a/x/stakeibc/types/expected_keepers.go +++ b/x/stakeibc/types/expected_keepers.go @@ -7,7 +7,7 @@ import ( ccvconsumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types" - ratelimittypes "github.com/Stride-Labs/stride/v15/x/ratelimit/types" + ratelimittypes "github.com/Stride-Labs/stride/v16/x/ratelimit/types" ) // AccountKeeper defines the expected account keeper used for simulations (noalias) diff --git a/x/stakeibc/types/genesis.pb.go b/x/stakeibc/types/genesis.pb.go index daed0ead44..83b676054a 100644 --- a/x/stakeibc/types/genesis.pb.go +++ b/x/stakeibc/types/genesis.pb.go @@ -103,26 +103,26 @@ var fileDescriptor_dea81129ed6fb77a = []byte{ // 349 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x90, 0xcf, 0x4e, 0xea, 0x40, 0x14, 0xc6, 0x5b, 0x18, 0x4a, 0x19, 0xc8, 0xbd, 0x4d, 0x73, 0x13, 0xb8, 0xe4, 0x52, 0xc8, 0x75, - 0xc3, 0xc6, 0x36, 0x62, 0x78, 0x01, 0x12, 0xa2, 0x36, 0x2c, 0x14, 0x5c, 0xb1, 0x69, 0xda, 0x32, - 0x69, 0x27, 0x08, 0xd3, 0x74, 0x8e, 0x46, 0x7d, 0x0a, 0x57, 0x3e, 0x13, 0x4b, 0x96, 0xae, 0x8c, - 0x81, 0x17, 0x31, 0xed, 0x8c, 0xff, 0xca, 0x6e, 0xce, 0x7c, 0xbf, 0xfc, 0xce, 0x97, 0x83, 0x3b, - 0x1c, 0x52, 0xba, 0x20, 0x0e, 0x07, 0x7f, 0x49, 0x68, 0x10, 0x3a, 0x11, 0x59, 0x13, 0x4e, 0xb9, - 0x9d, 0xa4, 0x0c, 0x98, 0xf9, 0x5b, 0xc4, 0xf6, 0x47, 0xdc, 0xfe, 0x13, 0xb1, 0x88, 0xe5, 0x99, - 0x93, 0xbd, 0x04, 0xd6, 0xfe, 0x57, 0xb4, 0x24, 0x7e, 0xea, 0xaf, 0xa4, 0xa4, 0xdd, 0x2d, 0xa6, - 0x31, 0xe3, 0xe0, 0x3d, 0xb2, 0x35, 0x91, 0xc0, 0x51, 0x11, 0x20, 0x09, 0x0b, 0x63, 0x0f, 0x52, - 0x3f, 0x5c, 0x92, 0x54, 0x40, 0xff, 0x9f, 0x4b, 0xb8, 0x71, 0x26, 0xca, 0xcd, 0xc0, 0x07, 0x62, - 0x0e, 0xb1, 0x26, 0xd6, 0xb4, 0xd4, 0x9e, 0xda, 0xaf, 0x0f, 0x9a, 0x76, 0xa1, 0xac, 0x7d, 0x99, - 0xc7, 0x23, 0xb4, 0x79, 0xed, 0x2a, 0x53, 0x09, 0x9b, 0x4d, 0x5c, 0x4d, 0x58, 0x0a, 0x1e, 0x5d, - 0xb4, 0x4a, 0x3d, 0xb5, 0x5f, 0x9b, 0x6a, 0xd9, 0x78, 0xb1, 0x30, 0xc7, 0xf8, 0xd7, 0x67, 0x31, - 0xef, 0x86, 0x72, 0x68, 0x55, 0x7a, 0xe5, 0x7e, 0x7d, 0xf0, 0xf7, 0xc0, 0x7b, 0xce, 0x38, 0xcc, - 0xd9, 0x9a, 0x48, 0x73, 0x23, 0x96, 0xf3, 0x84, 0x72, 0x30, 0xaf, 0xb0, 0xf9, 0xa3, 0xbe, 0x50, - 0xe1, 0x5c, 0xd5, 0x39, 0x50, 0x8d, 0x33, 0xf4, 0x5a, 0x90, 0x52, 0x67, 0x90, 0x6f, 0x7f, 0x99, - 0xd2, 0x45, 0x7a, 0xd9, 0x40, 0x2e, 0xd2, 0x91, 0x51, 0x71, 0x91, 0xae, 0x19, 0x55, 0x17, 0xe9, - 0x35, 0x03, 0xbb, 0x48, 0xaf, 0x1b, 0x8d, 0xd1, 0x64, 0xb3, 0xb3, 0xd4, 0xed, 0xce, 0x52, 0xdf, - 0x76, 0x96, 0xfa, 0xb4, 0xb7, 0x94, 0xed, 0xde, 0x52, 0x5e, 0xf6, 0x96, 0x32, 0x1f, 0x44, 0x14, - 0xe2, 0xdb, 0xc0, 0x0e, 0xd9, 0xca, 0x99, 0xe5, 0x8b, 0x8f, 0x27, 0x7e, 0xc0, 0x1d, 0x79, 0xee, - 0xbb, 0x93, 0xa1, 0x73, 0xff, 0x75, 0x74, 0x78, 0x48, 0x08, 0x0f, 0xb4, 0xfc, 0xda, 0xa7, 0xef, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x2f, 0x7a, 0x48, 0xf4, 0x19, 0x02, 0x00, 0x00, + 0xc3, 0xc6, 0x36, 0x62, 0xf4, 0x01, 0x48, 0x88, 0xda, 0xb0, 0x50, 0x70, 0xc5, 0xa6, 0x69, 0xcb, + 0xa4, 0x9d, 0x20, 0x4c, 0xd3, 0x39, 0x1a, 0xf5, 0x29, 0x5c, 0xf9, 0x4c, 0x2c, 0x59, 0xba, 0x32, + 0x06, 0x5e, 0xc4, 0xb4, 0x33, 0xfe, 0x2b, 0xbb, 0x39, 0xf3, 0xfd, 0xf2, 0x3b, 0x5f, 0x0e, 0xee, + 0x70, 0x48, 0xe9, 0x9c, 0x38, 0x1c, 0xfc, 0x05, 0xa1, 0x41, 0xe8, 0x44, 0x64, 0x45, 0x38, 0xe5, + 0x76, 0x92, 0x32, 0x60, 0xe6, 0x6f, 0x11, 0xdb, 0x1f, 0x71, 0xfb, 0x4f, 0xc4, 0x22, 0x96, 0x67, + 0x4e, 0xf6, 0x12, 0x58, 0xfb, 0x5f, 0xd1, 0x92, 0xf8, 0xa9, 0xbf, 0x94, 0x92, 0x76, 0xb7, 0x98, + 0xc6, 0x8c, 0x83, 0xf7, 0xc8, 0x56, 0x44, 0x02, 0x07, 0x45, 0x80, 0x24, 0x2c, 0x8c, 0x3d, 0x48, + 0xfd, 0x70, 0x41, 0x52, 0x01, 0xfd, 0x7f, 0x2e, 0xe1, 0xc6, 0x99, 0x28, 0x37, 0x05, 0x1f, 0x88, + 0x79, 0x82, 0x35, 0xb1, 0xa6, 0xa5, 0xf6, 0xd4, 0x7e, 0x7d, 0xd0, 0xb4, 0x0b, 0x65, 0xed, 0xcb, + 0x3c, 0x1e, 0xa2, 0xf5, 0x6b, 0x57, 0x99, 0x48, 0xd8, 0x6c, 0xe2, 0x6a, 0xc2, 0x52, 0xf0, 0xe8, + 0xbc, 0x55, 0xea, 0xa9, 0xfd, 0xda, 0x44, 0xcb, 0xc6, 0x8b, 0xb9, 0x39, 0xc2, 0xbf, 0x3e, 0x8b, + 0x79, 0x37, 0x94, 0x43, 0xab, 0xd2, 0x2b, 0xf7, 0xeb, 0x83, 0xbf, 0x7b, 0xde, 0x73, 0xc6, 0x61, + 0xc6, 0x56, 0x44, 0x9a, 0x1b, 0xb1, 0x9c, 0xc7, 0x94, 0x83, 0x79, 0x85, 0xcd, 0x1f, 0xf5, 0x85, + 0x0a, 0xe7, 0xaa, 0xce, 0x9e, 0x6a, 0x94, 0xa1, 0xd7, 0x82, 0x94, 0x3a, 0x83, 0x7c, 0xfb, 0xcb, + 0x94, 0x2e, 0xd2, 0xcb, 0x06, 0x72, 0x91, 0x8e, 0x8c, 0x8a, 0x8b, 0x74, 0xcd, 0xa8, 0xba, 0x48, + 0xaf, 0x19, 0xd8, 0x45, 0x7a, 0xdd, 0x68, 0x0c, 0xc7, 0xeb, 0xad, 0xa5, 0x6e, 0xb6, 0x96, 0xfa, + 0xb6, 0xb5, 0xd4, 0xa7, 0x9d, 0xa5, 0x6c, 0x76, 0x96, 0xf2, 0xb2, 0xb3, 0x94, 0xd9, 0x20, 0xa2, + 0x10, 0xdf, 0x06, 0x76, 0xc8, 0x96, 0xce, 0x34, 0x5f, 0x7c, 0x38, 0xf6, 0x03, 0xee, 0xc8, 0x73, + 0xdf, 0x1d, 0x9d, 0x3a, 0xf7, 0x5f, 0x47, 0x87, 0x87, 0x84, 0xf0, 0x40, 0xcb, 0xaf, 0x7d, 0xfc, + 0x1e, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x97, 0x1f, 0x06, 0x19, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/genesis_test.go b/x/stakeibc/types/genesis_test.go index 725f1a46e5..bec732320e 100644 --- a/x/stakeibc/types/genesis_test.go +++ b/x/stakeibc/types/genesis_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestGenesisState_Validate(t *testing.T) { diff --git a/x/stakeibc/types/gov.pb.go b/x/stakeibc/types/gov.pb.go index 95db48a118..2ca57dc0ac 100644 --- a/x/stakeibc/types/gov.pb.go +++ b/x/stakeibc/types/gov.pb.go @@ -132,8 +132,8 @@ var fileDescriptor_8204317b384c5680 = []byte{ 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x46, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xc1, 0xe0, 0x80, 0xd4, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xc6, 0x7c, 0x99, 0xa1, - 0xa9, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, - 0x08, 0x00, 0x00, 0xff, 0xff, 0x2b, 0xd8, 0xd4, 0x88, 0x61, 0x02, 0x00, 0x00, + 0x99, 0x7e, 0x05, 0x22, 0xfe, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x91, 0x6f, 0x0c, + 0x08, 0x00, 0x00, 0xff, 0xff, 0xd3, 0x35, 0x83, 0x7a, 0x61, 0x02, 0x00, 0x00, } func (this *AddValidatorsProposal) Equal(that interface{}) bool { diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index c20499fdd4..51f5adfb81 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -200,7 +200,7 @@ var fileDescriptor_f81bf5b42c61245a = []byte{ // 734 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x4e, 0xeb, 0x46, 0x14, 0xc6, 0x93, 0x62, 0x82, 0x33, 0xfc, 0x89, 0x63, 0x42, 0xea, 0x84, 0x12, 0x22, 0x2a, 0x55, - 0xe9, 0x22, 0x8e, 0x0a, 0xaa, 0x2a, 0x55, 0x5d, 0x14, 0x9a, 0x4a, 0x4d, 0x84, 0x50, 0x65, 0xa4, + 0xe9, 0x22, 0x8e, 0x0a, 0x52, 0x2b, 0x55, 0x5d, 0x14, 0x9a, 0x4a, 0x4d, 0x84, 0x50, 0x65, 0xa4, 0x2e, 0xe8, 0xc2, 0x1a, 0x7b, 0x4e, 0x92, 0x11, 0xf6, 0x4c, 0xea, 0x19, 0x20, 0xed, 0x53, 0xf4, 0x5d, 0xca, 0x43, 0xb0, 0x44, 0xac, 0xaa, 0x2e, 0x50, 0x05, 0x2f, 0x72, 0xe5, 0xb1, 0xf3, 0x8f, 0x70, 0x15, 0x5d, 0x29, 0xab, 0x78, 0xce, 0xf7, 0x9d, 0xdf, 0x37, 0x67, 0x62, 0x79, 0xd0, 0xa1, @@ -243,7 +243,7 @@ var fileDescriptor_f81bf5b42c61245a = []byte{ 0x4b, 0x2d, 0xfb, 0xff, 0x4b, 0x2d, 0xfb, 0xf7, 0x6b, 0x2d, 0xf3, 0xf8, 0x5a, 0xcb, 0xfc, 0xfb, 0x5a, 0xcb, 0x5c, 0x1d, 0xcf, 0x8c, 0x78, 0xa9, 0xbe, 0x9e, 0xcd, 0x73, 0xec, 0x89, 0x56, 0x7a, 0x71, 0xdd, 0x7e, 0xf3, 0x6d, 0x6b, 0x34, 0xbd, 0xbe, 0xd4, 0xc8, 0x5e, 0x4e, 0x5d, 0x45, 0x27, - 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x69, 0xf6, 0x1b, 0x10, 0x07, 0x00, 0x00, + 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x93, 0x84, 0xa1, 0xe9, 0x10, 0x07, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/host_zone_test.go b/x/stakeibc/types/host_zone_test.go index a4c946e81b..1f1cc5445f 100644 --- a/x/stakeibc/types/host_zone_test.go +++ b/x/stakeibc/types/host_zone_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestHostZoneUnbondingFrequency(t *testing.T) { diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index 2bfc4be622..11c771870b 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -69,7 +69,7 @@ var fileDescriptor_2976ae6e7f6ce824 = []byte{ 0x01, 0x60, 0x85, 0xcc, 0x4e, 0x3e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x94, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0x76, 0x80, - 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0xa6, 0xfa, 0x15, 0x08, 0x57, 0x97, - 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x49, - 0x81, 0x70, 0x8a, 0xd5, 0x00, 0x00, 0x00, + 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0x66, 0xfa, 0x15, 0x08, 0x57, 0x97, + 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb1, + 0x6c, 0x27, 0x78, 0xd5, 0x00, 0x00, 0x00, } diff --git a/x/stakeibc/types/lsm_tx.pb.go b/x/stakeibc/types/lsm_tx.pb.go index bc974c965b..e6c3eb3a73 100644 --- a/x/stakeibc/types/lsm_tx.pb.go +++ b/x/stakeibc/types/lsm_tx.pb.go @@ -139,9 +139,9 @@ var fileDescriptor_34c3b474a863e424 = []byte{ 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0xb8, 0xa4, 0x28, 0x33, 0x25, 0x55, 0xd7, 0x27, 0x31, 0x09, 0x14, 0x49, - 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0xa9, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, - 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb1, - 0xb1, 0x79, 0x8c, 0xd1, 0x01, 0x00, 0x00, + 0x20, 0xb6, 0x7e, 0x99, 0xa1, 0x99, 0x7e, 0x05, 0x38, 0xc6, 0x52, 0x33, 0x93, 0x92, 0xf5, 0x4b, + 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x81, 0x6b, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x49, + 0x5c, 0x2e, 0x7e, 0xd1, 0x01, 0x00, 0x00, } func (m *MsgRedeemTokensForShares) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/message_add_validators.go b/x/stakeibc/types/message_add_validators.go index f2224a29f2..2fe0ff9de2 100644 --- a/x/stakeibc/types/message_add_validators.go +++ b/x/stakeibc/types/message_add_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgAddValidators = "add_validators" diff --git a/x/stakeibc/types/message_add_validators_test.go b/x/stakeibc/types/message_add_validators_test.go index e53d9321b7..cca87c603c 100644 --- a/x/stakeibc/types/message_add_validators_test.go +++ b/x/stakeibc/types/message_add_validators_test.go @@ -5,8 +5,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestMsgAddValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_calibrate_delegation.go b/x/stakeibc/types/message_calibrate_delegation.go index a1c160c831..d710290686 100644 --- a/x/stakeibc/types/message_calibrate_delegation.go +++ b/x/stakeibc/types/message_calibrate_delegation.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgCalibrateDelegation = "calibrate_delegation" diff --git a/x/stakeibc/types/message_change_validator_weight.go b/x/stakeibc/types/message_change_validator_weight.go index 083befb36c..478e58b6e5 100644 --- a/x/stakeibc/types/message_change_validator_weight.go +++ b/x/stakeibc/types/message_change_validator_weight.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgChangeValidatorWeight = "change_validator_weight" diff --git a/x/stakeibc/types/message_change_validator_weight_test.go b/x/stakeibc/types/message_change_validator_weight_test.go index f014dd347d..1e78ec251d 100644 --- a/x/stakeibc/types/message_change_validator_weight_test.go +++ b/x/stakeibc/types/message_change_validator_weight_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/testutil/sample" + "github.com/Stride-Labs/stride/v16/testutil/sample" ) func TestMsgChangeValidatorWeight_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_claim_undelegated_tokens.go b/x/stakeibc/types/message_claim_undelegated_tokens.go index b6dfb1e26d..c772ecc0d8 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgClaimUndelegatedTokens = "claim_undelegated_tokens" diff --git a/x/stakeibc/types/message_claim_undelegated_tokens_test.go b/x/stakeibc/types/message_claim_undelegated_tokens_test.go index 4ea076fcb6..98b477e514 100644 --- a/x/stakeibc/types/message_claim_undelegated_tokens_test.go +++ b/x/stakeibc/types/message_claim_undelegated_tokens_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/testutil/sample" + "github.com/Stride-Labs/stride/v16/testutil/sample" ) func TestMsgClaimUndelegatedTokens_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_clear_balance.go b/x/stakeibc/types/message_clear_balance.go index 412309405a..766be57289 100644 --- a/x/stakeibc/types/message_clear_balance.go +++ b/x/stakeibc/types/message_clear_balance.go @@ -8,7 +8,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgClearBalance = "clear_balance" diff --git a/x/stakeibc/types/message_delete_validator.go b/x/stakeibc/types/message_delete_validator.go index 2aba7afe1e..859c86c52c 100644 --- a/x/stakeibc/types/message_delete_validator.go +++ b/x/stakeibc/types/message_delete_validator.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgDeleteValidator = "delete_validator" diff --git a/x/stakeibc/types/message_delete_validator_test.go b/x/stakeibc/types/message_delete_validator_test.go index 9afe05b4e3..ded3b45038 100644 --- a/x/stakeibc/types/message_delete_validator_test.go +++ b/x/stakeibc/types/message_delete_validator_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/testutil/sample" + "github.com/Stride-Labs/stride/v16/testutil/sample" ) func TestMsgDeleteValidator_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_liquid_stake_test.go b/x/stakeibc/types/message_liquid_stake_test.go index 469cc8d24a..25b9468c18 100644 --- a/x/stakeibc/types/message_liquid_stake_test.go +++ b/x/stakeibc/types/message_liquid_stake_test.go @@ -7,7 +7,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/testutil/sample" + "github.com/Stride-Labs/stride/v16/testutil/sample" ) func TestMsgLiquidStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_lsm_liquid_stake_test.go b/x/stakeibc/types/message_lsm_liquid_stake_test.go index 26ed9230c2..74f1122c3c 100644 --- a/x/stakeibc/types/message_lsm_liquid_stake_test.go +++ b/x/stakeibc/types/message_lsm_liquid_stake_test.go @@ -7,8 +7,8 @@ import ( "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestMsgLSMLiquidStake(t *testing.T) { diff --git a/x/stakeibc/types/message_rebalance_validators.go b/x/stakeibc/types/message_rebalance_validators.go index b7c379dde4..9b537a39bb 100644 --- a/x/stakeibc/types/message_rebalance_validators.go +++ b/x/stakeibc/types/message_rebalance_validators.go @@ -7,7 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const ( diff --git a/x/stakeibc/types/message_rebalance_validators_test.go b/x/stakeibc/types/message_rebalance_validators_test.go index 680331bd00..4435a96b3d 100644 --- a/x/stakeibc/types/message_rebalance_validators_test.go +++ b/x/stakeibc/types/message_rebalance_validators_test.go @@ -6,8 +6,8 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/app/apptesting" - "github.com/Stride-Labs/stride/v15/x/stakeibc/types" + "github.com/Stride-Labs/stride/v16/app/apptesting" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) func TestMsgRebalanceValidators_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_redeem_stake_test.go b/x/stakeibc/types/message_redeem_stake_test.go index 7f477faf02..c01b44a8e5 100644 --- a/x/stakeibc/types/message_redeem_stake_test.go +++ b/x/stakeibc/types/message_redeem_stake_test.go @@ -8,7 +8,7 @@ import ( sdkmath "cosmossdk.io/math" - "github.com/Stride-Labs/stride/v15/testutil/sample" + "github.com/Stride-Labs/stride/v16/testutil/sample" ) func TestMsgRedeemStake_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index 548d6318ce..9005756f09 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -10,7 +10,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgRegisterHostZone = "register_host_zone" diff --git a/x/stakeibc/types/message_restore_interchain_account_test.go b/x/stakeibc/types/message_restore_interchain_account_test.go index 9144b0d4dd..c0e7577a78 100644 --- a/x/stakeibc/types/message_restore_interchain_account_test.go +++ b/x/stakeibc/types/message_restore_interchain_account_test.go @@ -6,7 +6,7 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/stretchr/testify/require" - "github.com/Stride-Labs/stride/v15/testutil/sample" + "github.com/Stride-Labs/stride/v16/testutil/sample" ) func TestMsgRestoreInterchainAccount_ValidateBasic(t *testing.T) { diff --git a/x/stakeibc/types/message_resume_host_zone.go b/x/stakeibc/types/message_resume_host_zone.go index 188a103144..2a56fcb8b9 100644 --- a/x/stakeibc/types/message_resume_host_zone.go +++ b/x/stakeibc/types/message_resume_host_zone.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgResumeHostZone = "resume_host_zone" diff --git a/x/stakeibc/types/message_undelegate_host.go b/x/stakeibc/types/message_undelegate_host.go index e1e2c8c328..9a85c72b46 100644 --- a/x/stakeibc/types/message_undelegate_host.go +++ b/x/stakeibc/types/message_undelegate_host.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgUndelegateHost = "undelegate_host" diff --git a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go index f3d21cbfb6..378a04b5db 100644 --- a/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go +++ b/x/stakeibc/types/message_update_inner_redemption_rate_bounds.go @@ -5,7 +5,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/Stride-Labs/stride/v15/utils" + "github.com/Stride-Labs/stride/v16/utils" ) const TypeMsgUpdateInnerRedemptionRateBounds = "update_inner_redemption_rate_bounds" diff --git a/x/stakeibc/types/packet.pb.go b/x/stakeibc/types/packet.pb.go index 50e0358b08..305cff6947 100644 --- a/x/stakeibc/types/packet.pb.go +++ b/x/stakeibc/types/packet.pb.go @@ -150,8 +150,8 @@ var fileDescriptor_a86fa6a12773333f = []byte{ 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0x19, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0x07, 0x83, 0x8d, 0xd6, 0xf5, 0x49, 0x4c, 0x2a, 0xd6, 0x87, 0xba, 0xbe, 0xcc, - 0xd0, 0x54, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, - 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x07, 0x96, 0x6f, 0x0e, 0xe3, 0x00, 0x00, 0x00, + 0xd0, 0x4c, 0xbf, 0x02, 0xe1, 0x87, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x1f, 0x8c, + 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0x7b, 0x38, 0xfc, 0xe3, 0x00, 0x00, 0x00, } func (m *StakeibcPacketData) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/params.pb.go b/x/stakeibc/types/params.pb.go index a484d95619..0d45a98117 100644 --- a/x/stakeibc/types/params.pb.go +++ b/x/stakeibc/types/params.pb.go @@ -191,7 +191,7 @@ var fileDescriptor_5aeaab6a38c2b438 = []byte{ // 552 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x41, 0x6f, 0xd3, 0x30, 0x1c, 0xc5, 0x5b, 0x88, 0x4a, 0xe7, 0x01, 0x4d, 0x33, 0x04, 0x51, 0x35, 0x52, 0x40, 0x42, 0x62, - 0x0c, 0x1a, 0x01, 0x42, 0x42, 0xec, 0x80, 0xb4, 0x69, 0x87, 0x55, 0x03, 0x95, 0xb6, 0x27, 0x2e, + 0x0c, 0x1a, 0x01, 0x12, 0x42, 0xec, 0x80, 0xb4, 0x69, 0x87, 0x55, 0x03, 0x95, 0xb6, 0x27, 0x2e, 0x96, 0x93, 0xfc, 0xdb, 0x5a, 0x4b, 0xe2, 0x60, 0xbb, 0xa5, 0xdb, 0xa7, 0xe0, 0xc8, 0x91, 0x8f, 0xc3, 0x71, 0xc7, 0x1d, 0x51, 0xfb, 0x45, 0x90, 0xed, 0x34, 0x6d, 0xd0, 0xe0, 0x56, 0xbd, 0xf7, 0xfb, 0xbf, 0x3c, 0xff, 0x5d, 0xa3, 0x5d, 0x21, 0x39, 0x8d, 0xc0, 0x17, 0x92, 0x9c, 0x01, 0x0d, @@ -223,7 +223,7 @@ var fileDescriptor_5aeaab6a38c2b438 = []byte{ 0x7a, 0x95, 0xab, 0xa5, 0x57, 0xf9, 0xf2, 0x7a, 0x4c, 0xe5, 0x64, 0x1a, 0x74, 0x42, 0x96, 0xf8, 0x03, 0xfd, 0xe7, 0x7c, 0x79, 0x4a, 0x02, 0xe1, 0xe7, 0x0f, 0x7a, 0xf6, 0xea, 0xad, 0x3f, 0x5f, 0x3f, 0x6b, 0x79, 0x9e, 0x81, 0x08, 0x6a, 0xfa, 0xbd, 0xbe, 0xf9, 0x13, 0x00, 0x00, 0xff, 0xff, - 0x81, 0xb2, 0x24, 0x81, 0xf6, 0x03, 0x00, 0x00, + 0x79, 0x5f, 0x73, 0x73, 0xf6, 0x03, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/stakeibc/types/query.pb.go b/x/stakeibc/types/query.pb.go index 4c7a5b86a0..e7ba7beffd 100644 --- a/x/stakeibc/types/query.pb.go +++ b/x/stakeibc/types/query.pb.go @@ -960,7 +960,7 @@ var fileDescriptor_494b786fe66f2b80 = []byte{ // 1158 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x97, 0xdd, 0x6e, 0x1b, 0x45, 0x1b, 0xc7, 0xb3, 0x4d, 0x9a, 0x8f, 0x27, 0x89, 0xf2, 0x76, 0xde, 0x88, 0x38, 0xdb, 0xc4, 0x21, - 0xd3, 0xd2, 0x7c, 0x90, 0x7a, 0x89, 0xd3, 0x22, 0x35, 0xa2, 0x82, 0x44, 0x6a, 0x1b, 0xa3, 0x80, + 0xd3, 0xd2, 0x7c, 0x90, 0x7a, 0x89, 0x53, 0x2a, 0x35, 0xa2, 0x82, 0x44, 0x6a, 0x1b, 0xa3, 0x80, 0x82, 0x0b, 0x15, 0x2a, 0x07, 0xd6, 0x78, 0x77, 0xb0, 0x57, 0x5d, 0xcf, 0xb8, 0xbb, 0xeb, 0x90, 0x10, 0x59, 0x95, 0xb8, 0x82, 0x0a, 0xc4, 0x09, 0x67, 0x45, 0x1c, 0x70, 0xcc, 0x55, 0xf4, 0x8c, 0x4a, 0x9c, 0x70, 0x14, 0xa1, 0x84, 0x2b, 0xa8, 0xb8, 0x00, 0xb4, 0x33, 0xb3, 0x6b, 0x7b, 0x3f, @@ -982,8 +982,8 @@ var fileDescriptor_494b786fe66f2b80 = []byte{ 0x10, 0x78, 0x4d, 0xce, 0x3c, 0x8a, 0x4c, 0xd0, 0xed, 0xc8, 0xae, 0x42, 0xa4, 0x61, 0x45, 0x6d, 0x4e, 0x72, 0xed, 0xbe, 0xf3, 0xfa, 0x74, 0x69, 0x59, 0x66, 0xce, 0xb6, 0xc5, 0xe5, 0x9c, 0x1d, 0x4f, 0xa8, 0x92, 0xe1, 0x59, 0x40, 0x82, 0xe8, 0x40, 0x1c, 0x9c, 0xda, 0x3d, 0xde, 0x87, 0xff, - 0xf7, 0xcc, 0x2a, 0xa2, 0xdb, 0x30, 0x2a, 0x0f, 0x58, 0x64, 0x9f, 0x2c, 0xce, 0x15, 0x62, 0x0d, - 0x57, 0x90, 0x0e, 0xbb, 0x23, 0x2f, 0x4f, 0x97, 0x86, 0xca, 0xca, 0x18, 0xbf, 0x0f, 0xf3, 0x22, + 0xf7, 0xcc, 0x2a, 0xa2, 0xf7, 0x61, 0x54, 0x1e, 0xb0, 0xc8, 0x3e, 0x59, 0x9c, 0x2b, 0xc4, 0x1a, + 0xae, 0x20, 0x1d, 0x76, 0x47, 0x5e, 0x9e, 0x2e, 0x0d, 0x95, 0x95, 0x31, 0xbe, 0x0d, 0xf3, 0x22, 0xda, 0x03, 0xea, 0x3f, 0x0a, 0x3b, 0x20, 0x2a, 0xf4, 0x3c, 0x8c, 0x4b, 0x68, 0xdb, 0x52, 0xb5, 0x1e, 0x13, 0xe3, 0x92, 0x85, 0xbf, 0x04, 0x3d, 0xcd, 0x4f, 0xc1, 0x6c, 0x03, 0x44, 0xfd, 0x14, 0x00, 0x0d, 0xaf, 0x4e, 0x16, 0xf5, 0x04, 0x50, 0xe4, 0x58, 0xee, 0xb2, 0xc6, 0xb7, 0x60, 0x2e, @@ -1029,8 +1029,8 @@ var fileDescriptor_494b786fe66f2b80 = []byte{ 0xe9, 0xda, 0xbb, 0xfb, 0x2f, 0xcf, 0xf2, 0xda, 0xab, 0xb3, 0xbc, 0xf6, 0xd7, 0x59, 0x5e, 0x7b, 0x7e, 0x9e, 0x1f, 0x7a, 0x75, 0x9e, 0x1f, 0xfa, 0xf3, 0x3c, 0x3f, 0xf4, 0xb8, 0x58, 0xb3, 0xfd, 0x7a, 0xab, 0x5a, 0x30, 0x79, 0x23, 0x2d, 0xec, 0xe1, 0xe6, 0x6d, 0xe3, 0xa8, 0x13, 0xdc, 0x3f, - 0x6e, 0x52, 0xaf, 0x3a, 0x2a, 0xfe, 0x59, 0x6d, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x10, 0x5d, - 0x70, 0xc6, 0x97, 0x0e, 0x00, 0x00, + 0x6e, 0x52, 0xaf, 0x3a, 0x2a, 0xfe, 0x59, 0x6d, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xe8, 0xb0, + 0x27, 0x34, 0x97, 0x0e, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index ac5c3e6e6f..04bb478e8c 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -1584,7 +1584,7 @@ var fileDescriptor_9b7e09c9ad51cd54 = []byte{ // 1512 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdc, 0xc4, 0x17, 0x8f, 0x9b, 0x34, 0x4d, 0x5f, 0x7e, 0x3b, 0x69, 0xea, 0x38, 0xdf, 0xee, 0xa6, 0xce, 0xf7, - 0xfb, 0x25, 0x94, 0x26, 0x51, 0x92, 0x22, 0x44, 0x81, 0x43, 0x36, 0x29, 0xea, 0x4a, 0x4d, 0x85, + 0xfb, 0x25, 0x94, 0x26, 0x51, 0x92, 0x0a, 0x44, 0x81, 0x43, 0x36, 0x29, 0xea, 0x4a, 0x4d, 0x85, 0x9c, 0x96, 0x4a, 0x95, 0x90, 0x99, 0xb5, 0xa7, 0x5e, 0xab, 0xf6, 0x78, 0xeb, 0xf1, 0xa6, 0x5b, 0x0e, 0x88, 0x0b, 0x12, 0x17, 0x24, 0x10, 0x12, 0x47, 0xd4, 0x03, 0x07, 0x24, 0x6e, 0xa8, 0x7f, 0x44, 0x25, 0x2e, 0x55, 0x4f, 0x88, 0xc3, 0x0a, 0xb5, 0x17, 0xce, 0xf9, 0x0b, 0xd0, 0x8c, 0xbd, @@ -1676,7 +1676,7 @@ var fileDescriptor_9b7e09c9ad51cd54 = []byte{ 0xd4, 0xf7, 0xec, 0x65, 0xa9, 0xef, 0x8f, 0x97, 0xa5, 0xbe, 0xbb, 0x6b, 0x99, 0xce, 0x61, 0x87, 0xef, 0xb7, 0x74, 0x03, 0xd5, 0xe8, 0x4a, 0xfa, 0x69, 0x74, 0x77, 0xf5, 0xdd, 0x95, 0x56, 0xe6, 0x73, 0x2b, 0xeb, 0x24, 0x6a, 0x83, 0xfc, 0x63, 0xe7, 0xfa, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, - 0xfc, 0x33, 0xdb, 0xaa, 0x8e, 0x15, 0x00, 0x00, + 0x04, 0xde, 0x8c, 0x58, 0x8e, 0x15, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/stakeibc/types/validator.pb.go b/x/stakeibc/types/validator.pb.go index 4c252c31ab..a13c2242c9 100644 --- a/x/stakeibc/types/validator.pb.go +++ b/x/stakeibc/types/validator.pb.go @@ -112,37 +112,37 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/validator.proto", fileDescriptor_5d2f32e16bd6ab8f) } var fileDescriptor_5d2f32e16bd6ab8f = []byte{ - // 474 bytes of a gzipped FileDescriptorProto + // 475 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xc1, 0x6e, 0xd3, 0x30, 0x18, 0xc7, 0x1b, 0x96, 0x75, 0xa9, 0x01, 0x51, 0x59, 0x65, 0x64, 0x03, 0xa5, 0x15, 0x07, 0xd4, - 0x4b, 0x13, 0x31, 0xb4, 0x1b, 0x17, 0xd6, 0x5d, 0x56, 0x4d, 0x08, 0xb2, 0x8a, 0x03, 0x97, 0xc8, - 0x75, 0x3e, 0x25, 0x56, 0x5a, 0xbb, 0xd8, 0xde, 0x60, 0x6f, 0xc1, 0x8d, 0x17, 0xd9, 0x43, 0xec, - 0x38, 0xed, 0x84, 0x38, 0x4c, 0xa8, 0x7d, 0x11, 0x14, 0x3b, 0x5d, 0x72, 0x65, 0xa7, 0xd8, 0x9f, - 0xff, 0xfe, 0xfd, 0xf3, 0xfd, 0x93, 0x0f, 0xf5, 0x95, 0x96, 0x2c, 0x85, 0x48, 0x69, 0x52, 0x00, - 0x9b, 0xd1, 0xe8, 0x82, 0xcc, 0x59, 0x4a, 0xb4, 0x90, 0xe1, 0x52, 0x0a, 0x2d, 0xf0, 0x33, 0x2b, - 0x08, 0x37, 0x82, 0xfd, 0x3d, 0x2a, 0xd4, 0x42, 0xa8, 0xc4, 0x1c, 0x47, 0x76, 0x63, 0xb5, 0xfb, - 0xbd, 0x4c, 0x64, 0xc2, 0xd6, 0xcb, 0x95, 0xad, 0xbe, 0xfe, 0xb5, 0x8d, 0x3a, 0x5f, 0x36, 0x54, - 0x8c, 0x91, 0xcb, 0xc9, 0x02, 0x7c, 0x67, 0xe0, 0x0c, 0x3b, 0xb1, 0x59, 0xe3, 0x03, 0xb4, 0x43, - 0xd2, 0x54, 0x82, 0x52, 0xfe, 0xa3, 0xb2, 0x7c, 0xe4, 0xdf, 0x5e, 0x8d, 0x7a, 0x15, 0xfa, 0x83, - 0x3d, 0x39, 0xd3, 0x92, 0xf1, 0x2c, 0xde, 0x08, 0xf1, 0x2e, 0x6a, 0x7f, 0x07, 0x96, 0xe5, 0xda, - 0x6f, 0x0f, 0x9c, 0xa1, 0x1b, 0x57, 0x3b, 0xfc, 0x11, 0xa1, 0x14, 0xe6, 0x90, 0x11, 0xcd, 0x04, - 0xf7, 0xb7, 0x0d, 0x2e, 0xbc, 0xbe, 0xeb, 0xb7, 0xfe, 0xdc, 0xf5, 0xdf, 0x64, 0x4c, 0xe7, 0xe7, - 0xb3, 0x90, 0x8a, 0x45, 0xf5, 0xe2, 0xd5, 0x63, 0xa4, 0xd2, 0x22, 0xd2, 0x97, 0x4b, 0x50, 0xe1, - 0x09, 0xd7, 0x71, 0x83, 0x80, 0x05, 0x7a, 0xa5, 0xe6, 0x44, 0xe5, 0xc9, 0xb7, 0x73, 0x90, 0x97, - 0x65, 0xd7, 0x59, 0xe9, 0x9f, 0x68, 0x49, 0x68, 0x01, 0xd2, 0xef, 0x3c, 0xc8, 0x61, 0xcf, 0x30, - 0x3f, 0x97, 0xc8, 0x4f, 0x15, 0x71, 0x6a, 0x81, 0x38, 0x45, 0xbb, 0x4d, 0x43, 0x9a, 0x03, 0x2d, - 0x96, 0x82, 0x71, 0xed, 0x3f, 0x79, 0x90, 0x55, 0xaf, 0xb6, 0x1a, 0xdf, 0xb3, 0xb0, 0x40, 0xcf, - 0x55, 0x4e, 0x24, 0xa8, 0x44, 0x8b, 0x44, 0x8b, 0x02, 0xb8, 0x4a, 0x24, 0xd1, 0xe0, 0x23, 0x63, - 0xf2, 0xfe, 0x3f, 0x4c, 0x8e, 0x81, 0xde, 0x5e, 0x8d, 0x50, 0xf5, 0xb9, 0x8e, 0x81, 0xc6, 0xd8, - 0xa2, 0xa7, 0x62, 0x6a, 0xc0, 0x31, 0xd1, 0x80, 0xc7, 0x28, 0xa8, 0x53, 0x4d, 0x68, 0x4e, 0x78, - 0x06, 0x2a, 0x61, 0xfc, 0x3e, 0x51, 0xff, 0xf1, 0xc0, 0x19, 0x6e, 0xc5, 0x2f, 0x6b, 0xd5, 0xd8, - 0x8a, 0x4e, 0xf8, 0x26, 0x22, 0x7c, 0x88, 0x5e, 0x34, 0xb3, 0x69, 0xde, 0x7e, 0x3a, 0x70, 0x86, - 0x5e, 0xb3, 0xd9, 0xfa, 0xda, 0xc4, 0xf5, 0xb6, 0xba, 0xee, 0xc4, 0xf5, 0xdc, 0xee, 0xf6, 0xc4, - 0xf5, 0x76, 0xba, 0xde, 0xc4, 0xf5, 0xbc, 0x6e, 0xe7, 0xe8, 0xf4, 0x7a, 0x15, 0x38, 0x37, 0xab, - 0xc0, 0xf9, 0xbb, 0x0a, 0x9c, 0x9f, 0xeb, 0xa0, 0x75, 0xb3, 0x0e, 0x5a, 0xbf, 0xd7, 0x41, 0xeb, - 0xeb, 0x41, 0xa3, 0xef, 0x33, 0x33, 0x00, 0xa3, 0x53, 0x32, 0x53, 0x51, 0x35, 0x2d, 0x17, 0x6f, - 0x0f, 0xa3, 0x1f, 0xf5, 0xcc, 0x98, 0x1c, 0x66, 0x6d, 0xf3, 0xbb, 0xbf, 0xfb, 0x17, 0x00, 0x00, - 0xff, 0xff, 0x61, 0x6b, 0x93, 0x06, 0x53, 0x03, 0x00, 0x00, + 0x4b, 0x13, 0x31, 0x04, 0x27, 0x2e, 0xac, 0xbb, 0xac, 0x9a, 0x10, 0x64, 0x15, 0x07, 0x2e, 0x91, + 0xeb, 0x7c, 0x4a, 0xac, 0xb4, 0x76, 0xb1, 0xbd, 0xc1, 0xde, 0x82, 0x1b, 0x2f, 0xb2, 0x87, 0xd8, + 0x71, 0xda, 0x09, 0x71, 0x98, 0x50, 0xfb, 0x22, 0x28, 0x76, 0xba, 0xe4, 0xca, 0x4e, 0xb1, 0x3f, + 0xff, 0xfd, 0xfb, 0xe7, 0xfb, 0x27, 0x1f, 0xea, 0x2b, 0x2d, 0x59, 0x0a, 0x91, 0xd2, 0xa4, 0x00, + 0x36, 0xa3, 0xd1, 0x39, 0x99, 0xb3, 0x94, 0x68, 0x21, 0xc3, 0xa5, 0x14, 0x5a, 0xe0, 0x27, 0x56, + 0x10, 0x6e, 0x04, 0xfb, 0x7b, 0x54, 0xa8, 0x85, 0x50, 0x89, 0x39, 0x8e, 0xec, 0xc6, 0x6a, 0xf7, + 0x7b, 0x99, 0xc8, 0x84, 0xad, 0x97, 0x2b, 0x5b, 0x7d, 0xf9, 0x6b, 0x1b, 0x75, 0xbe, 0x6c, 0xa8, + 0x18, 0x23, 0x97, 0x93, 0x05, 0xf8, 0xce, 0xc0, 0x19, 0x76, 0x62, 0xb3, 0xc6, 0x07, 0x68, 0x87, + 0xa4, 0xa9, 0x04, 0xa5, 0xfc, 0x07, 0x65, 0xf9, 0xd0, 0xbf, 0xb9, 0x1c, 0xf5, 0x2a, 0xf4, 0x07, + 0x7b, 0x72, 0xaa, 0x25, 0xe3, 0x59, 0xbc, 0x11, 0xe2, 0x5d, 0xd4, 0xfe, 0x0e, 0x2c, 0xcb, 0xb5, + 0xdf, 0x1e, 0x38, 0x43, 0x37, 0xae, 0x76, 0xf8, 0x23, 0x42, 0x29, 0xcc, 0x21, 0x23, 0x9a, 0x09, + 0xee, 0x6f, 0x1b, 0x5c, 0x78, 0x75, 0xdb, 0x6f, 0xfd, 0xb9, 0xed, 0xbf, 0xca, 0x98, 0xce, 0xcf, + 0x66, 0x21, 0x15, 0x8b, 0xea, 0xc5, 0xab, 0xc7, 0x48, 0xa5, 0x45, 0xa4, 0x2f, 0x96, 0xa0, 0xc2, + 0x63, 0xae, 0xe3, 0x06, 0x01, 0x0b, 0xf4, 0x42, 0xcd, 0x89, 0xca, 0x93, 0x6f, 0x67, 0x20, 0x2f, + 0xca, 0xae, 0xb3, 0xd2, 0x3f, 0xd1, 0x92, 0xd0, 0x02, 0xa4, 0xdf, 0xb9, 0x97, 0xc3, 0x9e, 0x61, + 0x7e, 0x2e, 0x91, 0x9f, 0x2a, 0xe2, 0xd4, 0x02, 0x71, 0x8a, 0x76, 0x9b, 0x86, 0x34, 0x07, 0x5a, + 0x2c, 0x05, 0xe3, 0xda, 0x7f, 0x74, 0x2f, 0xab, 0x5e, 0x6d, 0x35, 0xbe, 0x63, 0x61, 0x81, 0x9e, + 0xaa, 0x9c, 0x48, 0x50, 0x89, 0x16, 0x89, 0x16, 0x05, 0x70, 0x95, 0x48, 0xa2, 0xc1, 0x47, 0xc6, + 0xe4, 0xfd, 0x7f, 0x98, 0x1c, 0x01, 0xbd, 0xb9, 0x1c, 0xa1, 0xea, 0x73, 0x1d, 0x01, 0x8d, 0xb1, + 0x45, 0x4f, 0xc5, 0xd4, 0x80, 0x63, 0xa2, 0x01, 0x8f, 0x51, 0x50, 0xa7, 0x9a, 0xd0, 0x9c, 0xf0, + 0x0c, 0x54, 0xc2, 0xf8, 0x5d, 0xa2, 0xfe, 0xc3, 0x81, 0x33, 0xdc, 0x8a, 0x9f, 0xd7, 0xaa, 0xb1, + 0x15, 0x1d, 0xf3, 0x4d, 0x44, 0xf8, 0x2d, 0x7a, 0xd6, 0xcc, 0xa6, 0x79, 0xfb, 0xf1, 0xc0, 0x19, + 0x7a, 0xcd, 0x66, 0xeb, 0x6b, 0x13, 0xd7, 0xdb, 0xea, 0xba, 0x13, 0xd7, 0x73, 0xbb, 0xdb, 0x13, + 0xd7, 0xdb, 0xe9, 0x7a, 0x13, 0xd7, 0xf3, 0xba, 0x9d, 0xc3, 0x93, 0xab, 0x55, 0xe0, 0x5c, 0xaf, + 0x02, 0xe7, 0xef, 0x2a, 0x70, 0x7e, 0xae, 0x83, 0xd6, 0xf5, 0x3a, 0x68, 0xfd, 0x5e, 0x07, 0xad, + 0xaf, 0x07, 0x8d, 0xbe, 0x4f, 0xcd, 0x00, 0x8c, 0x4e, 0xc8, 0x4c, 0x45, 0xd5, 0xb4, 0x9c, 0xbf, + 0x7e, 0x17, 0xfd, 0xa8, 0x67, 0xc6, 0xe4, 0x30, 0x6b, 0x9b, 0xdf, 0xfd, 0xcd, 0xbf, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x99, 0x86, 0xc4, 0xf4, 0x53, 0x03, 0x00, 0x00, } func (m *Validator) Marshal() (dAtA []byte, err error) { From e0c02910e036f4f2894a96c5222aebacc3ce0a4a Mon Sep 17 00:00:00 2001 From: sampocs Date: Sat, 14 Oct 2023 19:24:36 -0500 Subject: [PATCH 42/44] v16 changelog (#954) --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64a3533c92..cd20839310 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [v16.0.0](https://github.com/Stride-Labs/stride/releases/tag/v16.0.0) - 2023-10-14 + +### On-Chain changes +1. Inflation Fix ([#951](https://github.com/Stride-Labs/stride/pull/951)) +2. v16 Import Paths ([#952](https://github.com/Stride-Labs/stride/pull/952)) + ## [v15.0.0](https://github.com/Stride-Labs/stride/releases/tag/v15.0.0) - 2023-09-18 ### On-Chain changes From e76a07fb1f4705c528282a4df8c3603fe056bb8f Mon Sep 17 00:00:00 2001 From: vuittont60 <81072379+vuittont60@users.noreply.github.com> Date: Thu, 2 Nov 2023 08:56:09 +0800 Subject: [PATCH 43/44] Fix some typos (#962) fix some typos in docs and comments. --- app/app.go | 2 +- app/upgrades/v14/upgrades.go | 2 +- app/upgrades/v15/upgrades_test.go | 2 +- app/upgrades/v16/upgrades_test.go | 2 +- dockernet/scripts/ratelimit/setup.sh | 2 +- dockernet/scripts/ratelimit/test_denoms.sh | 14 +++++++------- dockernet/tests/integration_tests.bats | 4 ++-- scripts/local-to-mainnet/README.md | 4 ++-- scripts/local-to-mainnet/commands.sh | 2 +- scripts/local-to-mainnet/templates/commands.sh | 2 +- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/app.go b/app/app.go index de1a2494b8..d42ca579e3 100644 --- a/app/app.go +++ b/app/app.go @@ -621,7 +621,7 @@ func NewStrideApp( app.AccountKeeper, app.BankKeeper, app.DistrKeeper, app.StakingKeeper, ) - // Register Gov (must be registerd after stakeibc) + // Register Gov (must be registered after stakeibc) govRouter := govtypesv1beta1.NewRouter() govRouter.AddRoute(govtypes.RouterKey, govtypesv1beta1.ProposalHandler). AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)). diff --git a/app/upgrades/v14/upgrades.go b/app/upgrades/v14/upgrades.go index 759a23b795..4ce082f90b 100644 --- a/app/upgrades/v14/upgrades.go +++ b/app/upgrades/v14/upgrades.go @@ -327,7 +327,7 @@ func MigrateAccount2(ctx sdk.Context, ak authkeeper.AccountKeeper) error { if account == nil { return nil } - // change the start_time to Sept 4, 2022. The ugprade goes live on or after Sept 4, 2023, so the first year vest is still enforced + // change the start_time to Sept 4, 2022. The upgrade goes live on or after Sept 4, 2023, so the first year vest is still enforced // (the account was previously set to start on Sept 4, 2023) account.(*vesting.ContinuousVestingAccount).StartTime = VestingStartTimeAccount2 // NOTE: we shouldn't have to update delegated_vesting on the BaseAccount. That's because, diff --git a/app/upgrades/v15/upgrades_test.go b/app/upgrades/v15/upgrades_test.go index f2d3731de2..d7fb16e358 100644 --- a/app/upgrades/v15/upgrades_test.go +++ b/app/upgrades/v15/upgrades_test.go @@ -38,7 +38,7 @@ type UpdateRedemptionRateBounds struct { func (s *UpgradeTestSuite) TestUpgrade() { dummyUpgradeHeight := int64(5) - // Setup the store before the ugprade + // Setup the store before the upgrade checkRedemptionRatesAfterUpgrade := s.SetupRedemptionRatesBeforeUpgrade() checkQueriesAfterUpgrade := s.SetupQueriesBeforeUpgrade() diff --git a/app/upgrades/v16/upgrades_test.go b/app/upgrades/v16/upgrades_test.go index 2a10d65777..b334fc58c0 100644 --- a/app/upgrades/v16/upgrades_test.go +++ b/app/upgrades/v16/upgrades_test.go @@ -31,7 +31,7 @@ func TestKeeperTestSuite(t *testing.T) { func (s *UpgradeTestSuite) TestUpgrade() { dummyUpgradeHeight := int64(5) - // Setup the store before the ugprade + // Setup the store before the upgrade checkCosmosHubAfterUpgrade := s.SetupHostZonesBeforeUpgrade() // Run the upgrade to set the bounds and clear pending queries diff --git a/dockernet/scripts/ratelimit/setup.sh b/dockernet/scripts/ratelimit/setup.sh index 52ec52e8e6..c805a62fa1 100644 --- a/dockernet/scripts/ratelimit/setup.sh +++ b/dockernet/scripts/ratelimit/setup.sh @@ -39,7 +39,7 @@ setup_channel_value() { print_header "INITIALIZING CHANNEL VALUE" # IBC Transfer - echo "Transfering for channel value..." + echo "Transferring for channel value..." echo ">>> uatom" $GAIA_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $(STRIDE_ADDRESS) ${INITIAL_CHANNEL_VALUE}uatom --from ${GAIA_VAL_PREFIX}1 -y | TRIM_TX sleep 3 diff --git a/dockernet/scripts/ratelimit/test_denoms.sh b/dockernet/scripts/ratelimit/test_denoms.sh index 8e4661eaaa..d7567e66ad 100644 --- a/dockernet/scripts/ratelimit/test_denoms.sh +++ b/dockernet/scripts/ratelimit/test_denoms.sh @@ -7,10 +7,10 @@ source ${CURRENT_DIR}/common.sh # 1. Send native # 2. Send non-native (one hop away) # 3. Send non-native (two hops away) -# 4. Recieve sink (one hop away) -# 5. Recieve sink (two hops away) +# 4. Receive sink (one hop away) +# 5. Receive sink (two hops away) # 6. Receive source native -# 7. Recieve source non-native +# 7. Receive source non-native # # For each case, we'll simply need to try the transfer and check if the flow updated, # if the flow didn't update along with expectations, that means either the denom or channel was wrong @@ -44,7 +44,7 @@ test_denom_ustrd() { ############################################## # ujuno from Juno to Stride, then back to Juno ############################################## -__test_denom_receive_packet_non_native() { # recieve sink (one hop) +__test_denom_receive_packet_non_native() { # receive sink (one hop) # ujuno sent from Juno to Stride # Expected Denom: ibc/EFF323CC632EC4F747C61BCE238A758EFDB7699C3226565F7C20DA06509D59A5 # Expected Channel: channel-1 @@ -78,7 +78,7 @@ __test_denom_send_packet_native_sttoken() { # send native check_transfer_status STRIDE OSMO channel-2 channel-2 10000000 stujuno stujuno true } -__test_denom_recieve_packet_native_sttoken() { # receive source native +__test_denom_receive_packet_native_sttoken() { # receive source native # stujuno sent from Osmosis to Stride # Expected Denom: stujuno # Expected Channel: channel-2 @@ -91,7 +91,7 @@ test_denom_sttoken() { wait_until_epoch_end __test_denom_send_packet_native_sttoken - __test_denom_recieve_packet_native_sttoken + __test_denom_receive_packet_native_sttoken } ######################################################################## @@ -122,7 +122,7 @@ __test_denom_send_packet_non_native_two_hops() { # send non-native (two hops) check_transfer_status STRIDE JUNO channel-1 channel-1 10000000 $traveler_juno_on_stride $traveler_juno_on_stride true } -__test_denom_receive_packet_source_non_native() { # recieve source non-native +__test_denom_receive_packet_source_non_native() { # receive source non-native # ujuno (through Osmosis, then Stride) sent from Juno to Stride # Expected Denom: ibc/CD369927BBCE5198E0DC0D1A341C2F1DE51B1228BFD0633430055A39F58D229C # (transfer/channel-2(juno)/transfer/channel-5(osmo)/ujuno) diff --git a/dockernet/tests/integration_tests.bats b/dockernet/tests/integration_tests.bats index 11d295a278..3b81f21a10 100644 --- a/dockernet/tests/integration_tests.bats +++ b/dockernet/tests/integration_tests.bats @@ -310,7 +310,7 @@ setup_file() { # check that the tokens were transferred to the sender account end_balance=$($HOST_MAIN_CMD q bank balances $HOST_RECEIVER_ADDRESS --denom $HOST_DENOM | GETBAL) - # check that the undelegated tokens were transfered to the sender account + # check that the undelegated tokens were transferred to the sender account diff_positive=$(($end_balance > $start_balance)) assert_equal "$diff_positive" "1" } @@ -331,7 +331,7 @@ setup_file() { $STRIDE_MAIN_CMD tx distribution withdraw-all-rewards --from ${STRIDE_VAL_PREFIX}2 -y WAIT_FOR_BLOCK $STRIDE_LOGS 2 - # confirm they've recieved stTokens + # confirm they've received stTokens sttoken_balance=$($STRIDE_MAIN_CMD q bank balances $val_address --denom st$HOST_DENOM | GETBAL) rewards_accumulated=$(($sttoken_balance > 0)) assert_equal "$rewards_accumulated" "1" diff --git a/scripts/local-to-mainnet/README.md b/scripts/local-to-mainnet/README.md index c939a7d5ca..1eb5ab9c05 100644 --- a/scripts/local-to-mainnet/README.md +++ b/scripts/local-to-mainnet/README.md @@ -3,7 +3,7 @@ * The fleet must be up and running for the host since we need the websocket endpoint ## Setup -* Ensure you have dockernet setup properly including all submodules up to date and the `STRIDE_ADMIN_MNEMONIC` enviornment variable set +* Ensure you have dockernet setup properly including all submodules up to date and the `STRIDE_ADMIN_MNEMONIC` environment variable set * Fund three hot wallets and set the mnemonics as environment variables (`HOT_WALLET_1_MNEMONIC`, `HOT_WALLET_2_MNEMONIC`, `HOT_WALLET_3_MNEMONIC`) * They all must have a non-zero balance on the host * Wallet #1 should have enough to fund each liquid stake (~5 native token per attempt) @@ -23,4 +23,4 @@ make start-local-to-main ## Walk through Flow * Step through the commands in `local-to-mainnet/commands.sh` one by one and copy them into the terminal -* In the future, we can automate this more but since this interacts with mainnet, I think it's safer to run these manually for now \ No newline at end of file +* In the future, we can automate this more but since this interacts with mainnet, I think it's safer to run these manually for now diff --git a/scripts/local-to-mainnet/commands.sh b/scripts/local-to-mainnet/commands.sh index 27d0dac8a3..99c712b7b2 100644 --- a/scripts/local-to-mainnet/commands.sh +++ b/scripts/local-to-mainnet/commands.sh @@ -40,7 +40,7 @@ docker-compose -f scripts/local-to-mainnet/docker-compose.yml logs -f relayer | # IBC Transfer from HOST to stride (from relayer account) build/gaiad tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000uatom --from hot --chain-id cosmoshub-4 -y --keyring-backend test --node http://HOST_ENDPOINT:26657 --fees 150000uatom -# Confirm funds were recieved on stride and get IBC denom +# Confirm funds were received on stride and get IBC denom build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 # Register host zone diff --git a/scripts/local-to-mainnet/templates/commands.sh b/scripts/local-to-mainnet/templates/commands.sh index 265c48e8ac..9cb0df5e80 100644 --- a/scripts/local-to-mainnet/templates/commands.sh +++ b/scripts/local-to-mainnet/templates/commands.sh @@ -36,7 +36,7 @@ DOCKER_COMPOSE logs -f relayer | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[ # IBC Transfer from HOST to stride (from relayer account) HOST_BINARY tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000HOST_DENOM --from hot --chain-id HOST_CHAIN_ID -y --keyring-backend test --node http://HOST_ENDPOINT:26657 --fees 150000HOST_DENOM -# Confirm funds were recieved on stride and get IBC denom +# Confirm funds were received on stride and get IBC denom build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 # Register host zone From aa3ad92a26df58f074042dc943d61ec09ec356ff Mon Sep 17 00:00:00 2001 From: ethan-stride <126913021+ethan-stride@users.noreply.github.com> Date: Wed, 15 Nov 2023 19:50:15 -0700 Subject: [PATCH 44/44] Community Pool Liquid Staking - Phase 1/3 - Liquid Stake and Redeem (#926) Co-authored-by: sampocs Co-authored-by: sampocs --- .gitmodules | 9 + deps/dydx | 1 + deps/noble | 1 + dockernet/README.md | 38 +- dockernet/build.sh | 6 +- dockernet/config.sh | 128 ++++- dockernet/config/ica_host.json | 1 + .../config/relayer_config_dydx_noble.yaml | 76 +++ dockernet/config/relayer_config_ics.yaml | 4 +- ...config.yaml => relayer_config_stride.yaml} | 23 + dockernet/docker-compose.yml | 86 ++++ dockernet/dockerfiles/Dockerfile.dydx | 26 ++ dockernet/dockerfiles/Dockerfile.noble | 26 ++ dockernet/scripts/3.sh | 2 +- dockernet/scripts/4.sh | 2 +- .../scripts/community-pool-staking/README.md | 47 ++ .../scripts/community-pool-staking/claim.sh | 21 + .../community-pool-staking/create_pool.sh | 64 +++ .../scripts/community-pool-staking/redeem.sh | 20 + .../community-pool-staking/reinvest.sh | 8 + .../community-pool-staking/setup_relayers.sh | 54 +++ .../scripts/community-pool-staking/stake.sh | 7 + .../community-pool-staking/stake_proposal.sh | 55 +++ .../stake_proposal_legacy.sh | 43 ++ dockernet/scripts/ratelimit/setup.sh | 2 +- dockernet/src/create_logs.sh | 49 +- dockernet/src/init_chain.sh | 74 ++- dockernet/src/register_host.sh | 2 +- dockernet/src/start_chain.sh | 6 +- dockernet/src/start_relayers.sh | 5 +- dockernet/start_network.sh | 8 +- dockernet/tests/integration_tests.bats | 4 +- dockernet/upgrades/setup_ics.sh | 2 +- proto/stride/stakeibc/callbacks.proto | 8 +- proto/stride/stakeibc/host_zone.proto | 8 + proto/stride/stakeibc/ica_account.proto | 2 + proto/stride/stakeibc/tx.proto | 8 +- utils/utils.go | 3 +- x/stakeibc/ibc_middleware.go | 74 ++- x/stakeibc/keeper/community_pool.go | 262 +++++++++++ x/stakeibc/keeper/community_pool_test.go | 440 ++++++++++++++++++ x/stakeibc/keeper/hooks.go | 3 + x/stakeibc/keeper/icqcallbacks.go | 14 +- ...icqcallbacks_community_pool_ica_balance.go | 87 ++++ x/stakeibc/keeper/keeper_test.go | 2 +- x/stakeibc/keeper/lsm_test.go | 2 +- x/stakeibc/keeper/msg_server_liquid_stake.go | 2 +- .../keeper/msg_server_register_host_zone.go | 38 +- x/stakeibc/keeper/reward_allocation.go | 1 + x/stakeibc/keeper/transfer.go | 146 ++++++ x/stakeibc/keeper/transfer_test.go | 249 ++++++++++ x/stakeibc/types/callbacks.pb.go | 318 ++++++++++--- x/stakeibc/types/errors.go | 3 +- x/stakeibc/types/host_zone.go | 23 +- x/stakeibc/types/host_zone.pb.go | 347 +++++++++++--- x/stakeibc/types/ica_account.pb.go | 47 +- .../types/message_register_host_zone.go | 6 - x/stakeibc/types/tx.pb.go | 250 ++++++---- 58 files changed, 2896 insertions(+), 347 deletions(-) create mode 160000 deps/dydx create mode 160000 deps/noble create mode 100644 dockernet/config/relayer_config_dydx_noble.yaml rename dockernet/config/{relayer_config.yaml => relayer_config_stride.yaml} (89%) create mode 100644 dockernet/dockerfiles/Dockerfile.dydx create mode 100644 dockernet/dockerfiles/Dockerfile.noble create mode 100644 dockernet/scripts/community-pool-staking/README.md create mode 100644 dockernet/scripts/community-pool-staking/claim.sh create mode 100644 dockernet/scripts/community-pool-staking/create_pool.sh create mode 100644 dockernet/scripts/community-pool-staking/redeem.sh create mode 100644 dockernet/scripts/community-pool-staking/reinvest.sh create mode 100644 dockernet/scripts/community-pool-staking/setup_relayers.sh create mode 100644 dockernet/scripts/community-pool-staking/stake.sh create mode 100644 dockernet/scripts/community-pool-staking/stake_proposal.sh create mode 100644 dockernet/scripts/community-pool-staking/stake_proposal_legacy.sh mode change 100755 => 100644 proto/stride/stakeibc/ica_account.proto create mode 100644 x/stakeibc/keeper/community_pool.go create mode 100644 x/stakeibc/keeper/community_pool_test.go create mode 100644 x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go create mode 100644 x/stakeibc/keeper/transfer.go create mode 100644 x/stakeibc/keeper/transfer_test.go diff --git a/.gitmodules b/.gitmodules index 38b71aed30..ac88c34b0e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -29,6 +29,15 @@ # Commit: ec337e0357ae6b6727ad9092ac0ce3667df91319 path = deps/evmos url = https://github.com/evmos/evmos +[submodule "deps/dydx"] + # TODO [DYDX]: Switch to official dydxprotocol release after ICA PR is merged + # Commit: fafd3a9e2083180d7f7809f5080897e714e52bec + path = deps/dydx + url = https://github.com/Stride-Labs/v4-chain.git +[submodule "deps/noble"] + # Commit: v3.1.0 + path = deps/noble + url = https://github.com/strangelove-ventures/noble.git # bats [submodule "dockernet/tests/bats/bats-core"] path = dockernet/tests/bats/bats-core diff --git a/deps/dydx b/deps/dydx new file mode 160000 index 0000000000..fafd3a9e20 --- /dev/null +++ b/deps/dydx @@ -0,0 +1 @@ +Subproject commit fafd3a9e2083180d7f7809f5080897e714e52bec diff --git a/deps/noble b/deps/noble new file mode 160000 index 0000000000..d145036dff --- /dev/null +++ b/deps/noble @@ -0,0 +1 @@ +Subproject commit d145036dff4677e214de89412738bade5fdbe245 diff --git a/dockernet/README.md b/dockernet/README.md index acf1abf338..37c9c5534f 100644 --- a/dockernet/README.md +++ b/dockernet/README.md @@ -3,23 +3,28 @@ ## Dockernet ### Adding a new host zone * Create a new dockerfile to `dockernet/dockerfiles` (named `Dockerfile.{new-host-zone}`). Use one of the other host zone's dockerfile's as a starting port to provide the certain boilerplate such as the package installs, adding user, exposing ports, etc. You can often find a dockerfile in the github directory of the host zone. In the dockerfile, set `COMMIT_HASH` to the current mainnet commit hash of the chain being tested (or the target commit hash, if we're launching the zone in the future after an upgrade). For newer chains, create a branch and a pull-request, but *do not* merge it (we don't maintain test versions of each chain). -* Add the repo as a submodule -``` +* Add the repo as a submodule(e.g. https://github.com/dydxprotocol/v4-chain.git) +```bash +# run from the top level stride repo git submodule add {repo-url} deps/{new-host-zone} ``` * Update the commit hash -``` +```bash cd deps/{new-host-zone} git checkout {commit-hash} cd .. ``` * Add a comment to `.gitmodules` with the commit hash -* Add the build command for that host zone in `dockernet/build.sh`. For most zones, we use the first letter of the zone, for the new zone, just use `n` (since it won't be merged in, it won't conflict with anything). +* Add the build command for that host zone in `dockernet/build.sh`. For most zones, we use the first letter of the zone, for the new zone, just use `z` (since it won't be merged in, it won't conflict with anything). ``` -while getopts sgojhir{n} flag; do +while getopts sgojhir{z} flag; do case "${flag}" in ... - n) build_local_and_docker {new-host-zone} deps/{new-host-zone} ;; + z) build_local_and_docker {new-host-zone} deps/{new-host-zone} ;; +``` +* Before moving on, test that you can build the binary and docker iamge by running +```bash +make build-docker build={z} ``` * Add the host zone and relayer to `dockernet/docker-compose.yml`. Add 5 nodes, adding port forwarding to the first node only. Add the relayer. Drop the RPC port number by 100, and the API/gRPC port by 10, relative to the last host zone that was added. ``` @@ -44,12 +49,12 @@ while getopts sgojhir{n} flag; do volumes: - ./dockernet/state/{new-host-zone}5:/home/{new-host-zone}/.{new-host-zone}d ... - relayer-{chain_id}: + relayer-{chain}: image: stridezone:relayer volumes: - - ./state/relayer-{chain_id}:/home/relayer/.relayer + - ./state/relayer-{chain}:/home/relayer/.relayer restart: always - command: [ "bash", "start.sh", "stride-{chain_id}" ] + command: [ "bash", "start.sh", "stride-{chain}" ] ``` * Add the following parameters to `dockernet/config.sh`, where `CHAIN` is the ID of the new host zone. For the relayer, you can use the mnemonic below or create your own. Note: you'll have to add the variables in the right places in `dockernet/config.sh`, as noted below. ``` @@ -80,13 +85,16 @@ ST{CHAIN}_DENOM="st{min_denom}" RELAYER_{CHAIN}_EXEC="docker-compose run --rm relayer-{new-host-zone}" RELAYER_{CHAIN}_ACCT=rly{add one since the account from the last host zone} -# NOTE: Update the RELAYER_ACCTS variable directly! -RELAYER_ACCTS=(... $RELAYER_{CHAIN}_ACCT) +# NOTE: Update the STRIDE_RELAYER_ACCTS variable directly! +STRIDE_RELAYER_ACCTS=( + ... + $RELAYER_{CHAIN}_ACCT +) # stride1muwz5er4wq7svxnh5dgn2tssm92je5dwthxl7q RELAYER_{CHAIN}_MNEMONIC="science depart where tell bus ski laptop follow child bronze rebel recall brief plug razor ship degree labor human series today embody fury harvest" -# NOTE: Update the RELAYER_MNEMONICS variable directly! -RELAYER_MNEMONICS=( +# NOTE: Update the STRIDE_RELAYER_MNEMONICS variable directly! +STRIDE_RELAYER_MNEMONICS=( ... "$RELAYER_{CHAIN}_MNEMONIC" ) @@ -97,8 +105,8 @@ ${CHAIN_ID}_ADDRESS() { } ``` -* Add the IBC denom's for the host zone across each channel to `dockernet/config.sh` (e.g. `IBC_{HOST}_CHANNEL_{N}_DENOM)`). You can generate the variables by uncommenting `x/stakeibc/keeper/get_denom_traces_test.go`, specifying the ChainID and denom, and running `make test-unit`. Add the output to `dockernet/config.sh`. Note: You have to run the test using the "run test" button in VSCode, or pass in the `-v` flag and run the tests using `go test -mod=readonly ./x/stakeibc/...`, for the output to show up. -* Add a section to the `dockernet/config/relayer_config.yaml`. Most chains will use either the cosmos coin type (118) or eth coin type (60). If a new coin type is used, add it to the top of `config.sh` for future reference. +* Add the IBC denoms for the host zone across each channel to `dockernet/config.sh` (e.g. `IBC_{HOST}_CHANNEL_{N}_DENOM)`). You can generate the variables by uncommenting `x/stakeibc/keeper/get_denom_traces_test.go`, specifying the ChainID and denom, and running `make test-unit`. Add the output to `dockernet/config.sh`. Note: You have to run the test using the "run test" button in VSCode, or pass in the `-v` flag and run the tests using `go test -mod=readonly ./x/stakeibc/...`, for the output to show up. +* Add a section to the `dockernet/config/relayer_config_stride.yaml`. Most chains will use either the cosmos coin type (118) or eth coin type (60). If a new coin type is used, add it to the top of `config.sh` for future reference. ``` chains: ... diff --git a/dockernet/build.sh b/dockernet/build.sh index a9a038601e..6b898142db 100755 --- a/dockernet/build.sh +++ b/dockernet/build.sh @@ -83,7 +83,7 @@ revert_admin_address() { # build docker images and local binaries -while getopts sgojtehrn flag; do +while getopts sgojtednhrz flag; do case "${flag}" in # For stride, we need to update the admin address to one that we have the seed phrase for s) replace_admin_address @@ -99,7 +99,9 @@ while getopts sgojtehrn flag; do o) build_local_and_docker osmo deps/osmosis ;; t) build_local_and_docker stars deps/stargaze ;; e) build_local_and_docker evmos deps/evmos ;; - n) continue ;; # build_local_and_docker {new-host-zone} deps/{new-host-zone} ;; + d) build_local_and_docker dydx deps/dydx/protocol ;; + n) build_local_and_docker noble deps/noble ;; + z) continue ;; # build_local_and_docker {new-host-zone} deps/{new-host-zone} ;; r) build_local_and_docker relayer deps/relayer ;; h) echo "Building Hermes Docker... "; docker build --tag stridezone:hermes -f dockernet/dockerfiles/Dockerfile.hermes . ; diff --git a/dockernet/config.sh b/dockernet/config.sh index 7319159964..286eb15e2a 100755 --- a/dockernet/config.sh +++ b/dockernet/config.sh @@ -16,7 +16,9 @@ TX_LOGS=$DOCKERNET_HOME/logs/tx.log KEYS_LOGS=$DOCKERNET_HOME/logs/keys.log # List of hosts enabled -HOST_CHAINS=() +# HOST_CHAINS have liquid staking support, ACCESSORY_CHAINS do not +HOST_CHAINS=() +ACCESSORY_CHAINS=() # If no host zones are specified above: # `start-docker` defaults to just GAIA if HOST_CHAINS is empty @@ -28,6 +30,8 @@ HOST_CHAINS=() # - STARS # - EVMOS # - HOST (Stride chain enabled as a host zone) +# - DYDX +# - NOBLE (only runs as an accessory chain - does not have liquid staking functionality) if [[ "${ALL_HOST_CHAINS:-false}" == "true" ]]; then HOST_CHAINS=(GAIA EVMOS HOST) elif [[ "${#HOST_CHAINS[@]}" == "0" ]]; then @@ -42,12 +46,16 @@ OSMO_DENOM="uosmo" STARS_DENOM="ustars" WALK_DENOM="uwalk" EVMOS_DENOM="aevmos" +DYDX_DENOM="udydx" +NOBLE_DENOM="utoken" +USDC_DENOM="uusdc" STATOM_DENOM="stuatom" STJUNO_DENOM="stujuno" STOSMO_DENOM="stuosmo" STSTARS_DENOM="stustars" STWALK_DENOM="stuwalk" STEVMOS_DENOM="staevmos" +STDYDX_DENOM="studydx" IBC_STRD_DENOM='ibc/FF6C2E86490C1C4FBBD24F55032831D2415B9D7882F85C3CC9C2401D79362BEA' @@ -81,6 +89,11 @@ IBC_HOST_CHANNEL_1_DENOM='ibc/FB7E2520A1ED6890E1632904A4ACA1B3D2883388F8E2B88F2D IBC_HOST_CHANNEL_2_DENOM='ibc/D664DC1D38648FC4C697D9E9CF2D26369318DFE668B31F81809383A8A88CFCF4' IBC_HOST_CHANNEL_3_DENOM='ibc/FD7AA7EB2C1D5D97A8693CCD71FFE3F5AFF12DB6756066E11E69873DE91A33EA' +IBC_DYDX_CHANNEL_0_DENOM='ibc/815D14313C85CADBDFCEB13C8028DB853BE16CF6600D6B3A90ECFB7DCF1FAAF9' +IBC_DYDX_CHANNEL_1_DENOM='ibc/78B7A771A2ECBF5D10DC6AB35568A7AC4161DB21B3A848DA470655358A6DD854' +IBC_DYDX_CHANNEL_2_DENOM='ibc/748465E0D883217048DB25F4C3825D03F682A06FE292E21072BF678E249DAC18' +IBC_DYDX_CHANNEL_3_DENOM='ibc/6301148031C0AC9A392C2DDB1B2D1F11B3B9D0A3ECF20C6B5122685D9E4CC631' + # COIN TYPES # Coin types can be found at https://github.com/satoshilabs/slips/blob/master/slip-0044.md COSMOS_COIN_TYPE=118 @@ -241,6 +254,36 @@ EVMOS_MAIN_CMD="$EVMOS_BINARY --home $DOCKERNET_HOME/state/${EVMOS_NODE_PREFIX}1 EVMOS_RECEIVER_ADDRESS='evmos123z469cfejeusvk87ufrs5520wmdxmmlc7qzuw' EVMOS_MICRO_DENOM_UNITS="000000000000000000000000" +# DYDX +DYDX_CHAIN_ID=DYDX +DYDX_NODE_PREFIX=dydx +DYDX_NUM_NODES=1 +DYDX_BINARY="$DOCKERNET_HOME/../build/dydxprotocold" +DYDX_VAL_PREFIX=val +DYDX_ADDRESS_PREFIX=dydx +DYDX_REV_ACCT=rev +DYDX_DENOM=$DYDX_DENOM +DYDX_RPC_PORT=25957 +DYDX_MAIN_CMD="$DYDX_BINARY --home $DOCKERNET_HOME/state/${DYDX_NODE_PREFIX}1" +DYDX_RECEIVER_ADDRESS='dydx1q9caajs6wrfu2yhytvkqd2csxycx6revdcme9y' +# The micro denom is actually the same as default cosmos chains but there's a +# minimum stake amount so this effectively gets the validator over the minimum +DYDX_MICRO_DENOM_UNITS="000000000000000" + +# NOBLE +NOBLE_CHAIN_ID=NOBLE +NOBLE_NODE_PREFIX=noble +NOBLE_NUM_NODES=1 +NOBLE_BINARY="$DOCKERNET_HOME/../build/nobled" +NOBLE_VAL_PREFIX=val +NOBLE_ADDRESS_PREFIX=noble +NOBLE_REV_ACCT=rev +NOBLE_DENOM=$NOBLE_DENOM +NOBLE_RPC_PORT=25857 +NOBLE_MAIN_CMD="$NOBLE_BINARY --home $DOCKERNET_HOME/state/${NOBLE_NODE_PREFIX}1" +NOBLE_RECEIVER_ADDRESS='noble1dd9sxkz3wr723lsf65h549ykdh4npxzh5qawmg' +NOBLE_AUTHORITHY_MNEMONIC="giant screen unit high agree swing impact switch lend universe sand myself conduct sustain august barely misery lawsuit honey social version window demise palace" + # RELAYER RELAYER_GAIA_EXEC="$DOCKER_COMPOSE run --rm relayer-gaia" RELAYER_GAIA_ICS_EXEC="$DOCKER_COMPOSE run --rm relayer-gaia-ics" @@ -249,7 +292,10 @@ RELAYER_OSMO_EXEC="$DOCKER_COMPOSE run --rm relayer-osmo" RELAYER_STARS_EXEC="$DOCKER_COMPOSE run --rm relayer-stars" RELAYER_HOST_EXEC="$DOCKER_COMPOSE run --rm relayer-host" RELAYER_EVMOS_EXEC="$DOCKER_COMPOSE run --rm relayer-evmos" +RELAYER_DYDX_EXEC="$DOCKER_COMPOSE run --rm relayer-dydx" +RELAYER_NOBLE_EXEC="$DOCKER_COMPOSE run --rm relayer-noble" +# Accounts for relay paths with stride RELAYER_STRIDE_ACCT=rly1 RELAYER_GAIA_ACCT=rly2 RELAYER_JUNO_ACCT=rly3 @@ -257,9 +303,10 @@ RELAYER_OSMO_ACCT=rly4 RELAYER_STARS_ACCT=rly5 RELAYER_HOST_ACCT=rly6 RELAYER_EVMOS_ACCT=rly7 -RELAYER_STRIDE_ICS_ACCT=rly11 -RELAYER_GAIA_ICS_ACCT=rly12 -RELAYER_ACCTS=( +RELAYER_STRIDE_ICS_ACCT=rly8 +RELAYER_GAIA_ICS_ACCT=rly9 +RELAYER_DYDX_ACCT=rly10 +STRIDE_RELAYER_ACCTS=( $RELAYER_GAIA_ACCT $RELAYER_JUNO_ACCT $RELAYER_OSMO_ACCT @@ -267,8 +314,10 @@ RELAYER_ACCTS=( $RELAYER_HOST_ACCT $RELAYER_EVMOS_ACCT $RELAYER_GAIA_ICS_ACCT + $RELAYER_DYDX_ACCT ) +# Mnemonics for connections with stride RELAYER_GAIA_MNEMONIC="fiction perfect rapid steel bundle giant blade grain eagle wing cannon fever must humble dance kitchen lazy episode museum faith off notable rate flavor" RELAYER_JUNO_MNEMONIC="kiwi betray topple van vapor flag decorate cement crystal fee family clown cry story gain frost strong year blanket remain grass pig hen empower" RELAYER_OSMO_MNEMONIC="unaware wine ramp february bring trust leaf beyond fever inside option dilemma save know captain endless salute radio humble chicken property culture foil taxi" @@ -276,7 +325,8 @@ RELAYER_STARS_MNEMONIC="deposit dawn erosion talent old broom flip recipe pill h RELAYER_HOST_MNEMONIC="renew umbrella teach spoon have razor knee sock divert inner nut between immense library inhale dog truly return run remain dune virus diamond clinic" RELAYER_GAIA_ICS_MNEMONIC="size chimney clog job robot thunder gaze vapor economy smooth kit denial alter merit produce front force eager outside mansion believe fan tonight detect" RELAYER_EVMOS_MNEMONIC="science depart where tell bus ski laptop follow child bronze rebel recall brief plug razor ship degree labor human series today embody fury harvest" -RELAYER_MNEMONICS=( +RELAYER_DYDX_MNEMONIC="mother depth nature rapid draw west afraid depend allow fee siren useful catalog sun biology cabbage busy science front smile nurse balcony medal burst" +STRIDE_RELAYER_MNEMONICS=( "$RELAYER_GAIA_MNEMONIC" "$RELAYER_JUNO_MNEMONIC" "$RELAYER_OSMO_MNEMONIC" @@ -284,7 +334,16 @@ RELAYER_MNEMONICS=( "$RELAYER_HOST_MNEMONIC" "$RELAYER_EVMOS_MNEMONIC" "$RELAYER_GAIA_ICS_MNEMONIC" + "$RELAYER_DYDX_MNEMONIC" ) +# Mnemonics for connections between two non-stride chains +RELAYER_NOBLE_DYDX_MNEMONIC="sentence fruit crumble sail bar knife exact flame apart prosper hint myth clean among tiny burden depart purity select envelope identify cross physical emerge" +RELAYER_DYDX_NOBLE_MNEMONIC="aerobic breeze claw climb bounce morning tank victory eight funny employ bracket hire reduce fine flee lava domain warfare loop theme fly tattoo must" +RELAYER_NOBLE_OSMO_MNEMONIC="actual field visual wage orbit add human unit happy rich evil chair entire person february cactus deputy impact gasp elbow sunset brand possible fly" +RELAYER_OSMO_NOBLE_MNEMONIC="obey clinic miss grunt inflict laugh sell moral kitchen tumble gold song flavor rather horn exhaust state amazing poverty differ approve spike village device" +RELAYER_DYDX_OSMO_MNEMONIC="small fire step promote fox reward book seek arctic session illegal loyal because brass spoil minute wonder jazz shoe price muffin churn evil monitor" +RELAYER_OSMO_DYDX_MNEMONIC="risk wool reason sweet current strategy female miracle squeeze that wire develop ocean rapid domain lift blame monkey sick round museum item maze trumpet" + STRIDE_ADDRESS() { # After an upgrade, the keys query can sometimes print migration info, @@ -309,6 +368,12 @@ HOST_ADDRESS() { EVMOS_ADDRESS() { $EVMOS_MAIN_CMD keys show ${EVMOS_VAL_PREFIX}1 --keyring-backend test -a } +DYDX_ADDRESS() { + $DYDX_MAIN_CMD keys show ${DYDX_VAL_PREFIX}1 --keyring-backend test -a +} +NOBLE_ADDRESS() { + $NOBLE_MAIN_CMD keys show ${NOBLE_VAL_PREFIX}1 --keyring-backend test -a +} CSLEEP() { for i in $(seq $1); do @@ -322,6 +387,12 @@ GET_VAR_VALUE() { echo "${!var_name}" } +SAVE_DOCKER_LOGS() { + service_name=$1 + log_path=$2 + $DOCKER_COMPOSE logs -f $service_name | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $log_path 2>&1 & +} + WAIT_FOR_BLOCK() { num_blocks="${2:-1}" for i in $(seq $num_blocks); do @@ -393,11 +464,52 @@ GET_ICA_ADDR() { $STRIDE_MAIN_CMD q stakeibc show-host-zone $chain_id | grep ${ica_type}_ica_address | awk '{print $2}' } +GET_HOST_ZONE_FIELD() { + chain_id="$1" + field="$2" + + $STRIDE_MAIN_CMD q stakeibc show-host-zone $chain_id | grep $field | awk '{print $2}' +} + GET_IBC_DENOM() { - transfer_channel_id="$1" - base_denom="$2" + chain="$1" + transfer_channel_id="$2" + base_denom="$3" + + main_cmd=$(GET_VAR_VALUE ${chain}_MAIN_CMD) + echo "ibc/$($main_cmd q ibc-transfer denom-hash transfer/${transfer_channel_id}/${base_denom} | awk '{print $2}')" +} + +GET_CLIENT_ID_FROM_CHAIN_ID() { + src_chain="$1" + counterparty_chain_id="$2" + + main_cmd=$(GET_VAR_VALUE ${src_chain}_MAIN_CMD) + $main_cmd q ibc client states | grep $counterparty_chain_id -B 6 | grep client_id | awk '{print $3}' +} + +GET_CONNECTION_ID_FROM_CLIENT_ID() { + src_chain="$1" + client_id="$2" + + main_cmd=$(GET_VAR_VALUE ${src_chain}_MAIN_CMD) + $main_cmd q ibc connection path $client_id | grep connection- | awk '{print $2}' +} + +GET_TRANSFER_CHANNEL_ID_FROM_CONNECTION_ID() { + src_chain="$1" + connection_id="$2" + + main_cmd=$(GET_VAR_VALUE ${src_chain}_MAIN_CMD) + $main_cmd q ibc channel connections $connection_id | grep -m 1 "channel_id" | awk '{print $3}' +} + +GET_COUNTERPARTY_TRANSFER_CHANNEL_ID() { + src_chain="$1" + channel_id="$2" - echo "ibc/$($STRIDE_MAIN_CMD q ibc-transfer denom-hash transfer/${transfer_channel_id}/${base_denom} | awk '{print $2}')" + main_cmd=$(GET_VAR_VALUE ${src_chain}_MAIN_CMD) + $main_cmd q ibc channel end transfer $channel_id | grep -A 2 counterparty | grep channel_id | awk '{print $2}' } TRIM_TX() { diff --git a/dockernet/config/ica_host.json b/dockernet/config/ica_host.json index c3407db959..3a8a8abf0d 100644 --- a/dockernet/config/ica_host.json +++ b/dockernet/config/ica_host.json @@ -17,6 +17,7 @@ "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation", "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", "/cosmos.distribution.v1beta1.MsgSetWithdrawAddress", + "/cosmos.distribution.v1beta1.MsgFundCommunityPool", "/ibc.applications.transfer.v1.MsgTransfer", "/cosmwasm.wasm.v1.MsgExecuteContract", "/cosmwasm.wasm.v1.MsgInstantiateContract" diff --git a/dockernet/config/relayer_config_dydx_noble.yaml b/dockernet/config/relayer_config_dydx_noble.yaml new file mode 100644 index 0000000000..a8d9fc5ac9 --- /dev/null +++ b/dockernet/config/relayer_config_dydx_noble.yaml @@ -0,0 +1,76 @@ +global: + api-listen-addr: :5183 + timeout: 10s + memo: "" + light-cache-size: 20 +chains: + dydx: + type: cosmos + value: + key: dydx + chain-id: DYDX + rpc-addr: http://dydx1:26657 + account-prefix: dydx + keyring-backend: test + gas-adjustment: 1.3 + gas-prices: 0.02udydx + coin-type: 118 + debug: false + timeout: 20s + output-format: json + sign-mode: direct + noble: + type: cosmos + value: + key: noble + chain-id: NOBLE + rpc-addr: http://noble1:26657 + account-prefix: noble + keyring-backend: test + gas-adjustment: 1.3 + gas-prices: 0.00utoken + coin-type: 118 + debug: false + timeout: 20s + output-format: json + sign-mode: direct + osmo: + type: cosmos + value: + key: osmo + chain-id: OSMO + rpc-addr: http://osmo1:26657 + account-prefix: osmo + keyring-backend: test + gas-adjustment: 1.3 + gas-prices: 0.00uosmo + coin-type: 118 + debug: false + timeout: 20s + output-format: json + sign-mode: direct +paths: + dydx-noble: + src: + chain-id: DYDX + dst: + chain-id: NOBLE + src-channel-filter: + rule: "" + channel-list: [] + noble-osmo: + src: + chain-id: NOBLE + dst: + chain-id: OSMO + src-channel-filter: + rule: "" + channel-list: [] + osmo-dydx: + src: + chain-id: OSMO + dst: + chain-id: DYDX + src-channel-filter: + rule: "" + channel-list: [] diff --git a/dockernet/config/relayer_config_ics.yaml b/dockernet/config/relayer_config_ics.yaml index 039a57bbaf..e8333a031e 100644 --- a/dockernet/config/relayer_config_ics.yaml +++ b/dockernet/config/relayer_config_ics.yaml @@ -7,7 +7,7 @@ chains: stride: type: cosmos value: - key: rly11 + key: rly8 chain-id: STRIDE rpc-addr: http://stride1:26657 account-prefix: stride @@ -21,7 +21,7 @@ chains: gaia: type: cosmos value: - key: rly12 + key: rly9 chain-id: GAIA rpc-addr: http://gaia1:26657 account-prefix: cosmos diff --git a/dockernet/config/relayer_config.yaml b/dockernet/config/relayer_config_stride.yaml similarity index 89% rename from dockernet/config/relayer_config.yaml rename to dockernet/config/relayer_config_stride.yaml index 92580f6151..02e674d094 100644 --- a/dockernet/config/relayer_config.yaml +++ b/dockernet/config/relayer_config_stride.yaml @@ -111,6 +111,21 @@ chains: sign-mode: direct extra-codecs: - ethermint + dydx: + type: cosmos + value: + key: rly10 + chain-id: DYDX + rpc-addr: http://dydx1:26657 + account-prefix: dydx + keyring-backend: test + gas-adjustment: 1.3 + gas-prices: 0.02udydx + coin-type: 118 + debug: false + timeout: 20s + output-format: json + sign-mode: direct # {new-host-zone}: # type: cosmos # value: @@ -186,6 +201,14 @@ paths: src-channel-filter: rule: "" channel-list: [] + stride-dydx: + src: + chain-id: STRIDE + dst: + chain-id: DYDX + src-channel-filter: + rule: "" + channel-list: [] # stride-{new-host-zone}: # src: # chain-id: STRIDE diff --git a/dockernet/docker-compose.yml b/dockernet/docker-compose.yml index e15620032a..d9afb44b23 100644 --- a/dockernet/docker-compose.yml +++ b/dockernet/docker-compose.yml @@ -200,6 +200,64 @@ services: volumes: - ./state/evmos5:/home/evmos/.evmosd + dydx1: + image: stridezone:dydx + volumes: + - ./state/dydx1:/home/dydx/.dydxprotocol + ports: + - "25957:26657" + - "1247:1317" + - "9020:9090" + + dydx2: + image: stridezone:dydx + volumes: + - ./state/dydx2:/home/dydx/.dydxprotocol + + dydx3: + image: stridezone:dydx + volumes: + - ./state/dydx3:/home/dydx/.dydxprotocol + + dydx4: + image: stridezone:dydx + volumes: + - ./state/dydx4:/home/dydx/.dydxprotocol + + dydx5: + image: stridezone:dydx + volumes: + - ./state/dydx5:/home/dydx/.dydxprotocol + + noble1: + image: stridezone:noble + volumes: + - ./state/noble1:/home/noble/.noble + ports: + - "25857:26657" + - "1237:1317" + - "9010:9090" + + noble2: + image: stridezone:noble + volumes: + - ./state/noble2:/home/noble/.noble + + noble3: + image: stridezone:noble + volumes: + - ./state/noble3:/home/noble/.noble + + noble4: + image: stridezone:noble + volumes: + - ./state/noble4:/home/noble/.noble + + noble5: + image: stridezone:noble + volumes: + - ./state/noble5:/home/noble/.noble + # Fill in new host zone being tested here hermes: @@ -258,9 +316,37 @@ services: restart: always command: [ "bash", "start.sh", "stride-evmos" ] + relayer-dydx: + image: stridezone:relayer + volumes: + - ./state/relayer-dydx:/home/relayer/.relayer + restart: always + command: [ "bash", "start.sh", "stride-dydx" ] + relayer-juno-osmo: image: stridezone:relayer volumes: - ./state/relayer-juno-osmo:/home/relayer/.relayer restart: always command: [ "bash", "start.sh", "juno-osmo" ] + + relayer-dydx-noble: + image: stridezone:relayer + volumes: + - ./state/relayer-dydx-noble:/home/relayer/.relayer + restart: always + command: [ "bash", "start.sh", "dydx-noble" ] + + relayer-noble-osmo: + image: stridezone:relayer + volumes: + - ./state/relayer-noble-osmo:/home/relayer/.relayer + restart: always + command: [ "bash", "start.sh", "noble-osmo" ] + + relayer-osmo-dydx: + image: stridezone:relayer + volumes: + - ./state/relayer-osmo-dydx:/home/relayer/.relayer + restart: always + command: [ "bash", "start.sh", "osmo-dydx" ] diff --git a/dockernet/dockerfiles/Dockerfile.dydx b/dockernet/dockerfiles/Dockerfile.dydx new file mode 100644 index 0000000000..22d332a038 --- /dev/null +++ b/dockernet/dockerfiles/Dockerfile.dydx @@ -0,0 +1,26 @@ +FROM golang:1.21-alpine AS builder + +WORKDIR /opt/ + +RUN set -eux; apk add --no-cache ca-certificates build-base git linux-headers + +RUN git clone https://github.com/Stride-Labs/v4-chain.git \ + && cd v4-chain/protocol \ + && git checkout fafd3a9e2083180d7f7809f5080897e714e52bec + +WORKDIR /opt/v4-chain/protocol + +RUN make build + +FROM alpine:3.16 +COPY --from=builder /opt/v4-chain/protocol/build/dydxprotocold /usr/local/bin/ +RUN apk add bash vim \ + && addgroup -g 1000 dydx \ + && adduser -S -h /home/dydx -D dydx -u 1000 -G dydx + +USER 1000 +WORKDIR /home/dydx + +EXPOSE 26657 26656 1317 9090 + +CMD ["dydxprotocold", "start"] diff --git a/dockernet/dockerfiles/Dockerfile.noble b/dockernet/dockerfiles/Dockerfile.noble new file mode 100644 index 0000000000..b56d3cebb3 --- /dev/null +++ b/dockernet/dockerfiles/Dockerfile.noble @@ -0,0 +1,26 @@ +FROM golang:1.21-alpine AS builder + +WORKDIR /opt/ + +RUN set -eux; apk add --no-cache ca-certificates build-base git linux-headers + +RUN git clone https://github.com/strangelove-ventures/noble.git \ + && cd noble \ + && git checkout v3.1.0 + +WORKDIR /opt/noble + +RUN make build + +FROM alpine:3.16 +COPY --from=builder /opt/noble/bin/nobled /usr/local/bin/ +RUN apk add bash vim \ + && addgroup -g 1000 noble \ + && adduser -S -h /home/noble -D noble -u 1000 -G noble + +USER 1000 +WORKDIR /home/noble + +EXPOSE 26657 26656 1317 9090 + +CMD ["nobled", "start"] diff --git a/dockernet/scripts/3.sh b/dockernet/scripts/3.sh index 922b6490f6..50b80f05d5 100644 --- a/dockernet/scripts/3.sh +++ b/dockernet/scripts/3.sh @@ -1,4 +1,4 @@ -### LIQ STAKE +### REDEEM SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${SCRIPT_DIR}/../config.sh diff --git a/dockernet/scripts/4.sh b/dockernet/scripts/4.sh index dad3aed171..c3570c1c2d 100644 --- a/dockernet/scripts/4.sh +++ b/dockernet/scripts/4.sh @@ -1,4 +1,4 @@ -### LIQ STAKE +### CLAIM SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${SCRIPT_DIR}/../config.sh diff --git a/dockernet/scripts/community-pool-staking/README.md b/dockernet/scripts/community-pool-staking/README.md new file mode 100644 index 0000000000..bc840bb33c --- /dev/null +++ b/dockernet/scripts/community-pool-staking/README.md @@ -0,0 +1,47 @@ +## Community Pool Staking Integration Tests +### Liquid Staking and Redemptions +* To test only liquid staking and redemptions from the community pool (without reinvestment), the setup is much simpler +* Set `HOST_CHAINS` to `(DYDX)` in `config.sh` +* Start dockernet +```bash +make start-docker +``` +* Send native tokens to the deposit account to simulate a community pool liquid stake +```bash +bash dockernet/scripts/community-pool-staking/stake.sh +``` +* View `logs/balances.log` to watch the funds traverse the different accounts +* To test the redemption flow, run +```bash +bash dockernet/scripts/community-pool-staking/redeem.sh +``` +* Similarly watch `logs/balances.log` to see the funds move - it will take a few minutes for the unbonding to complete. +* When you no longer see the pending undelegation, run the claim script to send the native token to the return ICA, and then watch it travel back to the community pool +```bash +bash dockernet/scripts/community-pool-staking/claim.sh +``` +* To test starting from a gov prop instead of a direct transfer to the deposit account, run +```bash +bash dockernet/scripts/community-pool-staking/stake_proposal.sh +``` + +### Reinvestment +* To test reinvestment, you must start up noble and osmosis as well + * Set `HOST_CHAINS` to `(DYDX)` in `config.sh` + * Set `ACCESSORY_CHAINS` to `(NOBLE OSMO)` in `config.sh +* Start the network +```bash +make start-docker +``` +* Start relayers between dydx, noble and osmosis +```bash +bash dockernet/scripts/community-pool-staking/start_relayers.sh +``` +* Create a pool on osmosis to allow trades between dydx and noble +```bash +bash dockernet/scripts/community-pool-staking/create_pool.sh +``` +* Finally, test the reinvestment flow by sending USDC to the withdrawal address +```bash +bash dockernet/scripts/community-pool-staking/reinvest.sh +``` \ No newline at end of file diff --git a/dockernet/scripts/community-pool-staking/claim.sh b/dockernet/scripts/community-pool-staking/claim.sh new file mode 100644 index 0000000000..70b5043507 --- /dev/null +++ b/dockernet/scripts/community-pool-staking/claim.sh @@ -0,0 +1,21 @@ +### CLAIM +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +community_pool_return_address=$(GET_ICA_ADDR DYDX community_pool_return) +community_pool_holding_address=$(GET_HOST_ZONE_FIELD DYDX community_pool_redeem_holding_address) + +# check balances before claiming redeemed stake +echo ">>> Balances before claim..." +$DYDX_MAIN_CMD q bank balances $community_pool_return_address + +#claim stake +echo -e "\n>>> Claiming redeemed tokens..." +epoch=$($STRIDE_MAIN_CMD q records list-user-redemption-record | grep -B 3 -m 1 "receiver: $community_pool_return_address" | grep "epoch_number"| NUMBERS_ONLY) + +$STRIDE_MAIN_CMD tx stakeibc claim-undelegated-tokens DYDX $epoch $community_pool_holding_address --from ${STRIDE_VAL_PREFIX}1 -y | TRIM_TX +sleep 5 + +# check balances after claiming redeemed stake +echo -e "\n>>> Balances after claim..." +$DYDX_MAIN_CMD q bank balances $community_pool_return_address diff --git a/dockernet/scripts/community-pool-staking/create_pool.sh b/dockernet/scripts/community-pool-staking/create_pool.sh new file mode 100644 index 0000000000..67e1398540 --- /dev/null +++ b/dockernet/scripts/community-pool-staking/create_pool.sh @@ -0,0 +1,64 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +LIQUIDITY=1000000000000 +GAS="--gas-prices 0.1uosmo --gas auto --gas-adjustment 1.3" + +echo "Determining relevant channels..." +dydx_to_osmo_client=$(GET_CLIENT_ID_FROM_CHAIN_ID DYDX OSMO) +dydx_to_osmo_connection=$(GET_CONNECTION_ID_FROM_CLIENT_ID DYDX $dydx_to_osmo_client) +dydx_to_osmo_channel=$(GET_TRANSFER_CHANNEL_ID_FROM_CONNECTION_ID DYDX $dydx_to_osmo_connection) +osmo_to_dydx_channel=$(GET_COUNTERPARTY_TRANSFER_CHANNEL_ID DYDX $dydx_to_osmo_channel) +dydx_denom_on_osmo=$(GET_IBC_DENOM OSMO $osmo_to_dydx_channel $DYDX_DENOM) + +echo -e "\nDYDX -> OSMO:" +echo " Client: $dydx_to_osmo_client" +echo " Connection: $dydx_to_osmo_connection" +echo " Transfer Channel: $dydx_to_osmo_channel -> $osmo_to_dydx_channel" +echo " IBC Denom: $dydx_denom_on_osmo" + +noble_to_osmo_client=$(GET_CLIENT_ID_FROM_CHAIN_ID NOBLE OSMO) +noble_to_osmo_connection=$(GET_CONNECTION_ID_FROM_CLIENT_ID NOBLE $noble_to_osmo_client) +noble_to_osmo_channel=$(GET_TRANSFER_CHANNEL_ID_FROM_CONNECTION_ID NOBLE $noble_to_osmo_connection) +osmo_to_noble_channel=$(GET_COUNTERPARTY_TRANSFER_CHANNEL_ID NOBLE $noble_to_osmo_channel) +usdc_denom_on_osmo=$(GET_IBC_DENOM OSMO $osmo_to_noble_channel $USDC_DENOM) + +echo -e "\nNOBLE -> OSMO:" +echo " Client: $noble_to_osmo_client" +echo " Connection: $noble_to_osmo_connection" +echo " Transfer Channel: $noble_to_osmo_channel -> $osmo_to_noble_channel" +echo " IBC Denom: $usdc_denom_on_osmo" + +echo -e "\nSending dydx/usdc to osmosis for initial liquidity..." + +echo ">>> DYDX to Osmosis:" +$DYDX_MAIN_CMD tx ibc-transfer transfer transfer $dydx_to_osmo_channel $(OSMO_ADDRESS) ${LIQUIDITY}${DYDX_DENOM} \ + --from ${DYDX_VAL_PREFIX}1 -y | TRIM_TX + +echo ">>> USDC to Osmosis:" +$NOBLE_MAIN_CMD tx ibc-transfer transfer transfer $noble_to_osmo_channel $(OSMO_ADDRESS) ${LIQUIDITY}${USDC_DENOM} \ + --from ${NOBLE_VAL_PREFIX}1 -y | TRIM_TX +sleep 15 + +echo ">>> Balances:" +$OSMO_MAIN_CMD q bank balances $(OSMO_ADDRESS) + +echo -e "\nCreating dydx/usdc pool on osmosis..." +pool_file=${STATE}/${OSMO_NODE_PREFIX}1/pool.json +cat << EOF > $pool_file +{ + "weights": "5${dydx_denom_on_osmo},5${usdc_denom_on_osmo}", + "initial-deposit": "1000000000000${dydx_denom_on_osmo},1000000000000${usdc_denom_on_osmo}", + "swap-fee": "0.01", + "exit-fee": "0.0", + "future-governor": "" +} +EOF + +$OSMO_MAIN_CMD tx gamm create-pool --pool-file $pool_file --from ${OSMO_VAL_PREFIX}1 -y $GAS | TRIM_TX +sleep 5 + +echo -e "\n>>> Pools:" +$OSMO_MAIN_CMD q gamm pools diff --git a/dockernet/scripts/community-pool-staking/redeem.sh b/dockernet/scripts/community-pool-staking/redeem.sh new file mode 100644 index 0000000000..90cef0defe --- /dev/null +++ b/dockernet/scripts/community-pool-staking/redeem.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +# Transfer to stride +echo ">>> Transfering native token to Stride..." +$DYDX_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $(STRIDE_ADDRESS) 1000000${DYDX_DENOM} --from ${DYDX_VAL_PREFIX}1 -y | TRIM_TX +sleep 10 + +#Liquid stake +echo -e "\n>>> Liquid staking..." +$STRIDE_MAIN_CMD tx stakeibc liquid-stake 1000000 ${DYDX_DENOM} --from ${STRIDE_VAL_PREFIX}1 -y | TRIM_TX +sleep 5 + +# Send stATOM to community pool return address +echo -e "\n>>> Transfer stToken to deposit ICA..." +$STRIDE_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $(GET_ICA_ADDR DYDX community_pool_deposit) \ + 900000${STDYDX_DENOM} --from ${STRIDE_VAL_PREFIX}1 -y | TRIM_TX +sleep 10 diff --git a/dockernet/scripts/community-pool-staking/reinvest.sh b/dockernet/scripts/community-pool-staking/reinvest.sh new file mode 100644 index 0000000000..2ab30c70c0 --- /dev/null +++ b/dockernet/scripts/community-pool-staking/reinvest.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +echo ">>> Sending usdc tokens to withdrawal ICA to simulate rewards..." +$NOBLE_MAIN_CMD tx ibc-transfer transfer transfer channel-0 $(GET_ICA_ADDR DYDX withdrawal) 1000000${USDC_DENOM} \ + --from ${NOBLE_VAL_PREFIX}1 -y | TRIM_TX \ No newline at end of file diff --git a/dockernet/scripts/community-pool-staking/setup_relayers.sh b/dockernet/scripts/community-pool-staking/setup_relayers.sh new file mode 100644 index 0000000000..a59e8dc19e --- /dev/null +++ b/dockernet/scripts/community-pool-staking/setup_relayers.sh @@ -0,0 +1,54 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +for path in "dydx-noble" "noble-osmo" "osmo-dydx"; do + relayer_logs=${LOGS}/relayer-${path}.log + relayer_config=$STATE/relayer-${path}/config + relayer_exec="$DOCKER_COMPOSE run --rm relayer-$path" + + mkdir -p $relayer_config + chmod -R 777 $STATE/relayer-${path} + cp ${DOCKERNET_HOME}/config/relayer_config_dydx_noble.yaml $relayer_config/config.yaml + + IFS='-' read -r zone_1 zone_2 <<< "$path" + + ZONE_1=$(printf "$zone_1" | awk '{ print toupper($0) }') + ZONE_2=$(printf "$zone_2" | awk '{ print toupper($0) }') + + mnemonic_1=$(GET_VAR_VALUE RELAYER_${ZONE_1}_${ZONE_2}_MNEMONIC) + mnemonic_2=$(GET_VAR_VALUE RELAYER_${ZONE_2}_${ZONE_1}_MNEMONIC) + + cmd_1=$(GET_VAR_VALUE ${ZONE_1}_MAIN_CMD) + val_acct_1=$(GET_VAR_VALUE ${ZONE_1}_VAL_PREFIX)1 + denom_1=$(GET_VAR_VALUE ${ZONE_1}_DENOM) + + cmd_2=$(GET_VAR_VALUE ${ZONE_2}_MAIN_CMD) + val_acct_2=$(GET_VAR_VALUE ${ZONE_2}_VAL_PREFIX)1 + denom_2=$(GET_VAR_VALUE ${ZONE_2}_DENOM) + + echo "${ZONE_1} <> ${ZONE_2} - Adding relayer keys..." + relayer_address_1=$($relayer_exec rly keys restore $zone_1 $zone_1 "$mnemonic_1") + relayer_address_2=$($relayer_exec rly keys restore $zone_2 $zone_2 "$mnemonic_2") + echo $relayer_address_1 + echo $relayer_address_2 + echo "Done" + + # Ignore noble when funding since the relayers are funded at genesis + echo "${ZONE_1} <> ${ZONE_2} - Funding relayers..." + if [ "$ZONE_1" != "NOBLE" ]; then + $cmd_1 tx bank send $($cmd_1 keys show -a $val_acct_1) $relayer_address_1 10000000${denom_1} --from ${val_acct_1} -y | TRIM_TX + fi + if [ "$ZONE_2" != "NOBLE" ]; then + $cmd_2 tx bank send $($cmd_2 keys show -a $val_acct_2) $relayer_address_2 10000000${denom_2} --from ${val_acct_2} -y | TRIM_TX + fi + sleep 5 + + printf "${ZONE_1} <> ${ZONE_2} - Creating client, connection, and transfer channel..." | tee -a $relayer_logs + $relayer_exec rly transact link ${path} >> $relayer_logs 2>&1 + echo "Done" + + $DOCKER_COMPOSE up -d relayer-${path} + SAVE_DOCKER_LOGS relayer-${path} $relayer_logs +done diff --git a/dockernet/scripts/community-pool-staking/stake.sh b/dockernet/scripts/community-pool-staking/stake.sh new file mode 100644 index 0000000000..b8676ebb9d --- /dev/null +++ b/dockernet/scripts/community-pool-staking/stake.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +echo ">>> Sending native tokens to deposit ICA to simulate community pool liquid stake..." +$DYDX_MAIN_CMD tx bank send $(DYDX_ADDRESS) $(GET_ICA_ADDR DYDX community_pool_deposit) 1000000${DYDX_DENOM} --from ${DYDX_VAL_PREFIX}1 -y | TRIM_TX \ No newline at end of file diff --git a/dockernet/scripts/community-pool-staking/stake_proposal.sh b/dockernet/scripts/community-pool-staking/stake_proposal.sh new file mode 100644 index 0000000000..8426a4b6a4 --- /dev/null +++ b/dockernet/scripts/community-pool-staking/stake_proposal.sh @@ -0,0 +1,55 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +deposit_ica_account=$(GET_ICA_ADDR DYDX community_pool_deposit) +proposal_file=${STATE}/${DYDX_NODE_PREFIX}1/pool.json +cat << EOF > $proposal_file +{ + "title": "Community Spend: Liquid stake", + "metadata": "Community Spend: Liquid stake", + "summary": "Community Spend: Liquid stake", + "messages": [ + { + "@type": "/cosmos.distribution.v1beta1.MsgCommunityPoolSpend", + "authority": "dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky", + "recipient": "$deposit_ica_account", + "amount": [ + { + "amount": "1000", + "denom": "udydx" + } + ] + } + ], + "deposit": "2000000000udydx" +} +EOF + +echo ">>> Submitting proposal to spend community pool tokens..." +$DYDX_MAIN_CMD tx gov submit-proposal $proposal_file --from ${DYDX_VAL_PREFIX}1 -y | TRIM_TX +sleep 5 + +echo -e "\n>>> Voting on proposal..." +proposal_id=$($DYDX_MAIN_CMD q gov proposals | grep 'id:' | tail -1 | awk '{printf $2}' | tr -d '"') +$DYDX_MAIN_CMD tx gov vote $proposal_id yes --from ${DYDX_VAL_PREFIX}1 -y | TRIM_TX + +echo -e "\n>>> Waiting for proposal to pass..." +printf "\nPROPOSAL STATUS\n" +while true; do + status=$($DYDX_MAIN_CMD query gov proposal $proposal_id | grep "status" | awk '{printf $2}') + if [[ "$status" == "PROPOSAL_STATUS_VOTING_PERIOD" ]]; then + echo "Proposal still in progress..." + sleep 5 + elif [[ "$status" == "PROPOSAL_STATUS_PASSED" ]]; then + echo "Proposal passed!" + exit 0 + elif [[ "$status" == "PROPOSAL_STATUS_REJECTED" ]]; then + echo "Proposal Failed!" + exit 1 + else + echo "Unknown proposal status: $status" + exit 1 + fi +done \ No newline at end of file diff --git a/dockernet/scripts/community-pool-staking/stake_proposal_legacy.sh b/dockernet/scripts/community-pool-staking/stake_proposal_legacy.sh new file mode 100644 index 0000000000..0d160450ce --- /dev/null +++ b/dockernet/scripts/community-pool-staking/stake_proposal_legacy.sh @@ -0,0 +1,43 @@ +#!/bin/bash +set -eu +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +source ${SCRIPT_DIR}/../../config.sh + +deposit_ica_account=$(GET_ICA_ADDR GAIA community_pool_deposit) +proposal_file=${STATE}/${GAIA_NODE_PREFIX}1/proposal.json +cat << EOF > $proposal_file +{ + "title": "Community Pool Liquid Stake", + "description": "Community Pool Liquid Stake", + "recipient": "${deposit_ica_account}", + "amount": "1000000uatom", + "deposit": "10000000uatom" +} +EOF + +echo ">>> Submitting proposal to spend community pool tokens..." +$GAIA_MAIN_CMD tx gov submit-proposal community-pool-spend $proposal_file --from ${GAIA_VAL_PREFIX}1 -y | TRIM_TX +sleep 5 + +echo -e "\n>>> Voting on proposal..." +proposal_id=$($GAIA_MAIN_CMD q gov proposals | grep 'id:' | tail -1 | awk '{printf $2}' | tr -d '"') +$GAIA_MAIN_CMD tx gov vote $proposal_id yes --from ${GAIA_VAL_PREFIX}1 -y | TRIM_TX + +echo -e "\n>>> Waiting for proposal to pass..." +printf "\nPROPOSAL STATUS\n" +while true; do + status=$($GAIA_MAIN_CMD query gov proposal $proposal_id | grep "status" | awk '{printf $2}') + if [[ "$status" == "PROPOSAL_STATUS_VOTING_PERIOD" ]]; then + echo "Proposal still in progress..." + sleep 5 + elif [[ "$status" == "PROPOSAL_STATUS_PASSED" ]]; then + echo "Proposal passed!" + exit 0 + elif [[ "$status" == "PROPOSAL_STATUS_REJECTED" ]]; then + echo "Proposal Failed!" + exit 1 + else + echo "Unknown proposal status: $status" + exit 1 + fi +done \ No newline at end of file diff --git a/dockernet/scripts/ratelimit/setup.sh b/dockernet/scripts/ratelimit/setup.sh index c805a62fa1..6788a38db4 100644 --- a/dockernet/scripts/ratelimit/setup.sh +++ b/dockernet/scripts/ratelimit/setup.sh @@ -32,7 +32,7 @@ setup_juno_osmo_channel() { echo "Done" $DOCKER_COMPOSE up -d relayer-${path} - $DOCKER_COMPOSE logs -f relayer-${path} | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & + SAVE_DOCKER_LOGS relayer-${path} $relayer_logs } setup_channel_value() { diff --git a/dockernet/src/create_logs.sh b/dockernet/src/create_logs.sh index 66cd367a24..6464d55a7f 100755 --- a/dockernet/src/create_logs.sh +++ b/dockernet/src/create_logs.sh @@ -50,21 +50,40 @@ while true; do WITHDRAWAL_ICA_ADDR=$(GET_ICA_ADDR $HOST_CHAIN_ID withdrawal) FEE_ICA_ADDR=$(GET_ICA_ADDR $HOST_CHAIN_ID fee) - printf '\n%s\n' "========================== $chain =============================" >>$TEMP_LOGS_DIR/$BALANCES_LOG - - printf '\n%s\n' "BALANCES $chain (DELEGATION ACCT)" >>$TEMP_LOGS_DIR/$BALANCES_LOG - $HOST_MAIN_CMD q bank balances $DELEGATION_ICA_ADDR >>$TEMP_LOGS_DIR/$BALANCES_LOG - printf '\n%s\n' "DELEGATIONS $chain (DELEGATION ACCT)" >>$TEMP_LOGS_DIR/$BALANCES_LOG - $HOST_MAIN_CMD q staking delegations $DELEGATION_ICA_ADDR >>$TEMP_LOGS_DIR/$BALANCES_LOG - printf '\n%s\n' "UNBONDING-DELEGATIONS $chain (DELEGATION ACCT)" >>$TEMP_LOGS_DIR/$BALANCES_LOG - $HOST_MAIN_CMD q staking unbonding-delegations $DELEGATION_ICA_ADDR >>$TEMP_LOGS_DIR/$BALANCES_LOG - - printf '\n%s\n' "BALANCES $chain (REDEMPTION ACCT)" >>$TEMP_LOGS_DIR/$BALANCES_LOG - $HOST_MAIN_CMD q bank balances $REDEMPTION_ICA_ADDR >>$TEMP_LOGS_DIR/$BALANCES_LOG - printf '\n%s\n' "BALANCES $chain (FEE ACCT)" >>$TEMP_LOGS_DIR/$BALANCES_LOG - $HOST_MAIN_CMD q bank balances $FEE_ICA_ADDR >>$TEMP_LOGS_DIR/$BALANCES_LOG - printf '\n%s\n' "BALANCES $chain (WITHDRAWAL ACCT)" >>$TEMP_LOGS_DIR/$BALANCES_LOG - $HOST_MAIN_CMD q bank balances $WITHDRAWAL_ICA_ADDR >>$TEMP_LOGS_DIR/$BALANCES_LOG + COMMUNITY_POOL_DEPOSIT_ADDR=$(GET_ICA_ADDR $HOST_CHAIN_ID community_pool_deposit) + COMMUNITY_POOL_RETURN_ADDR=$(GET_ICA_ADDR $HOST_CHAIN_ID community_pool_return) + + COMMUNITY_POOL_STAKE_ADDR=$(GET_HOST_ZONE_FIELD $HOST_CHAIN_ID community_pool_stake_holding_address) + COMMUNITY_POOL_REDEEM_ADDR=$(GET_HOST_ZONE_FIELD $HOST_CHAIN_ID community_pool_redeem_holding_address) + + printf '\n%s\n' "========================== $chain =============================" >> $TEMP_LOGS_DIR/$BALANCES_LOG + + printf '\n%s\n' "DELEGATIONS $chain" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q staking delegations $DELEGATION_ICA_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + printf '\n%s\n' "UNBONDING-DELEGATIONS $chain" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q staking unbonding-delegations $DELEGATION_ICA_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + + printf '\n%s\n' "DELEGATION ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q bank balances $DELEGATION_ICA_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + printf '\n%s\n' "REDEMPTION ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q bank balances $REDEMPTION_ICA_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + printf '\n%s\n' "FEE ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q bank balances $FEE_ICA_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + printf '\n%s\n' "WITHDRAWAL ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q bank balances $WITHDRAWAL_ICA_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + + printf '\n%s\n' "COMMUNITY POOL BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q distribution community-pool >> $TEMP_LOGS_DIR/$BALANCES_LOG + + printf '\n%s\n' "COMMUNITY POOL DEPOSIT ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q bank balances $COMMUNITY_POOL_DEPOSIT_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + printf '\n%s\n' "COMMUNITY POOL RETURN ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $HOST_MAIN_CMD q bank balances $COMMUNITY_POOL_RETURN_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + + printf '\n%s\n' "COMMUNITY POOL STAKE HOLDING ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $STRIDE_MAIN_CMD q bank balances $COMMUNITY_POOL_STAKE_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG + printf '\n%s\n' "COMMUNITY POOL REDEEM HOLDING ACCT BALANCE" >> $TEMP_LOGS_DIR/$BALANCES_LOG + $STRIDE_MAIN_CMD q bank balances $COMMUNITY_POOL_REDEEM_ADDR >> $TEMP_LOGS_DIR/$BALANCES_LOG done mv $TEMP_LOGS_DIR/*.log $LOGS_DIR diff --git a/dockernet/src/init_chain.sh b/dockernet/src/init_chain.sh index 0e4c6a51e8..66ed6f8c51 100644 --- a/dockernet/src/init_chain.sh +++ b/dockernet/src/init_chain.sh @@ -64,7 +64,14 @@ set_host_genesis() { jq '(.app_state.epochs.epochs[]? | select(.identifier=="week") ).duration = $epochLen' --arg epochLen $HOST_WEEK_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '(.app_state.epochs.epochs[]? | select(.identifier=="mint") ).duration = $epochLen' --arg epochLen $HOST_MINT_EPOCH_DURATION $genesis_config > json.tmp && mv json.tmp $genesis_config jq '.app_state.staking.params.unbonding_time = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config - jq '.app_state.gov.voting_params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config + + # Shorten voting period (we need both of these to support both versions of the SDK) + if [[ "$(jq '.app_state.gov | has("voting_params")' $genesis_config)" == "true" ]]; then + jq '.app_state.gov.voting_params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config + fi + if [[ "$(jq '.app_state.gov | has("params")' $genesis_config)" == "true" ]]; then + jq '.app_state.gov.params.voting_period = $newVal' --arg newVal "$VOTING_PERIOD" $genesis_config > json.tmp && mv json.tmp $genesis_config + fi # Set the mint start time to the genesis time if the chain configures inflation at the block level (e.g. stars) # also reduce the number of initial annual provisions so the inflation rate is not too high @@ -99,6 +106,15 @@ set_consumer_genesis() { jq '.app_state.ccvconsumer.params.unbonding_period = $newVal' --arg newVal "$UNBONDING_TIME" $genesis_config > json.tmp && mv json.tmp $genesis_config } +add_relayer_account() { + relayer_acct="$1" + relayer_mnemonic="$2" + + echo "$relayer_mnemonic" | $MAIN_CMD keys add $relayer_acct --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 + relayer_address=$($MAIN_CMD keys show $relayer_acct --keyring-backend test -a | tr -cd '[:alnum:]._-') + $MAIN_CMD add-genesis-account ${relayer_address} ${VAL_TOKENS}${DENOM} +} + MAIN_ID=1 # Node responsible for genesis and persistent_peers MAIN_NODE_NAME="" MAIN_NODE_ID="" @@ -156,7 +172,11 @@ for (( i=1; i <= $NUM_NODES; i++ )); do echo "$val_mnemonic" | $cmd keys add $val_acct --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 val_addr=$($cmd keys show $val_acct --keyring-backend test -a | tr -cd '[:alnum:]._-') # Add this account to the current node - $cmd add-genesis-account ${val_addr} ${VAL_TOKENS}${DENOM} + genesis_coins=${VAL_TOKENS}${DENOM} + if [[ "$CHAIN" == "NOBLE" ]]; then + genesis_coins=${genesis_coins},${VAL_TOKENS}${USDC_DENOM} + fi + $cmd add-genesis-account ${val_addr} ${genesis_coins} # Copy over the provider stride validator keys to the provider (in the event # that we are testing ICS) @@ -205,14 +225,11 @@ if [ "$CHAIN" == "STRIDE" ]; then $MAIN_CMD add-genesis-account ${STRIDE_ADMIN_ADDRESS} ${ADMIN_TOKENS}${DENOM} # add relayer accounts - for i in "${!RELAYER_ACCTS[@]}"; do - RELAYER_ACCT="${RELAYER_ACCTS[i]}" - RELAYER_MNEMONIC="${RELAYER_MNEMONICS[i]}" - - echo "$RELAYER_MNEMONIC" | $MAIN_CMD keys add $RELAYER_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 - - RELAYER_ADDRESS=$($MAIN_CMD keys show $RELAYER_ACCT --keyring-backend test -a) - $MAIN_CMD add-genesis-account ${RELAYER_ADDRESS} ${VAL_TOKENS}${DENOM} + for i in "${!STRIDE_RELAYER_ACCTS[@]}"; do + relayer_acct="${STRIDE_RELAYER_ACCTS[i]}" + relayer_mnemonic="${STRIDE_RELAYER_MNEMONICS[i]}" + + add_relayer_account "$relayer_acct" "$relayer_mnemonic" done else # add a revenue account @@ -220,18 +237,37 @@ else REV_ACCT=${!REV_ACCT_VAR} echo $REV_MNEMONIC | $MAIN_CMD keys add $REV_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 - # add a relayer account - RELAYER_ACCT=$(GET_VAR_VALUE RELAYER_${CHAIN}_ACCT) - RELAYER_MNEMONIC=$(GET_VAR_VALUE RELAYER_${CHAIN}_MNEMONIC) + # add a relayer account if the chain is a HOST_CHAIN + # if it's only an accessory chain, the account will be added after the network is started + is_host_chain=false + for host_chain in ${HOST_CHAINS[@]}; do + if [ "$CHAIN" == "$host_chain" ]; then + relayer_acct=$(GET_VAR_VALUE RELAYER_${CHAIN}_ACCT) + relayer_mnemonic=$(GET_VAR_VALUE RELAYER_${CHAIN}_MNEMONIC) - echo "$RELAYER_MNEMONIC" | $MAIN_CMD keys add $RELAYER_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 - RELAYER_ADDRESS=$($MAIN_CMD keys show $RELAYER_ACCT --keyring-backend test -a | tr -cd '[:alnum:]._-') - $MAIN_CMD add-genesis-account ${RELAYER_ADDRESS} ${VAL_TOKENS}${DENOM} + add_relayer_account "$relayer_acct" "$relayer_mnemonic" + break + fi + done + # gaia ICS and noble have a different config setup, so we handle them explicitly here if [ "$CHAIN" == "GAIA" ]; then - echo "$RELAYER_GAIA_ICS_MNEMONIC" | $MAIN_CMD keys add $RELAYER_GAIA_ICS_ACCT --recover --keyring-backend=test >> $KEYS_LOGS 2>&1 - RELAYER_ADDRESS=$($MAIN_CMD keys show $RELAYER_GAIA_ICS_ACCT --keyring-backend test -a | tr -cd '[:alnum:]._-') - $MAIN_CMD add-genesis-account ${RELAYER_ADDRESS} ${VAL_TOKENS}${DENOM} + add_relayer_account "$RELAYER_GAIA_ICS_ACCT" "$RELAYER_GAIA_ICS_MNEMONIC" + fi + if [ "$CHAIN" == "NOBLE" ]; then + add_relayer_account noble-dydx "$RELAYER_NOBLE_DYDX_MNEMONIC" + add_relayer_account noble-osmo "$RELAYER_NOBLE_OSMO_MNEMONIC" + fi + + # For noble, add a param authority account and set a minting denom so that IBC transfers are allowed + if [ "$CHAIN" == "NOBLE" ]; then + echo "$NOBLE_AUTHORITHY_MNEMONIC" | $MAIN_CMD keys add authority --recover --keyring-backend test >> $KEYS_LOGS 2>&1 + AUTHORITHY_ADDRESS=$($MAIN_CMD keys show authority --keyring-backend test -a | tr -cd '[:alnum:]._-') + $MAIN_CMD add-genesis-account ${AUTHORITHY_ADDRESS} ${VAL_TOKENS}${DENOM},${VAL_TOKENS}${USDC_DENOM} + + sed -i -E 's|"authority": ""|"authority":"'${AUTHORITHY_ADDRESS}'"|g' $genesis_json + sed -i -E 's|"mintingDenom": null|"mintingDenom":{"denom":"'${DENOM}'"}|g' $genesis_json + sed -i -E 's|"denom_metadata": \[\]|"denom_metadata":\[{"name": "Token", "base": "'${DENOM}'"}\]|g' $genesis_json fi fi diff --git a/dockernet/src/register_host.sh b/dockernet/src/register_host.sh index 6ca8dd8ce4..6ef5f11da9 100644 --- a/dockernet/src/register_host.sh +++ b/dockernet/src/register_host.sh @@ -66,7 +66,7 @@ sleep 5 # Confirm the ICA accounts have been registered before continuing timeout=100 while true; do - if ! $STRIDE_MAIN_CMD q stakeibc show-host-zone $CHAIN_ID | grep -q 'address: ""'; then + if ! $STRIDE_MAIN_CMD q stakeibc show-host-zone $CHAIN_ID | grep -q 'ica_address: ""'; then break else if [[ "$timeout" == "0" ]]; then diff --git a/dockernet/src/start_chain.sh b/dockernet/src/start_chain.sh index b6db80243c..01723aee3d 100644 --- a/dockernet/src/start_chain.sh +++ b/dockernet/src/start_chain.sh @@ -5,7 +5,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${SCRIPT_DIR}/../config.sh -for chain_id in STRIDE ${HOST_CHAINS[@]}; do +for chain_id in STRIDE ${HOST_CHAINS[@]} ${ACCESSORY_CHAINS[@]:-}; do num_nodes=$(GET_VAR_VALUE ${chain_id}_NUM_NODES) node_prefix=$(GET_VAR_VALUE ${chain_id}_NODE_PREFIX) @@ -15,10 +15,10 @@ for chain_id in STRIDE ${HOST_CHAINS[@]}; do nodes_names=$(i=1; while [ $i -le $num_nodes ]; do printf "%s " ${node_prefix}${i}; i=$(($i + 1)); done;) $DOCKER_COMPOSE up -d $nodes_names - $DOCKER_COMPOSE logs -f ${node_prefix}1 | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" > $log_file 2>&1 & + SAVE_DOCKER_LOGS ${node_prefix}1 $log_file done -for chain_id in STRIDE ${HOST_CHAINS[@]}; do +for chain_id in STRIDE ${HOST_CHAINS[@]} ${ACCESSORY_CHAINS[@]:-}; do printf "Waiting for $chain_id to start..." node_prefix=$(GET_VAR_VALUE ${chain_id}_NODE_PREFIX) diff --git a/dockernet/src/start_relayers.sh b/dockernet/src/start_relayers.sh index 2f79a0545d..1c1d9383a7 100644 --- a/dockernet/src/start_relayers.sh +++ b/dockernet/src/start_relayers.sh @@ -18,7 +18,7 @@ for chain in ${HOST_CHAINS[@]}; do mkdir -p $relayer_config chmod -R 777 $STATE/relayer-${chain_name} - cp ${DOCKERNET_HOME}/config/relayer_config.yaml $relayer_config/config.yaml + cp ${DOCKERNET_HOME}/config/relayer_config_stride.yaml $relayer_config/config.yaml printf "STRIDE <> $chain - Adding relayer keys..." $relayer_exec rly keys restore stride $RELAYER_STRIDE_ACCT "$mnemonic" >> $relayer_logs 2>&1 @@ -30,5 +30,6 @@ for chain in ${HOST_CHAINS[@]}; do echo "Done" $DOCKER_COMPOSE up -d relayer-${chain_name} - $DOCKER_COMPOSE logs -f relayer-${chain_name} | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & + SAVE_DOCKER_LOGS relayer-${chain_name} $relayer_logs done + diff --git a/dockernet/start_network.sh b/dockernet/start_network.sh index 96c8778e39..831b5137ec 100755 --- a/dockernet/start_network.sh +++ b/dockernet/start_network.sh @@ -5,7 +5,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) source ${SCRIPT_DIR}/config.sh # Confirm binaries are present -for chain in STRIDE ${HOST_CHAINS[@]}; do +for chain in STRIDE ${HOST_CHAINS[@]} ${ACCESSORY_CHAINS[@]:-}; do binary_path=$(GET_VAR_VALUE ${chain}_BINARY) binary_path=$(realpath "$binary_path") if [[ ! -e "$binary_path" ]]; then @@ -51,7 +51,7 @@ if [[ "${UPGRADE_NAME:-}" != "" ]]; then fi # Initialize the state for each chain -for chain in STRIDE ${HOST_CHAINS[@]}; do +for chain in STRIDE ${HOST_CHAINS[@]} ${ACCESSORY_CHAINS[@]:-}; do bash $SRC/init_chain.sh $chain done @@ -67,9 +67,9 @@ for chain in STRIDE ${HOST_CHAINS[@]}; do fi done -# Register all host zones +# Register all host zones (except noble) for i in ${!HOST_CHAINS[@]}; do - bash $SRC/register_host.sh ${HOST_CHAINS[$i]} $i + bash $SRC/register_host.sh ${HOST_CHAINS[i]} $i done $SRC/create_logs.sh & diff --git a/dockernet/tests/integration_tests.bats b/dockernet/tests/integration_tests.bats index 3b81f21a10..2299d7e9ce 100644 --- a/dockernet/tests/integration_tests.bats +++ b/dockernet/tests/integration_tests.bats @@ -191,7 +191,7 @@ setup_file() { WAIT_FOR_BLOCK $STRIDE_LOGS 8 - lsm_token_ibc_denom=$(GET_IBC_DENOM $STRIDE_TRANSFER_CHANNEL ${validator_address}/${record_id}) + lsm_token_ibc_denom=$(GET_IBC_DENOM STRIDE $STRIDE_TRANSFER_CHANNEL ${validator_address}/${record_id}) # get initial balances sttoken_balance_start=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom st$HOST_DENOM | GETBAL) @@ -232,7 +232,7 @@ setup_file() { # get the LSM token denom record_id=$($HOST_MAIN_CMD q staking last-tokenize-share-record-id | awk '{print $2}' | tr -d '"') - lsm_token_ibc_denom=$(GET_IBC_DENOM $STRIDE_TRANSFER_CHANNEL ${validator_address}/${record_id}) + lsm_token_ibc_denom=$(GET_IBC_DENOM STRIDE $STRIDE_TRANSFER_CHANNEL ${validator_address}/${record_id}) # get the stToken balance before the liquid stake sttoken_balance_start=$($STRIDE_MAIN_CMD q bank balances $staker_address_on_stride --denom st$HOST_DENOM | GETBAL) diff --git a/dockernet/upgrades/setup_ics.sh b/dockernet/upgrades/setup_ics.sh index 93db0bba69..5ea9d31ec5 100644 --- a/dockernet/upgrades/setup_ics.sh +++ b/dockernet/upgrades/setup_ics.sh @@ -144,7 +144,7 @@ printf "STRIDE <> GAIA - Creating ICS channel..." | tee -a $relayer_logs $relayer_exec rly transact link stride-gaia-ics --src-port consumer --dst-port provider --order ordered --version 1 >> $relayer_logs 2>&1 $DOCKER_COMPOSE up -d relayer-gaia-ics -$DOCKER_COMPOSE logs -f relayer-gaia-ics | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" >> $relayer_logs 2>&1 & +SAVE_DOCKER_LOGS relayer-gaia-ics $relayer_logs printf "STRIDE <> GAIA - Registering reward denom to provider..." val_addr=$($STRIDE_MAIN_CMD keys show ${STRIDE_VAL_PREFIX}1 --keyring-backend test -a | tr -cd '[:alnum:]._-') diff --git a/proto/stride/stakeibc/callbacks.proto b/proto/stride/stakeibc/callbacks.proto index 23bcc0f5bb..62239b3ed8 100644 --- a/proto/stride/stakeibc/callbacks.proto +++ b/proto/stride/stakeibc/callbacks.proto @@ -5,6 +5,7 @@ import "cosmos/base/v1beta1/coin.proto"; import "stride/records/records.proto"; import "stride/stakeibc/host_zone.proto"; import "stride/stakeibc/validator.proto"; +import "stride/stakeibc/ica_account.proto"; option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; @@ -87,4 +88,9 @@ message DelegatorSharesQueryCallback { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false ]; -} \ No newline at end of file +} + +message CommunityPoolBalanceQueryCallback { + ICAAccountType ica_type = 1; + string denom = 2; +} diff --git a/proto/stride/stakeibc/host_zone.proto b/proto/stride/stakeibc/host_zone.proto index ecea4e4c1d..b6551c79d8 100644 --- a/proto/stride/stakeibc/host_zone.proto +++ b/proto/stride/stakeibc/host_zone.proto @@ -28,6 +28,14 @@ message HostZone { [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; string redemption_ica_address = 25 [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string community_pool_deposit_ica_address = 30 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string community_pool_return_ica_address = 31 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string community_pool_stake_holding_address = 32 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; + string community_pool_redeem_holding_address = 33 + [ (cosmos_proto.scalar) = "cosmos.AddressString" ]; string total_delegations = 13 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false diff --git a/proto/stride/stakeibc/ica_account.proto b/proto/stride/stakeibc/ica_account.proto old mode 100755 new mode 100644 index d25937a24e..857cdaee31 --- a/proto/stride/stakeibc/ica_account.proto +++ b/proto/stride/stakeibc/ica_account.proto @@ -8,4 +8,6 @@ enum ICAAccountType { FEE = 1; WITHDRAWAL = 2; REDEMPTION = 3; + COMMUNITY_POOL_DEPOSIT = 4; + COMMUNITY_POOL_RETURN = 5; } diff --git a/proto/stride/stakeibc/tx.proto b/proto/stride/stakeibc/tx.proto index ee91c0dfdc..91c4b3d908 100644 --- a/proto/stride/stakeibc/tx.proto +++ b/proto/stride/stakeibc/tx.proto @@ -7,6 +7,7 @@ import "stride/stakeibc/validator.proto"; option go_package = "github.com/Stride-Labs/stride/v16/x/stakeibc/types"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; +import "cosmos/base/v1beta1/coin.proto"; // Msg defines the Msg service. service Msg { @@ -61,7 +62,12 @@ message MsgLiquidStake { ]; string host_denom = 3; } -message MsgLiquidStakeResponse {} +message MsgLiquidStakeResponse { + cosmos.base.v1beta1.Coin st_token = 1 [ + (gogoproto.nullable) = false, + (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins" + ]; +} message MsgLSMLiquidStake { string creator = 1; diff --git a/utils/utils.go b/utils/utils.go index fab4a00f68..8c387d2356 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -98,7 +98,8 @@ func GetFromBech32(bech32str, prefix string) ([]byte, error) { func VerifyAddressFormat(bz []byte) error { verifier := func(bz []byte) error { n := len(bz) - if n == 20 { + // Base accounts are length 20, module/ICA accounts are length 32 + if n == 20 || n == 32 { return nil } return fmt.Errorf("incorrect address length %d", n) diff --git a/x/stakeibc/ibc_middleware.go b/x/stakeibc/ibc_middleware.go index b12ff93dca..8bda28c7f7 100644 --- a/x/stakeibc/ibc_middleware.go +++ b/x/stakeibc/ibc_middleware.go @@ -11,6 +11,7 @@ import ( porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types" ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" + ratelimittypes "github.com/Stride-Labs/stride/v16/x/ratelimit/types" "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" "github.com/Stride-Labs/stride/v16/x/stakeibc/types" ) @@ -90,38 +91,93 @@ func (im IBCMiddleware) OnChanOpenAck( } ctx.Logger().Info(fmt.Sprintf("Found matching address for chain: %s, address %s, port %s", zoneInfo.ChainId, address, portID)) - // addresses - withdrawalAddress, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_WITHDRAWAL)) + // expected port IDs for each ICA account type + withdrawalPortID, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_WITHDRAWAL)) if err != nil { return err } - feeAddress, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_FEE)) + feePortID, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_FEE)) if err != nil { return err } - delegationAddress, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_DELEGATION)) + delegationPortID, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_DELEGATION)) if err != nil { return err } - redemptionAddress, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_REDEMPTION)) + redemptionPortID, err := icatypes.NewControllerPortID(types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_REDEMPTION)) + if err != nil { + return err + } + communityPoolDepositOwner := types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT) + communityPoolDepositPortID, err := icatypes.NewControllerPortID(communityPoolDepositOwner) + if err != nil { + return err + } + communityPoolReturnOwner := types.FormatICAAccountOwner(hostChainId, types.ICAAccountType_COMMUNITY_POOL_RETURN) + communityPoolReturnPortID, err := icatypes.NewControllerPortID(communityPoolReturnOwner) if err != nil { return err } // Set ICA account addresses switch { - case portID == withdrawalAddress: + case portID == withdrawalPortID: zoneInfo.WithdrawalIcaAddress = address - case portID == feeAddress: + case portID == feePortID: zoneInfo.FeeIcaAddress = address - case portID == delegationAddress: + case portID == delegationPortID: zoneInfo.DelegationIcaAddress = address - case portID == redemptionAddress: + case portID == redemptionPortID: zoneInfo.RedemptionIcaAddress = address + case portID == communityPoolDepositPortID: + zoneInfo.CommunityPoolDepositIcaAddress = address + case portID == communityPoolReturnPortID: + zoneInfo.CommunityPoolReturnIcaAddress = address default: ctx.Logger().Error(fmt.Sprintf("Missing portId: %s", portID)) } + // Once the delegation channel is registered, whitelist epochly transfers so they're not rate limited + // Epochly transfers go from the deposit address to the delegation address + if portID == delegationPortID { + im.keeper.RatelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ + Sender: zoneInfo.DepositAddress, + Receiver: zoneInfo.DelegationIcaAddress, + }) + } + + // Once the fee channel is registered, whitelist reward transfers so they're not rate limited + // Reward transfers go from the fee address to the reward collector + if portID == feePortID { + rewardCollectorAddress := im.keeper.AccountKeeper.GetModuleAccount(ctx, types.RewardCollectorName).GetAddress() + im.keeper.RatelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ + Sender: zoneInfo.FeeIcaAddress, + Receiver: rewardCollectorAddress.String(), + }) + } + + // Once the community pool deposit ICA is registered, whitelist epochly community pool transfers + // from the deposit ICA to the community pool holding accounts + if portID == communityPoolDepositPortID { + im.keeper.RatelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ + Sender: zoneInfo.CommunityPoolDepositIcaAddress, + Receiver: zoneInfo.CommunityPoolStakeHoldingAddress, + }) + im.keeper.RatelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ + Sender: zoneInfo.CommunityPoolDepositIcaAddress, + Receiver: zoneInfo.CommunityPoolRedeemHoldingAddress, + }) + } + + // Once the community pool return ICA is registered, whitelist epochly community pool transfers + // from the community pool stake holding account to the community pool return ICA + if portID == communityPoolReturnPortID { + im.keeper.RatelimitKeeper.SetWhitelistedAddressPair(ctx, ratelimittypes.WhitelistedAddressPair{ + Sender: zoneInfo.CommunityPoolStakeHoldingAddress, + Receiver: zoneInfo.CommunityPoolReturnIcaAddress, + }) + } + im.keeper.SetHostZone(ctx, zoneInfo) // call underlying app's OnChanOpenAck diff --git a/x/stakeibc/keeper/community_pool.go b/x/stakeibc/keeper/community_pool.go new file mode 100644 index 0000000000..b96c736ab8 --- /dev/null +++ b/x/stakeibc/keeper/community_pool.go @@ -0,0 +1,262 @@ +package keeper + +import ( + "time" + + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/bech32" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + + "github.com/cosmos/gogoproto/proto" + + "github.com/Stride-Labs/stride/v16/utils" + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" +) + +// For each hostZone with a valid community pool, trigger the ICQs and ICAs to transfer tokens from DepositICA or back to ReturnICA +// Since ICQs and ICAs take time to complete, it is almost certain tokens swept in and processed will be swept out in a later epoch +func (k Keeper) ProcessAllCommunityPoolTokens(ctx sdk.Context) { + hostZones := k.GetAllActiveHostZone(ctx) + for _, hostZone := range hostZones { + if hostZone.CommunityPoolDepositIcaAddress == "" || + hostZone.CommunityPoolStakeHoldingAddress == "" || + hostZone.CommunityPoolRedeemHoldingAddress == "" || + hostZone.CommunityPoolReturnIcaAddress == "" { + continue + } + + // stDenom is the ibc denom on hostZone when the hostZone's native denom is staked + denom := hostZone.HostDenom + stIbcDenom, err := k.GetStIbcDenomOnHostZone(ctx, hostZone) + if err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, "Unable to get stToken ibc denom - %s", err.Error())) + continue + } + + /****** Stage 1: Query deposit ICA for denom/stDenom, Transfer tokens to stride *******/ + + // ICQ for the host denom of the chain, these are tokens the pool wants staked + err = k.QueryCommunityPoolIcaBalance(ctx, hostZone, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT, denom) + if err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, + "Failed to submit ICQ for native denom %s in deposit ICA - %s", denom, err.Error())) + } + // ICQ for staked tokens of the host denom, these are tokens the pool wants redeemed + err = k.QueryCommunityPoolIcaBalance(ctx, hostZone, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT, stIbcDenom) + if err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, + "Failed to submit ICQ for stHostDenom %s in deposit ICA - %s", stIbcDenom, err.Error())) + } + + /****** Stage 2: LiquidStake denom and transfer to return ICA, or RedeemStake stDenom *******/ + + // LiquidStake tokens in the stake holding address and transfer to the return ica + if err = k.LiquidStakeCommunityPoolTokens(ctx, hostZone); err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, + "Failed to liquid staking and transfer community pool tokens in stake holding address - %s", err.Error())) + } + // RedeemStake tokens in the redeem holding address, in 30 days they claim to the return ica + if err = k.RedeemCommunityPoolTokens(ctx, hostZone); err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, + "Failed to redeeming stTokens in redeem holding address - %s", err.Error())) + } + + /****** Stage 3: Query return ICA for denom/stDenom, FundCommunityPool from return ICA *******/ + + err = k.QueryCommunityPoolIcaBalance(ctx, hostZone, types.ICAAccountType_COMMUNITY_POOL_RETURN, denom) + if err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, + "Failed to submit ICQ for native denom %s in return ICA - %s", denom, err.Error())) + } + err = k.QueryCommunityPoolIcaBalance(ctx, hostZone, types.ICAAccountType_COMMUNITY_POOL_RETURN, stIbcDenom) + if err != nil { + k.Logger(ctx).Error(utils.LogWithHostZone(hostZone.ChainId, + "Failed to submit ICQ for stHostDenom %s in return ICA - %s", stIbcDenom, err.Error())) + } + } +} + +// ICQ specific denom for balance in the deposit ICA or return ICA on the community pool host zone +// Depending on account type and denom, discovered tokens are transferred to Stride or funded to the pool +func (k Keeper) QueryCommunityPoolIcaBalance( + ctx sdk.Context, + hostZone types.HostZone, + icaType types.ICAAccountType, + denom string, +) error { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, + "Building ICQ for %s balance in community pool %s address", denom, icaType.String())) + + var icaAddress string + switch icaType { + case types.ICAAccountType_COMMUNITY_POOL_DEPOSIT: + icaAddress = hostZone.CommunityPoolDepositIcaAddress + case types.ICAAccountType_COMMUNITY_POOL_RETURN: + icaAddress = hostZone.CommunityPoolReturnIcaAddress + default: + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "icaType must be either deposit or return!") + } + + // Verify a valid ica address exists for this host zone + if icaAddress == "" { + return errorsmod.Wrapf(types.ErrICAAccountNotFound, "no address of type %s found for %s", + icaType.String(), hostZone.ChainId) + } + + _, addressBz, err := bech32.DecodeAndConvert(icaAddress) + if err != nil { + return errorsmod.Wrapf(err, "invalid %s address, could not decode (%s)", + icaType.String(), icaAddress) + } + queryData := append(banktypes.CreateAccountBalancesPrefix(addressBz), []byte(denom)...) + + // The response might be a coin, or might just be an int depending on sdk version + // Since we need the denom later, store the denom as callback data for the query + callbackData := types.CommunityPoolBalanceQueryCallback{ + IcaType: icaType, + Denom: denom, + } + callbackDataBz, err := proto.Marshal(&callbackData) + if err != nil { + return errorsmod.Wrapf(err, "can't marshal community pool balance callback data %+v", callbackData) + } + + // Timeout query at end of epoch + strideEpochTracker, found := k.GetEpochTracker(ctx, epochstypes.STRIDE_EPOCH) + if !found { + return errorsmod.Wrapf(types.ErrEpochNotFound, epochstypes.STRIDE_EPOCH) + } + timeout := time.Unix(0, int64(strideEpochTracker.NextEpochStartTime)) + timeoutDuration := timeout.Sub(ctx.BlockTime()) + + // Submit the ICQ for the withdrawal account balance + query := icqtypes.Query{ + ChainId: hostZone.ChainId, + ConnectionId: hostZone.ConnectionId, + QueryType: icqtypes.BANK_STORE_QUERY_WITH_PROOF, + RequestData: queryData, + CallbackModule: types.ModuleName, + CallbackId: ICQCallbackID_CommunityPoolIcaBalance, + CallbackData: callbackDataBz, + TimeoutDuration: timeoutDuration, + TimeoutPolicy: icqtypes.TimeoutPolicy_REJECT_QUERY_RESPONSE, + } + if err := k.InterchainQueryKeeper.SubmitICQRequest(ctx, query, false); err != nil { + return errorsmod.Wrapf(err, "Error submitting query for pool ica balance") + } + + return nil +} + +// Liquid stake all native tokens in the stake holding address +func (k Keeper) LiquidStakeCommunityPoolTokens(ctx sdk.Context, hostZone types.HostZone) error { + // Get the number of native tokens in the stake address + // The native tokens will be an ibc denom since they've been transferred to stride + communityPoolStakeAddress, err := sdk.AccAddressFromBech32(hostZone.CommunityPoolStakeHoldingAddress) + if err != nil { + return err + } + nativeTokens := k.bankKeeper.GetBalance(ctx, communityPoolStakeAddress, hostZone.IbcDenom) + + // If there aren't enough tokens, do nothing + // (consider specifying a minimum here) + if nativeTokens.Amount.LTE(sdkmath.ZeroInt()) { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "No community pool tokens to liquid stake")) + return nil + } + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Liquid staking community pool tokens: %+v", nativeTokens)) + + // TODO: Move LS function to keeper method instead of message server + // Liquid stake the balance in the stake holding account + msgServer := NewMsgServerImpl(k) + liquidStakeRequest := types.MsgLiquidStake{ + Creator: hostZone.CommunityPoolStakeHoldingAddress, + Amount: nativeTokens.Amount, + HostDenom: hostZone.HostDenom, + } + resp, err := msgServer.LiquidStake(ctx, &liquidStakeRequest) + if err != nil { + return types.ErrFailedToLiquidStake.Wrapf(err.Error()) + } + + // If the liquid stake was successful, transfer the stTokens to the return ICA + return k.TransferHoldingToCommunityPoolReturn(ctx, hostZone, resp.StToken) +} + +// Redeem all the stTokens in the redeem holding address +func (k Keeper) RedeemCommunityPoolTokens(ctx sdk.Context, hostZone types.HostZone) error { + // Get the number of stTokens in the redeem address + communityPoolRedeemAddress, err := sdk.AccAddressFromBech32(hostZone.CommunityPoolRedeemHoldingAddress) + if err != nil { + return err + } + stDenom := types.StAssetDenomFromHostZoneDenom(hostZone.HostDenom) + stTokens := k.bankKeeper.GetBalance(ctx, communityPoolRedeemAddress, stDenom) + + // If there aren't enough tokens, do nothing + // (consider a greater than zero minimum threshold to avoid extra transfers) + if stTokens.Amount.LTE(sdkmath.ZeroInt()) { + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "No community pool tokens to redeem")) + return nil + } + k.Logger(ctx).Info(utils.LogWithHostZone(hostZone.ChainId, "Redeeming community pool tokens: %+v", stTokens)) + + // TODO: Move Redeem function to keeper method instead of message server + // Redeem the stTokens in the redeem holding account + // The return ICA address will be the recipient of the claim + msgServer := NewMsgServerImpl(k) + redeemStakeRequest := types.MsgRedeemStake{ + Creator: hostZone.CommunityPoolRedeemHoldingAddress, + Amount: stTokens.Amount, + HostZone: hostZone.ChainId, + Receiver: hostZone.CommunityPoolReturnIcaAddress, + } + if _, err := msgServer.RedeemStake(ctx, &redeemStakeRequest); err != nil { + return types.ErrUnableToRedeemStake.Wrapf(err.Error()) + } + + return nil +} + +// Using tokens in the CommunityPoolReturnIcaAddress, trigger ICA tx to fund community pool +// Note: The denom of the passed in token has to be the denom which exists on the hostZone not Stride +func (k Keeper) FundCommunityPool(ctx sdk.Context, hostZone types.HostZone, token sdk.Coin) error { + fundCoins := sdk.NewCoins(token) + + var msgs []proto.Message + msgs = append(msgs, &disttypes.MsgFundCommunityPool{ + Amount: fundCoins, + Depositor: hostZone.CommunityPoolReturnIcaAddress, + }) + + // Timeout the ICA at the end of the epoch + strideEpochTracker, found := k.GetEpochTracker(ctx, epochstypes.STRIDE_EPOCH) + if !found { + return errorsmod.Wrapf(types.ErrEpochNotFound, epochstypes.STRIDE_EPOCH) + } + timeoutTimestamp := uint64(strideEpochTracker.NextEpochStartTime) + + // No need to build ICA callback data or input an ICA callback method + icaCallbackId := "" + var icaCallbackData []byte + + // Send the transaction through SubmitTx to kick off ICA command + _, err := k.SubmitTxs(ctx, + hostZone.ConnectionId, + msgs, + types.ICAAccountType_COMMUNITY_POOL_RETURN, + timeoutTimestamp, + icaCallbackId, + icaCallbackData) + if err != nil { + return errorsmod.Wrapf(err, "Failed to SubmitTxs for FundCommunityPool, Messages: %+v", msgs) + } + + return nil +} diff --git a/x/stakeibc/keeper/community_pool_test.go b/x/stakeibc/keeper/community_pool_test.go new file mode 100644 index 0000000000..604a1f139a --- /dev/null +++ b/x/stakeibc/keeper/community_pool_test.go @@ -0,0 +1,440 @@ +package keeper_test + +import ( + "time" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/gogoproto/proto" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + recordtypes "github.com/Stride-Labs/stride/v16/x/records/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/keeper" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" +) + +// ----------------------------- +// Query Community Pool Balances +// ----------------------------- + +type QueryCommunityPoolBalanceTestCase struct { + hostZone types.HostZone + timeoutDuration time.Duration + expectedTimeout uint64 +} + +func (s *KeeperTestSuite) SetupQueryCommunityPoolBalance(icaAccountType types.ICAAccountType) QueryCommunityPoolBalanceTestCase { + // We need to register the transfer channel to initialize the light client state + s.CreateTransferChannel(HostChainId) + + // Create host zone + // We must use valid addresses for each ICA since they're serialized for the query request + depositAddress := s.TestAccs[0] + returnAddress := s.TestAccs[1] + hostZone := types.HostZone{ + ChainId: HostChainId, + ConnectionId: ibctesting.FirstConnectionID, + CommunityPoolDepositIcaAddress: depositAddress.String(), + CommunityPoolReturnIcaAddress: returnAddress.String(), + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Create epoch tracker for timeout + timeoutDuration := time.Second * 30 + epochEndTime := uint64(s.Ctx.BlockTime().Add(timeoutDuration).UnixNano()) + epochTracker := types.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + NextEpochStartTime: epochEndTime, + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + + return QueryCommunityPoolBalanceTestCase{ + hostZone: hostZone, + timeoutDuration: timeoutDuration, + expectedTimeout: epochEndTime, + } +} + +// Helper function to verify the query that was submitted from the community pool balance query +func (s *KeeperTestSuite) checkCommunityPoolQuerySubmission( + tc QueryCommunityPoolBalanceTestCase, + icaAccountType types.ICAAccountType, +) { + // Check that one query was submitted + queries := s.App.InterchainqueryKeeper.AllQueries(s.Ctx) + s.Require().Len(queries, 1, "there should have been 1 query submitted") + query := queries[0] + + // Confirm query contents + s.Require().Equal(tc.hostZone.ChainId, query.ChainId, "query chain ID") + s.Require().Equal(tc.hostZone.ConnectionId, query.ConnectionId, "query connection ID") + s.Require().Equal(icqtypes.BANK_STORE_QUERY_WITH_PROOF, query.QueryType, "query type") + s.Require().Equal(icqtypes.TimeoutPolicy_REJECT_QUERY_RESPONSE, query.TimeoutPolicy, "query timeout policy") + + // Confirm query timeout info + s.Require().Equal(tc.timeoutDuration, query.TimeoutDuration, "query callback id") + s.Require().Equal(tc.expectedTimeout, query.TimeoutTimestamp, "query callback id") + + // Confirm callback data + s.Require().Equal(types.ModuleName, query.CallbackModule, "query callback module") + s.Require().Equal(keeper.ICQCallbackID_CommunityPoolIcaBalance, query.CallbackId, "query callback id") + + var actualCallbackData types.CommunityPoolBalanceQueryCallback + err := proto.Unmarshal(query.CallbackData, &actualCallbackData) + s.Require().NoError(err, "no error expected when unmarshalling callback data") + + expectedCallbackData := types.CommunityPoolBalanceQueryCallback{ + IcaType: icaAccountType, + Denom: Atom, + } + s.Require().Equal(expectedCallbackData, actualCallbackData, "query callabck data") + + // Confirm query request info + expectedIcaAddress := tc.hostZone.CommunityPoolDepositIcaAddress + if icaAccountType == types.ICAAccountType_COMMUNITY_POOL_RETURN { + expectedIcaAddress = tc.hostZone.CommunityPoolReturnIcaAddress + } + requestData := query.RequestData[1:] // Remove BalancePrefix byte + actualAddress, actualDenom, err := banktypes.AddressAndDenomFromBalancesStore(requestData) + s.Require().NoError(err, "no error expected when retrieving address and denom from store key") + s.Require().Equal(expectedIcaAddress, actualAddress.String(), "query account address") + s.Require().Equal(Atom, actualDenom, "query denom") +} + +// Tests a community pool balance query to the deposit ICA account +func (s *KeeperTestSuite) TestQueryCommunityPoolBalance_Successful_Deposit() { + icaAccountType := types.ICAAccountType_COMMUNITY_POOL_DEPOSIT + tc := s.SetupQueryCommunityPoolBalance(icaAccountType) + + err := s.App.StakeibcKeeper.QueryCommunityPoolIcaBalance(s.Ctx, tc.hostZone, icaAccountType, Atom) + s.Require().NoError(err, "no error expected when querying pool balance") + + s.checkCommunityPoolQuerySubmission(tc, icaAccountType) +} + +// Tests a community pool balance query to the return ICA account +func (s *KeeperTestSuite) TestQueryCommunityPoolBalance_Successful_Return() { + icaAccountType := types.ICAAccountType_COMMUNITY_POOL_RETURN + tc := s.SetupQueryCommunityPoolBalance(icaAccountType) + + err := s.App.StakeibcKeeper.QueryCommunityPoolIcaBalance(s.Ctx, tc.hostZone, icaAccountType, Atom) + s.Require().NoError(err, "no error expected when querying pool balance") + + s.checkCommunityPoolQuerySubmission(tc, icaAccountType) +} + +// Tests a community pool balance query that fails due to an invalid account type +func (s *KeeperTestSuite) TestQueryCommunityPoolBalance_Failure_InvalidAccountType() { + icaAccountType := types.ICAAccountType_COMMUNITY_POOL_DEPOSIT + tc := s.SetupQueryCommunityPoolBalance(icaAccountType) + + invalidAccountType := types.ICAAccountType_DELEGATION + err := s.App.StakeibcKeeper.QueryCommunityPoolIcaBalance(s.Ctx, tc.hostZone, invalidAccountType, Atom) + s.Require().ErrorContains(err, "icaType must be either deposit or return!") +} + +// Tests a community pool balance query that fails due to an invalid account address +func (s *KeeperTestSuite) TestQueryCommunityPoolBalance_Failure_InvalidAccountAddress() { + icaAccountType := types.ICAAccountType_COMMUNITY_POOL_DEPOSIT + tc := s.SetupQueryCommunityPoolBalance(icaAccountType) + + // Change the host zone account address to be invalid + invalidHostZone := tc.hostZone + invalidHostZone.CommunityPoolDepositIcaAddress = "invalid_address" + + err := s.App.StakeibcKeeper.QueryCommunityPoolIcaBalance(s.Ctx, invalidHostZone, icaAccountType, Atom) + s.Require().ErrorContains(err, "invalid COMMUNITY_POOL_DEPOSIT address, could not decode (invalid_address)") +} + +// Tests a community pool balance query that fails due to a missing epoch tracker +func (s *KeeperTestSuite) TestQueryCommunityPoolBalance_Failure_MissingEpoch() { + icaAccountType := types.ICAAccountType_COMMUNITY_POOL_DEPOSIT + tc := s.SetupQueryCommunityPoolBalance(icaAccountType) + + // Remove the stride epoch so the test fails + s.App.StakeibcKeeper.RemoveEpochTracker(s.Ctx, epochtypes.STRIDE_EPOCH) + + err := s.App.StakeibcKeeper.QueryCommunityPoolIcaBalance(s.Ctx, tc.hostZone, icaAccountType, Atom) + s.Require().ErrorContains(err, "stride_epoch: epoch not found") +} + +// Tests a community pool balance query that fails to submit the query +func (s *KeeperTestSuite) TestQueryCommunityPoolBalance_FailedQuerySubmission() { + icaAccountType := types.ICAAccountType_COMMUNITY_POOL_DEPOSIT + tc := s.SetupQueryCommunityPoolBalance(icaAccountType) + + // Set an invalid connection ID for the host zone so that the query submission fails + invalidHostZone := tc.hostZone + invalidHostZone.ConnectionId = "invalid_connection" + + err := s.App.StakeibcKeeper.QueryCommunityPoolIcaBalance(s.Ctx, invalidHostZone, icaAccountType, Atom) + s.Require().ErrorContains(err, "Error submitting query for pool ica balance") +} + +// ---------------------------------- +// Liquid Stake Community Pool Tokens +// ---------------------------------- + +type LiquidStakeCommunityPoolTokensTestCase struct { + hostZone types.HostZone + initialNativeTokens sdkmath.Int + initialDummyTokens sdkmath.Int +} + +func (s *KeeperTestSuite) SetupLiquidStakeCommunityPoolTokens() LiquidStakeCommunityPoolTokensTestCase { + s.CreateTransferChannel(HostChainId) + + // Create relevant module and ICA accounts + depositAddress := s.TestAccs[0] + communityPoolHoldingAddress := s.TestAccs[1] + communityPoolReturnICAAddress := s.TestAccs[2] + + // Create a host zone with valid addresses to perform the liquid stake + hostZone := types.HostZone{ + ChainId: HostChainId, + HostDenom: Atom, + IbcDenom: IbcAtom, + TransferChannelId: ibctesting.FirstChannelID, + CommunityPoolStakeHoldingAddress: communityPoolHoldingAddress.String(), + CommunityPoolReturnIcaAddress: communityPoolReturnICAAddress.String(), + DepositAddress: depositAddress.String(), + RedemptionRate: sdk.OneDec(), + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Create the epoch tracker and deposit records so the liquid stake succeeds + epochNumber := uint64(1) + epochTracker := types.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + EpochNumber: epochNumber, + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000), // dictates transfer timeout + } + depositRecord := recordtypes.DepositRecord{ + Id: epochNumber, + DepositEpochNumber: epochNumber, + HostZoneId: HostChainId, + Status: recordtypes.DepositRecord_TRANSFER_QUEUE, + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + s.App.RecordsKeeper.SetDepositRecord(s.Ctx, depositRecord) + + // Fund the holding address with native tokens (in IBC form) and + // some dummy tokens that should not get touched by these functions + initialNativeTokens := sdk.NewInt(1000) + initialDummyTokens := sdk.NewInt(999) + s.FundAccount(communityPoolHoldingAddress, sdk.NewCoin(IbcAtom, initialNativeTokens)) + s.FundAccount(communityPoolHoldingAddress, sdk.NewCoin(Atom, initialDummyTokens)) // dummy token + s.FundAccount(communityPoolHoldingAddress, sdk.NewCoin(StAtom, initialDummyTokens)) // dummy token + + return LiquidStakeCommunityPoolTokensTestCase{ + hostZone: hostZone, + initialNativeTokens: initialNativeTokens, + initialDummyTokens: initialDummyTokens, + } +} + +func (s *KeeperTestSuite) TestLiquidStakeCommunityPoolTokens_Success() { + tc := s.SetupLiquidStakeCommunityPoolTokens() + + transferPortId := transfertypes.PortID + transferChannelId := ibctesting.FirstChannelID + communityPoolHoldingAddress := sdk.MustAccAddressFromBech32(tc.hostZone.CommunityPoolStakeHoldingAddress) + + // Call liquid stake which should convert the whole native tokens amount to stTokens and transfer it + err := s.App.StakeibcKeeper.LiquidStakeCommunityPoolTokens(s.Ctx, tc.hostZone) + s.Require().NoError(err, "no error expected during liquid stake") + + // Confirm there are no longer native tokens in the holding address + ibcAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, communityPoolHoldingAddress, IbcAtom) + s.Require().Zero(ibcAtomBalance.Amount.Int64(), "balance of holding address should be zero") + + // Confirm the dummy tokens are still present + dummyTokenBalance1 := s.App.BankKeeper.GetBalance(s.Ctx, communityPoolHoldingAddress, Atom) + dummyTokenBalance2 := s.App.BankKeeper.GetBalance(s.Ctx, communityPoolHoldingAddress, StAtom) + s.Require().Equal(tc.initialDummyTokens, dummyTokenBalance2.Amount, "dummy token 2 was not touched") + s.Require().Equal(tc.initialDummyTokens, dummyTokenBalance1.Amount, "dummy token 1 was not touched") + + // Confirm the stTokens have been escrowed as a result of the transfer + escrowAddress := transfertypes.GetEscrowAddress(transferPortId, transferChannelId) + stTokenEscrowBalance := s.App.BankKeeper.GetBalance(s.Ctx, escrowAddress, StAtom) + s.Require().Equal(tc.initialNativeTokens.Int64(), stTokenEscrowBalance.Amount.Int64(), "st token escrow balance") + + // Check that if we run the liquid stake function again, nothing should get transferred + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, transferPortId, transferChannelId) + s.Require().True(found, "sequence number not found before liquid stake") + + err = s.App.StakeibcKeeper.LiquidStakeCommunityPoolTokens(s.Ctx, tc.hostZone) + s.Require().NoError(err, "no error expected during second liquid stake") + + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, transferPortId, transferChannelId) + s.Require().True(found, "sequence number not found after after liquid stake") + + s.Require().Equal(startSequence, endSequence, "no transfer should have been initiated") +} + +// Test liquid stake with an invalid stake holding address +func (s *KeeperTestSuite) TestLiquidStakeCommunityPoolTokens_Failure_InvalidAddress() { + tc := s.SetupLiquidStakeCommunityPoolTokens() + + invalidHostZone := tc.hostZone + invalidHostZone.CommunityPoolStakeHoldingAddress = "invalid" + + err := s.App.StakeibcKeeper.LiquidStakeCommunityPoolTokens(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "decoding bech32 failed") +} + +// Test liquid stake with an invalid host denom, which should cause the liquid stake to fail +func (s *KeeperTestSuite) TestLiquidStakeCommunityPoolTokens_LiquidStakeFailure() { + tc := s.SetupLiquidStakeCommunityPoolTokens() + + invalidHostZone := tc.hostZone + invalidHostZone.HostDenom = "invalid" + + err := s.App.StakeibcKeeper.LiquidStakeCommunityPoolTokens(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "Failed to liquid stake") +} + +// Set an invalid transfer channel on the host so that the transfer fails +func (s *KeeperTestSuite) TestLiquidStakeCommunityPoolTokens_TransferFailure() { + tc := s.SetupLiquidStakeCommunityPoolTokens() + + invalidHostZone := tc.hostZone + invalidHostZone.TransferChannelId = "channel-X" + + err := s.App.StakeibcKeeper.LiquidStakeCommunityPoolTokens(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "Error submitting ibc transfer") +} + +// ---------------------------------- +// Redeem Community Pool Tokens +// ---------------------------------- + +type RedeemCommunityPoolTokensTestCase struct { + hostZone types.HostZone + initialDummyTokens sdkmath.Int + communityPoolHoldingAddress sdk.AccAddress +} + +func (s *KeeperTestSuite) SetupRedeemCommunityPoolTokens() RedeemCommunityPoolTokensTestCase { + s.CreateTransferChannel(HostChainId) + + // Create relevant module and ICA accounts + depositAddress := s.TestAccs[0] + communityPoolHoldingAddress := s.TestAccs[1] + communityPoolReturnICAAddress := HostICAAddress // need an address on HostChain (starts cosmos) + + // stTokens which will be redeemed, dummy tokens which should not be touched + initialStTokens := sdk.NewInt(1000) + initialDummyTokens := sdk.NewInt(999) + + // Fund the redeem holding address with stTokens and + // some dummy tokens that should not get touched while redeeming + stDenom := types.StAssetDenomFromHostZoneDenom(Atom) + s.FundAccount(communityPoolHoldingAddress, sdk.NewCoin(stDenom, initialStTokens)) + s.FundAccount(communityPoolHoldingAddress, sdk.NewCoin(Atom, initialDummyTokens)) // dummy token + s.FundAccount(communityPoolHoldingAddress, sdk.NewCoin(IbcAtom, initialDummyTokens)) // dummy token + + // Create a host zone with valid addresses to perform the liquid stake + hostZone := types.HostZone{ + ChainId: HostChainId, //GAIA + Bech32Prefix: Bech32Prefix, //cosmos + HostDenom: Atom, + IbcDenom: IbcAtom, + TransferChannelId: ibctesting.FirstChannelID, + CommunityPoolRedeemHoldingAddress: communityPoolHoldingAddress.String(), + CommunityPoolReturnIcaAddress: communityPoolReturnICAAddress, + DepositAddress: depositAddress.String(), + TotalDelegations: initialStTokens, // at least as much as we are trying to redeem + RedemptionRate: sdk.OneDec(), + } + s.App.StakeibcKeeper.SetHostZone(s.Ctx, hostZone) + + // Create the epoch tracker and deposit records so the liquid stake succeeds + epochNumber := uint64(1) + epochTracker := types.EpochTracker{ + EpochIdentifier: epochtypes.DAY_EPOCH, + EpochNumber: epochNumber, + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, epochTracker) + + // Setup the epoch unbonding record with a HostZoneUnbonding for the hostZone + var unbondings []*recordtypes.HostZoneUnbonding + unbonding := &recordtypes.HostZoneUnbonding{ + HostZoneId: HostChainId, + } + unbondings = append(unbondings, unbonding) + epochUnbondingRecord := recordtypes.EpochUnbondingRecord{ + EpochNumber: epochNumber, + HostZoneUnbondings: unbondings, + } + s.App.RecordsKeeper.SetEpochUnbondingRecord(s.Ctx, epochUnbondingRecord) + + return RedeemCommunityPoolTokensTestCase{ + hostZone: hostZone, + initialDummyTokens: initialDummyTokens, + communityPoolHoldingAddress: communityPoolHoldingAddress, + } +} + +func (s *KeeperTestSuite) TestRedeemCommunityPoolTokens_Success() { + tc := s.SetupRedeemCommunityPoolTokens() + + // Verify that no user redemption records exist yet + userRedemptionRecords := s.App.RecordsKeeper.GetAllUserRedemptionRecord(s.Ctx) + s.Require().Zero(len(userRedemptionRecords), "No user redemption records expected yet") + + // Call redeem stake which should start the unbonding for the stToken amount + err := s.App.StakeibcKeeper.RedeemCommunityPoolTokens(s.Ctx, tc.hostZone) + s.Require().NoError(err, "no error expected during redeem stake") + + // Check that a new user redemption record was created from the call to redeem + userRedemptionRecords = s.App.RecordsKeeper.GetAllUserRedemptionRecord(s.Ctx) + s.Require().Equal(1, len(userRedemptionRecords), "New user redemption records should be created") + + // Confirm there are no longer staked tokens in the holding address after redeem + stDenom := types.StAssetDenomFromHostZoneDenom(tc.hostZone.HostDenom) + stAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.communityPoolHoldingAddress, stDenom) + s.Require().Zero(stAtomBalance.Amount.Int64(), "balance of redeem holidng address should be zero") + + // Confirm the dummy tokens were untouched by the redeem call + atomBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.communityPoolHoldingAddress, Atom) + ibcAtomBalance := s.App.BankKeeper.GetBalance(s.Ctx, tc.communityPoolHoldingAddress, IbcAtom) + s.Require().Equal(tc.initialDummyTokens.Int64(), atomBalance.Amount.Int64(), "Atom tokens should not be touched") + s.Require().Equal(tc.initialDummyTokens.Int64(), ibcAtomBalance.Amount.Int64(), "IbcAtom tokens should not be touched") + + // Call redeem stake again but now there is no more stTokens to be redeemed. + err = s.App.StakeibcKeeper.RedeemCommunityPoolTokens(s.Ctx, tc.hostZone) + s.Require().NoError(err, "no error expected during redeem stake") + + // Check that no new user redemption records were created from the second call to redeem + userRedemptionRecords = s.App.RecordsKeeper.GetAllUserRedemptionRecord(s.Ctx) + s.Require().Equal(1, len(userRedemptionRecords), "New user redemption records should be created") +} + +// Test redeem stake with an invalid redeem holding address +func (s *KeeperTestSuite) TestRedeemCommunityPoolTokens_Failure_InvalidAddress() { + tc := s.SetupRedeemCommunityPoolTokens() + + invalidHostZone := tc.hostZone + invalidHostZone.CommunityPoolRedeemHoldingAddress = "invalid" + + err := s.App.StakeibcKeeper.RedeemCommunityPoolTokens(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "decoding bech32 failed") +} + +// Test redeem stake with an invalid redeem holding address +func (s *KeeperTestSuite) TestRedeemCommunityPoolTokens_Failure_NotEnoughDelegations() { + tc := s.SetupRedeemCommunityPoolTokens() + + invalidHostZone := tc.hostZone + invalidHostZone.TotalDelegations = sdk.ZeroInt() + s.App.StakeibcKeeper.SetHostZone(s.Ctx, invalidHostZone) + + err := s.App.StakeibcKeeper.RedeemCommunityPoolTokens(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "invalid amount") +} diff --git a/x/stakeibc/keeper/hooks.go b/x/stakeibc/keeper/hooks.go index cb08420972..1282481d8d 100644 --- a/x/stakeibc/keeper/hooks.go +++ b/x/stakeibc/keeper/hooks.go @@ -80,6 +80,9 @@ func (k Keeper) BeforeEpochStart(ctx sdk.Context, epochInfo epochstypes.EpochInf if epochNumber%StrideEpochsPerDayEpoch == 0 { k.RebalanceAllHostZones(ctx) } + + // Transfers in and out of tokens for hostZones which have community pools + k.ProcessAllCommunityPoolTokens(ctx) } if epochInfo.Identifier == epochstypes.MINT_EPOCH { k.AllocateHostZoneReward(ctx) diff --git a/x/stakeibc/keeper/icqcallbacks.go b/x/stakeibc/keeper/icqcallbacks.go index 0b2a96f747..23d004edec 100644 --- a/x/stakeibc/keeper/icqcallbacks.go +++ b/x/stakeibc/keeper/icqcallbacks.go @@ -7,11 +7,12 @@ import ( ) const ( - ICQCallbackID_WithdrawalBalance = "withdrawalbalance" - ICQCallbackID_FeeBalance = "feebalance" - ICQCallbackID_Delegation = "delegation" - ICQCallbackID_Validator = "validator" - ICQCallbackID_Calibrate = "calibrate" + ICQCallbackID_WithdrawalBalance = "withdrawalbalance" + ICQCallbackID_FeeBalance = "feebalance" + ICQCallbackID_Delegation = "delegation" + ICQCallbackID_Validator = "validator" + ICQCallbackID_Calibrate = "calibrate" + ICQCallbackID_CommunityPoolIcaBalance = "communitypoolicabalance" ) // ICQCallbacks wrapper struct for stakeibc keeper @@ -48,5 +49,6 @@ func (c ICQCallbacks) RegisterICQCallbacks() icqtypes.QueryCallbacks { AddICQCallback(ICQCallbackID_FeeBalance, ICQCallback(FeeBalanceCallback)). AddICQCallback(ICQCallbackID_Delegation, ICQCallback(DelegatorSharesCallback)). AddICQCallback(ICQCallbackID_Validator, ICQCallback(ValidatorSharesToTokensRateCallback)). - AddICQCallback(ICQCallbackID_Calibrate, ICQCallback(CalibrateDelegationCallback)) + AddICQCallback(ICQCallbackID_Calibrate, ICQCallback(CalibrateDelegationCallback)). + AddICQCallback(ICQCallbackID_CommunityPoolIcaBalance, ICQCallback(CommunityPoolIcaBalanceCallback)) } diff --git a/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go b/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go new file mode 100644 index 0000000000..8beff72805 --- /dev/null +++ b/x/stakeibc/keeper/icqcallbacks_community_pool_ica_balance.go @@ -0,0 +1,87 @@ +package keeper + +import ( + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + proto "github.com/cosmos/gogoproto/proto" + + errorsmod "cosmossdk.io/errors" + + "github.com/Stride-Labs/stride/v16/utils" + icqkeeper "github.com/Stride-Labs/stride/v16/x/interchainquery/keeper" + icqtypes "github.com/Stride-Labs/stride/v16/x/interchainquery/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" +) + +// CommunityPoolBalanceCallback is a callback handler for CommunityPoolBalance queries. +// The query response will return the balance for a specific denom in the deposit or return ica + +// If the address queried was the deposit ICA address, call TransferCommunityPoolDepositToHolding +// If the address queried was the return ICA address, call FundCommunityPool + +// Note: for now, to get proofs in your ICQs, you need to query the entire store on the host zone! e.g. "store/bank/key" +func CommunityPoolIcaBalanceCallback(k Keeper, ctx sdk.Context, args []byte, query icqtypes.Query) error { + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(query.ChainId, ICQCallbackID_CommunityPoolIcaBalance, + "Starting community pool balance callback, QueryId: %vs, QueryType: %s, Connection: %s", + query.Id, query.QueryType, query.ConnectionId)) + + // Confirm host exists + chainId := query.ChainId + hostZone, found := k.GetHostZone(ctx, chainId) + if !found { + return errorsmod.Wrapf(types.ErrHostZoneNotFound, "no registered zone for queried chain ID (%s)", chainId) + } + + // Unmarshal the query response args to determine the balance, denom, and icaType + // get amount from the query response, get denom and icaType from marshalled callback data + amount, err := icqkeeper.UnmarshalAmountFromBalanceQuery(k.cdc, args) + if err != nil { + return errorsmod.Wrap(err, "unable to determine amount from query response") + } + + // Unmarshal the callback data containing the denom being queried + var callbackData types.CommunityPoolBalanceQueryCallback + if err := proto.Unmarshal(query.CallbackData, &callbackData); err != nil { + return errorsmod.Wrapf(err, "unable to unmarshal community pool balance query callback data") + } + icaType := callbackData.IcaType + denom := callbackData.Denom + + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_CommunityPoolIcaBalance, + "Query response - Community Pool Balance: %+v %s %s", amount, icaType.String(), denom)) + + // Confirm the balance is greater than zero for now... + // ...perhaps use a positive threshold in the future to avoid work when transfer would be small + if amount.LTE(sdkmath.ZeroInt()) { + k.Logger(ctx).Info(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_CommunityPoolIcaBalance, + "No need to transfer tokens -- not enough found %v %s", amount, denom)) + return nil + } + + token := sdk.NewCoin(denom, amount) + + // Based on the account type, we kick off the relevant ICA (transfer or fund) + // If either of the ICAs fails midway through it's invocation, we swallow the + // error and revert any partial state so that the query response submission can finish + if icaType == types.ICAAccountType_COMMUNITY_POOL_DEPOSIT { + // Send ICA msg to kick off transfer from deposit ICA to stake holding address + err := utils.ApplyFuncIfNoError(ctx, func(c sdk.Context) error { + return k.TransferCommunityPoolDepositToHolding(ctx, hostZone, token) + }) + if err != nil { + k.Logger(ctx).Error(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_CommunityPoolIcaBalance, + "Initiating transfer to holding address failed: %s", err.Error())) + } + } else if icaType == types.ICAAccountType_COMMUNITY_POOL_RETURN { + // Send ICA msg to FundCommunityPool with token found in return ICA + err := utils.ApplyFuncIfNoError(ctx, func(c sdk.Context) error { + return k.FundCommunityPool(ctx, hostZone, token) + }) + if err != nil { + k.Logger(ctx).Error(utils.LogICQCallbackWithHostZone(chainId, ICQCallbackID_CommunityPoolIcaBalance, + "Initiating community pool fund failed: %s", err.Error())) + } + } + + return nil +} diff --git a/x/stakeibc/keeper/keeper_test.go b/x/stakeibc/keeper/keeper_test.go index dc8cc0b0d4..c5088e06a2 100644 --- a/x/stakeibc/keeper/keeper_test.go +++ b/x/stakeibc/keeper/keeper_test.go @@ -26,7 +26,7 @@ const ( OsmoChainId = "OSMO" ValAddress = "cosmosvaloper1uk4ze0x4nvh4fk0xm4jdud58eqn4yxhrdt795p" - DelegationICAAddress = "cosmos1gcx4yeplccq9nk6awzmm0gq8jf7yet80qj70tkwy0mz7pg87nepswn2dj8" + HostICAAddress = "cosmos1gcx4yeplccq9nk6awzmm0gq8jf7yet80qj70tkwy0mz7pg87nepswn2dj8" LSMTokenBaseDenom = ValAddress + "/32" ) diff --git a/x/stakeibc/keeper/lsm_test.go b/x/stakeibc/keeper/lsm_test.go index dfeb0c713e..dafc943fa7 100644 --- a/x/stakeibc/keeper/lsm_test.go +++ b/x/stakeibc/keeper/lsm_test.go @@ -508,7 +508,7 @@ func (s *KeeperTestSuite) TestTransferAllLSMDeposits() { ChainId: HostChainId, TransferChannelId: ibctesting.FirstChannelID, DepositAddress: s.TestAccs[1].String(), - DelegationIcaAddress: DelegationICAAddress, + DelegationIcaAddress: HostICAAddress, }, { // Missing delegation ICA diff --git a/x/stakeibc/keeper/msg_server_liquid_stake.go b/x/stakeibc/keeper/msg_server_liquid_stake.go index abfbd35d02..fa81225d8c 100644 --- a/x/stakeibc/keeper/msg_server_liquid_stake.go +++ b/x/stakeibc/keeper/msg_server_liquid_stake.go @@ -106,5 +106,5 @@ func (k msgServer) LiquidStake(goCtx context.Context, msg *types.MsgLiquidStake) EmitSuccessfulLiquidStakeEvent(ctx, msg, *hostZone, stAmount) k.hooks.AfterLiquidStake(ctx, liquidStakerAddress) - return &types.MsgLiquidStakeResponse{}, nil + return &types.MsgLiquidStakeResponse{StToken: stCoin}, nil } diff --git a/x/stakeibc/keeper/msg_server_register_host_zone.go b/x/stakeibc/keeper/msg_server_register_host_zone.go index 5a3acc57cc..9d25bbf2b9 100644 --- a/x/stakeibc/keeper/msg_server_register_host_zone.go +++ b/x/stakeibc/keeper/msg_server_register_host_zone.go @@ -72,7 +72,17 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste // create and save the zones's module account depositAddress := types.NewHostZoneDepositAddress(chainId) if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, depositAddress); err != nil { - return nil, errorsmod.Wrapf(err, "unable to create module account for host zone %s", chainId) + return nil, errorsmod.Wrapf(err, "unable to create deposit account for host zone %s", chainId) + } + + // Create the host zone's community pool holding accounts + communityPoolStakeAddress := types.NewHostZoneModuleAddress(chainId, "community-pool-stake") + communityPoolRedeemAddress := types.NewHostZoneModuleAddress(chainId, "community-pool-redeem") + if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, communityPoolStakeAddress); err != nil { + return nil, errorsmod.Wrapf(err, "unable to create community pool stake account for host zone %s", chainId) + } + if err := utils.CreateModuleAccount(ctx, k.AccountKeeper, communityPoolRedeemAddress); err != nil { + return nil, errorsmod.Wrapf(err, "unable to create community pool redeem account for host zone %s", chainId) } params := k.GetParams(ctx) @@ -92,12 +102,14 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste HostDenom: msg.HostDenom, TransferChannelId: msg.TransferChannelId, // Start sharesToTokens rate at 1 upon registration - RedemptionRate: sdk.NewDec(1), - LastRedemptionRate: sdk.NewDec(1), - UnbondingPeriod: msg.UnbondingPeriod, - DepositAddress: depositAddress.String(), - MinRedemptionRate: msg.MinRedemptionRate, - MaxRedemptionRate: msg.MaxRedemptionRate, + RedemptionRate: sdk.NewDec(1), + LastRedemptionRate: sdk.NewDec(1), + UnbondingPeriod: msg.UnbondingPeriod, + DepositAddress: depositAddress.String(), + CommunityPoolStakeHoldingAddress: communityPoolStakeAddress.String(), + CommunityPoolRedeemHoldingAddress: communityPoolRedeemAddress.String(), + MinRedemptionRate: msg.MinRedemptionRate, + MaxRedemptionRate: msg.MaxRedemptionRate, // Default the inner bounds to the outer bounds MinInnerRedemptionRate: msg.MinRedemptionRate, MaxInnerRedemptionRate: msg.MaxRedemptionRate, @@ -147,6 +159,18 @@ func (k msgServer) RegisterHostZone(goCtx context.Context, msg *types.MsgRegiste return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, errMsg) } + // create community pool deposit account + communityPoolDepositAccount := types.FormatICAAccountOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, communityPoolDepositAccount, appVersion); err != nil { + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, "failed to register community pool deposit ICA") + } + + // create community pool return account + communityPoolReturnAccount := types.FormatICAAccountOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_RETURN) + if err := k.ICAControllerKeeper.RegisterInterchainAccount(ctx, zone.ConnectionId, communityPoolReturnAccount, appVersion); err != nil { + return nil, errorsmod.Wrapf(types.ErrFailedToRegisterHostZone, "failed to register community pool return ICA") + } + // add this host zone to unbonding hostZones, otherwise users won't be able to unbond // for this host zone until the following day dayEpochTracker, found := k.GetEpochTracker(ctx, epochtypes.DAY_EPOCH) diff --git a/x/stakeibc/keeper/reward_allocation.go b/x/stakeibc/keeper/reward_allocation.go index 6817d45bff..174f3c9586 100644 --- a/x/stakeibc/keeper/reward_allocation.go +++ b/x/stakeibc/keeper/reward_allocation.go @@ -74,6 +74,7 @@ func (k Keeper) SweepStTokensFromRewardCollToFeeColl(ctx sdk.Context) error { // (1) liquid stake reward collector balance, then (2) sweet stTokens from reward collector to fee collector func (k Keeper) AllocateHostZoneReward(ctx sdk.Context) { + // TODO: Move LS function to keeper method instead of message server msgSvr := NewMsgServerImpl(k) if rewardsFound := k.LiquidStakeRewardCollectorBalance(ctx, msgSvr); !rewardsFound { k.Logger(ctx).Info("No accrued rewards in the reward collector account") diff --git a/x/stakeibc/keeper/transfer.go b/x/stakeibc/keeper/transfer.go new file mode 100644 index 0000000000..daa3b26ccf --- /dev/null +++ b/x/stakeibc/keeper/transfer.go @@ -0,0 +1,146 @@ +package keeper + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/cosmos/gogoproto/proto" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + + epochstypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" +) + +// Transfers tokens from the community pool deposit ICA account to the host zone stake holding module address for that pool +func (k Keeper) TransferCommunityPoolDepositToHolding(ctx sdk.Context, hostZone types.HostZone, token sdk.Coin) error { + // Verify that the deposit ica address exists on the host zone and stake holding address exists on stride + if hostZone.CommunityPoolDepositIcaAddress == "" || hostZone.CommunityPoolStakeHoldingAddress == "" { + return types.ErrICAAccountNotFound.Wrap( + "Invalid deposit address or stake holding address, cannot build valid ICA transfer kickoff command") + } + + // get the hostZone counterparty transfer channel for sending tokens from hostZone to Stride + transferChannel, found := k.IBCKeeper.ChannelKeeper.GetChannel(ctx, transfertypes.PortID, hostZone.TransferChannelId) + if !found { + return errorsmod.Wrapf(channeltypes.ErrChannelNotFound, "transfer channel %s not found", hostZone.TransferChannelId) + } + counterpartyChannelId := transferChannel.Counterparty.ChannelId + + // Timeout both the ICA kick off command and the ibc transfer message at the epoch boundary + strideEpochTracker, found := k.GetEpochTracker(ctx, epochstypes.STRIDE_EPOCH) + if !found { + return errorsmod.Wrapf(types.ErrEpochNotFound, epochstypes.STRIDE_EPOCH) + } + endEpochTimestamp := uint64(strideEpochTracker.NextEpochStartTime) + + // Determine the host zone's stToken ibc denom + nativeDenom := hostZone.HostDenom + stIbcDenom, err := k.GetStIbcDenomOnHostZone(ctx, hostZone) + if err != nil { + return err + } + + // If the token is the host zone's native token, we send it to the stake holding address to be liquid staked + // Otherwise, if it's an stToken, we send it to the redeem holding address to be redeemed + var destinationHoldingAddress string + switch token.Denom { + case nativeDenom: + destinationHoldingAddress = hostZone.CommunityPoolStakeHoldingAddress + case stIbcDenom: + destinationHoldingAddress = hostZone.CommunityPoolRedeemHoldingAddress + default: + return fmt.Errorf("Invalid community pool transfer denom: %s", token.Denom) + } + + memo := "" + var msgs []proto.Message + msgs = append(msgs, transfertypes.NewMsgTransfer( + transfertypes.PortID, + counterpartyChannelId, // for transfers of communityPoolHostZone -> Stride + token, + hostZone.CommunityPoolDepositIcaAddress, // ICA controlled address on community pool zone + destinationHoldingAddress, // Stride address, unique to each community pool / hostzone + clienttypes.Height{}, + endEpochTimestamp, + memo, + )) + + // No need to build ICA callback data or input an ICA callback method since the callback Stride can see is only + // the ICA callback, not the actual transfer callback. The transfer ack returns to the hostZone chain not Stride + icaCallbackId := "" + var icaCallbackData []byte + + // Send the transaction through SubmitTx to kick off ICA commands -- no ICA callback method name, or callback args needed + _, err = k.SubmitTxs(ctx, + hostZone.ConnectionId, + msgs, + types.ICAAccountType_COMMUNITY_POOL_DEPOSIT, + endEpochTimestamp, + icaCallbackId, + icaCallbackData) + if err != nil { + return errorsmod.Wrapf(err, "Failed to SubmitTxs, Messages: %v, err: %s", msgs, err.Error()) + } + k.Logger(ctx).Info("Successfully sent ICA command to kick off ibc transfer from deposit ICA to stake holding address") + + return nil +} + +// Transfers a recently minted stToken from the stride-side stake holding address to the return ICA address on the host zone +func (k Keeper) TransferHoldingToCommunityPoolReturn(ctx sdk.Context, hostZone types.HostZone, coin sdk.Coin) error { + memo := "" + strideEpochTracker, found := k.GetEpochTracker(ctx, epochstypes.STRIDE_EPOCH) + if !found { + return errorsmod.Wrapf(types.ErrEpochNotFound, epochstypes.STRIDE_EPOCH) + } + endEpochTimestamp := uint64(strideEpochTracker.NextEpochStartTime) + + // build and send an IBC message for the coin to transfer it back to the hostZone + msg := transfertypes.NewMsgTransfer( + transfertypes.PortID, + hostZone.TransferChannelId, + coin, + hostZone.CommunityPoolStakeHoldingAddress, // from Stride address, unique to each community pool / hostzone + hostZone.CommunityPoolReturnIcaAddress, // to ICA controlled address on foreign hub + clienttypes.Height{}, + endEpochTimestamp, + memo, + ) + + msgTransferResponse, err := k.RecordsKeeper.TransferKeeper.Transfer(sdk.WrapSDKContext(ctx), msg) + if err != nil { + return errorsmod.Wrapf(err, "Error submitting ibc transfer for %+v", coin) + } + + result := fmt.Sprintf("Successfully submitted ibctransfer for %+v with response %+v", + coin, msgTransferResponse) + k.Logger(ctx).Info(result) + + return nil +} + +// given a hostZone with native denom, returns the ibc denom on the zone for the staked stDenom +func (k Keeper) GetStIbcDenomOnHostZone(ctx sdk.Context, hostZone types.HostZone) (ibcStakedDenom string, err error) { + nativeDenom := hostZone.HostDenom + stDenomOnStride := types.StAssetDenomFromHostZoneDenom(nativeDenom) + + // use counterparty transfer channel because tokens come through this channel to hostZone + transferChannel, found := k.IBCKeeper.ChannelKeeper.GetChannel(ctx, transfertypes.PortID, hostZone.TransferChannelId) + if !found { + return "", channeltypes.ErrChannelNotFound.Wrap(hostZone.TransferChannelId) + } + + counterpartyChannelId := transferChannel.Counterparty.ChannelId + if counterpartyChannelId == "" { + return "", channeltypes.ErrChannelNotFound.Wrapf("counterparty channel not found for %s", hostZone.TransferChannelId) + } + + sourcePrefix := transfertypes.GetDenomPrefix(transfertypes.PortID, counterpartyChannelId) + prefixedDenom := sourcePrefix + stDenomOnStride + + return transfertypes.ParseDenomTrace(prefixedDenom).IBCDenom(), nil +} diff --git a/x/stakeibc/keeper/transfer_test.go b/x/stakeibc/keeper/transfer_test.go new file mode 100644 index 0000000000..c6f5309223 --- /dev/null +++ b/x/stakeibc/keeper/transfer_test.go @@ -0,0 +1,249 @@ +package keeper_test + +import ( + _ "github.com/stretchr/testify/suite" + + sdk "github.com/cosmos/cosmos-sdk/types" + transfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types" + ibctesting "github.com/cosmos/ibc-go/v7/testing" + + sdkmath "cosmossdk.io/math" + + epochtypes "github.com/Stride-Labs/stride/v16/x/epochs/types" + "github.com/Stride-Labs/stride/v16/x/stakeibc/types" +) + +const chainId = "GAIA" + +type TransferCommunityPoolDepositToHoldingTestCase struct { + hostZone types.HostZone + coin sdk.Coin + channelId string + portId string +} + +func (s *KeeperTestSuite) SetupTransferCommunityPoolDepositToHolding() TransferCommunityPoolDepositToHoldingTestCase { + owner := types.FormatICAAccountOwner(chainId, types.ICAAccountType_COMMUNITY_POOL_DEPOSIT) + channelId, portId := s.CreateICAChannel(owner) + + holdingAddress := s.TestAccs[0].String() + depositIcaAccount := s.TestAccs[1] + depositIcaAddress := depositIcaAccount.String() + hostZone := types.HostZone{ + ChainId: chainId, + ConnectionId: ibctesting.FirstConnectionID, + TransferChannelId: ibctesting.FirstChannelID, + HostDenom: Atom, + CommunityPoolStakeHoldingAddress: holdingAddress, + CommunityPoolDepositIcaAddress: depositIcaAddress, + } + + strideEpoch := types.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // used for transfer timeout + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpoch) + + balanceToTransfer := sdkmath.NewInt(1_000_000) + coin := sdk.NewCoin(Atom, balanceToTransfer) + s.FundAccount(depositIcaAccount, coin) + + return TransferCommunityPoolDepositToHoldingTestCase{ + hostZone: hostZone, + coin: coin, + channelId: channelId, + portId: portId, + } +} + +func (s *KeeperTestSuite) TestTransferCommunityPoolDepositToHolding_Successful() { + tc := s.SetupTransferCommunityPoolDepositToHolding() + + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.portId, tc.channelId) + s.Require().True(found) + + // Verify that the ICA msg was successfully sent off + err := s.App.StakeibcKeeper.TransferCommunityPoolDepositToHolding(s.Ctx, tc.hostZone, tc.coin) + s.Require().NoError(err) + + // Verify the ICA sequence number incremented + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, tc.portId, tc.channelId) + s.Require().True(found) + s.Require().Equal(endSequence, startSequence+1, "sequence number should have incremented") +} + +func (s *KeeperTestSuite) TestTransferCommunityPoolDepositToHolding_MissingStakeAddressFail() { + tc := s.SetupTransferCommunityPoolDepositToHolding() + tc.hostZone.CommunityPoolStakeHoldingAddress = "" + + // Verify that the ICA msg was successfully sent off + err := s.App.StakeibcKeeper.TransferCommunityPoolDepositToHolding(s.Ctx, tc.hostZone, tc.coin) + s.Require().ErrorContains(err, "holding address") +} + +func (s *KeeperTestSuite) TestTransferCommunityPoolDepositToHolding_MissingDepositFail() { + tc := s.SetupTransferCommunityPoolDepositToHolding() + tc.hostZone.CommunityPoolDepositIcaAddress = "" + + // Verify that the ICA msg was successfully sent off + err := s.App.StakeibcKeeper.TransferCommunityPoolDepositToHolding(s.Ctx, tc.hostZone, tc.coin) + s.Require().ErrorContains(err, "deposit address") +} + +func (s *KeeperTestSuite) TestTransferCommunityPoolDepositToHolding_ConnectionSendFail() { + tc := s.SetupTransferCommunityPoolDepositToHolding() + tc.hostZone.ConnectionId = "MissingChannel" + + // Verify that the ICA msg was successfully sent off + err := s.App.StakeibcKeeper.TransferCommunityPoolDepositToHolding(s.Ctx, tc.hostZone, tc.coin) + s.Require().ErrorContains(err, "invalid connection id") +} + +type TransferHoldingToCommunityPoolReturnTestCase struct { + hostZone types.HostZone + coin sdk.Coin +} + +func (s *KeeperTestSuite) SetupTransferHoldingToCommunityPoolReturn() TransferHoldingToCommunityPoolReturnTestCase { + s.CreateTransferChannel(chainId) + + holdingAccount := s.TestAccs[0] + holdingAddress := holdingAccount.String() + returnIcaAddress := s.TestAccs[1].String() + hostZone := types.HostZone{ + ChainId: chainId, + TransferChannelId: ibctesting.FirstChannelID, + HostDenom: Atom, + CommunityPoolStakeHoldingAddress: holdingAddress, + CommunityPoolReturnIcaAddress: returnIcaAddress, + } + + strideEpoch := types.EpochTracker{ + EpochIdentifier: epochtypes.STRIDE_EPOCH, + NextEpochStartTime: uint64(s.Coordinator.CurrentTime.UnixNano() + 30_000_000_000), // used for transfer timeout + } + s.App.StakeibcKeeper.SetEpochTracker(s.Ctx, strideEpoch) + + balanceToTransfer := sdkmath.NewInt(1_000_000) + coin := sdk.NewCoin(Atom, balanceToTransfer) + s.FundAccount(holdingAccount, coin) + + return TransferHoldingToCommunityPoolReturnTestCase{ + hostZone: hostZone, + coin: coin, + } +} + +func (s *KeeperTestSuite) TestTransferHoldingToCommunityPoolReturn_Successful() { + tc := s.SetupTransferHoldingToCommunityPoolReturn() + + startSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, + transfertypes.PortID, tc.hostZone.TransferChannelId) + s.Require().True(found) + + // Verify that the transfer was successfully sent off + err := s.App.StakeibcKeeper.TransferHoldingToCommunityPoolReturn(s.Ctx, tc.hostZone, tc.coin) + s.Require().NoError(err) + + // Verify the transfer sequence number incremented + endSequence, found := s.App.IBCKeeper.ChannelKeeper.GetNextSequenceSend(s.Ctx, + transfertypes.PortID, tc.hostZone.TransferChannelId) + s.Require().True(found) + s.Require().Equal(endSequence, startSequence+1, "sequence number should have incremented") +} + +func (s *KeeperTestSuite) TestTransferHoldingToCommunityPoolReturn_ChannelTransferFail() { + tc := s.SetupTransferHoldingToCommunityPoolReturn() + tc.hostZone.TransferChannelId = "WrongChannel" + + // Verify that the transfer was successfully sent off + err := s.App.StakeibcKeeper.TransferHoldingToCommunityPoolReturn(s.Ctx, tc.hostZone, tc.coin) + s.Require().ErrorContains(err, "Error submitting ibc transfer") +} + +func (s *KeeperTestSuite) TestTransferHoldingToCommunityPoolReturn_MissingTokens() { + tc := s.SetupTransferHoldingToCommunityPoolReturn() + tc.coin.Denom = "MissingDenom" + + // Verify that the transfer was successfully sent off + err := s.App.StakeibcKeeper.TransferHoldingToCommunityPoolReturn(s.Ctx, tc.hostZone, tc.coin) + s.Require().ErrorContains(err, "Error submitting ibc transfer") + s.Require().ErrorContains(err, "insufficient funds") +} + +func (s *KeeperTestSuite) TestGetStIbcDenomOnHostZone() { + testCases := []struct { + hostDenom string + channelOnStride string + channelOnHost string + expectedIBCDenom string + }{ + { + hostDenom: "uatom", + channelOnStride: "channel-0", + channelOnHost: "channel-391", + expectedIBCDenom: "ibc/B05539B66B72E2739B986B86391E5D08F12B8D5D2C2A7F8F8CF9ADF674DFA231", + }, + { + hostDenom: "uosmo", + channelOnStride: "channel-5", + channelOnHost: "channel-326", + expectedIBCDenom: "ibc/D176154B0C63D1F9C6DCFB4F70349EBF2E2B5A87A05902F57A6AE92B863E9AEC", + }, + { + hostDenom: "ujuno", + channelOnStride: "channel-24", + channelOnHost: "channel-139", + expectedIBCDenom: "ibc/F4F5F27F40F927F8A4FF9F5601F80AD5D77B366570E7C59856B8CE4135AC1F59", + }, + { + hostDenom: "ustars", + channelOnStride: "channel-19", + channelOnHost: "channel-106", + expectedIBCDenom: "ibc/7A58490427EF0092E2BFFB4BEEBA38E29B09E9B98557DFC78335B43F15CF2676", + }, + { + hostDenom: "inj", + channelOnStride: "channel-6", + channelOnHost: "channel-89", + expectedIBCDenom: "ibc/AC87717EA002B0123B10A05063E69BCA274BA2C44D842AEEB41558D2856DCE93", + }, + } + + // Create each channel on stride with the associated host channel as a counterparty + for _, tc := range testCases { + channel := channeltypes.Channel{ + Counterparty: channeltypes.Counterparty{ + ChannelId: tc.channelOnHost, + }, + } + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, transfertypes.PortID, tc.channelOnStride, channel) + } + + // For each case, check the generated IBC denom + for _, tc := range testCases { + hostZone := types.HostZone{ + TransferChannelId: tc.channelOnStride, + HostDenom: tc.hostDenom, + } + actualIBCDenom, err := s.App.StakeibcKeeper.GetStIbcDenomOnHostZone(s.Ctx, hostZone) + s.Require().NoError(err, "no error expected when generating IBC denom") + s.Require().Equal(tc.expectedIBCDenom, actualIBCDenom, "stToken ibc denom") + } + + // Test a non-existent channel ID + invalidHostZone := types.HostZone{TransferChannelId: "channel-1000"} + _, err := s.App.StakeibcKeeper.GetStIbcDenomOnHostZone(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "channel not found") + + // Test a channel that has a non-transfer port + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, "different port", "channel-1000", channeltypes.Channel{}) + _, err = s.App.StakeibcKeeper.GetStIbcDenomOnHostZone(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "channel not found") + + // Test a with an empty counterparty channel + s.App.IBCKeeper.ChannelKeeper.SetChannel(s.Ctx, transfertypes.PortID, "channel-1000", channeltypes.Channel{}) + _, err = s.App.StakeibcKeeper.GetStIbcDenomOnHostZone(s.Ctx, invalidHostZone) + s.Require().ErrorContains(err, "counterparty channel not found") +} diff --git a/x/stakeibc/types/callbacks.pb.go b/x/stakeibc/types/callbacks.pb.go index 3a8d9b8e3f..df6f758ae8 100644 --- a/x/stakeibc/types/callbacks.pb.go +++ b/x/stakeibc/types/callbacks.pb.go @@ -691,6 +691,58 @@ func (m *DelegatorSharesQueryCallback) XXX_DiscardUnknown() { var xxx_messageInfo_DelegatorSharesQueryCallback proto.InternalMessageInfo +type CommunityPoolBalanceQueryCallback struct { + IcaType ICAAccountType `protobuf:"varint,1,opt,name=ica_type,json=icaType,proto3,enum=stride.stakeibc.ICAAccountType" json:"ica_type,omitempty"` + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` +} + +func (m *CommunityPoolBalanceQueryCallback) Reset() { *m = CommunityPoolBalanceQueryCallback{} } +func (m *CommunityPoolBalanceQueryCallback) String() string { return proto.CompactTextString(m) } +func (*CommunityPoolBalanceQueryCallback) ProtoMessage() {} +func (*CommunityPoolBalanceQueryCallback) Descriptor() ([]byte, []int) { + return fileDescriptor_f41c99b09b96a5ac, []int{13} +} +func (m *CommunityPoolBalanceQueryCallback) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CommunityPoolBalanceQueryCallback) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CommunityPoolBalanceQueryCallback.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CommunityPoolBalanceQueryCallback) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityPoolBalanceQueryCallback.Merge(m, src) +} +func (m *CommunityPoolBalanceQueryCallback) XXX_Size() int { + return m.Size() +} +func (m *CommunityPoolBalanceQueryCallback) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityPoolBalanceQueryCallback.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityPoolBalanceQueryCallback proto.InternalMessageInfo + +func (m *CommunityPoolBalanceQueryCallback) GetIcaType() ICAAccountType { + if m != nil { + return m.IcaType + } + return ICAAccountType_DELEGATION +} + +func (m *CommunityPoolBalanceQueryCallback) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + func init() { proto.RegisterType((*SplitDelegation)(nil), "stride.stakeibc.SplitDelegation") proto.RegisterType((*DelegateCallback)(nil), "stride.stakeibc.DelegateCallback") @@ -705,65 +757,71 @@ func init() { proto.RegisterType((*LSMLiquidStake)(nil), "stride.stakeibc.LSMLiquidStake") proto.RegisterType((*ValidatorSharesToTokensQueryCallback)(nil), "stride.stakeibc.ValidatorSharesToTokensQueryCallback") proto.RegisterType((*DelegatorSharesQueryCallback)(nil), "stride.stakeibc.DelegatorSharesQueryCallback") + proto.RegisterType((*CommunityPoolBalanceQueryCallback)(nil), "stride.stakeibc.CommunityPoolBalanceQueryCallback") } func init() { proto.RegisterFile("stride/stakeibc/callbacks.proto", fileDescriptor_f41c99b09b96a5ac) } var fileDescriptor_f41c99b09b96a5ac = []byte{ - // 841 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x55, 0x4f, 0x6f, 0x23, 0x35, - 0x14, 0xcf, 0x34, 0xab, 0xdd, 0x8d, 0x93, 0x36, 0xe9, 0x08, 0x2d, 0x69, 0x14, 0x25, 0x61, 0x16, - 0xc1, 0x0a, 0x69, 0x67, 0xd4, 0x22, 0xad, 0x40, 0x5c, 0x96, 0xb6, 0x42, 0x1b, 0x29, 0x45, 0x62, - 0xd2, 0x72, 0xe8, 0x65, 0xe4, 0x19, 0x5b, 0x89, 0x95, 0x19, 0x3b, 0x1d, 0x3b, 0x29, 0xed, 0x27, - 0xe0, 0xd8, 0x2b, 0x1f, 0x01, 0x2e, 0x7c, 0x02, 0x2e, 0x9c, 0x7a, 0xec, 0x11, 0x71, 0x28, 0xa8, - 0xfd, 0x22, 0xc8, 0x1e, 0xcf, 0x9f, 0x24, 0x50, 0x91, 0xc2, 0x29, 0x99, 0xe7, 0x9f, 0xfd, 0xde, - 0xef, 0xf7, 0xf3, 0x7b, 0x06, 0x5d, 0x2e, 0x62, 0x82, 0xb0, 0xc3, 0x05, 0x9c, 0x60, 0xe2, 0x07, - 0x4e, 0x00, 0xc3, 0xd0, 0x87, 0xc1, 0x84, 0xdb, 0xd3, 0x98, 0x09, 0x66, 0xd6, 0x13, 0x80, 0x9d, - 0x02, 0x5a, 0xef, 0x8d, 0xd8, 0x88, 0xa9, 0x35, 0x47, 0xfe, 0x4b, 0x60, 0xad, 0x4e, 0xc0, 0x78, - 0xc4, 0xb8, 0xe3, 0x43, 0x8e, 0x9d, 0xf9, 0xae, 0x8f, 0x05, 0xdc, 0x75, 0x02, 0x46, 0xa8, 0x5e, - 0x6f, 0xeb, 0x3c, 0x31, 0x0e, 0x58, 0x8c, 0x78, 0xfa, 0xab, 0x57, 0x57, 0xaa, 0x18, 0x33, 0x2e, - 0xbc, 0x4b, 0x46, 0xf1, 0x3f, 0x01, 0xe6, 0x30, 0x24, 0x08, 0x0a, 0x16, 0x27, 0x00, 0xeb, 0x1c, - 0xd4, 0x87, 0xd3, 0x90, 0x88, 0x43, 0x1c, 0xe2, 0x11, 0x14, 0x84, 0x51, 0xb3, 0x0d, 0x2a, 0x19, - 0xaa, 0x69, 0xf4, 0x8c, 0x57, 0x15, 0x37, 0x0f, 0x98, 0x5f, 0x81, 0xa7, 0x30, 0x62, 0x33, 0x2a, - 0x9a, 0x1b, 0x72, 0x69, 0xdf, 0xbe, 0xbe, 0xed, 0x96, 0x7e, 0xbf, 0xed, 0x7e, 0x34, 0x22, 0x62, - 0x3c, 0xf3, 0xed, 0x80, 0x45, 0x8e, 0xe6, 0x94, 0xfc, 0xbc, 0xe6, 0x68, 0xe2, 0x88, 0x8b, 0x29, - 0xe6, 0x76, 0x9f, 0x0a, 0x57, 0xef, 0xb6, 0x7e, 0x36, 0x40, 0x43, 0x27, 0xc5, 0x07, 0x5a, 0x3b, - 0xb3, 0x07, 0x6a, 0x19, 0x03, 0x8f, 0x20, 0x9d, 0x1d, 0xc8, 0xd8, 0x29, 0xa3, 0xb8, 0x8f, 0xcc, - 0x4f, 0xc0, 0x36, 0xc2, 0x53, 0xc6, 0x89, 0xf0, 0x12, 0x29, 0x24, 0x4c, 0x56, 0xf2, 0xc4, 0xad, - 0xeb, 0x05, 0x57, 0xc5, 0xfb, 0xc8, 0x3c, 0x02, 0xdb, 0x5c, 0x72, 0xf3, 0x50, 0x46, 0x8e, 0x37, - 0xcb, 0xbd, 0xf2, 0xab, 0xea, 0x5e, 0xcf, 0x5e, 0xb2, 0xc7, 0x5e, 0x52, 0xc1, 0x6d, 0xf0, 0xc5, - 0x00, 0xb7, 0xbe, 0x37, 0xc0, 0xe6, 0x41, 0x08, 0x49, 0x94, 0x95, 0xfb, 0x39, 0xd8, 0x99, 0x71, - 0x1c, 0x7b, 0x31, 0x46, 0x38, 0x9a, 0x4a, 0x54, 0xa1, 0xa8, 0xa4, 0xf6, 0x17, 0x12, 0xe0, 0x66, - 0xeb, 0x59, 0x6d, 0x3b, 0xe0, 0x79, 0x30, 0x86, 0x84, 0xa6, 0xe5, 0x57, 0xdc, 0x67, 0xea, 0xbb, - 0x8f, 0xcc, 0x0f, 0x40, 0x0d, 0x4f, 0x59, 0x30, 0xf6, 0xe8, 0x2c, 0xf2, 0x71, 0xdc, 0x2c, 0x2b, - 0x76, 0x55, 0x15, 0xfb, 0x5a, 0x85, 0xac, 0x1f, 0x0d, 0xd0, 0x70, 0x31, 0xa1, 0x73, 0xcc, 0x45, - 0x56, 0x0d, 0x07, 0xf5, 0x58, 0xc7, 0x3c, 0x6d, 0x91, 0xac, 0xa1, 0xba, 0xb7, 0x63, 0x27, 0x4e, - 0xd8, 0xf2, 0x92, 0xd9, 0xfa, 0x92, 0xd9, 0x07, 0x8c, 0xd0, 0x7d, 0x47, 0xba, 0xf7, 0xd3, 0x1f, - 0xdd, 0x8f, 0xff, 0x85, 0x7b, 0x72, 0x83, 0xbb, 0x95, 0xa6, 0xf8, 0x52, 0x65, 0x58, 0x71, 0xac, - 0xbc, 0xec, 0x98, 0xf5, 0xab, 0x01, 0xcc, 0x13, 0x8a, 0xd6, 0xb7, 0xfa, 0x6f, 0xed, 0xdb, 0x78, - 0xac, 0x7d, 0xe6, 0x17, 0xa0, 0x95, 0xc8, 0x3a, 0xa3, 0x3e, 0xa3, 0x88, 0xd0, 0x51, 0x6e, 0x56, - 0x72, 0x2d, 0x9e, 0xb8, 0xef, 0x2b, 0xc4, 0x49, 0x0a, 0x48, 0xdd, 0xe2, 0x52, 0xf0, 0x17, 0x39, - 0x89, 0x77, 0xac, 0x20, 0xfb, 0x5b, 0x50, 0x86, 0x51, 0x22, 0xf5, 0xfa, 0xdd, 0x20, 0xb7, 0xfe, - 0xcf, 0x44, 0x2d, 0x0e, 0xcc, 0xfc, 0xc2, 0xad, 0xa1, 0xf7, 0xc3, 0x02, 0x6d, 0x3c, 0x2c, 0xd0, - 0x0f, 0x06, 0xa8, 0xba, 0xd8, 0x87, 0x21, 0xa4, 0x01, 0xa1, 0x23, 0xf3, 0x25, 0xd8, 0xe4, 0x71, - 0xe0, 0x2d, 0x0f, 0x92, 0x1a, 0x8f, 0x83, 0x6f, 0xb3, 0x59, 0xf2, 0x12, 0x6c, 0x22, 0x2e, 0x0a, - 0xa0, 0xa4, 0x13, 0x6a, 0x88, 0x8b, 0x1c, 0xa4, 0xf5, 0x2d, 0x3f, 0x5a, 0x5f, 0xeb, 0x1c, 0x6c, - 0xa7, 0xa5, 0xad, 0x73, 0xff, 0xde, 0x82, 0x5a, 0x9c, 0x33, 0x4a, 0x1d, 0x69, 0xaf, 0x38, 0x52, - 0xa0, 0xed, 0x2e, 0xec, 0xb0, 0x4e, 0x40, 0xf3, 0x10, 0x0b, 0x36, 0xc1, 0x94, 0x5c, 0xe2, 0xe1, - 0x18, 0xc6, 0x98, 0x17, 0x66, 0xc7, 0x33, 0x3d, 0xaf, 0x74, 0x97, 0x76, 0xd3, 0x83, 0xd3, 0x11, - 0x3f, 0x18, 0x1e, 0x1d, 0xcb, 0xbd, 0x87, 0x7a, 0xac, 0xa5, 0x78, 0xeb, 0x17, 0x03, 0x6c, 0x0d, - 0x86, 0x47, 0x03, 0x72, 0x36, 0x23, 0x68, 0x28, 0xcb, 0xf8, 0x0f, 0xa7, 0x99, 0x6f, 0x40, 0x25, - 0x13, 0x42, 0x19, 0x20, 0x07, 0xc6, 0x32, 0xc7, 0x77, 0x5a, 0x16, 0xf7, 0x79, 0x2a, 0x90, 0xf9, - 0x59, 0xf1, 0x99, 0x28, 0xab, 0x7d, 0xad, 0x95, 0x7d, 0x99, 0x8d, 0x85, 0x27, 0xc4, 0x3a, 0x03, - 0x1f, 0x66, 0xf1, 0x44, 0x95, 0x63, 0xa6, 0x6a, 0xe3, 0xdf, 0xcc, 0x70, 0x7c, 0x91, 0x49, 0xd4, - 0x07, 0x8d, 0x90, 0x47, 0x5e, 0xa8, 0x78, 0x7a, 0xea, 0xcc, 0x65, 0x76, 0x59, 0xa2, 0x45, 0x3d, - 0xdc, 0xad, 0x90, 0x47, 0x85, 0x6f, 0xeb, 0xca, 0x00, 0x6d, 0xdd, 0x23, 0x69, 0xce, 0xc5, 0x5c, - 0x53, 0xd0, 0x26, 0x94, 0x08, 0x02, 0xc3, 0xfc, 0x3a, 0x16, 0xfa, 0xf1, 0x91, 0xed, 0xdd, 0xd2, - 0x67, 0x66, 0x74, 0xf3, 0x3e, 0xdd, 0x1f, 0x5c, 0xdf, 0x75, 0x8c, 0x9b, 0xbb, 0x8e, 0xf1, 0xe7, - 0x5d, 0xc7, 0xb8, 0xba, 0xef, 0x94, 0x6e, 0xee, 0x3b, 0xa5, 0xdf, 0xee, 0x3b, 0xa5, 0xd3, 0xbd, - 0xc2, 0xe9, 0x43, 0xc5, 0xf3, 0xf5, 0x00, 0xfa, 0xdc, 0xd1, 0x6f, 0xf9, 0x7c, 0xf7, 0x8d, 0xf3, - 0x5d, 0xfe, 0xa2, 0xab, 0x6c, 0xfe, 0x53, 0xf5, 0x9c, 0x7f, 0xfa, 0x57, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x88, 0xba, 0x1a, 0xee, 0x98, 0x08, 0x00, 0x00, + // 913 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcd, 0x6e, 0xdc, 0x36, + 0x17, 0xb5, 0x3c, 0xf9, 0x62, 0xfb, 0x7a, 0xfc, 0x27, 0x04, 0xf9, 0xc6, 0x83, 0xc1, 0x8c, 0xad, + 0x14, 0x6d, 0x50, 0x20, 0x12, 0xec, 0x02, 0x41, 0x7f, 0x36, 0xb1, 0xc7, 0x28, 0x32, 0xc0, 0xb8, + 0x68, 0x35, 0x76, 0x17, 0xd9, 0x08, 0x94, 0x48, 0xcc, 0x10, 0x96, 0xc8, 0x89, 0x48, 0x39, 0x75, + 0x9e, 0xa0, 0xcb, 0x6c, 0xfb, 0x08, 0xed, 0xa6, 0x4f, 0xd0, 0x4d, 0x57, 0x59, 0x66, 0x59, 0x74, + 0x91, 0x16, 0xf6, 0x8b, 0x14, 0xa4, 0xa8, 0x9f, 0x19, 0xa7, 0x41, 0xed, 0x76, 0x25, 0xe9, 0xf2, + 0x90, 0xf7, 0x9e, 0x73, 0x78, 0x49, 0x41, 0x4f, 0xc8, 0x94, 0x62, 0xe2, 0x09, 0x89, 0xce, 0x08, + 0x0d, 0x23, 0x2f, 0x42, 0x71, 0x1c, 0xa2, 0xe8, 0x4c, 0xb8, 0xd3, 0x94, 0x4b, 0x6e, 0x6f, 0xe4, + 0x00, 0xb7, 0x00, 0xb4, 0xef, 0x8d, 0xf9, 0x98, 0xeb, 0x31, 0x4f, 0xbd, 0xe5, 0xb0, 0x76, 0x37, + 0xe2, 0x22, 0xe1, 0xc2, 0x0b, 0x91, 0x20, 0xde, 0xf9, 0x5e, 0x48, 0x24, 0xda, 0xf3, 0x22, 0x4e, + 0x99, 0x19, 0xef, 0x98, 0x3c, 0x29, 0x89, 0x78, 0x8a, 0x45, 0xf1, 0x34, 0xa3, 0xd7, 0xaa, 0x98, + 0x70, 0x21, 0x83, 0x97, 0x9c, 0x91, 0xbf, 0x03, 0x9c, 0xa3, 0x98, 0x62, 0x24, 0x79, 0x6a, 0x00, + 0xbb, 0xf3, 0x00, 0x1a, 0xa1, 0x00, 0x45, 0x11, 0xcf, 0x98, 0xcc, 0x21, 0xce, 0x0b, 0xd8, 0x18, + 0x4d, 0x63, 0x2a, 0x8f, 0x48, 0x4c, 0xc6, 0x48, 0x52, 0xce, 0xec, 0x0e, 0xac, 0x94, 0x0b, 0xb5, + 0xac, 0x1d, 0xeb, 0xe1, 0x8a, 0x5f, 0x05, 0xec, 0x2f, 0xe1, 0x2e, 0x4a, 0xd4, 0x02, 0xad, 0x45, + 0x35, 0x74, 0xe8, 0xbe, 0x7e, 0xdb, 0x5b, 0xf8, 0xfd, 0x6d, 0xef, 0xc3, 0x31, 0x95, 0x93, 0x2c, + 0x74, 0x23, 0x9e, 0x78, 0x86, 0x76, 0xfe, 0x78, 0x24, 0xf0, 0x99, 0x27, 0x2f, 0xa6, 0x44, 0xb8, + 0x03, 0x26, 0x7d, 0x33, 0xdb, 0xf9, 0xd9, 0x82, 0x4d, 0x93, 0x94, 0xf4, 0x8d, 0xbc, 0xf6, 0x0e, + 0x34, 0x4b, 0x92, 0x01, 0xc5, 0x26, 0x3b, 0xa8, 0xd8, 0x33, 0xce, 0xc8, 0x00, 0xdb, 0x1f, 0xc3, + 0x16, 0x26, 0x53, 0x2e, 0xa8, 0x0c, 0x72, 0xb5, 0x14, 0x4c, 0x55, 0x72, 0xc7, 0xdf, 0x30, 0x03, + 0xbe, 0x8e, 0x0f, 0xb0, 0x7d, 0x0c, 0x5b, 0x42, 0x71, 0x0b, 0x70, 0x49, 0x4e, 0xb4, 0x1a, 0x3b, + 0x8d, 0x87, 0xab, 0xfb, 0x3b, 0xee, 0x9c, 0x83, 0xee, 0x9c, 0x0a, 0xfe, 0xa6, 0x98, 0x0d, 0x08, + 0xe7, 0x7b, 0x0b, 0xd6, 0xfa, 0x31, 0xa2, 0x49, 0x59, 0xee, 0x67, 0xb0, 0x9d, 0x09, 0x92, 0x06, + 0x29, 0xc1, 0x24, 0x99, 0x2a, 0x54, 0xad, 0xa8, 0xbc, 0xf6, 0xfb, 0x0a, 0xe0, 0x97, 0xe3, 0x65, + 0x6d, 0xdb, 0xb0, 0x1c, 0x4d, 0x10, 0x65, 0x45, 0xf9, 0x2b, 0xfe, 0x92, 0xfe, 0x1e, 0x60, 0x7b, + 0x17, 0x9a, 0x64, 0xca, 0xa3, 0x49, 0xc0, 0xb2, 0x24, 0x24, 0x69, 0xab, 0xa1, 0xd9, 0xad, 0xea, + 0xd8, 0x57, 0x3a, 0xe4, 0xfc, 0x68, 0xc1, 0xa6, 0x4f, 0x28, 0x3b, 0x27, 0x42, 0x96, 0xd5, 0x08, + 0xd8, 0x48, 0x4d, 0x2c, 0x30, 0x16, 0xa9, 0x1a, 0x56, 0xf7, 0xb7, 0xdd, 0xdc, 0x09, 0x57, 0xed, + 0x43, 0xd7, 0xec, 0x43, 0xb7, 0xcf, 0x29, 0x3b, 0xf4, 0x94, 0x7b, 0x3f, 0xfd, 0xd1, 0xfb, 0xe8, + 0x1f, 0xb8, 0xa7, 0x26, 0xf8, 0xeb, 0x45, 0x8a, 0x03, 0x9d, 0xe1, 0x9a, 0x63, 0x8d, 0x79, 0xc7, + 0x9c, 0x5f, 0x2d, 0xb0, 0x4f, 0x19, 0xbe, 0xb9, 0xd5, 0xef, 0xb4, 0x6f, 0xf1, 0xb6, 0xf6, 0xd9, + 0x5f, 0x40, 0x3b, 0x97, 0x35, 0x63, 0x21, 0x67, 0x98, 0xb2, 0x71, 0x65, 0x56, 0xbe, 0x2d, 0xee, + 0xf8, 0xff, 0xd7, 0x88, 0xd3, 0x02, 0x50, 0xb8, 0x25, 0x94, 0xe0, 0xf7, 0x2b, 0x12, 0x4f, 0x79, + 0x4d, 0xf6, 0x27, 0xd0, 0x40, 0x49, 0x2e, 0xf5, 0xcd, 0xbb, 0x41, 0x4d, 0xfd, 0x8f, 0x89, 0x3a, + 0x02, 0xec, 0x6a, 0xc3, 0xdd, 0x40, 0xef, 0xf7, 0x0b, 0xb4, 0xf8, 0x7e, 0x81, 0x7e, 0xb0, 0x60, + 0xd5, 0x27, 0x21, 0x8a, 0x11, 0x8b, 0x28, 0x1b, 0xdb, 0x0f, 0x60, 0x4d, 0xa4, 0x51, 0x30, 0x7f, + 0x90, 0x34, 0x45, 0x1a, 0x7d, 0x5b, 0x9e, 0x25, 0x0f, 0x60, 0x0d, 0x0b, 0x59, 0x03, 0xe5, 0x9d, + 0xd0, 0xc4, 0x42, 0x56, 0x20, 0xa3, 0x6f, 0xe3, 0xd6, 0xfa, 0x3a, 0x2f, 0x60, 0xab, 0x28, 0xed, + 0x26, 0xfb, 0xef, 0x09, 0x34, 0xd3, 0x8a, 0x51, 0xe1, 0x48, 0xe7, 0x9a, 0x23, 0x35, 0xda, 0xfe, + 0xcc, 0x0c, 0xe7, 0x14, 0x5a, 0x47, 0x44, 0xf2, 0x33, 0xc2, 0xe8, 0x4b, 0x32, 0x9a, 0xa0, 0x94, + 0x88, 0xda, 0xd9, 0xb1, 0x64, 0xce, 0x2b, 0xd3, 0xa5, 0xbd, 0x62, 0xe1, 0xe2, 0x16, 0x18, 0x8e, + 0x8e, 0x4f, 0xd4, 0xdc, 0x23, 0x73, 0xac, 0x15, 0x78, 0xe7, 0x17, 0x0b, 0xd6, 0x87, 0xa3, 0xe3, + 0x21, 0x7d, 0x9e, 0x51, 0x3c, 0x52, 0x65, 0xfc, 0x8b, 0xd5, 0xec, 0xc7, 0xb0, 0x52, 0x0a, 0xa1, + 0x0d, 0x50, 0x07, 0xc6, 0x3c, 0xc7, 0xa7, 0x46, 0x16, 0x7f, 0xb9, 0x10, 0xc8, 0xfe, 0xb4, 0x7e, + 0x4d, 0x34, 0xf4, 0xbc, 0xf6, 0xb5, 0x79, 0xa5, 0x8d, 0xb5, 0x2b, 0xc4, 0x79, 0x0e, 0x1f, 0x94, + 0xf1, 0x5c, 0x95, 0x13, 0xae, 0x6b, 0x13, 0xdf, 0x64, 0x24, 0xbd, 0x28, 0x25, 0x1a, 0xc0, 0x66, + 0x2c, 0x92, 0x20, 0xd6, 0x3c, 0x03, 0xbd, 0xe6, 0x3c, 0xbb, 0x32, 0xd1, 0xac, 0x1e, 0xfe, 0x7a, + 0x2c, 0x92, 0xda, 0xb7, 0xf3, 0xca, 0x82, 0x8e, 0xe9, 0x91, 0x22, 0xe7, 0x6c, 0xae, 0x29, 0x74, + 0x28, 0xa3, 0x92, 0xa2, 0xb8, 0xda, 0x8e, 0xb5, 0x7e, 0xbc, 0x65, 0x7b, 0xb7, 0xcd, 0x9a, 0x25, + 0xdd, 0xaa, 0x4f, 0x9d, 0x0c, 0x76, 0xfb, 0x3c, 0x49, 0x32, 0x46, 0xe5, 0xc5, 0xd7, 0x9c, 0xc7, + 0x87, 0xf9, 0x06, 0x9d, 0x2d, 0xeb, 0x73, 0x58, 0x56, 0x77, 0xb6, 0x5a, 0x51, 0x97, 0xb0, 0xfe, + 0x0e, 0xea, 0x83, 0xfe, 0xc1, 0x41, 0x7e, 0xa7, 0x9f, 0x5c, 0x4c, 0x89, 0xbf, 0x44, 0x23, 0xa4, + 0x5e, 0xec, 0x7b, 0xf0, 0x3f, 0x4c, 0x18, 0x4f, 0x4c, 0x57, 0xe5, 0x1f, 0x87, 0xc3, 0xd7, 0x97, + 0x5d, 0xeb, 0xcd, 0x65, 0xd7, 0xfa, 0xf3, 0xb2, 0x6b, 0xbd, 0xba, 0xea, 0x2e, 0xbc, 0xb9, 0xea, + 0x2e, 0xfc, 0x76, 0xd5, 0x5d, 0x78, 0xb6, 0x5f, 0x23, 0x35, 0xd2, 0x39, 0x1e, 0x0d, 0x51, 0x28, + 0x3c, 0xf3, 0x13, 0x71, 0xbe, 0xf7, 0xd8, 0xfb, 0xae, 0xfa, 0x95, 0xd0, 0x24, 0xc3, 0xbb, 0xfa, + 0x2f, 0xe2, 0x93, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x60, 0x7b, 0xe9, 0xf9, 0x32, 0x09, 0x00, + 0x00, } func (m *SplitDelegation) Marshal() (dAtA []byte, err error) { @@ -1347,6 +1405,41 @@ func (m *DelegatorSharesQueryCallback) MarshalToSizedBuffer(dAtA []byte) (int, e return len(dAtA) - i, nil } +func (m *CommunityPoolBalanceQueryCallback) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CommunityPoolBalanceQueryCallback) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CommunityPoolBalanceQueryCallback) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintCallbacks(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x12 + } + if m.IcaType != 0 { + i = encodeVarintCallbacks(dAtA, i, uint64(m.IcaType)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintCallbacks(dAtA []byte, offset int, v uint64) int { offset -= sovCallbacks(v) base := offset @@ -1589,6 +1682,22 @@ func (m *DelegatorSharesQueryCallback) Size() (n int) { return n } +func (m *CommunityPoolBalanceQueryCallback) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.IcaType != 0 { + n += 1 + sovCallbacks(uint64(m.IcaType)) + } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovCallbacks(uint64(l)) + } + return n +} + func sovCallbacks(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -3240,6 +3349,107 @@ func (m *DelegatorSharesQueryCallback) Unmarshal(dAtA []byte) error { } return nil } +func (m *CommunityPoolBalanceQueryCallback) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CommunityPoolBalanceQueryCallback: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CommunityPoolBalanceQueryCallback: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IcaType", wireType) + } + m.IcaType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.IcaType |= ICAAccountType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCallbacks + } + 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 ErrInvalidLengthCallbacks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCallbacks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCallbacks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCallbacks + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipCallbacks(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/stakeibc/types/errors.go b/x/stakeibc/types/errors.go index 513d44b009..81f26ed769 100644 --- a/x/stakeibc/types/errors.go +++ b/x/stakeibc/types/errors.go @@ -42,7 +42,6 @@ var ( ErrDivisionByZero = errorsmod.Register(ModuleName, 1534, "division by zero") ErrSlashExceedsSafetyThreshold = errorsmod.Register(ModuleName, 1535, "slash is greater than safety threshold") ErrInvalidEpoch = errorsmod.Register(ModuleName, 1536, "invalid epoch tracker") - ErrHostZoneICAAccountNotFound = errorsmod.Register(ModuleName, 1537, "host zone's ICA account not found") ErrNoValidatorAmts = errorsmod.Register(ModuleName, 1538, "could not fetch validator amts") ErrMaxNumValidators = errorsmod.Register(ModuleName, 1539, "max number of validators reached") ErrUndelegationAmount = errorsmod.Register(ModuleName, 1540, "Undelegation amount is greater than stakedBal") @@ -59,4 +58,6 @@ var ( ErrUndelegateHostNotCallable = errorsmod.Register(ModuleName, 1551, "Undelegate host is disabled") ErrInvalidBounds = errorsmod.Register(ModuleName, 1552, "Invalid safety bounds - inner bounds must be within outer bounds") ErrHostZoneNotHalted = errorsmod.Register(ModuleName, 1553, "host zone is not halted") + ErrFailedToLiquidStake = errorsmod.Register(ModuleName, 1554, "Failed to liquid stake") + ErrUnableToRedeemStake = errorsmod.Register(ModuleName, 1555, "Failed to redeem stake") ) diff --git a/x/stakeibc/types/host_zone.go b/x/stakeibc/types/host_zone.go index a3efe8e1d0..f6c4a91a70 100644 --- a/x/stakeibc/types/host_zone.go +++ b/x/stakeibc/types/host_zone.go @@ -1,15 +1,34 @@ package types +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" +) + const ( MaxUnbondingEntries = 7 ) // Per an SDK constraint, we can issue no more than 7 undelegation messages -// in a given unbonding period +// in a given unbonding period +// // The unbonding period dictates the cadence (in number of days) with which we submit -// undelegation messages, such that the 7 messages are spaced out throughout the period +// undelegation messages, such that the 7 messages are spaced out throughout the period +// // We calculate this by dividing the period by 7 and then adding 1 as a buffer // Ex: If our unbonding period is 21 days, we issue an undelegation every 4th day func (h HostZone) GetUnbondingFrequency() uint64 { return (h.UnbondingPeriod / MaxUnbondingEntries) + 1 } + +// Generates a new stride-side address on the host zone to escrow deposits +func NewHostZoneDepositAddress(chainId string) sdk.AccAddress { + key := append([]byte("zone"), []byte(chainId)...) + return address.Module(ModuleName, key) +} + +// Generates a new stride-side module account for a host zone, given an alias +func NewHostZoneModuleAddress(chainId string, accountAlias string) sdk.AccAddress { + key := append([]byte(chainId), []byte(accountAlias)...) + return address.Module(ModuleName, key) +} diff --git a/x/stakeibc/types/host_zone.pb.go b/x/stakeibc/types/host_zone.pb.go index 51f5adfb81..0388b5db4e 100644 --- a/x/stakeibc/types/host_zone.pb.go +++ b/x/stakeibc/types/host_zone.pb.go @@ -33,23 +33,27 @@ type HostZone struct { // ibc denom on stride IbcDenom string `protobuf:"bytes,8,opt,name=ibc_denom,json=ibcDenom,proto3" json:"ibc_denom,omitempty"` // native denom on host zone - HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` - UnbondingPeriod uint64 `protobuf:"varint,26,opt,name=unbonding_period,json=unbondingPeriod,proto3" json:"unbonding_period,omitempty"` - Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` - DepositAddress string `protobuf:"bytes,18,opt,name=deposit_address,json=depositAddress,proto3" json:"deposit_address,omitempty"` - WithdrawalIcaAddress string `protobuf:"bytes,22,opt,name=withdrawal_ica_address,json=withdrawalIcaAddress,proto3" json:"withdrawal_ica_address,omitempty"` - FeeIcaAddress string `protobuf:"bytes,23,opt,name=fee_ica_address,json=feeIcaAddress,proto3" json:"fee_ica_address,omitempty"` - DelegationIcaAddress string `protobuf:"bytes,24,opt,name=delegation_ica_address,json=delegationIcaAddress,proto3" json:"delegation_ica_address,omitempty"` - RedemptionIcaAddress string `protobuf:"bytes,25,opt,name=redemption_ica_address,json=redemptionIcaAddress,proto3" json:"redemption_ica_address,omitempty"` - TotalDelegations github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=total_delegations,json=totalDelegations,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_delegations"` - LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` - RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` - MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` - MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` - MinInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,28,opt,name=min_inner_redemption_rate,json=minInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_inner_redemption_rate"` - MaxInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,29,opt,name=max_inner_redemption_rate,json=maxInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_inner_redemption_rate"` - LsmLiquidStakeEnabled bool `protobuf:"varint,27,opt,name=lsm_liquid_stake_enabled,json=lsmLiquidStakeEnabled,proto3" json:"lsm_liquid_stake_enabled,omitempty"` - Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` + HostDenom string `protobuf:"bytes,9,opt,name=host_denom,json=hostDenom,proto3" json:"host_denom,omitempty"` + UnbondingPeriod uint64 `protobuf:"varint,26,opt,name=unbonding_period,json=unbondingPeriod,proto3" json:"unbonding_period,omitempty"` + Validators []*Validator `protobuf:"bytes,3,rep,name=validators,proto3" json:"validators,omitempty"` + DepositAddress string `protobuf:"bytes,18,opt,name=deposit_address,json=depositAddress,proto3" json:"deposit_address,omitempty"` + WithdrawalIcaAddress string `protobuf:"bytes,22,opt,name=withdrawal_ica_address,json=withdrawalIcaAddress,proto3" json:"withdrawal_ica_address,omitempty"` + FeeIcaAddress string `protobuf:"bytes,23,opt,name=fee_ica_address,json=feeIcaAddress,proto3" json:"fee_ica_address,omitempty"` + DelegationIcaAddress string `protobuf:"bytes,24,opt,name=delegation_ica_address,json=delegationIcaAddress,proto3" json:"delegation_ica_address,omitempty"` + RedemptionIcaAddress string `protobuf:"bytes,25,opt,name=redemption_ica_address,json=redemptionIcaAddress,proto3" json:"redemption_ica_address,omitempty"` + CommunityPoolDepositIcaAddress string `protobuf:"bytes,30,opt,name=community_pool_deposit_ica_address,json=communityPoolDepositIcaAddress,proto3" json:"community_pool_deposit_ica_address,omitempty"` + CommunityPoolReturnIcaAddress string `protobuf:"bytes,31,opt,name=community_pool_return_ica_address,json=communityPoolReturnIcaAddress,proto3" json:"community_pool_return_ica_address,omitempty"` + CommunityPoolStakeHoldingAddress string `protobuf:"bytes,32,opt,name=community_pool_stake_holding_address,json=communityPoolStakeHoldingAddress,proto3" json:"community_pool_stake_holding_address,omitempty"` + CommunityPoolRedeemHoldingAddress string `protobuf:"bytes,33,opt,name=community_pool_redeem_holding_address,json=communityPoolRedeemHoldingAddress,proto3" json:"community_pool_redeem_holding_address,omitempty"` + TotalDelegations github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,13,opt,name=total_delegations,json=totalDelegations,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_delegations"` + LastRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=last_redemption_rate,json=lastRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"last_redemption_rate"` + RedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=redemption_rate,json=redemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"redemption_rate"` + MinRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,20,opt,name=min_redemption_rate,json=minRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_redemption_rate"` + MaxRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,21,opt,name=max_redemption_rate,json=maxRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_redemption_rate"` + MinInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,28,opt,name=min_inner_redemption_rate,json=minInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"min_inner_redemption_rate"` + MaxInnerRedemptionRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,29,opt,name=max_inner_redemption_rate,json=maxInnerRedemptionRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"max_inner_redemption_rate"` + LsmLiquidStakeEnabled bool `protobuf:"varint,27,opt,name=lsm_liquid_stake_enabled,json=lsmLiquidStakeEnabled,proto3" json:"lsm_liquid_stake_enabled,omitempty"` + Halted bool `protobuf:"varint,19,opt,name=halted,proto3" json:"halted,omitempty"` } func (m *HostZone) Reset() { *m = HostZone{} } @@ -176,6 +180,34 @@ func (m *HostZone) GetRedemptionIcaAddress() string { return "" } +func (m *HostZone) GetCommunityPoolDepositIcaAddress() string { + if m != nil { + return m.CommunityPoolDepositIcaAddress + } + return "" +} + +func (m *HostZone) GetCommunityPoolReturnIcaAddress() string { + if m != nil { + return m.CommunityPoolReturnIcaAddress + } + return "" +} + +func (m *HostZone) GetCommunityPoolStakeHoldingAddress() string { + if m != nil { + return m.CommunityPoolStakeHoldingAddress + } + return "" +} + +func (m *HostZone) GetCommunityPoolRedeemHoldingAddress() string { + if m != nil { + return m.CommunityPoolRedeemHoldingAddress + } + return "" +} + func (m *HostZone) GetLsmLiquidStakeEnabled() bool { if m != nil { return m.LsmLiquidStakeEnabled @@ -197,53 +229,60 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/host_zone.proto", fileDescriptor_f81bf5b42c61245a) } var fileDescriptor_f81bf5b42c61245a = []byte{ - // 734 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0xcf, 0x4e, 0xeb, 0x46, - 0x14, 0xc6, 0x93, 0x62, 0x82, 0x33, 0xfc, 0x89, 0x63, 0x42, 0xea, 0x84, 0x12, 0x22, 0x2a, 0x55, - 0xe9, 0x22, 0x8e, 0x0a, 0x52, 0x2b, 0x55, 0x5d, 0x14, 0x9a, 0x4a, 0x4d, 0x84, 0x50, 0x65, 0xa4, - 0x2e, 0xe8, 0xc2, 0x1a, 0x7b, 0x4e, 0x92, 0x11, 0xf6, 0x4c, 0xea, 0x19, 0x20, 0xed, 0x53, 0xf4, - 0x5d, 0xca, 0x43, 0xb0, 0x44, 0xac, 0xaa, 0x2e, 0x50, 0x05, 0x2f, 0x72, 0xe5, 0xb1, 0xf3, 0x8f, - 0x70, 0x15, 0x5d, 0x29, 0xab, 0x78, 0xce, 0xf7, 0x9d, 0xdf, 0x37, 0x67, 0x62, 0x79, 0xd0, 0xa1, - 0x90, 0x11, 0x25, 0xd0, 0x12, 0x12, 0x5f, 0x03, 0xf5, 0xfc, 0xd6, 0x80, 0x0b, 0xe9, 0xfe, 0xc5, - 0x19, 0xd8, 0xc3, 0x88, 0x4b, 0x6e, 0x16, 0x12, 0x83, 0x3d, 0x36, 0x54, 0x17, 0x3a, 0x6e, 0x71, - 0x40, 0x09, 0x96, 0x3c, 0x4a, 0x3a, 0xaa, 0xa5, 0x3e, 0xef, 0x73, 0xf5, 0xd8, 0x8a, 0x9f, 0xd2, - 0x6a, 0xc5, 0xe7, 0x22, 0xe4, 0xc2, 0x4d, 0x84, 0x64, 0x91, 0x48, 0x47, 0xff, 0x6c, 0x21, 0xfd, - 0x17, 0x2e, 0xe4, 0x15, 0x67, 0x60, 0x56, 0x90, 0xee, 0x0f, 0x30, 0x65, 0x2e, 0x25, 0x56, 0xb6, - 0x9e, 0x6d, 0xe4, 0x9d, 0x0d, 0xb5, 0xee, 0x10, 0xf3, 0x08, 0x6d, 0x79, 0xe0, 0x0f, 0x4e, 0x8e, - 0x87, 0x11, 0xf4, 0xe8, 0xc8, 0x2a, 0x2a, 0x79, 0xae, 0x66, 0x7e, 0x89, 0xb6, 0x7d, 0xce, 0x18, - 0xf8, 0x92, 0x72, 0xc5, 0xf8, 0x2c, 0x31, 0x4d, 0x8b, 0x1d, 0x62, 0xda, 0x68, 0x57, 0x46, 0x98, - 0x89, 0x1e, 0x44, 0xae, 0x3f, 0xc0, 0x8c, 0x41, 0x10, 0x5b, 0xb7, 0x94, 0xb5, 0x38, 0x96, 0x7e, - 0x4a, 0x94, 0x0e, 0x31, 0xf7, 0x51, 0x9e, 0x7a, 0xbe, 0x4b, 0x80, 0xf1, 0xd0, 0xd2, 0x95, 0x4b, - 0xa7, 0x9e, 0xdf, 0x8e, 0xd7, 0xe6, 0x01, 0x42, 0xea, 0xcc, 0x12, 0x35, 0xaf, 0xd4, 0x7c, 0x5c, - 0x49, 0xe4, 0xaf, 0x91, 0x71, 0xc3, 0x3c, 0xce, 0x08, 0x65, 0x7d, 0x77, 0x08, 0x11, 0xe5, 0xc4, - 0xaa, 0xd6, 0xb3, 0x0d, 0xcd, 0x29, 0x4c, 0xea, 0xbf, 0xaa, 0xb2, 0xf9, 0x3d, 0x42, 0x93, 0xb3, - 0x14, 0xd6, 0x5a, 0x7d, 0xad, 0xb1, 0x79, 0x5c, 0xb5, 0xdf, 0x9c, 0xbf, 0xfd, 0xdb, 0xd8, 0xe2, - 0xcc, 0xb8, 0xcd, 0x53, 0x54, 0x20, 0x30, 0xe4, 0x82, 0x4a, 0x17, 0x13, 0x12, 0x81, 0x10, 0x96, - 0x19, 0x6f, 0xe5, 0xcc, 0x7a, 0xba, 0x6f, 0x96, 0xd2, 0xe3, 0x3e, 0x4d, 0x94, 0x4b, 0x19, 0x51, - 0xd6, 0x77, 0x76, 0xd2, 0x86, 0xb4, 0x6a, 0x5e, 0xa0, 0xf2, 0x1d, 0x95, 0x03, 0x12, 0xe1, 0x3b, - 0x1c, 0xb8, 0xd4, 0xc7, 0x13, 0x52, 0x79, 0x09, 0xa9, 0x34, 0xed, 0xeb, 0xf8, 0x78, 0xcc, 0xfb, - 0x11, 0x15, 0x7a, 0x00, 0x73, 0xa0, 0xcf, 0x97, 0x80, 0xb6, 0x7b, 0x00, 0x33, 0x84, 0x0b, 0x54, - 0x26, 0x10, 0x40, 0x1f, 0x27, 0x7f, 0xe6, 0x0c, 0xc8, 0x5a, 0xb6, 0xa3, 0x69, 0xdf, 0x3c, 0x2f, - 0x02, 0x02, 0xe1, 0x70, 0x81, 0x57, 0x59, 0xc6, 0x9b, 0xf6, 0xcd, 0xf0, 0x7e, 0x47, 0x45, 0xc9, - 0x25, 0x0e, 0xdc, 0x69, 0x9a, 0xb0, 0xb6, 0x15, 0xca, 0x7e, 0x78, 0x3e, 0xcc, 0xfc, 0xf7, 0x7c, - 0xf8, 0x55, 0x9f, 0xca, 0xc1, 0x8d, 0x67, 0xfb, 0x3c, 0x4c, 0x5f, 0xfa, 0xf4, 0xa7, 0x29, 0xc8, - 0x75, 0x4b, 0xfe, 0x39, 0x04, 0x61, 0x77, 0x98, 0x74, 0x0c, 0x05, 0x6a, 0x4f, 0x39, 0x26, 0x43, - 0xa5, 0x00, 0x0b, 0xe9, 0xce, 0xec, 0x38, 0xc2, 0x12, 0x2c, 0xa4, 0xf8, 0x3f, 0x7c, 0x02, 0xbf, - 0x0d, 0xfe, 0xd3, 0x7d, 0x13, 0xa5, 0x83, 0xb5, 0xc1, 0x77, 0xcc, 0x98, 0xec, 0x4c, 0xc0, 0x0e, - 0x96, 0x60, 0x02, 0x2a, 0xbc, 0x8d, 0xda, 0x5c, 0x41, 0xd4, 0x4e, 0x34, 0x1f, 0x13, 0xa0, 0xdd, - 0x90, 0xb2, 0x85, 0xa9, 0x4a, 0x2b, 0x88, 0x2a, 0x86, 0x94, 0x39, 0x8b, 0x69, 0x78, 0xb4, 0x90, - 0xb6, 0xb7, 0x92, 0x34, 0x3c, 0x7a, 0x93, 0x76, 0x87, 0x2a, 0xf1, 0x6c, 0x94, 0x31, 0x88, 0x16, - 0x32, 0xbf, 0x58, 0x41, 0x66, 0x39, 0xa4, 0xac, 0x13, 0xd3, 0xdf, 0x09, 0xc6, 0xa3, 0x8f, 0x04, - 0x1f, 0xac, 0x24, 0x18, 0x8f, 0xde, 0x0b, 0xfe, 0x0e, 0x59, 0x81, 0x08, 0xdd, 0x80, 0xfe, 0x71, - 0x43, 0x89, 0xab, 0xbe, 0x51, 0x2e, 0x30, 0xec, 0x05, 0x40, 0xac, 0xfd, 0x7a, 0xb6, 0xa1, 0x3b, - 0x7b, 0x81, 0x08, 0xcf, 0x95, 0x7c, 0x19, 0xab, 0x3f, 0x27, 0xa2, 0x59, 0x46, 0xb9, 0x01, 0x0e, - 0x24, 0x10, 0x6b, 0x57, 0xd9, 0xd2, 0x55, 0x57, 0xd3, 0x35, 0x63, 0xbd, 0xab, 0xe9, 0xeb, 0x46, - 0xae, 0xab, 0xe9, 0x39, 0x63, 0xa3, 0xab, 0xe9, 0x1b, 0x86, 0xde, 0xd5, 0xf4, 0x1d, 0xa3, 0xd0, - 0xd5, 0xf4, 0x82, 0x61, 0x74, 0x35, 0xdd, 0x30, 0x8a, 0x67, 0xe7, 0x0f, 0x2f, 0xb5, 0xec, 0xe3, - 0x4b, 0x2d, 0xfb, 0xff, 0x4b, 0x2d, 0xfb, 0xf7, 0x6b, 0x2d, 0xf3, 0xf8, 0x5a, 0xcb, 0xfc, 0xfb, - 0x5a, 0xcb, 0x5c, 0x1d, 0xcf, 0x8c, 0x78, 0xa9, 0xbe, 0x9e, 0xcd, 0x73, 0xec, 0x89, 0x56, 0x7a, - 0x71, 0xdd, 0x7e, 0xf3, 0x6d, 0x6b, 0x34, 0xbd, 0xbe, 0xd4, 0xc8, 0x5e, 0x4e, 0x5d, 0x45, 0x27, - 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x93, 0x84, 0xa1, 0xe9, 0x10, 0x07, 0x00, 0x00, + // 836 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x6e, 0xdb, 0x36, + 0x18, 0xc0, 0xe3, 0x55, 0x4d, 0x14, 0xb6, 0x89, 0x65, 0xc5, 0xf5, 0x94, 0x74, 0x71, 0x9c, 0xec, + 0x0f, 0xb2, 0x43, 0x6c, 0x2c, 0x05, 0x36, 0x60, 0xd8, 0x61, 0xed, 0x3c, 0xa0, 0x36, 0x82, 0xa2, + 0x50, 0x80, 0x1d, 0xba, 0x83, 0x40, 0x89, 0x9f, 0x2d, 0xae, 0x12, 0xe9, 0x91, 0x74, 0xe3, 0xee, + 0x29, 0xf6, 0x30, 0x7d, 0x88, 0x1e, 0x8b, 0xee, 0x32, 0xec, 0x50, 0x0c, 0xc9, 0x8b, 0x0c, 0xa2, + 0x24, 0x5b, 0xb6, 0x32, 0x08, 0x05, 0x7c, 0x8a, 0xf8, 0xfd, 0xf9, 0xfd, 0xf4, 0x51, 0x54, 0x2c, + 0x74, 0x24, 0x95, 0xa0, 0x04, 0x7a, 0x52, 0xe1, 0x97, 0x40, 0xfd, 0xa0, 0x17, 0x72, 0xa9, 0xbc, + 0x3f, 0x38, 0x83, 0xee, 0x44, 0x70, 0xc5, 0xed, 0x7a, 0x5a, 0xd0, 0xcd, 0x0b, 0x0e, 0x4a, 0x1d, + 0xaf, 0x70, 0x44, 0x09, 0x56, 0x5c, 0xa4, 0x1d, 0x07, 0xcd, 0x31, 0x1f, 0x73, 0x7d, 0xd9, 0x4b, + 0xae, 0xb2, 0xe8, 0x7e, 0xc0, 0x65, 0xcc, 0xa5, 0x97, 0x26, 0xd2, 0x45, 0x9a, 0x3a, 0xf9, 0xab, + 0x8e, 0xcc, 0xa7, 0x5c, 0xaa, 0x17, 0x9c, 0x81, 0xbd, 0x8f, 0xcc, 0x20, 0xc4, 0x94, 0x79, 0x94, + 0x38, 0xb5, 0x4e, 0xed, 0x74, 0xdb, 0xdd, 0xd2, 0xeb, 0x01, 0xb1, 0x4f, 0xd0, 0x7d, 0x1f, 0x82, + 0xf0, 0xd1, 0xf9, 0x44, 0xc0, 0x88, 0xce, 0x9c, 0x86, 0x4e, 0x2f, 0xc5, 0xec, 0xcf, 0xd1, 0x4e, + 0xc0, 0x19, 0x83, 0x40, 0x51, 0xae, 0x19, 0x9f, 0xa4, 0x45, 0x8b, 0xe0, 0x80, 0xd8, 0x5d, 0xb4, + 0xa7, 0x04, 0x66, 0x72, 0x04, 0xc2, 0x0b, 0x42, 0xcc, 0x18, 0x44, 0x49, 0xe9, 0x7d, 0x5d, 0xda, + 0xc8, 0x53, 0x3f, 0xa5, 0x99, 0x01, 0xb1, 0x1f, 0xa2, 0x6d, 0xea, 0x07, 0x1e, 0x01, 0xc6, 0x63, + 0xc7, 0xd4, 0x55, 0x26, 0xf5, 0x83, 0x7e, 0xb2, 0xb6, 0x0f, 0x11, 0xd2, 0x7b, 0x96, 0x66, 0xb7, + 0x75, 0x76, 0x3b, 0x89, 0xa4, 0xe9, 0xaf, 0x91, 0x35, 0x65, 0x3e, 0x67, 0x84, 0xb2, 0xb1, 0x37, + 0x01, 0x41, 0x39, 0x71, 0x0e, 0x3a, 0xb5, 0x53, 0xc3, 0xad, 0xcf, 0xe3, 0xcf, 0x75, 0xd8, 0xfe, + 0x1e, 0xa1, 0xf9, 0x5e, 0x4a, 0xe7, 0x4e, 0xe7, 0xce, 0xe9, 0xbd, 0xf3, 0x83, 0xee, 0xca, 0xfe, + 0x77, 0x7f, 0xc9, 0x4b, 0xdc, 0x42, 0xb5, 0xfd, 0x18, 0xd5, 0x09, 0x4c, 0xb8, 0xa4, 0xca, 0xc3, + 0x84, 0x08, 0x90, 0xd2, 0xb1, 0x93, 0x5b, 0x79, 0xe2, 0xbc, 0x7f, 0x73, 0xd6, 0xcc, 0xb6, 0xfb, + 0x71, 0x9a, 0xb9, 0x54, 0x82, 0xb2, 0xb1, 0xbb, 0x9b, 0x35, 0x64, 0x51, 0xfb, 0x19, 0x6a, 0x5d, + 0x51, 0x15, 0x12, 0x81, 0xaf, 0x70, 0xe4, 0xd1, 0x00, 0xcf, 0x49, 0xad, 0x0a, 0x52, 0x73, 0xd1, + 0x37, 0x08, 0x70, 0xce, 0xfb, 0x11, 0xd5, 0x47, 0x00, 0x4b, 0xa0, 0x4f, 0x2b, 0x40, 0x3b, 0x23, + 0x80, 0x02, 0xe1, 0x19, 0x6a, 0x11, 0x88, 0x60, 0x8c, 0xd3, 0x87, 0x59, 0x00, 0x39, 0x55, 0x77, + 0xb4, 0xe8, 0x5b, 0xe6, 0x09, 0x20, 0x10, 0x4f, 0x4a, 0xbc, 0xfd, 0x2a, 0xde, 0xa2, 0xaf, 0xc0, + 0x23, 0xe8, 0x24, 0xe0, 0x71, 0x3c, 0x65, 0x54, 0xbd, 0xf6, 0x26, 0x9c, 0x47, 0x5e, 0xfe, 0x0c, + 0x8a, 0xec, 0x76, 0x05, 0xbb, 0x3d, 0x67, 0x3c, 0xe7, 0x3c, 0xea, 0xa7, 0x84, 0x82, 0xc5, 0x47, + 0xc7, 0x2b, 0x16, 0x01, 0x6a, 0x2a, 0x96, 0x07, 0x38, 0xaa, 0x90, 0x1c, 0x2e, 0x49, 0x5c, 0x0d, + 0x28, 0x38, 0x42, 0xf4, 0xc5, 0x8a, 0x43, 0x9f, 0x37, 0x2f, 0xe4, 0x91, 0x3e, 0xb8, 0xb9, 0xa6, + 0x53, 0xa1, 0xe9, 0x2c, 0x69, 0x2e, 0x13, 0xc6, 0xd3, 0x14, 0x91, 0x9b, 0x7e, 0x43, 0x5f, 0x96, + 0xa6, 0x21, 0x00, 0x71, 0x49, 0x75, 0x5c, 0xa1, 0x3a, 0x5e, 0x99, 0x28, 0x81, 0xac, 0xb8, 0x7e, + 0x45, 0x0d, 0xc5, 0x15, 0x4e, 0x1e, 0x4b, 0x7e, 0x1a, 0xa4, 0xb3, 0xa3, 0xb9, 0xdd, 0xb7, 0x1f, + 0x8e, 0x36, 0xfe, 0xf9, 0x70, 0xf4, 0xd5, 0x98, 0xaa, 0x70, 0xea, 0x77, 0x03, 0x1e, 0x67, 0xff, + 0x94, 0xb2, 0x3f, 0x67, 0x92, 0xbc, 0xec, 0xa9, 0xd7, 0x13, 0x90, 0xdd, 0x01, 0x53, 0xae, 0xa5, + 0x41, 0xfd, 0x05, 0xc7, 0x66, 0xa8, 0x19, 0x61, 0xa9, 0xbc, 0xc2, 0x89, 0x12, 0x58, 0x81, 0x83, + 0x34, 0xff, 0x87, 0x8f, 0xe0, 0xf7, 0x21, 0x78, 0xff, 0xe6, 0x0c, 0x65, 0x53, 0xf6, 0x21, 0x70, + 0xed, 0x84, 0xec, 0xce, 0xc1, 0x2e, 0x56, 0x60, 0x03, 0xaa, 0xaf, 0xaa, 0xee, 0xad, 0x41, 0xb5, + 0x2b, 0x96, 0x35, 0x11, 0xda, 0x8b, 0x29, 0x2b, 0x4d, 0xd5, 0x5c, 0x83, 0xaa, 0x11, 0x53, 0xe6, + 0x96, 0x6d, 0x78, 0x56, 0xb2, 0x3d, 0x58, 0x8b, 0x0d, 0xcf, 0x56, 0x6c, 0x57, 0x68, 0x3f, 0x99, + 0x8d, 0x32, 0x06, 0xa2, 0xe4, 0xfc, 0x6c, 0x0d, 0xce, 0x56, 0x4c, 0xd9, 0x20, 0xa1, 0xdf, 0x22, + 0xc6, 0xb3, 0xff, 0x11, 0x1f, 0xae, 0x45, 0x8c, 0x67, 0xb7, 0x89, 0xbf, 0x43, 0x4e, 0x24, 0x63, + 0x2f, 0xa2, 0xbf, 0x4f, 0x29, 0xc9, 0xde, 0x69, 0x60, 0xd8, 0x8f, 0x80, 0x38, 0x0f, 0x3b, 0xb5, + 0x53, 0xd3, 0x7d, 0x10, 0xc9, 0xf8, 0x42, 0xa7, 0xf5, 0xdb, 0xfa, 0x73, 0x9a, 0xb4, 0x5b, 0x68, + 0x33, 0xc4, 0x91, 0x02, 0xe2, 0xec, 0xe9, 0xb2, 0x6c, 0x35, 0x34, 0x4c, 0xc3, 0xba, 0x3b, 0x34, + 0xcc, 0xbb, 0xd6, 0xe6, 0xd0, 0x30, 0x37, 0xad, 0xad, 0xa1, 0x61, 0x6e, 0x59, 0xe6, 0xd0, 0x30, + 0x77, 0xad, 0xfa, 0xd0, 0x30, 0xeb, 0x96, 0x35, 0x34, 0x4c, 0xcb, 0x6a, 0x3c, 0xb9, 0x78, 0x7b, + 0xdd, 0xae, 0xbd, 0xbb, 0x6e, 0xd7, 0xfe, 0xbd, 0x6e, 0xd7, 0xfe, 0xbc, 0x69, 0x6f, 0xbc, 0xbb, + 0x69, 0x6f, 0xfc, 0x7d, 0xd3, 0xde, 0x78, 0x71, 0x5e, 0x18, 0xf1, 0x52, 0xff, 0xba, 0x9d, 0x5d, + 0x60, 0x5f, 0xf6, 0xb2, 0x0f, 0x8b, 0x57, 0xdf, 0x7c, 0xdb, 0x9b, 0x2d, 0x3e, 0x2f, 0xf4, 0xc8, + 0xfe, 0xa6, 0xfe, 0x54, 0x78, 0xf4, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x1b, 0x81, 0xe0, + 0xb0, 0x08, 0x00, 0x00, } func (m *HostZone) Marshal() (dAtA []byte, err error) { @@ -266,6 +305,42 @@ func (m *HostZone) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.CommunityPoolRedeemHoldingAddress) > 0 { + i -= len(m.CommunityPoolRedeemHoldingAddress) + copy(dAtA[i:], m.CommunityPoolRedeemHoldingAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.CommunityPoolRedeemHoldingAddress))) + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0x8a + } + if len(m.CommunityPoolStakeHoldingAddress) > 0 { + i -= len(m.CommunityPoolStakeHoldingAddress) + copy(dAtA[i:], m.CommunityPoolStakeHoldingAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.CommunityPoolStakeHoldingAddress))) + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0x82 + } + if len(m.CommunityPoolReturnIcaAddress) > 0 { + i -= len(m.CommunityPoolReturnIcaAddress) + copy(dAtA[i:], m.CommunityPoolReturnIcaAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.CommunityPoolReturnIcaAddress))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xfa + } + if len(m.CommunityPoolDepositIcaAddress) > 0 { + i -= len(m.CommunityPoolDepositIcaAddress) + copy(dAtA[i:], m.CommunityPoolDepositIcaAddress) + i = encodeVarintHostZone(dAtA, i, uint64(len(m.CommunityPoolDepositIcaAddress))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xf2 + } { size := m.MaxInnerRedemptionRate.Size() i -= size @@ -571,6 +646,22 @@ func (m *HostZone) Size() (n int) { n += 2 + l + sovHostZone(uint64(l)) l = m.MaxInnerRedemptionRate.Size() n += 2 + l + sovHostZone(uint64(l)) + l = len(m.CommunityPoolDepositIcaAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.CommunityPoolReturnIcaAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.CommunityPoolStakeHoldingAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } + l = len(m.CommunityPoolRedeemHoldingAddress) + if l > 0 { + n += 2 + l + sovHostZone(uint64(l)) + } return n } @@ -1292,6 +1383,134 @@ func (m *HostZone) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 30: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommunityPoolDepositIcaAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommunityPoolDepositIcaAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 31: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommunityPoolReturnIcaAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommunityPoolReturnIcaAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 32: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommunityPoolStakeHoldingAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommunityPoolStakeHoldingAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 33: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CommunityPoolRedeemHoldingAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowHostZone + } + 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 ErrInvalidLengthHostZone + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHostZone + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CommunityPoolRedeemHoldingAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipHostZone(dAtA[iNdEx:]) diff --git a/x/stakeibc/types/ica_account.pb.go b/x/stakeibc/types/ica_account.pb.go index 11c771870b..de393fe94f 100644 --- a/x/stakeibc/types/ica_account.pb.go +++ b/x/stakeibc/types/ica_account.pb.go @@ -23,10 +23,12 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type ICAAccountType int32 const ( - ICAAccountType_DELEGATION ICAAccountType = 0 - ICAAccountType_FEE ICAAccountType = 1 - ICAAccountType_WITHDRAWAL ICAAccountType = 2 - ICAAccountType_REDEMPTION ICAAccountType = 3 + ICAAccountType_DELEGATION ICAAccountType = 0 + ICAAccountType_FEE ICAAccountType = 1 + ICAAccountType_WITHDRAWAL ICAAccountType = 2 + ICAAccountType_REDEMPTION ICAAccountType = 3 + ICAAccountType_COMMUNITY_POOL_DEPOSIT ICAAccountType = 4 + ICAAccountType_COMMUNITY_POOL_RETURN ICAAccountType = 5 ) var ICAAccountType_name = map[int32]string{ @@ -34,13 +36,17 @@ var ICAAccountType_name = map[int32]string{ 1: "FEE", 2: "WITHDRAWAL", 3: "REDEMPTION", + 4: "COMMUNITY_POOL_DEPOSIT", + 5: "COMMUNITY_POOL_RETURN", } var ICAAccountType_value = map[string]int32{ - "DELEGATION": 0, - "FEE": 1, - "WITHDRAWAL": 2, - "REDEMPTION": 3, + "DELEGATION": 0, + "FEE": 1, + "WITHDRAWAL": 2, + "REDEMPTION": 3, + "COMMUNITY_POOL_DEPOSIT": 4, + "COMMUNITY_POOL_RETURN": 5, } func (x ICAAccountType) String() string { @@ -58,18 +64,21 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/ica_account.proto", fileDescriptor_2976ae6e7f6ce824) } var fileDescriptor_2976ae6e7f6ce824 = []byte{ - // 199 bytes of a gzipped FileDescriptorProto + // 242 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2c, 0x2e, 0x29, 0xca, 0x4c, 0x49, 0xd5, 0x2f, 0x2e, 0x49, 0xcc, 0x4e, 0xcd, 0x4c, 0x4a, 0xd6, 0xcf, 0x4c, 0x4e, 0x8c, 0x4f, 0x4c, 0x4e, 0xce, 0x2f, 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x87, - 0x28, 0xd1, 0x83, 0x29, 0xd1, 0xf2, 0xe4, 0xe2, 0xf3, 0x74, 0x76, 0x74, 0x84, 0x28, 0x0a, 0xa9, - 0x2c, 0x48, 0x15, 0xe2, 0xe3, 0xe2, 0x72, 0x71, 0xf5, 0x71, 0x75, 0x77, 0x0c, 0xf1, 0xf4, 0xf7, - 0x13, 0x60, 0x10, 0x62, 0xe7, 0x62, 0x76, 0x73, 0x75, 0x15, 0x60, 0x04, 0x49, 0x84, 0x7b, 0x86, - 0x78, 0xb8, 0x04, 0x39, 0x86, 0x3b, 0xfa, 0x08, 0x30, 0x81, 0xf8, 0x41, 0xae, 0x2e, 0xae, 0xbe, - 0x01, 0x60, 0x85, 0xcc, 0x4e, 0x3e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, - 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, - 0x65, 0x94, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0x76, 0x80, - 0xae, 0x4f, 0x62, 0x52, 0xb1, 0x3e, 0xd4, 0xbd, 0x65, 0x86, 0x66, 0xfa, 0x15, 0x08, 0x57, 0x97, - 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x1d, 0x6c, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xb1, - 0x6c, 0x27, 0x78, 0xd5, 0x00, 0x00, 0x00, + 0x28, 0xd1, 0x83, 0x29, 0xd1, 0x6a, 0x60, 0xe4, 0xe2, 0xf3, 0x74, 0x76, 0x74, 0x84, 0xa8, 0x0a, + 0xa9, 0x2c, 0x48, 0x15, 0xe2, 0xe3, 0xe2, 0x72, 0x71, 0xf5, 0x71, 0x75, 0x77, 0x0c, 0xf1, 0xf4, + 0xf7, 0x13, 0x60, 0x10, 0x62, 0xe7, 0x62, 0x76, 0x73, 0x75, 0x15, 0x60, 0x04, 0x49, 0x84, 0x7b, + 0x86, 0x78, 0xb8, 0x04, 0x39, 0x86, 0x3b, 0xfa, 0x08, 0x30, 0x81, 0xf8, 0x41, 0xae, 0x2e, 0xae, + 0xbe, 0x01, 0x60, 0x85, 0xcc, 0x42, 0x52, 0x5c, 0x62, 0xce, 0xfe, 0xbe, 0xbe, 0xa1, 0x7e, 0x9e, + 0x21, 0x91, 0xf1, 0x01, 0xfe, 0xfe, 0x3e, 0xf1, 0x2e, 0xae, 0x01, 0xfe, 0xc1, 0x9e, 0x21, 0x02, + 0x2c, 0x42, 0x92, 0x5c, 0xa2, 0x68, 0x72, 0x41, 0xae, 0x21, 0xa1, 0x41, 0x7e, 0x02, 0xac, 0x4e, + 0x3e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, + 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0x65, 0x94, 0x9e, 0x59, 0x92, + 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x1f, 0x0c, 0x76, 0xb8, 0xae, 0x4f, 0x62, 0x52, 0xb1, + 0x3e, 0xd4, 0x9f, 0x65, 0x86, 0x66, 0xfa, 0x15, 0x08, 0xdf, 0x96, 0x54, 0x16, 0xa4, 0x16, 0x27, + 0xb1, 0x81, 0x3d, 0x6a, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x9e, 0xb5, 0xd8, 0xf0, 0x0d, 0x01, + 0x00, 0x00, } diff --git a/x/stakeibc/types/message_register_host_zone.go b/x/stakeibc/types/message_register_host_zone.go index 9005756f09..930ede3ff1 100644 --- a/x/stakeibc/types/message_register_host_zone.go +++ b/x/stakeibc/types/message_register_host_zone.go @@ -4,7 +4,6 @@ import ( "strings" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/address" errorsmod "cosmossdk.io/errors" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -134,8 +133,3 @@ func (msg *MsgRegisterHostZone) ValidateBasic() error { return nil } - -func NewHostZoneDepositAddress(chainId string) sdk.AccAddress { - key := append([]byte("zone"), []byte(chainId)...) - return address.Module(ModuleName, key) -} diff --git a/x/stakeibc/types/tx.pb.go b/x/stakeibc/types/tx.pb.go index 04bb478e8c..a96e7df94c 100644 --- a/x/stakeibc/types/tx.pb.go +++ b/x/stakeibc/types/tx.pb.go @@ -8,6 +8,7 @@ import ( fmt "fmt" _ "github.com/cosmos/cosmos-proto" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" + types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/gogoproto/gogoproto" grpc1 "github.com/cosmos/gogoproto/grpc" proto "github.com/cosmos/gogoproto/proto" @@ -178,6 +179,7 @@ func (m *MsgLiquidStake) GetHostDenom() string { } type MsgLiquidStakeResponse struct { + StToken types.Coin `protobuf:"bytes,1,opt,name=st_token,json=stToken,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coins" json:"st_token"` } func (m *MsgLiquidStakeResponse) Reset() { *m = MsgLiquidStakeResponse{} } @@ -213,6 +215,13 @@ func (m *MsgLiquidStakeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgLiquidStakeResponse proto.InternalMessageInfo +func (m *MsgLiquidStakeResponse) GetStToken() types.Coin { + if m != nil { + return m.StToken + } + return types.Coin{} +} + type MsgLSMLiquidStake struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount"` @@ -1581,102 +1590,106 @@ func init() { func init() { proto.RegisterFile("stride/stakeibc/tx.proto", fileDescriptor_9b7e09c9ad51cd54) } var fileDescriptor_9b7e09c9ad51cd54 = []byte{ - // 1512 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcf, 0x6f, 0xdc, 0xc4, - 0x17, 0x8f, 0x9b, 0x34, 0x4d, 0x5f, 0x7e, 0x3b, 0x69, 0xea, 0x38, 0xdf, 0xee, 0xa6, 0xce, 0xf7, - 0xfb, 0x25, 0x94, 0x26, 0x51, 0x92, 0x0a, 0x44, 0x81, 0x43, 0x36, 0x29, 0xea, 0x4a, 0x4d, 0x85, - 0x9c, 0x96, 0x4a, 0x95, 0x90, 0x99, 0xb5, 0xa7, 0x5e, 0xab, 0xf6, 0x78, 0xeb, 0xf1, 0xa6, 0x5b, - 0x0e, 0x88, 0x0b, 0x12, 0x17, 0x24, 0x10, 0x12, 0x47, 0xd4, 0x03, 0x07, 0x24, 0x6e, 0xa8, 0x7f, - 0x44, 0x25, 0x2e, 0x55, 0x4f, 0x88, 0xc3, 0x0a, 0xb5, 0x17, 0xce, 0xf9, 0x0b, 0xd0, 0x8c, 0xbd, - 0xb3, 0xb6, 0x33, 0x9b, 0xa4, 0x69, 0xe8, 0x29, 0x3b, 0xf3, 0x3e, 0x33, 0xef, 0x33, 0x6f, 0xde, - 0x7c, 0xde, 0x8b, 0x41, 0xa3, 0x71, 0xe4, 0x39, 0x78, 0x85, 0xc6, 0xe8, 0x3e, 0xf6, 0x6a, 0xf6, - 0x4a, 0xdc, 0x5a, 0x6e, 0x44, 0x61, 0x1c, 0xaa, 0xe3, 0x89, 0x65, 0xb9, 0x63, 0xd1, 0x2f, 0x16, - 0xa1, 0x9e, 0x8d, 0x2c, 0x64, 0xdb, 0x61, 0x93, 0xc4, 0xc9, 0x1a, 0xbd, 0x5c, 0x84, 0xec, 0x22, - 0xdf, 0x73, 0x50, 0x1c, 0x46, 0x29, 0x60, 0xda, 0x0d, 0xdd, 0x90, 0xff, 0x5c, 0x61, 0xbf, 0xd2, - 0xd9, 0x59, 0x3b, 0xa4, 0x41, 0x48, 0xad, 0xc4, 0x90, 0x0c, 0x12, 0x93, 0xf1, 0xfb, 0x29, 0x30, - 0xb6, 0xa9, 0x7b, 0xbb, 0xe1, 0xa0, 0x18, 0x57, 0x09, 0xc1, 0x91, 0x89, 0x1d, 0x1c, 0x34, 0x62, - 0x2f, 0x24, 0x26, 0x8a, 0x71, 0x25, 0x6c, 0x12, 0x87, 0xaa, 0x1a, 0x9c, 0xb1, 0x23, 0xcc, 0x1c, - 0x69, 0xca, 0xbc, 0xb2, 0x78, 0xd6, 0xec, 0x0c, 0xd5, 0x59, 0x18, 0xb2, 0xeb, 0xc8, 0x23, 0x96, - 0xe7, 0x68, 0xa7, 0x52, 0x13, 0x1b, 0x57, 0x1d, 0xf5, 0x21, 0xcc, 0x06, 0xcc, 0xc0, 0x76, 0xb5, - 0x22, 0xb1, 0xad, 0x15, 0xa1, 0x18, 0x6b, 0xfd, 0x0c, 0x5b, 0xf9, 0xf0, 0x69, 0xbb, 0xdc, 0xf7, - 0x67, 0xbb, 0xfc, 0x7f, 0xd7, 0x8b, 0xeb, 0xcd, 0xda, 0xb2, 0x1d, 0x06, 0x29, 0xbf, 0xf4, 0xcf, - 0x12, 0x75, 0xee, 0xaf, 0xc4, 0x8f, 0x1a, 0x98, 0x2e, 0x6f, 0x61, 0xfb, 0xf9, 0x93, 0x25, 0x48, - 0xe9, 0x6f, 0x61, 0xdb, 0x9c, 0x09, 0x3c, 0x22, 0xe1, 0xcc, 0x1d, 0xa3, 0x56, 0x0f, 0xc7, 0x03, - 0x27, 0xe2, 0x18, 0xb5, 0x24, 0x8e, 0x8d, 0xcb, 0x70, 0xe9, 0xf0, 0x60, 0x9a, 0x98, 0x36, 0x42, - 0x42, 0xb1, 0xf1, 0xbd, 0x02, 0x63, 0xdb, 0xd4, 0xbd, 0xe1, 0x3d, 0x68, 0x7a, 0xce, 0x0e, 0xbb, - 0xd2, 0x03, 0xe2, 0xfc, 0x31, 0x0c, 0xa2, 0x80, 0xa5, 0x42, 0x12, 0xe5, 0xca, 0xf2, 0x2b, 0x1c, - 0xa0, 0x4a, 0x62, 0x33, 0x5d, 0xad, 0x5e, 0x00, 0xa8, 0x87, 0x34, 0xb6, 0x1c, 0x4c, 0xc2, 0x20, - 0xb9, 0x05, 0xf3, 0x2c, 0x9b, 0xd9, 0x62, 0x13, 0x86, 0x06, 0x33, 0x79, 0x4a, 0x82, 0xed, 0xcf, - 0x0a, 0x4c, 0x32, 0xd3, 0xce, 0xf6, 0x9b, 0x25, 0xbc, 0x04, 0x53, 0x3e, 0x0d, 0xac, 0x38, 0xbc, - 0x8f, 0x89, 0xe5, 0xd5, 0xec, 0x1c, 0xf3, 0x09, 0x9f, 0x06, 0xb7, 0x98, 0xa5, 0x5a, 0xb3, 0x93, - 0x03, 0xdc, 0x84, 0xd9, 0x7d, 0x2c, 0x3b, 0x67, 0x50, 0x57, 0x61, 0x3a, 0x8e, 0x10, 0xa1, 0xc8, - 0xe6, 0xf9, 0x60, 0x87, 0x41, 0xc3, 0xc7, 0x31, 0xe6, 0xd4, 0x87, 0xcc, 0xa9, 0x8c, 0x6d, 0x33, - 0x35, 0x19, 0xbf, 0x28, 0x30, 0xbe, 0x4d, 0xdd, 0x4d, 0x1f, 0xa3, 0xa8, 0x82, 0x7c, 0x44, 0x6c, - 0x7c, 0xbc, 0xd7, 0xd0, 0x8d, 0x47, 0xff, 0x6b, 0xc5, 0x83, 0x39, 0xaf, 0x23, 0x42, 0xb0, 0x9f, - 0xa4, 0xb2, 0xd9, 0x19, 0x1a, 0xb3, 0x70, 0xbe, 0xc0, 0x54, 0x5c, 0xde, 0xaf, 0x49, 0xaa, 0xb1, - 0x74, 0xc4, 0xc1, 0x9b, 0xba, 0xb9, 0x39, 0xe0, 0x89, 0x65, 0x7d, 0x11, 0x92, 0xf4, 0xbd, 0x9b, - 0x43, 0x6c, 0xe2, 0x6e, 0x48, 0xb0, 0xaa, 0xc3, 0x50, 0x84, 0x6d, 0xec, 0xed, 0xe2, 0x28, 0x3d, - 0x87, 0x18, 0xa7, 0x49, 0x98, 0x21, 0x2b, 0xce, 0xf1, 0xdb, 0x69, 0x98, 0xe2, 0x26, 0xd7, 0xa3, - 0x31, 0x8e, 0xae, 0x77, 0x76, 0xfb, 0x08, 0x46, 0xed, 0x90, 0x10, 0x9c, 0xdc, 0x6b, 0x27, 0xf8, - 0x15, 0x6d, 0xaf, 0x5d, 0x9e, 0x7e, 0x84, 0x02, 0xff, 0xaa, 0x91, 0x33, 0x1b, 0xe6, 0x48, 0x77, - 0x5c, 0x75, 0x54, 0x03, 0x46, 0x6a, 0xd8, 0xae, 0xaf, 0xaf, 0x35, 0x22, 0x7c, 0xcf, 0x6b, 0x69, - 0x23, 0x9c, 0x50, 0x6e, 0x4e, 0xbd, 0x92, 0x7b, 0x38, 0x89, 0x8a, 0x9c, 0xdb, 0x6b, 0x97, 0x27, - 0x93, 0xfd, 0xbb, 0x36, 0x23, 0xf3, 0x9e, 0xd4, 0x55, 0x38, 0xdb, 0xcd, 0xd9, 0xd3, 0x7c, 0xd1, - 0xf4, 0x5e, 0xbb, 0x3c, 0x91, 0x2c, 0x12, 0x26, 0xc3, 0x1c, 0xf2, 0xd2, 0x0c, 0xce, 0x5e, 0xcc, - 0x60, 0xfe, 0x62, 0x6e, 0x42, 0x92, 0xa2, 0xf7, 0x70, 0x64, 0xa5, 0x97, 0xce, 0xce, 0x0a, 0x7c, - 0xdb, 0xd2, 0x5e, 0xbb, 0xac, 0x27, 0xdb, 0x4a, 0x40, 0x86, 0x39, 0xd9, 0x99, 0xdd, 0x4c, 0x26, - 0x79, 0x4a, 0x4e, 0x34, 0x49, 0x2d, 0x24, 0x8e, 0x47, 0x5c, 0xab, 0x81, 0x23, 0x2f, 0x74, 0xb4, - 0xe1, 0x79, 0x65, 0x71, 0xa0, 0x32, 0xb7, 0xd7, 0x2e, 0x9f, 0x4f, 0x36, 0x2b, 0x22, 0x0c, 0x73, - 0x5c, 0x4c, 0x7d, 0xc2, 0x67, 0x54, 0x1f, 0xa6, 0x98, 0xd0, 0x17, 0x95, 0x76, 0xf4, 0x04, 0x94, - 0x76, 0x32, 0xf0, 0x48, 0x41, 0xdd, 0x99, 0x37, 0xd4, 0xda, 0xe7, 0x6d, 0xec, 0x44, 0xbc, 0xa1, - 0x56, 0xc1, 0xdb, 0x7b, 0xa0, 0x31, 0xf9, 0xf1, 0xb9, 0x9a, 0x58, 0xbc, 0xf0, 0x5a, 0x98, 0xa0, - 0x9a, 0x8f, 0x1d, 0x6d, 0x9c, 0xcb, 0xc6, 0x39, 0x9f, 0x06, 0x19, 0xb1, 0xb9, 0x96, 0x18, 0xaf, - 0x0e, 0x7d, 0xf3, 0xb8, 0xdc, 0xf7, 0xf7, 0xe3, 0x72, 0x9f, 0x71, 0x01, 0xe6, 0x24, 0x39, 0x2b, - 0x72, 0xfa, 0x6b, 0x85, 0x4b, 0xd6, 0xa6, 0x8f, 0xbc, 0xe0, 0x36, 0x71, 0xb0, 0x8f, 0x5d, 0x14, - 0x63, 0x87, 0xcb, 0xda, 0x41, 0x95, 0x77, 0x1e, 0x46, 0xc4, 0xf3, 0xea, 0xea, 0x0d, 0x74, 0x5e, - 0x58, 0xd5, 0x51, 0xa7, 0xe1, 0x34, 0x6e, 0x84, 0x76, 0x9d, 0x3f, 0xbe, 0x01, 0x33, 0x19, 0xa8, - 0x33, 0x30, 0x48, 0x31, 0x71, 0xc4, 0xbb, 0x4b, 0x47, 0xc6, 0x02, 0x5c, 0xec, 0x49, 0x43, 0x90, - 0x8d, 0xd3, 0xa7, 0x59, 0x4b, 0x04, 0xe6, 0xd3, 0x4e, 0xff, 0x71, 0x10, 0xd1, 0x9c, 0x0e, 0x9c, - 0x2a, 0xe8, 0xc0, 0x02, 0x8c, 0x92, 0x66, 0x60, 0x45, 0x9d, 0x1d, 0x53, 0xae, 0x23, 0xa4, 0x19, - 0x08, 0x2f, 0xc6, 0x3c, 0x94, 0xe4, 0x5e, 0xb3, 0x41, 0x9c, 0xd8, 0xa6, 0xee, 0x86, 0xe3, 0xbc, - 0x3e, 0xa5, 0xab, 0x00, 0xa2, 0xaf, 0xa2, 0x5a, 0xff, 0x7c, 0xff, 0xe2, 0xf0, 0x9a, 0xbe, 0x5c, - 0x68, 0xd7, 0x96, 0x85, 0x1f, 0x33, 0x83, 0x36, 0x74, 0xd0, 0x8a, 0x34, 0x04, 0xc7, 0x9f, 0x14, - 0x6e, 0x64, 0xef, 0xcf, 0xed, 0x9e, 0xe1, 0x0e, 0xf6, 0xdc, 0x7a, 0x7c, 0x5c, 0xae, 0xeb, 0x30, - 0xb4, 0x8b, 0x7c, 0x0b, 0x39, 0x4e, 0x94, 0xd6, 0x15, 0xed, 0xf9, 0x93, 0xa5, 0xe9, 0x34, 0xa7, - 0x37, 0x1c, 0x27, 0xc2, 0x94, 0xee, 0xc4, 0x91, 0x47, 0x5c, 0xf3, 0xcc, 0x2e, 0xf2, 0xd9, 0x0c, - 0xcb, 0x80, 0x87, 0xdc, 0x2b, 0xcf, 0x80, 0x01, 0x33, 0x1d, 0x19, 0x06, 0xcc, 0xf7, 0xe2, 0x27, - 0x0e, 0xf1, 0x95, 0x02, 0xea, 0x36, 0x75, 0xb7, 0x30, 0xab, 0x8e, 0x02, 0xf4, 0x26, 0xe9, 0x1b, - 0xff, 0x01, 0x7d, 0x3f, 0x03, 0x41, 0xf0, 0x47, 0x25, 0x7d, 0x6e, 0x34, 0x0e, 0x23, 0x5c, 0x25, - 0x31, 0x8e, 0x78, 0x09, 0xde, 0x48, 0x3a, 0xe9, 0xe3, 0x15, 0xef, 0x0a, 0x8c, 0xa4, 0x9d, 0xb8, - 0xc5, 0xb4, 0x83, 0x73, 0x1d, 0x5b, 0x2b, 0xef, 0x4b, 0x8a, 0xea, 0xe6, 0x46, 0xea, 0xe7, 0xd6, - 0xa3, 0x06, 0x36, 0x87, 0x51, 0x77, 0x60, 0xfc, 0x0f, 0x16, 0x0e, 0xe0, 0x25, 0xf8, 0x3f, 0xe0, - 0x97, 0x90, 0xf4, 0x90, 0xe2, 0x74, 0x3b, 0x75, 0x14, 0x61, 0x7a, 0xad, 0x65, 0xd7, 0xb9, 0x28, - 0x1d, 0xeb, 0x0c, 0x1a, 0xb0, 0x08, 0x86, 0x0d, 0x9c, 0x86, 0xda, 0xec, 0x0c, 0x8d, 0x4b, 0xb0, - 0x78, 0x98, 0x4b, 0x41, 0xaf, 0xc9, 0xbb, 0xc0, 0xae, 0x40, 0x30, 0x39, 0xfb, 0xf7, 0x7b, 0x09, - 0x63, 0x8e, 0x6b, 0x64, 0xde, 0xad, 0xe0, 0xe4, 0x72, 0x51, 0xda, 0x44, 0xbe, 0x57, 0x63, 0xa5, - 0x60, 0x2b, 0xc1, 0x78, 0x21, 0x39, 0xe9, 0x40, 0x25, 0x3a, 0x24, 0x71, 0x24, 0xa8, 0x5c, 0xe7, - 0xe1, 0x31, 0x31, 0x6d, 0x06, 0x58, 0x74, 0x27, 0xc7, 0x61, 0x91, 0x9e, 0x38, 0xbf, 0x53, 0xc7, - 0xcd, 0x5a, 0x7b, 0x14, 0xfa, 0xb7, 0xa9, 0xab, 0xde, 0x81, 0xe1, 0x6c, 0x37, 0xbe, 0x3f, 0x21, - 0xf3, 0xcd, 0xbc, 0xfe, 0xd6, 0x21, 0x00, 0xd1, 0x29, 0x7f, 0x0e, 0x63, 0x85, 0x4e, 0xdf, 0x90, - 0x2e, 0xcd, 0x61, 0xf4, 0x4b, 0x87, 0x63, 0x84, 0x87, 0x3b, 0x30, 0x9c, 0x6d, 0x47, 0xa5, 0xd4, - 0x33, 0x00, 0x39, 0x75, 0x49, 0x8f, 0xa8, 0xde, 0x83, 0x89, 0x7d, 0xfd, 0xe1, 0x7f, 0xe5, 0x8b, - 0xf3, 0x28, 0xfd, 0xf2, 0x51, 0x50, 0xc2, 0x4f, 0x0b, 0x66, 0x7a, 0xd4, 0x6c, 0x69, 0x18, 0xe4, - 0x58, 0x7d, 0xed, 0xe8, 0x58, 0xe1, 0x39, 0x84, 0x29, 0x59, 0x05, 0xee, 0x11, 0xa1, 0x7d, 0x40, - 0x7d, 0xe5, 0x88, 0x40, 0xe1, 0xf0, 0x33, 0x18, 0xcd, 0x57, 0xd6, 0x8b, 0xb2, 0x1d, 0x72, 0x10, - 0xfd, 0xed, 0x43, 0x21, 0x62, 0xfb, 0x26, 0x9c, 0x93, 0x17, 0x45, 0xe9, 0x1e, 0x52, 0xa8, 0xbe, - 0x7a, 0x64, 0xa8, 0x70, 0x6b, 0xc3, 0x78, 0xb1, 0x8c, 0x2d, 0xc8, 0x76, 0x29, 0x80, 0xf4, 0x77, - 0x8e, 0x00, 0x12, 0x4e, 0xbe, 0x04, 0xad, 0x67, 0x29, 0xea, 0x91, 0x6f, 0x72, 0xb4, 0x7e, 0xe5, - 0x55, 0xd0, 0xc2, 0xff, 0xb7, 0x0a, 0x5c, 0x38, 0xb8, 0x98, 0x48, 0x23, 0x77, 0xe0, 0x12, 0xfd, - 0xfd, 0x57, 0x5e, 0x92, 0xcd, 0x5d, 0x99, 0x50, 0x4b, 0x73, 0x57, 0x02, 0x94, 0xe7, 0xee, 0x01, - 0x8a, 0xac, 0xde, 0x85, 0x91, 0xdc, 0x3f, 0xef, 0xf3, 0xf2, 0x07, 0xd7, 0x45, 0xe8, 0x8b, 0x87, - 0x21, 0xb2, 0x2a, 0x59, 0xa8, 0x84, 0x52, 0x95, 0xcc, 0x63, 0xe4, 0x2a, 0x29, 0x2f, 0x6d, 0xea, - 0x0f, 0x0a, 0x94, 0x0f, 0xfb, 0x38, 0xb7, 0xde, 0xfb, 0x36, 0x7a, 0x2e, 0xd2, 0x3f, 0x38, 0xc6, - 0xa2, 0xec, 0xb9, 0x0b, 0x25, 0xce, 0xe8, 0x91, 0x9c, 0x19, 0x8c, 0xfc, 0xdc, 0xf2, 0x02, 0x57, - 0xb9, 0xf1, 0xf4, 0x45, 0x49, 0x79, 0xf6, 0xa2, 0xa4, 0xfc, 0xf5, 0xa2, 0xa4, 0x7c, 0xf7, 0xb2, - 0xd4, 0xf7, 0xec, 0x65, 0xa9, 0xef, 0x8f, 0x97, 0xa5, 0xbe, 0xbb, 0x6b, 0x99, 0xce, 0x61, 0x87, - 0xef, 0xb7, 0x74, 0x03, 0xd5, 0xe8, 0x4a, 0xfa, 0x69, 0x74, 0x77, 0xf5, 0xdd, 0x95, 0x56, 0xe6, - 0x73, 0x2b, 0xeb, 0x24, 0x6a, 0x83, 0xfc, 0x63, 0xe7, 0xfa, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, - 0x04, 0xde, 0x8c, 0x58, 0x8e, 0x15, 0x00, 0x00, + // 1581 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4f, 0x6f, 0xdc, 0xc6, + 0x15, 0x17, 0x2d, 0x59, 0x5e, 0x3f, 0xfd, 0xa7, 0x64, 0x99, 0xa2, 0xea, 0x5d, 0x99, 0xea, 0x1f, + 0xd5, 0xb5, 0x76, 0x2b, 0xc9, 0x68, 0x51, 0xb7, 0x3d, 0x68, 0x25, 0x17, 0x5e, 0xc0, 0x32, 0x0a, + 0xca, 0xae, 0x01, 0x03, 0x05, 0x3b, 0x4b, 0x8e, 0xb8, 0x84, 0xc9, 0xe1, 0x9a, 0xc3, 0x95, 0xd7, + 0x3d, 0x14, 0xbe, 0x14, 0xe8, 0xa5, 0x40, 0x82, 0x00, 0x39, 0x06, 0x3e, 0xe4, 0x10, 0x24, 0xb7, + 0xc0, 0x1f, 0xc2, 0x40, 0x2e, 0x86, 0x4f, 0x41, 0x0e, 0x9b, 0xc0, 0xbe, 0xe4, 0xac, 0x4f, 0x10, + 0xcc, 0x90, 0x3b, 0x4b, 0xae, 0x66, 0x25, 0x59, 0x56, 0x7c, 0x92, 0x66, 0xde, 0x6f, 0xde, 0xfb, + 0xbd, 0x37, 0x6f, 0xde, 0x7b, 0x4b, 0xd0, 0x68, 0x1c, 0x79, 0x0e, 0xae, 0xd0, 0x18, 0x3d, 0xc2, + 0x5e, 0xdd, 0xae, 0xc4, 0xed, 0x72, 0x33, 0x0a, 0xe3, 0x50, 0x9d, 0x4a, 0x24, 0xe5, 0xae, 0x44, + 0xbf, 0xda, 0x0f, 0xf5, 0x6c, 0x64, 0x21, 0xdb, 0x0e, 0x5b, 0x24, 0x4e, 0xce, 0xe8, 0xa5, 0x7e, + 0xc8, 0x3e, 0xf2, 0x3d, 0x07, 0xc5, 0x61, 0x94, 0x02, 0xe6, 0xdc, 0xd0, 0x0d, 0xf9, 0xbf, 0x15, + 0xf6, 0x5f, 0xba, 0xbb, 0x60, 0x87, 0x34, 0x08, 0xa9, 0x95, 0x08, 0x92, 0x45, 0x2a, 0x2a, 0x26, + 0xab, 0x4a, 0x1d, 0x51, 0x5c, 0xd9, 0x5f, 0xab, 0xe3, 0x18, 0xad, 0x55, 0xec, 0xd0, 0x23, 0x89, + 0xdc, 0xf8, 0xe6, 0x1c, 0x18, 0x3b, 0xd4, 0xbd, 0xdf, 0x74, 0x50, 0x8c, 0x6b, 0x84, 0xe0, 0xc8, + 0xc4, 0x0e, 0x0e, 0x9a, 0xb1, 0x17, 0x12, 0x13, 0xc5, 0xb8, 0x1a, 0xb6, 0x88, 0x43, 0x55, 0x0d, + 0x2e, 0xd8, 0x11, 0x66, 0x44, 0x34, 0x65, 0x49, 0x59, 0xb9, 0x68, 0x76, 0x97, 0xea, 0x02, 0x14, + 0xec, 0x06, 0xf2, 0x88, 0xe5, 0x39, 0xda, 0xb9, 0x54, 0xc4, 0xd6, 0x35, 0x47, 0x7d, 0x02, 0x0b, + 0x01, 0x13, 0x30, 0xad, 0x56, 0x24, 0xd4, 0x5a, 0x11, 0x8a, 0xb1, 0x36, 0xcc, 0xb0, 0xd5, 0xbf, + 0xbc, 0xec, 0x94, 0x86, 0xbe, 0xeb, 0x94, 0x7e, 0xed, 0x7a, 0x71, 0xa3, 0x55, 0x2f, 0xdb, 0x61, + 0x90, 0xf2, 0x4f, 0xff, 0xac, 0x52, 0xe7, 0x51, 0x25, 0x7e, 0xda, 0xc4, 0xb4, 0xbc, 0x8d, 0xed, + 0xd7, 0x2f, 0x56, 0x21, 0x75, 0x6f, 0x1b, 0xdb, 0xe6, 0x7c, 0xe0, 0x11, 0x09, 0x67, 0x6e, 0x18, + 0xb5, 0x07, 0x18, 0x1e, 0x39, 0x13, 0xc3, 0xa8, 0x2d, 0x31, 0x6c, 0x5c, 0x87, 0x6b, 0xc7, 0x07, + 0xd3, 0xc4, 0xb4, 0x19, 0x12, 0x8a, 0x8d, 0x8f, 0x15, 0x98, 0xdc, 0xa1, 0xee, 0x1d, 0xef, 0x71, + 0xcb, 0x73, 0x76, 0xd9, 0x95, 0x1f, 0x11, 0xe7, 0xbf, 0xc1, 0x28, 0x0a, 0x58, 0xaa, 0x24, 0x51, + 0xae, 0x96, 0xdf, 0xc1, 0x81, 0x1a, 0x89, 0xcd, 0xf4, 0xb4, 0x7a, 0x05, 0xa0, 0x11, 0xd2, 0xd8, + 0x72, 0x30, 0x09, 0x83, 0xe4, 0x16, 0xcc, 0x8b, 0x6c, 0x67, 0x9b, 0x6d, 0x18, 0xcf, 0x14, 0x98, + 0xcf, 0x73, 0xea, 0xd2, 0x55, 0xf7, 0xa0, 0x40, 0x63, 0x2b, 0x0e, 0x1f, 0x61, 0xc2, 0xc9, 0x8d, + 0xad, 0x2f, 0x94, 0xd3, 0x98, 0xb0, 0xec, 0x2a, 0xa7, 0xd9, 0x55, 0xde, 0x0a, 0x3d, 0x52, 0xfd, + 0x3d, 0xa3, 0xf7, 0xe5, 0xf7, 0xa5, 0x95, 0x13, 0xd0, 0x63, 0x07, 0xa8, 0x79, 0x81, 0xc6, 0xf7, + 0x98, 0x6e, 0xe3, 0x73, 0x05, 0x66, 0x18, 0x85, 0xdd, 0x9d, 0x0f, 0x1b, 0x99, 0x55, 0x98, 0xf5, + 0x69, 0x90, 0x38, 0x68, 0x79, 0x75, 0x3b, 0x17, 0xa2, 0x69, 0x9f, 0x06, 0x9c, 0x5e, 0xad, 0x6e, + 0x27, 0x91, 0xba, 0x0b, 0x0b, 0x87, 0x58, 0x8a, 0x58, 0xad, 0xc1, 0x5c, 0x1c, 0x21, 0x42, 0x91, + 0xcd, 0x13, 0xcf, 0x0e, 0x83, 0xa6, 0x8f, 0x63, 0xcc, 0xa9, 0x17, 0xcc, 0xd9, 0x8c, 0x6c, 0x2b, + 0x15, 0x19, 0x5f, 0x28, 0x30, 0xb5, 0x43, 0xdd, 0x2d, 0x1f, 0xa3, 0xa8, 0x8a, 0x7c, 0x44, 0x6c, + 0x7c, 0xba, 0x67, 0xd7, 0x8b, 0xc7, 0xf0, 0x7b, 0xc5, 0x83, 0x19, 0x6f, 0x20, 0x42, 0xb0, 0x9f, + 0xbc, 0x19, 0xb3, 0xbb, 0x34, 0x16, 0xe0, 0x72, 0x1f, 0x53, 0x91, 0xd3, 0x5f, 0x25, 0x39, 0xcd, + 0xf2, 0x1e, 0x07, 0x1f, 0xea, 0xe6, 0x16, 0x81, 0x67, 0xb0, 0xf5, 0xef, 0x90, 0xa4, 0x85, 0xc5, + 0x2c, 0xb0, 0x8d, 0x87, 0x21, 0xc1, 0xaa, 0x0e, 0x85, 0x08, 0xdb, 0xd8, 0xdb, 0xc7, 0x51, 0xea, + 0x87, 0x58, 0x1b, 0x1a, 0x4f, 0xf6, 0x0c, 0x59, 0xe1, 0xc7, 0xd7, 0xe7, 0x61, 0x96, 0x8b, 0x5c, + 0x8f, 0xc6, 0x38, 0xba, 0xdd, 0xd5, 0xf6, 0x57, 0x98, 0xb0, 0x43, 0x42, 0x70, 0x72, 0xaf, 0xdd, + 0xe0, 0x57, 0xb5, 0x83, 0x4e, 0x69, 0xee, 0x29, 0x0a, 0xfc, 0x9b, 0x46, 0x4e, 0x6c, 0x98, 0xe3, + 0xbd, 0x75, 0xcd, 0x51, 0x0d, 0x18, 0xaf, 0x63, 0xbb, 0xb1, 0xb1, 0xde, 0x8c, 0xf0, 0x9e, 0xd7, + 0xd6, 0xc6, 0x39, 0xa1, 0xdc, 0x9e, 0x7a, 0x23, 0xf7, 0x42, 0x93, 0x72, 0x75, 0xe9, 0xa0, 0x53, + 0x9a, 0x49, 0xf4, 0xf7, 0x64, 0x46, 0xe6, 0xe1, 0xaa, 0x6b, 0x70, 0xb1, 0x97, 0xb3, 0xe7, 0xf9, + 0xa1, 0xb9, 0x83, 0x4e, 0x69, 0x3a, 0x39, 0x24, 0x44, 0x86, 0x59, 0xf0, 0xd2, 0x0c, 0xce, 0x5e, + 0xcc, 0x68, 0xfe, 0x62, 0xee, 0x42, 0x92, 0xa2, 0x7b, 0x38, 0xb2, 0xd2, 0x4b, 0x67, 0xbe, 0x02, + 0x57, 0x5b, 0x3c, 0xe8, 0x94, 0xf4, 0x44, 0xad, 0x04, 0x64, 0x98, 0x33, 0xdd, 0xdd, 0xad, 0x64, + 0x93, 0xa7, 0xe4, 0x74, 0x8b, 0xd4, 0x43, 0xe2, 0x78, 0xc4, 0xb5, 0x9a, 0x38, 0xf2, 0x42, 0x47, + 0x1b, 0x5b, 0x52, 0x56, 0x46, 0xaa, 0x8b, 0x07, 0x9d, 0xd2, 0xe5, 0x44, 0x59, 0x3f, 0xc2, 0x30, + 0xa7, 0xc4, 0xd6, 0xdf, 0xf9, 0x8e, 0xea, 0xc3, 0x2c, 0xeb, 0x28, 0xfd, 0x25, 0x7d, 0xe2, 0x0c, + 0x4a, 0xfa, 0x4c, 0xe0, 0x91, 0xbe, 0x36, 0xc2, 0xac, 0xa1, 0xf6, 0x21, 0x6b, 0x93, 0x67, 0x62, + 0x0d, 0xb5, 0xfb, 0xac, 0xfd, 0x11, 0x34, 0x56, 0x7e, 0x7c, 0x5e, 0x4d, 0x2c, 0x3e, 0x01, 0x58, + 0x98, 0xa0, 0xba, 0x8f, 0x1d, 0x6d, 0x8a, 0x97, 0x8d, 0x4b, 0x3e, 0x0d, 0x32, 0xc5, 0xe6, 0x56, + 0x22, 0xbc, 0x59, 0xf8, 0xdf, 0xf3, 0xd2, 0xd0, 0x8f, 0xcf, 0x4b, 0x43, 0xc6, 0x15, 0x58, 0x94, + 0xe4, 0xac, 0xc8, 0xe9, 0xff, 0x2a, 0xbc, 0x64, 0x6d, 0xf9, 0xc8, 0x0b, 0xee, 0x13, 0x07, 0xfb, + 0xd8, 0x45, 0x31, 0x76, 0x78, 0x59, 0x3b, 0xaa, 0xc5, 0x2f, 0xc1, 0xb8, 0x78, 0x5e, 0xbd, 0x7a, + 0x03, 0xdd, 0x17, 0x56, 0x73, 0xd4, 0x39, 0x38, 0x8f, 0x9b, 0xa1, 0xdd, 0xe0, 0x8f, 0x6f, 0xc4, + 0x4c, 0x16, 0xea, 0x3c, 0x8c, 0x52, 0x4c, 0x1c, 0xf1, 0xee, 0xd2, 0x95, 0xb1, 0x0c, 0x57, 0x07, + 0xd2, 0x10, 0x64, 0xe3, 0xf4, 0x69, 0xd6, 0x93, 0x02, 0xf3, 0x8f, 0xee, 0x20, 0x74, 0x14, 0xd1, + 0x5c, 0x1d, 0x38, 0xd7, 0x57, 0x07, 0x96, 0x61, 0x82, 0xb4, 0x02, 0x2b, 0xea, 0x6a, 0x4c, 0xb9, + 0x8e, 0x93, 0x56, 0x20, 0xac, 0x18, 0x4b, 0x50, 0x94, 0x5b, 0xcd, 0x06, 0x71, 0x7a, 0x87, 0xba, + 0x9b, 0x8e, 0xf3, 0xfe, 0x94, 0x6e, 0x02, 0x88, 0x01, 0x8f, 0x6a, 0xc3, 0x4b, 0xc3, 0x2b, 0x63, + 0xeb, 0x7a, 0xb9, 0x6f, 0x6e, 0x2c, 0x0b, 0x3b, 0x66, 0x06, 0x6d, 0xe8, 0xa0, 0xf5, 0xd3, 0x10, + 0x1c, 0x3f, 0x53, 0xb8, 0x90, 0xbd, 0x3f, 0xb7, 0xe7, 0xc3, 0x03, 0xec, 0xb9, 0x8d, 0xf8, 0xb4, + 0x5c, 0x37, 0xa0, 0xb0, 0x8f, 0x7c, 0x0b, 0x39, 0x4e, 0x94, 0xf6, 0x15, 0xed, 0xf5, 0x8b, 0xd5, + 0xb9, 0x34, 0xa7, 0x37, 0x1d, 0x27, 0xc2, 0x94, 0xee, 0xc6, 0x91, 0x47, 0x5c, 0xf3, 0xc2, 0x3e, + 0xf2, 0xd9, 0x0e, 0xcb, 0x80, 0x27, 0xdc, 0x2a, 0xcf, 0x80, 0x11, 0x33, 0x5d, 0x19, 0x06, 0x2c, + 0x0d, 0xe2, 0x27, 0x9c, 0x78, 0xa6, 0x80, 0xba, 0x43, 0xdd, 0x6d, 0xcc, 0xba, 0xa3, 0x00, 0x7d, + 0x48, 0xfa, 0xc6, 0x2f, 0x40, 0x3f, 0xcc, 0x40, 0x10, 0xfc, 0x54, 0x49, 0x9f, 0x1b, 0x8d, 0xc3, + 0x08, 0xd7, 0x48, 0x8c, 0x23, 0xde, 0x82, 0x37, 0x93, 0x91, 0xfe, 0x74, 0xcd, 0xbb, 0x0a, 0xe3, + 0xe9, 0x4f, 0x02, 0x8b, 0xd5, 0x0e, 0xce, 0x75, 0x72, 0xbd, 0x74, 0x28, 0x29, 0x6a, 0x5b, 0x9b, + 0xa9, 0x9d, 0x7b, 0x4f, 0x9b, 0xd8, 0x1c, 0x43, 0xbd, 0x85, 0xf1, 0x2b, 0x58, 0x3e, 0x82, 0x97, + 0xe0, 0xff, 0x98, 0x5f, 0x42, 0x32, 0xac, 0x0a, 0xef, 0x76, 0x1b, 0x28, 0xc2, 0xf4, 0x56, 0xdb, + 0x6e, 0xf0, 0xa2, 0x74, 0x2a, 0x1f, 0x34, 0x60, 0x11, 0x0c, 0x9b, 0x38, 0x0d, 0xb5, 0xd9, 0x5d, + 0x1a, 0xd7, 0x60, 0xe5, 0x38, 0x93, 0x82, 0x5e, 0x8b, 0x4f, 0x81, 0xbd, 0x02, 0xc1, 0xca, 0xd9, + 0xcf, 0x3f, 0x4b, 0x18, 0x8b, 0xbc, 0x46, 0xe6, 0xcd, 0x0a, 0x4e, 0x2e, 0x2f, 0x4a, 0x5b, 0xc8, + 0xf7, 0xea, 0xac, 0x15, 0x6c, 0x27, 0x18, 0x2f, 0x24, 0x67, 0x1d, 0xa8, 0xa4, 0x0e, 0x49, 0x0c, + 0x09, 0x2a, 0xb7, 0x79, 0x78, 0x4c, 0x4c, 0x5b, 0x01, 0x16, 0xd3, 0xc9, 0x69, 0x58, 0xa4, 0x1e, + 0xe7, 0x35, 0x75, 0xcd, 0xac, 0x77, 0x26, 0x60, 0x78, 0x87, 0xba, 0xea, 0x03, 0x18, 0xcb, 0x4e, + 0xe3, 0x87, 0x13, 0x32, 0xff, 0xa3, 0x41, 0xff, 0xcd, 0x31, 0x00, 0x31, 0x29, 0xff, 0x0b, 0x26, + 0xfb, 0x26, 0x7d, 0x43, 0x7a, 0x34, 0x87, 0xd1, 0xaf, 0x1d, 0x8f, 0x11, 0x16, 0x1e, 0xc0, 0x58, + 0x76, 0x1c, 0x95, 0x52, 0xcf, 0x00, 0xe4, 0xd4, 0x25, 0x33, 0xa2, 0xba, 0x07, 0xd3, 0x87, 0xe6, + 0xc3, 0x5f, 0xca, 0x0f, 0xe7, 0x51, 0xfa, 0xf5, 0x93, 0xa0, 0x84, 0x9d, 0x36, 0xcc, 0x0f, 0xe8, + 0xd9, 0xd2, 0x30, 0xc8, 0xb1, 0xfa, 0xfa, 0xc9, 0xb1, 0xc2, 0x72, 0x08, 0xb3, 0xb2, 0x0e, 0x3c, + 0x20, 0x42, 0x87, 0x80, 0x7a, 0xe5, 0x84, 0x40, 0x61, 0xf0, 0x9f, 0x30, 0x91, 0xef, 0xac, 0x57, + 0x65, 0x1a, 0x72, 0x10, 0xfd, 0xb7, 0xc7, 0x42, 0x84, 0xfa, 0x16, 0x5c, 0x92, 0x37, 0x45, 0xa9, + 0x0e, 0x29, 0x54, 0x5f, 0x3b, 0x31, 0x54, 0x98, 0xb5, 0x61, 0xaa, 0xbf, 0x8d, 0x2d, 0xcb, 0xb4, + 0xf4, 0x81, 0xf4, 0xdf, 0x9d, 0x00, 0x24, 0x8c, 0xfc, 0x07, 0xb4, 0x81, 0xad, 0x68, 0x40, 0xbe, + 0xc9, 0xd1, 0xfa, 0x8d, 0x77, 0x41, 0x0b, 0xfb, 0xff, 0x57, 0xe0, 0xca, 0xd1, 0xcd, 0x44, 0x1a, + 0xb9, 0x23, 0x8f, 0xe8, 0x7f, 0x7a, 0xe7, 0x23, 0xd9, 0xdc, 0x95, 0x15, 0x6a, 0x69, 0xee, 0x4a, + 0x80, 0xf2, 0xdc, 0x3d, 0xa2, 0x22, 0xab, 0x0f, 0x61, 0x3c, 0xf7, 0xe3, 0x7d, 0x49, 0xfe, 0xe0, + 0x7a, 0x08, 0x7d, 0xe5, 0x38, 0x44, 0xb6, 0x4a, 0xf6, 0x75, 0x42, 0x69, 0x95, 0xcc, 0x63, 0xe4, + 0x55, 0x52, 0xde, 0xda, 0xd4, 0x4f, 0x14, 0x28, 0x1d, 0xf7, 0x15, 0x70, 0x63, 0xf0, 0x6d, 0x0c, + 0x3c, 0xa4, 0xff, 0xf9, 0x14, 0x87, 0xb2, 0x7e, 0xf7, 0xb5, 0x38, 0x63, 0x40, 0x72, 0x66, 0x30, + 0x72, 0xbf, 0xe5, 0x0d, 0xae, 0x7a, 0xe7, 0xe5, 0x9b, 0xa2, 0xf2, 0xea, 0x4d, 0x51, 0xf9, 0xe1, + 0x4d, 0x51, 0xf9, 0xe8, 0x6d, 0x71, 0xe8, 0xd5, 0xdb, 0xe2, 0xd0, 0xb7, 0x6f, 0x8b, 0x43, 0x0f, + 0xd7, 0x33, 0x93, 0xc3, 0x2e, 0xd7, 0xb7, 0x7a, 0x07, 0xd5, 0x69, 0x25, 0xfd, 0x46, 0xbb, 0xbf, + 0xf6, 0x87, 0x4a, 0x3b, 0xf3, 0xdd, 0x97, 0x4d, 0x12, 0xf5, 0x51, 0xfe, 0x55, 0x75, 0xe3, 0xa7, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xea, 0x73, 0x2e, 0x17, 0x16, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2446,6 +2459,16 @@ func (m *MsgLiquidStakeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + { + size, err := m.StToken.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa return len(dAtA) - i, nil } @@ -3544,6 +3567,8 @@ func (m *MsgLiquidStakeResponse) Size() (n int) { } var l int _ = l + l = m.StToken.Size() + n += 1 + l + sovTx(uint64(l)) return n } @@ -4405,6 +4430,39 @@ func (m *MsgLiquidStakeResponse) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: MsgLiquidStakeResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StToken.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:])

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 T@O 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ⅇ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