From 31148077517aa05719e9985abccb1e911531996a Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 6 Jul 2023 08:47:09 +0200 Subject: [PATCH 01/29] remove unwanted changes --- Dockerfile | 4 +- tests/e2e/actions.go | 15 +- tests/e2e/actions_consumer_misbehaviour.go | 92 ++++++++ tests/e2e/config.go | 48 +++++ tests/e2e/main.go | 17 +- tests/e2e/state.go | 1 + tests/e2e/step_delegation.go | 43 +--- tests/e2e/steps.go | 7 + tests/e2e/steps_consumer_misbehaviour.go | 215 +++++++++++++++++++ tests/e2e/testnet-scripts/fork-consumer.sh | 120 +++++++++++ tests/e2e/testnet-scripts/hermes-config.toml | 18 +- tests/e2e/testnet-scripts/start-chain.sh | 9 +- x/ccv/provider/keeper/misbehaviour.go | 5 +- 13 files changed, 536 insertions(+), 58 deletions(-) create mode 100644 tests/e2e/actions_consumer_misbehaviour.go create mode 100644 tests/e2e/steps_consumer_misbehaviour.go create mode 100644 tests/e2e/testnet-scripts/fork-consumer.sh diff --git a/Dockerfile b/Dockerfile index 4d81392316..ba351f2e78 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,7 @@ RUN go mod tidy RUN make install # Get Hermes build -FROM ghcr.io/informalsystems/hermes:1.4.1 AS hermes-builder +FROM otacrew/hermes-ics:latest AS hermes-builder # Get CometMock FROM informalofftermatt/cometmock:latest as cometmock-builder @@ -36,7 +36,7 @@ FROM informalofftermatt/cometmock:latest as cometmock-builder # Get GoRelayer FROM informalofftermatt/gorelayer:nogas AS gorelayer-builder -FROM --platform=linux/amd64 fedora:36 +FROM --platform=linux/arm64 fedora:36 RUN dnf update -y RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq USER root diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index 06bcb7f5f7..803feaa174 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -63,7 +63,7 @@ type StartChainAction struct { validators []StartChainValidator // Genesis changes specific to this action, appended to genesis changes defined in chain config genesisChanges string - skipGentx bool + consumerCfg bool } type StartChainValidator struct { @@ -133,7 +133,7 @@ func (tr TestRun) startChain( cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "/bin/bash", "/testnet-scripts/start-chain.sh", chainConfig.binaryName, string(vals), string(chainConfig.chainId), chainConfig.ipPrefix, genesisChanges, - fmt.Sprint(action.skipGentx), + fmt.Sprint(action.consumerCfg), // override config/config.toml for each node on chain // usually timeout_commit and peer_gossip_sleep_duration are changed to vary the test run duration // lower timeout_commit means the blocks are produced faster making the test run shorter @@ -170,6 +170,7 @@ func (tr TestRun) startChain( tr.addChainToRelayer(addChainToRelayerAction{ chain: action.chain, validator: action.validators[0].id, + consumer: action.consumerCfg, }, verbose) } @@ -521,7 +522,7 @@ func (tr TestRun) voteGovProposal( } wg.Wait() - time.Sleep(time.Duration(tr.chainConfigs[action.chain].votingWaitTime) * time.Second) + time.Sleep((time.Duration(tr.chainConfigs[action.chain].votingWaitTime) + 5) * time.Second) } type startConsumerChainAction struct { @@ -564,7 +565,7 @@ func (tr TestRun) startConsumerChain( chain: action.consumerChain, validators: action.validators, genesisChanges: consumerGenesis, - skipGentx: true, + consumerCfg: true, }, verbose) } @@ -698,6 +699,7 @@ func (tr TestRun) startChangeover( type addChainToRelayerAction struct { chain chainID validator validatorID + consumer bool } const hermesChainConfigTemplate = ` @@ -715,6 +717,7 @@ rpc_timeout = "10s" store_prefix = "ibc" trusting_period = "14days" websocket_addr = "%s" +ccv_consumer_chain = %v [chains.gas_price] denom = "stake" @@ -813,7 +816,7 @@ func (tr TestRun) addChainToHermes( keyName, rpcAddr, wsAddr, - // action.consumer, + action.consumer, ) bashCommand := fmt.Sprintf(`echo '%s' >> %s`, chainConfig, "/root/.hermes/config.toml") @@ -1664,7 +1667,7 @@ func (tr TestRun) invokeDoublesignSlash( string(chainConfig.chainId), chainConfig.ipPrefix).CombinedOutput() if err != nil { log.Fatal(err, "\n", string(bz)) - } + tr.waitBlocks("provi", 10, 2*time.Minute) } diff --git a/tests/e2e/actions_consumer_misbehaviour.go b/tests/e2e/actions_consumer_misbehaviour.go new file mode 100644 index 0000000000..1bf8b0a2d5 --- /dev/null +++ b/tests/e2e/actions_consumer_misbehaviour.go @@ -0,0 +1,92 @@ +package main + +import ( + "bufio" + "fmt" + "log" + "os/exec" + "time" +) + +type forkConsumerChainAction struct { + consumerChain chainID + providerChain chainID + validator validatorID +} + +func (tr TestRun) forkConsumerChain(action forkConsumerChainAction, verbose bool) { + valCfg := tr.validatorConfigs[action.validator] + + fmt.Println(valCfg.mnemonic) + + //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. + configureNodeCmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "/bin/bash", + "/testnet-scripts/fork-consumer.sh", tr.chainConfigs[action.consumerChain].binaryName, + string(action.validator), string(action.consumerChain), + tr.chainConfigs[action.consumerChain].ipPrefix, + tr.chainConfigs[action.providerChain].ipPrefix, + valCfg.mnemonic, + ) + + if verbose { + fmt.Println("forkConsumerChain - reconfigure node cmd:", configureNodeCmd.String()) + } + + cmdReader, err := configureNodeCmd.StdoutPipe() + if err != nil { + log.Fatal(err) + } + configureNodeCmd.Stderr = configureNodeCmd.Stdout + + if err := configureNodeCmd.Start(); err != nil { + log.Fatal(err) + } + + scanner := bufio.NewScanner(cmdReader) + + for scanner.Scan() { + out := scanner.Text() + if verbose { + fmt.Println("fork consumer validator : " + out) + } + if out == done { + break + } + } + if err := scanner.Err(); err != nil { + log.Fatal(err) + } + + time.Sleep(5 * time.Second) +} + +type updateLightClientAction struct { + hostChain chainID + hermesConfig string + clientID string +} + +func (tr TestRun) updateLightClient( + action updateLightClientAction, + verbose bool, +) { + // hermes clear packets ibc0 transfer channel-13 + //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. + cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "hermes", + "--config", action.hermesConfig, + "update", + "client", + "--client", action.clientID, + "--host-chain", string(action.hostChain), + ) + if verbose { + log.Println("updateLightClientAction cmd:", cmd.String()) + } + + bz, err := cmd.CombinedOutput() + if err != nil { + log.Fatal(err, "\n", string(bz)) + } + + tr.waitBlocks(action.hostChain, 1, 30*time.Second) +} diff --git a/tests/e2e/config.go b/tests/e2e/config.go index 3038f69f4e..7c03d9d2a5 100644 --- a/tests/e2e/config.go +++ b/tests/e2e/config.go @@ -376,6 +376,54 @@ func ChangeoverTestRun() TestRun { } } +func ConsumerMisbehaviourTestRun() TestRun { + return TestRun{ + name: "misbehaviour", + containerConfig: ContainerConfig{ + containerName: "interchain-security-container", + instanceName: "interchain-security-instance", + ccvVersion: "1", + now: time.Now(), + }, + validatorConfigs: map[validatorID]ValidatorConfig{ + validatorID("alice"): getDefaultValidators()["alice"], + validatorID("bob"): getDefaultValidators()["bob"], + }, + chainConfigs: map[chainID]ChainConfig{ + chainID("provi"): { + chainId: chainID("provi"), + binaryName: "interchain-security-pd", + ipPrefix: "7.7.7", + votingWaitTime: 20, + genesisChanges: ".app_state.gov.voting_params.voting_period = \"20s\" | " + + // Custom slashing parameters for testing validator downtime functionality + // See https://docs.cosmos.network/main/modules/slashing/04_begin_block.html#uptime-tracking + ".app_state.slashing.params.signed_blocks_window = \"10\" | " + + ".app_state.slashing.params.min_signed_per_window = \"0.500000000000000000\" | " + + ".app_state.slashing.params.downtime_jail_duration = \"2s\" | " + + ".app_state.slashing.params.slash_fraction_downtime = \"0.010000000000000000\" | " + + ".app_state.provider.params.slash_meter_replenish_fraction = \"1.0\" | " + // This disables slash packet throttling + ".app_state.provider.params.slash_meter_replenish_period = \"3s\"", + }, + chainID("consu"): { + chainId: chainID("consu"), + binaryName: "interchain-security-cd", + ipPrefix: "7.7.8", + votingWaitTime: 20, + genesisChanges: ".app_state.gov.voting_params.voting_period = \"20s\" | " + + ".app_state.slashing.params.signed_blocks_window = \"15\" | " + + ".app_state.slashing.params.min_signed_per_window = \"0.500000000000000000\" | " + + ".app_state.slashing.params.downtime_jail_duration = \"2s\" | " + + ".app_state.slashing.params.slash_fraction_downtime = \"0.010000000000000000\"", + }, + }, + tendermintConfigOverride: `s/timeout_commit = "5s"/timeout_commit = "1s"/;` + + `s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;` + + // Required to start consumer chain by running a single big validator + `s/fast_sync = true/fast_sync = false/;`, + } +} + func (s *TestRun) SetDockerConfig(localSdkPath string, useGaia bool, gaiaTag string) { if localSdkPath != "" { fmt.Println("USING LOCAL SDK", localSdkPath) diff --git a/tests/e2e/main.go b/tests/e2e/main.go index 737a318de2..631d7802d7 100644 --- a/tests/e2e/main.go +++ b/tests/e2e/main.go @@ -57,11 +57,12 @@ func main() { } testRuns := []testRunWithSteps{ - {ChangeoverTestRun(), changeoverSteps}, - {DefaultTestRun(), happyPathSteps}, - {DemocracyTestRun(true), democracySteps}, - {DemocracyTestRun(false), rewardDenomConsumerSteps}, - {SlashThrottleTestRun(), slashThrottleSteps}, + // {ChangeoverTestRun(), changeoverSteps}, + // {DefaultTestRun(), happyPathSteps}, + // {DemocracyTestRun(true), democracySteps}, + // {DemocracyTestRun(false), rewardDenomConsumerSteps}, + // {SlashThrottleTestRun(), slashThrottleSteps}, + {ConsumerMisbehaviourTestRun(), consumerMisbehaviourSteps}, } if includeMultiConsumer != nil && *includeMultiConsumer { testRuns = append(testRuns, testRunWithSteps{MultiConsumerTestRun(), multipleConsumers}) @@ -101,7 +102,7 @@ func (tr *TestRun) Run(steps []Step, localSdkPath string, useGaia bool, gaiaTag tr.validateStringLiterals() tr.startDocker() tr.executeSteps(steps) - tr.teardownDocker() + // tr.teardownDocker() } type testRunWithSteps struct { @@ -173,6 +174,10 @@ func (tr *TestRun) runStep(step Step, verbose bool) { tr.startRelayer(action, verbose) case registerConsumerRewardDenomAction: tr.registerConsumerRewardDenom(action, verbose) + case forkConsumerChainAction: + tr.forkConsumerChain(action, verbose) + case updateLightClientAction: + tr.updateLightClient(action, verbose) default: log.Fatalf("unknown action in testRun %s: %#v", tr.name, action) } diff --git a/tests/e2e/state.go b/tests/e2e/state.go index 15500dd01f..b458048269 100644 --- a/tests/e2e/state.go +++ b/tests/e2e/state.go @@ -28,6 +28,7 @@ type ChainState struct { ConsumerChainQueueSizes *map[chainID]uint GlobalSlashQueueSize *uint RegisteredConsumerRewardDenoms *[]string + // ClientState ibctmtypes.ClientState. } type Proposal interface { diff --git a/tests/e2e/step_delegation.go b/tests/e2e/step_delegation.go index f33fc136d4..05c963d81a 100644 --- a/tests/e2e/step_delegation.go +++ b/tests/e2e/step_delegation.go @@ -14,32 +14,13 @@ func stepsDelegate(consumerName string) []Step { chainID("provi"): ChainState{ ValPowers: &map[validatorID]uint{ validatorID("alice"): 511, - validatorID("bob"): 500, - validatorID("carol"): 500, + validatorID("bob"): 20, }, }, chainID(consumerName): ChainState{ ValPowers: &map[validatorID]uint{ validatorID("alice"): 500, - validatorID("bob"): 500, - validatorID("carol"): 500, - }, - }, - }, - }, - { - action: SendTokensAction{ - chain: chainID(consumerName), - from: validatorID("alice"), - to: validatorID("bob"), - amount: 1, - }, - state: State{ - chainID(consumerName): ChainState{ - // Tx should not go through, ICS channel is not setup until first VSC packet has been relayed to consumer - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 10000000000, - validatorID("bob"): 10000000000, + validatorID("bob"): 20, }, }, }, @@ -55,25 +36,7 @@ func stepsDelegate(consumerName string) []Step { chainID(consumerName): ChainState{ ValPowers: &map[validatorID]uint{ validatorID("alice"): 511, - validatorID("bob"): 500, - validatorID("carol"): 500, - }, - }, - }, - }, - { - action: SendTokensAction{ - chain: chainID(consumerName), - from: validatorID("alice"), - to: validatorID("bob"), - amount: 1, - }, - state: State{ - chainID(consumerName): ChainState{ - // Now tx should execute - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 9999999999, - validatorID("bob"): 10000000001, + validatorID("bob"): 20, }, }, }, diff --git a/tests/e2e/steps.go b/tests/e2e/steps.go index 7613b05558..78a56654e6 100644 --- a/tests/e2e/steps.go +++ b/tests/e2e/steps.go @@ -87,3 +87,10 @@ var changeoverSteps = concatSteps( stepsPostChangeoverDelegate("sover"), ) + +var consumerMisbehaviourSteps = concatSteps( + // start provider and consumer chain + stepsStartChainsWithSoftOptOut("consu"), + // make consumer validator to misbehave and get jail + stepsCauseConsumerMisbehaviour("consu"), +) diff --git a/tests/e2e/steps_consumer_misbehaviour.go b/tests/e2e/steps_consumer_misbehaviour.go new file mode 100644 index 0000000000..25beda169a --- /dev/null +++ b/tests/e2e/steps_consumer_misbehaviour.go @@ -0,0 +1,215 @@ +package main + +import clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" + +// starts a provider chain and a consumer chain with two validators, +// where the voting power distributed in order that the smallest validator +// can soft opt-out of validating the consumer chain. +func stepsStartChainsWithSoftOptOut(consumerName string) []Step { + s := []Step{ + { + // Create a provider chain with two validators, where one validator holds 96% of the voting power + // and the other validator holds 4% of the voting power. + action: StartChainAction{ + chain: chainID("provi"), + validators: []StartChainValidator{ + {id: validatorID("alice"), stake: 500000000, allocation: 10000000000}, + {id: validatorID("bob"), stake: 20000000, allocation: 10000000000}, + }, + }, + state: State{ + chainID("provi"): ChainState{ + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 9500000000, + validatorID("bob"): 9980000000, + }, + }, + }, + }, + { + action: submitConsumerAdditionProposalAction{ + chain: chainID("provi"), + from: validatorID("alice"), + deposit: 10000001, + consumerChain: chainID(consumerName), + spawnTime: 0, + initialHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1}, + }, + state: State{ + chainID("provi"): ChainState{ + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 9489999999, + validatorID("bob"): 9980000000, + }, + Proposals: &map[uint]Proposal{ + 1: ConsumerAdditionProposal{ + Deposit: 10000001, + Chain: chainID(consumerName), + SpawnTime: 0, + InitialHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1}, + Status: "PROPOSAL_STATUS_VOTING_PERIOD", + }, + }, + }, + }, + }, + { + action: voteGovProposalAction{ + chain: chainID("provi"), + from: []validatorID{validatorID("alice"), validatorID("bob")}, + vote: []string{"yes", "yes"}, + propNumber: 1, + }, + state: State{ + chainID("provi"): ChainState{ + Proposals: &map[uint]Proposal{ + 1: ConsumerAdditionProposal{ + Deposit: 10000001, + Chain: chainID(consumerName), + SpawnTime: 0, + InitialHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1}, + Status: "PROPOSAL_STATUS_PASSED", + }, + }, + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 9500000000, + validatorID("bob"): 9980000000, + }, + }, + }, + }, + { + // start a consumer chain using a single big validator knowing that it holds more than 2/3 of the voting power + // and that the other validators hold less than 5% so they won't get jailed thanks to the sof opt-out mechanism. + action: startConsumerChainAction{ + consumerChain: chainID(consumerName), + providerChain: chainID("provi"), + validators: []StartChainValidator{ + {id: validatorID("alice"), stake: 500000000, allocation: 10000000000}, + }, + // For consumers that're launching with the provider being on an earlier version + // of ICS before the soft opt-out threshold was introduced, we need to set the + // soft opt-out threshold to 0.05 in the consumer genesis to ensure that the + // consumer binary doesn't panic. Sdk requires that all params are set to valid + // values from the genesis file. + genesisChanges: ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"", + }, + state: State{ + chainID("provi"): ChainState{ + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 9500000000, + validatorID("bob"): 9980000000, + }, + }, + chainID(consumerName): ChainState{ + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 10000000000, + }, + }, + }, + }, + { + action: addIbcConnectionAction{ + chainA: chainID(consumerName), + chainB: chainID("provi"), + clientA: 0, + clientB: 0, + }, + state: State{}, + }, + { + action: addIbcChannelAction{ + chainA: chainID(consumerName), + chainB: chainID("provi"), + connectionA: 0, + portA: "consumer", // TODO: check port mapping + portB: "provider", + order: "ordered", + }, + state: State{}, + }, + // delegate some token and relay the resulting VSC packets + // in oder to initiates the CCV channel + { + action: delegateTokensAction{ + chain: chainID("provi"), + from: validatorID("alice"), + to: validatorID("alice"), + amount: 11000000, + }, + state: State{ + chainID("provi"): ChainState{ + ValPowers: &map[validatorID]uint{ + validatorID("alice"): 511, + validatorID("bob"): 20, + }, + }, + chainID(consumerName): ChainState{ + ValPowers: &map[validatorID]uint{ + validatorID("alice"): 500, + validatorID("bob"): 20, + }, + }, + }, + }, + { + action: relayPacketsAction{ + chainA: chainID("provi"), + chainB: chainID(consumerName), + port: "provider", + channel: 0, + }, + state: State{ + chainID(consumerName): ChainState{ + ValPowers: &map[validatorID]uint{ + validatorID("alice"): 511, + validatorID("bob"): 20, + }, + }, + }, + }, + } + + return s +} + +// stepsCauseConsumerMisbehaviour causes a consumer chain to misbehave by creating a fork, +// and relays the light client attack evidence to the provider +func stepsCauseConsumerMisbehaviour(consumerName string) []Step { + return []Step{ + { + action: forkConsumerChainAction{ + consumerChain: chainID(consumerName), + providerChain: chainID("provi"), + validator: validatorID("alice"), + }, + state: State{}, + }, + { + action: startRelayerAction{}, + state: State{}, + }, + { + action: updateLightClientAction{ + hostChain: chainID("provi"), + hermesConfig: "/root/.hermes/config_fork.toml", + clientID: "07-tendermint-0", + }, + state: State{ + chainID("provi"): ChainState{ + ValPowers: &map[validatorID]uint{ + validatorID("alice"): 511, + validatorID("bob"): 20, + }, + // TODO check client is frozen + }, + chainID(consumerName): ChainState{ + ValPowers: &map[validatorID]uint{ + validatorID("alice"): 511, + validatorID("bob"): 20, + }, + }, + }, + }, + } +} diff --git a/tests/e2e/testnet-scripts/fork-consumer.sh b/tests/e2e/testnet-scripts/fork-consumer.sh new file mode 100644 index 0000000000..d1654997d7 --- /dev/null +++ b/tests/e2e/testnet-scripts/fork-consumer.sh @@ -0,0 +1,120 @@ +#!/bin/bash +set -eux + +# The gaiad binary +BIN=$1 + +# the validator ID used to perform the fork +VAL_ID=$2 + +# The consumer chain ID +CHAIN_ID=$3 + +# chain's IP address prefix; $PROV_CHAIN_PREFIX, $CONS_CHAIN_PREFIX... +# see chain config for details +CONS_CHAIN_PREFIX=$4 + +PROV_CHAIN_PREFIX=$5 + +VAL_MNEMONIC=$6 + +FORK_NODE_DIR=/$CHAIN_ID/validatorfork + +# create directory for forking/double-signing node +mkdir $FORK_NODE_DIR +cp -r /$CHAIN_ID/validator$VAL_ID/* $FORK_NODE_DIR + +# remove persistent peers +rm -f $FORK_NODE_DIR/addrbook.json + +# add fork to hermes relayer +tee ~/.hermes/config_fork.toml< mnemonic.txt + +# Connecting new peers to Hermes relayer requires somehow to add the account keys again +hermes keys add --mnemonic-file mnemonic.txt --chain consu --overwrite + +sleep 1 + +hermes keys add --mnemonic-file mnemonic.txt --chain provi --overwrite + +sleep 1 + + +# Start validator forking the consumer chain by +# reuse the consumer sybil IP allocation +ip netns exec $CHAIN_ID-sybil $BIN \ + --home $FORK_NODE_DIR \ + --address tcp://$CONS_CHAIN_PREFIX.252:26655 \ + --rpc.laddr tcp://$CONS_CHAIN_PREFIX.252:26658 \ + --grpc.address $CONS_CHAIN_PREFIX.252:9091 \ + --log_level info \ + --p2p.laddr tcp://$CONS_CHAIN_PREFIX.252:26656 \ + --grpc-web.enable=false start &> /consu/validatorfork/logs & + diff --git a/tests/e2e/testnet-scripts/hermes-config.toml b/tests/e2e/testnet-scripts/hermes-config.toml index eb8154d95b..89c1f0a0bb 100644 --- a/tests/e2e/testnet-scripts/hermes-config.toml +++ b/tests/e2e/testnet-scripts/hermes-config.toml @@ -1,2 +1,18 @@ [global] - log_level = "info" \ No newline at end of file +log_level = "debug" + +[mode] + +[mode.clients] +enabled = true +refresh = true +misbehaviour = true + +[mode.connections] +enabled = false + +[mode.channels] +enabled = false + +[mode.packets] +enabled = true \ No newline at end of file diff --git a/tests/e2e/testnet-scripts/start-chain.sh b/tests/e2e/testnet-scripts/start-chain.sh index 9d6e73fdbb..8bc0dbadca 100644 --- a/tests/e2e/testnet-scripts/start-chain.sh +++ b/tests/e2e/testnet-scripts/start-chain.sh @@ -198,6 +198,7 @@ do #'s/foo/bar/;s/abc/def/' sed -i "$TENDERMINT_CONFIG_TRANSFORM" $CHAIN_ID/validator$VAL_ID/config/config.toml fi + done @@ -257,8 +258,12 @@ do fi done - # Remove leading comma and concat to flag - PERSISTENT_PEERS="--p2p.persistent_peers ${PERSISTENT_PEERS:1}" + + if [ "$PERSISTENT_PEERS" != "" ]; then + # Remove leading comma and concat to flag + PERSISTENT_PEERS="--p2p.persistent_peers ${PERSISTENT_PEERS:1}" + fi + ARGS="$GAIA_HOME $LISTEN_ADDRESS $RPC_ADDRESS $GRPC_ADDRESS $LOG_LEVEL $P2P_ADDRESS $ENABLE_WEBGRPC $PERSISTENT_PEERS" if [[ "$USE_COMETMOCK" == "true" ]]; then diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index f616e8fea8..e285adf652 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -19,9 +19,10 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmty logger := ctx.Logger() if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, &misbehaviour); err != nil { + logger.Info("Misbehaviour rejected", err.Error()) + return err } - // Since the misbehaviour packet was received within the trusting period // w.r.t to the last trusted consensus it entails that the infraction age // isn't too old. see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go @@ -32,6 +33,8 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmty return err } + logger.Info("ConstructLightClientEvidence", fmt.Sprintf("%#+v\n", evidence)) + // jail and tombstone the byzantine validators for _, v := range evidence.ByzantineValidators { // convert consumer consensus address From fffeb07e1dcec4c580905e4473801e2c1957ca85 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 6 Jul 2023 15:29:05 +0200 Subject: [PATCH 02/29] fix hermes config with assigned key --- tests/e2e/actions.go | 19 +++++-- tests/e2e/actions_consumer_misbehaviour.go | 14 ++--- tests/e2e/config.go | 40 ++++++++++++++- tests/e2e/state.go | 40 ++++++++++++++- tests/e2e/steps_consumer_misbehaviour.go | 59 +++++++++++++++++++--- tests/e2e/testnet-scripts/fork-consumer.sh | 4 +- 6 files changed, 155 insertions(+), 21 deletions(-) diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index 803feaa174..2e1863f070 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -281,6 +281,8 @@ func (tr TestRun) submitConsumerAdditionProposal( if err != nil { log.Fatal(err, "\n", string(bz)) } + + tr.waitBlocks(action.chain, 1, 5*time.Second) } type submitConsumerRemovalProposalAction struct { @@ -522,7 +524,7 @@ func (tr TestRun) voteGovProposal( } wg.Wait() - time.Sleep((time.Duration(tr.chainConfigs[action.chain].votingWaitTime) + 5) * time.Second) + time.Sleep((time.Duration(tr.chainConfigs[action.chain].votingWaitTime)) * time.Second) } type startConsumerChainAction struct { @@ -830,7 +832,16 @@ func (tr TestRun) addChainToHermes( } // Save mnemonic to file within container - saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, tr.validatorConfigs[action.validator].mnemonic, "/root/.hermes/mnemonic.txt") + var mnemonic string + if tr.validatorConfigs[action.validator].useConsumerKey && action.consumer { + mnemonic = tr.validatorConfigs[action.validator].consumerMnemonic + } else { + mnemonic = tr.validatorConfigs[action.validator].mnemonic + } + + saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, mnemonic, "/root/.hermes/mnemonic.txt") + fmt.Println("Add to hermes", action.validator) + fmt.Println(mnemonic) //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. bz, err = exec.Command("docker", "exec", tr.containerConfig.instanceName, "bash", "-c", saveMnemonicCommand, @@ -1667,7 +1678,7 @@ func (tr TestRun) invokeDoublesignSlash( string(chainConfig.chainId), chainConfig.ipPrefix).CombinedOutput() if err != nil { log.Fatal(err, "\n", string(bz)) - + } tr.waitBlocks("provi", 10, 2*time.Minute) } @@ -1770,6 +1781,8 @@ func (tr TestRun) assignConsumerPubKey(action assignConsumerPubKeyAction, verbos valCfg.useConsumerKey = true tr.validatorConfigs[action.validator] = valCfg } + + time.Sleep(1 * time.Second) } // slashThrottleDequeue polls slash queue sizes until nextQueueSize is achieved diff --git a/tests/e2e/actions_consumer_misbehaviour.go b/tests/e2e/actions_consumer_misbehaviour.go index 1bf8b0a2d5..2b01c2818e 100644 --- a/tests/e2e/actions_consumer_misbehaviour.go +++ b/tests/e2e/actions_consumer_misbehaviour.go @@ -12,13 +12,12 @@ type forkConsumerChainAction struct { consumerChain chainID providerChain chainID validator validatorID + relayerConfig string } func (tr TestRun) forkConsumerChain(action forkConsumerChainAction, verbose bool) { valCfg := tr.validatorConfigs[action.validator] - fmt.Println(valCfg.mnemonic) - //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. configureNodeCmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "/bin/bash", "/testnet-scripts/fork-consumer.sh", tr.chainConfigs[action.consumerChain].binaryName, @@ -26,6 +25,7 @@ func (tr TestRun) forkConsumerChain(action forkConsumerChainAction, verbose bool tr.chainConfigs[action.consumerChain].ipPrefix, tr.chainConfigs[action.providerChain].ipPrefix, valCfg.mnemonic, + action.relayerConfig, ) if verbose { @@ -61,9 +61,9 @@ func (tr TestRun) forkConsumerChain(action forkConsumerChainAction, verbose bool } type updateLightClientAction struct { - hostChain chainID - hermesConfig string - clientID string + hostChain chainID + relayerConfig string + clientID string } func (tr TestRun) updateLightClient( @@ -73,7 +73,7 @@ func (tr TestRun) updateLightClient( // hermes clear packets ibc0 transfer channel-13 //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "hermes", - "--config", action.hermesConfig, + "--config", action.relayerConfig, "update", "client", "--client", action.clientID, @@ -88,5 +88,5 @@ func (tr TestRun) updateLightClient( log.Fatal(err, "\n", string(bz)) } - tr.waitBlocks(action.hostChain, 1, 30*time.Second) + tr.waitBlocks(action.hostChain, 5, 30*time.Second) } diff --git a/tests/e2e/config.go b/tests/e2e/config.go index 7c03d9d2a5..efed270ce7 100644 --- a/tests/e2e/config.go +++ b/tests/e2e/config.go @@ -386,8 +386,44 @@ func ConsumerMisbehaviourTestRun() TestRun { now: time.Now(), }, validatorConfigs: map[validatorID]ValidatorConfig{ - validatorID("alice"): getDefaultValidators()["alice"], - validatorID("bob"): getDefaultValidators()["bob"], + validatorID("alice"): { + mnemonic: "pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear", + delAddress: "cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm", + valoperAddress: "cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng", + valconsAddress: "cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq", + privValidatorKey: `{"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}}`, + nodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}`, + ipSuffix: "4", + + // consumer chain assigned key + consumerMnemonic: "exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty", + consumerDelAddress: "cosmos1eeeggku6dzk3mv7wph3zq035rhtd890sjswszd", + consumerValoperAddress: "cosmosvaloper1eeeggku6dzk3mv7wph3zq035rhtd890shy69w7", + consumerValconsAddress: "cosmosvalcons1muys5jyqk4xd27e208nym85kn0t4zjcfeu63fe", + consumerValPubKey: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="}`, + consumerPrivValidatorKey: `{"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}}`, + consumerNodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"F966RL9pi20aXRzEBe4D0xRQJtZt696Xxz44XUON52cFc83FMn1WXJbP6arvA2JPyn2LA3DLKCFHSgALrCGXGA=="}}`, + useConsumerKey: true, + }, + validatorID("bob"): { + mnemonic: "glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel", + delAddress: "cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la", + valoperAddress: "cosmosvaloper1dkas8mu4kyhl5jrh4nzvm65qz588hy9qakmjnw", + valconsAddress: "cosmosvalcons1nx7n5uh0ztxsynn4sje6eyq2ud6rc6klc96w39", + privValidatorKey: `{"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}}`, + nodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}}`, + ipSuffix: "5", + + // consumer chain assigned key + consumerMnemonic: "grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere", + consumerDelAddress: "cosmos1q90l6j6lzzgt460ehjj56azknlt5yrd4s38n97", + consumerValoperAddress: "cosmosvaloper1q90l6j6lzzgt460ehjj56azknlt5yrd449nxfd", + consumerValconsAddress: "cosmosvalcons1uuec3cjxajv5te08p220usrjhkfhg9wyvqn0tm", + consumerValPubKey: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o="}`, + consumerPrivValidatorKey: `{"address":"E73388E246EC9945E5E70A94FE4072BD937415C4","pub_key":{"type":"tendermint/PubKeyEd25519","value":"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg=="}}`, + consumerNodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uhPCqnL2KE8m/8OFNLQ5bN3CJr6mds+xfBi0E4umT/s2uWiJhet+vbYx88DHSdof3gGFNTIzAIxSppscBKX96w=="}}`, + useConsumerKey: false, + }, }, chainConfigs: map[chainID]ChainConfig{ chainID("provi"): { diff --git a/tests/e2e/state.go b/tests/e2e/state.go index b458048269..8d9ba9a81e 100644 --- a/tests/e2e/state.go +++ b/tests/e2e/state.go @@ -28,7 +28,7 @@ type ChainState struct { ConsumerChainQueueSizes *map[chainID]uint GlobalSlashQueueSize *uint RegisteredConsumerRewardDenoms *[]string - // ClientState ibctmtypes.ClientState. + ClientsFrozenHeights *map[string]clienttypes.Height } type Proposal interface { @@ -185,6 +185,14 @@ func (tr TestRun) getChainState(chain chainID, modelState ChainState) ChainState chainState.RegisteredConsumerRewardDenoms = ®isteredConsumerRewardDenoms } + if modelState.ClientsFrozenHeights != nil { + chainClientsFrozenHeights := map[string]clienttypes.Height{} + for id := range *modelState.ClientsFrozenHeights { + chainClientsFrozenHeights[id] = tr.getClientFrozenHeight(chain, id) + } + chainState.ClientsFrozenHeights = &chainClientsFrozenHeights + } + return chainState } @@ -738,3 +746,33 @@ func (tr TestRun) getQueryNodeIP(chain chainID) string { } return fmt.Sprintf("%s.253", tr.chainConfigs[chain].ipPrefix) } + +// getClientFrozenHeight returns the frozen height for a client with the given client ID +// by querying the hosting chain with the given chainID +func (tr TestRun) getClientFrozenHeight(chain chainID, clientID string) clienttypes.Height { + //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. + cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, tr.chainConfigs[chainID("provi")].binaryName, + "query", "ibc", "client", "state", clientID, + `--node`, tr.getQueryNode(chainID("provi")), + `-o`, `json`, + ) + + bz, err := cmd.CombinedOutput() + if err != nil { + log.Fatal(err, "\n", string(bz)) + } + + frozenHeight := gjson.Get(string(bz), "client_state.frozen_height") + + revHeight, err := strconv.Atoi(frozenHeight.Get("revision_height").String()) + if err != nil { + log.Fatal(err, "\n", string(bz)) + } + + revNumber, err := strconv.Atoi(frozenHeight.Get("revision_number").String()) + if err != nil { + log.Fatal(err, "\n", string(bz)) + } + + return clienttypes.Height{RevisionHeight: uint64(revHeight), RevisionNumber: uint64(revNumber)} +} diff --git a/tests/e2e/steps_consumer_misbehaviour.go b/tests/e2e/steps_consumer_misbehaviour.go index 25beda169a..13ac2d9361 100644 --- a/tests/e2e/steps_consumer_misbehaviour.go +++ b/tests/e2e/steps_consumer_misbehaviour.go @@ -1,6 +1,8 @@ package main -import clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" +import ( + clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" +) // starts a provider chain and a consumer chain with two validators, // where the voting power distributed in order that the smallest validator @@ -53,6 +55,29 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { }, }, }, + // add a consumer key before the chain starts + // the key will be present in consumer genesis initial_val_set + { + action: assignConsumerPubKeyAction{ + chain: chainID(consumerName), + validator: validatorID("alice"), + consumerPubkey: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="}`, + // consumer chain has not started + // we don't need to reconfigure the node + // since it will start with consumer key + reconfigureNode: false, + }, + state: State{ + chainID(consumerName): ChainState{ + AssignedKeys: &map[validatorID]string{ + validatorID("alice"): "cosmosvalcons1muys5jyqk4xd27e208nym85kn0t4zjcfeu63fe", + }, + ProviderKeys: &map[validatorID]string{ + validatorID("alice"): "cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq", + }, + }, + }, + }, { action: voteGovProposalAction{ chain: chainID("provi"), @@ -176,32 +201,52 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { // stepsCauseConsumerMisbehaviour causes a consumer chain to misbehave by creating a fork, // and relays the light client attack evidence to the provider func stepsCauseConsumerMisbehaviour(consumerName string) []Step { + consumerClientID := "07-tendermint-0" + forkRelayerConfig := "/root/.hermes/config_fork.toml" + return []Step{ { action: forkConsumerChainAction{ consumerChain: chainID(consumerName), providerChain: chainID("provi"), validator: validatorID("alice"), + relayerConfig: forkRelayerConfig, }, state: State{}, }, { action: startRelayerAction{}, - state: State{}, + state: State{ + // The consumer client shouldn't be frozen on the provider yet since + // no client update packet was sent by the fork yet + chainID("provi"): ChainState{ + ClientsFrozenHeights: &map[string]clienttypes.Height{ + "07-tendermint-0": { + RevisionNumber: 0, + RevisionHeight: 0, + }, + }, + }, + }, }, { action: updateLightClientAction{ - hostChain: chainID("provi"), - hermesConfig: "/root/.hermes/config_fork.toml", - clientID: "07-tendermint-0", + hostChain: chainID("provi"), + relayerConfig: forkRelayerConfig, + clientID: consumerClientID, }, state: State{ chainID("provi"): ChainState{ ValPowers: &map[validatorID]uint{ - validatorID("alice"): 511, + validatorID("alice"): 0, validatorID("bob"): 20, }, - // TODO check client is frozen + ClientsFrozenHeights: &map[string]clienttypes.Height{ + "07-tendermint-0": { + RevisionNumber: 0, + RevisionHeight: 1, + }, + }, }, chainID(consumerName): ChainState{ ValPowers: &map[validatorID]uint{ diff --git a/tests/e2e/testnet-scripts/fork-consumer.sh b/tests/e2e/testnet-scripts/fork-consumer.sh index d1654997d7..b05417760b 100644 --- a/tests/e2e/testnet-scripts/fork-consumer.sh +++ b/tests/e2e/testnet-scripts/fork-consumer.sh @@ -18,6 +18,8 @@ PROV_CHAIN_PREFIX=$5 VAL_MNEMONIC=$6 +FORK_HERMES_CONFIG=$7 + FORK_NODE_DIR=/$CHAIN_ID/validatorfork # create directory for forking/double-signing node @@ -28,7 +30,7 @@ cp -r /$CHAIN_ID/validator$VAL_ID/* $FORK_NODE_DIR rm -f $FORK_NODE_DIR/addrbook.json # add fork to hermes relayer -tee ~/.hermes/config_fork.toml< Date: Thu, 6 Jul 2023 15:33:54 +0200 Subject: [PATCH 03/29] revert unwanted changes --- output.log | 238 +++++++++++++++++++++ tests/e2e/main.go | 12 +- tests/e2e/testnet-scripts/fork-consumer.sh | 4 +- 3 files changed, 246 insertions(+), 8 deletions(-) create mode 100644 output.log diff --git a/output.log b/output.log new file mode 100644 index 0000000000..c80a19a575 --- /dev/null +++ b/output.log @@ -0,0 +1,238 @@ +=============== building misbehaviour testRun =============== +startDocker: + CONTAINER_NAME=interchain-security-container +startDocker: + INSTANCE_NAME=interchain-security-instance +startDocker: + LOCAL_SDK_PATH=default +startDocker: + USE_GAIA_PROVIDER=false +startDocker: + USE_GAIA_TAG= +startDocker: + set +e +startDocker: + docker rm -f interchain-security-instance +startDocker: Error: No such container: interchain-security-instance +startDocker: + set -e +startDocker: + '[' -d ./cosmos-sdk ']' +startDocker: + [[ default != \d\e\f\a\u\l\t ]] +startDocker: + printf '\n\nUsing default sdk version\n\n\n' +startDocker: +startDocker: +startDocker: Using default sdk version +startDocker: +startDocker: +startDocker: + [[ false = \t\r\u\e ]] +startDocker: + printf '\n\nUsing ICS provider app as provider\n\n\n' +startDocker: +startDocker: +startDocker: Using ICS provider app as provider +startDocker: +startDocker: +startDocker: + docker build -f Dockerfile -t interchain-security-container . +startDocker: #1 [internal] load build definition from Dockerfile +startDocker: #1 sha256:a0cee17e78737057a68d25b4fd49811c89dc8afcadafdd1978b58d35b3c0da1c +startDocker: #1 transferring dockerfile: 37B done +startDocker: #1 DONE 0.0s +startDocker: +startDocker: #2 [internal] load .dockerignore +startDocker: #2 sha256:4c4a3b3312107dd6ab7a39c973b7650daef786e96bf7e7f90e4f84afc3cd1ffb +startDocker: #2 transferring context: 2B done +startDocker: #2 DONE 0.0s +startDocker: +startDocker: #3 resolve image config for docker.io/docker/dockerfile:1 +startDocker: #3 sha256:5511bf222770ecb09bae16a5e9dc6ddaf6633b05719203c5e2b00644727cd62f +startDocker: #3 ... +startDocker: +startDocker: #4 [auth] docker/dockerfile:pull token for registry-1.docker.io +startDocker: #4 sha256:30fc96cb12100d8493a24d77ed92e49a75e81d80bc2ad263760bc9d91e119c18 +startDocker: #4 DONE 0.0s +startDocker: +startDocker: #3 resolve image config for docker.io/docker/dockerfile:1 +startDocker: #3 sha256:5511bf222770ecb09bae16a5e9dc6ddaf6633b05719203c5e2b00644727cd62f +startDocker: #3 DONE 1.4s +startDocker: +startDocker: #5 docker-image://docker.io/docker/dockerfile:1@sha256:39b85bbfa7536a5feceb7372a0817649ecb2724562a38360f4d6a7782a409b14 +startDocker: #5 sha256:9a158a4603558c8d1260a1837f34e5dcdc934c3e44e35af38132f4449f9ebf12 +startDocker: #5 CACHED +startDocker: +startDocker: #6 [internal] load build definition from Dockerfile +startDocker: #6 sha256:d6915fd1e878024a7f1105667a7027d32b197b81dd06bb0b1aa56f5319f1fff0 +startDocker: #6 DONE 0.0s +startDocker: +startDocker: #7 [internal] load .dockerignore +startDocker: #7 sha256:507fef730b5510b7762bd5267360b4086c98a34ec3afb696bf3d2d7d21f2e335 +startDocker: #7 DONE 0.0s +startDocker: +startDocker: #12 [internal] load metadata for docker.io/library/golang:1.19-alpine +startDocker: #12 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 +startDocker: #12 ... +startDocker: +startDocker: #13 [auth] otacrew/hermes-ics:pull token for registry-1.docker.io +startDocker: #13 sha256:6ed335be6e0b794f59599ba8f783918f21a3bff490550210b7c34e3756e3e195 +startDocker: #13 DONE 0.0s +startDocker: +startDocker: #11 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas +startDocker: #11 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 +startDocker: #11 ... +startDocker: +startDocker: #14 [auth] informalofftermatt/cometmock:pull token for registry-1.docker.io +startDocker: #14 sha256:5fe3f6fa6d571d44b170a802e970087617b30812cb8b6ae792e3f39f2562eaad +startDocker: #14 DONE 0.0s +startDocker: +startDocker: #15 [auth] informalofftermatt/gorelayer:pull token for registry-1.docker.io +startDocker: #15 sha256:d3c3cea6f1547c6f57b1357cc69c68aa48bd5cc5daeb0a706258abed13ebbffd +startDocker: #15 DONE 0.0s +startDocker: +startDocker: #16 [auth] library/golang:pull token for registry-1.docker.io +startDocker: #16 sha256:1c552d38b1c261b51b57ea468bcaf9cc5ef0af53c871cf41a32432c988d71224 +startDocker: #16 DONE 0.0s +startDocker: +startDocker: #17 [auth] library/fedora:pull token for registry-1.docker.io +startDocker: #17 sha256:6e505c3f2bcd08fe61c4a2357be97910227d3968c871825298b6a084b8f4f8da +startDocker: #17 DONE 0.0s +startDocker: +startDocker: #10 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest +startDocker: #10 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b +startDocker: #10 ... +startDocker: +startDocker: #8 [internal] load metadata for docker.io/otacrew/hermes-ics:latest +startDocker: #8 sha256:1619a8f499c95bd5af09b73b1d3a2ab9c6d7d6780852f9a079269b6c182f3235 +startDocker: #8 DONE 1.5s +startDocker: +startDocker: #9 [internal] load metadata for docker.io/library/fedora:36 +startDocker: #9 sha256:73cd5a5ed47fc791d26860a9f6452dd61c51470638f517e9fa5cdca15792d916 +startDocker: #9 DONE 2.0s +startDocker: +startDocker: #11 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas +startDocker: #11 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 +startDocker: #11 DONE 2.2s +startDocker: +startDocker: #10 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest +startDocker: #10 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b +startDocker: #10 DONE 2.3s +startDocker: +startDocker: #12 [internal] load metadata for docker.io/library/golang:1.19-alpine +startDocker: #12 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 +startDocker: #12 DONE 2.3s +startDocker: +startDocker: #23 [cometmock-builder 1/1] FROM docker.io/informalofftermatt/cometmock:latest@sha256:c8f54f54b14fda1ffa737fb6ab02fe3b8423cfc308f99bdace7539f920a14682 +startDocker: #23 sha256:5b578f98ce1950c9b6ae50ca290be9f6ee3a5b7249a23285ac729337998afa36 +startDocker: #23 DONE 0.0s +startDocker: +startDocker: #21 [hermes-builder 1/1] FROM docker.io/otacrew/hermes-ics:latest@sha256:36806114ec58b4dca2173974f09d73cd4b9ff02d81ba882f6f152cba02bae139 +startDocker: #21 sha256:a9171665a53c60610d8881bfbfc46df6ba80ba890eb5fd04bd66c9cb7ae6622e +startDocker: #21 DONE 0.0s +startDocker: +startDocker: #25 [gorelayer-builder 1/1] FROM docker.io/informalofftermatt/gorelayer:nogas@sha256:07c8ccd57ade48a407be6e2f503e5f12bf6f5c61e8deafd402ff8c15b04ab8a1 +startDocker: #25 sha256:8a76aed9c101ebff920e322f3580b0413fc7630dafbf47400ab561109204de5c +startDocker: #25 DONE 0.0s +startDocker: +startDocker: #27 [is-builder 1/10] FROM docker.io/library/golang:1.19-alpine@sha256:470c8d0638c5b7007a6118baee531c30e0516a18e45b35bff1f8ab92cf8f896d +startDocker: #27 sha256:5223bfcab5806439b55371a6102f93203b8b4171a586251c641310088838642c +startDocker: #27 DONE 0.0s +startDocker: +startDocker: #18 [stage-4 1/12] FROM docker.io/library/fedora:36@sha256:64cd00a0e2b92d527c0a0954162a73e85f160e3a53c38325b51e87d6aab4e266 +startDocker: #18 sha256:5031400c012ded166194f592f4fbbc517b0a7051caa9252048f537694d4110e9 +startDocker: #18 DONE 0.0s +startDocker: +startDocker: #29 [internal] load build context +startDocker: #29 sha256:9858b29b84f4e1025f7cc79d42ba1f3504a9ce43ae34349f9e2d53f8c0ce5356 +startDocker: #29 transferring context: 4.10MB 0.7s done +startDocker: #29 DONE 0.7s +startDocker: +startDocker: #28 [is-builder 2/10] RUN apk add --no-cache curl make git libc-dev bash gcc linux-headers +startDocker: #28 sha256:fc221a60c9fdcdff81c09910439fb67a92187557122616a1e063d42019cb7b7a +startDocker: #28 CACHED +startDocker: +startDocker: #30 [is-builder 3/10] COPY go.mod /go.mod +startDocker: #30 sha256:e15d65a5e35ce272d87314eeb9ff6402cf320438dc4853f28107e0eee5cee485 +startDocker: #30 CACHED +startDocker: +startDocker: #31 [is-builder 4/10] COPY go.sum /go.sum +startDocker: #31 sha256:c17d002021834ee7c7b0f764463fc18efdc4330da247e5eaad14400772d3b4f3 +startDocker: #31 CACHED +startDocker: +startDocker: #32 [is-builder 5/10] RUN go mod download +startDocker: #32 sha256:d71b3adff54b3875295530a71bb43ecc276eb17cda3b7c2f410ca8ce6b1f680c +startDocker: #32 CACHED +startDocker: +startDocker: #33 [is-builder 6/10] ADD . /interchain-security +startDocker: #33 sha256:a0e52ca9b60725e98f4f8e3f86cb21bc0dddda7ac1660bebd3e9c8f0f995d849 +startDocker: #33 DONE 5.1s +startDocker: +startDocker: #34 [is-builder 7/10] WORKDIR /interchain-security +startDocker: #34 sha256:56097d24d06233dc29e88cc2a6cca993360742f2111f4dc337b7bcbc4e8632e8 +startDocker: #34 DONE 0.0s +startDocker: +startDocker: #35 [is-builder 8/10] RUN if [ -d "./cosmos-sdk" ]; then go mod edit -replace github.com/cosmos/cosmos-sdk=./cosmos-sdk; fi +startDocker: #35 sha256:187bbf219916465d89aeccab99de791859cc9ee8aaf1b44d603fb805f3d0a60d +startDocker: #35 DONE 0.2s +startDocker: +startDocker: #36 [is-builder 9/10] RUN go mod tidy +startDocker: #36 sha256:a195eb6dbcba834e5ea847fa85ec1789a834a2a40720905c6286f0d2f884d121 +startDocker: #36 1.148 go: downloading github.com/frankban/quicktest v1.14.4 +startDocker: #36 1.148 go: downloading github.com/otiai10/copy v1.6.0 +startDocker: #36 1.215 go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c +startDocker: #36 1.233 go: downloading github.com/google/go-cmp v0.5.9 +startDocker: #36 1.335 go: downloading github.com/pascaldekloe/goe v0.1.0 +startDocker: #36 1.336 go: downloading github.com/btcsuite/btcd/btcutil v1.1.2 +startDocker: #36 1.337 go: downloading github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c +startDocker: #36 1.367 go: downloading github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c +startDocker: #36 1.380 go: downloading github.com/btcsuite/btcd v0.22.1 +startDocker: #36 1.455 go: downloading github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 +startDocker: #36 1.479 go: downloading github.com/fortytw2/leaktest v1.3.0 +startDocker: #36 1.545 go: downloading github.com/regen-network/gocuke v0.6.2 +startDocker: #36 1.560 go: downloading gotest.tools/v3 v3.4.0 +startDocker: #36 1.592 go: downloading gotest.tools v2.2.0+incompatible +startDocker: #36 1.633 go: downloading github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f +startDocker: #36 1.646 go: downloading github.com/adlio/schema v1.3.3 +startDocker: #36 1.652 go: downloading github.com/ory/dockertest v3.3.5+incompatible +startDocker: #36 1.671 go: downloading github.com/stretchr/objx v0.5.0 +startDocker: #36 1.693 go: downloading github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 +startDocker: #36 1.695 go: downloading github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 +startDocker: #36 1.708 go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.0 +startDocker: #36 1.712 go: downloading github.com/VividCortex/gohistogram v1.0.0 +startDocker: #36 1.728 go: downloading github.com/cucumber/common/gherkin/go/v22 v22.0.0 +startDocker: #36 1.728 go: downloading github.com/cockroachdb/apd/v3 v3.1.0 +startDocker: #36 1.731 go: downloading github.com/cucumber/common/messages/go/v17 v17.1.1 +startDocker: #36 1.735 go: downloading pgregory.net/rapid v0.5.3 +startDocker: #36 1.761 go: downloading github.com/gin-gonic/gin v1.8.1 +startDocker: #36 1.784 go: downloading golang.org/x/sync v0.1.0 +startDocker: #36 1.790 go: downloading github.com/nxadm/tail v1.4.8 +startDocker: #36 1.790 go: downloading github.com/cenkalti/backoff v2.2.1+incompatible +startDocker: #36 1.795 go: downloading github.com/Microsoft/go-winio v0.6.0 +startDocker: #36 1.797 go: downloading github.com/docker/go-units v0.5.0 +startDocker: #36 1.804 go: downloading github.com/OneOfOne/xxhash v1.2.2 +startDocker: #36 1.805 go: downloading github.com/spaolacci/murmur3 v1.1.0 +startDocker: #36 1.820 go: downloading github.com/alecthomas/participle/v2 v2.0.0-alpha7 +startDocker: #36 1.821 go: downloading github.com/gofrs/uuid v4.3.0+incompatible +startDocker: #36 1.822 go: downloading github.com/gobwas/httphead v0.1.0 +startDocker: #36 1.840 go: downloading github.com/gobwas/pool v0.2.1 +startDocker: #36 1.840 go: downloading gonum.org/v1/gonum v0.8.2 +startDocker: #36 1.850 go: downloading github.com/gin-contrib/sse v0.1.0 +startDocker: #36 1.852 go: downloading gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 +startDocker: #36 1.855 go: downloading github.com/sirupsen/logrus v1.9.0 +startDocker: #36 1.861 go: downloading github.com/opencontainers/runc v1.1.3 +startDocker: #36 1.864 go: downloading github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 +startDocker: #36 1.877 go: downloading github.com/opencontainers/image-spec v1.1.0-rc2 +startDocker: #36 1.909 go: downloading golang.org/x/tools v0.4.0 +startDocker: #36 1.927 go: downloading github.com/go-errors/errors v1.4.2 +startDocker: #36 1.954 go: downloading github.com/pingcap/errors v0.11.4 +startDocker: #36 2.063 go: downloading github.com/go-playground/validator/v10 v10.11.1 +startDocker: #36 2.067 go: downloading github.com/ugorji/go/codec v1.2.7 +startDocker: #36 2.224 go: downloading github.com/goccy/go-json v0.9.11 +startDocker: #36 2.226 go: downloading github.com/ugorji/go v1.1.7 +startDocker: #36 2.250 go: downloading github.com/json-iterator/go v1.1.12 +startDocker: #36 2.272 go: downloading github.com/docker/go-connections v0.4.0 +startDocker: #36 2.288 go: downloading github.com/containerd/continuity v0.3.0 +startDocker: #36 2.291 go: downloading github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 +startDocker: #36 2.309 go: downloading github.com/opencontainers/go-digest v1.0.0 +startDocker: #36 2.321 go: downloading github.com/go-playground/universal-translator v0.18.0 +startDocker: #36 2.323 go: downloading github.com/leodido/go-urn v1.2.1 +startDocker: #36 2.337 go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd +startDocker: #36 2.338 go: downloading github.com/modern-go/reflect2 v1.0.2 +startDocker: #36 2.376 go: downloading github.com/go-playground/locales v0.14.0 +startDocker: #36 2.421 go: downloading golang.org/x/mod v0.7.0 +startDocker: #36 DONE 3.2s +startDocker: +startDocker: #37 [is-builder 10/10] RUN make install +startDocker: #37 sha256:c8211a74abcd858f0148b5eca1e5aaf2c3530e39a4ef15c0544480913264cb86 +startDocker: #37 0.326 export GOFLAGS='-buildmode=pie' +startDocker: #37 0.327 export CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2" +startDocker: #37 0.327 export CGO_LDFLAGS="-Wl,-z,relro,-z,now -fstack-protector" +startDocker: #37 0.328 go install ./cmd/interchain-security-pd diff --git a/tests/e2e/main.go b/tests/e2e/main.go index 631d7802d7..4c7b6722cd 100644 --- a/tests/e2e/main.go +++ b/tests/e2e/main.go @@ -57,11 +57,11 @@ func main() { } testRuns := []testRunWithSteps{ - // {ChangeoverTestRun(), changeoverSteps}, - // {DefaultTestRun(), happyPathSteps}, - // {DemocracyTestRun(true), democracySteps}, - // {DemocracyTestRun(false), rewardDenomConsumerSteps}, - // {SlashThrottleTestRun(), slashThrottleSteps}, + {ChangeoverTestRun(), changeoverSteps}, + {DefaultTestRun(), happyPathSteps}, + {DemocracyTestRun(true), democracySteps}, + {DemocracyTestRun(false), rewardDenomConsumerSteps}, + {SlashThrottleTestRun(), slashThrottleSteps}, {ConsumerMisbehaviourTestRun(), consumerMisbehaviourSteps}, } if includeMultiConsumer != nil && *includeMultiConsumer { @@ -102,7 +102,7 @@ func (tr *TestRun) Run(steps []Step, localSdkPath string, useGaia bool, gaiaTag tr.validateStringLiterals() tr.startDocker() tr.executeSteps(steps) - // tr.teardownDocker() + tr.teardownDocker() } type testRunWithSteps struct { diff --git a/tests/e2e/testnet-scripts/fork-consumer.sh b/tests/e2e/testnet-scripts/fork-consumer.sh index b05417760b..a08872a303 100644 --- a/tests/e2e/testnet-scripts/fork-consumer.sh +++ b/tests/e2e/testnet-scripts/fork-consumer.sh @@ -100,9 +100,9 @@ EOF echo $VAL_MNEMONIC > mnemonic.txt # Connecting new peers to Hermes relayer requires somehow to add the account keys again -hermes keys add --mnemonic-file mnemonic.txt --chain consu --overwrite +# hermes keys add --mnemonic-file mnemonic.txt --chain consu --overwrite -sleep 1 +# sleep 1 hermes keys add --mnemonic-file mnemonic.txt --chain provi --overwrite From a11ee290957da4f942db00335aa16cfd02cf11d0 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 6 Jul 2023 15:44:50 +0200 Subject: [PATCH 04/29] revert local setup --- Dockerfile | 2 +- go.mod | 3 +- go.sum | 14 +- output.log | 1227 ++++++++++++++++++-- tests/e2e/testnet-scripts/fork-consumer.sh | 14 +- 5 files changed, 1111 insertions(+), 149 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba351f2e78..03939617be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,7 +36,7 @@ FROM informalofftermatt/cometmock:latest as cometmock-builder # Get GoRelayer FROM informalofftermatt/gorelayer:nogas AS gorelayer-builder -FROM --platform=linux/arm64 fedora:36 +FROM --platform=linux/amd64 fedora:36 RUN dnf update -y RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq USER root diff --git a/go.mod b/go.mod index 7ef3e43ffb..58b8eaa667 100644 --- a/go.mod +++ b/go.mod @@ -80,7 +80,6 @@ require ( github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/gobwas/ws v1.1.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/gateway v1.1.0 // indirect github.com/golang/glog v1.0.0 // indirect @@ -116,7 +115,7 @@ require ( github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/onsi/ginkgo v1.16.5 // indirect + github.com/onsi/ginkgo v1.16.4 // indirect github.com/onsi/gomega v1.20.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.5 // indirect diff --git a/go.sum b/go.sum index 5afd840ee9..ed38bf1bab 100644 --- a/go.sum +++ b/go.sum @@ -382,15 +382,12 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= -github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= -github.com/gobwas/pool v0.2.1/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/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= -github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= 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= @@ -780,8 +777,8 @@ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= @@ -1268,7 +1265,6 @@ golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/output.log b/output.log index c80a19a575..a6fcfee86e 100644 --- a/output.log +++ b/output.log @@ -25,12 +25,12 @@ startDocker: startDocker: startDocker: + docker build -f Dockerfile -t interchain-security-container . startDocker: #1 [internal] load build definition from Dockerfile -startDocker: #1 sha256:a0cee17e78737057a68d25b4fd49811c89dc8afcadafdd1978b58d35b3c0da1c +startDocker: #1 sha256:604789e44fdefbf6a2dd97add254061623de5e810ef734b454eaad26b1b17035 startDocker: #1 transferring dockerfile: 37B done startDocker: #1 DONE 0.0s startDocker: startDocker: #2 [internal] load .dockerignore -startDocker: #2 sha256:4c4a3b3312107dd6ab7a39c973b7650daef786e96bf7e7f90e4f84afc3cd1ffb +startDocker: #2 sha256:a6a91216b943fbd1ec8d7a2718cffa89481ad20be8a239282297ba938665353d startDocker: #2 transferring context: 2B done startDocker: #2 DONE 0.0s startDocker: @@ -39,80 +39,88 @@ startDocker: #3 sha256:5511bf222770ecb09bae16a5e9dc6ddaf6633b05719203c5e2b006447 startDocker: #3 ... startDocker: startDocker: #4 [auth] docker/dockerfile:pull token for registry-1.docker.io -startDocker: #4 sha256:30fc96cb12100d8493a24d77ed92e49a75e81d80bc2ad263760bc9d91e119c18 +startDocker: #4 sha256:2d344823d8ee21eef1762bba24fd226d4bf4f3da25259e99ac9eb49d6e3e83ab startDocker: #4 DONE 0.0s startDocker: startDocker: #3 resolve image config for docker.io/docker/dockerfile:1 startDocker: #3 sha256:5511bf222770ecb09bae16a5e9dc6ddaf6633b05719203c5e2b00644727cd62f -startDocker: #3 DONE 1.4s +startDocker: #3 DONE 1.3s startDocker: startDocker: #5 docker-image://docker.io/docker/dockerfile:1@sha256:39b85bbfa7536a5feceb7372a0817649ecb2724562a38360f4d6a7782a409b14 startDocker: #5 sha256:9a158a4603558c8d1260a1837f34e5dcdc934c3e44e35af38132f4449f9ebf12 startDocker: #5 CACHED startDocker: startDocker: #6 [internal] load build definition from Dockerfile -startDocker: #6 sha256:d6915fd1e878024a7f1105667a7027d32b197b81dd06bb0b1aa56f5319f1fff0 +startDocker: #6 sha256:a63b93256cb6ed954f95b300797b968540e3f4a5ff2167243929fb5ab9ef1688 startDocker: #6 DONE 0.0s startDocker: startDocker: #7 [internal] load .dockerignore -startDocker: #7 sha256:507fef730b5510b7762bd5267360b4086c98a34ec3afb696bf3d2d7d21f2e335 +startDocker: #7 sha256:19eb6aa0ebe549a586fa466b986b6bdf048ead2e77f288d0357fc7acbd7f8ef6 startDocker: #7 DONE 0.0s startDocker: -startDocker: #12 [internal] load metadata for docker.io/library/golang:1.19-alpine -startDocker: #12 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 +startDocker: #12 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas +startDocker: #12 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 startDocker: #12 ... startDocker: -startDocker: #13 [auth] otacrew/hermes-ics:pull token for registry-1.docker.io -startDocker: #13 sha256:6ed335be6e0b794f59599ba8f783918f21a3bff490550210b7c34e3756e3e195 +startDocker: #13 [auth] library/fedora:pull token for registry-1.docker.io +startDocker: #13 sha256:345423550f620a41155d9d62c5c908c31000562442585e89f3321fdbe93332c3 startDocker: #13 DONE 0.0s startDocker: -startDocker: #11 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas -startDocker: #11 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 +startDocker: #11 [internal] load metadata for docker.io/library/golang:1.19-alpine +startDocker: #11 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 startDocker: #11 ... startDocker: -startDocker: #14 [auth] informalofftermatt/cometmock:pull token for registry-1.docker.io -startDocker: #14 sha256:5fe3f6fa6d571d44b170a802e970087617b30812cb8b6ae792e3f39f2562eaad +startDocker: #14 [auth] library/golang:pull token for registry-1.docker.io +startDocker: #14 sha256:75bbb50a63355318c3918a33c2d87b1de50da14e632c4735ca9c59b663095b6a startDocker: #14 DONE 0.0s startDocker: -startDocker: #15 [auth] informalofftermatt/gorelayer:pull token for registry-1.docker.io -startDocker: #15 sha256:d3c3cea6f1547c6f57b1357cc69c68aa48bd5cc5daeb0a706258abed13ebbffd +startDocker: #15 [auth] otacrew/hermes-ics:pull token for registry-1.docker.io +startDocker: #15 sha256:803bb594f550c4774b41e0d6fc8ffd77bb355ec62871833ff945f6a44be67739 startDocker: #15 DONE 0.0s startDocker: -startDocker: #16 [auth] library/golang:pull token for registry-1.docker.io -startDocker: #16 sha256:1c552d38b1c261b51b57ea468bcaf9cc5ef0af53c871cf41a32432c988d71224 +startDocker: #16 [auth] informalofftermatt/gorelayer:pull token for registry-1.docker.io +startDocker: #16 sha256:e7abcff988820d001e3df0bdd1d70b33bfd259e435e33d3b39c73d09a3d055c8 startDocker: #16 DONE 0.0s startDocker: -startDocker: #17 [auth] library/fedora:pull token for registry-1.docker.io -startDocker: #17 sha256:6e505c3f2bcd08fe61c4a2357be97910227d3968c871825298b6a084b8f4f8da +startDocker: #17 [auth] informalofftermatt/cometmock:pull token for registry-1.docker.io +startDocker: #17 sha256:cde7de5d11268f14fcf526aa5378d79b5ae6424beb3382ef94ba73eda3fa3461 startDocker: #17 DONE 0.0s startDocker: -startDocker: #10 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest -startDocker: #10 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b +startDocker: #10 [internal] load metadata for docker.io/otacrew/hermes-ics:latest +startDocker: #10 sha256:1619a8f499c95bd5af09b73b1d3a2ab9c6d7d6780852f9a079269b6c182f3235 startDocker: #10 ... startDocker: -startDocker: #8 [internal] load metadata for docker.io/otacrew/hermes-ics:latest -startDocker: #8 sha256:1619a8f499c95bd5af09b73b1d3a2ab9c6d7d6780852f9a079269b6c182f3235 +startDocker: #8 [internal] load metadata for docker.io/library/fedora:36 +startDocker: #8 sha256:73cd5a5ed47fc791d26860a9f6452dd61c51470638f517e9fa5cdca15792d916 startDocker: #8 DONE 1.5s startDocker: -startDocker: #9 [internal] load metadata for docker.io/library/fedora:36 -startDocker: #9 sha256:73cd5a5ed47fc791d26860a9f6452dd61c51470638f517e9fa5cdca15792d916 -startDocker: #9 DONE 2.0s +startDocker: #9 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest +startDocker: #9 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b +startDocker: #9 ... startDocker: -startDocker: #11 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas -startDocker: #11 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 -startDocker: #11 DONE 2.2s +startDocker: #11 [internal] load metadata for docker.io/library/golang:1.19-alpine +startDocker: #11 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 +startDocker: #11 DONE 1.9s startDocker: -startDocker: #10 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest -startDocker: #10 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b -startDocker: #10 DONE 2.3s +startDocker: #12 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas +startDocker: #12 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 +startDocker: #12 ... startDocker: -startDocker: #12 [internal] load metadata for docker.io/library/golang:1.19-alpine -startDocker: #12 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 -startDocker: #12 DONE 2.3s +startDocker: #10 [internal] load metadata for docker.io/otacrew/hermes-ics:latest +startDocker: #10 sha256:1619a8f499c95bd5af09b73b1d3a2ab9c6d7d6780852f9a079269b6c182f3235 +startDocker: #10 DONE 2.1s startDocker: -startDocker: #23 [cometmock-builder 1/1] FROM docker.io/informalofftermatt/cometmock:latest@sha256:c8f54f54b14fda1ffa737fb6ab02fe3b8423cfc308f99bdace7539f920a14682 -startDocker: #23 sha256:5b578f98ce1950c9b6ae50ca290be9f6ee3a5b7249a23285ac729337998afa36 -startDocker: #23 DONE 0.0s +startDocker: #12 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas +startDocker: #12 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 +startDocker: #12 DONE 2.2s +startDocker: +startDocker: #9 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest +startDocker: #9 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b +startDocker: #9 DONE 2.2s +startDocker: +startDocker: #27 [is-builder 1/10] FROM docker.io/library/golang:1.19-alpine@sha256:470c8d0638c5b7007a6118baee531c30e0516a18e45b35bff1f8ab92cf8f896d +startDocker: #27 sha256:5223bfcab5806439b55371a6102f93203b8b4171a586251c641310088838642c +startDocker: #27 DONE 0.0s startDocker: startDocker: #21 [hermes-builder 1/1] FROM docker.io/otacrew/hermes-ics:latest@sha256:36806114ec58b4dca2173974f09d73cd4b9ff02d81ba882f6f152cba02bae139 startDocker: #21 sha256:a9171665a53c60610d8881bfbfc46df6ba80ba890eb5fd04bd66c9cb7ae6622e @@ -122,117 +130,1086 @@ startDocker: #25 [gorelayer-builder 1/1] FROM docker.io/informalofftermatt/gorel startDocker: #25 sha256:8a76aed9c101ebff920e322f3580b0413fc7630dafbf47400ab561109204de5c startDocker: #25 DONE 0.0s startDocker: -startDocker: #27 [is-builder 1/10] FROM docker.io/library/golang:1.19-alpine@sha256:470c8d0638c5b7007a6118baee531c30e0516a18e45b35bff1f8ab92cf8f896d -startDocker: #27 sha256:5223bfcab5806439b55371a6102f93203b8b4171a586251c641310088838642c -startDocker: #27 DONE 0.0s -startDocker: startDocker: #18 [stage-4 1/12] FROM docker.io/library/fedora:36@sha256:64cd00a0e2b92d527c0a0954162a73e85f160e3a53c38325b51e87d6aab4e266 startDocker: #18 sha256:5031400c012ded166194f592f4fbbc517b0a7051caa9252048f537694d4110e9 startDocker: #18 DONE 0.0s startDocker: +startDocker: #23 [cometmock-builder 1/1] FROM docker.io/informalofftermatt/cometmock:latest@sha256:c8f54f54b14fda1ffa737fb6ab02fe3b8423cfc308f99bdace7539f920a14682 +startDocker: #23 sha256:5b578f98ce1950c9b6ae50ca290be9f6ee3a5b7249a23285ac729337998afa36 +startDocker: #23 DONE 0.0s +startDocker: startDocker: #29 [internal] load build context -startDocker: #29 sha256:9858b29b84f4e1025f7cc79d42ba1f3504a9ce43ae34349f9e2d53f8c0ce5356 -startDocker: #29 transferring context: 4.10MB 0.7s done -startDocker: #29 DONE 0.7s +startDocker: #29 sha256:e24e809151049144d7746f068858d6bd02e1b9ab87aa76ec9891180df317089e +startDocker: #29 transferring context: 6.72MB 0.7s done +startDocker: #29 DONE 0.8s startDocker: startDocker: #28 [is-builder 2/10] RUN apk add --no-cache curl make git libc-dev bash gcc linux-headers startDocker: #28 sha256:fc221a60c9fdcdff81c09910439fb67a92187557122616a1e063d42019cb7b7a startDocker: #28 CACHED startDocker: startDocker: #30 [is-builder 3/10] COPY go.mod /go.mod -startDocker: #30 sha256:e15d65a5e35ce272d87314eeb9ff6402cf320438dc4853f28107e0eee5cee485 +startDocker: #30 sha256:81221ca3eaedec795bc8e82f11d4b3fe4d8c08a7330c61d62ff0b9574def631e startDocker: #30 CACHED startDocker: startDocker: #31 [is-builder 4/10] COPY go.sum /go.sum -startDocker: #31 sha256:c17d002021834ee7c7b0f764463fc18efdc4330da247e5eaad14400772d3b4f3 +startDocker: #31 sha256:eb2c409650fb516a2d904aaf777a75be1bd7c44176cd2f08c16c80029193fabf startDocker: #31 CACHED startDocker: startDocker: #32 [is-builder 5/10] RUN go mod download -startDocker: #32 sha256:d71b3adff54b3875295530a71bb43ecc276eb17cda3b7c2f410ca8ce6b1f680c +startDocker: #32 sha256:aa181ddcc677349350511fbc343e4f7c038625d951fd72125ed98d7037340118 startDocker: #32 CACHED startDocker: startDocker: #33 [is-builder 6/10] ADD . /interchain-security -startDocker: #33 sha256:a0e52ca9b60725e98f4f8e3f86cb21bc0dddda7ac1660bebd3e9c8f0f995d849 -startDocker: #33 DONE 5.1s +startDocker: #33 sha256:7f74c20ebdf2b3a21ad65b325af107c303810e0d52cb05519ce96d36c2123db0 +startDocker: #33 DONE 5.2s startDocker: startDocker: #34 [is-builder 7/10] WORKDIR /interchain-security -startDocker: #34 sha256:56097d24d06233dc29e88cc2a6cca993360742f2111f4dc337b7bcbc4e8632e8 -startDocker: #34 DONE 0.0s +startDocker: #34 sha256:bc2b67e8c61a62aa224034431cc91ef875819fb0f1ef58a6576b5f5250fb4d8d +startDocker: #34 DONE 0.1s startDocker: startDocker: #35 [is-builder 8/10] RUN if [ -d "./cosmos-sdk" ]; then go mod edit -replace github.com/cosmos/cosmos-sdk=./cosmos-sdk; fi -startDocker: #35 sha256:187bbf219916465d89aeccab99de791859cc9ee8aaf1b44d603fb805f3d0a60d -startDocker: #35 DONE 0.2s +startDocker: #35 sha256:11d8f2d4a0e47a82e838a86fc8a155a449ee9f3132b398f6b9c7f00f48a83b34 +startDocker: #35 DONE 0.1s startDocker: startDocker: #36 [is-builder 9/10] RUN go mod tidy -startDocker: #36 sha256:a195eb6dbcba834e5ea847fa85ec1789a834a2a40720905c6286f0d2f884d121 -startDocker: #36 1.148 go: downloading github.com/frankban/quicktest v1.14.4 -startDocker: #36 1.148 go: downloading github.com/otiai10/copy v1.6.0 -startDocker: #36 1.215 go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c -startDocker: #36 1.233 go: downloading github.com/google/go-cmp v0.5.9 -startDocker: #36 1.335 go: downloading github.com/pascaldekloe/goe v0.1.0 -startDocker: #36 1.336 go: downloading github.com/btcsuite/btcd/btcutil v1.1.2 -startDocker: #36 1.337 go: downloading github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c -startDocker: #36 1.367 go: downloading github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c -startDocker: #36 1.380 go: downloading github.com/btcsuite/btcd v0.22.1 -startDocker: #36 1.455 go: downloading github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 -startDocker: #36 1.479 go: downloading github.com/fortytw2/leaktest v1.3.0 -startDocker: #36 1.545 go: downloading github.com/regen-network/gocuke v0.6.2 -startDocker: #36 1.560 go: downloading gotest.tools/v3 v3.4.0 -startDocker: #36 1.592 go: downloading gotest.tools v2.2.0+incompatible -startDocker: #36 1.633 go: downloading github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f -startDocker: #36 1.646 go: downloading github.com/adlio/schema v1.3.3 -startDocker: #36 1.652 go: downloading github.com/ory/dockertest v3.3.5+incompatible -startDocker: #36 1.671 go: downloading github.com/stretchr/objx v0.5.0 -startDocker: #36 1.693 go: downloading github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 -startDocker: #36 1.695 go: downloading github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 -startDocker: #36 1.708 go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.0 -startDocker: #36 1.712 go: downloading github.com/VividCortex/gohistogram v1.0.0 -startDocker: #36 1.728 go: downloading github.com/cucumber/common/gherkin/go/v22 v22.0.0 -startDocker: #36 1.728 go: downloading github.com/cockroachdb/apd/v3 v3.1.0 -startDocker: #36 1.731 go: downloading github.com/cucumber/common/messages/go/v17 v17.1.1 -startDocker: #36 1.735 go: downloading pgregory.net/rapid v0.5.3 -startDocker: #36 1.761 go: downloading github.com/gin-gonic/gin v1.8.1 -startDocker: #36 1.784 go: downloading golang.org/x/sync v0.1.0 -startDocker: #36 1.790 go: downloading github.com/nxadm/tail v1.4.8 -startDocker: #36 1.790 go: downloading github.com/cenkalti/backoff v2.2.1+incompatible -startDocker: #36 1.795 go: downloading github.com/Microsoft/go-winio v0.6.0 -startDocker: #36 1.797 go: downloading github.com/docker/go-units v0.5.0 -startDocker: #36 1.804 go: downloading github.com/OneOfOne/xxhash v1.2.2 -startDocker: #36 1.805 go: downloading github.com/spaolacci/murmur3 v1.1.0 -startDocker: #36 1.820 go: downloading github.com/alecthomas/participle/v2 v2.0.0-alpha7 -startDocker: #36 1.821 go: downloading github.com/gofrs/uuid v4.3.0+incompatible -startDocker: #36 1.822 go: downloading github.com/gobwas/httphead v0.1.0 -startDocker: #36 1.840 go: downloading github.com/gobwas/pool v0.2.1 -startDocker: #36 1.840 go: downloading gonum.org/v1/gonum v0.8.2 -startDocker: #36 1.850 go: downloading github.com/gin-contrib/sse v0.1.0 -startDocker: #36 1.852 go: downloading gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 -startDocker: #36 1.855 go: downloading github.com/sirupsen/logrus v1.9.0 -startDocker: #36 1.861 go: downloading github.com/opencontainers/runc v1.1.3 -startDocker: #36 1.864 go: downloading github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 -startDocker: #36 1.877 go: downloading github.com/opencontainers/image-spec v1.1.0-rc2 -startDocker: #36 1.909 go: downloading golang.org/x/tools v0.4.0 -startDocker: #36 1.927 go: downloading github.com/go-errors/errors v1.4.2 -startDocker: #36 1.954 go: downloading github.com/pingcap/errors v0.11.4 -startDocker: #36 2.063 go: downloading github.com/go-playground/validator/v10 v10.11.1 -startDocker: #36 2.067 go: downloading github.com/ugorji/go/codec v1.2.7 -startDocker: #36 2.224 go: downloading github.com/goccy/go-json v0.9.11 -startDocker: #36 2.226 go: downloading github.com/ugorji/go v1.1.7 -startDocker: #36 2.250 go: downloading github.com/json-iterator/go v1.1.12 -startDocker: #36 2.272 go: downloading github.com/docker/go-connections v0.4.0 -startDocker: #36 2.288 go: downloading github.com/containerd/continuity v0.3.0 -startDocker: #36 2.291 go: downloading github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 -startDocker: #36 2.309 go: downloading github.com/opencontainers/go-digest v1.0.0 -startDocker: #36 2.321 go: downloading github.com/go-playground/universal-translator v0.18.0 -startDocker: #36 2.323 go: downloading github.com/leodido/go-urn v1.2.1 -startDocker: #36 2.337 go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd -startDocker: #36 2.338 go: downloading github.com/modern-go/reflect2 v1.0.2 -startDocker: #36 2.376 go: downloading github.com/go-playground/locales v0.14.0 -startDocker: #36 2.421 go: downloading golang.org/x/mod v0.7.0 -startDocker: #36 DONE 3.2s +startDocker: #36 sha256:b36cdd4126a91860927fa6f04e5185afee360d5c5b6d52befaa0c04bd1712985 +startDocker: #36 1.196 go: downloading github.com/otiai10/copy v1.6.0 +startDocker: #36 1.196 go: downloading github.com/frankban/quicktest v1.14.4 +startDocker: #36 1.270 go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c +startDocker: #36 1.305 go: downloading github.com/google/go-cmp v0.5.9 +startDocker: #36 1.380 go: downloading github.com/pascaldekloe/goe v0.1.0 +startDocker: #36 1.383 go: downloading github.com/btcsuite/btcd/btcutil v1.1.2 +startDocker: #36 1.399 go: downloading github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c +startDocker: #36 1.419 go: downloading github.com/btcsuite/btcd v0.22.1 +startDocker: #36 1.457 go: downloading github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c +startDocker: #36 1.543 go: downloading github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 +startDocker: #36 1.576 go: downloading github.com/fortytw2/leaktest v1.3.0 +startDocker: #36 1.703 go: downloading github.com/regen-network/gocuke v0.6.2 +startDocker: #36 1.712 go: downloading gotest.tools/v3 v3.4.0 +startDocker: #36 1.745 go: downloading gotest.tools v2.2.0+incompatible +startDocker: #36 1.778 go: downloading github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f +startDocker: #36 1.783 go: downloading github.com/adlio/schema v1.3.3 +startDocker: #36 1.784 go: downloading github.com/ory/dockertest v3.3.5+incompatible +startDocker: #36 1.801 go: downloading github.com/stretchr/objx v0.5.0 +startDocker: #36 1.840 go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.0 +startDocker: #36 1.841 go: downloading github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 +startDocker: #36 1.842 go: downloading github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 +startDocker: #36 1.844 go: downloading github.com/VividCortex/gohistogram v1.0.0 +startDocker: #36 1.856 go: downloading github.com/cockroachdb/apd/v3 v3.1.0 +startDocker: #36 1.856 go: downloading github.com/cucumber/common/gherkin/go/v22 v22.0.0 +startDocker: #36 1.857 go: downloading github.com/cucumber/common/messages/go/v17 v17.1.1 +startDocker: #36 1.858 go: downloading pgregory.net/rapid v0.5.3 +startDocker: #36 1.878 go: downloading golang.org/x/sync v0.1.0 +startDocker: #36 1.890 go: downloading github.com/gin-gonic/gin v1.8.1 +startDocker: #36 1.910 go: downloading github.com/OneOfOne/xxhash v1.2.2 +startDocker: #36 1.911 go: downloading github.com/spaolacci/murmur3 v1.1.0 +startDocker: #36 1.912 go: downloading github.com/nxadm/tail v1.4.8 +startDocker: #36 1.925 go: downloading github.com/cenkalti/backoff v2.2.1+incompatible +startDocker: #36 1.926 go: downloading github.com/Microsoft/go-winio v0.6.0 +startDocker: #36 1.929 go: downloading github.com/docker/go-units v0.5.0 +startDocker: #36 1.940 go: downloading github.com/alecthomas/participle/v2 v2.0.0-alpha7 +startDocker: #36 1.951 go: downloading github.com/gofrs/uuid v4.3.0+incompatible +startDocker: #36 1.967 go: downloading gonum.org/v1/gonum v0.8.2 +startDocker: #36 1.973 go: downloading github.com/gobwas/httphead v0.1.0 +startDocker: #36 1.974 go: downloading github.com/gobwas/pool v0.2.1 +startDocker: #36 1.988 go: downloading github.com/gin-contrib/sse v0.1.0 +startDocker: #36 1.988 go: downloading gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 +startDocker: #36 1.997 go: downloading github.com/sirupsen/logrus v1.9.0 +startDocker: #36 2.002 go: downloading github.com/opencontainers/runc v1.1.3 +startDocker: #36 2.002 go: downloading github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 +startDocker: #36 2.018 go: downloading github.com/opencontainers/image-spec v1.1.0-rc2 +startDocker: #36 2.027 go: downloading golang.org/x/tools v0.4.0 +startDocker: #36 2.080 go: downloading github.com/go-errors/errors v1.4.2 +startDocker: #36 2.090 go: downloading github.com/pingcap/errors v0.11.4 +startDocker: #36 2.218 go: downloading github.com/go-playground/validator/v10 v10.11.1 +startDocker: #36 2.220 go: downloading github.com/ugorji/go/codec v1.2.7 +startDocker: #36 2.347 go: downloading github.com/ugorji/go v1.1.7 +startDocker: #36 2.355 go: downloading github.com/goccy/go-json v0.9.11 +startDocker: #36 2.359 go: downloading github.com/json-iterator/go v1.1.12 +startDocker: #36 2.395 go: downloading github.com/docker/go-connections v0.4.0 +startDocker: #36 2.399 go: downloading github.com/containerd/continuity v0.3.0 +startDocker: #36 2.411 go: downloading github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 +startDocker: #36 2.413 go: downloading github.com/opencontainers/go-digest v1.0.0 +startDocker: #36 2.427 go: downloading github.com/go-playground/universal-translator v0.18.0 +startDocker: #36 2.429 go: downloading github.com/leodido/go-urn v1.2.1 +startDocker: #36 2.430 go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd +startDocker: #36 2.444 go: downloading github.com/modern-go/reflect2 v1.0.2 +startDocker: #36 2.445 go: downloading github.com/go-playground/locales v0.14.0 +startDocker: #36 2.489 go: downloading golang.org/x/mod v0.7.0 +startDocker: #36 DONE 3.3s startDocker: startDocker: #37 [is-builder 10/10] RUN make install -startDocker: #37 sha256:c8211a74abcd858f0148b5eca1e5aaf2c3530e39a4ef15c0544480913264cb86 -startDocker: #37 0.326 export GOFLAGS='-buildmode=pie' -startDocker: #37 0.327 export CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2" -startDocker: #37 0.327 export CGO_LDFLAGS="-Wl,-z,relro,-z,now -fstack-protector" -startDocker: #37 0.328 go install ./cmd/interchain-security-pd +startDocker: #37 sha256:99cd3210764060d55710862281626a89d6501bf467b1fd30ef92daeb77f8dd99 +startDocker: #37 0.318 export GOFLAGS='-buildmode=pie' +startDocker: #37 0.319 export CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2" +startDocker: #37 0.319 export CGO_LDFLAGS="-Wl,-z,relro,-z,now -fstack-protector" +startDocker: #37 0.320 go install ./cmd/interchain-security-pd +startDocker: #37 26.69 go install ./cmd/interchain-security-cd +startDocker: #37 28.97 go install ./cmd/interchain-security-cdd +startDocker: #37 31.19 go install ./cmd/interchain-security-sd +startDocker: #37 DONE 33.4s +startDocker: +startDocker: #24 [stage-4 5/12] COPY --from=cometmock-builder /usr/local/bin/cometmock /usr/local/bin/cometmock +startDocker: #24 sha256:4faacbe52af399143e4464c8eff9225096d035b7b2163a40ece5160b230b2d8d +startDocker: #24 CACHED +startDocker: +startDocker: #40 [stage-4 9/12] COPY --from=is-builder /go/bin/interchain-security-cdd /usr/local/bin/interchain-security-cdd +startDocker: #40 sha256:fdfc304213cac7c2141267ca4c395a63f35dc903e11ea9c835b2b96a2aae8cea +startDocker: #40 CACHED +startDocker: +startDocker: #20 [stage-4 3/12] RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq +startDocker: #20 sha256:181d17ee3af8a58f0fd82482bf68a5ac818d63f17d17b4bf9b1c7b02fc110d92 +startDocker: #20 CACHED +startDocker: +startDocker: #22 [stage-4 4/12] COPY --from=hermes-builder /usr/bin/hermes /usr/local/bin/ +startDocker: #22 sha256:cb1015a05795e8b3c9413ebf6489c2ab6b572a54b12f0948b0e88301fc3d63c6 +startDocker: #22 CACHED +startDocker: +startDocker: #38 [stage-4 7/12] COPY --from=is-builder /go/bin/interchain-security-pd /usr/local/bin/interchain-security-pd +startDocker: #38 sha256:e2c9be27e1187864cbd099ff98358466986c1ca238767742b8fe4671785f55f8 +startDocker: #38 CACHED +startDocker: +startDocker: #39 [stage-4 8/12] COPY --from=is-builder /go/bin/interchain-security-cd /usr/local/bin/interchain-security-cd +startDocker: #39 sha256:0183ab65ddb36a37a144bad652dfd76fe4d401974b199fbfbab5464d00c5f00a +startDocker: #39 CACHED +startDocker: +startDocker: #19 [stage-4 2/12] RUN dnf update -y +startDocker: #19 sha256:48c74673a1005785b4cbb054320b87b03cc31318dddcee6c7aa71b73052f2fe4 +startDocker: #19 CACHED +startDocker: +startDocker: #26 [stage-4 6/12] COPY --from=gorelayer-builder /bin/rly /usr/local/bin/ +startDocker: #26 sha256:7d396d0a9b2aa5963565510ac65d26ec8583051ab3066d77baabd0b2deeb2bd3 +startDocker: #26 CACHED +startDocker: +startDocker: #41 [stage-4 10/12] COPY --from=is-builder /go/bin/interchain-security-sd /usr/local/bin/interchain-security-sd +startDocker: #41 sha256:89b48ad7749c0e5baaaa2860c1e449b4f0276bc213139ebd39948d083af7b358 +startDocker: #41 CACHED +startDocker: +startDocker: #42 [stage-4 11/12] ADD ./tests/e2e/testnet-scripts /testnet-scripts +startDocker: #42 sha256:4459f5721261de8968f694df2df3227e651519cf56866f84158d89e33499f985 +startDocker: #42 DONE 0.0s +startDocker: +startDocker: #43 [stage-4 12/12] ADD ./tests/e2e/testnet-scripts/hermes-config.toml /root/.hermes/config.toml +startDocker: #43 sha256:4e74d5e7e4fe21e5e500cb7db68b8fad5a7c99d932f0e2a21f34f97bde9200f9 +startDocker: #43 DONE 0.0s +startDocker: +startDocker: #44 exporting to image +startDocker: #44 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00 +startDocker: #44 exporting layers 0.0s done +startDocker: #44 writing image sha256:c42e913f32a8e5d1ba19c48fa1e05d4778192821838abd51b285f2ba098577f9 done +startDocker: #44 naming to docker.io/library/interchain-security-container done +startDocker: #44 DONE 0.0s +startDocker: + rm -rf ./cosmos-sdk/ +startDocker: + docker run --name interchain-security-instance --cap-add=NET_ADMIN --privileged interchain-security-container /bin/bash /testnet-scripts/beacon.sh +startDocker: beacon!!!!!!!!!! +=============== started misbehaviour tests =============== +running misbehaviour: step 1 == StartChainAction +startChain: + BIN=interchain-security-pd +startChain: + VALIDATORS='[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + CHAIN_ID=provi +startChain: + CHAIN_IP_PREFIX=7.7.7 +startChain: + GENESIS_TRANSFORM='.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "10" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.provider.params.slash_meter_replenish_fraction = "1.0" | .app_state.provider.params.slash_meter_replenish_period = "3s"' +startChain: + SKIP_GENTX=false +startChain: + TENDERMINT_CONFIG_TRANSFORM='s/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' +startChain: + USE_COMETMOCK=false +startChain: + NODE_LISTEN_ADDR_STR= +startChain: + NODE_HOMES= +startChain: ++ jq '. | length' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + NODES=2 +startChain: + ip link add name virtual-bridge type bridge +startChain: ++ seq 0 1 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ jq -r '.[0].val_id' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + VAL_IP_SUFFIX=4 +startChain: + NET_NAMESPACE_NAME=provi-alice +startChain: + IP_ADDR=7.7.7.4/24 +startChain: + ip netns add provi-alice +startChain: + ip link add provi-alice-in type veth peer name provi-alice-out +startChain: + ip link set provi-alice-in netns provi-alice +startChain: + ip netns exec provi-alice ip addr add 7.7.7.4/24 dev provi-alice-in +startChain: + ip link set provi-alice-out master virtual-bridge +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].val_id' +startChain: + VAL_ID=bob +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].ip_suffix' +startChain: + VAL_IP_SUFFIX=5 +startChain: + NET_NAMESPACE_NAME=provi-bob +startChain: + IP_ADDR=7.7.7.5/24 +startChain: + ip netns add provi-bob +startChain: + ip link add provi-bob-in type veth peer name provi-bob-out +startChain: + ip link set provi-bob-in netns provi-bob +startChain: + ip netns exec provi-bob ip addr add 7.7.7.5/24 dev provi-bob-in +startChain: + ip link set provi-bob-out master virtual-bridge +startChain: + ip link set virtual-bridge up +startChain: ++ seq 0 1 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: + NET_NAMESPACE_NAME=provi-alice +startChain: + ip link set provi-alice-out up +startChain: + ip netns exec provi-alice ip link set dev provi-alice-in up +startChain: + ip netns exec provi-alice ip link set dev lo up +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].val_id' +startChain: + VAL_ID=bob +startChain: + NET_NAMESPACE_NAME=provi-bob +startChain: + ip link set provi-bob-out up +startChain: + ip netns exec provi-bob ip link set dev provi-bob-in up +startChain: + ip netns exec provi-bob ip link set dev lo up +startChain: + BRIDGE_IP=7.7.7.254/24 +startChain: + ip addr add 7.7.7.254/24 dev virtual-bridge +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + FIRST_VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + FIRST_VAL_IP_SUFFIX=4 +startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + interchain-security-pd init --home /provi/validatoralice --chain-id=provi validatoralice --recover +startChain: + jq -r '.[0].mnemonic' +startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"evidence":{"evidence":[]},"genutil":{"gen_txs":[]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"172800s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"provider":{"consumer_addition_proposals":[],"consumer_addrs_to_prune":[],"consumer_removal_proposals":[],"consumer_states":[],"mature_unbonding_ops":null,"params":{"ccv_timeout_period":"2419200s","consumer_reward_denom_registration_fee":{"amount":"10000000","denom":"stake"},"init_timeout_period":"604800s","max_throttled_packets":"100000","slash_meter_replenish_fraction":"0.05","slash_meter_replenish_period":"3600s","template_client":{"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true,"chain_id":"","frozen_height":{"revision_height":"0","revision_number":"0"},"latest_height":{"revision_height":"0","revision_number":"0"},"max_clock_drift":"10s","proof_specs":[{"inner_spec":{"child_order":[0,1],"child_size":33,"empty_child":null,"hash":"SHA256","max_prefix_length":12,"min_prefix_length":4},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0},{"inner_spec":{"child_order":[0,1],"child_size":32,"empty_child":null,"hash":"SHA256","max_prefix_length":1,"min_prefix_length":1},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0}],"trust_level":{"denominator":"3","numerator":"1"},"trusting_period":"0s","unbonding_period":"0s","upgrade_path":["upgrade","upgradedIBCState"]},"trusting_period_fraction":"0.66","vsc_timeout_period":"3024000s"},"unbonding_ops":[],"validator_consumer_pubkeys":[],"validators_by_consumer_addr":[],"valset_update_id":"1","valset_update_id_to_height":[]},"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"provi","gentxs_dir":"","moniker":"validatoralice","node_id":"a9062fce9ac64223aeff285292790283de59b0d0"} +startChain: + jq '.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "10" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.provider.params.slash_meter_replenish_fraction = "1.0" | .app_state.provider.params.slash_meter_replenish_period = "3s"' /provi/validatoralice/config/genesis.json +startChain: + mv /provi/edited-genesis.json /provi/genesis.json +startChain: ++ seq 0 1 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ jq -r '.[0].val_id' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].start_with_consumer_key' +startChain: + START_WITH_CONSUMER_KEY=true +startChain: + [[ provi != \p\r\o\v\i ]] +startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + jq -r '.[0].mnemonic' +startChain: + interchain-security-pd keys add validatoralice --home /provi/validatoralice --keyring-backend test --recover +startChain: +startChain: + mv /provi/genesis.json /provi/validatoralice/config/genesis.json +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].allocation' +startChain: + ALLOCATION=10000000000stake +startChain: + interchain-security-pd add-genesis-account validatoralice 10000000000stake --home /provi/validatoralice --keyring-backend test +startChain: + mv /provi/validatoralice/config/genesis.json /provi/genesis.json +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].val_id' +startChain: + VAL_ID=bob +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].start_with_consumer_key' +startChain: + START_WITH_CONSUMER_KEY=false +startChain: + [[ provi != \p\r\o\v\i ]] +startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + jq -r '.[1].mnemonic' +startChain: + interchain-security-pd keys add validatorbob --home /provi/validatorbob --keyring-backend test --recover +startChain: +startChain: + mv /provi/genesis.json /provi/validatorbob/config/genesis.json +startChain: ++ jq -r '.[1].allocation' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + ALLOCATION=10000000000stake +startChain: + interchain-security-pd add-genesis-account validatorbob 10000000000stake --home /provi/validatorbob --keyring-backend test +startChain: + mv /provi/validatorbob/config/genesis.json /provi/genesis.json +startChain: ++ seq 0 1 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: + cp /provi/genesis.json /provi/validatoralice/config/genesis.json +startChain: + echo '{"height": "0","round": 0,"step": 0}' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].start_with_consumer_key' +startChain: + START_WITH_CONSUMER_KEY=true +startChain: + [[ provi != \p\r\o\v\i ]] +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].priv_validator_key' +startChain: + PRIV_VALIDATOR_KEY='{"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}}' +startChain: + [[ -n {"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}} ]] +startChain: + echo '{"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}}' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].node_key' +startChain: + NODE_KEY='{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' +startChain: + [[ -n {"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}} ]] +startChain: + echo '{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' +startChain: + '[' false = false ']' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].stake' +startChain: + STAKE_AMOUNT=500000000stake +startChain: + interchain-security-pd gentx validatoralice 500000000stake --home /provi/validatoralice --keyring-backend test --moniker validatoralice --chain-id=provi +startChain: Genesis transaction written to "/provi/validatoralice/config/gentx/gentx-8339e14baab81c2a2350e261962263397a8d7fb0.json" +startChain: + '[' alice '!=' alice ']' +startChain: + '[' 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' '!=' '' ']' +startChain: + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' provi/validatoralice/config/config.toml +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ jq -r '.[1].val_id' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + VAL_ID=bob +startChain: + cp /provi/genesis.json /provi/validatorbob/config/genesis.json +startChain: + echo '{"height": "0","round": 0,"step": 0}' +startChain: ++ jq -r '.[1].start_with_consumer_key' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + START_WITH_CONSUMER_KEY=false +startChain: + [[ provi != \p\r\o\v\i ]] +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].priv_validator_key' +startChain: + PRIV_VALIDATOR_KEY='{"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}}' +startChain: + [[ -n {"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}} ]] +startChain: + echo '{"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}}' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].node_key' +startChain: + NODE_KEY='{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}}' +startChain: + [[ -n {"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}} ]] +startChain: + echo '{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}}' +startChain: + '[' false = false ']' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].stake' +startChain: + STAKE_AMOUNT=20000000stake +startChain: + interchain-security-pd gentx validatorbob 20000000stake --home /provi/validatorbob --keyring-backend test --moniker validatorbob --chain-id=provi +startChain: Genesis transaction written to "/provi/validatorbob/config/gentx/gentx-c14eeb0edbe700fde55583538420d12ac0c8d77c.json" +startChain: + '[' bob '!=' alice ']' +startChain: + cp /provi/validatorbob/config/gentx/gentx-c14eeb0edbe700fde55583538420d12ac0c8d77c.json /provi/validatoralice/config/gentx/ +startChain: + '[' 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' '!=' '' ']' +startChain: + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' provi/validatorbob/config/config.toml +startChain: + '[' false = false ']' +startChain: + interchain-security-pd collect-gentxs --home /provi/validatoralice +startChain: {"app_message":{"auth":{"accounts":[{"@type":"/cosmos.auth.v1beta1.BaseAccount","account_number":"0","address":"cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm","pub_key":null,"sequence":"0"},{"@type":"/cosmos.auth.v1beta1.BaseAccount","account_number":"0","address":"cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la","pub_key":null,"sequence":"0"}],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[{"address":"cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm","coins":[{"amount":"10000000000","denom":"stake"}]},{"address":"cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la","coins":[{"amount":"10000000000","denom":"stake"}]}],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[{"amount":"20000000000","denom":"stake"}]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"evidence":{"evidence":[]},"genutil":{"gen_txs":[{"auth_info":{"fee":{"amount":[],"gas_limit":"200000","granter":"","payer":""},"signer_infos":[{"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AsFC8tmbGGQSHthsVStbsQ13/+Yza9IT8KCSXXEN7y9f"},"sequence":"0"}]},"body":{"extension_options":[],"memo":"8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.254:26656","messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","commission":{"max_change_rate":"0.010000000000000000","max_rate":"0.200000000000000000","rate":"0.100000000000000000"},"delegator_address":"cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm","description":{"details":"","identity":"","moniker":"validatoralice","security_contact":"","website":""},"min_self_delegation":"1","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"validator_address":"cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng","value":{"amount":"500000000","denom":"stake"}}],"non_critical_extension_options":[],"timeout_height":"0"},"signatures":["D06i2qqq2HathlT7cy+PDLTDuYKAmzw5Ne+Ehvzr9bVy3jpm2h8deDGeSXTSrhdP04UpFXerSn+zIPth5TKNrg=="]},{"auth_info":{"fee":{"amount":[],"gas_limit":"200000","granter":"","payer":""},"signer_infos":[{"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"ArCv6pseaIkP8SbRqnT4kKylCz5mgAyhwXp8V1q/zU3p"},"sequence":"0"}]},"body":{"extension_options":[],"memo":"c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.254:26656","messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","commission":{"max_change_rate":"0.010000000000000000","max_rate":"0.200000000000000000","rate":"0.100000000000000000"},"delegator_address":"cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la","description":{"details":"","identity":"","moniker":"validatorbob","security_contact":"","website":""},"min_self_delegation":"1","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"validator_address":"cosmosvaloper1dkas8mu4kyhl5jrh4nzvm65qz588hy9qakmjnw","value":{"amount":"20000000","denom":"stake"}}],"non_critical_extension_options":[],"timeout_height":"0"},"signatures":["sZhES43m+6IxbKNvrw6HQxLsEHWHsBInieGeJn8KRTI2yUo2TNDUZnqSnGnqBvklxcEu5PxzxEyojV4cxItXCQ=="]}]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"20s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"provider":{"consumer_addition_proposals":[],"consumer_addrs_to_prune":[],"consumer_removal_proposals":[],"consumer_states":[],"mature_unbonding_ops":null,"params":{"ccv_timeout_period":"2419200s","consumer_reward_denom_registration_fee":{"amount":"10000000","denom":"stake"},"init_timeout_period":"604800s","max_throttled_packets":"100000","slash_meter_replenish_fraction":"1.0","slash_meter_replenish_period":"3s","template_client":{"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true,"chain_id":"","frozen_height":{"revision_height":"0","revision_number":"0"},"latest_height":{"revision_height":"0","revision_number":"0"},"max_clock_drift":"10s","proof_specs":[{"inner_spec":{"child_order":[0,1],"child_size":33,"empty_child":null,"hash":"SHA256","max_prefix_length":12,"min_prefix_length":4},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0},{"inner_spec":{"child_order":[0,1],"child_size":32,"empty_child":null,"hash":"SHA256","max_prefix_length":1,"min_prefix_length":1},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0}],"trust_level":{"denominator":"3","numerator":"1"},"trusting_period":"0s","unbonding_period":"0s","upgrade_path":["upgrade","upgradedIBCState"]},"trusting_period_fraction":"0.66","vsc_timeout_period":"3024000s"},"unbonding_ops":[],"validator_consumer_pubkeys":[],"validators_by_consumer_addr":[],"valset_update_id":"1","valset_update_id_to_height":[]},"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"2s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"10","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"provi","gentxs_dir":"/provi/validatoralice/config/gentx","moniker":"validatoralice","node_id":"8339e14baab81c2a2350e261962263397a8d7fb0"} +startChain: + cp /provi/validatoralice/config/genesis.json /provi/genesis.json +startChain: ++ seq 1 1 +startChain: + for i in $(seq 1 $(($NODES - 1))) +startChain: ++ jq -r '.[1].val_id' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + VAL_ID=bob +startChain: + cp /provi/genesis.json /provi/validatorbob/config/genesis.json +startChain: ++ seq 0 1 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + VAL_IP_SUFFIX=4 +startChain: + NET_NAMESPACE_NAME=provi-alice +startChain: + NODE_HOME=/provi/validatoralice +startChain: + GAIA_HOME='--home /provi/validatoralice' +startChain: + NODE_HOMES=/provi/validatoralice, +startChain: + RPC_ADDRESS='--rpc.laddr tcp://7.7.7.4:26658' +startChain: + GRPC_ADDRESS='--grpc.address 7.7.7.4:9091' +startChain: + LISTEN_ADDRESS='--address tcp://7.7.7.4:26655' +startChain: + NODE_LISTEN_ADDR_STR=7.7.7.4:26655, +startChain: + P2P_ADDRESS='--p2p.laddr tcp://7.7.7.4:26656' +startChain: + LOG_LEVEL='--log_level info' +startChain: + ENABLE_WEBGRPC=--grpc-web.enable=false +startChain: + PERSISTENT_PEERS= +startChain: ++ seq 0 1 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: + '[' 0 -ne 0 ']' +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: + '[' 0 -ne 1 ']' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].val_id' +startChain: + PEER_VAL_ID=bob +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].ip_suffix' +startChain: + PEER_VAL_IP_SUFFIX=5 +startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatorbob +startChain: + NODE_ID=c14eeb0edbe700fde55583538420d12ac0c8d77c +startChain: + ADDRESS=c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 +startChain: + PERSISTENT_PEERS=,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 +startChain: + '[' ,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 '!=' '' ']' +startChain: + PERSISTENT_PEERS='--p2p.persistent_peers c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' +startChain: + ARGS='--home /provi/validatoralice --address tcp://7.7.7.4:26655 --rpc.laddr tcp://7.7.7.4:26658 --grpc.address 7.7.7.4:9091 --log_level info --p2p.laddr tcp://7.7.7.4:26656 --grpc-web.enable=false --p2p.persistent_peers c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' +startChain: + [[ false == \t\r\u\e ]] +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: + ip netns exec provi-alice interchain-security-pd --home /provi/validatoralice --address tcp://7.7.7.4:26655 --rpc.laddr tcp://7.7.7.4:26658 --grpc.address 7.7.7.4:9091 --log_level info --p2p.laddr tcp://7.7.7.4:26656 --grpc-web.enable=false --p2p.persistent_peers c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 start +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].val_id' +startChain: + VAL_ID=bob +startChain: ++ jq -r '.[1].ip_suffix' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + VAL_IP_SUFFIX=5 +startChain: + NET_NAMESPACE_NAME=provi-bob +startChain: + NODE_HOME=/provi/validatorbob +startChain: + GAIA_HOME='--home /provi/validatorbob' +startChain: + NODE_HOMES=/provi/validatorbob,/provi/validatoralice, +startChain: + RPC_ADDRESS='--rpc.laddr tcp://7.7.7.5:26658' +startChain: + GRPC_ADDRESS='--grpc.address 7.7.7.5:9091' +startChain: + LISTEN_ADDRESS='--address tcp://7.7.7.5:26655' +startChain: + NODE_LISTEN_ADDR_STR=7.7.7.5:26655,7.7.7.4:26655, +startChain: + P2P_ADDRESS='--p2p.laddr tcp://7.7.7.5:26656' +startChain: + LOG_LEVEL='--log_level info' +startChain: + ENABLE_WEBGRPC=--grpc-web.enable=false +startChain: + PERSISTENT_PEERS= +startChain: ++ seq 0 1 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: + '[' 1 -ne 0 ']' +startChain: ++ jq -r '.[0].val_id' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + PEER_VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + PEER_VAL_IP_SUFFIX=4 +startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatoralice +startChain: + NODE_ID=8339e14baab81c2a2350e261962263397a8d7fb0 +startChain: + ADDRESS=8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 +startChain: + PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: + '[' 1 -ne 1 ']' +startChain: + '[' ,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 '!=' '' ']' +startChain: + PERSISTENT_PEERS='--p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656' +startChain: + ARGS='--home /provi/validatorbob --address tcp://7.7.7.5:26655 --rpc.laddr tcp://7.7.7.5:26658 --grpc.address 7.7.7.5:9091 --log_level info --p2p.laddr tcp://7.7.7.5:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656' +startChain: + [[ false == \t\r\u\e ]] +startChain: + SYBIL_NODE_ID=sybil +startChain: + SYBIL_IP_SUFFIX=252 +startChain: + SYBIL_NET_NAMESPACE_NAME=provi-sybil +startChain: + SYBIL_IP_ADDR=7.7.7.252/24 +startChain: + ip netns add provi-sybil +startChain: + ip netns exec provi-bob interchain-security-pd --home /provi/validatorbob --address tcp://7.7.7.5:26655 --rpc.laddr tcp://7.7.7.5:26658 --grpc.address 7.7.7.5:9091 --log_level info --p2p.laddr tcp://7.7.7.5:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 start +startChain: + ip link add provi-sybil-in type veth peer name provi-sybil-out +startChain: + ip link set provi-sybil-in netns provi-sybil +startChain: + ip netns exec provi-sybil ip addr add 7.7.7.252/24 dev provi-sybil-in +startChain: + ip link set provi-sybil-out master virtual-bridge +startChain: + ip link set provi-sybil-out up +startChain: + ip netns exec provi-sybil ip link set dev provi-sybil-in up +startChain: + ip netns exec provi-sybil ip link set dev lo up +startChain: + QUERY_NODE_ID=query +startChain: + QUERY_IP_SUFFIX=253 +startChain: + QUERY_NET_NAMESPACE_NAME=provi-query +startChain: + QUERY_IP_ADDR=7.7.7.253/24 +startChain: + ip netns add provi-query +startChain: + ip link add provi-query-in type veth peer name provi-query-out +startChain: + ip link set provi-query-in netns provi-query +startChain: + ip netns exec provi-query ip addr add 7.7.7.253/24 dev provi-query-in +startChain: + ip link set provi-query-out master virtual-bridge +startChain: + ip link set provi-query-out up +startChain: + ip netns exec provi-query ip link set dev provi-query-in up +startChain: + ip netns exec provi-query ip link set dev lo up +startChain: + interchain-security-pd init --home /provi/query --chain-id=provi query +startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"evidence":{"evidence":[]},"genutil":{"gen_txs":[]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"172800s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"provider":{"consumer_addition_proposals":[],"consumer_addrs_to_prune":[],"consumer_removal_proposals":[],"consumer_states":[],"mature_unbonding_ops":null,"params":{"ccv_timeout_period":"2419200s","consumer_reward_denom_registration_fee":{"amount":"10000000","denom":"stake"},"init_timeout_period":"604800s","max_throttled_packets":"100000","slash_meter_replenish_fraction":"0.05","slash_meter_replenish_period":"3600s","template_client":{"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true,"chain_id":"","frozen_height":{"revision_height":"0","revision_number":"0"},"latest_height":{"revision_height":"0","revision_number":"0"},"max_clock_drift":"10s","proof_specs":[{"inner_spec":{"child_order":[0,1],"child_size":33,"empty_child":null,"hash":"SHA256","max_prefix_length":12,"min_prefix_length":4},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0},{"inner_spec":{"child_order":[0,1],"child_size":32,"empty_child":null,"hash":"SHA256","max_prefix_length":1,"min_prefix_length":1},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0}],"trust_level":{"denominator":"3","numerator":"1"},"trusting_period":"0s","unbonding_period":"0s","upgrade_path":["upgrade","upgradedIBCState"]},"trusting_period_fraction":"0.66","vsc_timeout_period":"3024000s"},"unbonding_ops":[],"validator_consumer_pubkeys":[],"validators_by_consumer_addr":[],"valset_update_id":"1","valset_update_id_to_height":[]},"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"provi","gentxs_dir":"","moniker":"query","node_id":"b474293bb567144cdaaa7135fd56c0f52da03160"} +startChain: + cp /provi/genesis.json /provi/query/config/genesis.json +startChain: + QUERY_GAIA_HOME='--home /provi/query' +startChain: + QUERY_RPC_ADDRESS='--rpc.laddr tcp://7.7.7.253:26658' +startChain: + QUERY_GRPC_ADDRESS='--grpc.address 7.7.7.253:9091' +startChain: + QUERY_LISTEN_ADDRESS='--address tcp://7.7.7.253:26655' +startChain: + QUERY_P2P_ADDRESS='--p2p.laddr tcp://7.7.7.253:26656' +startChain: + QUERY_LOG_LEVEL='--log_level info' +startChain: + QUERY_ENABLE_WEBGRPC=--grpc-web.enable=false +startChain: + QUERY_PERSISTENT_PEERS= +startChain: ++ seq 0 1 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: ++ jq -r '.[0].val_id' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: + PEER_VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + PEER_VAL_IP_SUFFIX=4 +startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatoralice +startChain: + NODE_ID=8339e14baab81c2a2350e261962263397a8d7fb0 +startChain: + ADDRESS=8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 +startChain: + QUERY_PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].val_id' +startChain: + PEER_VAL_ID=bob +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' +startChain: ++ jq -r '.[1].ip_suffix' +startChain: + PEER_VAL_IP_SUFFIX=5 +startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatorbob +startChain: + NODE_ID=c14eeb0edbe700fde55583538420d12ac0c8d77c +startChain: + ADDRESS=c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 +startChain: + QUERY_PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 +startChain: + QUERY_PERSISTENT_PEERS='--p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' +startChain: + ARGS='--home /provi/query --address tcp://7.7.7.253:26655 --rpc.laddr tcp://7.7.7.253:26658 --grpc.address 7.7.7.253:9091 --log_level info --p2p.laddr tcp://7.7.7.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' +startChain: + [[ false != \t\r\u\e ]] +startChain: Node addresses: +startChain: 7.7.7.5:26655,7.7.7.4:26655, +startChain: Node homes: +startChain: /provi/validatorbob,/provi/validatoralice, +startChain: + echo 'Node addresses:' +startChain: + echo 7.7.7.5:26655,7.7.7.4:26655, +startChain: + echo 'Node homes:' +startChain: + echo /provi/validatorbob,/provi/validatoralice, +startChain: + NODE_LISTEN_ADDR_STR=7.7.7.5:26655,7.7.7.4:26655 +startChain: + NODE_HOMES=/provi/validatorbob,/provi/validatoralice +startChain: + [[ false == \t\r\u\e ]] +startChain: + [[ false == \t\r\u\e ]] +startChain: + set +e +startChain: + ip netns exec provi-query interchain-security-pd --home /provi/query --address tcp://7.7.7.253:26655 --rpc.laddr tcp://7.7.7.253:26658 --grpc.address 7.7.7.253:9091 --log_level info --p2p.laddr tcp://7.7.7.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 start +startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: Error: post failed: Post "http://7.7.7.253:26658": dial tcp 7.7.7.253:26658: connect: connection refused +startChain: Usage: +startChain: simd query block [height] [flags] +startChain: +startChain: Flags: +startChain: -h, --help help for block +startChain: -n, --node string Node to connect to (default "tcp://localhost:26657") +startChain: +startChain: Global Flags: +startChain: --chain-id string The network chain ID +startChain: --home string directory for config and data (default "/root/.interchain-security-p") +startChain: --log_format string The logging format (json|plain) (default "plain") +startChain: --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info") +startChain: --trace print out full stack trace on errors +startChain: +startChain: + sleep 0.3 +startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + sleep 0.3 +startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + sleep 0.3 +startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + sleep 0.3 +startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + set -e +startChain: + echo 'done!!!!!!!!' +startChain: + read -p 'Press Return to Close...' +startChain: done!!!!!!!! +Add to hermes alice +pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear +running misbehaviour: step 2 == submitConsumerAdditionProposalAction +running misbehaviour: step 3 == assignConsumerPubKeyAction +assignConsumerPubKey cmd: /usr/local/bin/docker exec interchain-security-instance /bin/bash -c interchain-security-pd tx provider assign-consensus-key consu '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="}' --from validatoralice --chain-id provi --home /provi/validatoralice --node tcp://7.7.7.4:26658 --gas 900000 --keyring-backend test -b block -y -o json +running misbehaviour: step 4 == voteGovProposalAction +running misbehaviour: step 5 == startConsumerChainAction +startChain: + BIN=interchain-security-cd +startChain: + VALIDATORS='[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: + CHAIN_ID=consu +startChain: + CHAIN_IP_PREFIX=7.7.8 +startChain: + GENESIS_TRANSFORM='.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer = {"params":{"enabled":true,"blocks_per_distribution_transmission":"1000","distribution_transmission_channel":"","provider_fee_pool_addr_str":"","ccv_timeout_period":"2419200s","transfer_timeout_period":"3600s","consumer_redistribution_fraction":"0.75","historical_entries":"10000","unbonding_period":"1728000s","soft_opt_out_threshold":"0.05","reward_denoms":[],"provider_reward_denoms":[]},"provider_client_id":"","provider_channel_id":"","new_chain":true,"provider_client_state":{"chain_id":"provi","trust_level":{"numerator":"1","denominator":"3"},"trusting_period":"1197504s","unbonding_period":"1814400s","max_clock_drift":"10s","frozen_height":{"revision_number":"0","revision_height":"0"},"latest_height":{"revision_number":"0","revision_height":"24"},"proof_specs":[{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":33,"min_prefix_length":4,"max_prefix_length":12,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0},{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":32,"min_prefix_length":1,"max_prefix_length":1,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0}],"upgrade_path":["upgrade","upgradedIBCState"],"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true},"provider_consensus_state":{"timestamp":"2023-07-06T13:41:25.239753303Z","root":{"hash":"dVV8g+F1rOzgI6Qi74lB5TWAQvICRA6VqJWv/8reEqc="},"next_validators_hash":"BBA977975C2E4EAC2961E3DF391D494C187A2B68842383C4E37E81ED78491952"},"maturing_packets":[],"initial_val_set":[{"pub_key":{"ed25519":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"power":"500"},{"pub_key":{"ed25519":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"power":"20"}],"height_to_valset_update_id":[],"outstanding_downtime_slashing":[],"pending_consumer_packets":{"list":[]},"last_transmission_block_height":{"height":"0"},"preCCV":false} +startChain: | .app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer.params.soft_opt_out_threshold = "0.05"' +startChain: + SKIP_GENTX=true +startChain: + TENDERMINT_CONFIG_TRANSFORM='s/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' +startChain: + USE_COMETMOCK=false +startChain: + NODE_LISTEN_ADDR_STR= +startChain: + NODE_HOMES= +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq '. | length' +startChain: + NODES=1 +startChain: + ip link add name virtual-bridge type bridge +startChain: RTNETLINK answers: File exists +startChain: + true +startChain: ++ seq 0 0 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + VAL_IP_SUFFIX=4 +startChain: + NET_NAMESPACE_NAME=consu-alice +startChain: + IP_ADDR=7.7.8.4/24 +startChain: + ip netns add consu-alice +startChain: + ip link add consu-alice-in type veth peer name consu-alice-out +startChain: + ip link set consu-alice-in netns consu-alice +startChain: + ip netns exec consu-alice ip addr add 7.7.8.4/24 dev consu-alice-in +startChain: + ip link set consu-alice-out master virtual-bridge +startChain: + ip link set virtual-bridge up +startChain: ++ seq 0 0 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: + NET_NAMESPACE_NAME=consu-alice +startChain: + ip link set consu-alice-out up +startChain: + ip netns exec consu-alice ip link set dev consu-alice-in up +startChain: + ip netns exec consu-alice ip link set dev lo up +startChain: + BRIDGE_IP=7.7.8.254/24 +startChain: + ip addr add 7.7.8.254/24 dev virtual-bridge +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + FIRST_VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + FIRST_VAL_IP_SUFFIX=4 +startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: + jq -r '.[0].mnemonic' +startChain: + interchain-security-cd init --home /consu/validatoralice --chain-id=consu validatoralice --recover +startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"authz":{"authorization":[]},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"ccvconsumer":{"height_to_valset_update_id":[],"initial_val_set":[],"last_transmission_block_height":{"height":"0"},"maturing_packets":[],"new_chain":false,"outstanding_downtime_slashing":[],"params":{"blocks_per_distribution_transmission":"1000","ccv_timeout_period":"2419200s","consumer_redistribution_fraction":"0.75","distribution_transmission_channel":"","enabled":false,"historical_entries":"10000","provider_fee_pool_addr_str":"","provider_reward_denoms":[],"reward_denoms":[],"soft_opt_out_threshold":"0.05","transfer_timeout_period":"3600s","unbonding_period":"1728000s"},"pending_consumer_packets":{"list":[]},"preCCV":false,"provider_channel_id":"","provider_client_id":"","provider_client_state":null,"provider_consensus_state":null},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"evidence":{"evidence":[]},"feegrant":{"allowances":[]},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"params":null,"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"consu","gentxs_dir":"","moniker":"validatoralice","node_id":"08ae375146db13bd3946d87b1c6f7287f9baf28f"} +startChain: + jq '.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer = {"params":{"enabled":true,"blocks_per_distribution_transmission":"1000","distribution_transmission_channel":"","provider_fee_pool_addr_str":"","ccv_timeout_period":"2419200s","transfer_timeout_period":"3600s","consumer_redistribution_fraction":"0.75","historical_entries":"10000","unbonding_period":"1728000s","soft_opt_out_threshold":"0.05","reward_denoms":[],"provider_reward_denoms":[]},"provider_client_id":"","provider_channel_id":"","new_chain":true,"provider_client_state":{"chain_id":"provi","trust_level":{"numerator":"1","denominator":"3"},"trusting_period":"1197504s","unbonding_period":"1814400s","max_clock_drift":"10s","frozen_height":{"revision_number":"0","revision_height":"0"},"latest_height":{"revision_number":"0","revision_height":"24"},"proof_specs":[{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":33,"min_prefix_length":4,"max_prefix_length":12,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0},{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":32,"min_prefix_length":1,"max_prefix_length":1,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0}],"upgrade_path":["upgrade","upgradedIBCState"],"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true},"provider_consensus_state":{"timestamp":"2023-07-06T13:41:25.239753303Z","root":{"hash":"dVV8g+F1rOzgI6Qi74lB5TWAQvICRA6VqJWv/8reEqc="},"next_validators_hash":"BBA977975C2E4EAC2961E3DF391D494C187A2B68842383C4E37E81ED78491952"},"maturing_packets":[],"initial_val_set":[{"pub_key":{"ed25519":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"power":"500"},{"pub_key":{"ed25519":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"power":"20"}],"height_to_valset_update_id":[],"outstanding_downtime_slashing":[],"pending_consumer_packets":{"list":[]},"last_transmission_block_height":{"height":"0"},"preCCV":false} +startChain: | .app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer.params.soft_opt_out_threshold = "0.05"' /consu/validatoralice/config/genesis.json +startChain: + mv /consu/edited-genesis.json /consu/genesis.json +startChain: ++ seq 0 0 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].start_with_consumer_key' +startChain: + START_WITH_CONSUMER_KEY=true +startChain: + [[ consu != \p\r\o\v\i ]] +startChain: + [[ true = \t\r\u\e ]] +startChain: + interchain-security-cd keys add validatoralice --home /consu/validatoralice --keyring-backend test --recover +startChain: + jq -r '.[0].consumer_mnemonic' +startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: +startChain: + mv /consu/genesis.json /consu/validatoralice/config/genesis.json +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].allocation' +startChain: + ALLOCATION=10000000000stake +startChain: + interchain-security-cd add-genesis-account validatoralice 10000000000stake --home /consu/validatoralice --keyring-backend test +startChain: + mv /consu/validatoralice/config/genesis.json /consu/genesis.json +startChain: ++ seq 0 0 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: + cp /consu/genesis.json /consu/validatoralice/config/genesis.json +startChain: + echo '{"height": "0","round": 0,"step": 0}' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].start_with_consumer_key' +startChain: + START_WITH_CONSUMER_KEY=true +startChain: + [[ consu != \p\r\o\v\i ]] +startChain: + [[ true = \t\r\u\e ]] +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].consumer_priv_validator_key' +startChain: + PRIV_VALIDATOR_KEY='{"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}}' +startChain: + [[ -n {"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}} ]] +startChain: + echo '{"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}}' +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].node_key' +startChain: + NODE_KEY='{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' +startChain: + [[ -n {"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}} ]] +startChain: + echo '{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' +startChain: + '[' true = false ']' +startChain: + '[' 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' '!=' '' ']' +startChain: + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' consu/validatoralice/config/config.toml +startChain: + '[' true = false ']' +startChain: ++ seq 0 0 +startChain: + for i in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + VAL_IP_SUFFIX=4 +startChain: + NET_NAMESPACE_NAME=consu-alice +startChain: + NODE_HOME=/consu/validatoralice +startChain: + GAIA_HOME='--home /consu/validatoralice' +startChain: + NODE_HOMES=/consu/validatoralice, +startChain: + RPC_ADDRESS='--rpc.laddr tcp://7.7.8.4:26658' +startChain: + GRPC_ADDRESS='--grpc.address 7.7.8.4:9091' +startChain: + LISTEN_ADDRESS='--address tcp://7.7.8.4:26655' +startChain: + NODE_LISTEN_ADDR_STR=7.7.8.4:26655, +startChain: + P2P_ADDRESS='--p2p.laddr tcp://7.7.8.4:26656' +startChain: + LOG_LEVEL='--log_level info' +startChain: + ENABLE_WEBGRPC=--grpc-web.enable=false +startChain: + PERSISTENT_PEERS= +startChain: ++ seq 0 0 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: + '[' 0 -ne 0 ']' +startChain: + '[' '' '!=' '' ']' +startChain: + ARGS='--home /consu/validatoralice --address tcp://7.7.8.4:26655 --rpc.laddr tcp://7.7.8.4:26658 --grpc.address 7.7.8.4:9091 --log_level info --p2p.laddr tcp://7.7.8.4:26656 --grpc-web.enable=false ' +startChain: + [[ false == \t\r\u\e ]] +startChain: + SYBIL_NODE_ID=sybil +startChain: + SYBIL_IP_SUFFIX=252 +startChain: + SYBIL_NET_NAMESPACE_NAME=consu-sybil +startChain: + SYBIL_IP_ADDR=7.7.8.252/24 +startChain: + ip netns add consu-sybil +startChain: + ip netns exec consu-alice interchain-security-cd --home /consu/validatoralice --address tcp://7.7.8.4:26655 --rpc.laddr tcp://7.7.8.4:26658 --grpc.address 7.7.8.4:9091 --log_level info --p2p.laddr tcp://7.7.8.4:26656 --grpc-web.enable=false start +startChain: + ip link add consu-sybil-in type veth peer name consu-sybil-out +startChain: + ip link set consu-sybil-in netns consu-sybil +startChain: + ip netns exec consu-sybil ip addr add 7.7.8.252/24 dev consu-sybil-in +startChain: + ip link set consu-sybil-out master virtual-bridge +startChain: + ip link set consu-sybil-out up +startChain: + ip netns exec consu-sybil ip link set dev consu-sybil-in up +startChain: + ip netns exec consu-sybil ip link set dev lo up +startChain: + QUERY_NODE_ID=query +startChain: + QUERY_IP_SUFFIX=253 +startChain: + QUERY_NET_NAMESPACE_NAME=consu-query +startChain: + QUERY_IP_ADDR=7.7.8.253/24 +startChain: + ip netns add consu-query +startChain: + ip link add consu-query-in type veth peer name consu-query-out +startChain: + ip link set consu-query-in netns consu-query +startChain: + ip netns exec consu-query ip addr add 7.7.8.253/24 dev consu-query-in +startChain: + ip link set consu-query-out master virtual-bridge +startChain: + ip link set consu-query-out up +startChain: + ip netns exec consu-query ip link set dev consu-query-in up +startChain: + ip netns exec consu-query ip link set dev lo up +startChain: + interchain-security-cd init --home /consu/query --chain-id=consu query +startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"authz":{"authorization":[]},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"ccvconsumer":{"height_to_valset_update_id":[],"initial_val_set":[],"last_transmission_block_height":{"height":"0"},"maturing_packets":[],"new_chain":false,"outstanding_downtime_slashing":[],"params":{"blocks_per_distribution_transmission":"1000","ccv_timeout_period":"2419200s","consumer_redistribution_fraction":"0.75","distribution_transmission_channel":"","enabled":false,"historical_entries":"10000","provider_fee_pool_addr_str":"","provider_reward_denoms":[],"reward_denoms":[],"soft_opt_out_threshold":"0.05","transfer_timeout_period":"3600s","unbonding_period":"1728000s"},"pending_consumer_packets":{"list":[]},"preCCV":false,"provider_channel_id":"","provider_client_id":"","provider_client_state":null,"provider_consensus_state":null},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"evidence":{"evidence":[]},"feegrant":{"allowances":[]},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"params":null,"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"consu","gentxs_dir":"","moniker":"query","node_id":"377889fb856cf87acca74727a2d8ffee2abd9409"} +startChain: + cp /consu/genesis.json /consu/query/config/genesis.json +startChain: + QUERY_GAIA_HOME='--home /consu/query' +startChain: + QUERY_RPC_ADDRESS='--rpc.laddr tcp://7.7.8.253:26658' +startChain: + QUERY_GRPC_ADDRESS='--grpc.address 7.7.8.253:9091' +startChain: + QUERY_LISTEN_ADDRESS='--address tcp://7.7.8.253:26655' +startChain: + QUERY_P2P_ADDRESS='--p2p.laddr tcp://7.7.8.253:26656' +startChain: + QUERY_LOG_LEVEL='--log_level info' +startChain: + QUERY_ENABLE_WEBGRPC=--grpc-web.enable=false +startChain: + QUERY_PERSISTENT_PEERS= +startChain: ++ seq 0 0 +startChain: + for j in $(seq 0 $(($NODES - 1))) +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].val_id' +startChain: + PEER_VAL_ID=alice +startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' +startChain: ++ jq -r '.[0].ip_suffix' +startChain: + PEER_VAL_IP_SUFFIX=4 +startChain: ++ interchain-security-cd tendermint show-node-id --home /consu/validatoralice +startChain: + NODE_ID=8339e14baab81c2a2350e261962263397a8d7fb0 +startChain: + ADDRESS=8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656 +startChain: + QUERY_PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656 +startChain: + QUERY_PERSISTENT_PEERS='--p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656' +startChain: + ARGS='--home /consu/query --address tcp://7.7.8.253:26655 --rpc.laddr tcp://7.7.8.253:26658 --grpc.address 7.7.8.253:9091 --log_level info --p2p.laddr tcp://7.7.8.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656' +startChain: + [[ false != \t\r\u\e ]] +startChain: + echo 'Node addresses:' +startChain: + echo 7.7.8.4:26655, +startChain: + echo 'Node homes:' +startChain: + echo /consu/validatoralice, +startChain: + NODE_LISTEN_ADDR_STR=7.7.8.4:26655 +startChain: + NODE_HOMES=/consu/validatoralice +startChain: + [[ false == \t\r\u\e ]] +startChain: + [[ false == \t\r\u\e ]] +startChain: + set +e +startChain: Node addresses: +startChain: 7.7.8.4:26655, +startChain: Node homes: +startChain: /consu/validatoralice, +startChain: + ip netns exec consu-query interchain-security-cd --home /consu/query --address tcp://7.7.8.253:26655 --rpc.laddr tcp://7.7.8.253:26658 --grpc.address 7.7.8.253:9091 --log_level info --p2p.laddr tcp://7.7.8.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656 start +startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: Error: post failed: Post "http://7.7.8.253:26658": dial tcp 7.7.8.253:26658: connect: connection refused +startChain: Usage: +startChain: simd query block [height] [flags] +startChain: +startChain: Flags: +startChain: -h, --help help for block +startChain: -n, --node string Node to connect to (default "tcp://localhost:26657") +startChain: +startChain: Global Flags: +startChain: --chain-id string The network chain ID +startChain: --home string directory for config and data (default "/root/.interchain-security-c") +startChain: --log_format string The logging format (json|plain) (default "plain") +startChain: --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info") +startChain: --trace print out full stack trace on errors +startChain: +startChain: + sleep 0.3 +startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + sleep 0.3 +startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + sleep 0.3 +startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: + sleep 0.3 +startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 +startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": +startChain: ""}},"block":null}' +startChain: done!!!!!!!! +Add to hermes alice +exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty +running misbehaviour: step 6 == addIbcConnectionAction +addIbcConnection: 2023-07-06T13:41:33.651990Z INFO ThreadId(01) using default configuration from '/root/.hermes/config.toml' +addIbcConnection: 2023-07-06T13:41:33.652224Z INFO ThreadId(01) running Hermes v1.4.0+7e5bdd2c +addIbcConnection: 2023-07-06T13:41:33.673137Z INFO ThreadId(01) Creating a new connection with pre-existing clients 07-tendermint-0 and 07-tendermint-0 +addIbcConnection: 2023-07-06T13:41:33.674718Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: UNINITIALIZED, UNINITIALIZED +addIbcConnection: 2023-07-06T13:41:33.682110Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}: sending 1 messages as 1 batches to chain consu in parallel +addIbcConnection: 2023-07-06T13:41:33.682142Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIbcConnection: 2023-07-06T13:41:33.687746Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}:estimate_gas: tx simulation successful, gas amount used: 64850 +addIbcConnection: 2023-07-06T13:41:33.687779Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: send_tx: using 64850 gas, fee Fee { amount: "0stake", gas_limit: 71335 } id=consu +addIbcConnection: 2023-07-06T13:41:33.697971Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: gas estimation succeeded +addIbcConnection: 2023-07-06T13:41:33.697990Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(9EC204029FE95E4401C7F0C76B214CBE221EC0E348C63575329871E4E089F0C7) } account.sequence.old=0 account.sequence.new=1 +addIbcConnection: 2023-07-06T13:41:33.698402Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) 9EC204029FE95E4401C7F0C76B214CBE221EC0E348C63575329871E4E089F0C7 +addIbcConnection: 2023-07-06T13:41:34.604085Z INFO ThreadId(01) 🥂 consu => OpenInitConnection(OpenInit { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: None, counterparty_client_id: 07-tendermint-0 } }) at height 0-3 +addIbcConnection: 2023-07-06T13:41:37.605836Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: INIT, UNINITIALIZED +addIbcConnection: 2023-07-06T13:41:37.617177Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-35}:foreign_client.build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-35}: building a MsgUpdateAnyClient from trusted height 0-24 to target height 0-35 +addIbcConnection: 2023-07-06T13:41:37.617653Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}: sending 1 messages as 1 batches to chain consu in parallel +addIbcConnection: 2023-07-06T13:41:37.617670Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIbcConnection: 2023-07-06T13:41:37.620190Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}:estimate_gas: tx simulation successful, gas amount used: 90567 +addIbcConnection: 2023-07-06T13:41:37.620218Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: send_tx: using 90567 gas, fee Fee { amount: "0stake", gas_limit: 99623 } id=consu +addIbcConnection: 2023-07-06T13:41:37.621620Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: gas estimation succeeded +addIbcConnection: 2023-07-06T13:41:37.621635Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(74509CD276025408AD15BFE5EB5BB74E40CF90BDA872E3317B2A280A8086DD0A) } account.sequence.old=1 account.sequence.new=2 +addIbcConnection: 2023-07-06T13:41:37.621669Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) 74509CD276025408AD15BFE5EB5BB74E40CF90BDA872E3317B2A280A8086DD0A +addIbcConnection: 2023-07-06T13:41:39.566356Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-8}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-8}: building a MsgUpdateAnyClient from trusted height 0-1 to target height 0-8 +addIbcConnection: 2023-07-06T13:41:39.569629Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}: sending 2 messages as 1 batches to chain provi in parallel +addIbcConnection: 2023-07-06T13:41:39.569653Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIbcConnection: 2023-07-06T13:41:39.573097Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}:estimate_gas: tx simulation successful, gas amount used: 145023 +addIbcConnection: 2023-07-06T13:41:39.573117Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: send_tx: using 145023 gas, fee Fee { amount: "0stake", gas_limit: 159525 } id=provi +addIbcConnection: 2023-07-06T13:41:39.575214Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: gas estimation succeeded +addIbcConnection: 2023-07-06T13:41:39.575232Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(E8BA3F162F915E5AD46FEEC74A590485D86C1A1894D0A4BA359A103A578CC39A) } account.sequence.old=4 account.sequence.new=5 +addIbcConnection: 2023-07-06T13:41:39.575250Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) E8BA3F162F915E5AD46FEEC74A590485D86C1A1894D0A4BA359A103A578CC39A +addIbcConnection: 2023-07-06T13:41:40.784731Z INFO ThreadId(01) 🥂 provi => OpenTryConnection(OpenTry { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-0 } }) at height 0-38 +addIbcConnection: 2023-07-06T13:41:43.788504Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: INIT, TRYOPEN +addIbcConnection: 2023-07-06T13:41:43.803088Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-12}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-12}: building a MsgUpdateAnyClient from trusted height 0-8 to target height 0-12 +addIbcConnection: 2023-07-06T13:41:43.803748Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}: sending 1 messages as 1 batches to chain provi in parallel +addIbcConnection: 2023-07-06T13:41:43.803768Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIbcConnection: 2023-07-06T13:41:43.806064Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}:estimate_gas: tx simulation successful, gas amount used: 89528 +addIbcConnection: 2023-07-06T13:41:43.806098Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: send_tx: using 89528 gas, fee Fee { amount: "0stake", gas_limit: 98480 } id=provi +addIbcConnection: 2023-07-06T13:41:43.807899Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: gas estimation succeeded +addIbcConnection: 2023-07-06T13:41:43.807927Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(EA9E9ACDC04C5B01D1FB896F0F890654A638E0B941A5158A10E8875CE77652F2) } account.sequence.old=5 account.sequence.new=6 +addIbcConnection: 2023-07-06T13:41:43.807958Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) EA9E9ACDC04C5B01D1FB896F0F890654A638E0B941A5158A10E8875CE77652F2 +addIbcConnection: 2023-07-06T13:41:45.847364Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-43}:foreign_client.build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-43}: building a MsgUpdateAnyClient from trusted height 0-35 to target height 0-43 +addIbcConnection: 2023-07-06T13:41:45.849127Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 +addIbcConnection: 2023-07-06T13:41:46.351889Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 +addIbcConnection: 2023-07-06T13:41:46.854377Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 +addIbcConnection: 2023-07-06T13:41:47.357350Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 +addIbcConnection: 2023-07-06T13:41:47.858783Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 +addIbcConnection: 2023-07-06T13:41:48.361092Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 +addIbcConnection: 2023-07-06T13:41:48.864586Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}: sending 2 messages as 1 batches to chain consu in parallel +addIbcConnection: 2023-07-06T13:41:48.864751Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIbcConnection: 2023-07-06T13:41:48.869116Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}:estimate_gas: tx simulation successful, gas amount used: 136553 +addIbcConnection: 2023-07-06T13:41:48.869258Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: send_tx: using 136553 gas, fee Fee { amount: "0stake", gas_limit: 150208 } id=consu +addIbcConnection: 2023-07-06T13:41:48.872435Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: gas estimation succeeded +addIbcConnection: 2023-07-06T13:41:48.872457Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(BC11B3B03639E601B8BCEA4E435FB7C2738A66FFAE084B86901F4C08CE7A3088) } account.sequence.old=2 account.sequence.new=3 +addIbcConnection: 2023-07-06T13:41:48.872490Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) BC11B3B03639E601B8BCEA4E435FB7C2738A66FFAE084B86901F4C08CE7A3088 +addIbcConnection: 2023-07-06T13:41:49.782925Z INFO ThreadId(01) 🥂 consu => OpenAckConnection(OpenAck { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-0 } }) at height 0-14 +addIbcConnection: 2023-07-06T13:41:52.788392Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: OPEN, TRYOPEN +addIbcConnection: 2023-07-06T13:41:52.906982Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-17}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-17}: building a MsgUpdateAnyClient from trusted height 0-12 to target height 0-17 +addIbcConnection: 2023-07-06T13:41:52.908074Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}: sending 2 messages as 1 batches to chain provi in parallel +addIbcConnection: 2023-07-06T13:41:52.908099Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIbcConnection: 2023-07-06T13:41:52.910991Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}:estimate_gas: tx simulation successful, gas amount used: 107744 +addIbcConnection: 2023-07-06T13:41:52.911015Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: send_tx: using 107744 gas, fee Fee { amount: "0stake", gas_limit: 118518 } id=provi +addIbcConnection: 2023-07-06T13:41:52.912787Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: gas estimation succeeded +addIbcConnection: 2023-07-06T13:41:52.912816Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(19E113EC6AC82948F02EDA44129BC048E0A47162E5067D1943846AAF50A42614) } account.sequence.old=6 account.sequence.new=7 +addIbcConnection: 2023-07-06T13:41:52.912837Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) 19E113EC6AC82948F02EDA44129BC048E0A47162E5067D1943846AAF50A42614 +addIbcConnection: 2023-07-06T13:41:54.425339Z INFO ThreadId(01) 🥂 provi => OpenConfirmConnection(OpenConfirm { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-0 } }) at height 0-51 +addIbcConnection: SUCCESS Connection { +addIbcConnection: delay_period: 0ns, +addIbcConnection: a_side: ConnectionSide { +addIbcConnection: chain: BaseChainHandle { +addIbcConnection: chain_id: ChainId { +addIbcConnection: id: "consu", +addIbcConnection: version: 0, +addIbcConnection: }, +addIbcConnection: runtime_sender: Sender { .. }, +addIbcConnection: }, +addIbcConnection: client_id: ClientId( +addIbcConnection: "07-tendermint-0", +addIbcConnection: ), +addIbcConnection: connection_id: Some( +addIbcConnection: ConnectionId( +addIbcConnection: "connection-0", +addIbcConnection: ), +addIbcConnection: ), +addIbcConnection: }, +addIbcConnection: 2023-07-06T13:41:57.429980Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: OPEN, OPEN +addIbcConnection: 2023-07-06T13:41:57.430033Z INFO ThreadId(01) connection handshake already finished for Connection { delay_period: 0ns, a_side: ConnectionSide { chain: BaseChainHandle { chain_id: consu }, client_id: 07-tendermint-0, connection_id: connection-0 }, b_side: ConnectionSide { chain: BaseChainHandle { chain_id: provi }, client_id: 07-tendermint-0, connection_id: connection-0 } } +addIbcConnection: b_side: ConnectionSide { +addIbcConnection: chain: BaseChainHandle { +addIbcConnection: chain_id: ChainId { +addIbcConnection: id: "provi", +addIbcConnection: version: 0, +addIbcConnection: }, +addIbcConnection: runtime_sender: Sender { .. }, +addIbcConnection: }, +addIbcConnection: client_id: ClientId( +addIbcConnection: "07-tendermint-0", +addIbcConnection: ), +addIbcConnection: connection_id: Some( +addIbcConnection: ConnectionId( +addIbcConnection: "connection-0", +addIbcConnection: ), +addIbcConnection: ), +addIbcConnection: }, +addIbcConnection: } +running misbehaviour: step 7 == addIbcChannelAction +addIbcChannel cmd: /usr/local/bin/docker exec interchain-security-instance hermes create channel --a-chain consu --a-connection connection-0 --a-port consumer --b-port provider --channel-version 1 --order ordered +addIBCChannel: 2023-07-06T13:41:57.547830Z INFO ThreadId(01) using default configuration from '/root/.hermes/config.toml' +addIBCChannel: 2023-07-06T13:41:57.548081Z INFO ThreadId(01) running Hermes v1.4.0+7e5bdd2c +addIBCChannel: 2023-07-06T13:41:57.555837Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: UNINITIALIZED, UNINITIALIZED +addIBCChannel: 2023-07-06T13:41:57.558015Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}: sending 1 messages as 1 batches to chain consu in parallel +addIBCChannel: 2023-07-06T13:41:57.558033Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIBCChannel: 2023-07-06T13:41:57.559559Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}:estimate_gas: tx simulation successful, gas amount used: 105716 +addIBCChannel: 2023-07-06T13:41:57.559585Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: send_tx: using 105716 gas, fee Fee { amount: "0stake", gas_limit: 116287 } id=consu +addIBCChannel: 2023-07-06T13:41:57.560421Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: gas estimation succeeded +addIBCChannel: 2023-07-06T13:41:57.560456Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(D292C3B02B20817864D17E714B857671429E40C903B1A138BFFE01FA9DC36481) } account.sequence.old=3 account.sequence.new=4 +addIBCChannel: 2023-07-06T13:41:57.560603Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) D292C3B02B20817864D17E714B857671429E40C903B1A138BFFE01FA9DC36481 +addIBCChannel: 2023-07-06T13:41:58.766853Z INFO ThreadId(01) 🎊 consu => OpenInitChannel(OpenInit { port_id: consumer, channel_id: channel-0, connection_id: None, counterparty_port_id: provider, counterparty_channel_id: None }) at height 0-23 +addIBCChannel: 2023-07-06T13:42:01.768412Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: INIT, UNINITIALIZED +addIBCChannel: 2023-07-06T13:42:01.992553Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-26}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-26}: building a MsgUpdateAnyClient from trusted height 0-17 to target height 0-26 +addIBCChannel: 2023-07-06T13:42:01.995379Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}: sending 2 messages as 1 batches to chain provi in parallel +addIBCChannel: 2023-07-06T13:42:01.995414Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIBCChannel: 2023-07-06T13:42:01.998257Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}:estimate_gas: tx simulation successful, gas amount used: 178082 +addIBCChannel: 2023-07-06T13:42:01.998390Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: send_tx: using 178082 gas, fee Fee { amount: "0stake", gas_limit: 195890 } id=provi +addIBCChannel: 2023-07-06T13:42:02.000446Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: gas estimation succeeded +addIBCChannel: 2023-07-06T13:42:02.000519Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(FBECF31CD695F9309D5B2873D99952012B57A09E319F58DDA24EEB1C3CBB708B) } account.sequence.old=7 account.sequence.new=8 +addIBCChannel: 2023-07-06T13:42:02.000567Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) FBECF31CD695F9309D5B2873D99952012B57A09E319F58DDA24EEB1C3CBB708B +addIBCChannel: 2023-07-06T13:42:03.208124Z INFO ThreadId(01) 🎊 provi => OpenTryChannel(OpenTry { port_id: provider, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: consumer, counterparty_channel_id: channel-0 }) at height 0-60 +addIBCChannel: 2023-07-06T13:42:06.211700Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: INIT, TRYOPEN +addIBCChannel: 2023-07-06T13:42:07.155628Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-64}:foreign_client.build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-64}: building a MsgUpdateAnyClient from trusted height 0-43 to target height 0-64 +addIBCChannel: 2023-07-06T13:42:07.156874Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}: sending 2 messages as 1 batches to chain consu in parallel +addIBCChannel: 2023-07-06T13:42:07.156904Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIBCChannel: 2023-07-06T13:42:07.162517Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}:estimate_gas: tx simulation successful, gas amount used: 191360 +addIBCChannel: 2023-07-06T13:42:07.162556Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: send_tx: using 191360 gas, fee Fee { amount: "0stake", gas_limit: 210496 } id=consu +addIBCChannel: 2023-07-06T13:42:07.164845Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: gas estimation succeeded +addIBCChannel: 2023-07-06T13:42:07.164886Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(23718DD074BC636CFB0241A6AF6596CBD307001ED137545BB1358175D170A1EB) } account.sequence.old=4 account.sequence.new=5 +addIBCChannel: 2023-07-06T13:42:07.164925Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) 23718DD074BC636CFB0241A6AF6596CBD307001ED137545BB1358175D170A1EB +addIBCChannel: 2023-07-06T13:42:08.070971Z INFO ThreadId(01) 🎊 consu => OpenAckChannel(OpenAck { port_id: consumer, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: provider, counterparty_channel_id: channel-0 }) at height 0-32 +addIBCChannel: 2023-07-06T13:42:11.075915Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: OPEN, TRYOPEN +addIBCChannel: 2023-07-06T13:42:11.916333Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-36}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-36}: building a MsgUpdateAnyClient from trusted height 0-26 to target height 0-36 +addIBCChannel: 2023-07-06T13:42:11.917179Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}: sending 2 messages as 1 batches to chain provi in parallel +addIBCChannel: 2023-07-06T13:42:11.917200Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } +addIBCChannel: 2023-07-06T13:42:11.919198Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}:estimate_gas: tx simulation successful, gas amount used: 130497 +addIBCChannel: 2023-07-06T13:42:11.919309Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: send_tx: using 130497 gas, fee Fee { amount: "0stake", gas_limit: 143546 } id=provi +addIBCChannel: 2023-07-06T13:42:11.920857Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: gas estimation succeeded +addIBCChannel: 2023-07-06T13:42:11.920873Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(3EDF18EF3501459702FD77A210F897DA50CE5C1330D1924EDF9E68FB51C83560) } account.sequence.old=8 account.sequence.new=9 +addIBCChannel: 2023-07-06T13:42:11.920893Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) 3EDF18EF3501459702FD77A210F897DA50CE5C1330D1924EDF9E68FB51C83560 +addIBCChannel: 2023-07-06T13:42:12.525147Z INFO ThreadId(01) 🎊 provi => OpenConfirmChannel(OpenConfirm { port_id: provider, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: consumer, counterparty_channel_id: channel-0 }) at height 0-69 +addIBCChannel: 2023-07-06T13:42:15.528560Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: OPEN, OPEN +addIBCChannel: 2023-07-06T13:42:15.528613Z INFO ThreadId(01) channel handshake already finished for Channel { ordering: ORDER_ORDERED, a_side: ChannelSide { chain: BaseChainHandle { chain_id: consu }, client_id: 07-tendermint-0, connection_id: connection-0, port_id: consumer, channel_id: channel-0, version: 1 }, b_side: ChannelSide { chain: BaseChainHandle { chain_id: provi }, client_id: 07-tendermint-0, connection_id: connection-0, port_id: provider, channel_id: channel-0, version: 1 }, connection_delay: 0ns } +addIBCChannel: SUCCESS Channel { +addIBCChannel: ordering: Ordered, +addIBCChannel: a_side: ChannelSide { +addIBCChannel: chain: BaseChainHandle { +addIBCChannel: chain_id: ChainId { +addIBCChannel: id: "consu", +addIBCChannel: version: 0, +addIBCChannel: }, +addIBCChannel: runtime_sender: Sender { .. }, +addIBCChannel: }, +addIBCChannel: client_id: ClientId( +addIBCChannel: "07-tendermint-0", +addIBCChannel: ), +addIBCChannel: connection_id: ConnectionId( +addIBCChannel: "connection-0", +addIBCChannel: ), +addIBCChannel: port_id: PortId( +addIBCChannel: "consumer", +addIBCChannel: ), +addIBCChannel: channel_id: Some( +addIBCChannel: ChannelId( +addIBCChannel: "channel-0", +addIBCChannel: ), +addIBCChannel: ), +addIBCChannel: version: Some( +addIBCChannel: Version( +addIBCChannel: "1", +addIBCChannel: ), +addIBCChannel: ), +addIBCChannel: }, +addIBCChannel: b_side: ChannelSide { +addIBCChannel: chain: BaseChainHandle { +addIBCChannel: chain_id: ChainId { +addIBCChannel: id: "provi", +addIBCChannel: version: 0, +addIBCChannel: }, +addIBCChannel: runtime_sender: Sender { .. }, +addIBCChannel: }, +addIBCChannel: client_id: ClientId( +addIBCChannel: "07-tendermint-0", +addIBCChannel: ), +addIBCChannel: connection_id: ConnectionId( +addIBCChannel: "connection-0", +addIBCChannel: ), +addIBCChannel: port_id: PortId( +addIBCChannel: "provider", +addIBCChannel: ), +addIBCChannel: channel_id: Some( +addIBCChannel: ChannelId( +addIBCChannel: "channel-0", +addIBCChannel: ), +addIBCChannel: ), +addIBCChannel: version: Some( +addIBCChannel: Version( +addIBCChannel: "1", +addIBCChannel: ), +addIBCChannel: ), +addIBCChannel: }, +addIBCChannel: connection_delay: 0ns, +addIBCChannel: } +running misbehaviour: step 8 == delegateTokensAction +delegate cmd: /usr/local/bin/docker exec interchain-security-instance interchain-security-pd tx staking delegate cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng 11000000stake --from validatoralice --chain-id provi --home /provi/validatoralice --node tcp://7.7.7.4:26658 --keyring-backend test -b block -y +running misbehaviour: step 9 == relayPacketsAction +running misbehaviour: step 10 == forkConsumerChainAction +forkConsumerChain - reconfigure node cmd: /usr/local/bin/docker exec interchain-security-instance /bin/bash /testnet-scripts/fork-consumer.sh interchain-security-cd alice consu 7.7.8 7.7.7 pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear /root/.hermes/config_fork.toml +fork consumer validator : + BIN=interchain-security-cd +fork consumer validator : + VAL_ID=alice +fork consumer validator : + CHAIN_ID=consu +fork consumer validator : + CONS_CHAIN_PREFIX=7.7.8 +fork consumer validator : + PROV_CHAIN_PREFIX=7.7.7 +fork consumer validator : + VAL_MNEMONIC='pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear' +fork consumer validator : + FORK_HERMES_CONFIG=/root/.hermes/config_fork.toml +fork consumer validator : + FORK_NODE_DIR=/consu/validatorfork +fork consumer validator : + mkdir /consu/validatorfork +fork consumer validator : + cp -r /consu/validatoralice/config /consu/validatoralice/data /consu/validatoralice/keyring-test /consu/validatoralice/logs /consu/validatorfork +fork consumer validator : + rm -f /consu/validatorfork/addrbook.json +fork consumer validator : + tee /root/.hermes/config_fork.toml +fork consumer validator : [global] +fork consumer validator : log_level = "debug" +fork consumer validator : +fork consumer validator : [mode] +fork consumer validator : +fork consumer validator : [mode.clients] +fork consumer validator : enabled = true +fork consumer validator : refresh = true +fork consumer validator : misbehaviour = true +fork consumer validator : +fork consumer validator : [mode.connections] +fork consumer validator : enabled = false +fork consumer validator : +fork consumer validator : [mode.channels] +fork consumer validator : enabled = false +fork consumer validator : +fork consumer validator : [mode.packets] +fork consumer validator : enabled = true +fork consumer validator : +fork consumer validator : [[chains]] +fork consumer validator : id = "consu" +fork consumer validator : ccv_consumer_chain = true +fork consumer validator : account_prefix = "cosmos" +fork consumer validator : clock_drift = "5s" +fork consumer validator : gas_multiplier = 1.1 +fork consumer validator : grpc_addr = "tcp://7.7.8.252:9091" +fork consumer validator : key_name = "query" +fork consumer validator : max_gas = 2000000 +fork consumer validator : rpc_addr = "http://7.7.8.252:26658" +fork consumer validator : rpc_timeout = "10s" +fork consumer validator : store_prefix = "ibc" +fork consumer validator : trusting_period = "2days" +fork consumer validator : websocket_addr = "ws://7.7.8.252:26658/websocket" +fork consumer validator : +fork consumer validator : [chains.gas_price] +fork consumer validator : denom = "stake" +fork consumer validator : price = 0.00 +fork consumer validator : +fork consumer validator : [chains.trust_threshold] +fork consumer validator : denominator = "3" +fork consumer validator : numerator = "1" +fork consumer validator : +fork consumer validator : [[chains]] +fork consumer validator : id = "provi" +fork consumer validator : account_prefix = "cosmos" +fork consumer validator : clock_drift = "5s" +fork consumer validator : gas_multiplier = 1.1 +fork consumer validator : grpc_addr = "tcp://7.7.7.4:9091" +fork consumer validator : key_name = "query" +fork consumer validator : max_gas = 2000000 +fork consumer validator : rpc_addr = "http://7.7.7.4:26658" +fork consumer validator : rpc_timeout = "10s" +fork consumer validator : store_prefix = "ibc" +fork consumer validator : trusting_period = "2days" +fork consumer validator : websocket_addr = "ws://7.7.7.4:26658/websocket" +fork consumer validator : +fork consumer validator : [chains.gas_price] +fork consumer validator : denom = "stake" +fork consumer validator : price = 0.00 +fork consumer validator : +fork consumer validator : [chains.trust_threshold] +fork consumer validator : denominator = "3" +fork consumer validator : numerator = "1" +fork consumer validator : + echo pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear +fork consumer validator : + ip netns exec consu-sybil interchain-security-cd --home /consu/validatorfork --address tcp://7.7.8.252:26655 --rpc.laddr tcp://7.7.8.252:26658 --grpc.address 7.7.8.252:9091 --log_level info --p2p.laddr tcp://7.7.8.252:26656 --grpc-web.enable=false start +running misbehaviour: step 11 == startRelayerAction +started Hermes +running misbehaviour: step 12 == updateLightClientAction +=============== finished misbehaviour tests in 1m40.817256s =============== +=============== tearing down misbehaviour testRun =============== +TOTAL TIME ELAPSED: 2m28.504412625s diff --git a/tests/e2e/testnet-scripts/fork-consumer.sh b/tests/e2e/testnet-scripts/fork-consumer.sh index a08872a303..0bf96fcb79 100644 --- a/tests/e2e/testnet-scripts/fork-consumer.sh +++ b/tests/e2e/testnet-scripts/fork-consumer.sh @@ -99,18 +99,8 @@ EOF echo $VAL_MNEMONIC > mnemonic.txt -# Connecting new peers to Hermes relayer requires somehow to add the account keys again -# hermes keys add --mnemonic-file mnemonic.txt --chain consu --overwrite - -# sleep 1 - -hermes keys add --mnemonic-file mnemonic.txt --chain provi --overwrite - -sleep 1 - - -# Start validator forking the consumer chain by -# reuse the consumer sybil IP allocation +# Start the validator forking the consumer chain +# using the sybil IP allocation ip netns exec $CHAIN_ID-sybil $BIN \ --home $FORK_NODE_DIR \ --address tcp://$CONS_CHAIN_PREFIX.252:26655 \ From e79af1ebbd4f2a4d5460183020b31a8782c0abe6 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 6 Jul 2023 15:45:24 +0200 Subject: [PATCH 05/29] remove log file --- output.log | 1215 ---------------------------------------------------- 1 file changed, 1215 deletions(-) delete mode 100644 output.log diff --git a/output.log b/output.log deleted file mode 100644 index a6fcfee86e..0000000000 --- a/output.log +++ /dev/null @@ -1,1215 +0,0 @@ -=============== building misbehaviour testRun =============== -startDocker: + CONTAINER_NAME=interchain-security-container -startDocker: + INSTANCE_NAME=interchain-security-instance -startDocker: + LOCAL_SDK_PATH=default -startDocker: + USE_GAIA_PROVIDER=false -startDocker: + USE_GAIA_TAG= -startDocker: + set +e -startDocker: + docker rm -f interchain-security-instance -startDocker: Error: No such container: interchain-security-instance -startDocker: + set -e -startDocker: + '[' -d ./cosmos-sdk ']' -startDocker: + [[ default != \d\e\f\a\u\l\t ]] -startDocker: + printf '\n\nUsing default sdk version\n\n\n' -startDocker: -startDocker: -startDocker: Using default sdk version -startDocker: -startDocker: -startDocker: + [[ false = \t\r\u\e ]] -startDocker: + printf '\n\nUsing ICS provider app as provider\n\n\n' -startDocker: -startDocker: -startDocker: Using ICS provider app as provider -startDocker: -startDocker: -startDocker: + docker build -f Dockerfile -t interchain-security-container . -startDocker: #1 [internal] load build definition from Dockerfile -startDocker: #1 sha256:604789e44fdefbf6a2dd97add254061623de5e810ef734b454eaad26b1b17035 -startDocker: #1 transferring dockerfile: 37B done -startDocker: #1 DONE 0.0s -startDocker: -startDocker: #2 [internal] load .dockerignore -startDocker: #2 sha256:a6a91216b943fbd1ec8d7a2718cffa89481ad20be8a239282297ba938665353d -startDocker: #2 transferring context: 2B done -startDocker: #2 DONE 0.0s -startDocker: -startDocker: #3 resolve image config for docker.io/docker/dockerfile:1 -startDocker: #3 sha256:5511bf222770ecb09bae16a5e9dc6ddaf6633b05719203c5e2b00644727cd62f -startDocker: #3 ... -startDocker: -startDocker: #4 [auth] docker/dockerfile:pull token for registry-1.docker.io -startDocker: #4 sha256:2d344823d8ee21eef1762bba24fd226d4bf4f3da25259e99ac9eb49d6e3e83ab -startDocker: #4 DONE 0.0s -startDocker: -startDocker: #3 resolve image config for docker.io/docker/dockerfile:1 -startDocker: #3 sha256:5511bf222770ecb09bae16a5e9dc6ddaf6633b05719203c5e2b00644727cd62f -startDocker: #3 DONE 1.3s -startDocker: -startDocker: #5 docker-image://docker.io/docker/dockerfile:1@sha256:39b85bbfa7536a5feceb7372a0817649ecb2724562a38360f4d6a7782a409b14 -startDocker: #5 sha256:9a158a4603558c8d1260a1837f34e5dcdc934c3e44e35af38132f4449f9ebf12 -startDocker: #5 CACHED -startDocker: -startDocker: #6 [internal] load build definition from Dockerfile -startDocker: #6 sha256:a63b93256cb6ed954f95b300797b968540e3f4a5ff2167243929fb5ab9ef1688 -startDocker: #6 DONE 0.0s -startDocker: -startDocker: #7 [internal] load .dockerignore -startDocker: #7 sha256:19eb6aa0ebe549a586fa466b986b6bdf048ead2e77f288d0357fc7acbd7f8ef6 -startDocker: #7 DONE 0.0s -startDocker: -startDocker: #12 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas -startDocker: #12 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 -startDocker: #12 ... -startDocker: -startDocker: #13 [auth] library/fedora:pull token for registry-1.docker.io -startDocker: #13 sha256:345423550f620a41155d9d62c5c908c31000562442585e89f3321fdbe93332c3 -startDocker: #13 DONE 0.0s -startDocker: -startDocker: #11 [internal] load metadata for docker.io/library/golang:1.19-alpine -startDocker: #11 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 -startDocker: #11 ... -startDocker: -startDocker: #14 [auth] library/golang:pull token for registry-1.docker.io -startDocker: #14 sha256:75bbb50a63355318c3918a33c2d87b1de50da14e632c4735ca9c59b663095b6a -startDocker: #14 DONE 0.0s -startDocker: -startDocker: #15 [auth] otacrew/hermes-ics:pull token for registry-1.docker.io -startDocker: #15 sha256:803bb594f550c4774b41e0d6fc8ffd77bb355ec62871833ff945f6a44be67739 -startDocker: #15 DONE 0.0s -startDocker: -startDocker: #16 [auth] informalofftermatt/gorelayer:pull token for registry-1.docker.io -startDocker: #16 sha256:e7abcff988820d001e3df0bdd1d70b33bfd259e435e33d3b39c73d09a3d055c8 -startDocker: #16 DONE 0.0s -startDocker: -startDocker: #17 [auth] informalofftermatt/cometmock:pull token for registry-1.docker.io -startDocker: #17 sha256:cde7de5d11268f14fcf526aa5378d79b5ae6424beb3382ef94ba73eda3fa3461 -startDocker: #17 DONE 0.0s -startDocker: -startDocker: #10 [internal] load metadata for docker.io/otacrew/hermes-ics:latest -startDocker: #10 sha256:1619a8f499c95bd5af09b73b1d3a2ab9c6d7d6780852f9a079269b6c182f3235 -startDocker: #10 ... -startDocker: -startDocker: #8 [internal] load metadata for docker.io/library/fedora:36 -startDocker: #8 sha256:73cd5a5ed47fc791d26860a9f6452dd61c51470638f517e9fa5cdca15792d916 -startDocker: #8 DONE 1.5s -startDocker: -startDocker: #9 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest -startDocker: #9 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b -startDocker: #9 ... -startDocker: -startDocker: #11 [internal] load metadata for docker.io/library/golang:1.19-alpine -startDocker: #11 sha256:db341117c17817e8ff2360c3624eceaf927c5431ea3a1010182351ebafcce418 -startDocker: #11 DONE 1.9s -startDocker: -startDocker: #12 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas -startDocker: #12 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 -startDocker: #12 ... -startDocker: -startDocker: #10 [internal] load metadata for docker.io/otacrew/hermes-ics:latest -startDocker: #10 sha256:1619a8f499c95bd5af09b73b1d3a2ab9c6d7d6780852f9a079269b6c182f3235 -startDocker: #10 DONE 2.1s -startDocker: -startDocker: #12 [internal] load metadata for docker.io/informalofftermatt/gorelayer:nogas -startDocker: #12 sha256:30a212e25818399fd4de4628ba986abb3f9acfd2726260309d56d93987463b56 -startDocker: #12 DONE 2.2s -startDocker: -startDocker: #9 [internal] load metadata for docker.io/informalofftermatt/cometmock:latest -startDocker: #9 sha256:a32af4bf747a6e3115819b8c6d8c80abeeab270d805016bddd63d8f85c61be0b -startDocker: #9 DONE 2.2s -startDocker: -startDocker: #27 [is-builder 1/10] FROM docker.io/library/golang:1.19-alpine@sha256:470c8d0638c5b7007a6118baee531c30e0516a18e45b35bff1f8ab92cf8f896d -startDocker: #27 sha256:5223bfcab5806439b55371a6102f93203b8b4171a586251c641310088838642c -startDocker: #27 DONE 0.0s -startDocker: -startDocker: #21 [hermes-builder 1/1] FROM docker.io/otacrew/hermes-ics:latest@sha256:36806114ec58b4dca2173974f09d73cd4b9ff02d81ba882f6f152cba02bae139 -startDocker: #21 sha256:a9171665a53c60610d8881bfbfc46df6ba80ba890eb5fd04bd66c9cb7ae6622e -startDocker: #21 DONE 0.0s -startDocker: -startDocker: #25 [gorelayer-builder 1/1] FROM docker.io/informalofftermatt/gorelayer:nogas@sha256:07c8ccd57ade48a407be6e2f503e5f12bf6f5c61e8deafd402ff8c15b04ab8a1 -startDocker: #25 sha256:8a76aed9c101ebff920e322f3580b0413fc7630dafbf47400ab561109204de5c -startDocker: #25 DONE 0.0s -startDocker: -startDocker: #18 [stage-4 1/12] FROM docker.io/library/fedora:36@sha256:64cd00a0e2b92d527c0a0954162a73e85f160e3a53c38325b51e87d6aab4e266 -startDocker: #18 sha256:5031400c012ded166194f592f4fbbc517b0a7051caa9252048f537694d4110e9 -startDocker: #18 DONE 0.0s -startDocker: -startDocker: #23 [cometmock-builder 1/1] FROM docker.io/informalofftermatt/cometmock:latest@sha256:c8f54f54b14fda1ffa737fb6ab02fe3b8423cfc308f99bdace7539f920a14682 -startDocker: #23 sha256:5b578f98ce1950c9b6ae50ca290be9f6ee3a5b7249a23285ac729337998afa36 -startDocker: #23 DONE 0.0s -startDocker: -startDocker: #29 [internal] load build context -startDocker: #29 sha256:e24e809151049144d7746f068858d6bd02e1b9ab87aa76ec9891180df317089e -startDocker: #29 transferring context: 6.72MB 0.7s done -startDocker: #29 DONE 0.8s -startDocker: -startDocker: #28 [is-builder 2/10] RUN apk add --no-cache curl make git libc-dev bash gcc linux-headers -startDocker: #28 sha256:fc221a60c9fdcdff81c09910439fb67a92187557122616a1e063d42019cb7b7a -startDocker: #28 CACHED -startDocker: -startDocker: #30 [is-builder 3/10] COPY go.mod /go.mod -startDocker: #30 sha256:81221ca3eaedec795bc8e82f11d4b3fe4d8c08a7330c61d62ff0b9574def631e -startDocker: #30 CACHED -startDocker: -startDocker: #31 [is-builder 4/10] COPY go.sum /go.sum -startDocker: #31 sha256:eb2c409650fb516a2d904aaf777a75be1bd7c44176cd2f08c16c80029193fabf -startDocker: #31 CACHED -startDocker: -startDocker: #32 [is-builder 5/10] RUN go mod download -startDocker: #32 sha256:aa181ddcc677349350511fbc343e4f7c038625d951fd72125ed98d7037340118 -startDocker: #32 CACHED -startDocker: -startDocker: #33 [is-builder 6/10] ADD . /interchain-security -startDocker: #33 sha256:7f74c20ebdf2b3a21ad65b325af107c303810e0d52cb05519ce96d36c2123db0 -startDocker: #33 DONE 5.2s -startDocker: -startDocker: #34 [is-builder 7/10] WORKDIR /interchain-security -startDocker: #34 sha256:bc2b67e8c61a62aa224034431cc91ef875819fb0f1ef58a6576b5f5250fb4d8d -startDocker: #34 DONE 0.1s -startDocker: -startDocker: #35 [is-builder 8/10] RUN if [ -d "./cosmos-sdk" ]; then go mod edit -replace github.com/cosmos/cosmos-sdk=./cosmos-sdk; fi -startDocker: #35 sha256:11d8f2d4a0e47a82e838a86fc8a155a449ee9f3132b398f6b9c7f00f48a83b34 -startDocker: #35 DONE 0.1s -startDocker: -startDocker: #36 [is-builder 9/10] RUN go mod tidy -startDocker: #36 sha256:b36cdd4126a91860927fa6f04e5185afee360d5c5b6d52befaa0c04bd1712985 -startDocker: #36 1.196 go: downloading github.com/otiai10/copy v1.6.0 -startDocker: #36 1.196 go: downloading github.com/frankban/quicktest v1.14.4 -startDocker: #36 1.270 go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c -startDocker: #36 1.305 go: downloading github.com/google/go-cmp v0.5.9 -startDocker: #36 1.380 go: downloading github.com/pascaldekloe/goe v0.1.0 -startDocker: #36 1.383 go: downloading github.com/btcsuite/btcd/btcutil v1.1.2 -startDocker: #36 1.399 go: downloading github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c -startDocker: #36 1.419 go: downloading github.com/btcsuite/btcd v0.22.1 -startDocker: #36 1.457 go: downloading github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c -startDocker: #36 1.543 go: downloading github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 -startDocker: #36 1.576 go: downloading github.com/fortytw2/leaktest v1.3.0 -startDocker: #36 1.703 go: downloading github.com/regen-network/gocuke v0.6.2 -startDocker: #36 1.712 go: downloading gotest.tools/v3 v3.4.0 -startDocker: #36 1.745 go: downloading gotest.tools v2.2.0+incompatible -startDocker: #36 1.778 go: downloading github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f -startDocker: #36 1.783 go: downloading github.com/adlio/schema v1.3.3 -startDocker: #36 1.784 go: downloading github.com/ory/dockertest v3.3.5+incompatible -startDocker: #36 1.801 go: downloading github.com/stretchr/objx v0.5.0 -startDocker: #36 1.840 go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.0 -startDocker: #36 1.841 go: downloading github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 -startDocker: #36 1.842 go: downloading github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 -startDocker: #36 1.844 go: downloading github.com/VividCortex/gohistogram v1.0.0 -startDocker: #36 1.856 go: downloading github.com/cockroachdb/apd/v3 v3.1.0 -startDocker: #36 1.856 go: downloading github.com/cucumber/common/gherkin/go/v22 v22.0.0 -startDocker: #36 1.857 go: downloading github.com/cucumber/common/messages/go/v17 v17.1.1 -startDocker: #36 1.858 go: downloading pgregory.net/rapid v0.5.3 -startDocker: #36 1.878 go: downloading golang.org/x/sync v0.1.0 -startDocker: #36 1.890 go: downloading github.com/gin-gonic/gin v1.8.1 -startDocker: #36 1.910 go: downloading github.com/OneOfOne/xxhash v1.2.2 -startDocker: #36 1.911 go: downloading github.com/spaolacci/murmur3 v1.1.0 -startDocker: #36 1.912 go: downloading github.com/nxadm/tail v1.4.8 -startDocker: #36 1.925 go: downloading github.com/cenkalti/backoff v2.2.1+incompatible -startDocker: #36 1.926 go: downloading github.com/Microsoft/go-winio v0.6.0 -startDocker: #36 1.929 go: downloading github.com/docker/go-units v0.5.0 -startDocker: #36 1.940 go: downloading github.com/alecthomas/participle/v2 v2.0.0-alpha7 -startDocker: #36 1.951 go: downloading github.com/gofrs/uuid v4.3.0+incompatible -startDocker: #36 1.967 go: downloading gonum.org/v1/gonum v0.8.2 -startDocker: #36 1.973 go: downloading github.com/gobwas/httphead v0.1.0 -startDocker: #36 1.974 go: downloading github.com/gobwas/pool v0.2.1 -startDocker: #36 1.988 go: downloading github.com/gin-contrib/sse v0.1.0 -startDocker: #36 1.988 go: downloading gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 -startDocker: #36 1.997 go: downloading github.com/sirupsen/logrus v1.9.0 -startDocker: #36 2.002 go: downloading github.com/opencontainers/runc v1.1.3 -startDocker: #36 2.002 go: downloading github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 -startDocker: #36 2.018 go: downloading github.com/opencontainers/image-spec v1.1.0-rc2 -startDocker: #36 2.027 go: downloading golang.org/x/tools v0.4.0 -startDocker: #36 2.080 go: downloading github.com/go-errors/errors v1.4.2 -startDocker: #36 2.090 go: downloading github.com/pingcap/errors v0.11.4 -startDocker: #36 2.218 go: downloading github.com/go-playground/validator/v10 v10.11.1 -startDocker: #36 2.220 go: downloading github.com/ugorji/go/codec v1.2.7 -startDocker: #36 2.347 go: downloading github.com/ugorji/go v1.1.7 -startDocker: #36 2.355 go: downloading github.com/goccy/go-json v0.9.11 -startDocker: #36 2.359 go: downloading github.com/json-iterator/go v1.1.12 -startDocker: #36 2.395 go: downloading github.com/docker/go-connections v0.4.0 -startDocker: #36 2.399 go: downloading github.com/containerd/continuity v0.3.0 -startDocker: #36 2.411 go: downloading github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 -startDocker: #36 2.413 go: downloading github.com/opencontainers/go-digest v1.0.0 -startDocker: #36 2.427 go: downloading github.com/go-playground/universal-translator v0.18.0 -startDocker: #36 2.429 go: downloading github.com/leodido/go-urn v1.2.1 -startDocker: #36 2.430 go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd -startDocker: #36 2.444 go: downloading github.com/modern-go/reflect2 v1.0.2 -startDocker: #36 2.445 go: downloading github.com/go-playground/locales v0.14.0 -startDocker: #36 2.489 go: downloading golang.org/x/mod v0.7.0 -startDocker: #36 DONE 3.3s -startDocker: -startDocker: #37 [is-builder 10/10] RUN make install -startDocker: #37 sha256:99cd3210764060d55710862281626a89d6501bf467b1fd30ef92daeb77f8dd99 -startDocker: #37 0.318 export GOFLAGS='-buildmode=pie' -startDocker: #37 0.319 export CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2" -startDocker: #37 0.319 export CGO_LDFLAGS="-Wl,-z,relro,-z,now -fstack-protector" -startDocker: #37 0.320 go install ./cmd/interchain-security-pd -startDocker: #37 26.69 go install ./cmd/interchain-security-cd -startDocker: #37 28.97 go install ./cmd/interchain-security-cdd -startDocker: #37 31.19 go install ./cmd/interchain-security-sd -startDocker: #37 DONE 33.4s -startDocker: -startDocker: #24 [stage-4 5/12] COPY --from=cometmock-builder /usr/local/bin/cometmock /usr/local/bin/cometmock -startDocker: #24 sha256:4faacbe52af399143e4464c8eff9225096d035b7b2163a40ece5160b230b2d8d -startDocker: #24 CACHED -startDocker: -startDocker: #40 [stage-4 9/12] COPY --from=is-builder /go/bin/interchain-security-cdd /usr/local/bin/interchain-security-cdd -startDocker: #40 sha256:fdfc304213cac7c2141267ca4c395a63f35dc903e11ea9c835b2b96a2aae8cea -startDocker: #40 CACHED -startDocker: -startDocker: #20 [stage-4 3/12] RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq -startDocker: #20 sha256:181d17ee3af8a58f0fd82482bf68a5ac818d63f17d17b4bf9b1c7b02fc110d92 -startDocker: #20 CACHED -startDocker: -startDocker: #22 [stage-4 4/12] COPY --from=hermes-builder /usr/bin/hermes /usr/local/bin/ -startDocker: #22 sha256:cb1015a05795e8b3c9413ebf6489c2ab6b572a54b12f0948b0e88301fc3d63c6 -startDocker: #22 CACHED -startDocker: -startDocker: #38 [stage-4 7/12] COPY --from=is-builder /go/bin/interchain-security-pd /usr/local/bin/interchain-security-pd -startDocker: #38 sha256:e2c9be27e1187864cbd099ff98358466986c1ca238767742b8fe4671785f55f8 -startDocker: #38 CACHED -startDocker: -startDocker: #39 [stage-4 8/12] COPY --from=is-builder /go/bin/interchain-security-cd /usr/local/bin/interchain-security-cd -startDocker: #39 sha256:0183ab65ddb36a37a144bad652dfd76fe4d401974b199fbfbab5464d00c5f00a -startDocker: #39 CACHED -startDocker: -startDocker: #19 [stage-4 2/12] RUN dnf update -y -startDocker: #19 sha256:48c74673a1005785b4cbb054320b87b03cc31318dddcee6c7aa71b73052f2fe4 -startDocker: #19 CACHED -startDocker: -startDocker: #26 [stage-4 6/12] COPY --from=gorelayer-builder /bin/rly /usr/local/bin/ -startDocker: #26 sha256:7d396d0a9b2aa5963565510ac65d26ec8583051ab3066d77baabd0b2deeb2bd3 -startDocker: #26 CACHED -startDocker: -startDocker: #41 [stage-4 10/12] COPY --from=is-builder /go/bin/interchain-security-sd /usr/local/bin/interchain-security-sd -startDocker: #41 sha256:89b48ad7749c0e5baaaa2860c1e449b4f0276bc213139ebd39948d083af7b358 -startDocker: #41 CACHED -startDocker: -startDocker: #42 [stage-4 11/12] ADD ./tests/e2e/testnet-scripts /testnet-scripts -startDocker: #42 sha256:4459f5721261de8968f694df2df3227e651519cf56866f84158d89e33499f985 -startDocker: #42 DONE 0.0s -startDocker: -startDocker: #43 [stage-4 12/12] ADD ./tests/e2e/testnet-scripts/hermes-config.toml /root/.hermes/config.toml -startDocker: #43 sha256:4e74d5e7e4fe21e5e500cb7db68b8fad5a7c99d932f0e2a21f34f97bde9200f9 -startDocker: #43 DONE 0.0s -startDocker: -startDocker: #44 exporting to image -startDocker: #44 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00 -startDocker: #44 exporting layers 0.0s done -startDocker: #44 writing image sha256:c42e913f32a8e5d1ba19c48fa1e05d4778192821838abd51b285f2ba098577f9 done -startDocker: #44 naming to docker.io/library/interchain-security-container done -startDocker: #44 DONE 0.0s -startDocker: + rm -rf ./cosmos-sdk/ -startDocker: + docker run --name interchain-security-instance --cap-add=NET_ADMIN --privileged interchain-security-container /bin/bash /testnet-scripts/beacon.sh -startDocker: beacon!!!!!!!!!! -=============== started misbehaviour tests =============== -running misbehaviour: step 1 == StartChainAction -startChain: + BIN=interchain-security-pd -startChain: + VALIDATORS='[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + CHAIN_ID=provi -startChain: + CHAIN_IP_PREFIX=7.7.7 -startChain: + GENESIS_TRANSFORM='.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "10" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.provider.params.slash_meter_replenish_fraction = "1.0" | .app_state.provider.params.slash_meter_replenish_period = "3s"' -startChain: + SKIP_GENTX=false -startChain: + TENDERMINT_CONFIG_TRANSFORM='s/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' -startChain: + USE_COMETMOCK=false -startChain: + NODE_LISTEN_ADDR_STR= -startChain: + NODE_HOMES= -startChain: ++ jq '. | length' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + NODES=2 -startChain: + ip link add name virtual-bridge type bridge -startChain: ++ seq 0 1 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ jq -r '.[0].val_id' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + VAL_IP_SUFFIX=4 -startChain: + NET_NAMESPACE_NAME=provi-alice -startChain: + IP_ADDR=7.7.7.4/24 -startChain: + ip netns add provi-alice -startChain: + ip link add provi-alice-in type veth peer name provi-alice-out -startChain: + ip link set provi-alice-in netns provi-alice -startChain: + ip netns exec provi-alice ip addr add 7.7.7.4/24 dev provi-alice-in -startChain: + ip link set provi-alice-out master virtual-bridge -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].val_id' -startChain: + VAL_ID=bob -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].ip_suffix' -startChain: + VAL_IP_SUFFIX=5 -startChain: + NET_NAMESPACE_NAME=provi-bob -startChain: + IP_ADDR=7.7.7.5/24 -startChain: + ip netns add provi-bob -startChain: + ip link add provi-bob-in type veth peer name provi-bob-out -startChain: + ip link set provi-bob-in netns provi-bob -startChain: + ip netns exec provi-bob ip addr add 7.7.7.5/24 dev provi-bob-in -startChain: + ip link set provi-bob-out master virtual-bridge -startChain: + ip link set virtual-bridge up -startChain: ++ seq 0 1 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: + NET_NAMESPACE_NAME=provi-alice -startChain: + ip link set provi-alice-out up -startChain: + ip netns exec provi-alice ip link set dev provi-alice-in up -startChain: + ip netns exec provi-alice ip link set dev lo up -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].val_id' -startChain: + VAL_ID=bob -startChain: + NET_NAMESPACE_NAME=provi-bob -startChain: + ip link set provi-bob-out up -startChain: + ip netns exec provi-bob ip link set dev provi-bob-in up -startChain: + ip netns exec provi-bob ip link set dev lo up -startChain: + BRIDGE_IP=7.7.7.254/24 -startChain: + ip addr add 7.7.7.254/24 dev virtual-bridge -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + FIRST_VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + FIRST_VAL_IP_SUFFIX=4 -startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + interchain-security-pd init --home /provi/validatoralice --chain-id=provi validatoralice --recover -startChain: + jq -r '.[0].mnemonic' -startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"evidence":{"evidence":[]},"genutil":{"gen_txs":[]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"172800s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"provider":{"consumer_addition_proposals":[],"consumer_addrs_to_prune":[],"consumer_removal_proposals":[],"consumer_states":[],"mature_unbonding_ops":null,"params":{"ccv_timeout_period":"2419200s","consumer_reward_denom_registration_fee":{"amount":"10000000","denom":"stake"},"init_timeout_period":"604800s","max_throttled_packets":"100000","slash_meter_replenish_fraction":"0.05","slash_meter_replenish_period":"3600s","template_client":{"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true,"chain_id":"","frozen_height":{"revision_height":"0","revision_number":"0"},"latest_height":{"revision_height":"0","revision_number":"0"},"max_clock_drift":"10s","proof_specs":[{"inner_spec":{"child_order":[0,1],"child_size":33,"empty_child":null,"hash":"SHA256","max_prefix_length":12,"min_prefix_length":4},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0},{"inner_spec":{"child_order":[0,1],"child_size":32,"empty_child":null,"hash":"SHA256","max_prefix_length":1,"min_prefix_length":1},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0}],"trust_level":{"denominator":"3","numerator":"1"},"trusting_period":"0s","unbonding_period":"0s","upgrade_path":["upgrade","upgradedIBCState"]},"trusting_period_fraction":"0.66","vsc_timeout_period":"3024000s"},"unbonding_ops":[],"validator_consumer_pubkeys":[],"validators_by_consumer_addr":[],"valset_update_id":"1","valset_update_id_to_height":[]},"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"provi","gentxs_dir":"","moniker":"validatoralice","node_id":"a9062fce9ac64223aeff285292790283de59b0d0"} -startChain: + jq '.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "10" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.provider.params.slash_meter_replenish_fraction = "1.0" | .app_state.provider.params.slash_meter_replenish_period = "3s"' /provi/validatoralice/config/genesis.json -startChain: + mv /provi/edited-genesis.json /provi/genesis.json -startChain: ++ seq 0 1 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ jq -r '.[0].val_id' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].start_with_consumer_key' -startChain: + START_WITH_CONSUMER_KEY=true -startChain: + [[ provi != \p\r\o\v\i ]] -startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + jq -r '.[0].mnemonic' -startChain: + interchain-security-pd keys add validatoralice --home /provi/validatoralice --keyring-backend test --recover -startChain: -startChain: + mv /provi/genesis.json /provi/validatoralice/config/genesis.json -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].allocation' -startChain: + ALLOCATION=10000000000stake -startChain: + interchain-security-pd add-genesis-account validatoralice 10000000000stake --home /provi/validatoralice --keyring-backend test -startChain: + mv /provi/validatoralice/config/genesis.json /provi/genesis.json -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].val_id' -startChain: + VAL_ID=bob -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].start_with_consumer_key' -startChain: + START_WITH_CONSUMER_KEY=false -startChain: + [[ provi != \p\r\o\v\i ]] -startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + jq -r '.[1].mnemonic' -startChain: + interchain-security-pd keys add validatorbob --home /provi/validatorbob --keyring-backend test --recover -startChain: -startChain: + mv /provi/genesis.json /provi/validatorbob/config/genesis.json -startChain: ++ jq -r '.[1].allocation' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + ALLOCATION=10000000000stake -startChain: + interchain-security-pd add-genesis-account validatorbob 10000000000stake --home /provi/validatorbob --keyring-backend test -startChain: + mv /provi/validatorbob/config/genesis.json /provi/genesis.json -startChain: ++ seq 0 1 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: + cp /provi/genesis.json /provi/validatoralice/config/genesis.json -startChain: + echo '{"height": "0","round": 0,"step": 0}' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].start_with_consumer_key' -startChain: + START_WITH_CONSUMER_KEY=true -startChain: + [[ provi != \p\r\o\v\i ]] -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].priv_validator_key' -startChain: + PRIV_VALIDATOR_KEY='{"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}}' -startChain: + [[ -n {"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}} ]] -startChain: + echo '{"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}}' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].node_key' -startChain: + NODE_KEY='{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' -startChain: + [[ -n {"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}} ]] -startChain: + echo '{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' -startChain: + '[' false = false ']' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].stake' -startChain: + STAKE_AMOUNT=500000000stake -startChain: + interchain-security-pd gentx validatoralice 500000000stake --home /provi/validatoralice --keyring-backend test --moniker validatoralice --chain-id=provi -startChain: Genesis transaction written to "/provi/validatoralice/config/gentx/gentx-8339e14baab81c2a2350e261962263397a8d7fb0.json" -startChain: + '[' alice '!=' alice ']' -startChain: + '[' 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' '!=' '' ']' -startChain: + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' provi/validatoralice/config/config.toml -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ jq -r '.[1].val_id' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + VAL_ID=bob -startChain: + cp /provi/genesis.json /provi/validatorbob/config/genesis.json -startChain: + echo '{"height": "0","round": 0,"step": 0}' -startChain: ++ jq -r '.[1].start_with_consumer_key' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + START_WITH_CONSUMER_KEY=false -startChain: + [[ provi != \p\r\o\v\i ]] -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].priv_validator_key' -startChain: + PRIV_VALIDATOR_KEY='{"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}}' -startChain: + [[ -n {"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}} ]] -startChain: + echo '{"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}}' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].node_key' -startChain: + NODE_KEY='{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}}' -startChain: + [[ -n {"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}} ]] -startChain: + echo '{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}}' -startChain: + '[' false = false ']' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].stake' -startChain: + STAKE_AMOUNT=20000000stake -startChain: + interchain-security-pd gentx validatorbob 20000000stake --home /provi/validatorbob --keyring-backend test --moniker validatorbob --chain-id=provi -startChain: Genesis transaction written to "/provi/validatorbob/config/gentx/gentx-c14eeb0edbe700fde55583538420d12ac0c8d77c.json" -startChain: + '[' bob '!=' alice ']' -startChain: + cp /provi/validatorbob/config/gentx/gentx-c14eeb0edbe700fde55583538420d12ac0c8d77c.json /provi/validatoralice/config/gentx/ -startChain: + '[' 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' '!=' '' ']' -startChain: + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' provi/validatorbob/config/config.toml -startChain: + '[' false = false ']' -startChain: + interchain-security-pd collect-gentxs --home /provi/validatoralice -startChain: {"app_message":{"auth":{"accounts":[{"@type":"/cosmos.auth.v1beta1.BaseAccount","account_number":"0","address":"cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm","pub_key":null,"sequence":"0"},{"@type":"/cosmos.auth.v1beta1.BaseAccount","account_number":"0","address":"cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la","pub_key":null,"sequence":"0"}],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[{"address":"cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm","coins":[{"amount":"10000000000","denom":"stake"}]},{"address":"cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la","coins":[{"amount":"10000000000","denom":"stake"}]}],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[{"amount":"20000000000","denom":"stake"}]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"evidence":{"evidence":[]},"genutil":{"gen_txs":[{"auth_info":{"fee":{"amount":[],"gas_limit":"200000","granter":"","payer":""},"signer_infos":[{"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AsFC8tmbGGQSHthsVStbsQ13/+Yza9IT8KCSXXEN7y9f"},"sequence":"0"}]},"body":{"extension_options":[],"memo":"8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.254:26656","messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","commission":{"max_change_rate":"0.010000000000000000","max_rate":"0.200000000000000000","rate":"0.100000000000000000"},"delegator_address":"cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm","description":{"details":"","identity":"","moniker":"validatoralice","security_contact":"","website":""},"min_self_delegation":"1","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"validator_address":"cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng","value":{"amount":"500000000","denom":"stake"}}],"non_critical_extension_options":[],"timeout_height":"0"},"signatures":["D06i2qqq2HathlT7cy+PDLTDuYKAmzw5Ne+Ehvzr9bVy3jpm2h8deDGeSXTSrhdP04UpFXerSn+zIPth5TKNrg=="]},{"auth_info":{"fee":{"amount":[],"gas_limit":"200000","granter":"","payer":""},"signer_infos":[{"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"ArCv6pseaIkP8SbRqnT4kKylCz5mgAyhwXp8V1q/zU3p"},"sequence":"0"}]},"body":{"extension_options":[],"memo":"c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.254:26656","messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","commission":{"max_change_rate":"0.010000000000000000","max_rate":"0.200000000000000000","rate":"0.100000000000000000"},"delegator_address":"cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la","description":{"details":"","identity":"","moniker":"validatorbob","security_contact":"","website":""},"min_self_delegation":"1","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"validator_address":"cosmosvaloper1dkas8mu4kyhl5jrh4nzvm65qz588hy9qakmjnw","value":{"amount":"20000000","denom":"stake"}}],"non_critical_extension_options":[],"timeout_height":"0"},"signatures":["sZhES43m+6IxbKNvrw6HQxLsEHWHsBInieGeJn8KRTI2yUo2TNDUZnqSnGnqBvklxcEu5PxzxEyojV4cxItXCQ=="]}]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"20s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"provider":{"consumer_addition_proposals":[],"consumer_addrs_to_prune":[],"consumer_removal_proposals":[],"consumer_states":[],"mature_unbonding_ops":null,"params":{"ccv_timeout_period":"2419200s","consumer_reward_denom_registration_fee":{"amount":"10000000","denom":"stake"},"init_timeout_period":"604800s","max_throttled_packets":"100000","slash_meter_replenish_fraction":"1.0","slash_meter_replenish_period":"3s","template_client":{"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true,"chain_id":"","frozen_height":{"revision_height":"0","revision_number":"0"},"latest_height":{"revision_height":"0","revision_number":"0"},"max_clock_drift":"10s","proof_specs":[{"inner_spec":{"child_order":[0,1],"child_size":33,"empty_child":null,"hash":"SHA256","max_prefix_length":12,"min_prefix_length":4},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0},{"inner_spec":{"child_order":[0,1],"child_size":32,"empty_child":null,"hash":"SHA256","max_prefix_length":1,"min_prefix_length":1},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0}],"trust_level":{"denominator":"3","numerator":"1"},"trusting_period":"0s","unbonding_period":"0s","upgrade_path":["upgrade","upgradedIBCState"]},"trusting_period_fraction":"0.66","vsc_timeout_period":"3024000s"},"unbonding_ops":[],"validator_consumer_pubkeys":[],"validators_by_consumer_addr":[],"valset_update_id":"1","valset_update_id_to_height":[]},"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"2s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"10","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"provi","gentxs_dir":"/provi/validatoralice/config/gentx","moniker":"validatoralice","node_id":"8339e14baab81c2a2350e261962263397a8d7fb0"} -startChain: + cp /provi/validatoralice/config/genesis.json /provi/genesis.json -startChain: ++ seq 1 1 -startChain: + for i in $(seq 1 $(($NODES - 1))) -startChain: ++ jq -r '.[1].val_id' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + VAL_ID=bob -startChain: + cp /provi/genesis.json /provi/validatorbob/config/genesis.json -startChain: ++ seq 0 1 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + VAL_IP_SUFFIX=4 -startChain: + NET_NAMESPACE_NAME=provi-alice -startChain: + NODE_HOME=/provi/validatoralice -startChain: + GAIA_HOME='--home /provi/validatoralice' -startChain: + NODE_HOMES=/provi/validatoralice, -startChain: + RPC_ADDRESS='--rpc.laddr tcp://7.7.7.4:26658' -startChain: + GRPC_ADDRESS='--grpc.address 7.7.7.4:9091' -startChain: + LISTEN_ADDRESS='--address tcp://7.7.7.4:26655' -startChain: + NODE_LISTEN_ADDR_STR=7.7.7.4:26655, -startChain: + P2P_ADDRESS='--p2p.laddr tcp://7.7.7.4:26656' -startChain: + LOG_LEVEL='--log_level info' -startChain: + ENABLE_WEBGRPC=--grpc-web.enable=false -startChain: + PERSISTENT_PEERS= -startChain: ++ seq 0 1 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: + '[' 0 -ne 0 ']' -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: + '[' 0 -ne 1 ']' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].val_id' -startChain: + PEER_VAL_ID=bob -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].ip_suffix' -startChain: + PEER_VAL_IP_SUFFIX=5 -startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatorbob -startChain: + NODE_ID=c14eeb0edbe700fde55583538420d12ac0c8d77c -startChain: + ADDRESS=c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 -startChain: + PERSISTENT_PEERS=,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 -startChain: + '[' ,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 '!=' '' ']' -startChain: + PERSISTENT_PEERS='--p2p.persistent_peers c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' -startChain: + ARGS='--home /provi/validatoralice --address tcp://7.7.7.4:26655 --rpc.laddr tcp://7.7.7.4:26658 --grpc.address 7.7.7.4:9091 --log_level info --p2p.laddr tcp://7.7.7.4:26656 --grpc-web.enable=false --p2p.persistent_peers c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' -startChain: + [[ false == \t\r\u\e ]] -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: + ip netns exec provi-alice interchain-security-pd --home /provi/validatoralice --address tcp://7.7.7.4:26655 --rpc.laddr tcp://7.7.7.4:26658 --grpc.address 7.7.7.4:9091 --log_level info --p2p.laddr tcp://7.7.7.4:26656 --grpc-web.enable=false --p2p.persistent_peers c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 start -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].val_id' -startChain: + VAL_ID=bob -startChain: ++ jq -r '.[1].ip_suffix' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + VAL_IP_SUFFIX=5 -startChain: + NET_NAMESPACE_NAME=provi-bob -startChain: + NODE_HOME=/provi/validatorbob -startChain: + GAIA_HOME='--home /provi/validatorbob' -startChain: + NODE_HOMES=/provi/validatorbob,/provi/validatoralice, -startChain: + RPC_ADDRESS='--rpc.laddr tcp://7.7.7.5:26658' -startChain: + GRPC_ADDRESS='--grpc.address 7.7.7.5:9091' -startChain: + LISTEN_ADDRESS='--address tcp://7.7.7.5:26655' -startChain: + NODE_LISTEN_ADDR_STR=7.7.7.5:26655,7.7.7.4:26655, -startChain: + P2P_ADDRESS='--p2p.laddr tcp://7.7.7.5:26656' -startChain: + LOG_LEVEL='--log_level info' -startChain: + ENABLE_WEBGRPC=--grpc-web.enable=false -startChain: + PERSISTENT_PEERS= -startChain: ++ seq 0 1 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: + '[' 1 -ne 0 ']' -startChain: ++ jq -r '.[0].val_id' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + PEER_VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + PEER_VAL_IP_SUFFIX=4 -startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatoralice -startChain: + NODE_ID=8339e14baab81c2a2350e261962263397a8d7fb0 -startChain: + ADDRESS=8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 -startChain: + PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: + '[' 1 -ne 1 ']' -startChain: + '[' ,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 '!=' '' ']' -startChain: + PERSISTENT_PEERS='--p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656' -startChain: + ARGS='--home /provi/validatorbob --address tcp://7.7.7.5:26655 --rpc.laddr tcp://7.7.7.5:26658 --grpc.address 7.7.7.5:9091 --log_level info --p2p.laddr tcp://7.7.7.5:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656' -startChain: + [[ false == \t\r\u\e ]] -startChain: + SYBIL_NODE_ID=sybil -startChain: + SYBIL_IP_SUFFIX=252 -startChain: + SYBIL_NET_NAMESPACE_NAME=provi-sybil -startChain: + SYBIL_IP_ADDR=7.7.7.252/24 -startChain: + ip netns add provi-sybil -startChain: + ip netns exec provi-bob interchain-security-pd --home /provi/validatorbob --address tcp://7.7.7.5:26655 --rpc.laddr tcp://7.7.7.5:26658 --grpc.address 7.7.7.5:9091 --log_level info --p2p.laddr tcp://7.7.7.5:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 start -startChain: + ip link add provi-sybil-in type veth peer name provi-sybil-out -startChain: + ip link set provi-sybil-in netns provi-sybil -startChain: + ip netns exec provi-sybil ip addr add 7.7.7.252/24 dev provi-sybil-in -startChain: + ip link set provi-sybil-out master virtual-bridge -startChain: + ip link set provi-sybil-out up -startChain: + ip netns exec provi-sybil ip link set dev provi-sybil-in up -startChain: + ip netns exec provi-sybil ip link set dev lo up -startChain: + QUERY_NODE_ID=query -startChain: + QUERY_IP_SUFFIX=253 -startChain: + QUERY_NET_NAMESPACE_NAME=provi-query -startChain: + QUERY_IP_ADDR=7.7.7.253/24 -startChain: + ip netns add provi-query -startChain: + ip link add provi-query-in type veth peer name provi-query-out -startChain: + ip link set provi-query-in netns provi-query -startChain: + ip netns exec provi-query ip addr add 7.7.7.253/24 dev provi-query-in -startChain: + ip link set provi-query-out master virtual-bridge -startChain: + ip link set provi-query-out up -startChain: + ip netns exec provi-query ip link set dev provi-query-in up -startChain: + ip netns exec provi-query ip link set dev lo up -startChain: + interchain-security-pd init --home /provi/query --chain-id=provi query -startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"distribution":{"delegator_starting_infos":[],"delegator_withdraw_infos":[],"fee_pool":{"community_pool":[]},"outstanding_rewards":[],"params":{"base_proposer_reward":"0.010000000000000000","bonus_proposer_reward":"0.040000000000000000","community_tax":"0.020000000000000000","withdraw_addr_enabled":true},"previous_proposer":"","validator_accumulated_commissions":[],"validator_current_rewards":[],"validator_historical_rewards":[],"validator_slash_events":[]},"evidence":{"evidence":[]},"genutil":{"gen_txs":[]},"gov":{"deposit_params":{"max_deposit_period":"172800s","min_deposit":[{"amount":"10000000","denom":"stake"}]},"deposits":[],"proposals":[],"starting_proposal_id":"1","tally_params":{"quorum":"0.334000000000000000","threshold":"0.500000000000000000","veto_threshold":"0.334000000000000000"},"votes":[],"voting_params":{"voting_period":"172800s"}},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"mint":{"minter":{"annual_provisions":"0.000000000000000000","inflation":"0.130000000000000000"},"params":{"blocks_per_year":"6311520","goal_bonded":"0.670000000000000000","inflation_max":"0.200000000000000000","inflation_min":"0.070000000000000000","inflation_rate_change":"0.130000000000000000","mint_denom":"stake"}},"params":null,"provider":{"consumer_addition_proposals":[],"consumer_addrs_to_prune":[],"consumer_removal_proposals":[],"consumer_states":[],"mature_unbonding_ops":null,"params":{"ccv_timeout_period":"2419200s","consumer_reward_denom_registration_fee":{"amount":"10000000","denom":"stake"},"init_timeout_period":"604800s","max_throttled_packets":"100000","slash_meter_replenish_fraction":"0.05","slash_meter_replenish_period":"3600s","template_client":{"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true,"chain_id":"","frozen_height":{"revision_height":"0","revision_number":"0"},"latest_height":{"revision_height":"0","revision_number":"0"},"max_clock_drift":"10s","proof_specs":[{"inner_spec":{"child_order":[0,1],"child_size":33,"empty_child":null,"hash":"SHA256","max_prefix_length":12,"min_prefix_length":4},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0},{"inner_spec":{"child_order":[0,1],"child_size":32,"empty_child":null,"hash":"SHA256","max_prefix_length":1,"min_prefix_length":1},"leaf_spec":{"hash":"SHA256","length":"VAR_PROTO","prefix":"AA==","prehash_key":"NO_HASH","prehash_value":"SHA256"},"max_depth":0,"min_depth":0}],"trust_level":{"denominator":"3","numerator":"1"},"trusting_period":"0s","unbonding_period":"0s","upgrade_path":["upgrade","upgradedIBCState"]},"trusting_period_fraction":"0.66","vsc_timeout_period":"3024000s"},"unbonding_ops":[],"validator_consumer_pubkeys":[],"validators_by_consumer_addr":[],"valset_update_id":"1","valset_update_id_to_height":[]},"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"staking":{"delegations":[],"exported":false,"last_total_power":"0","last_validator_powers":[],"params":{"bond_denom":"stake","historical_entries":10000,"max_entries":7,"max_validators":100,"unbonding_time":"1814400s"},"redelegations":[],"unbonding_delegations":[],"validators":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"provi","gentxs_dir":"","moniker":"query","node_id":"b474293bb567144cdaaa7135fd56c0f52da03160"} -startChain: + cp /provi/genesis.json /provi/query/config/genesis.json -startChain: + QUERY_GAIA_HOME='--home /provi/query' -startChain: + QUERY_RPC_ADDRESS='--rpc.laddr tcp://7.7.7.253:26658' -startChain: + QUERY_GRPC_ADDRESS='--grpc.address 7.7.7.253:9091' -startChain: + QUERY_LISTEN_ADDRESS='--address tcp://7.7.7.253:26655' -startChain: + QUERY_P2P_ADDRESS='--p2p.laddr tcp://7.7.7.253:26656' -startChain: + QUERY_LOG_LEVEL='--log_level info' -startChain: + QUERY_ENABLE_WEBGRPC=--grpc-web.enable=false -startChain: + QUERY_PERSISTENT_PEERS= -startChain: ++ seq 0 1 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: ++ jq -r '.[0].val_id' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: + PEER_VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + PEER_VAL_IP_SUFFIX=4 -startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatoralice -startChain: + NODE_ID=8339e14baab81c2a2350e261962263397a8d7fb0 -startChain: + ADDRESS=8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 -startChain: + QUERY_PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].val_id' -startChain: + PEER_VAL_ID=bob -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true},{"mnemonic":"glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel","allocation":"10000000000stake","stake":"20000000stake","val_id":"bob","priv_validator_key":"{\"address\":\"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw==\"}}","ip_suffix":"5","consumer_mnemonic":"grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere","consumer_priv_validator_key":"{\"address\":\"E73388E246EC9945E5E70A94FE4072BD937415C4\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg==\"}}","start_with_consumer_key":false}]' -startChain: ++ jq -r '.[1].ip_suffix' -startChain: + PEER_VAL_IP_SUFFIX=5 -startChain: ++ interchain-security-pd tendermint show-node-id --home /provi/validatorbob -startChain: + NODE_ID=c14eeb0edbe700fde55583538420d12ac0c8d77c -startChain: + ADDRESS=c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 -startChain: + QUERY_PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 -startChain: + QUERY_PERSISTENT_PEERS='--p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' -startChain: + ARGS='--home /provi/query --address tcp://7.7.7.253:26655 --rpc.laddr tcp://7.7.7.253:26658 --grpc.address 7.7.7.253:9091 --log_level info --p2p.laddr tcp://7.7.7.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656' -startChain: + [[ false != \t\r\u\e ]] -startChain: Node addresses: -startChain: 7.7.7.5:26655,7.7.7.4:26655, -startChain: Node homes: -startChain: /provi/validatorbob,/provi/validatoralice, -startChain: + echo 'Node addresses:' -startChain: + echo 7.7.7.5:26655,7.7.7.4:26655, -startChain: + echo 'Node homes:' -startChain: + echo /provi/validatorbob,/provi/validatoralice, -startChain: + NODE_LISTEN_ADDR_STR=7.7.7.5:26655,7.7.7.4:26655 -startChain: + NODE_HOMES=/provi/validatorbob,/provi/validatoralice -startChain: + [[ false == \t\r\u\e ]] -startChain: + [[ false == \t\r\u\e ]] -startChain: + set +e -startChain: + ip netns exec provi-query interchain-security-pd --home /provi/query --address tcp://7.7.7.253:26655 --rpc.laddr tcp://7.7.7.253:26658 --grpc.address 7.7.7.253:9091 --log_level info --p2p.laddr tcp://7.7.7.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.7.4:26656,c14eeb0edbe700fde55583538420d12ac0c8d77c@7.7.7.5:26656 start -startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: Error: post failed: Post "http://7.7.7.253:26658": dial tcp 7.7.7.253:26658: connect: connection refused -startChain: Usage: -startChain: simd query block [height] [flags] -startChain: -startChain: Flags: -startChain: -h, --help help for block -startChain: -n, --node string Node to connect to (default "tcp://localhost:26657") -startChain: -startChain: Global Flags: -startChain: --chain-id string The network chain ID -startChain: --home string directory for config and data (default "/root/.interchain-security-p") -startChain: --log_format string The logging format (json|plain) (default "plain") -startChain: --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info") -startChain: --trace print out full stack trace on errors -startChain: -startChain: + sleep 0.3 -startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + sleep 0.3 -startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + sleep 0.3 -startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + sleep 0.3 -startChain: + interchain-security-pd query block --node tcp://7.7.7.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + set -e -startChain: + echo 'done!!!!!!!!' -startChain: + read -p 'Press Return to Close...' -startChain: done!!!!!!!! -Add to hermes alice -pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear -running misbehaviour: step 2 == submitConsumerAdditionProposalAction -running misbehaviour: step 3 == assignConsumerPubKeyAction -assignConsumerPubKey cmd: /usr/local/bin/docker exec interchain-security-instance /bin/bash -c interchain-security-pd tx provider assign-consensus-key consu '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="}' --from validatoralice --chain-id provi --home /provi/validatoralice --node tcp://7.7.7.4:26658 --gas 900000 --keyring-backend test -b block -y -o json -running misbehaviour: step 4 == voteGovProposalAction -running misbehaviour: step 5 == startConsumerChainAction -startChain: + BIN=interchain-security-cd -startChain: + VALIDATORS='[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: + CHAIN_ID=consu -startChain: + CHAIN_IP_PREFIX=7.7.8 -startChain: + GENESIS_TRANSFORM='.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer = {"params":{"enabled":true,"blocks_per_distribution_transmission":"1000","distribution_transmission_channel":"","provider_fee_pool_addr_str":"","ccv_timeout_period":"2419200s","transfer_timeout_period":"3600s","consumer_redistribution_fraction":"0.75","historical_entries":"10000","unbonding_period":"1728000s","soft_opt_out_threshold":"0.05","reward_denoms":[],"provider_reward_denoms":[]},"provider_client_id":"","provider_channel_id":"","new_chain":true,"provider_client_state":{"chain_id":"provi","trust_level":{"numerator":"1","denominator":"3"},"trusting_period":"1197504s","unbonding_period":"1814400s","max_clock_drift":"10s","frozen_height":{"revision_number":"0","revision_height":"0"},"latest_height":{"revision_number":"0","revision_height":"24"},"proof_specs":[{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":33,"min_prefix_length":4,"max_prefix_length":12,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0},{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":32,"min_prefix_length":1,"max_prefix_length":1,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0}],"upgrade_path":["upgrade","upgradedIBCState"],"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true},"provider_consensus_state":{"timestamp":"2023-07-06T13:41:25.239753303Z","root":{"hash":"dVV8g+F1rOzgI6Qi74lB5TWAQvICRA6VqJWv/8reEqc="},"next_validators_hash":"BBA977975C2E4EAC2961E3DF391D494C187A2B68842383C4E37E81ED78491952"},"maturing_packets":[],"initial_val_set":[{"pub_key":{"ed25519":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"power":"500"},{"pub_key":{"ed25519":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"power":"20"}],"height_to_valset_update_id":[],"outstanding_downtime_slashing":[],"pending_consumer_packets":{"list":[]},"last_transmission_block_height":{"height":"0"},"preCCV":false} -startChain: | .app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer.params.soft_opt_out_threshold = "0.05"' -startChain: + SKIP_GENTX=true -startChain: + TENDERMINT_CONFIG_TRANSFORM='s/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' -startChain: + USE_COMETMOCK=false -startChain: + NODE_LISTEN_ADDR_STR= -startChain: + NODE_HOMES= -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq '. | length' -startChain: + NODES=1 -startChain: + ip link add name virtual-bridge type bridge -startChain: RTNETLINK answers: File exists -startChain: + true -startChain: ++ seq 0 0 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + VAL_IP_SUFFIX=4 -startChain: + NET_NAMESPACE_NAME=consu-alice -startChain: + IP_ADDR=7.7.8.4/24 -startChain: + ip netns add consu-alice -startChain: + ip link add consu-alice-in type veth peer name consu-alice-out -startChain: + ip link set consu-alice-in netns consu-alice -startChain: + ip netns exec consu-alice ip addr add 7.7.8.4/24 dev consu-alice-in -startChain: + ip link set consu-alice-out master virtual-bridge -startChain: + ip link set virtual-bridge up -startChain: ++ seq 0 0 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: + NET_NAMESPACE_NAME=consu-alice -startChain: + ip link set consu-alice-out up -startChain: + ip netns exec consu-alice ip link set dev consu-alice-in up -startChain: + ip netns exec consu-alice ip link set dev lo up -startChain: + BRIDGE_IP=7.7.8.254/24 -startChain: + ip addr add 7.7.8.254/24 dev virtual-bridge -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + FIRST_VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + FIRST_VAL_IP_SUFFIX=4 -startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: + jq -r '.[0].mnemonic' -startChain: + interchain-security-cd init --home /consu/validatoralice --chain-id=consu validatoralice --recover -startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"authz":{"authorization":[]},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"ccvconsumer":{"height_to_valset_update_id":[],"initial_val_set":[],"last_transmission_block_height":{"height":"0"},"maturing_packets":[],"new_chain":false,"outstanding_downtime_slashing":[],"params":{"blocks_per_distribution_transmission":"1000","ccv_timeout_period":"2419200s","consumer_redistribution_fraction":"0.75","distribution_transmission_channel":"","enabled":false,"historical_entries":"10000","provider_fee_pool_addr_str":"","provider_reward_denoms":[],"reward_denoms":[],"soft_opt_out_threshold":"0.05","transfer_timeout_period":"3600s","unbonding_period":"1728000s"},"pending_consumer_packets":{"list":[]},"preCCV":false,"provider_channel_id":"","provider_client_id":"","provider_client_state":null,"provider_consensus_state":null},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"evidence":{"evidence":[]},"feegrant":{"allowances":[]},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"params":null,"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"consu","gentxs_dir":"","moniker":"validatoralice","node_id":"08ae375146db13bd3946d87b1c6f7287f9baf28f"} -startChain: + jq '.app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer = {"params":{"enabled":true,"blocks_per_distribution_transmission":"1000","distribution_transmission_channel":"","provider_fee_pool_addr_str":"","ccv_timeout_period":"2419200s","transfer_timeout_period":"3600s","consumer_redistribution_fraction":"0.75","historical_entries":"10000","unbonding_period":"1728000s","soft_opt_out_threshold":"0.05","reward_denoms":[],"provider_reward_denoms":[]},"provider_client_id":"","provider_channel_id":"","new_chain":true,"provider_client_state":{"chain_id":"provi","trust_level":{"numerator":"1","denominator":"3"},"trusting_period":"1197504s","unbonding_period":"1814400s","max_clock_drift":"10s","frozen_height":{"revision_number":"0","revision_height":"0"},"latest_height":{"revision_number":"0","revision_height":"24"},"proof_specs":[{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":33,"min_prefix_length":4,"max_prefix_length":12,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0},{"leaf_spec":{"hash":"SHA256","prehash_key":"NO_HASH","prehash_value":"SHA256","length":"VAR_PROTO","prefix":"AA=="},"inner_spec":{"child_order":[0,1],"child_size":32,"min_prefix_length":1,"max_prefix_length":1,"empty_child":null,"hash":"SHA256"},"max_depth":0,"min_depth":0}],"upgrade_path":["upgrade","upgradedIBCState"],"allow_update_after_expiry":true,"allow_update_after_misbehaviour":true},"provider_consensus_state":{"timestamp":"2023-07-06T13:41:25.239753303Z","root":{"hash":"dVV8g+F1rOzgI6Qi74lB5TWAQvICRA6VqJWv/8reEqc="},"next_validators_hash":"BBA977975C2E4EAC2961E3DF391D494C187A2B68842383C4E37E81ED78491952"},"maturing_packets":[],"initial_val_set":[{"pub_key":{"ed25519":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"power":"500"},{"pub_key":{"ed25519":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"power":"20"}],"height_to_valset_update_id":[],"outstanding_downtime_slashing":[],"pending_consumer_packets":{"list":[]},"last_transmission_block_height":{"height":"0"},"preCCV":false} -startChain: | .app_state.gov.voting_params.voting_period = "20s" | .app_state.slashing.params.signed_blocks_window = "15" | .app_state.slashing.params.min_signed_per_window = "0.500000000000000000" | .app_state.slashing.params.downtime_jail_duration = "2s" | .app_state.slashing.params.slash_fraction_downtime = "0.010000000000000000" | .app_state.ccvconsumer.params.soft_opt_out_threshold = "0.05"' /consu/validatoralice/config/genesis.json -startChain: + mv /consu/edited-genesis.json /consu/genesis.json -startChain: ++ seq 0 0 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].start_with_consumer_key' -startChain: + START_WITH_CONSUMER_KEY=true -startChain: + [[ consu != \p\r\o\v\i ]] -startChain: + [[ true = \t\r\u\e ]] -startChain: + interchain-security-cd keys add validatoralice --home /consu/validatoralice --keyring-backend test --recover -startChain: + jq -r '.[0].consumer_mnemonic' -startChain: + echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: -startChain: + mv /consu/genesis.json /consu/validatoralice/config/genesis.json -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].allocation' -startChain: + ALLOCATION=10000000000stake -startChain: + interchain-security-cd add-genesis-account validatoralice 10000000000stake --home /consu/validatoralice --keyring-backend test -startChain: + mv /consu/validatoralice/config/genesis.json /consu/genesis.json -startChain: ++ seq 0 0 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: + cp /consu/genesis.json /consu/validatoralice/config/genesis.json -startChain: + echo '{"height": "0","round": 0,"step": 0}' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].start_with_consumer_key' -startChain: + START_WITH_CONSUMER_KEY=true -startChain: + [[ consu != \p\r\o\v\i ]] -startChain: + [[ true = \t\r\u\e ]] -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].consumer_priv_validator_key' -startChain: + PRIV_VALIDATOR_KEY='{"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}}' -startChain: + [[ -n {"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}} ]] -startChain: + echo '{"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}}' -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].node_key' -startChain: + NODE_KEY='{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' -startChain: + [[ -n {"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}} ]] -startChain: + echo '{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}' -startChain: + '[' true = false ']' -startChain: + '[' 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' '!=' '' ']' -startChain: + sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/;s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;s/fast_sync = true/fast_sync = false/;' consu/validatoralice/config/config.toml -startChain: + '[' true = false ']' -startChain: ++ seq 0 0 -startChain: + for i in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + VAL_IP_SUFFIX=4 -startChain: + NET_NAMESPACE_NAME=consu-alice -startChain: + NODE_HOME=/consu/validatoralice -startChain: + GAIA_HOME='--home /consu/validatoralice' -startChain: + NODE_HOMES=/consu/validatoralice, -startChain: + RPC_ADDRESS='--rpc.laddr tcp://7.7.8.4:26658' -startChain: + GRPC_ADDRESS='--grpc.address 7.7.8.4:9091' -startChain: + LISTEN_ADDRESS='--address tcp://7.7.8.4:26655' -startChain: + NODE_LISTEN_ADDR_STR=7.7.8.4:26655, -startChain: + P2P_ADDRESS='--p2p.laddr tcp://7.7.8.4:26656' -startChain: + LOG_LEVEL='--log_level info' -startChain: + ENABLE_WEBGRPC=--grpc-web.enable=false -startChain: + PERSISTENT_PEERS= -startChain: ++ seq 0 0 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: + '[' 0 -ne 0 ']' -startChain: + '[' '' '!=' '' ']' -startChain: + ARGS='--home /consu/validatoralice --address tcp://7.7.8.4:26655 --rpc.laddr tcp://7.7.8.4:26658 --grpc.address 7.7.8.4:9091 --log_level info --p2p.laddr tcp://7.7.8.4:26656 --grpc-web.enable=false ' -startChain: + [[ false == \t\r\u\e ]] -startChain: + SYBIL_NODE_ID=sybil -startChain: + SYBIL_IP_SUFFIX=252 -startChain: + SYBIL_NET_NAMESPACE_NAME=consu-sybil -startChain: + SYBIL_IP_ADDR=7.7.8.252/24 -startChain: + ip netns add consu-sybil -startChain: + ip netns exec consu-alice interchain-security-cd --home /consu/validatoralice --address tcp://7.7.8.4:26655 --rpc.laddr tcp://7.7.8.4:26658 --grpc.address 7.7.8.4:9091 --log_level info --p2p.laddr tcp://7.7.8.4:26656 --grpc-web.enable=false start -startChain: + ip link add consu-sybil-in type veth peer name consu-sybil-out -startChain: + ip link set consu-sybil-in netns consu-sybil -startChain: + ip netns exec consu-sybil ip addr add 7.7.8.252/24 dev consu-sybil-in -startChain: + ip link set consu-sybil-out master virtual-bridge -startChain: + ip link set consu-sybil-out up -startChain: + ip netns exec consu-sybil ip link set dev consu-sybil-in up -startChain: + ip netns exec consu-sybil ip link set dev lo up -startChain: + QUERY_NODE_ID=query -startChain: + QUERY_IP_SUFFIX=253 -startChain: + QUERY_NET_NAMESPACE_NAME=consu-query -startChain: + QUERY_IP_ADDR=7.7.8.253/24 -startChain: + ip netns add consu-query -startChain: + ip link add consu-query-in type veth peer name consu-query-out -startChain: + ip link set consu-query-in netns consu-query -startChain: + ip netns exec consu-query ip addr add 7.7.8.253/24 dev consu-query-in -startChain: + ip link set consu-query-out master virtual-bridge -startChain: + ip link set consu-query-out up -startChain: + ip netns exec consu-query ip link set dev consu-query-in up -startChain: + ip netns exec consu-query ip link set dev lo up -startChain: + interchain-security-cd init --home /consu/query --chain-id=consu query -startChain: {"app_message":{"auth":{"accounts":[],"params":{"max_memo_characters":"256","sig_verify_cost_ed25519":"590","sig_verify_cost_secp256k1":"1000","tx_sig_limit":"7","tx_size_cost_per_byte":"10"}},"authz":{"authorization":[]},"bank":{"balances":[],"denom_metadata":[],"params":{"default_send_enabled":true,"send_enabled":[]},"supply":[]},"capability":{"index":"1","owners":[]},"ccvconsumer":{"height_to_valset_update_id":[],"initial_val_set":[],"last_transmission_block_height":{"height":"0"},"maturing_packets":[],"new_chain":false,"outstanding_downtime_slashing":[],"params":{"blocks_per_distribution_transmission":"1000","ccv_timeout_period":"2419200s","consumer_redistribution_fraction":"0.75","distribution_transmission_channel":"","enabled":false,"historical_entries":"10000","provider_fee_pool_addr_str":"","provider_reward_denoms":[],"reward_denoms":[],"soft_opt_out_threshold":"0.05","transfer_timeout_period":"3600s","unbonding_period":"1728000s"},"pending_consumer_packets":{"list":[]},"preCCV":false,"provider_channel_id":"","provider_client_id":"","provider_client_state":null,"provider_consensus_state":null},"crisis":{"constant_fee":{"amount":"1000","denom":"stake"}},"evidence":{"evidence":[]},"feegrant":{"allowances":[]},"ibc":{"channel_genesis":{"ack_sequences":[],"acknowledgements":[],"channels":[],"commitments":[],"next_channel_sequence":"0","receipts":[],"recv_sequences":[],"send_sequences":[]},"client_genesis":{"clients":[],"clients_consensus":[],"clients_metadata":[],"create_localhost":false,"next_client_sequence":"0","params":{"allowed_clients":["06-solomachine","07-tendermint"]}},"connection_genesis":{"client_connection_paths":[],"connections":[],"next_connection_sequence":"0","params":{"max_expected_time_per_block":"30000000000"}}},"params":null,"slashing":{"missed_blocks":[],"params":{"downtime_jail_duration":"600s","min_signed_per_window":"0.500000000000000000","signed_blocks_window":"100","slash_fraction_double_sign":"0.050000000000000000","slash_fraction_downtime":"0.010000000000000000"},"signing_infos":[]},"transfer":{"denom_traces":[],"params":{"receive_enabled":true,"send_enabled":true},"port_id":"transfer"},"upgrade":{},"vesting":{}},"chain_id":"consu","gentxs_dir":"","moniker":"query","node_id":"377889fb856cf87acca74727a2d8ffee2abd9409"} -startChain: + cp /consu/genesis.json /consu/query/config/genesis.json -startChain: + QUERY_GAIA_HOME='--home /consu/query' -startChain: + QUERY_RPC_ADDRESS='--rpc.laddr tcp://7.7.8.253:26658' -startChain: + QUERY_GRPC_ADDRESS='--grpc.address 7.7.8.253:9091' -startChain: + QUERY_LISTEN_ADDRESS='--address tcp://7.7.8.253:26655' -startChain: + QUERY_P2P_ADDRESS='--p2p.laddr tcp://7.7.8.253:26656' -startChain: + QUERY_LOG_LEVEL='--log_level info' -startChain: + QUERY_ENABLE_WEBGRPC=--grpc-web.enable=false -startChain: + QUERY_PERSISTENT_PEERS= -startChain: ++ seq 0 0 -startChain: + for j in $(seq 0 $(($NODES - 1))) -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].val_id' -startChain: + PEER_VAL_ID=alice -startChain: ++ echo '[{"mnemonic":"pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear","allocation":"10000000000stake","stake":"500000000stake","val_id":"alice","priv_validator_key":"{\"address\":\"06C0F3E47CC5C748269088DC2F36411D3AAA27C6\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ==\"}}","node_key":"{\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA==\"}}","ip_suffix":"4","consumer_mnemonic":"exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty","consumer_priv_validator_key":"{\"address\":\"DF090A4880B54CD57B2A79E64D9E969BD7514B09\",\"pub_key\":{\"type\":\"tendermint/PubKeyEd25519\",\"value\":\"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes=\"},\"priv_key\":{\"type\":\"tendermint/PrivKeyEd25519\",\"value\":\"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w==\"}}","start_with_consumer_key":true}]' -startChain: ++ jq -r '.[0].ip_suffix' -startChain: + PEER_VAL_IP_SUFFIX=4 -startChain: ++ interchain-security-cd tendermint show-node-id --home /consu/validatoralice -startChain: + NODE_ID=8339e14baab81c2a2350e261962263397a8d7fb0 -startChain: + ADDRESS=8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656 -startChain: + QUERY_PERSISTENT_PEERS=,8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656 -startChain: + QUERY_PERSISTENT_PEERS='--p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656' -startChain: + ARGS='--home /consu/query --address tcp://7.7.8.253:26655 --rpc.laddr tcp://7.7.8.253:26658 --grpc.address 7.7.8.253:9091 --log_level info --p2p.laddr tcp://7.7.8.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656' -startChain: + [[ false != \t\r\u\e ]] -startChain: + echo 'Node addresses:' -startChain: + echo 7.7.8.4:26655, -startChain: + echo 'Node homes:' -startChain: + echo /consu/validatoralice, -startChain: + NODE_LISTEN_ADDR_STR=7.7.8.4:26655 -startChain: + NODE_HOMES=/consu/validatoralice -startChain: + [[ false == \t\r\u\e ]] -startChain: + [[ false == \t\r\u\e ]] -startChain: + set +e -startChain: Node addresses: -startChain: 7.7.8.4:26655, -startChain: Node homes: -startChain: /consu/validatoralice, -startChain: + ip netns exec consu-query interchain-security-cd --home /consu/query --address tcp://7.7.8.253:26655 --rpc.laddr tcp://7.7.8.253:26658 --grpc.address 7.7.8.253:9091 --log_level info --p2p.laddr tcp://7.7.8.253:26656 --grpc-web.enable=false --p2p.persistent_peers 8339e14baab81c2a2350e261962263397a8d7fb0@7.7.8.4:26656 start -startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: Error: post failed: Post "http://7.7.8.253:26658": dial tcp 7.7.8.253:26658: connect: connection refused -startChain: Usage: -startChain: simd query block [height] [flags] -startChain: -startChain: Flags: -startChain: -h, --help help for block -startChain: -n, --node string Node to connect to (default "tcp://localhost:26657") -startChain: -startChain: Global Flags: -startChain: --chain-id string The network chain ID -startChain: --home string directory for config and data (default "/root/.interchain-security-c") -startChain: --log_format string The logging format (json|plain) (default "plain") -startChain: --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) (default "info") -startChain: --trace print out full stack trace on errors -startChain: -startChain: + sleep 0.3 -startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + sleep 0.3 -startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + sleep 0.3 -startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: + sleep 0.3 -startChain: + interchain-security-cd query block --node tcp://7.7.8.253:26658 -startChain: + grep -q -v '{"block_id":{"hash":"","parts":{"total":0,"hash": -startChain: ""}},"block":null}' -startChain: done!!!!!!!! -Add to hermes alice -exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty -running misbehaviour: step 6 == addIbcConnectionAction -addIbcConnection: 2023-07-06T13:41:33.651990Z INFO ThreadId(01) using default configuration from '/root/.hermes/config.toml' -addIbcConnection: 2023-07-06T13:41:33.652224Z INFO ThreadId(01) running Hermes v1.4.0+7e5bdd2c -addIbcConnection: 2023-07-06T13:41:33.673137Z INFO ThreadId(01) Creating a new connection with pre-existing clients 07-tendermint-0 and 07-tendermint-0 -addIbcConnection: 2023-07-06T13:41:33.674718Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: UNINITIALIZED, UNINITIALIZED -addIbcConnection: 2023-07-06T13:41:33.682110Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}: sending 1 messages as 1 batches to chain consu in parallel -addIbcConnection: 2023-07-06T13:41:33.682142Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIbcConnection: 2023-07-06T13:41:33.687746Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}:estimate_gas: tx simulation successful, gas amount used: 64850 -addIbcConnection: 2023-07-06T13:41:33.687779Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: send_tx: using 64850 gas, fee Fee { amount: "0stake", gas_limit: 71335 } id=consu -addIbcConnection: 2023-07-06T13:41:33.697971Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: gas estimation succeeded -addIbcConnection: 2023-07-06T13:41:33.697990Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=0}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(9EC204029FE95E4401C7F0C76B214CBE221EC0E348C63575329871E4E089F0C7) } account.sequence.old=0 account.sequence.new=1 -addIbcConnection: 2023-07-06T13:41:33.698402Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenInit}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) 9EC204029FE95E4401C7F0C76B214CBE221EC0E348C63575329871E4E089F0C7 -addIbcConnection: 2023-07-06T13:41:34.604085Z INFO ThreadId(01) 🥂 consu => OpenInitConnection(OpenInit { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: None, counterparty_client_id: 07-tendermint-0 } }) at height 0-3 -addIbcConnection: 2023-07-06T13:41:37.605836Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: INIT, UNINITIALIZED -addIbcConnection: 2023-07-06T13:41:37.617177Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-35}:foreign_client.build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-35}: building a MsgUpdateAnyClient from trusted height 0-24 to target height 0-35 -addIbcConnection: 2023-07-06T13:41:37.617653Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}: sending 1 messages as 1 batches to chain consu in parallel -addIbcConnection: 2023-07-06T13:41:37.617670Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIbcConnection: 2023-07-06T13:41:37.620190Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}:estimate_gas: tx simulation successful, gas amount used: 90567 -addIbcConnection: 2023-07-06T13:41:37.620218Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: send_tx: using 90567 gas, fee Fee { amount: "0stake", gas_limit: 99623 } id=consu -addIbcConnection: 2023-07-06T13:41:37.621620Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: gas estimation succeeded -addIbcConnection: 2023-07-06T13:41:37.621635Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=consu account.sequence=1}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(74509CD276025408AD15BFE5EB5BB74E40CF90BDA872E3317B2A280A8086DD0A) } account.sequence.old=1 account.sequence.new=2 -addIbcConnection: 2023-07-06T13:41:37.621669Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=update client on source for ConnectionOpenTry}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) 74509CD276025408AD15BFE5EB5BB74E40CF90BDA872E3317B2A280A8086DD0A -addIbcConnection: 2023-07-06T13:41:39.566356Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-8}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-8}: building a MsgUpdateAnyClient from trusted height 0-1 to target height 0-8 -addIbcConnection: 2023-07-06T13:41:39.569629Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}: sending 2 messages as 1 batches to chain provi in parallel -addIbcConnection: 2023-07-06T13:41:39.569653Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIbcConnection: 2023-07-06T13:41:39.573097Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}:estimate_gas: tx simulation successful, gas amount used: 145023 -addIbcConnection: 2023-07-06T13:41:39.573117Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: send_tx: using 145023 gas, fee Fee { amount: "0stake", gas_limit: 159525 } id=provi -addIbcConnection: 2023-07-06T13:41:39.575214Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: gas estimation succeeded -addIbcConnection: 2023-07-06T13:41:39.575232Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=4}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(E8BA3F162F915E5AD46FEEC74A590485D86C1A1894D0A4BA359A103A578CC39A) } account.sequence.old=4 account.sequence.new=5 -addIbcConnection: 2023-07-06T13:41:39.575250Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenTry}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) E8BA3F162F915E5AD46FEEC74A590485D86C1A1894D0A4BA359A103A578CC39A -addIbcConnection: 2023-07-06T13:41:40.784731Z INFO ThreadId(01) 🥂 provi => OpenTryConnection(OpenTry { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-0 } }) at height 0-38 -addIbcConnection: 2023-07-06T13:41:43.788504Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: INIT, TRYOPEN -addIbcConnection: 2023-07-06T13:41:43.803088Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-12}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-12}: building a MsgUpdateAnyClient from trusted height 0-8 to target height 0-12 -addIbcConnection: 2023-07-06T13:41:43.803748Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}: sending 1 messages as 1 batches to chain provi in parallel -addIbcConnection: 2023-07-06T13:41:43.803768Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIbcConnection: 2023-07-06T13:41:43.806064Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}:estimate_gas: tx simulation successful, gas amount used: 89528 -addIbcConnection: 2023-07-06T13:41:43.806098Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: send_tx: using 89528 gas, fee Fee { amount: "0stake", gas_limit: 98480 } id=provi -addIbcConnection: 2023-07-06T13:41:43.807899Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: gas estimation succeeded -addIbcConnection: 2023-07-06T13:41:43.807927Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=provi account.sequence=5}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(EA9E9ACDC04C5B01D1FB896F0F890654A638E0B941A5158A10E8875CE77652F2) } account.sequence.old=5 account.sequence.new=6 -addIbcConnection: 2023-07-06T13:41:43.807958Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=update client on source for ConnectionOpenAck}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) EA9E9ACDC04C5B01D1FB896F0F890654A638E0B941A5158A10E8875CE77652F2 -addIbcConnection: 2023-07-06T13:41:45.847364Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-43}:foreign_client.build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-43}: building a MsgUpdateAnyClient from trusted height 0-35 to target height 0-43 -addIbcConnection: 2023-07-06T13:41:45.849127Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 -addIbcConnection: 2023-07-06T13:41:46.351889Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 -addIbcConnection: 2023-07-06T13:41:46.854377Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 -addIbcConnection: 2023-07-06T13:41:47.357350Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 -addIbcConnection: 2023-07-06T13:41:47.858783Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 -addIbcConnection: 2023-07-06T13:41:48.361092Z WARN ThreadId(01) client consensus proof height too high, waiting for destination chain to advance beyond 0-12 -addIbcConnection: 2023-07-06T13:41:48.864586Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}: sending 2 messages as 1 batches to chain consu in parallel -addIbcConnection: 2023-07-06T13:41:48.864751Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIbcConnection: 2023-07-06T13:41:48.869116Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}:estimate_gas: tx simulation successful, gas amount used: 136553 -addIbcConnection: 2023-07-06T13:41:48.869258Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: send_tx: using 136553 gas, fee Fee { amount: "0stake", gas_limit: 150208 } id=consu -addIbcConnection: 2023-07-06T13:41:48.872435Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: gas estimation succeeded -addIbcConnection: 2023-07-06T13:41:48.872457Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=2}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(BC11B3B03639E601B8BCEA4E435FB7C2738A66FFAE084B86901F4C08CE7A3088) } account.sequence.old=2 account.sequence.new=3 -addIbcConnection: 2023-07-06T13:41:48.872490Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ConnectionOpenAck}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) BC11B3B03639E601B8BCEA4E435FB7C2738A66FFAE084B86901F4C08CE7A3088 -addIbcConnection: 2023-07-06T13:41:49.782925Z INFO ThreadId(01) 🥂 consu => OpenAckConnection(OpenAck { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-0 } }) at height 0-14 -addIbcConnection: 2023-07-06T13:41:52.788392Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: OPEN, TRYOPEN -addIbcConnection: 2023-07-06T13:41:52.906982Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-17}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-17}: building a MsgUpdateAnyClient from trusted height 0-12 to target height 0-17 -addIbcConnection: 2023-07-06T13:41:52.908074Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}: sending 2 messages as 1 batches to chain provi in parallel -addIbcConnection: 2023-07-06T13:41:52.908099Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIbcConnection: 2023-07-06T13:41:52.910991Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}:estimate_gas: tx simulation successful, gas amount used: 107744 -addIbcConnection: 2023-07-06T13:41:52.911015Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: send_tx: using 107744 gas, fee Fee { amount: "0stake", gas_limit: 118518 } id=provi -addIbcConnection: 2023-07-06T13:41:52.912787Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: gas estimation succeeded -addIbcConnection: 2023-07-06T13:41:52.912816Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=6}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(19E113EC6AC82948F02EDA44129BC048E0A47162E5067D1943846AAF50A42614) } account.sequence.old=6 account.sequence.new=7 -addIbcConnection: 2023-07-06T13:41:52.912837Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ConnectionOpenConfirm}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) 19E113EC6AC82948F02EDA44129BC048E0A47162E5067D1943846AAF50A42614 -addIbcConnection: 2023-07-06T13:41:54.425339Z INFO ThreadId(01) 🥂 provi => OpenConfirmConnection(OpenConfirm { Attributes { connection_id: connection-0, client_id: 07-tendermint-0, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-0 } }) at height 0-51 -addIbcConnection: SUCCESS Connection { -addIbcConnection: delay_period: 0ns, -addIbcConnection: a_side: ConnectionSide { -addIbcConnection: chain: BaseChainHandle { -addIbcConnection: chain_id: ChainId { -addIbcConnection: id: "consu", -addIbcConnection: version: 0, -addIbcConnection: }, -addIbcConnection: runtime_sender: Sender { .. }, -addIbcConnection: }, -addIbcConnection: client_id: ClientId( -addIbcConnection: "07-tendermint-0", -addIbcConnection: ), -addIbcConnection: connection_id: Some( -addIbcConnection: ConnectionId( -addIbcConnection: "connection-0", -addIbcConnection: ), -addIbcConnection: ), -addIbcConnection: }, -addIbcConnection: 2023-07-06T13:41:57.429980Z DEBUG ThreadId(01) do_conn_open_handshake with connection end states: OPEN, OPEN -addIbcConnection: 2023-07-06T13:41:57.430033Z INFO ThreadId(01) connection handshake already finished for Connection { delay_period: 0ns, a_side: ConnectionSide { chain: BaseChainHandle { chain_id: consu }, client_id: 07-tendermint-0, connection_id: connection-0 }, b_side: ConnectionSide { chain: BaseChainHandle { chain_id: provi }, client_id: 07-tendermint-0, connection_id: connection-0 } } -addIbcConnection: b_side: ConnectionSide { -addIbcConnection: chain: BaseChainHandle { -addIbcConnection: chain_id: ChainId { -addIbcConnection: id: "provi", -addIbcConnection: version: 0, -addIbcConnection: }, -addIbcConnection: runtime_sender: Sender { .. }, -addIbcConnection: }, -addIbcConnection: client_id: ClientId( -addIbcConnection: "07-tendermint-0", -addIbcConnection: ), -addIbcConnection: connection_id: Some( -addIbcConnection: ConnectionId( -addIbcConnection: "connection-0", -addIbcConnection: ), -addIbcConnection: ), -addIbcConnection: }, -addIbcConnection: } -running misbehaviour: step 7 == addIbcChannelAction -addIbcChannel cmd: /usr/local/bin/docker exec interchain-security-instance hermes create channel --a-chain consu --a-connection connection-0 --a-port consumer --b-port provider --channel-version 1 --order ordered -addIBCChannel: 2023-07-06T13:41:57.547830Z INFO ThreadId(01) using default configuration from '/root/.hermes/config.toml' -addIBCChannel: 2023-07-06T13:41:57.548081Z INFO ThreadId(01) running Hermes v1.4.0+7e5bdd2c -addIBCChannel: 2023-07-06T13:41:57.555837Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: UNINITIALIZED, UNINITIALIZED -addIBCChannel: 2023-07-06T13:41:57.558015Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}: sending 1 messages as 1 batches to chain consu in parallel -addIBCChannel: 2023-07-06T13:41:57.558033Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIBCChannel: 2023-07-06T13:41:57.559559Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}:estimate_gas: tx simulation successful, gas amount used: 105716 -addIBCChannel: 2023-07-06T13:41:57.559585Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: send_tx: using 105716 gas, fee Fee { amount: "0stake", gas_limit: 116287 } id=consu -addIBCChannel: 2023-07-06T13:41:57.560421Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: gas estimation succeeded -addIBCChannel: 2023-07-06T13:41:57.560456Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:send_tx_with_account_sequence_retry{chain=consu account.sequence=3}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(D292C3B02B20817864D17E714B857671429E40C903B1A138BFFE01FA9DC36481) } account.sequence.old=3 account.sequence.new=4 -addIBCChannel: 2023-07-06T13:41:57.560603Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenInit}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) D292C3B02B20817864D17E714B857671429E40C903B1A138BFFE01FA9DC36481 -addIBCChannel: 2023-07-06T13:41:58.766853Z INFO ThreadId(01) 🎊 consu => OpenInitChannel(OpenInit { port_id: consumer, channel_id: channel-0, connection_id: None, counterparty_port_id: provider, counterparty_channel_id: None }) at height 0-23 -addIBCChannel: 2023-07-06T13:42:01.768412Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: INIT, UNINITIALIZED -addIBCChannel: 2023-07-06T13:42:01.992553Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-26}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-26}: building a MsgUpdateAnyClient from trusted height 0-17 to target height 0-26 -addIBCChannel: 2023-07-06T13:42:01.995379Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}: sending 2 messages as 1 batches to chain provi in parallel -addIBCChannel: 2023-07-06T13:42:01.995414Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIBCChannel: 2023-07-06T13:42:01.998257Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}:estimate_gas: tx simulation successful, gas amount used: 178082 -addIBCChannel: 2023-07-06T13:42:01.998390Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: send_tx: using 178082 gas, fee Fee { amount: "0stake", gas_limit: 195890 } id=provi -addIBCChannel: 2023-07-06T13:42:02.000446Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: gas estimation succeeded -addIBCChannel: 2023-07-06T13:42:02.000519Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=provi account.sequence=7}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(FBECF31CD695F9309D5B2873D99952012B57A09E319F58DDA24EEB1C3CBB708B) } account.sequence.old=7 account.sequence.new=8 -addIBCChannel: 2023-07-06T13:42:02.000567Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenTry}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) FBECF31CD695F9309D5B2873D99952012B57A09E319F58DDA24EEB1C3CBB708B -addIBCChannel: 2023-07-06T13:42:03.208124Z INFO ThreadId(01) 🎊 provi => OpenTryChannel(OpenTry { port_id: provider, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: consumer, counterparty_channel_id: channel-0 }) at height 0-60 -addIBCChannel: 2023-07-06T13:42:06.211700Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: INIT, TRYOPEN -addIBCChannel: 2023-07-06T13:42:07.155628Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-64}:foreign_client.build_update_client_with_trusted{client=provi->consu:07-tendermint-0 target_height=0-64}: building a MsgUpdateAnyClient from trusted height 0-43 to target height 0-64 -addIBCChannel: 2023-07-06T13:42:07.156874Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}: sending 2 messages as 1 batches to chain consu in parallel -addIBCChannel: 2023-07-06T13:42:07.156904Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIBCChannel: 2023-07-06T13:42:07.162517Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}:estimate_gas: tx simulation successful, gas amount used: 191360 -addIBCChannel: 2023-07-06T13:42:07.162556Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: send_tx: using 191360 gas, fee Fee { amount: "0stake", gas_limit: 210496 } id=consu -addIBCChannel: 2023-07-06T13:42:07.164845Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: gas estimation succeeded -addIBCChannel: 2023-07-06T13:42:07.164886Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:send_tx_with_account_sequence_retry{chain=consu account.sequence=4}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(23718DD074BC636CFB0241A6AF6596CBD307001ED137545BB1358175D170A1EB) } account.sequence.old=4 account.sequence.new=5 -addIBCChannel: 2023-07-06T13:42:07.164925Z DEBUG ThreadId(06) send_messages_and_wait_commit{chain=consu tracking_id=ChannelOpenAck}:wait_for_block_commits{id=consu}: waiting for commit of tx hashes(s) 23718DD074BC636CFB0241A6AF6596CBD307001ED137545BB1358175D170A1EB -addIBCChannel: 2023-07-06T13:42:08.070971Z INFO ThreadId(01) 🎊 consu => OpenAckChannel(OpenAck { port_id: consumer, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: provider, counterparty_channel_id: channel-0 }) at height 0-32 -addIBCChannel: 2023-07-06T13:42:11.075915Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: OPEN, TRYOPEN -addIBCChannel: 2023-07-06T13:42:11.916333Z DEBUG ThreadId(01) foreign_client.wait_and_build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-36}:foreign_client.build_update_client_with_trusted{client=consu->provi:07-tendermint-0 target_height=0-36}: building a MsgUpdateAnyClient from trusted height 0-26 to target height 0-36 -addIBCChannel: 2023-07-06T13:42:11.917179Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}: sending 2 messages as 1 batches to chain provi in parallel -addIBCChannel: 2023-07-06T13:42:11.917200Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: max fee, for use in tx simulation: Fee { amount: "0stake", gas_limit: 20000000 } -addIBCChannel: 2023-07-06T13:42:11.919198Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}:estimate_gas: tx simulation successful, gas amount used: 130497 -addIBCChannel: 2023-07-06T13:42:11.919309Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: send_tx: using 130497 gas, fee Fee { amount: "0stake", gas_limit: 143546 } id=provi -addIBCChannel: 2023-07-06T13:42:11.920857Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: gas estimation succeeded -addIBCChannel: 2023-07-06T13:42:11.920873Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=provi account.sequence=8}: tx was successfully broadcasted, increasing account sequence number response=Response { code: Ok, data: b"", log: "[]", hash: Hash::Sha256(3EDF18EF3501459702FD77A210F897DA50CE5C1330D1924EDF9E68FB51C83560) } account.sequence.old=8 account.sequence.new=9 -addIBCChannel: 2023-07-06T13:42:11.920893Z DEBUG ThreadId(15) send_messages_and_wait_commit{chain=provi tracking_id=ChannelOpenConfirm}:wait_for_block_commits{id=provi}: waiting for commit of tx hashes(s) 3EDF18EF3501459702FD77A210F897DA50CE5C1330D1924EDF9E68FB51C83560 -addIBCChannel: 2023-07-06T13:42:12.525147Z INFO ThreadId(01) 🎊 provi => OpenConfirmChannel(OpenConfirm { port_id: provider, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: consumer, counterparty_channel_id: channel-0 }) at height 0-69 -addIBCChannel: 2023-07-06T13:42:15.528560Z DEBUG ThreadId(01) do_chan_open_handshake with channel end states: OPEN, OPEN -addIBCChannel: 2023-07-06T13:42:15.528613Z INFO ThreadId(01) channel handshake already finished for Channel { ordering: ORDER_ORDERED, a_side: ChannelSide { chain: BaseChainHandle { chain_id: consu }, client_id: 07-tendermint-0, connection_id: connection-0, port_id: consumer, channel_id: channel-0, version: 1 }, b_side: ChannelSide { chain: BaseChainHandle { chain_id: provi }, client_id: 07-tendermint-0, connection_id: connection-0, port_id: provider, channel_id: channel-0, version: 1 }, connection_delay: 0ns } -addIBCChannel: SUCCESS Channel { -addIBCChannel: ordering: Ordered, -addIBCChannel: a_side: ChannelSide { -addIBCChannel: chain: BaseChainHandle { -addIBCChannel: chain_id: ChainId { -addIBCChannel: id: "consu", -addIBCChannel: version: 0, -addIBCChannel: }, -addIBCChannel: runtime_sender: Sender { .. }, -addIBCChannel: }, -addIBCChannel: client_id: ClientId( -addIBCChannel: "07-tendermint-0", -addIBCChannel: ), -addIBCChannel: connection_id: ConnectionId( -addIBCChannel: "connection-0", -addIBCChannel: ), -addIBCChannel: port_id: PortId( -addIBCChannel: "consumer", -addIBCChannel: ), -addIBCChannel: channel_id: Some( -addIBCChannel: ChannelId( -addIBCChannel: "channel-0", -addIBCChannel: ), -addIBCChannel: ), -addIBCChannel: version: Some( -addIBCChannel: Version( -addIBCChannel: "1", -addIBCChannel: ), -addIBCChannel: ), -addIBCChannel: }, -addIBCChannel: b_side: ChannelSide { -addIBCChannel: chain: BaseChainHandle { -addIBCChannel: chain_id: ChainId { -addIBCChannel: id: "provi", -addIBCChannel: version: 0, -addIBCChannel: }, -addIBCChannel: runtime_sender: Sender { .. }, -addIBCChannel: }, -addIBCChannel: client_id: ClientId( -addIBCChannel: "07-tendermint-0", -addIBCChannel: ), -addIBCChannel: connection_id: ConnectionId( -addIBCChannel: "connection-0", -addIBCChannel: ), -addIBCChannel: port_id: PortId( -addIBCChannel: "provider", -addIBCChannel: ), -addIBCChannel: channel_id: Some( -addIBCChannel: ChannelId( -addIBCChannel: "channel-0", -addIBCChannel: ), -addIBCChannel: ), -addIBCChannel: version: Some( -addIBCChannel: Version( -addIBCChannel: "1", -addIBCChannel: ), -addIBCChannel: ), -addIBCChannel: }, -addIBCChannel: connection_delay: 0ns, -addIBCChannel: } -running misbehaviour: step 8 == delegateTokensAction -delegate cmd: /usr/local/bin/docker exec interchain-security-instance interchain-security-pd tx staking delegate cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng 11000000stake --from validatoralice --chain-id provi --home /provi/validatoralice --node tcp://7.7.7.4:26658 --keyring-backend test -b block -y -running misbehaviour: step 9 == relayPacketsAction -running misbehaviour: step 10 == forkConsumerChainAction -forkConsumerChain - reconfigure node cmd: /usr/local/bin/docker exec interchain-security-instance /bin/bash /testnet-scripts/fork-consumer.sh interchain-security-cd alice consu 7.7.8 7.7.7 pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear /root/.hermes/config_fork.toml -fork consumer validator : + BIN=interchain-security-cd -fork consumer validator : + VAL_ID=alice -fork consumer validator : + CHAIN_ID=consu -fork consumer validator : + CONS_CHAIN_PREFIX=7.7.8 -fork consumer validator : + PROV_CHAIN_PREFIX=7.7.7 -fork consumer validator : + VAL_MNEMONIC='pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear' -fork consumer validator : + FORK_HERMES_CONFIG=/root/.hermes/config_fork.toml -fork consumer validator : + FORK_NODE_DIR=/consu/validatorfork -fork consumer validator : + mkdir /consu/validatorfork -fork consumer validator : + cp -r /consu/validatoralice/config /consu/validatoralice/data /consu/validatoralice/keyring-test /consu/validatoralice/logs /consu/validatorfork -fork consumer validator : + rm -f /consu/validatorfork/addrbook.json -fork consumer validator : + tee /root/.hermes/config_fork.toml -fork consumer validator : [global] -fork consumer validator : log_level = "debug" -fork consumer validator : -fork consumer validator : [mode] -fork consumer validator : -fork consumer validator : [mode.clients] -fork consumer validator : enabled = true -fork consumer validator : refresh = true -fork consumer validator : misbehaviour = true -fork consumer validator : -fork consumer validator : [mode.connections] -fork consumer validator : enabled = false -fork consumer validator : -fork consumer validator : [mode.channels] -fork consumer validator : enabled = false -fork consumer validator : -fork consumer validator : [mode.packets] -fork consumer validator : enabled = true -fork consumer validator : -fork consumer validator : [[chains]] -fork consumer validator : id = "consu" -fork consumer validator : ccv_consumer_chain = true -fork consumer validator : account_prefix = "cosmos" -fork consumer validator : clock_drift = "5s" -fork consumer validator : gas_multiplier = 1.1 -fork consumer validator : grpc_addr = "tcp://7.7.8.252:9091" -fork consumer validator : key_name = "query" -fork consumer validator : max_gas = 2000000 -fork consumer validator : rpc_addr = "http://7.7.8.252:26658" -fork consumer validator : rpc_timeout = "10s" -fork consumer validator : store_prefix = "ibc" -fork consumer validator : trusting_period = "2days" -fork consumer validator : websocket_addr = "ws://7.7.8.252:26658/websocket" -fork consumer validator : -fork consumer validator : [chains.gas_price] -fork consumer validator : denom = "stake" -fork consumer validator : price = 0.00 -fork consumer validator : -fork consumer validator : [chains.trust_threshold] -fork consumer validator : denominator = "3" -fork consumer validator : numerator = "1" -fork consumer validator : -fork consumer validator : [[chains]] -fork consumer validator : id = "provi" -fork consumer validator : account_prefix = "cosmos" -fork consumer validator : clock_drift = "5s" -fork consumer validator : gas_multiplier = 1.1 -fork consumer validator : grpc_addr = "tcp://7.7.7.4:9091" -fork consumer validator : key_name = "query" -fork consumer validator : max_gas = 2000000 -fork consumer validator : rpc_addr = "http://7.7.7.4:26658" -fork consumer validator : rpc_timeout = "10s" -fork consumer validator : store_prefix = "ibc" -fork consumer validator : trusting_period = "2days" -fork consumer validator : websocket_addr = "ws://7.7.7.4:26658/websocket" -fork consumer validator : -fork consumer validator : [chains.gas_price] -fork consumer validator : denom = "stake" -fork consumer validator : price = 0.00 -fork consumer validator : -fork consumer validator : [chains.trust_threshold] -fork consumer validator : denominator = "3" -fork consumer validator : numerator = "1" -fork consumer validator : + echo pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear -fork consumer validator : + ip netns exec consu-sybil interchain-security-cd --home /consu/validatorfork --address tcp://7.7.8.252:26655 --rpc.laddr tcp://7.7.8.252:26658 --grpc.address 7.7.8.252:9091 --log_level info --p2p.laddr tcp://7.7.8.252:26656 --grpc-web.enable=false start -running misbehaviour: step 11 == startRelayerAction -started Hermes -running misbehaviour: step 12 == updateLightClientAction -=============== finished misbehaviour tests in 1m40.817256s =============== -=============== tearing down misbehaviour testRun =============== -TOTAL TIME ELAPSED: 2m28.504412625s From 0a6cd879d266f0a5e8ff86f6673c8ff76ea5f5bc Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 6 Jul 2023 15:58:18 +0200 Subject: [PATCH 06/29] typo --- Dockerfile | 2 +- tests/e2e/step_delegation.go | 43 ++++++++++++++++++++++-- tests/e2e/steps_consumer_misbehaviour.go | 2 +- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 03939617be..ba351f2e78 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,7 +36,7 @@ FROM informalofftermatt/cometmock:latest as cometmock-builder # Get GoRelayer FROM informalofftermatt/gorelayer:nogas AS gorelayer-builder -FROM --platform=linux/amd64 fedora:36 +FROM --platform=linux/arm64 fedora:36 RUN dnf update -y RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq USER root diff --git a/tests/e2e/step_delegation.go b/tests/e2e/step_delegation.go index 05c963d81a..f33fc136d4 100644 --- a/tests/e2e/step_delegation.go +++ b/tests/e2e/step_delegation.go @@ -14,13 +14,32 @@ func stepsDelegate(consumerName string) []Step { chainID("provi"): ChainState{ ValPowers: &map[validatorID]uint{ validatorID("alice"): 511, - validatorID("bob"): 20, + validatorID("bob"): 500, + validatorID("carol"): 500, }, }, chainID(consumerName): ChainState{ ValPowers: &map[validatorID]uint{ validatorID("alice"): 500, - validatorID("bob"): 20, + validatorID("bob"): 500, + validatorID("carol"): 500, + }, + }, + }, + }, + { + action: SendTokensAction{ + chain: chainID(consumerName), + from: validatorID("alice"), + to: validatorID("bob"), + amount: 1, + }, + state: State{ + chainID(consumerName): ChainState{ + // Tx should not go through, ICS channel is not setup until first VSC packet has been relayed to consumer + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 10000000000, + validatorID("bob"): 10000000000, }, }, }, @@ -36,7 +55,25 @@ func stepsDelegate(consumerName string) []Step { chainID(consumerName): ChainState{ ValPowers: &map[validatorID]uint{ validatorID("alice"): 511, - validatorID("bob"): 20, + validatorID("bob"): 500, + validatorID("carol"): 500, + }, + }, + }, + }, + { + action: SendTokensAction{ + chain: chainID(consumerName), + from: validatorID("alice"), + to: validatorID("bob"), + amount: 1, + }, + state: State{ + chainID(consumerName): ChainState{ + // Now tx should execute + ValBalances: &map[validatorID]uint{ + validatorID("alice"): 9999999999, + validatorID("bob"): 10000000001, }, }, }, diff --git a/tests/e2e/steps_consumer_misbehaviour.go b/tests/e2e/steps_consumer_misbehaviour.go index 13ac2d9361..b4f6e1eb3f 100644 --- a/tests/e2e/steps_consumer_misbehaviour.go +++ b/tests/e2e/steps_consumer_misbehaviour.go @@ -5,7 +5,7 @@ import ( ) // starts a provider chain and a consumer chain with two validators, -// where the voting power distributed in order that the smallest validator +// where the voting power is distributed in order that the smallest validator // can soft opt-out of validating the consumer chain. func stepsStartChainsWithSoftOptOut(consumerName string) []Step { s := []Step{ From 9ad0721b11c354a6f40391d2778f63245950c13e Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Thu, 6 Jul 2023 16:47:40 +0200 Subject: [PATCH 07/29] update doc --- Dockerfile | 2 +- tests/e2e/steps_consumer_misbehaviour.go | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba351f2e78..03939617be 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,7 +36,7 @@ FROM informalofftermatt/cometmock:latest as cometmock-builder # Get GoRelayer FROM informalofftermatt/gorelayer:nogas AS gorelayer-builder -FROM --platform=linux/arm64 fedora:36 +FROM --platform=linux/amd64 fedora:36 RUN dnf update -y RUN dnf install -y which iproute iputils procps-ng vim-minimal tmux net-tools htop jq USER root diff --git a/tests/e2e/steps_consumer_misbehaviour.go b/tests/e2e/steps_consumer_misbehaviour.go index b4f6e1eb3f..7cd4dbd613 100644 --- a/tests/e2e/steps_consumer_misbehaviour.go +++ b/tests/e2e/steps_consumer_misbehaviour.go @@ -198,14 +198,14 @@ func stepsStartChainsWithSoftOptOut(consumerName string) []Step { return s } -// stepsCauseConsumerMisbehaviour causes a consumer chain to misbehave by creating a fork, -// and relays the light client attack evidence to the provider +// stepsCauseConsumerMisbehaviour forks a consumer chain in order to cause a ICS misbehaviour. +// The malicious validator behind the attack gets jailed and the consumer client freezed on the provider. func stepsCauseConsumerMisbehaviour(consumerName string) []Step { consumerClientID := "07-tendermint-0" forkRelayerConfig := "/root/.hermes/config_fork.toml" - return []Step{ { + // start a consumer chain's validator clone action: forkConsumerChainAction{ consumerChain: chainID(consumerName), providerChain: chainID("provi"), @@ -215,6 +215,7 @@ func stepsCauseConsumerMisbehaviour(consumerName string) []Step { state: State{}, }, { + // start relayer to detect ICS misbehaviour action: startRelayerAction{}, state: State{ // The consumer client shouldn't be frozen on the provider yet since @@ -230,6 +231,8 @@ func stepsCauseConsumerMisbehaviour(consumerName string) []Step { }, }, { + // update the consumer client hosted on the provider + // using the consumer fork as the primary node action: updateLightClientAction{ hostChain: chainID("provi"), relayerConfig: forkRelayerConfig, From e0de36d72f25306e2039d997d01210953f14961d Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Tue, 11 Jul 2023 10:09:56 +0200 Subject: [PATCH 08/29] update ICS misbehaviour test --- .../ccv/provider/v1/tx.proto | 3 +- tests/e2e/actions.go | 2 - tests/integration/misbehaviour.go | 133 +++++++++++++----- x/ccv/provider/client/cli/tx.go | 8 +- x/ccv/provider/keeper/misbehaviour.go | 14 +- x/ccv/provider/keeper/msg_server.go | 9 +- x/ccv/provider/types/codec.go | 5 + x/ccv/provider/types/msg.go | 19 ++- x/ccv/provider/types/tx.pb.go | 79 +++++------ 9 files changed, 179 insertions(+), 93 deletions(-) diff --git a/proto/interchain_security/ccv/provider/v1/tx.proto b/proto/interchain_security/ccv/provider/v1/tx.proto index 61be3064ea..dafd1cee79 100644 --- a/proto/interchain_security/ccv/provider/v1/tx.proto +++ b/proto/interchain_security/ccv/provider/v1/tx.proto @@ -7,7 +7,6 @@ import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "google/protobuf/any.proto"; -import "ibc/lightclients/tendermint/v1/tendermint.proto"; // Msg defines the Msg service. service Msg { @@ -55,7 +54,7 @@ message MsgSubmitConsumerMisbehaviour { string submitter = 1; // The Misbehaviour of the consumer chain wrapping // two conflicting IBC headers - ibc.lightclients.tendermint.v1.Misbehaviour misbehaviour = 2; + google.protobuf.Any misbehaviour = 2; } message MsgSubmitConsumerMisbehaviourResponse {} diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index 2e1863f070..b48d20b687 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -840,8 +840,6 @@ func (tr TestRun) addChainToHermes( } saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, mnemonic, "/root/.hermes/mnemonic.txt") - fmt.Println("Add to hermes", action.validator) - fmt.Println(mnemonic) //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. bz, err = exec.Command("docker", "exec", tr.containerConfig.instanceName, "bash", "-c", saveMnemonicCommand, diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 13ad7e6230..1628bf890c 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -4,66 +4,123 @@ import ( "time" sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) +// TestHandleConsumerMisbehaviour verifies first that ICS misbehaviour is handled +// only if its conlflicting headers are valid. Then, it checks +// that validators who signed the incorrect header are jailed and tombstoned. func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.SetupCCVChannel(s.path) // required to have the consumer client revision height greater than 0 s.SendEmptyVSCPacket() + // create signing info for all validators for _, v := range s.providerChain.Vals.Validators { s.setDefaultValSigningInfo(*v) } - altTime := s.providerCtx().BlockTime().Add(time.Minute) + // create a new header timestamp + headerTs := s.providerCtx().BlockTime().Add(time.Minute) + // get trusted validators and height clientHeight := s.consumerChain.LastHeader.TrustedHeight clientTMValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators) clientSigners := s.consumerChain.Signers + // create an alternative validator set using more than 1/3 of the trusted validator set altValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators[0:2]) altSigners := make(map[string]tmtypes.PrivValidator, 1) altSigners[clientTMValset.Validators[0].Address.String()] = clientSigners[clientTMValset.Validators[0].Address.String()] altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] - - misb := &ibctmtypes.Misbehaviour{ - ClientId: s.path.EndpointA.ClientID, - Header1: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - altTime, - clientTMValset, - clientTMValset, - clientTMValset, - clientSigners, - ), - Header2: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - altTime, - altValset, - altValset, - clientTMValset, - altSigners, - ), + testCases := []struct { + name string + misbehaviour *ibctmtypes.Misbehaviour + expPass bool + }{ + { + "invalid misbehaviour with empty header1 - shouldn't pass", + &ibctmtypes.Misbehaviour{ + Header1: &ibctmtypes.Header{}, + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "valid misbehaviour - should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, } - err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), *misb) - s.NoError(err) - - for _, v := range altValset.Validators { - consuAddr := sdk.ConsAddress(v.Address.Bytes()) - provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, types.NewConsumerConsAddress(consuAddr)) - val, ok := s.providerApp.GetTestStakingKeeper().GetValidatorByConsAddr(s.providerCtx(), provAddr.Address) - s.Require().True(ok) - s.Require().True(val.Jailed) - s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provAddr.Address)) + for _, tc := range testCases { + s.Run(tc.name, func() { + err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), tc.misbehaviour) + if tc.expPass { + s.NoError(err) + // Check that only the validators of the alternate validator set + // , i.e. altValset, are jailed and tombstoned on the provider + for _, consuVal := range clientTMValset.Validators { + provVal := s.getProviderValFromConsumerVal(*consuVal) + provConsAddr, err := provVal.GetConsAddr() + s.Require().NoError(err) + if _, ok := altSigners[consuVal.Address.String()]; ok { + s.Require().True(provVal.Jailed) + s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } else { + s.Require().False(provVal.Jailed) + s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } + } + } else { + // Check that no validators are jailed or tombstoned on the provider + for _, consuVal := range clientTMValset.Validators { + s.Error(err) + provVal := s.getProviderValFromConsumerVal(*consuVal) + s.Require().False(provVal.Jailed) + provConsAddr, err := provVal.GetConsAddr() + s.Require().NoError(err) + s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } + } + }) } } @@ -234,3 +291,11 @@ func (s *CCVTestSuite) TestConstructLightClientEvidence() { }) } } + +func (s *CCVTestSuite) getProviderValFromConsumerVal(valAddr tmtypes.Validator) stakingtypes.Validator { + consuAddr := types.NewConsumerConsAddress(sdk.ConsAddress(valAddr.Address.Bytes())) + provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, consuAddr) + val, ok := s.providerApp.GetTestStakingKeeper().GetValidatorByConsAddr(s.providerCtx(), provAddr.Address) + s.Require().True(ok) + return val +} diff --git a/x/ccv/provider/client/cli/tx.go b/x/ccv/provider/client/cli/tx.go index 87b4179b0b..f6776fc1f9 100644 --- a/x/ccv/provider/client/cli/tx.go +++ b/x/ccv/provider/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" sdk "github.com/cosmos/cosmos-sdk/types" - ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ) @@ -117,12 +117,12 @@ func NewSubmitConsumerMisbehaviourCmd() *cobra.Command { WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) submitter := clientCtx.GetFromAddress() - var misbehavior ibctmtypes.Misbehaviour - if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[1]), &misbehavior); err != nil { + var misbehaviour exported.Misbehaviour + if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[1]), misbehaviour); err != nil { return err } - msg, err := types.NewMsgSubmitConsumerMisbehaviour(submitter, &misbehavior) + msg, err := types.NewMsgSubmitConsumerMisbehaviour(submitter, misbehaviour) if err != nil { return err } diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index e285adf652..61748d615f 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -8,6 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) @@ -15,20 +16,25 @@ import ( // HandleConsumerMisbehaviour checks whether the given IBC misbehaviour is valid and, if they are, the misbehaving // CheckConsumerMisbehaviour check that the given IBC misbehaviour headers forms a valid light client attack evidence. // proceed to the jailing and tombstoning of the bzyantine validators. -func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { +func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exported.Misbehaviour) error { logger := ctx.Logger() - if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, &misbehaviour); err != nil { + // Check that the validity of the misbehaviour + if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, misbehaviour); err != nil { logger.Info("Misbehaviour rejected", err.Error()) return err } + + // Assign the Tendermint client misbehaviour concrete type + tmMisbehaviour := misbehaviour.(*ibctmtypes.Misbehaviour) + // Since the misbehaviour packet was received within the trusting period // w.r.t to the last trusted consensus it entails that the infraction age // isn't too old. see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go // construct a ligth client attack evidence - evidence, err := k.ConstructLightClientEvidence(ctx, misbehaviour) + evidence, err := k.ConstructLightClientEvidence(ctx, *tmMisbehaviour) if err != nil { return err } @@ -39,7 +45,7 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmty for _, v := range evidence.ByzantineValidators { // convert consumer consensus address consuAddr := sdk.ConsAddress(v.Address.Bytes()) - provAddr := k.GetProviderAddrFromConsumerAddr(ctx, misbehaviour.Header1.Header.ChainID, types.NewConsumerConsAddress(consuAddr)) + provAddr := k.GetProviderAddrFromConsumerAddr(ctx, tmMisbehaviour.Header1.Header.ChainID, types.NewConsumerConsAddress(consuAddr)) k.stakingKeeper.ValidatorByConsAddr(ctx, consuAddr) val, ok := k.stakingKeeper.GetValidatorByConsAddr(ctx, provAddr.Address) diff --git a/x/ccv/provider/keeper/msg_server.go b/x/ccv/provider/keeper/msg_server.go index ca22b66f0d..d11ba91685 100644 --- a/x/ccv/provider/keeper/msg_server.go +++ b/x/ccv/provider/keeper/msg_server.go @@ -7,6 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ccvtypes "github.com/cosmos/interchain-security/v2/x/ccv/types" tmprotocrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" @@ -129,7 +130,13 @@ func (k msgServer) RegisterConsumerRewardDenom(goCtx context.Context, msg *types func (k msgServer) SubmitConsumerMisbehaviour(goCtx context.Context, msg *types.MsgSubmitConsumerMisbehaviour) (*types.MsgSubmitConsumerMisbehaviourResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - if err := k.Keeper.HandleConsumerMisbehaviour(ctx, *msg.Misbehaviour); err != nil { + + misbehaviour, err := clienttypes.UnpackMisbehaviour(msg.Misbehaviour) + if err != nil { + return nil, err + } + + if err := k.Keeper.HandleConsumerMisbehaviour(ctx, misbehaviour); err != nil { return &types.MsgSubmitConsumerMisbehaviourResponse{}, err } diff --git a/x/ccv/provider/types/codec.go b/x/ccv/provider/types/codec.go index 0ef3c2d296..2f28b398f5 100644 --- a/x/ccv/provider/types/codec.go +++ b/x/ccv/provider/types/codec.go @@ -6,6 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" ) // RegisterLegacyAminoCodec registers the necessary x/ibc transfer interfaces and concrete types @@ -40,6 +41,10 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { (*sdk.Msg)(nil), &MsgSubmitConsumerMisbehaviour{}, ) + registry.RegisterInterface( + "ibc.core.client.v1.Misbehaviour", + (*exported.Misbehaviour)(nil), + ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/ccv/provider/types/msg.go b/x/ccv/provider/types/msg.go index 9496122342..d3d5a8a60b 100644 --- a/x/ccv/provider/types/msg.go +++ b/x/ccv/provider/types/msg.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" + ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" ) // provider message types @@ -147,8 +147,13 @@ func (msg MsgRegisterConsumerRewardDenom) ValidateBasic() error { return nil } -func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, m *ibctmtypes.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { - return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: m}, nil +func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, misbehaviour exported.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { + anyMisbehaviour, err := ibcclienttypes.PackMisbehaviour(misbehaviour) + if err != nil { + return nil, err + } + + return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: anyMisbehaviour}, nil } // Route implements the sdk.Msg interface. @@ -164,7 +169,11 @@ func (msg MsgSubmitConsumerMisbehaviour) ValidateBasic() error { if msg.Submitter == "" { return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, msg.Submitter) } - if err := msg.Misbehaviour.ValidateBasic(); err != nil { + misbehaviour, err := ibcclienttypes.UnpackMisbehaviour(msg.Misbehaviour) + if err != nil { + return err + } + if err := misbehaviour.ValidateBasic(); err != nil { return err } return nil diff --git a/x/ccv/provider/types/tx.pb.go b/x/ccv/provider/types/tx.pb.go index f27ab52533..84f93dc4b1 100644 --- a/x/ccv/provider/types/tx.pb.go +++ b/x/ccv/provider/types/tx.pb.go @@ -6,8 +6,7 @@ package types import ( context "context" fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/codec/types" - types "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" + types "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" @@ -199,7 +198,7 @@ type MsgSubmitConsumerMisbehaviour struct { Submitter string `protobuf:"bytes,1,opt,name=submitter,proto3" json:"submitter,omitempty"` // The Misbehaviour of the consumer chain wrapping // two conflicting IBC headers - Misbehaviour *types.Misbehaviour `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"` + Misbehaviour *types.Any `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"` } func (m *MsgSubmitConsumerMisbehaviour) Reset() { *m = MsgSubmitConsumerMisbehaviour{} } @@ -285,43 +284,41 @@ func init() { } var fileDescriptor_43221a4391e9fbf4 = []byte{ - // 568 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x3f, 0x6f, 0x13, 0x4f, - 0x10, 0xf5, 0xfd, 0xa2, 0x1f, 0x24, 0x9b, 0x80, 0xc4, 0xc9, 0x85, 0x73, 0x98, 0x33, 0x18, 0x01, - 0x29, 0xc2, 0xae, 0x6c, 0x0a, 0x44, 0x24, 0x0a, 0x3b, 0x34, 0x10, 0x59, 0x42, 0x47, 0x81, 0x44, - 0x81, 0x75, 0xb7, 0xbb, 0xac, 0x57, 0xf8, 0x76, 0x4f, 0xbb, 0x7b, 0x47, 0xee, 0x1b, 0x50, 0x42, - 0x85, 0xe8, 0xf2, 0x01, 0x90, 0xf8, 0x1a, 0x94, 0x29, 0xa9, 0x10, 0xb2, 0x1b, 0x6a, 0x4a, 0x2a, - 0xe4, 0xfb, 0x63, 0x5f, 0x84, 0xb1, 0x2c, 0xa0, 0xdb, 0x99, 0x79, 0xfb, 0xde, 0x1b, 0xcd, 0x68, - 0xc0, 0x3e, 0x17, 0x86, 0x2a, 0x3c, 0xf2, 0xb9, 0x18, 0x6a, 0x8a, 0x63, 0xc5, 0x4d, 0x8a, 0x30, - 0x4e, 0x50, 0xa4, 0x64, 0xc2, 0x09, 0x55, 0x28, 0xe9, 0x20, 0x73, 0x0c, 0x23, 0x25, 0x8d, 0xb4, - 0xaf, 0x2f, 0x41, 0x43, 0x8c, 0x13, 0x58, 0xa2, 0x61, 0xd2, 0x71, 0x9a, 0x4c, 0x4a, 0x36, 0xa6, - 0xc8, 0x8f, 0x38, 0xf2, 0x85, 0x90, 0xc6, 0x37, 0x5c, 0x0a, 0x9d, 0x53, 0x38, 0x75, 0x26, 0x99, - 0xcc, 0x9e, 0x68, 0xf6, 0x2a, 0xb2, 0xbb, 0x58, 0xea, 0x50, 0xea, 0x61, 0x5e, 0xc8, 0x83, 0xb2, - 0x54, 0xd0, 0x65, 0x51, 0x10, 0xbf, 0x40, 0xbe, 0x48, 0x8b, 0x12, 0xe2, 0x01, 0x46, 0x63, 0xce, - 0x46, 0x06, 0x8f, 0x39, 0x15, 0x46, 0x23, 0x43, 0x05, 0xa1, 0x2a, 0xe4, 0xc2, 0x64, 0xbe, 0xe7, - 0x51, 0xfe, 0xa1, 0xfd, 0xce, 0x02, 0xf5, 0x81, 0x66, 0x3d, 0xad, 0x39, 0x13, 0x87, 0x52, 0xe8, - 0x38, 0xa4, 0xea, 0x88, 0xa6, 0xf6, 0x2e, 0xd8, 0xcc, 0xbb, 0xe2, 0xa4, 0x61, 0x5d, 0xb5, 0xf6, - 0xb6, 0xbc, 0xf3, 0x59, 0xfc, 0x90, 0xd8, 0x77, 0xc1, 0x85, 0xb2, 0xbb, 0xa1, 0x4f, 0x88, 0x6a, - 0xfc, 0x37, 0xab, 0xf7, 0xed, 0xef, 0x5f, 0x5a, 0x17, 0x53, 0x3f, 0x1c, 0x1f, 0xb4, 0x67, 0x59, - 0xaa, 0x75, 0xdb, 0xdb, 0x29, 0x81, 0x3d, 0x42, 0x94, 0x7d, 0x0d, 0xec, 0xe0, 0x42, 0x62, 0xf8, - 0x92, 0xa6, 0x8d, 0x8d, 0x8c, 0x77, 0x1b, 0x2f, 0x64, 0x0f, 0x36, 0x5f, 0x9f, 0xb4, 0x6a, 0xdf, - 0x4e, 0x5a, 0xb5, 0xb6, 0x0b, 0x9a, 0xcb, 0x8c, 0x79, 0x54, 0x47, 0x52, 0x68, 0xda, 0x7e, 0x0e, - 0xdc, 0x81, 0x66, 0x1e, 0x65, 0x5c, 0x1b, 0xaa, 0x4a, 0x84, 0x47, 0x5f, 0xf9, 0x8a, 0x3c, 0xa0, - 0x42, 0x86, 0x76, 0x1d, 0xfc, 0x4f, 0x66, 0x8f, 0xc2, 0x7f, 0x1e, 0xd8, 0x4d, 0xb0, 0x45, 0x68, - 0x24, 0x35, 0x37, 0xb2, 0x70, 0xee, 0x2d, 0x12, 0x15, 0xfd, 0x3d, 0x70, 0x73, 0x35, 0xff, 0xdc, - 0xc9, 0x7b, 0x0b, 0x5c, 0x19, 0x68, 0xf6, 0x24, 0x0e, 0x42, 0x6e, 0x4a, 0xe0, 0x80, 0xeb, 0x80, - 0x8e, 0xfc, 0x84, 0xcb, 0x58, 0xcd, 0x34, 0x75, 0x56, 0x35, 0x54, 0x15, 0x6e, 0x16, 0x09, 0xfb, - 0x31, 0xd8, 0x09, 0x2b, 0xe8, 0xcc, 0xd4, 0x76, 0x77, 0x1f, 0xf2, 0x00, 0xc3, 0xea, 0x2c, 0x61, - 0x65, 0x7a, 0x49, 0x07, 0x56, 0x15, 0xbc, 0x33, 0x0c, 0x95, 0x2e, 0x6e, 0x81, 0x1b, 0x2b, 0xad, - 0x95, 0x4d, 0x74, 0x7f, 0x6c, 0x80, 0x8d, 0x81, 0x66, 0xf6, 0x5b, 0x0b, 0x5c, 0xfa, 0x75, 0x1b, - 0xee, 0xc1, 0x35, 0xf6, 0x1c, 0x2e, 0x9b, 0x97, 0xd3, 0xfb, 0xe3, 0xaf, 0xa5, 0x37, 0xfb, 0xa3, - 0x05, 0x2e, 0xaf, 0x1a, 0xf4, 0xe1, 0xba, 0x12, 0x2b, 0x48, 0x9c, 0xa3, 0x7f, 0x40, 0x32, 0x77, - 0xfc, 0xc1, 0x02, 0xce, 0x8a, 0x7d, 0xe8, 0xaf, 0xab, 0xf5, 0x7b, 0x0e, 0xe7, 0xd1, 0xdf, 0x73, - 0x94, 0x76, 0xfb, 0x4f, 0x3f, 0x4d, 0x5c, 0xeb, 0x74, 0xe2, 0x5a, 0x5f, 0x27, 0xae, 0xf5, 0x66, - 0xea, 0xd6, 0x4e, 0xa7, 0x6e, 0xed, 0xf3, 0xd4, 0xad, 0x3d, 0xbb, 0xcf, 0xb8, 0x19, 0xc5, 0x01, - 0xc4, 0x32, 0x2c, 0x8e, 0x10, 0x5a, 0xc8, 0xde, 0x9e, 0xdf, 0xc7, 0xa4, 0x8b, 0x8e, 0xcf, 0x1e, - 0x49, 0x93, 0x46, 0x54, 0x07, 0xe7, 0xb2, 0x2b, 0x73, 0xe7, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xe3, 0x4f, 0x57, 0x26, 0x55, 0x05, 0x00, 0x00, + // 534 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xb1, 0x6f, 0xd3, 0x40, + 0x14, 0xc6, 0x63, 0x22, 0xa0, 0xbd, 0x06, 0x24, 0xac, 0x0c, 0xa9, 0x09, 0x0e, 0x04, 0x01, 0x1d, + 0xc0, 0x56, 0xc3, 0x00, 0x54, 0x62, 0x48, 0xca, 0x02, 0x55, 0x16, 0x33, 0x20, 0x31, 0x10, 0x39, + 0x77, 0xc7, 0xe5, 0x44, 0x7d, 0x67, 0xdd, 0x3b, 0x9b, 0x7a, 0x64, 0x63, 0x84, 0x89, 0xb5, 0x7f, + 0x00, 0x12, 0xff, 0x06, 0x63, 0x47, 0x26, 0x84, 0x92, 0x85, 0x99, 0x91, 0x09, 0xc5, 0xf6, 0x25, + 0xa9, 0x08, 0x51, 0x04, 0x6c, 0xf7, 0xde, 0xfb, 0xfc, 0x7d, 0x3f, 0xe9, 0x59, 0x0f, 0xdd, 0xe6, + 0x42, 0x53, 0x85, 0x47, 0x21, 0x17, 0x03, 0xa0, 0x38, 0x51, 0x5c, 0x67, 0x3e, 0xc6, 0xa9, 0x1f, + 0x2b, 0x99, 0x72, 0x42, 0x95, 0x9f, 0xee, 0xfa, 0xfa, 0xc8, 0x8b, 0x95, 0xd4, 0xd2, 0xbe, 0xbe, + 0x44, 0xed, 0x61, 0x9c, 0x7a, 0x46, 0xed, 0xa5, 0xbb, 0x4e, 0x93, 0x49, 0xc9, 0x0e, 0xa9, 0x1f, + 0xc6, 0xdc, 0x0f, 0x85, 0x90, 0x3a, 0xd4, 0x5c, 0x0a, 0x28, 0x2c, 0x9c, 0x3a, 0x93, 0x4c, 0xe6, + 0x4f, 0x7f, 0xfa, 0x2a, 0xbb, 0xdb, 0x58, 0x42, 0x24, 0x61, 0x50, 0x0c, 0x8a, 0xc2, 0x8c, 0x4a, + 0xbb, 0xbc, 0x1a, 0x26, 0x2f, 0xfd, 0x50, 0x64, 0xc5, 0xa8, 0xfd, 0xc1, 0x42, 0xf5, 0x3e, 0xb0, + 0x2e, 0x00, 0x67, 0x62, 0x5f, 0x0a, 0x48, 0x22, 0xaa, 0x0e, 0x68, 0x66, 0x6f, 0xa3, 0x8d, 0x02, + 0x92, 0x93, 0x86, 0x75, 0xd5, 0xda, 0xd9, 0x0c, 0xce, 0xe7, 0xf5, 0x63, 0x62, 0xdf, 0x43, 0x17, + 0x0c, 0xec, 0x20, 0x24, 0x44, 0x35, 0xce, 0x4c, 0xe7, 0x3d, 0xfb, 0xc7, 0xd7, 0xd6, 0xc5, 0x2c, + 0x8c, 0x0e, 0xf7, 0xda, 0xd3, 0x2e, 0x05, 0x68, 0x07, 0x35, 0x23, 0xec, 0x12, 0xa2, 0xec, 0x6b, + 0xa8, 0x86, 0xcb, 0x88, 0xc1, 0x2b, 0x9a, 0x35, 0xaa, 0xb9, 0xef, 0x16, 0x9e, 0xc7, 0xee, 0x6d, + 0xbc, 0x3d, 0x6e, 0x55, 0xbe, 0x1f, 0xb7, 0x2a, 0x6d, 0x17, 0x35, 0x97, 0x81, 0x05, 0x14, 0x62, + 0x29, 0x80, 0xb6, 0x5f, 0x20, 0xb7, 0x0f, 0x2c, 0xa0, 0x8c, 0x83, 0xa6, 0xca, 0x28, 0x02, 0xfa, + 0x3a, 0x54, 0xe4, 0x11, 0x15, 0x32, 0xb2, 0xeb, 0xe8, 0x2c, 0x99, 0x3e, 0x4a, 0xfe, 0xa2, 0xb0, + 0x9b, 0x68, 0x93, 0xd0, 0x58, 0x02, 0xd7, 0xb2, 0x24, 0x0f, 0xe6, 0x8d, 0x85, 0xfc, 0x1d, 0x74, + 0x73, 0xb5, 0xff, 0x8c, 0xe4, 0x8d, 0x85, 0xae, 0xf4, 0x81, 0x3d, 0x4d, 0x86, 0x11, 0xd7, 0x46, + 0xd8, 0xe7, 0x30, 0xa4, 0xa3, 0x30, 0xe5, 0x32, 0x51, 0xd3, 0x4c, 0xc8, 0xa7, 0x9a, 0xaa, 0x92, + 0x66, 0xde, 0xb0, 0xef, 0xa3, 0x5a, 0xb4, 0xa0, 0xce, 0xa1, 0xb6, 0x3a, 0x75, 0xaf, 0xd8, 0x9a, + 0x67, 0xb6, 0xe6, 0x75, 0x45, 0x16, 0x9c, 0x52, 0x2e, 0xd0, 0xde, 0x42, 0x37, 0x56, 0x22, 0x18, + 0xd8, 0xce, 0xcf, 0x2a, 0xaa, 0xf6, 0x81, 0xd9, 0xef, 0x2d, 0x74, 0xe9, 0xf7, 0xad, 0x3f, 0xf0, + 0xd6, 0xf8, 0x3d, 0xbd, 0x65, 0x7b, 0x71, 0xba, 0x7f, 0xfd, 0xa9, 0x61, 0xb3, 0x3f, 0x59, 0xe8, + 0xf2, 0xaa, 0x85, 0xee, 0xaf, 0x1b, 0xb1, 0xc2, 0xc4, 0x39, 0xf8, 0x0f, 0x26, 0x33, 0xe2, 0x8f, + 0x16, 0x72, 0x56, 0xec, 0xbd, 0xb7, 0x6e, 0xd6, 0x9f, 0x3d, 0x9c, 0x27, 0xff, 0xee, 0x61, 0x70, + 0x7b, 0xcf, 0x3e, 0x8f, 0x5d, 0xeb, 0x64, 0xec, 0x5a, 0xdf, 0xc6, 0xae, 0xf5, 0x6e, 0xe2, 0x56, + 0x4e, 0x26, 0x6e, 0xe5, 0xcb, 0xc4, 0xad, 0x3c, 0x7f, 0xc8, 0xb8, 0x1e, 0x25, 0x43, 0x0f, 0xcb, + 0xa8, 0xbc, 0x1d, 0xfe, 0x3c, 0xf6, 0xce, 0xec, 0xac, 0xa5, 0x1d, 0xff, 0xe8, 0xf4, 0x6d, 0xd3, + 0x59, 0x4c, 0x61, 0x78, 0x2e, 0xff, 0x49, 0xef, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5a, + 0xaf, 0x54, 0x0c, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1218,7 +1215,7 @@ func (m *MsgSubmitConsumerMisbehaviour) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Misbehaviour == nil { - m.Misbehaviour = &types.Misbehaviour{} + m.Misbehaviour = &types.Any{} } if err := m.Misbehaviour.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err From 1b718be335576ca975d9664f05cdd1c612df552f Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Tue, 11 Jul 2023 10:16:02 +0200 Subject: [PATCH 09/29] update ICS misbehaviour test --- tests/integration/misbehaviour.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 1628bf890c..9934f1d77b 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -5,8 +5,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" + ibcsolotypes "github.com/cosmos/ibc-go/v4/modules/light-clients/06-solomachine/types" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) @@ -39,9 +41,14 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] testCases := []struct { name string - misbehaviour *ibctmtypes.Misbehaviour + misbehaviour exported.Misbehaviour expPass bool }{ + { + "invalid misbehaviour client type - shouldn't pass", + &ibcsolotypes.Misbehaviour{}, + false, + }, { "invalid misbehaviour with empty header1 - shouldn't pass", &ibctmtypes.Misbehaviour{ From 4357efa05c6ec1453a30ba9a28d26dd6f59b13da Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Tue, 11 Jul 2023 11:21:31 +0200 Subject: [PATCH 10/29] revert mixed commits --- .../ccv/provider/v1/tx.proto | 3 +- tests/e2e/actions.go | 2 + tests/integration/misbehaviour.go | 140 +++++------------- x/ccv/provider/client/cli/tx.go | 8 +- x/ccv/provider/keeper/misbehaviour.go | 14 +- x/ccv/provider/keeper/msg_server.go | 9 +- x/ccv/provider/types/codec.go | 5 - x/ccv/provider/types/msg.go | 19 +-- x/ccv/provider/types/tx.pb.go | 79 +++++----- 9 files changed, 93 insertions(+), 186 deletions(-) diff --git a/proto/interchain_security/ccv/provider/v1/tx.proto b/proto/interchain_security/ccv/provider/v1/tx.proto index dafd1cee79..61be3064ea 100644 --- a/proto/interchain_security/ccv/provider/v1/tx.proto +++ b/proto/interchain_security/ccv/provider/v1/tx.proto @@ -7,6 +7,7 @@ import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "google/protobuf/any.proto"; +import "ibc/lightclients/tendermint/v1/tendermint.proto"; // Msg defines the Msg service. service Msg { @@ -54,7 +55,7 @@ message MsgSubmitConsumerMisbehaviour { string submitter = 1; // The Misbehaviour of the consumer chain wrapping // two conflicting IBC headers - google.protobuf.Any misbehaviour = 2; + ibc.lightclients.tendermint.v1.Misbehaviour misbehaviour = 2; } message MsgSubmitConsumerMisbehaviourResponse {} diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index b48d20b687..2e1863f070 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -840,6 +840,8 @@ func (tr TestRun) addChainToHermes( } saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, mnemonic, "/root/.hermes/mnemonic.txt") + fmt.Println("Add to hermes", action.validator) + fmt.Println(mnemonic) //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. bz, err = exec.Command("docker", "exec", tr.containerConfig.instanceName, "bash", "-c", saveMnemonicCommand, diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 9934f1d77b..13ad7e6230 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -4,130 +4,66 @@ import ( "time" sdk "github.com/cosmos/cosmos-sdk/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" - ibcsolotypes "github.com/cosmos/ibc-go/v4/modules/light-clients/06-solomachine/types" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) -// TestHandleConsumerMisbehaviour verifies first that ICS misbehaviour is handled -// only if its conlflicting headers are valid. Then, it checks -// that validators who signed the incorrect header are jailed and tombstoned. func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.SetupCCVChannel(s.path) // required to have the consumer client revision height greater than 0 s.SendEmptyVSCPacket() - // create signing info for all validators for _, v := range s.providerChain.Vals.Validators { s.setDefaultValSigningInfo(*v) } - // create a new header timestamp - headerTs := s.providerCtx().BlockTime().Add(time.Minute) + altTime := s.providerCtx().BlockTime().Add(time.Minute) - // get trusted validators and height clientHeight := s.consumerChain.LastHeader.TrustedHeight clientTMValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators) clientSigners := s.consumerChain.Signers - // create an alternative validator set using more than 1/3 of the trusted validator set altValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators[0:2]) altSigners := make(map[string]tmtypes.PrivValidator, 1) altSigners[clientTMValset.Validators[0].Address.String()] = clientSigners[clientTMValset.Validators[0].Address.String()] altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] - testCases := []struct { - name string - misbehaviour exported.Misbehaviour - expPass bool - }{ - { - "invalid misbehaviour client type - shouldn't pass", - &ibcsolotypes.Misbehaviour{}, - false, - }, - { - "invalid misbehaviour with empty header1 - shouldn't pass", - &ibctmtypes.Misbehaviour{ - Header1: &ibctmtypes.Header{}, - Header2: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - headerTs, - altValset, - altValset, - clientTMValset, - altSigners, - ), - }, - false, - }, - { - "valid misbehaviour - should pass", - &ibctmtypes.Misbehaviour{ - ClientId: s.path.EndpointA.ClientID, - Header1: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - headerTs, - clientTMValset, - clientTMValset, - clientTMValset, - clientSigners, - ), - // the resulting Header2 will have a different BlockID - // than Header1 since doesn't share the same valset and signers - Header2: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - headerTs, - altValset, - altValset, - clientTMValset, - altSigners, - ), - }, - true, - }, + + misb := &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + altTime, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + altTime, + altValset, + altValset, + clientTMValset, + altSigners, + ), } - for _, tc := range testCases { - s.Run(tc.name, func() { - err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), tc.misbehaviour) - if tc.expPass { - s.NoError(err) - // Check that only the validators of the alternate validator set - // , i.e. altValset, are jailed and tombstoned on the provider - for _, consuVal := range clientTMValset.Validators { - provVal := s.getProviderValFromConsumerVal(*consuVal) - provConsAddr, err := provVal.GetConsAddr() - s.Require().NoError(err) - if _, ok := altSigners[consuVal.Address.String()]; ok { - s.Require().True(provVal.Jailed) - s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) - } else { - s.Require().False(provVal.Jailed) - s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) - } - } - } else { - // Check that no validators are jailed or tombstoned on the provider - for _, consuVal := range clientTMValset.Validators { - s.Error(err) - provVal := s.getProviderValFromConsumerVal(*consuVal) - s.Require().False(provVal.Jailed) - provConsAddr, err := provVal.GetConsAddr() - s.Require().NoError(err) - s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) - } - } - }) + err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), *misb) + s.NoError(err) + + for _, v := range altValset.Validators { + consuAddr := sdk.ConsAddress(v.Address.Bytes()) + provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, types.NewConsumerConsAddress(consuAddr)) + val, ok := s.providerApp.GetTestStakingKeeper().GetValidatorByConsAddr(s.providerCtx(), provAddr.Address) + s.Require().True(ok) + s.Require().True(val.Jailed) + s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provAddr.Address)) } } @@ -298,11 +234,3 @@ func (s *CCVTestSuite) TestConstructLightClientEvidence() { }) } } - -func (s *CCVTestSuite) getProviderValFromConsumerVal(valAddr tmtypes.Validator) stakingtypes.Validator { - consuAddr := types.NewConsumerConsAddress(sdk.ConsAddress(valAddr.Address.Bytes())) - provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, consuAddr) - val, ok := s.providerApp.GetTestStakingKeeper().GetValidatorByConsAddr(s.providerCtx(), provAddr.Address) - s.Require().True(ok) - return val -} diff --git a/x/ccv/provider/client/cli/tx.go b/x/ccv/provider/client/cli/tx.go index f6776fc1f9..87b4179b0b 100644 --- a/x/ccv/provider/client/cli/tx.go +++ b/x/ccv/provider/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" + ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ) @@ -117,12 +117,12 @@ func NewSubmitConsumerMisbehaviourCmd() *cobra.Command { WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) submitter := clientCtx.GetFromAddress() - var misbehaviour exported.Misbehaviour - if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[1]), misbehaviour); err != nil { + var misbehavior ibctmtypes.Misbehaviour + if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[1]), &misbehavior); err != nil { return err } - msg, err := types.NewMsgSubmitConsumerMisbehaviour(submitter, misbehaviour) + msg, err := types.NewMsgSubmitConsumerMisbehaviour(submitter, &misbehavior) if err != nil { return err } diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 61748d615f..e285adf652 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -8,7 +8,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) @@ -16,25 +15,20 @@ import ( // HandleConsumerMisbehaviour checks whether the given IBC misbehaviour is valid and, if they are, the misbehaving // CheckConsumerMisbehaviour check that the given IBC misbehaviour headers forms a valid light client attack evidence. // proceed to the jailing and tombstoning of the bzyantine validators. -func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exported.Misbehaviour) error { +func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { logger := ctx.Logger() - // Check that the validity of the misbehaviour - if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, misbehaviour); err != nil { + if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, &misbehaviour); err != nil { logger.Info("Misbehaviour rejected", err.Error()) return err } - - // Assign the Tendermint client misbehaviour concrete type - tmMisbehaviour := misbehaviour.(*ibctmtypes.Misbehaviour) - // Since the misbehaviour packet was received within the trusting period // w.r.t to the last trusted consensus it entails that the infraction age // isn't too old. see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go // construct a ligth client attack evidence - evidence, err := k.ConstructLightClientEvidence(ctx, *tmMisbehaviour) + evidence, err := k.ConstructLightClientEvidence(ctx, misbehaviour) if err != nil { return err } @@ -45,7 +39,7 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte for _, v := range evidence.ByzantineValidators { // convert consumer consensus address consuAddr := sdk.ConsAddress(v.Address.Bytes()) - provAddr := k.GetProviderAddrFromConsumerAddr(ctx, tmMisbehaviour.Header1.Header.ChainID, types.NewConsumerConsAddress(consuAddr)) + provAddr := k.GetProviderAddrFromConsumerAddr(ctx, misbehaviour.Header1.Header.ChainID, types.NewConsumerConsAddress(consuAddr)) k.stakingKeeper.ValidatorByConsAddr(ctx, consuAddr) val, ok := k.stakingKeeper.GetValidatorByConsAddr(ctx, provAddr.Address) diff --git a/x/ccv/provider/keeper/msg_server.go b/x/ccv/provider/keeper/msg_server.go index d11ba91685..ca22b66f0d 100644 --- a/x/ccv/provider/keeper/msg_server.go +++ b/x/ccv/provider/keeper/msg_server.go @@ -7,7 +7,6 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ccvtypes "github.com/cosmos/interchain-security/v2/x/ccv/types" tmprotocrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" @@ -130,13 +129,7 @@ func (k msgServer) RegisterConsumerRewardDenom(goCtx context.Context, msg *types func (k msgServer) SubmitConsumerMisbehaviour(goCtx context.Context, msg *types.MsgSubmitConsumerMisbehaviour) (*types.MsgSubmitConsumerMisbehaviourResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - - misbehaviour, err := clienttypes.UnpackMisbehaviour(msg.Misbehaviour) - if err != nil { - return nil, err - } - - if err := k.Keeper.HandleConsumerMisbehaviour(ctx, misbehaviour); err != nil { + if err := k.Keeper.HandleConsumerMisbehaviour(ctx, *msg.Misbehaviour); err != nil { return &types.MsgSubmitConsumerMisbehaviourResponse{}, err } diff --git a/x/ccv/provider/types/codec.go b/x/ccv/provider/types/codec.go index 2f28b398f5..0ef3c2d296 100644 --- a/x/ccv/provider/types/codec.go +++ b/x/ccv/provider/types/codec.go @@ -6,7 +6,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" ) // RegisterLegacyAminoCodec registers the necessary x/ibc transfer interfaces and concrete types @@ -41,10 +40,6 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { (*sdk.Msg)(nil), &MsgSubmitConsumerMisbehaviour{}, ) - registry.RegisterInterface( - "ibc.core.client.v1.Misbehaviour", - (*exported.Misbehaviour)(nil), - ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/ccv/provider/types/msg.go b/x/ccv/provider/types/msg.go index d3d5a8a60b..9496122342 100644 --- a/x/ccv/provider/types/msg.go +++ b/x/ccv/provider/types/msg.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" + + ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" ) // provider message types @@ -147,13 +147,8 @@ func (msg MsgRegisterConsumerRewardDenom) ValidateBasic() error { return nil } -func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, misbehaviour exported.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { - anyMisbehaviour, err := ibcclienttypes.PackMisbehaviour(misbehaviour) - if err != nil { - return nil, err - } - - return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: anyMisbehaviour}, nil +func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, m *ibctmtypes.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { + return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: m}, nil } // Route implements the sdk.Msg interface. @@ -169,11 +164,7 @@ func (msg MsgSubmitConsumerMisbehaviour) ValidateBasic() error { if msg.Submitter == "" { return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, msg.Submitter) } - misbehaviour, err := ibcclienttypes.UnpackMisbehaviour(msg.Misbehaviour) - if err != nil { - return err - } - if err := misbehaviour.ValidateBasic(); err != nil { + if err := msg.Misbehaviour.ValidateBasic(); err != nil { return err } return nil diff --git a/x/ccv/provider/types/tx.pb.go b/x/ccv/provider/types/tx.pb.go index 84f93dc4b1..f27ab52533 100644 --- a/x/ccv/provider/types/tx.pb.go +++ b/x/ccv/provider/types/tx.pb.go @@ -6,7 +6,8 @@ package types import ( context "context" fmt "fmt" - types "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/cosmos-sdk/codec/types" + types "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" @@ -198,7 +199,7 @@ type MsgSubmitConsumerMisbehaviour struct { Submitter string `protobuf:"bytes,1,opt,name=submitter,proto3" json:"submitter,omitempty"` // The Misbehaviour of the consumer chain wrapping // two conflicting IBC headers - Misbehaviour *types.Any `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"` + Misbehaviour *types.Misbehaviour `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"` } func (m *MsgSubmitConsumerMisbehaviour) Reset() { *m = MsgSubmitConsumerMisbehaviour{} } @@ -284,41 +285,43 @@ func init() { } var fileDescriptor_43221a4391e9fbf4 = []byte{ - // 534 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xb1, 0x6f, 0xd3, 0x40, - 0x14, 0xc6, 0x63, 0x22, 0xa0, 0xbd, 0x06, 0x24, 0xac, 0x0c, 0xa9, 0x09, 0x0e, 0x04, 0x01, 0x1d, - 0xc0, 0x56, 0xc3, 0x00, 0x54, 0x62, 0x48, 0xca, 0x02, 0x55, 0x16, 0x33, 0x20, 0x31, 0x10, 0x39, - 0x77, 0xc7, 0xe5, 0x44, 0x7d, 0x67, 0xdd, 0x3b, 0x9b, 0x7a, 0x64, 0x63, 0x84, 0x89, 0xb5, 0x7f, - 0x00, 0x12, 0xff, 0x06, 0x63, 0x47, 0x26, 0x84, 0x92, 0x85, 0x99, 0x91, 0x09, 0xc5, 0xf6, 0x25, - 0xa9, 0x08, 0x51, 0x04, 0x6c, 0xf7, 0xde, 0xfb, 0xfc, 0x7d, 0x3f, 0xe9, 0x59, 0x0f, 0xdd, 0xe6, - 0x42, 0x53, 0x85, 0x47, 0x21, 0x17, 0x03, 0xa0, 0x38, 0x51, 0x5c, 0x67, 0x3e, 0xc6, 0xa9, 0x1f, - 0x2b, 0x99, 0x72, 0x42, 0x95, 0x9f, 0xee, 0xfa, 0xfa, 0xc8, 0x8b, 0x95, 0xd4, 0xd2, 0xbe, 0xbe, - 0x44, 0xed, 0x61, 0x9c, 0x7a, 0x46, 0xed, 0xa5, 0xbb, 0x4e, 0x93, 0x49, 0xc9, 0x0e, 0xa9, 0x1f, - 0xc6, 0xdc, 0x0f, 0x85, 0x90, 0x3a, 0xd4, 0x5c, 0x0a, 0x28, 0x2c, 0x9c, 0x3a, 0x93, 0x4c, 0xe6, - 0x4f, 0x7f, 0xfa, 0x2a, 0xbb, 0xdb, 0x58, 0x42, 0x24, 0x61, 0x50, 0x0c, 0x8a, 0xc2, 0x8c, 0x4a, - 0xbb, 0xbc, 0x1a, 0x26, 0x2f, 0xfd, 0x50, 0x64, 0xc5, 0xa8, 0xfd, 0xc1, 0x42, 0xf5, 0x3e, 0xb0, - 0x2e, 0x00, 0x67, 0x62, 0x5f, 0x0a, 0x48, 0x22, 0xaa, 0x0e, 0x68, 0x66, 0x6f, 0xa3, 0x8d, 0x02, - 0x92, 0x93, 0x86, 0x75, 0xd5, 0xda, 0xd9, 0x0c, 0xce, 0xe7, 0xf5, 0x63, 0x62, 0xdf, 0x43, 0x17, - 0x0c, 0xec, 0x20, 0x24, 0x44, 0x35, 0xce, 0x4c, 0xe7, 0x3d, 0xfb, 0xc7, 0xd7, 0xd6, 0xc5, 0x2c, - 0x8c, 0x0e, 0xf7, 0xda, 0xd3, 0x2e, 0x05, 0x68, 0x07, 0x35, 0x23, 0xec, 0x12, 0xa2, 0xec, 0x6b, - 0xa8, 0x86, 0xcb, 0x88, 0xc1, 0x2b, 0x9a, 0x35, 0xaa, 0xb9, 0xef, 0x16, 0x9e, 0xc7, 0xee, 0x6d, - 0xbc, 0x3d, 0x6e, 0x55, 0xbe, 0x1f, 0xb7, 0x2a, 0x6d, 0x17, 0x35, 0x97, 0x81, 0x05, 0x14, 0x62, - 0x29, 0x80, 0xb6, 0x5f, 0x20, 0xb7, 0x0f, 0x2c, 0xa0, 0x8c, 0x83, 0xa6, 0xca, 0x28, 0x02, 0xfa, - 0x3a, 0x54, 0xe4, 0x11, 0x15, 0x32, 0xb2, 0xeb, 0xe8, 0x2c, 0x99, 0x3e, 0x4a, 0xfe, 0xa2, 0xb0, - 0x9b, 0x68, 0x93, 0xd0, 0x58, 0x02, 0xd7, 0xb2, 0x24, 0x0f, 0xe6, 0x8d, 0x85, 0xfc, 0x1d, 0x74, - 0x73, 0xb5, 0xff, 0x8c, 0xe4, 0x8d, 0x85, 0xae, 0xf4, 0x81, 0x3d, 0x4d, 0x86, 0x11, 0xd7, 0x46, - 0xd8, 0xe7, 0x30, 0xa4, 0xa3, 0x30, 0xe5, 0x32, 0x51, 0xd3, 0x4c, 0xc8, 0xa7, 0x9a, 0xaa, 0x92, - 0x66, 0xde, 0xb0, 0xef, 0xa3, 0x5a, 0xb4, 0xa0, 0xce, 0xa1, 0xb6, 0x3a, 0x75, 0xaf, 0xd8, 0x9a, - 0x67, 0xb6, 0xe6, 0x75, 0x45, 0x16, 0x9c, 0x52, 0x2e, 0xd0, 0xde, 0x42, 0x37, 0x56, 0x22, 0x18, - 0xd8, 0xce, 0xcf, 0x2a, 0xaa, 0xf6, 0x81, 0xd9, 0xef, 0x2d, 0x74, 0xe9, 0xf7, 0xad, 0x3f, 0xf0, - 0xd6, 0xf8, 0x3d, 0xbd, 0x65, 0x7b, 0x71, 0xba, 0x7f, 0xfd, 0xa9, 0x61, 0xb3, 0x3f, 0x59, 0xe8, - 0xf2, 0xaa, 0x85, 0xee, 0xaf, 0x1b, 0xb1, 0xc2, 0xc4, 0x39, 0xf8, 0x0f, 0x26, 0x33, 0xe2, 0x8f, - 0x16, 0x72, 0x56, 0xec, 0xbd, 0xb7, 0x6e, 0xd6, 0x9f, 0x3d, 0x9c, 0x27, 0xff, 0xee, 0x61, 0x70, - 0x7b, 0xcf, 0x3e, 0x8f, 0x5d, 0xeb, 0x64, 0xec, 0x5a, 0xdf, 0xc6, 0xae, 0xf5, 0x6e, 0xe2, 0x56, - 0x4e, 0x26, 0x6e, 0xe5, 0xcb, 0xc4, 0xad, 0x3c, 0x7f, 0xc8, 0xb8, 0x1e, 0x25, 0x43, 0x0f, 0xcb, - 0xa8, 0xbc, 0x1d, 0xfe, 0x3c, 0xf6, 0xce, 0xec, 0xac, 0xa5, 0x1d, 0xff, 0xe8, 0xf4, 0x6d, 0xd3, - 0x59, 0x4c, 0x61, 0x78, 0x2e, 0xff, 0x49, 0xef, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5a, - 0xaf, 0x54, 0x0c, 0x05, 0x00, 0x00, + // 568 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x3f, 0x6f, 0x13, 0x4f, + 0x10, 0xf5, 0xfd, 0xa2, 0x1f, 0x24, 0x9b, 0x80, 0xc4, 0xc9, 0x85, 0x73, 0x98, 0x33, 0x18, 0x01, + 0x29, 0xc2, 0xae, 0x6c, 0x0a, 0x44, 0x24, 0x0a, 0x3b, 0x34, 0x10, 0x59, 0x42, 0x47, 0x81, 0x44, + 0x81, 0x75, 0xb7, 0xbb, 0xac, 0x57, 0xf8, 0x76, 0x4f, 0xbb, 0x7b, 0x47, 0xee, 0x1b, 0x50, 0x42, + 0x85, 0xe8, 0xf2, 0x01, 0x90, 0xf8, 0x1a, 0x94, 0x29, 0xa9, 0x10, 0xb2, 0x1b, 0x6a, 0x4a, 0x2a, + 0xe4, 0xfb, 0x63, 0x5f, 0x84, 0xb1, 0x2c, 0xa0, 0xdb, 0x99, 0x79, 0xfb, 0xde, 0x1b, 0xcd, 0x68, + 0xc0, 0x3e, 0x17, 0x86, 0x2a, 0x3c, 0xf2, 0xb9, 0x18, 0x6a, 0x8a, 0x63, 0xc5, 0x4d, 0x8a, 0x30, + 0x4e, 0x50, 0xa4, 0x64, 0xc2, 0x09, 0x55, 0x28, 0xe9, 0x20, 0x73, 0x0c, 0x23, 0x25, 0x8d, 0xb4, + 0xaf, 0x2f, 0x41, 0x43, 0x8c, 0x13, 0x58, 0xa2, 0x61, 0xd2, 0x71, 0x9a, 0x4c, 0x4a, 0x36, 0xa6, + 0xc8, 0x8f, 0x38, 0xf2, 0x85, 0x90, 0xc6, 0x37, 0x5c, 0x0a, 0x9d, 0x53, 0x38, 0x75, 0x26, 0x99, + 0xcc, 0x9e, 0x68, 0xf6, 0x2a, 0xb2, 0xbb, 0x58, 0xea, 0x50, 0xea, 0x61, 0x5e, 0xc8, 0x83, 0xb2, + 0x54, 0xd0, 0x65, 0x51, 0x10, 0xbf, 0x40, 0xbe, 0x48, 0x8b, 0x12, 0xe2, 0x01, 0x46, 0x63, 0xce, + 0x46, 0x06, 0x8f, 0x39, 0x15, 0x46, 0x23, 0x43, 0x05, 0xa1, 0x2a, 0xe4, 0xc2, 0x64, 0xbe, 0xe7, + 0x51, 0xfe, 0xa1, 0xfd, 0xce, 0x02, 0xf5, 0x81, 0x66, 0x3d, 0xad, 0x39, 0x13, 0x87, 0x52, 0xe8, + 0x38, 0xa4, 0xea, 0x88, 0xa6, 0xf6, 0x2e, 0xd8, 0xcc, 0xbb, 0xe2, 0xa4, 0x61, 0x5d, 0xb5, 0xf6, + 0xb6, 0xbc, 0xf3, 0x59, 0xfc, 0x90, 0xd8, 0x77, 0xc1, 0x85, 0xb2, 0xbb, 0xa1, 0x4f, 0x88, 0x6a, + 0xfc, 0x37, 0xab, 0xf7, 0xed, 0xef, 0x5f, 0x5a, 0x17, 0x53, 0x3f, 0x1c, 0x1f, 0xb4, 0x67, 0x59, + 0xaa, 0x75, 0xdb, 0xdb, 0x29, 0x81, 0x3d, 0x42, 0x94, 0x7d, 0x0d, 0xec, 0xe0, 0x42, 0x62, 0xf8, + 0x92, 0xa6, 0x8d, 0x8d, 0x8c, 0x77, 0x1b, 0x2f, 0x64, 0x0f, 0x36, 0x5f, 0x9f, 0xb4, 0x6a, 0xdf, + 0x4e, 0x5a, 0xb5, 0xb6, 0x0b, 0x9a, 0xcb, 0x8c, 0x79, 0x54, 0x47, 0x52, 0x68, 0xda, 0x7e, 0x0e, + 0xdc, 0x81, 0x66, 0x1e, 0x65, 0x5c, 0x1b, 0xaa, 0x4a, 0x84, 0x47, 0x5f, 0xf9, 0x8a, 0x3c, 0xa0, + 0x42, 0x86, 0x76, 0x1d, 0xfc, 0x4f, 0x66, 0x8f, 0xc2, 0x7f, 0x1e, 0xd8, 0x4d, 0xb0, 0x45, 0x68, + 0x24, 0x35, 0x37, 0xb2, 0x70, 0xee, 0x2d, 0x12, 0x15, 0xfd, 0x3d, 0x70, 0x73, 0x35, 0xff, 0xdc, + 0xc9, 0x7b, 0x0b, 0x5c, 0x19, 0x68, 0xf6, 0x24, 0x0e, 0x42, 0x6e, 0x4a, 0xe0, 0x80, 0xeb, 0x80, + 0x8e, 0xfc, 0x84, 0xcb, 0x58, 0xcd, 0x34, 0x75, 0x56, 0x35, 0x54, 0x15, 0x6e, 0x16, 0x09, 0xfb, + 0x31, 0xd8, 0x09, 0x2b, 0xe8, 0xcc, 0xd4, 0x76, 0x77, 0x1f, 0xf2, 0x00, 0xc3, 0xea, 0x2c, 0x61, + 0x65, 0x7a, 0x49, 0x07, 0x56, 0x15, 0xbc, 0x33, 0x0c, 0x95, 0x2e, 0x6e, 0x81, 0x1b, 0x2b, 0xad, + 0x95, 0x4d, 0x74, 0x7f, 0x6c, 0x80, 0x8d, 0x81, 0x66, 0xf6, 0x5b, 0x0b, 0x5c, 0xfa, 0x75, 0x1b, + 0xee, 0xc1, 0x35, 0xf6, 0x1c, 0x2e, 0x9b, 0x97, 0xd3, 0xfb, 0xe3, 0xaf, 0xa5, 0x37, 0xfb, 0xa3, + 0x05, 0x2e, 0xaf, 0x1a, 0xf4, 0xe1, 0xba, 0x12, 0x2b, 0x48, 0x9c, 0xa3, 0x7f, 0x40, 0x32, 0x77, + 0xfc, 0xc1, 0x02, 0xce, 0x8a, 0x7d, 0xe8, 0xaf, 0xab, 0xf5, 0x7b, 0x0e, 0xe7, 0xd1, 0xdf, 0x73, + 0x94, 0x76, 0xfb, 0x4f, 0x3f, 0x4d, 0x5c, 0xeb, 0x74, 0xe2, 0x5a, 0x5f, 0x27, 0xae, 0xf5, 0x66, + 0xea, 0xd6, 0x4e, 0xa7, 0x6e, 0xed, 0xf3, 0xd4, 0xad, 0x3d, 0xbb, 0xcf, 0xb8, 0x19, 0xc5, 0x01, + 0xc4, 0x32, 0x2c, 0x8e, 0x10, 0x5a, 0xc8, 0xde, 0x9e, 0xdf, 0xc7, 0xa4, 0x8b, 0x8e, 0xcf, 0x1e, + 0x49, 0x93, 0x46, 0x54, 0x07, 0xe7, 0xb2, 0x2b, 0x73, 0xe7, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xe3, 0x4f, 0x57, 0x26, 0x55, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1215,7 +1218,7 @@ func (m *MsgSubmitConsumerMisbehaviour) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Misbehaviour == nil { - m.Misbehaviour = &types.Any{} + m.Misbehaviour = &types.Misbehaviour{} } if err := m.Misbehaviour.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err From 2be79d715f4dc738cea07b20982bf9d3fff8a302 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Tue, 11 Jul 2023 10:09:56 +0200 Subject: [PATCH 11/29] update ICS misbehaviour test --- .../ccv/provider/v1/tx.proto | 3 +- tests/e2e/actions.go | 2 - tests/integration/misbehaviour.go | 133 +++++++++++++----- x/ccv/provider/client/cli/tx.go | 8 +- x/ccv/provider/keeper/misbehaviour.go | 14 +- x/ccv/provider/keeper/msg_server.go | 9 +- x/ccv/provider/types/codec.go | 5 + x/ccv/provider/types/msg.go | 19 ++- x/ccv/provider/types/tx.pb.go | 79 +++++------ 9 files changed, 179 insertions(+), 93 deletions(-) diff --git a/proto/interchain_security/ccv/provider/v1/tx.proto b/proto/interchain_security/ccv/provider/v1/tx.proto index 61be3064ea..dafd1cee79 100644 --- a/proto/interchain_security/ccv/provider/v1/tx.proto +++ b/proto/interchain_security/ccv/provider/v1/tx.proto @@ -7,7 +7,6 @@ import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "google/protobuf/any.proto"; -import "ibc/lightclients/tendermint/v1/tendermint.proto"; // Msg defines the Msg service. service Msg { @@ -55,7 +54,7 @@ message MsgSubmitConsumerMisbehaviour { string submitter = 1; // The Misbehaviour of the consumer chain wrapping // two conflicting IBC headers - ibc.lightclients.tendermint.v1.Misbehaviour misbehaviour = 2; + google.protobuf.Any misbehaviour = 2; } message MsgSubmitConsumerMisbehaviourResponse {} diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index 2e1863f070..b48d20b687 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -840,8 +840,6 @@ func (tr TestRun) addChainToHermes( } saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, mnemonic, "/root/.hermes/mnemonic.txt") - fmt.Println("Add to hermes", action.validator) - fmt.Println(mnemonic) //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. bz, err = exec.Command("docker", "exec", tr.containerConfig.instanceName, "bash", "-c", saveMnemonicCommand, diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 13ad7e6230..1628bf890c 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -4,66 +4,123 @@ import ( "time" sdk "github.com/cosmos/cosmos-sdk/types" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) +// TestHandleConsumerMisbehaviour verifies first that ICS misbehaviour is handled +// only if its conlflicting headers are valid. Then, it checks +// that validators who signed the incorrect header are jailed and tombstoned. func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.SetupCCVChannel(s.path) // required to have the consumer client revision height greater than 0 s.SendEmptyVSCPacket() + // create signing info for all validators for _, v := range s.providerChain.Vals.Validators { s.setDefaultValSigningInfo(*v) } - altTime := s.providerCtx().BlockTime().Add(time.Minute) + // create a new header timestamp + headerTs := s.providerCtx().BlockTime().Add(time.Minute) + // get trusted validators and height clientHeight := s.consumerChain.LastHeader.TrustedHeight clientTMValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators) clientSigners := s.consumerChain.Signers + // create an alternative validator set using more than 1/3 of the trusted validator set altValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators[0:2]) altSigners := make(map[string]tmtypes.PrivValidator, 1) altSigners[clientTMValset.Validators[0].Address.String()] = clientSigners[clientTMValset.Validators[0].Address.String()] altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] - - misb := &ibctmtypes.Misbehaviour{ - ClientId: s.path.EndpointA.ClientID, - Header1: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - altTime, - clientTMValset, - clientTMValset, - clientTMValset, - clientSigners, - ), - Header2: s.consumerChain.CreateTMClientHeader( - s.consumerChain.ChainID, - int64(clientHeight.RevisionHeight+1), - clientHeight, - altTime, - altValset, - altValset, - clientTMValset, - altSigners, - ), + testCases := []struct { + name string + misbehaviour *ibctmtypes.Misbehaviour + expPass bool + }{ + { + "invalid misbehaviour with empty header1 - shouldn't pass", + &ibctmtypes.Misbehaviour{ + Header1: &ibctmtypes.Header{}, + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "valid misbehaviour - should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, } - err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), *misb) - s.NoError(err) - - for _, v := range altValset.Validators { - consuAddr := sdk.ConsAddress(v.Address.Bytes()) - provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, types.NewConsumerConsAddress(consuAddr)) - val, ok := s.providerApp.GetTestStakingKeeper().GetValidatorByConsAddr(s.providerCtx(), provAddr.Address) - s.Require().True(ok) - s.Require().True(val.Jailed) - s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provAddr.Address)) + for _, tc := range testCases { + s.Run(tc.name, func() { + err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), tc.misbehaviour) + if tc.expPass { + s.NoError(err) + // Check that only the validators of the alternate validator set + // , i.e. altValset, are jailed and tombstoned on the provider + for _, consuVal := range clientTMValset.Validators { + provVal := s.getProviderValFromConsumerVal(*consuVal) + provConsAddr, err := provVal.GetConsAddr() + s.Require().NoError(err) + if _, ok := altSigners[consuVal.Address.String()]; ok { + s.Require().True(provVal.Jailed) + s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } else { + s.Require().False(provVal.Jailed) + s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } + } + } else { + // Check that no validators are jailed or tombstoned on the provider + for _, consuVal := range clientTMValset.Validators { + s.Error(err) + provVal := s.getProviderValFromConsumerVal(*consuVal) + s.Require().False(provVal.Jailed) + provConsAddr, err := provVal.GetConsAddr() + s.Require().NoError(err) + s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } + } + }) } } @@ -234,3 +291,11 @@ func (s *CCVTestSuite) TestConstructLightClientEvidence() { }) } } + +func (s *CCVTestSuite) getProviderValFromConsumerVal(valAddr tmtypes.Validator) stakingtypes.Validator { + consuAddr := types.NewConsumerConsAddress(sdk.ConsAddress(valAddr.Address.Bytes())) + provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, consuAddr) + val, ok := s.providerApp.GetTestStakingKeeper().GetValidatorByConsAddr(s.providerCtx(), provAddr.Address) + s.Require().True(ok) + return val +} diff --git a/x/ccv/provider/client/cli/tx.go b/x/ccv/provider/client/cli/tx.go index 87b4179b0b..f6776fc1f9 100644 --- a/x/ccv/provider/client/cli/tx.go +++ b/x/ccv/provider/client/cli/tx.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/version" sdk "github.com/cosmos/cosmos-sdk/types" - ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ) @@ -117,12 +117,12 @@ func NewSubmitConsumerMisbehaviourCmd() *cobra.Command { WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) submitter := clientCtx.GetFromAddress() - var misbehavior ibctmtypes.Misbehaviour - if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[1]), &misbehavior); err != nil { + var misbehaviour exported.Misbehaviour + if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[1]), misbehaviour); err != nil { return err } - msg, err := types.NewMsgSubmitConsumerMisbehaviour(submitter, &misbehavior) + msg, err := types.NewMsgSubmitConsumerMisbehaviour(submitter, misbehaviour) if err != nil { return err } diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index e285adf652..61748d615f 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -8,6 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) @@ -15,20 +16,25 @@ import ( // HandleConsumerMisbehaviour checks whether the given IBC misbehaviour is valid and, if they are, the misbehaving // CheckConsumerMisbehaviour check that the given IBC misbehaviour headers forms a valid light client attack evidence. // proceed to the jailing and tombstoning of the bzyantine validators. -func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { +func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exported.Misbehaviour) error { logger := ctx.Logger() - if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, &misbehaviour); err != nil { + // Check that the validity of the misbehaviour + if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, misbehaviour); err != nil { logger.Info("Misbehaviour rejected", err.Error()) return err } + + // Assign the Tendermint client misbehaviour concrete type + tmMisbehaviour := misbehaviour.(*ibctmtypes.Misbehaviour) + // Since the misbehaviour packet was received within the trusting period // w.r.t to the last trusted consensus it entails that the infraction age // isn't too old. see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go // construct a ligth client attack evidence - evidence, err := k.ConstructLightClientEvidence(ctx, misbehaviour) + evidence, err := k.ConstructLightClientEvidence(ctx, *tmMisbehaviour) if err != nil { return err } @@ -39,7 +45,7 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmty for _, v := range evidence.ByzantineValidators { // convert consumer consensus address consuAddr := sdk.ConsAddress(v.Address.Bytes()) - provAddr := k.GetProviderAddrFromConsumerAddr(ctx, misbehaviour.Header1.Header.ChainID, types.NewConsumerConsAddress(consuAddr)) + provAddr := k.GetProviderAddrFromConsumerAddr(ctx, tmMisbehaviour.Header1.Header.ChainID, types.NewConsumerConsAddress(consuAddr)) k.stakingKeeper.ValidatorByConsAddr(ctx, consuAddr) val, ok := k.stakingKeeper.GetValidatorByConsAddr(ctx, provAddr.Address) diff --git a/x/ccv/provider/keeper/msg_server.go b/x/ccv/provider/keeper/msg_server.go index ca22b66f0d..d11ba91685 100644 --- a/x/ccv/provider/keeper/msg_server.go +++ b/x/ccv/provider/keeper/msg_server.go @@ -7,6 +7,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ccvtypes "github.com/cosmos/interchain-security/v2/x/ccv/types" tmprotocrypto "github.com/tendermint/tendermint/proto/tendermint/crypto" @@ -129,7 +130,13 @@ func (k msgServer) RegisterConsumerRewardDenom(goCtx context.Context, msg *types func (k msgServer) SubmitConsumerMisbehaviour(goCtx context.Context, msg *types.MsgSubmitConsumerMisbehaviour) (*types.MsgSubmitConsumerMisbehaviourResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - if err := k.Keeper.HandleConsumerMisbehaviour(ctx, *msg.Misbehaviour); err != nil { + + misbehaviour, err := clienttypes.UnpackMisbehaviour(msg.Misbehaviour) + if err != nil { + return nil, err + } + + if err := k.Keeper.HandleConsumerMisbehaviour(ctx, misbehaviour); err != nil { return &types.MsgSubmitConsumerMisbehaviourResponse{}, err } diff --git a/x/ccv/provider/types/codec.go b/x/ccv/provider/types/codec.go index 0ef3c2d296..2f28b398f5 100644 --- a/x/ccv/provider/types/codec.go +++ b/x/ccv/provider/types/codec.go @@ -6,6 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/msgservice" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" ) // RegisterLegacyAminoCodec registers the necessary x/ibc transfer interfaces and concrete types @@ -40,6 +41,10 @@ func RegisterInterfaces(registry codectypes.InterfaceRegistry) { (*sdk.Msg)(nil), &MsgSubmitConsumerMisbehaviour{}, ) + registry.RegisterInterface( + "ibc.core.client.v1.Misbehaviour", + (*exported.Misbehaviour)(nil), + ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) } diff --git a/x/ccv/provider/types/msg.go b/x/ccv/provider/types/msg.go index 9496122342..d3d5a8a60b 100644 --- a/x/ccv/provider/types/msg.go +++ b/x/ccv/provider/types/msg.go @@ -6,8 +6,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" + ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" ) // provider message types @@ -147,8 +147,13 @@ func (msg MsgRegisterConsumerRewardDenom) ValidateBasic() error { return nil } -func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, m *ibctmtypes.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { - return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: m}, nil +func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, misbehaviour exported.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { + anyMisbehaviour, err := ibcclienttypes.PackMisbehaviour(misbehaviour) + if err != nil { + return nil, err + } + + return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: anyMisbehaviour}, nil } // Route implements the sdk.Msg interface. @@ -164,7 +169,11 @@ func (msg MsgSubmitConsumerMisbehaviour) ValidateBasic() error { if msg.Submitter == "" { return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, msg.Submitter) } - if err := msg.Misbehaviour.ValidateBasic(); err != nil { + misbehaviour, err := ibcclienttypes.UnpackMisbehaviour(msg.Misbehaviour) + if err != nil { + return err + } + if err := misbehaviour.ValidateBasic(); err != nil { return err } return nil diff --git a/x/ccv/provider/types/tx.pb.go b/x/ccv/provider/types/tx.pb.go index f27ab52533..84f93dc4b1 100644 --- a/x/ccv/provider/types/tx.pb.go +++ b/x/ccv/provider/types/tx.pb.go @@ -6,8 +6,7 @@ package types import ( context "context" fmt "fmt" - _ "github.com/cosmos/cosmos-sdk/codec/types" - types "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" + types "github.com/cosmos/cosmos-sdk/codec/types" _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" @@ -199,7 +198,7 @@ type MsgSubmitConsumerMisbehaviour struct { Submitter string `protobuf:"bytes,1,opt,name=submitter,proto3" json:"submitter,omitempty"` // The Misbehaviour of the consumer chain wrapping // two conflicting IBC headers - Misbehaviour *types.Misbehaviour `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"` + Misbehaviour *types.Any `protobuf:"bytes,2,opt,name=misbehaviour,proto3" json:"misbehaviour,omitempty"` } func (m *MsgSubmitConsumerMisbehaviour) Reset() { *m = MsgSubmitConsumerMisbehaviour{} } @@ -285,43 +284,41 @@ func init() { } var fileDescriptor_43221a4391e9fbf4 = []byte{ - // 568 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x3f, 0x6f, 0x13, 0x4f, - 0x10, 0xf5, 0xfd, 0xa2, 0x1f, 0x24, 0x9b, 0x80, 0xc4, 0xc9, 0x85, 0x73, 0x98, 0x33, 0x18, 0x01, - 0x29, 0xc2, 0xae, 0x6c, 0x0a, 0x44, 0x24, 0x0a, 0x3b, 0x34, 0x10, 0x59, 0x42, 0x47, 0x81, 0x44, - 0x81, 0x75, 0xb7, 0xbb, 0xac, 0x57, 0xf8, 0x76, 0x4f, 0xbb, 0x7b, 0x47, 0xee, 0x1b, 0x50, 0x42, - 0x85, 0xe8, 0xf2, 0x01, 0x90, 0xf8, 0x1a, 0x94, 0x29, 0xa9, 0x10, 0xb2, 0x1b, 0x6a, 0x4a, 0x2a, - 0xe4, 0xfb, 0x63, 0x5f, 0x84, 0xb1, 0x2c, 0xa0, 0xdb, 0x99, 0x79, 0xfb, 0xde, 0x1b, 0xcd, 0x68, - 0xc0, 0x3e, 0x17, 0x86, 0x2a, 0x3c, 0xf2, 0xb9, 0x18, 0x6a, 0x8a, 0x63, 0xc5, 0x4d, 0x8a, 0x30, - 0x4e, 0x50, 0xa4, 0x64, 0xc2, 0x09, 0x55, 0x28, 0xe9, 0x20, 0x73, 0x0c, 0x23, 0x25, 0x8d, 0xb4, - 0xaf, 0x2f, 0x41, 0x43, 0x8c, 0x13, 0x58, 0xa2, 0x61, 0xd2, 0x71, 0x9a, 0x4c, 0x4a, 0x36, 0xa6, - 0xc8, 0x8f, 0x38, 0xf2, 0x85, 0x90, 0xc6, 0x37, 0x5c, 0x0a, 0x9d, 0x53, 0x38, 0x75, 0x26, 0x99, - 0xcc, 0x9e, 0x68, 0xf6, 0x2a, 0xb2, 0xbb, 0x58, 0xea, 0x50, 0xea, 0x61, 0x5e, 0xc8, 0x83, 0xb2, - 0x54, 0xd0, 0x65, 0x51, 0x10, 0xbf, 0x40, 0xbe, 0x48, 0x8b, 0x12, 0xe2, 0x01, 0x46, 0x63, 0xce, - 0x46, 0x06, 0x8f, 0x39, 0x15, 0x46, 0x23, 0x43, 0x05, 0xa1, 0x2a, 0xe4, 0xc2, 0x64, 0xbe, 0xe7, - 0x51, 0xfe, 0xa1, 0xfd, 0xce, 0x02, 0xf5, 0x81, 0x66, 0x3d, 0xad, 0x39, 0x13, 0x87, 0x52, 0xe8, - 0x38, 0xa4, 0xea, 0x88, 0xa6, 0xf6, 0x2e, 0xd8, 0xcc, 0xbb, 0xe2, 0xa4, 0x61, 0x5d, 0xb5, 0xf6, - 0xb6, 0xbc, 0xf3, 0x59, 0xfc, 0x90, 0xd8, 0x77, 0xc1, 0x85, 0xb2, 0xbb, 0xa1, 0x4f, 0x88, 0x6a, - 0xfc, 0x37, 0xab, 0xf7, 0xed, 0xef, 0x5f, 0x5a, 0x17, 0x53, 0x3f, 0x1c, 0x1f, 0xb4, 0x67, 0x59, - 0xaa, 0x75, 0xdb, 0xdb, 0x29, 0x81, 0x3d, 0x42, 0x94, 0x7d, 0x0d, 0xec, 0xe0, 0x42, 0x62, 0xf8, - 0x92, 0xa6, 0x8d, 0x8d, 0x8c, 0x77, 0x1b, 0x2f, 0x64, 0x0f, 0x36, 0x5f, 0x9f, 0xb4, 0x6a, 0xdf, - 0x4e, 0x5a, 0xb5, 0xb6, 0x0b, 0x9a, 0xcb, 0x8c, 0x79, 0x54, 0x47, 0x52, 0x68, 0xda, 0x7e, 0x0e, - 0xdc, 0x81, 0x66, 0x1e, 0x65, 0x5c, 0x1b, 0xaa, 0x4a, 0x84, 0x47, 0x5f, 0xf9, 0x8a, 0x3c, 0xa0, - 0x42, 0x86, 0x76, 0x1d, 0xfc, 0x4f, 0x66, 0x8f, 0xc2, 0x7f, 0x1e, 0xd8, 0x4d, 0xb0, 0x45, 0x68, - 0x24, 0x35, 0x37, 0xb2, 0x70, 0xee, 0x2d, 0x12, 0x15, 0xfd, 0x3d, 0x70, 0x73, 0x35, 0xff, 0xdc, - 0xc9, 0x7b, 0x0b, 0x5c, 0x19, 0x68, 0xf6, 0x24, 0x0e, 0x42, 0x6e, 0x4a, 0xe0, 0x80, 0xeb, 0x80, - 0x8e, 0xfc, 0x84, 0xcb, 0x58, 0xcd, 0x34, 0x75, 0x56, 0x35, 0x54, 0x15, 0x6e, 0x16, 0x09, 0xfb, - 0x31, 0xd8, 0x09, 0x2b, 0xe8, 0xcc, 0xd4, 0x76, 0x77, 0x1f, 0xf2, 0x00, 0xc3, 0xea, 0x2c, 0x61, - 0x65, 0x7a, 0x49, 0x07, 0x56, 0x15, 0xbc, 0x33, 0x0c, 0x95, 0x2e, 0x6e, 0x81, 0x1b, 0x2b, 0xad, - 0x95, 0x4d, 0x74, 0x7f, 0x6c, 0x80, 0x8d, 0x81, 0x66, 0xf6, 0x5b, 0x0b, 0x5c, 0xfa, 0x75, 0x1b, - 0xee, 0xc1, 0x35, 0xf6, 0x1c, 0x2e, 0x9b, 0x97, 0xd3, 0xfb, 0xe3, 0xaf, 0xa5, 0x37, 0xfb, 0xa3, - 0x05, 0x2e, 0xaf, 0x1a, 0xf4, 0xe1, 0xba, 0x12, 0x2b, 0x48, 0x9c, 0xa3, 0x7f, 0x40, 0x32, 0x77, - 0xfc, 0xc1, 0x02, 0xce, 0x8a, 0x7d, 0xe8, 0xaf, 0xab, 0xf5, 0x7b, 0x0e, 0xe7, 0xd1, 0xdf, 0x73, - 0x94, 0x76, 0xfb, 0x4f, 0x3f, 0x4d, 0x5c, 0xeb, 0x74, 0xe2, 0x5a, 0x5f, 0x27, 0xae, 0xf5, 0x66, - 0xea, 0xd6, 0x4e, 0xa7, 0x6e, 0xed, 0xf3, 0xd4, 0xad, 0x3d, 0xbb, 0xcf, 0xb8, 0x19, 0xc5, 0x01, - 0xc4, 0x32, 0x2c, 0x8e, 0x10, 0x5a, 0xc8, 0xde, 0x9e, 0xdf, 0xc7, 0xa4, 0x8b, 0x8e, 0xcf, 0x1e, - 0x49, 0x93, 0x46, 0x54, 0x07, 0xe7, 0xb2, 0x2b, 0x73, 0xe7, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xe3, 0x4f, 0x57, 0x26, 0x55, 0x05, 0x00, 0x00, + // 534 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xb1, 0x6f, 0xd3, 0x40, + 0x14, 0xc6, 0x63, 0x22, 0xa0, 0xbd, 0x06, 0x24, 0xac, 0x0c, 0xa9, 0x09, 0x0e, 0x04, 0x01, 0x1d, + 0xc0, 0x56, 0xc3, 0x00, 0x54, 0x62, 0x48, 0xca, 0x02, 0x55, 0x16, 0x33, 0x20, 0x31, 0x10, 0x39, + 0x77, 0xc7, 0xe5, 0x44, 0x7d, 0x67, 0xdd, 0x3b, 0x9b, 0x7a, 0x64, 0x63, 0x84, 0x89, 0xb5, 0x7f, + 0x00, 0x12, 0xff, 0x06, 0x63, 0x47, 0x26, 0x84, 0x92, 0x85, 0x99, 0x91, 0x09, 0xc5, 0xf6, 0x25, + 0xa9, 0x08, 0x51, 0x04, 0x6c, 0xf7, 0xde, 0xfb, 0xfc, 0x7d, 0x3f, 0xe9, 0x59, 0x0f, 0xdd, 0xe6, + 0x42, 0x53, 0x85, 0x47, 0x21, 0x17, 0x03, 0xa0, 0x38, 0x51, 0x5c, 0x67, 0x3e, 0xc6, 0xa9, 0x1f, + 0x2b, 0x99, 0x72, 0x42, 0x95, 0x9f, 0xee, 0xfa, 0xfa, 0xc8, 0x8b, 0x95, 0xd4, 0xd2, 0xbe, 0xbe, + 0x44, 0xed, 0x61, 0x9c, 0x7a, 0x46, 0xed, 0xa5, 0xbb, 0x4e, 0x93, 0x49, 0xc9, 0x0e, 0xa9, 0x1f, + 0xc6, 0xdc, 0x0f, 0x85, 0x90, 0x3a, 0xd4, 0x5c, 0x0a, 0x28, 0x2c, 0x9c, 0x3a, 0x93, 0x4c, 0xe6, + 0x4f, 0x7f, 0xfa, 0x2a, 0xbb, 0xdb, 0x58, 0x42, 0x24, 0x61, 0x50, 0x0c, 0x8a, 0xc2, 0x8c, 0x4a, + 0xbb, 0xbc, 0x1a, 0x26, 0x2f, 0xfd, 0x50, 0x64, 0xc5, 0xa8, 0xfd, 0xc1, 0x42, 0xf5, 0x3e, 0xb0, + 0x2e, 0x00, 0x67, 0x62, 0x5f, 0x0a, 0x48, 0x22, 0xaa, 0x0e, 0x68, 0x66, 0x6f, 0xa3, 0x8d, 0x02, + 0x92, 0x93, 0x86, 0x75, 0xd5, 0xda, 0xd9, 0x0c, 0xce, 0xe7, 0xf5, 0x63, 0x62, 0xdf, 0x43, 0x17, + 0x0c, 0xec, 0x20, 0x24, 0x44, 0x35, 0xce, 0x4c, 0xe7, 0x3d, 0xfb, 0xc7, 0xd7, 0xd6, 0xc5, 0x2c, + 0x8c, 0x0e, 0xf7, 0xda, 0xd3, 0x2e, 0x05, 0x68, 0x07, 0x35, 0x23, 0xec, 0x12, 0xa2, 0xec, 0x6b, + 0xa8, 0x86, 0xcb, 0x88, 0xc1, 0x2b, 0x9a, 0x35, 0xaa, 0xb9, 0xef, 0x16, 0x9e, 0xc7, 0xee, 0x6d, + 0xbc, 0x3d, 0x6e, 0x55, 0xbe, 0x1f, 0xb7, 0x2a, 0x6d, 0x17, 0x35, 0x97, 0x81, 0x05, 0x14, 0x62, + 0x29, 0x80, 0xb6, 0x5f, 0x20, 0xb7, 0x0f, 0x2c, 0xa0, 0x8c, 0x83, 0xa6, 0xca, 0x28, 0x02, 0xfa, + 0x3a, 0x54, 0xe4, 0x11, 0x15, 0x32, 0xb2, 0xeb, 0xe8, 0x2c, 0x99, 0x3e, 0x4a, 0xfe, 0xa2, 0xb0, + 0x9b, 0x68, 0x93, 0xd0, 0x58, 0x02, 0xd7, 0xb2, 0x24, 0x0f, 0xe6, 0x8d, 0x85, 0xfc, 0x1d, 0x74, + 0x73, 0xb5, 0xff, 0x8c, 0xe4, 0x8d, 0x85, 0xae, 0xf4, 0x81, 0x3d, 0x4d, 0x86, 0x11, 0xd7, 0x46, + 0xd8, 0xe7, 0x30, 0xa4, 0xa3, 0x30, 0xe5, 0x32, 0x51, 0xd3, 0x4c, 0xc8, 0xa7, 0x9a, 0xaa, 0x92, + 0x66, 0xde, 0xb0, 0xef, 0xa3, 0x5a, 0xb4, 0xa0, 0xce, 0xa1, 0xb6, 0x3a, 0x75, 0xaf, 0xd8, 0x9a, + 0x67, 0xb6, 0xe6, 0x75, 0x45, 0x16, 0x9c, 0x52, 0x2e, 0xd0, 0xde, 0x42, 0x37, 0x56, 0x22, 0x18, + 0xd8, 0xce, 0xcf, 0x2a, 0xaa, 0xf6, 0x81, 0xd9, 0xef, 0x2d, 0x74, 0xe9, 0xf7, 0xad, 0x3f, 0xf0, + 0xd6, 0xf8, 0x3d, 0xbd, 0x65, 0x7b, 0x71, 0xba, 0x7f, 0xfd, 0xa9, 0x61, 0xb3, 0x3f, 0x59, 0xe8, + 0xf2, 0xaa, 0x85, 0xee, 0xaf, 0x1b, 0xb1, 0xc2, 0xc4, 0x39, 0xf8, 0x0f, 0x26, 0x33, 0xe2, 0x8f, + 0x16, 0x72, 0x56, 0xec, 0xbd, 0xb7, 0x6e, 0xd6, 0x9f, 0x3d, 0x9c, 0x27, 0xff, 0xee, 0x61, 0x70, + 0x7b, 0xcf, 0x3e, 0x8f, 0x5d, 0xeb, 0x64, 0xec, 0x5a, 0xdf, 0xc6, 0xae, 0xf5, 0x6e, 0xe2, 0x56, + 0x4e, 0x26, 0x6e, 0xe5, 0xcb, 0xc4, 0xad, 0x3c, 0x7f, 0xc8, 0xb8, 0x1e, 0x25, 0x43, 0x0f, 0xcb, + 0xa8, 0xbc, 0x1d, 0xfe, 0x3c, 0xf6, 0xce, 0xec, 0xac, 0xa5, 0x1d, 0xff, 0xe8, 0xf4, 0x6d, 0xd3, + 0x59, 0x4c, 0x61, 0x78, 0x2e, 0xff, 0x49, 0xef, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5a, + 0xaf, 0x54, 0x0c, 0x05, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1218,7 +1215,7 @@ func (m *MsgSubmitConsumerMisbehaviour) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Misbehaviour == nil { - m.Misbehaviour = &types.Misbehaviour{} + m.Misbehaviour = &types.Any{} } if err := m.Misbehaviour.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err From e734e5375ec7b6872be35ce60a8fae5e0142f9fe Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Tue, 11 Jul 2023 10:16:02 +0200 Subject: [PATCH 12/29] update ICS misbehaviour test --- tests/integration/misbehaviour.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 1628bf890c..9934f1d77b 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -5,8 +5,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" + "github.com/cosmos/ibc-go/v4/modules/core/exported" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" + ibcsolotypes "github.com/cosmos/ibc-go/v4/modules/light-clients/06-solomachine/types" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) @@ -39,9 +41,14 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] testCases := []struct { name string - misbehaviour *ibctmtypes.Misbehaviour + misbehaviour exported.Misbehaviour expPass bool }{ + { + "invalid misbehaviour client type - shouldn't pass", + &ibcsolotypes.Misbehaviour{}, + false, + }, { "invalid misbehaviour with empty header1 - shouldn't pass", &ibctmtypes.Misbehaviour{ From 865e43b99a49250934c07d37e32a7c221518871f Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Wed, 12 Jul 2023 10:32:37 +0200 Subject: [PATCH 13/29] Add test for MsgSubmitConsumerMisbehaviour parsing --- tests/integration/misbehaviour.go | 99 ++++++++++++++++++++++++++++++ testutil/integration/debug_test.go | 4 ++ 2 files changed, 103 insertions(+) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 9934f1d77b..bb6c16aa98 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -6,6 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/cosmos/ibc-go/v4/modules/core/exported" + "github.com/cosmos/interchain-security/v2/x/ccv/provider" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" ibcsolotypes "github.com/cosmos/ibc-go/v4/modules/light-clients/06-solomachine/types" @@ -100,6 +101,10 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { for _, tc := range testCases { s.Run(tc.name, func() { err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), tc.misbehaviour) + // get clienstate + cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointB.ClientID) + s.Require().True(ok) + if tc.expPass { s.NoError(err) // Check that only the validators of the alternate validator set @@ -111,11 +116,16 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { if _, ok := altSigners[consuVal.Address.String()]; ok { s.Require().True(provVal.Jailed) s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + } else { s.Require().False(provVal.Jailed) s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) + s.Require().NotZero(cs.(*ibctmtypes.ClientState).FrozenHeight) + } } + // verify that the client was frozen + s.Require().NotZero(cs.(*ibctmtypes.ClientState).FrozenHeight) } else { // Check that no validators are jailed or tombstoned on the provider for _, consuVal := range clientTMValset.Validators { @@ -126,6 +136,8 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.Require().NoError(err) s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) } + // verify that the client wasn't frozen + s.Require().Zero(cs.(*ibctmtypes.ClientState).FrozenHeight) } }) } @@ -299,6 +311,93 @@ func (s *CCVTestSuite) TestConstructLightClientEvidence() { } } +// TestMsgSubmitConsumerClientHandler tests that the provider +// handler can parse MsgSubmitConsumerMisbehaviour +// TODO: move this to x/provider/handler_test.go +func (s *CCVTestSuite) TestMsgSubmitConsumerMisbehaviourHandler() { + s.SetupCCVChannel(s.path) + // required to have the consumer client revision height greater than 0 + s.SendEmptyVSCPacket() + + // create signing info for all validators + for _, v := range s.providerChain.Vals.Validators { + s.setDefaultValSigningInfo(*v) + } + + // create a new header timestamp + headerTs := s.providerCtx().BlockTime().Add(time.Minute) + + // get trusted validators and height + clientHeight := s.consumerChain.LastHeader.TrustedHeight + clientTMValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators) + clientSigners := s.consumerChain.Signers + + altValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators[0:2]) + altSigners := make(map[string]tmtypes.PrivValidator, 1) + altSigners[clientTMValset.Validators[0].Address.String()] = clientSigners[clientTMValset.Validators[0].Address.String()] + altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] + + testCases := []struct { + name string + misbehaviour *ibctmtypes.Misbehaviour + expPass bool + }{ + { + "invalid MsgSubmitMisbehaviour shouldn't pass", + &ibctmtypes.Misbehaviour{}, + false, + }, + { + + "valid MsgSubmitMisbehaviour should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + // build the msg using the misbehaviour data + msg, err := types.NewMsgSubmitConsumerMisbehaviour(s.providerChain.SenderAccount.GetAddress(), tc.misbehaviour) + s.Require().NoError(err) + + k := s.providerApp.GetProviderKeeper() + + // Try to handle the message + _, err = provider.NewHandler(&k)(s.providerCtx(), msg) + if tc.expPass { + s.Require().NoError(err) + } else { + s.Require().Error(err) + } + }) + } +} + func (s *CCVTestSuite) getProviderValFromConsumerVal(valAddr tmtypes.Validator) stakingtypes.Validator { consuAddr := types.NewConsumerConsAddress(sdk.ConsAddress(valAddr.Address.Bytes())) provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, consuAddr) diff --git a/testutil/integration/debug_test.go b/testutil/integration/debug_test.go index 3bafef8295..37ab9209f5 100644 --- a/testutil/integration/debug_test.go +++ b/testutil/integration/debug_test.go @@ -268,3 +268,7 @@ func TestHandleConsumerMisbehaviour(t *testing.T) { func TestConstructLightClientEvidence(t *testing.T) { runCCVTestByName(t, "TestConstructLightClientEvidence") } + +func TestMsgSubmitConsumerMisbehaviourHandler(t *testing.T) { + runCCVTestByName(t, "TestMsgSubmitConsumerMisbehaviourHandler") +} From 6874b00ba6222f10f6cd33834dd9a3d2fce80803 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 14 Jul 2023 08:44:01 +0200 Subject: [PATCH 14/29] fix linter --- tests/integration/misbehaviour.go | 1 - x/ccv/provider/keeper/misbehaviour.go | 2 -- 2 files changed, 3 deletions(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index bb6c16aa98..c7fa0d4705 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -348,7 +348,6 @@ func (s *CCVTestSuite) TestMsgSubmitConsumerMisbehaviourHandler() { false, }, { - "valid MsgSubmitMisbehaviour should pass", &ibctmtypes.Misbehaviour{ ClientId: s.path.EndpointA.ClientID, diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 61748d615f..aebf806fa8 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -79,7 +79,6 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte // ConstructLightClientEvidence constructs and returns a CometBFT Ligth Client Attack(LCA) evidence struct // from the given misbehaviour func (k Keeper) ConstructLightClientEvidence(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) (*tmtypes.LightClientAttackEvidence, error) { - // construct the trusted and conflicetd ligth blocks trusted, err := headerToLightBlock(*misbehaviour.Header1) if err != nil { @@ -120,7 +119,6 @@ func (k Keeper) ConstructLightClientEvidence(ctx sdk.Context, misbehaviour ibctm // GetCommonFromMisbehaviour checks whether the given ibc misbehaviour's headers share common trusted height // and that a consensus state exists for this height. In this case, it returns the associated trusted height, timestamp and valset. func (k Keeper) GetTrustedInfoFromMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) (int64, time.Time, *tmtypes.ValidatorSet, error) { - // a common trusted height is required commonHeight := misbehaviour.Header1.TrustedHeight if !commonHeight.EQ(misbehaviour.Header2.TrustedHeight) { From ad098b1de50fd09312bfc45dc883e6cee74747a8 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 14 Jul 2023 08:41:23 +0200 Subject: [PATCH 15/29] save progress --- tests/e2e/main.go | 2 +- x/ccv/provider/keeper/misbehaviour.go | 28 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/tests/e2e/main.go b/tests/e2e/main.go index 4c7b6722cd..37ded7ce8d 100644 --- a/tests/e2e/main.go +++ b/tests/e2e/main.go @@ -102,7 +102,7 @@ func (tr *TestRun) Run(steps []Step, localSdkPath string, useGaia bool, gaiaTag tr.validateStringLiterals() tr.startDocker() tr.executeSteps(steps) - tr.teardownDocker() + // tr.teardownDocker() } type testRunWithSteps struct { diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index aebf806fa8..e41aa3d5d0 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -4,9 +4,11 @@ import ( "fmt" "time" + ibctypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" "github.com/cosmos/ibc-go/v4/modules/core/exported" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" @@ -76,6 +78,32 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte return nil } +func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { + + clientState, found := k.clientKeeper.GetClientState(ctx, misbehaviour.GetClientID()) + if !found { + return sdkerrors.Wrapf(types.ErrClientNotFound, "cannot check misbehaviour for client with ID %s", misbehaviour.GetClientID()) + } + + clientStore := k.clientKeeper.ClientStore(ctx, misbehaviour.GetClientID()) + + if status := clientState.Status(ctx, clientStore, k.cdc); status != exported.Active { + return sdkerrors.Wrapf(ibctypes.ErrClientNotActive, "cannot process misbehaviour for client (%s) with status %s", misbehaviour.GetClientID(), status) + } + + if err := misbehaviour.ValidateBasic(); err != nil { + return err + } + + clientState, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, misbehaviour) + if err != nil { + return err + } + + k.SetClientState(ctx, misbehaviour.GetClientID(), clientState) + k.Logger(ctx).Info("client frozen due to misbehaviour", "client-id", misbehaviour.GetClientID()) +} + // ConstructLightClientEvidence constructs and returns a CometBFT Ligth Client Attack(LCA) evidence struct // from the given misbehaviour func (k Keeper) ConstructLightClientEvidence(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) (*tmtypes.LightClientAttackEvidence, error) { From 71a087c85bcc77b9d06a605efb3d5896ef087970 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 14 Jul 2023 11:03:43 +0200 Subject: [PATCH 16/29] add CheckMisbehaviourAndUpdateState --- x/ccv/provider/keeper/misbehaviour.go | 29 ++++++++++++++------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index e41aa3d5d0..35f5c6d2c5 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -4,12 +4,12 @@ import ( "fmt" "time" - ibctypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" "github.com/cosmos/ibc-go/v4/modules/core/exported" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" @@ -78,21 +78,18 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte return nil } -func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { - - clientState, found := k.clientKeeper.GetClientState(ctx, misbehaviour.GetClientID()) - if !found { - return sdkerrors.Wrapf(types.ErrClientNotFound, "cannot check misbehaviour for client with ID %s", misbehaviour.GetClientID()) +// CheckMisbehaviourAndUpdateState checks for client misbehaviour and freeze the client if it's still active. +// Note that this method changes the original CheckMisbehaviourAndUpdateState method in ibc-go ibc-go/modules/core/02-client/keeper/client.go +func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour exported.Misbehaviour) error { + if err := misbehaviour.ValidateBasic(); err != nil { + return err } clientStore := k.clientKeeper.ClientStore(ctx, misbehaviour.GetClientID()) - if status := clientState.Status(ctx, clientStore, k.cdc); status != exported.Active { - return sdkerrors.Wrapf(ibctypes.ErrClientNotActive, "cannot process misbehaviour for client (%s) with status %s", misbehaviour.GetClientID(), status) - } - - if err := misbehaviour.ValidateBasic(); err != nil { - return err + clientState, found := k.clientKeeper.GetClientState(ctx, misbehaviour.GetClientID()) + if !found { + return sdkerrors.Wrapf(ibcclienttypes.ErrClientNotFound, "cannot check misbehaviour for client with ID %s", misbehaviour.GetClientID()) } clientState, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, misbehaviour) @@ -100,8 +97,12 @@ func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour ib return err } - k.SetClientState(ctx, misbehaviour.GetClientID(), clientState) - k.Logger(ctx).Info("client frozen due to misbehaviour", "client-id", misbehaviour.GetClientID()) + if status := clientState.Status(ctx, clientStore, k.cdc); status == exported.Active { + k.clientKeeper.SetClientState(ctx, misbehaviour.GetClientID(), clientState) + k.Logger(ctx).Info("client frozen due to misbehaviour", "client-id", misbehaviour.GetClientID()) + } + + return nil } // ConstructLightClientEvidence constructs and returns a CometBFT Ligth Client Attack(LCA) evidence struct From 347cc7d8fdc70d637fdbbee265a1ed8cf53f6d90 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 14 Jul 2023 12:00:08 +0200 Subject: [PATCH 17/29] update integration tests --- tests/integration/misbehaviour.go | 163 +++++++++++++++++++++++++- testutil/integration/debug_test.go | 4 + x/ccv/provider/keeper/misbehaviour.go | 14 ++- 3 files changed, 174 insertions(+), 7 deletions(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index c7fa0d4705..0e59116c1b 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -102,7 +102,7 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.Run(tc.name, func() { err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), tc.misbehaviour) // get clienstate - cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointB.ClientID) + cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointA.ClientID) s.Require().True(ok) if tc.expPass { @@ -397,6 +397,167 @@ func (s *CCVTestSuite) TestMsgSubmitConsumerMisbehaviourHandler() { } } +func (s *CCVTestSuite) TestCheckMisbehaviourAndUpdateState() { + s.SetupCCVChannel(s.path) + // required to have the consumer client revision height greater than 0 + s.SendEmptyVSCPacket() + + // create signing info for all validators + for _, v := range s.providerChain.Vals.Validators { + s.setDefaultValSigningInfo(*v) + } + + // create a new header timestamp + headerTs := s.providerCtx().BlockTime().Add(time.Minute) + + // get trusted validators and height + clientHeight := s.consumerChain.LastHeader.TrustedHeight + clientTMValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators) + clientSigners := s.consumerChain.Signers + + // create an alternative validator set using more than 1/3 of the trusted validator set + altValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators[0:2]) + altSigners := make(map[string]tmtypes.PrivValidator, 1) + altSigners[clientTMValset.Validators[0].Address.String()] = clientSigners[clientTMValset.Validators[0].Address.String()] + altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] + testCases := []struct { + name string + misbehaviour exported.Misbehaviour + expPass bool + }{ + { + "invalid misbehaviour client type - shouldn't pass", + &ibcsolotypes.Misbehaviour{}, + false, + }, + { + "client state not found - shouldn' pass", + &ibctmtypes.Misbehaviour{ + ClientId: "clientID", + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "invalid misbehaviour with empty header1 - shouldn't pass", + &ibctmtypes.Misbehaviour{ + Header1: &ibctmtypes.Header{}, + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "valid misbehaviour - should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, + { + "valid misbehaviour with already frozen client - should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + err := s.providerApp.GetProviderKeeper().CheckMisbehaviourAndUpdateState(s.providerCtx(), tc.misbehaviour) + // get clienstate + cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointA.ClientID) + s.Require().True(ok) + + if tc.expPass { + s.NoError(err) + + // verify that the client was frozen + s.Require().NotZero(cs.(*ibctmtypes.ClientState).FrozenHeight) + } else { + s.Error(err) + + // verify that the client wasn't frozen + s.Require().Zero(cs.(*ibctmtypes.ClientState).FrozenHeight) + } + }) + } +} + func (s *CCVTestSuite) getProviderValFromConsumerVal(valAddr tmtypes.Validator) stakingtypes.Validator { consuAddr := types.NewConsumerConsAddress(sdk.ConsAddress(valAddr.Address.Bytes())) provAddr := s.providerApp.GetProviderKeeper().GetProviderAddrFromConsumerAddr(s.providerCtx(), s.consumerChain.ChainID, consuAddr) diff --git a/testutil/integration/debug_test.go b/testutil/integration/debug_test.go index 37ab9209f5..b9b2b7cf38 100644 --- a/testutil/integration/debug_test.go +++ b/testutil/integration/debug_test.go @@ -272,3 +272,7 @@ func TestConstructLightClientEvidence(t *testing.T) { func TestMsgSubmitConsumerMisbehaviourHandler(t *testing.T) { runCCVTestByName(t, "TestMsgSubmitConsumerMisbehaviourHandler") } + +func TestCheckMisbehaviourAndUpdateState(t *testing.T) { + runCCVTestByName(t, "TestCheckMisbehaviourAndUpdateState") +} diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 35f5c6d2c5..9285baa670 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -24,7 +24,6 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte // Check that the validity of the misbehaviour if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, misbehaviour); err != nil { logger.Info("Misbehaviour rejected", err.Error()) - return err } @@ -85,21 +84,24 @@ func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour ex return err } - clientStore := k.clientKeeper.ClientStore(ctx, misbehaviour.GetClientID()) - + // get client state clientState, found := k.clientKeeper.GetClientState(ctx, misbehaviour.GetClientID()) if !found { return sdkerrors.Wrapf(ibcclienttypes.ErrClientNotFound, "cannot check misbehaviour for client with ID %s", misbehaviour.GetClientID()) } - clientState, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, misbehaviour) + clientStore := k.clientKeeper.ClientStore(ctx, misbehaviour.GetClientID()) + + // note that if this check succeed the returned client state status is updated to "Frozen" + updatedClientState, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, misbehaviour) if err != nil { return err } + // update the client state if the status transitioned from "Active" to "Frozen" if status := clientState.Status(ctx, clientStore, k.cdc); status == exported.Active { - k.clientKeeper.SetClientState(ctx, misbehaviour.GetClientID(), clientState) - k.Logger(ctx).Info("client frozen due to misbehaviour", "client-id", misbehaviour.GetClientID()) + k.clientKeeper.SetClientState(ctx, misbehaviour.GetClientID(), updatedClientState) + k.Logger(ctx).Info("client frozen due to a consumer chain misbehaviour", "client-id", misbehaviour.GetClientID()) } return nil From 43717019e4d5edb1a8a221f263351dca64a5f0c1 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 21 Jul 2023 09:43:40 +0200 Subject: [PATCH 18/29] typo --- x/ccv/provider/keeper/misbehaviour.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 9285baa670..d90ca6765f 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -34,7 +34,7 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte // w.r.t to the last trusted consensus it entails that the infraction age // isn't too old. see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go - // construct a ligth client attack evidence + // construct a light client attack evidence evidence, err := k.ConstructLightClientEvidence(ctx, *tmMisbehaviour) if err != nil { return err @@ -92,15 +92,19 @@ func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour ex clientStore := k.clientKeeper.ClientStore(ctx, misbehaviour.GetClientID()) - // note that if this check succeed the returned client state status is updated to "Frozen" - updatedClientState, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, misbehaviour) + // check the IBC misbehaviour + _, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, misbehaviour) if err != nil { return err } - // update the client state if the status transitioned from "Active" to "Frozen" - if status := clientState.Status(ctx, clientStore, k.cdc); status == exported.Active { - k.clientKeeper.SetClientState(ctx, misbehaviour.GetClientID(), updatedClientState) + // Check that the client's status isn't Expired + consState, err := ibctmtypes.GetConsensusState(clientStore, k.cdc, clientState.GetLatestHeight()) + if err != nil { + return err + } + + if !clientState.(*ibctmtypes.ClientState).IsExpired(consState.Timestamp, ctx.BlockTime()) { k.Logger(ctx).Info("client frozen due to a consumer chain misbehaviour", "client-id", misbehaviour.GetClientID()) } From dc54dd1cf9912436d03830657642e0abfed8b60f Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 24 Jul 2023 14:21:35 +0200 Subject: [PATCH 19/29] remove e2e tests from another PRs --- Dockerfile | 2 +- tests/e2e/actions.go | 24 +- tests/e2e/actions_consumer_misbehaviour.go | 92 ------ tests/e2e/config.go | 84 ------ tests/e2e/main.go | 7 +- tests/e2e/state.go | 39 --- tests/e2e/steps.go | 7 - tests/e2e/steps_consumer_misbehaviour.go | 263 ------------------ tests/e2e/testnet-scripts/fork-consumer.sh | 112 -------- tests/e2e/testnet-scripts/hermes-config.toml | 18 +- tests/e2e/testnet-scripts/start-chain.sh | 9 +- .../proto/tendermint/types/evidence.proto | 38 --- 12 files changed, 10 insertions(+), 685 deletions(-) delete mode 100644 tests/e2e/actions_consumer_misbehaviour.go delete mode 100644 tests/e2e/steps_consumer_misbehaviour.go delete mode 100644 tests/e2e/testnet-scripts/fork-consumer.sh delete mode 100644 third_party/proto/tendermint/types/evidence.proto diff --git a/Dockerfile b/Dockerfile index 03939617be..4d81392316 100644 --- a/Dockerfile +++ b/Dockerfile @@ -28,7 +28,7 @@ RUN go mod tidy RUN make install # Get Hermes build -FROM otacrew/hermes-ics:latest AS hermes-builder +FROM ghcr.io/informalsystems/hermes:1.4.1 AS hermes-builder # Get CometMock FROM informalofftermatt/cometmock:latest as cometmock-builder diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index b48d20b687..5695124a46 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -63,7 +63,7 @@ type StartChainAction struct { validators []StartChainValidator // Genesis changes specific to this action, appended to genesis changes defined in chain config genesisChanges string - consumerCfg bool + skipGentx bool } type StartChainValidator struct { @@ -133,7 +133,7 @@ func (tr TestRun) startChain( cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "/bin/bash", "/testnet-scripts/start-chain.sh", chainConfig.binaryName, string(vals), string(chainConfig.chainId), chainConfig.ipPrefix, genesisChanges, - fmt.Sprint(action.consumerCfg), + fmt.Sprint(action.skipGentx), // override config/config.toml for each node on chain // usually timeout_commit and peer_gossip_sleep_duration are changed to vary the test run duration // lower timeout_commit means the blocks are produced faster making the test run shorter @@ -170,7 +170,6 @@ func (tr TestRun) startChain( tr.addChainToRelayer(addChainToRelayerAction{ chain: action.chain, validator: action.validators[0].id, - consumer: action.consumerCfg, }, verbose) } @@ -281,8 +280,6 @@ func (tr TestRun) submitConsumerAdditionProposal( if err != nil { log.Fatal(err, "\n", string(bz)) } - - tr.waitBlocks(action.chain, 1, 5*time.Second) } type submitConsumerRemovalProposalAction struct { @@ -524,7 +521,7 @@ func (tr TestRun) voteGovProposal( } wg.Wait() - time.Sleep((time.Duration(tr.chainConfigs[action.chain].votingWaitTime)) * time.Second) + time.Sleep(time.Duration(tr.chainConfigs[action.chain].votingWaitTime) * time.Second) } type startConsumerChainAction struct { @@ -567,7 +564,7 @@ func (tr TestRun) startConsumerChain( chain: action.consumerChain, validators: action.validators, genesisChanges: consumerGenesis, - consumerCfg: true, + skipGentx: true, }, verbose) } @@ -701,7 +698,6 @@ func (tr TestRun) startChangeover( type addChainToRelayerAction struct { chain chainID validator validatorID - consumer bool } const hermesChainConfigTemplate = ` @@ -719,7 +715,6 @@ rpc_timeout = "10s" store_prefix = "ibc" trusting_period = "14days" websocket_addr = "%s" -ccv_consumer_chain = %v [chains.gas_price] denom = "stake" @@ -818,7 +813,6 @@ func (tr TestRun) addChainToHermes( keyName, rpcAddr, wsAddr, - action.consumer, ) bashCommand := fmt.Sprintf(`echo '%s' >> %s`, chainConfig, "/root/.hermes/config.toml") @@ -832,14 +826,8 @@ func (tr TestRun) addChainToHermes( } // Save mnemonic to file within container - var mnemonic string - if tr.validatorConfigs[action.validator].useConsumerKey && action.consumer { - mnemonic = tr.validatorConfigs[action.validator].consumerMnemonic - } else { - mnemonic = tr.validatorConfigs[action.validator].mnemonic - } - saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, mnemonic, "/root/.hermes/mnemonic.txt") + saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, tr.validatorConfigs[action.validator].mnemonic, "/root/.hermes/mnemonic.txt") //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. bz, err = exec.Command("docker", "exec", tr.containerConfig.instanceName, "bash", "-c", saveMnemonicCommand, @@ -1779,8 +1767,6 @@ func (tr TestRun) assignConsumerPubKey(action assignConsumerPubKeyAction, verbos valCfg.useConsumerKey = true tr.validatorConfigs[action.validator] = valCfg } - - time.Sleep(1 * time.Second) } // slashThrottleDequeue polls slash queue sizes until nextQueueSize is achieved diff --git a/tests/e2e/actions_consumer_misbehaviour.go b/tests/e2e/actions_consumer_misbehaviour.go deleted file mode 100644 index 2b01c2818e..0000000000 --- a/tests/e2e/actions_consumer_misbehaviour.go +++ /dev/null @@ -1,92 +0,0 @@ -package main - -import ( - "bufio" - "fmt" - "log" - "os/exec" - "time" -) - -type forkConsumerChainAction struct { - consumerChain chainID - providerChain chainID - validator validatorID - relayerConfig string -} - -func (tr TestRun) forkConsumerChain(action forkConsumerChainAction, verbose bool) { - valCfg := tr.validatorConfigs[action.validator] - - //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. - configureNodeCmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "/bin/bash", - "/testnet-scripts/fork-consumer.sh", tr.chainConfigs[action.consumerChain].binaryName, - string(action.validator), string(action.consumerChain), - tr.chainConfigs[action.consumerChain].ipPrefix, - tr.chainConfigs[action.providerChain].ipPrefix, - valCfg.mnemonic, - action.relayerConfig, - ) - - if verbose { - fmt.Println("forkConsumerChain - reconfigure node cmd:", configureNodeCmd.String()) - } - - cmdReader, err := configureNodeCmd.StdoutPipe() - if err != nil { - log.Fatal(err) - } - configureNodeCmd.Stderr = configureNodeCmd.Stdout - - if err := configureNodeCmd.Start(); err != nil { - log.Fatal(err) - } - - scanner := bufio.NewScanner(cmdReader) - - for scanner.Scan() { - out := scanner.Text() - if verbose { - fmt.Println("fork consumer validator : " + out) - } - if out == done { - break - } - } - if err := scanner.Err(); err != nil { - log.Fatal(err) - } - - time.Sleep(5 * time.Second) -} - -type updateLightClientAction struct { - hostChain chainID - relayerConfig string - clientID string -} - -func (tr TestRun) updateLightClient( - action updateLightClientAction, - verbose bool, -) { - // hermes clear packets ibc0 transfer channel-13 - //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. - cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, "hermes", - "--config", action.relayerConfig, - "update", - "client", - "--client", action.clientID, - "--host-chain", string(action.hostChain), - ) - if verbose { - log.Println("updateLightClientAction cmd:", cmd.String()) - } - - bz, err := cmd.CombinedOutput() - if err != nil { - log.Fatal(err, "\n", string(bz)) - } - - tr.waitBlocks(action.hostChain, 5, 30*time.Second) -} diff --git a/tests/e2e/config.go b/tests/e2e/config.go index efed270ce7..3038f69f4e 100644 --- a/tests/e2e/config.go +++ b/tests/e2e/config.go @@ -376,90 +376,6 @@ func ChangeoverTestRun() TestRun { } } -func ConsumerMisbehaviourTestRun() TestRun { - return TestRun{ - name: "misbehaviour", - containerConfig: ContainerConfig{ - containerName: "interchain-security-container", - instanceName: "interchain-security-instance", - ccvVersion: "1", - now: time.Now(), - }, - validatorConfigs: map[validatorID]ValidatorConfig{ - validatorID("alice"): { - mnemonic: "pave immune ethics wrap gain ceiling always holiday employ earth tumble real ice engage false unable carbon equal fresh sick tattoo nature pupil nuclear", - delAddress: "cosmos19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddwhu7lm", - valoperAddress: "cosmosvaloper19pe9pg5dv9k5fzgzmsrgnw9rl9asf7ddtrgtng", - valconsAddress: "cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq", - privValidatorKey: `{"address":"06C0F3E47CC5C748269088DC2F36411D3AAA27C6","pub_key":{"type":"tendermint/PubKeyEd25519","value":"RrclQz9bIhkIy/gfL485g3PYMeiIku4qeo495787X10="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uX+ZpDMg89a6gtqs/+MQpCTSqlkZ0nJQJOhLlCJvwvdGtyVDP1siGQjL+B8vjzmDc9gx6IiS7ip6jj3nvztfXQ=="}}`, - nodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"fjw4/DAhyRPnwKgXns5SV7QfswRSXMWJpHS7TyULDmJ8ofUc5poQP8dgr8bZRbCV5RV8cPqDq3FPdqwpmUbmdA=="}}`, - ipSuffix: "4", - - // consumer chain assigned key - consumerMnemonic: "exile install vapor thing little toss immune notable lounge december final easy strike title end program interest quote cloth forget forward job october twenty", - consumerDelAddress: "cosmos1eeeggku6dzk3mv7wph3zq035rhtd890sjswszd", - consumerValoperAddress: "cosmosvaloper1eeeggku6dzk3mv7wph3zq035rhtd890shy69w7", - consumerValconsAddress: "cosmosvalcons1muys5jyqk4xd27e208nym85kn0t4zjcfeu63fe", - consumerValPubKey: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="}`, - consumerPrivValidatorKey: `{"address":"DF090A4880B54CD57B2A79E64D9E969BD7514B09","pub_key":{"type":"tendermint/PubKeyEd25519","value":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TRJgf7lkTjs/sj43pyweEOanyV7H7fhnVivOi0A4yjW6NjXgCCilX3TshiA8CT/nHxz3brtLh9B/z2fJ4I9N6w=="}}`, - consumerNodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"F966RL9pi20aXRzEBe4D0xRQJtZt696Xxz44XUON52cFc83FMn1WXJbP6arvA2JPyn2LA3DLKCFHSgALrCGXGA=="}}`, - useConsumerKey: true, - }, - validatorID("bob"): { - mnemonic: "glass trip produce surprise diamond spin excess gaze wash drum human solve dress minor artefact canoe hard ivory orange dinner hybrid moral potato jewel", - delAddress: "cosmos1dkas8mu4kyhl5jrh4nzvm65qz588hy9qcz08la", - valoperAddress: "cosmosvaloper1dkas8mu4kyhl5jrh4nzvm65qz588hy9qakmjnw", - valconsAddress: "cosmosvalcons1nx7n5uh0ztxsynn4sje6eyq2ud6rc6klc96w39", - privValidatorKey: `{"address":"99BD3A72EF12CD024E7584B3AC900AE3743C6ADF","pub_key":{"type":"tendermint/PubKeyEd25519","value":"mAN6RXYxSM4MNGSIriYiS7pHuwAcOHDQAy9/wnlSzOI="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"QePcwfWtOavNK7pBJrtoLMzarHKn6iBWfWPFeyV+IdmYA3pFdjFIzgw0ZIiuJiJLuke7ABw4cNADL3/CeVLM4g=="}}`, - nodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"TQ4vHcO/vKdzGtWpelkX53WdMQd4kTsWGFrdcatdXFvWyO215Rewn5IRP0FszPLWr2DqPzmuH8WvxYGk5aeOXw=="}}`, - ipSuffix: "5", - - // consumer chain assigned key - consumerMnemonic: "grunt list hour endless observe better spoil penalty lab duck only layer vague fantasy satoshi record demise topple space shaft solar practice donor sphere", - consumerDelAddress: "cosmos1q90l6j6lzzgt460ehjj56azknlt5yrd4s38n97", - consumerValoperAddress: "cosmosvaloper1q90l6j6lzzgt460ehjj56azknlt5yrd449nxfd", - consumerValconsAddress: "cosmosvalcons1uuec3cjxajv5te08p220usrjhkfhg9wyvqn0tm", - consumerValPubKey: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o="}`, - consumerPrivValidatorKey: `{"address":"E73388E246EC9945E5E70A94FE4072BD937415C4","pub_key":{"type":"tendermint/PubKeyEd25519","value":"QlG+iYe6AyYpvY1z9RNJKCVlH14Q/qSz4EjGdGCru3o="},"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"OFR4w+FC6EMw5fAGTrHVexyPrjzQ7QfqgZOMgVf0izlCUb6Jh7oDJim9jXP1E0koJWUfXhD+pLPgSMZ0YKu7eg=="}}`, - consumerNodeKey: `{"priv_key":{"type":"tendermint/PrivKeyEd25519","value":"uhPCqnL2KE8m/8OFNLQ5bN3CJr6mds+xfBi0E4umT/s2uWiJhet+vbYx88DHSdof3gGFNTIzAIxSppscBKX96w=="}}`, - useConsumerKey: false, - }, - }, - chainConfigs: map[chainID]ChainConfig{ - chainID("provi"): { - chainId: chainID("provi"), - binaryName: "interchain-security-pd", - ipPrefix: "7.7.7", - votingWaitTime: 20, - genesisChanges: ".app_state.gov.voting_params.voting_period = \"20s\" | " + - // Custom slashing parameters for testing validator downtime functionality - // See https://docs.cosmos.network/main/modules/slashing/04_begin_block.html#uptime-tracking - ".app_state.slashing.params.signed_blocks_window = \"10\" | " + - ".app_state.slashing.params.min_signed_per_window = \"0.500000000000000000\" | " + - ".app_state.slashing.params.downtime_jail_duration = \"2s\" | " + - ".app_state.slashing.params.slash_fraction_downtime = \"0.010000000000000000\" | " + - ".app_state.provider.params.slash_meter_replenish_fraction = \"1.0\" | " + // This disables slash packet throttling - ".app_state.provider.params.slash_meter_replenish_period = \"3s\"", - }, - chainID("consu"): { - chainId: chainID("consu"), - binaryName: "interchain-security-cd", - ipPrefix: "7.7.8", - votingWaitTime: 20, - genesisChanges: ".app_state.gov.voting_params.voting_period = \"20s\" | " + - ".app_state.slashing.params.signed_blocks_window = \"15\" | " + - ".app_state.slashing.params.min_signed_per_window = \"0.500000000000000000\" | " + - ".app_state.slashing.params.downtime_jail_duration = \"2s\" | " + - ".app_state.slashing.params.slash_fraction_downtime = \"0.010000000000000000\"", - }, - }, - tendermintConfigOverride: `s/timeout_commit = "5s"/timeout_commit = "1s"/;` + - `s/peer_gossip_sleep_duration = "100ms"/peer_gossip_sleep_duration = "50ms"/;` + - // Required to start consumer chain by running a single big validator - `s/fast_sync = true/fast_sync = false/;`, - } -} - func (s *TestRun) SetDockerConfig(localSdkPath string, useGaia bool, gaiaTag string) { if localSdkPath != "" { fmt.Println("USING LOCAL SDK", localSdkPath) diff --git a/tests/e2e/main.go b/tests/e2e/main.go index 37ded7ce8d..737a318de2 100644 --- a/tests/e2e/main.go +++ b/tests/e2e/main.go @@ -62,7 +62,6 @@ func main() { {DemocracyTestRun(true), democracySteps}, {DemocracyTestRun(false), rewardDenomConsumerSteps}, {SlashThrottleTestRun(), slashThrottleSteps}, - {ConsumerMisbehaviourTestRun(), consumerMisbehaviourSteps}, } if includeMultiConsumer != nil && *includeMultiConsumer { testRuns = append(testRuns, testRunWithSteps{MultiConsumerTestRun(), multipleConsumers}) @@ -102,7 +101,7 @@ func (tr *TestRun) Run(steps []Step, localSdkPath string, useGaia bool, gaiaTag tr.validateStringLiterals() tr.startDocker() tr.executeSteps(steps) - // tr.teardownDocker() + tr.teardownDocker() } type testRunWithSteps struct { @@ -174,10 +173,6 @@ func (tr *TestRun) runStep(step Step, verbose bool) { tr.startRelayer(action, verbose) case registerConsumerRewardDenomAction: tr.registerConsumerRewardDenom(action, verbose) - case forkConsumerChainAction: - tr.forkConsumerChain(action, verbose) - case updateLightClientAction: - tr.updateLightClient(action, verbose) default: log.Fatalf("unknown action in testRun %s: %#v", tr.name, action) } diff --git a/tests/e2e/state.go b/tests/e2e/state.go index 8d9ba9a81e..15500dd01f 100644 --- a/tests/e2e/state.go +++ b/tests/e2e/state.go @@ -28,7 +28,6 @@ type ChainState struct { ConsumerChainQueueSizes *map[chainID]uint GlobalSlashQueueSize *uint RegisteredConsumerRewardDenoms *[]string - ClientsFrozenHeights *map[string]clienttypes.Height } type Proposal interface { @@ -185,14 +184,6 @@ func (tr TestRun) getChainState(chain chainID, modelState ChainState) ChainState chainState.RegisteredConsumerRewardDenoms = ®isteredConsumerRewardDenoms } - if modelState.ClientsFrozenHeights != nil { - chainClientsFrozenHeights := map[string]clienttypes.Height{} - for id := range *modelState.ClientsFrozenHeights { - chainClientsFrozenHeights[id] = tr.getClientFrozenHeight(chain, id) - } - chainState.ClientsFrozenHeights = &chainClientsFrozenHeights - } - return chainState } @@ -746,33 +737,3 @@ func (tr TestRun) getQueryNodeIP(chain chainID) string { } return fmt.Sprintf("%s.253", tr.chainConfigs[chain].ipPrefix) } - -// getClientFrozenHeight returns the frozen height for a client with the given client ID -// by querying the hosting chain with the given chainID -func (tr TestRun) getClientFrozenHeight(chain chainID, clientID string) clienttypes.Height { - //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. - cmd := exec.Command("docker", "exec", tr.containerConfig.instanceName, tr.chainConfigs[chainID("provi")].binaryName, - "query", "ibc", "client", "state", clientID, - `--node`, tr.getQueryNode(chainID("provi")), - `-o`, `json`, - ) - - bz, err := cmd.CombinedOutput() - if err != nil { - log.Fatal(err, "\n", string(bz)) - } - - frozenHeight := gjson.Get(string(bz), "client_state.frozen_height") - - revHeight, err := strconv.Atoi(frozenHeight.Get("revision_height").String()) - if err != nil { - log.Fatal(err, "\n", string(bz)) - } - - revNumber, err := strconv.Atoi(frozenHeight.Get("revision_number").String()) - if err != nil { - log.Fatal(err, "\n", string(bz)) - } - - return clienttypes.Height{RevisionHeight: uint64(revHeight), RevisionNumber: uint64(revNumber)} -} diff --git a/tests/e2e/steps.go b/tests/e2e/steps.go index 78a56654e6..7613b05558 100644 --- a/tests/e2e/steps.go +++ b/tests/e2e/steps.go @@ -87,10 +87,3 @@ var changeoverSteps = concatSteps( stepsPostChangeoverDelegate("sover"), ) - -var consumerMisbehaviourSteps = concatSteps( - // start provider and consumer chain - stepsStartChainsWithSoftOptOut("consu"), - // make consumer validator to misbehave and get jail - stepsCauseConsumerMisbehaviour("consu"), -) diff --git a/tests/e2e/steps_consumer_misbehaviour.go b/tests/e2e/steps_consumer_misbehaviour.go deleted file mode 100644 index 7cd4dbd613..0000000000 --- a/tests/e2e/steps_consumer_misbehaviour.go +++ /dev/null @@ -1,263 +0,0 @@ -package main - -import ( - clienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" -) - -// starts a provider chain and a consumer chain with two validators, -// where the voting power is distributed in order that the smallest validator -// can soft opt-out of validating the consumer chain. -func stepsStartChainsWithSoftOptOut(consumerName string) []Step { - s := []Step{ - { - // Create a provider chain with two validators, where one validator holds 96% of the voting power - // and the other validator holds 4% of the voting power. - action: StartChainAction{ - chain: chainID("provi"), - validators: []StartChainValidator{ - {id: validatorID("alice"), stake: 500000000, allocation: 10000000000}, - {id: validatorID("bob"), stake: 20000000, allocation: 10000000000}, - }, - }, - state: State{ - chainID("provi"): ChainState{ - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 9500000000, - validatorID("bob"): 9980000000, - }, - }, - }, - }, - { - action: submitConsumerAdditionProposalAction{ - chain: chainID("provi"), - from: validatorID("alice"), - deposit: 10000001, - consumerChain: chainID(consumerName), - spawnTime: 0, - initialHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1}, - }, - state: State{ - chainID("provi"): ChainState{ - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 9489999999, - validatorID("bob"): 9980000000, - }, - Proposals: &map[uint]Proposal{ - 1: ConsumerAdditionProposal{ - Deposit: 10000001, - Chain: chainID(consumerName), - SpawnTime: 0, - InitialHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1}, - Status: "PROPOSAL_STATUS_VOTING_PERIOD", - }, - }, - }, - }, - }, - // add a consumer key before the chain starts - // the key will be present in consumer genesis initial_val_set - { - action: assignConsumerPubKeyAction{ - chain: chainID(consumerName), - validator: validatorID("alice"), - consumerPubkey: `{"@type":"/cosmos.crypto.ed25519.PubKey","key":"ujY14AgopV907IYgPAk/5x8c9267S4fQf89nyeCPTes="}`, - // consumer chain has not started - // we don't need to reconfigure the node - // since it will start with consumer key - reconfigureNode: false, - }, - state: State{ - chainID(consumerName): ChainState{ - AssignedKeys: &map[validatorID]string{ - validatorID("alice"): "cosmosvalcons1muys5jyqk4xd27e208nym85kn0t4zjcfeu63fe", - }, - ProviderKeys: &map[validatorID]string{ - validatorID("alice"): "cosmosvalcons1qmq08eruchr5sf5s3rwz7djpr5a25f7xw4mceq", - }, - }, - }, - }, - { - action: voteGovProposalAction{ - chain: chainID("provi"), - from: []validatorID{validatorID("alice"), validatorID("bob")}, - vote: []string{"yes", "yes"}, - propNumber: 1, - }, - state: State{ - chainID("provi"): ChainState{ - Proposals: &map[uint]Proposal{ - 1: ConsumerAdditionProposal{ - Deposit: 10000001, - Chain: chainID(consumerName), - SpawnTime: 0, - InitialHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1}, - Status: "PROPOSAL_STATUS_PASSED", - }, - }, - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 9500000000, - validatorID("bob"): 9980000000, - }, - }, - }, - }, - { - // start a consumer chain using a single big validator knowing that it holds more than 2/3 of the voting power - // and that the other validators hold less than 5% so they won't get jailed thanks to the sof opt-out mechanism. - action: startConsumerChainAction{ - consumerChain: chainID(consumerName), - providerChain: chainID("provi"), - validators: []StartChainValidator{ - {id: validatorID("alice"), stake: 500000000, allocation: 10000000000}, - }, - // For consumers that're launching with the provider being on an earlier version - // of ICS before the soft opt-out threshold was introduced, we need to set the - // soft opt-out threshold to 0.05 in the consumer genesis to ensure that the - // consumer binary doesn't panic. Sdk requires that all params are set to valid - // values from the genesis file. - genesisChanges: ".app_state.ccvconsumer.params.soft_opt_out_threshold = \"0.05\"", - }, - state: State{ - chainID("provi"): ChainState{ - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 9500000000, - validatorID("bob"): 9980000000, - }, - }, - chainID(consumerName): ChainState{ - ValBalances: &map[validatorID]uint{ - validatorID("alice"): 10000000000, - }, - }, - }, - }, - { - action: addIbcConnectionAction{ - chainA: chainID(consumerName), - chainB: chainID("provi"), - clientA: 0, - clientB: 0, - }, - state: State{}, - }, - { - action: addIbcChannelAction{ - chainA: chainID(consumerName), - chainB: chainID("provi"), - connectionA: 0, - portA: "consumer", // TODO: check port mapping - portB: "provider", - order: "ordered", - }, - state: State{}, - }, - // delegate some token and relay the resulting VSC packets - // in oder to initiates the CCV channel - { - action: delegateTokensAction{ - chain: chainID("provi"), - from: validatorID("alice"), - to: validatorID("alice"), - amount: 11000000, - }, - state: State{ - chainID("provi"): ChainState{ - ValPowers: &map[validatorID]uint{ - validatorID("alice"): 511, - validatorID("bob"): 20, - }, - }, - chainID(consumerName): ChainState{ - ValPowers: &map[validatorID]uint{ - validatorID("alice"): 500, - validatorID("bob"): 20, - }, - }, - }, - }, - { - action: relayPacketsAction{ - chainA: chainID("provi"), - chainB: chainID(consumerName), - port: "provider", - channel: 0, - }, - state: State{ - chainID(consumerName): ChainState{ - ValPowers: &map[validatorID]uint{ - validatorID("alice"): 511, - validatorID("bob"): 20, - }, - }, - }, - }, - } - - return s -} - -// stepsCauseConsumerMisbehaviour forks a consumer chain in order to cause a ICS misbehaviour. -// The malicious validator behind the attack gets jailed and the consumer client freezed on the provider. -func stepsCauseConsumerMisbehaviour(consumerName string) []Step { - consumerClientID := "07-tendermint-0" - forkRelayerConfig := "/root/.hermes/config_fork.toml" - return []Step{ - { - // start a consumer chain's validator clone - action: forkConsumerChainAction{ - consumerChain: chainID(consumerName), - providerChain: chainID("provi"), - validator: validatorID("alice"), - relayerConfig: forkRelayerConfig, - }, - state: State{}, - }, - { - // start relayer to detect ICS misbehaviour - action: startRelayerAction{}, - state: State{ - // The consumer client shouldn't be frozen on the provider yet since - // no client update packet was sent by the fork yet - chainID("provi"): ChainState{ - ClientsFrozenHeights: &map[string]clienttypes.Height{ - "07-tendermint-0": { - RevisionNumber: 0, - RevisionHeight: 0, - }, - }, - }, - }, - }, - { - // update the consumer client hosted on the provider - // using the consumer fork as the primary node - action: updateLightClientAction{ - hostChain: chainID("provi"), - relayerConfig: forkRelayerConfig, - clientID: consumerClientID, - }, - state: State{ - chainID("provi"): ChainState{ - ValPowers: &map[validatorID]uint{ - validatorID("alice"): 0, - validatorID("bob"): 20, - }, - ClientsFrozenHeights: &map[string]clienttypes.Height{ - "07-tendermint-0": { - RevisionNumber: 0, - RevisionHeight: 1, - }, - }, - }, - chainID(consumerName): ChainState{ - ValPowers: &map[validatorID]uint{ - validatorID("alice"): 511, - validatorID("bob"): 20, - }, - }, - }, - }, - } -} diff --git a/tests/e2e/testnet-scripts/fork-consumer.sh b/tests/e2e/testnet-scripts/fork-consumer.sh deleted file mode 100644 index 0bf96fcb79..0000000000 --- a/tests/e2e/testnet-scripts/fork-consumer.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/bash -set -eux - -# The gaiad binary -BIN=$1 - -# the validator ID used to perform the fork -VAL_ID=$2 - -# The consumer chain ID -CHAIN_ID=$3 - -# chain's IP address prefix; $PROV_CHAIN_PREFIX, $CONS_CHAIN_PREFIX... -# see chain config for details -CONS_CHAIN_PREFIX=$4 - -PROV_CHAIN_PREFIX=$5 - -VAL_MNEMONIC=$6 - -FORK_HERMES_CONFIG=$7 - -FORK_NODE_DIR=/$CHAIN_ID/validatorfork - -# create directory for forking/double-signing node -mkdir $FORK_NODE_DIR -cp -r /$CHAIN_ID/validator$VAL_ID/* $FORK_NODE_DIR - -# remove persistent peers -rm -f $FORK_NODE_DIR/addrbook.json - -# add fork to hermes relayer -tee $FORK_HERMES_CONFIG< mnemonic.txt - -# Start the validator forking the consumer chain -# using the sybil IP allocation -ip netns exec $CHAIN_ID-sybil $BIN \ - --home $FORK_NODE_DIR \ - --address tcp://$CONS_CHAIN_PREFIX.252:26655 \ - --rpc.laddr tcp://$CONS_CHAIN_PREFIX.252:26658 \ - --grpc.address $CONS_CHAIN_PREFIX.252:9091 \ - --log_level info \ - --p2p.laddr tcp://$CONS_CHAIN_PREFIX.252:26656 \ - --grpc-web.enable=false start &> /consu/validatorfork/logs & - diff --git a/tests/e2e/testnet-scripts/hermes-config.toml b/tests/e2e/testnet-scripts/hermes-config.toml index 89c1f0a0bb..eb8154d95b 100644 --- a/tests/e2e/testnet-scripts/hermes-config.toml +++ b/tests/e2e/testnet-scripts/hermes-config.toml @@ -1,18 +1,2 @@ [global] -log_level = "debug" - -[mode] - -[mode.clients] -enabled = true -refresh = true -misbehaviour = true - -[mode.connections] -enabled = false - -[mode.channels] -enabled = false - -[mode.packets] -enabled = true \ No newline at end of file + log_level = "info" \ No newline at end of file diff --git a/tests/e2e/testnet-scripts/start-chain.sh b/tests/e2e/testnet-scripts/start-chain.sh index 8bc0dbadca..ec91db748c 100644 --- a/tests/e2e/testnet-scripts/start-chain.sh +++ b/tests/e2e/testnet-scripts/start-chain.sh @@ -198,7 +198,6 @@ do #'s/foo/bar/;s/abc/def/' sed -i "$TENDERMINT_CONFIG_TRANSFORM" $CHAIN_ID/validator$VAL_ID/config/config.toml fi - done @@ -258,13 +257,9 @@ do fi done + # Remove leading comma and concat to flag + PERSISTENT_PEERS="--p2p.persistent_peers ${PERSISTENT_PEERS:1}" - if [ "$PERSISTENT_PEERS" != "" ]; then - # Remove leading comma and concat to flag - PERSISTENT_PEERS="--p2p.persistent_peers ${PERSISTENT_PEERS:1}" - fi - - ARGS="$GAIA_HOME $LISTEN_ADDRESS $RPC_ADDRESS $GRPC_ADDRESS $LOG_LEVEL $P2P_ADDRESS $ENABLE_WEBGRPC $PERSISTENT_PEERS" if [[ "$USE_COMETMOCK" == "true" ]]; then # to start with CometMock, ensure ABCI server uses grpc (--transport=grpc) and the app is started without in-process CometBFT (--with-tendermint=false) diff --git a/third_party/proto/tendermint/types/evidence.proto b/third_party/proto/tendermint/types/evidence.proto deleted file mode 100644 index 451b8dca3c..0000000000 --- a/third_party/proto/tendermint/types/evidence.proto +++ /dev/null @@ -1,38 +0,0 @@ -syntax = "proto3"; -package tendermint.types; - -option go_package = "github.com/tendermint/tendermint/proto/tendermint/types"; - -import "gogoproto/gogo.proto"; -import "google/protobuf/timestamp.proto"; -import "tendermint/types/types.proto"; -import "tendermint/types/validator.proto"; - -message Evidence { - oneof sum { - DuplicateVoteEvidence duplicate_vote_evidence = 1; - LightClientAttackEvidence light_client_attack_evidence = 2; - } -} - -// DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes. -message DuplicateVoteEvidence { - tendermint.types.Vote vote_a = 1; - tendermint.types.Vote vote_b = 2; - int64 total_voting_power = 3; - int64 validator_power = 4; - google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} - -// LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client. -message LightClientAttackEvidence { - tendermint.types.LightBlock conflicting_block = 1; - int64 common_height = 2; - repeated tendermint.types.Validator byzantine_validators = 3; - int64 total_voting_power = 4; - google.protobuf.Timestamp timestamp = 5 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true]; -} - -message EvidenceList { - repeated Evidence evidence = 1 [(gogoproto.nullable) = false]; -} From ea89a69de897bd96859e363dc08af3b91ee99be0 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 24 Jul 2023 14:35:52 +0200 Subject: [PATCH 20/29] cleaning' --- tests/e2e/actions.go | 2 +- tests/e2e/testnet-scripts/start-chain.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go index 5695124a46..06bcb7f5f7 100644 --- a/tests/e2e/actions.go +++ b/tests/e2e/actions.go @@ -813,6 +813,7 @@ func (tr TestRun) addChainToHermes( keyName, rpcAddr, wsAddr, + // action.consumer, ) bashCommand := fmt.Sprintf(`echo '%s' >> %s`, chainConfig, "/root/.hermes/config.toml") @@ -826,7 +827,6 @@ func (tr TestRun) addChainToHermes( } // Save mnemonic to file within container - saveMnemonicCommand := fmt.Sprintf(`echo '%s' > %s`, tr.validatorConfigs[action.validator].mnemonic, "/root/.hermes/mnemonic.txt") //#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments. bz, err = exec.Command("docker", "exec", tr.containerConfig.instanceName, "bash", "-c", diff --git a/tests/e2e/testnet-scripts/start-chain.sh b/tests/e2e/testnet-scripts/start-chain.sh index ec91db748c..9d6e73fdbb 100644 --- a/tests/e2e/testnet-scripts/start-chain.sh +++ b/tests/e2e/testnet-scripts/start-chain.sh @@ -259,7 +259,7 @@ do # Remove leading comma and concat to flag PERSISTENT_PEERS="--p2p.persistent_peers ${PERSISTENT_PEERS:1}" - + ARGS="$GAIA_HOME $LISTEN_ADDRESS $RPC_ADDRESS $GRPC_ADDRESS $LOG_LEVEL $P2P_ADDRESS $ENABLE_WEBGRPC $PERSISTENT_PEERS" if [[ "$USE_COMETMOCK" == "true" ]]; then # to start with CometMock, ensure ABCI server uses grpc (--transport=grpc) and the app is started without in-process CometBFT (--with-tendermint=false) From 92ba63d1fd160b60e6b6ce7e7b21254e7853b551 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 24 Jul 2023 14:43:42 +0200 Subject: [PATCH 21/29] Update x/ccv/provider/keeper/misbehaviour.go Co-authored-by: Anca Zamfir --- x/ccv/provider/keeper/misbehaviour.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index d90ca6765f..45f7b540ca 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -105,7 +105,7 @@ func (k Keeper) CheckMisbehaviourAndUpdateState(ctx sdk.Context, misbehaviour ex } if !clientState.(*ibctmtypes.ClientState).IsExpired(consState.Timestamp, ctx.BlockTime()) { - k.Logger(ctx).Info("client frozen due to a consumer chain misbehaviour", "client-id", misbehaviour.GetClientID()) + k.Logger(ctx).Info("client is expired", "client-id", misbehaviour.GetClientID()) } return nil From e7176321ba0606a5b89a4dbc4ef7cad136a6f8dc Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 24 Jul 2023 14:45:15 +0200 Subject: [PATCH 22/29] Update x/ccv/provider/keeper/misbehaviour.go Co-authored-by: Anca Zamfir --- x/ccv/provider/keeper/misbehaviour.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 45f7b540ca..f85478244a 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -22,7 +22,7 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour exporte logger := ctx.Logger() // Check that the validity of the misbehaviour - if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, misbehaviour); err != nil { + if err := k.CheckMisbehaviourAndUpdateState(ctx, misbehaviour); err != nil { logger.Info("Misbehaviour rejected", err.Error()) return err } From 633027899694de2123504b84d5adf4608b663e36 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 24 Jul 2023 14:50:22 +0200 Subject: [PATCH 23/29] update integration tests --- tests/integration/misbehaviour.go | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 0e59116c1b..2669be03ac 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -101,9 +101,6 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { for _, tc := range testCases { s.Run(tc.name, func() { err := s.providerApp.GetProviderKeeper().HandleConsumerMisbehaviour(s.providerCtx(), tc.misbehaviour) - // get clienstate - cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointA.ClientID) - s.Require().True(ok) if tc.expPass { s.NoError(err) @@ -120,12 +117,9 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { } else { s.Require().False(provVal.Jailed) s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) - s.Require().NotZero(cs.(*ibctmtypes.ClientState).FrozenHeight) - } } - // verify that the client was frozen - s.Require().NotZero(cs.(*ibctmtypes.ClientState).FrozenHeight) + } else { // Check that no validators are jailed or tombstoned on the provider for _, consuVal := range clientTMValset.Validators { @@ -136,8 +130,6 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.Require().NoError(err) s.Require().False(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provConsAddr)) } - // verify that the client wasn't frozen - s.Require().Zero(cs.(*ibctmtypes.ClientState).FrozenHeight) } }) } @@ -542,17 +534,12 @@ func (s *CCVTestSuite) TestCheckMisbehaviourAndUpdateState() { // get clienstate cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointA.ClientID) s.Require().True(ok) - + // verify that the client wasn't frozen + s.Require().Zero(cs.(*ibctmtypes.ClientState).FrozenHeight) if tc.expPass { s.NoError(err) - - // verify that the client was frozen - s.Require().NotZero(cs.(*ibctmtypes.ClientState).FrozenHeight) } else { s.Error(err) - - // verify that the client wasn't frozen - s.Require().Zero(cs.(*ibctmtypes.ClientState).FrozenHeight) } }) } From d9843776e0be6dec1679b3ae734244694f3aaecc Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 4 Aug 2023 10:43:40 +0200 Subject: [PATCH 24/29] save --- tests/integration/misbehaviour.go | 176 +++++++++++++++++++++++++- testutil/integration/debug_test.go | 4 + x/ccv/provider/keeper/misbehaviour.go | 36 +++++- 3 files changed, 214 insertions(+), 2 deletions(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index fbe07b2a36..93133cb4d3 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -66,7 +66,6 @@ func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.Require().True(val.Jailed) s.Require().True(s.providerApp.GetTestSlashingKeeper().IsTombstoned(s.providerCtx(), provAddr.Address)) } - } func (s *CCVTestSuite) TestGetByzantineValidators() { @@ -210,3 +209,178 @@ func (s *CCVTestSuite) TestGetByzantineValidators() { }) } } + +func (s *CCVTestSuite) TestCheckMisbehaviour() { + s.SetupCCVChannel(s.path) + // required to have the consumer client revision height greater than 0 + s.SendEmptyVSCPacket() + + // create signing info for all validators + for _, v := range s.providerChain.Vals.Validators { + s.setDefaultValSigningInfo(*v) + } + + // create a new header timestamp + headerTs := s.providerCtx().BlockTime().Add(time.Minute) + + // get trusted validators and height + clientHeight := s.consumerChain.LastHeader.TrustedHeight + clientTMValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators) + clientSigners := s.consumerChain.Signers + + // create an alternative validator set using more than 1/3 of the trusted validator set + altValset := tmtypes.NewValidatorSet(s.consumerChain.Vals.Validators[0:2]) + altSigners := make(map[string]tmtypes.PrivValidator, 1) + altSigners[clientTMValset.Validators[0].Address.String()] = clientSigners[clientTMValset.Validators[0].Address.String()] + altSigners[clientTMValset.Validators[1].Address.String()] = clientSigners[clientTMValset.Validators[1].Address.String()] + testCases := []struct { + name string + misbehaviour *ibctmtypes.Misbehaviour + expPass bool + }{ + { + "client state not found - shouldn't pass", + &ibctmtypes.Misbehaviour{ + ClientId: "clientID", + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "invalid misbehaviour with empty header1 - shouldn't pass", + &ibctmtypes.Misbehaviour{ + Header1: &ibctmtypes.Header{}, + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "invalid misbehaviour with different header height - shouldn't pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+2), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + false, + }, + { + "valid misbehaviour - should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // create header using a different validator set + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, + { + "valid misbehaviour with already frozen client - should pass", + &ibctmtypes.Misbehaviour{ + ClientId: s.path.EndpointA.ClientID, + Header1: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + clientTMValset, + clientTMValset, + clientTMValset, + clientSigners, + ), + // the resulting Header2 will have a different BlockID + // than Header1 since doesn't share the same valset and signers + Header2: s.consumerChain.CreateTMClientHeader( + s.consumerChain.ChainID, + int64(clientHeight.RevisionHeight+1), + clientHeight, + headerTs, + altValset, + altValset, + clientTMValset, + altSigners, + ), + }, + true, + }, + } + + for _, tc := range testCases { + s.Run(tc.name, func() { + + err := s.providerApp.GetProviderKeeper().CheckMisbehaviour(s.providerCtx(), *tc.misbehaviour) + cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointA.ClientID) + s.Require().True(ok) + // verify that the client wasn't frozen + s.Require().Zero(cs.(*ibctmtypes.ClientState).FrozenHeight) + if tc.expPass { + s.NoError(err) + } else { + s.Error(err) + } + }) + } +} diff --git a/testutil/integration/debug_test.go b/testutil/integration/debug_test.go index 6715d6368e..2d9421300b 100644 --- a/testutil/integration/debug_test.go +++ b/testutil/integration/debug_test.go @@ -268,3 +268,7 @@ func TestHandleConsumerMisbehaviour(t *testing.T) { func TestGetByzantineValidators(t *testing.T) { runCCVTestByName(t, "TestGetByzantineValidators") } + +func TestCheckMisbehaviour(t *testing.T) { + runCCVTestByName(t, "TestCheckMisbehaviour") +} diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index f0af650bb7..35608f322d 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -7,7 +7,9 @@ import ( "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" ibctmtypes "github.com/cosmos/ibc-go/v4/modules/light-clients/07-tendermint/types" tmtypes "github.com/tendermint/tendermint/types" ) @@ -18,7 +20,7 @@ func (k Keeper) HandleConsumerMisbehaviour(ctx sdk.Context, misbehaviour ibctmty logger := k.Logger(ctx) // Check that the misbehaviour is valid and that the client isn't expired - if err := k.clientKeeper.CheckMisbehaviourAndUpdateState(ctx, &misbehaviour); err != nil { + if err := k.CheckMisbehaviour(ctx, misbehaviour); err != nil { logger.Info("Misbehaviour rejected", err.Error()) return err @@ -162,3 +164,35 @@ func headersStatesTransitionsAreEqual(header1, header2 *tmtypes.LightBlock) bool bytes.Equal(header1.AppHash, header2.AppHash) && bytes.Equal(header1.LastResultsHash, header2.LastResultsHash) } + +// CheckMisbehaviourAndUpdateState checks that headers in the given misbehaviour forms +// a valid light client attack and that the corresponding light client isn't expired +func (k Keeper) CheckMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { + if err := misbehaviour.ValidateBasic(); err != nil { + return err + } + + clientState, found := k.clientKeeper.GetClientState(ctx, misbehaviour.GetClientID()) + if !found { + return sdkerrors.Wrapf(ibcclienttypes.ErrClientNotFound, "cannot check misbehaviour for client with ID %s", misbehaviour.GetClientID()) + } + + clientStore := k.clientKeeper.ClientStore(ctx, misbehaviour.GetClientID()) + + // Check that the headers are at the same height to ensure that + // the misbehaviour is for a light client attack and not a time violation, + // see ibc-go/modules/light-clients/07-tendermint/types/misbehaviour_handle.go#L54 + if !misbehaviour.Header1.GetHeight().EQ(misbehaviour.Header2.GetHeight()) { + return sdkerrors.Wrap(ibcclienttypes.ErrInvalidMisbehaviour, "headers are not at same height") + } + + // CheckMisbehaviourAndUpdateState verifies the misbehaviour against the consensus states + // but does NOT update the light client status. + // Note CheckMisbehaviourAndUpdateState returns an error if the light client is expired + _, err := clientState.CheckMisbehaviourAndUpdateState(ctx, k.cdc, clientStore, &misbehaviour) + if err != nil { + return err + } + + return nil +} From 0dffa0a74801b22c71653756e7882d0e85063874 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 4 Aug 2023 11:07:40 +0200 Subject: [PATCH 25/29] save --- x/ccv/provider/keeper/misbehaviour.go | 32 ++++----------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 35608f322d..a0de0dcdea 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -87,13 +87,10 @@ func (k Keeper) GetByzantineValidators(ctx sdk.Context, misbehaviour ibctmtypes. var validators []*tmtypes.Validator - // // If the headers transitions states aren't equal this is a "lunatic" attack - // // both we still return the validators which double signed - // if !headersStatesTransitionsAreEqual(header1, header2) { - - // compare the signatures in the headers + // compare the signatures of the headers // and return the intersection of validators who signed both - // create a map with the validators that signed header1 + + // create a map with the validators' address that signed header1 header1Signers := map[string]struct{}{} for _, sign := range header1.Commit.Signatures { if sign.Absent() { @@ -103,7 +100,7 @@ func (k Keeper) GetByzantineValidators(ctx sdk.Context, misbehaviour ibctmtypes. } // iterate over the header2 signers - // and check if they also signed header1 + // and check if they s signed header1 for _, sign := range header2.Commit.Signatures { if sign.Absent() { continue @@ -113,27 +110,6 @@ func (k Keeper) GetByzantineValidators(ctx sdk.Context, misbehaviour ibctmtypes. validators = append(validators, val) } } - // } else if header1.Commit.Round == header2.Commit.Round { // Is it still required to compare the rounds here? - // // This is an equivocation attack as both commits are in the same round. - // // We then find the validators that voted for the both headers. - // // - // // Validator hashes are the same therefore the indexing order of validators are the same and thus we - // // only need a single loop to find the validators that voted twice. - // for i := 0; i < len(header1.Commit.Signatures); i++ { - // sigA := header1.Commit.Signatures[i] - // if sigA.Absent() { - // continue - // } - - // sigB := header2.Commit.Signatures[i] - // if sigB.Absent() { - // continue - // } - - // _, val := header1.ValidatorSet.GetByAddress(sigA.ValidatorAddress) - // validators = append(validators, val) - // } - // } sort.Sort(tmtypes.ValidatorsByVotingPower(validators)) return validators, nil From c5d53833e04529b9f1634ed0970a8cd08ab6357c Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 4 Aug 2023 15:59:03 +0200 Subject: [PATCH 26/29] nits --- proto/interchain_security/ccv/provider/v1/tx.proto | 1 - x/ccv/provider/keeper/misbehaviour.go | 9 --------- 2 files changed, 10 deletions(-) diff --git a/proto/interchain_security/ccv/provider/v1/tx.proto b/proto/interchain_security/ccv/provider/v1/tx.proto index b12c0ce5dc..61be3064ea 100644 --- a/proto/interchain_security/ccv/provider/v1/tx.proto +++ b/proto/interchain_security/ccv/provider/v1/tx.proto @@ -9,7 +9,6 @@ import "cosmos_proto/cosmos.proto"; import "google/protobuf/any.proto"; import "ibc/lightclients/tendermint/v1/tendermint.proto"; - // Msg defines the Msg service. service Msg { rpc AssignConsumerKey(MsgAssignConsumerKey) returns (MsgAssignConsumerKeyResponse); diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index a0de0dcdea..38a0ad356a 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -1,7 +1,6 @@ package keeper import ( - "bytes" "sort" "github.com/cosmos/interchain-security/v2/x/ccv/provider/types" @@ -133,14 +132,6 @@ func headerToLightBlock(h ibctmtypes.Header) (*tmtypes.LightBlock, error) { }, nil } -func headersStatesTransitionsAreEqual(header1, header2 *tmtypes.LightBlock) bool { - return bytes.Equal(header1.ValidatorsHash, header2.ValidatorsHash) && - bytes.Equal(header1.NextValidatorsHash, header2.NextValidatorsHash) && - bytes.Equal(header1.ConsensusHash, header2.ConsensusHash) && - bytes.Equal(header1.AppHash, header2.AppHash) && - bytes.Equal(header1.LastResultsHash, header2.LastResultsHash) -} - // CheckMisbehaviourAndUpdateState checks that headers in the given misbehaviour forms // a valid light client attack and that the corresponding light client isn't expired func (k Keeper) CheckMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { From ea3db326fa13f4e8e5f636ad0cbafb2bb864430f Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 4 Aug 2023 17:47:47 +0200 Subject: [PATCH 27/29] remove todo --- tests/integration/misbehaviour.go | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index dd7cd56dea..618c77649b 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -12,7 +12,6 @@ import ( // TestHandleConsumerMisbehaviour tests that handling a valid misbehaviour, // with conflicting headers forming an equivocation, results in the jailing and tombstoning of the validators -// TODO: figure out how to signed headers with a subset a the validator set. func (s *CCVTestSuite) TestHandleConsumerMisbehaviour() { s.SetupCCVChannel(s.path) // required to have the consumer client revision height greater than 0 From 12ed2a8d52a24f300a0be9222a3d747a791336a3 Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Fri, 4 Aug 2023 17:56:44 +0200 Subject: [PATCH 28/29] lint --- tests/integration/misbehaviour.go | 1 - x/ccv/provider/types/msg.go | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/integration/misbehaviour.go b/tests/integration/misbehaviour.go index 618c77649b..c3b590d5c1 100644 --- a/tests/integration/misbehaviour.go +++ b/tests/integration/misbehaviour.go @@ -379,7 +379,6 @@ func (s *CCVTestSuite) TestCheckMisbehaviour() { for _, tc := range testCases { s.Run(tc.name, func() { - err := s.providerApp.GetProviderKeeper().CheckMisbehaviour(s.providerCtx(), *tc.misbehaviour) cs, ok := s.providerApp.GetIBCKeeper().ClientKeeper.GetClientState(s.providerCtx(), s.path.EndpointA.ClientID) s.Require().True(ok) diff --git a/x/ccv/provider/types/msg.go b/x/ccv/provider/types/msg.go index 7b807127c8..5c217f53b8 100644 --- a/x/ccv/provider/types/msg.go +++ b/x/ccv/provider/types/msg.go @@ -147,7 +147,6 @@ func (msg MsgRegisterConsumerRewardDenom) ValidateBasic() error { } func NewMsgSubmitConsumerMisbehaviour(submitter sdk.AccAddress, misbehaviour *ibctmtypes.Misbehaviour) (*MsgSubmitConsumerMisbehaviour, error) { - return &MsgSubmitConsumerMisbehaviour{Submitter: submitter.String(), Misbehaviour: misbehaviour}, nil } From 6cf1f4c8fc849d286af9483a8e06114d41c5db28 Mon Sep 17 00:00:00 2001 From: Marius Poke Date: Fri, 11 Aug 2023 11:17:04 +0200 Subject: [PATCH 29/29] Update x/ccv/provider/keeper/misbehaviour.go --- x/ccv/provider/keeper/misbehaviour.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/ccv/provider/keeper/misbehaviour.go b/x/ccv/provider/keeper/misbehaviour.go index 38a0ad356a..c44c1d46dc 100644 --- a/x/ccv/provider/keeper/misbehaviour.go +++ b/x/ccv/provider/keeper/misbehaviour.go @@ -132,7 +132,7 @@ func headerToLightBlock(h ibctmtypes.Header) (*tmtypes.LightBlock, error) { }, nil } -// CheckMisbehaviourAndUpdateState checks that headers in the given misbehaviour forms +// CheckMisbehaviour checks that headers in the given misbehaviour forms // a valid light client attack and that the corresponding light client isn't expired func (k Keeper) CheckMisbehaviour(ctx sdk.Context, misbehaviour ibctmtypes.Misbehaviour) error { if err := misbehaviour.ValidateBasic(); err != nil {