From a4840fcbd5a1bd3aaad1a9b9daf29115f806bb8b Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 19 Oct 2023 09:56:41 +0200
Subject: [PATCH 001/111] Start adding mbt using Quint model
---
go.mod | 5 +-
go.sum | 2 +
.../difference/core/quint_model/ccv_model.qnt | 33 +-
.../core/quint_model/driver/common.go | 96 +
.../core/quint_model/driver/core_test.go | 346 +
.../core/quint_model/driver/driver/.gitignore | 2 +
.../core/quint_model/driver/mbt_test.go | 68 +
.../core/quint_model/driver/setup.go | 622 +
.../core/quint_model/driver/trace.json | 19892 ++++++++++++++++
9 files changed, 21060 insertions(+), 6 deletions(-)
create mode 100644 tests/difference/core/quint_model/driver/common.go
create mode 100644 tests/difference/core/quint_model/driver/core_test.go
create mode 100644 tests/difference/core/quint_model/driver/driver/.gitignore
create mode 100644 tests/difference/core/quint_model/driver/mbt_test.go
create mode 100644 tests/difference/core/quint_model/driver/setup.go
create mode 100644 tests/difference/core/quint_model/driver/trace.json
diff --git a/go.mod b/go.mod
index 9bfd10a01c..9bfb1b9f83 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,8 @@
module github.com/cosmos/interchain-security/v3
-go 1.20
+go 1.21.1
+
+toolchain go1.21.3
require (
cosmossdk.io/errors v1.0.0
@@ -177,6 +179,7 @@ require (
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/getsentry/sentry-go v0.23.0 // indirect
github.com/google/s2a-go v0.1.4 // indirect
+ github.com/informalsystems/itf-go v0.0.1 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
diff --git a/go.sum b/go.sum
index e2d215c70a..d982afd86f 100644
--- a/go.sum
+++ b/go.sum
@@ -774,6 +774,8 @@ github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19y
github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE=
github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0=
github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po=
+github.com/informalsystems/itf-go v0.0.1 h1:lVvdg3v+IMWOsVfIvOOGy1hHFO5KxoS8b8EiwKLbQDg=
+github.com/informalsystems/itf-go v0.0.1/go.mod h1:wgqaQ/yl2kbNlgw6GaleuHEefpZvkZo6Hc0jc8cGG9M=
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU=
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index f886fe9e85..500246bd6b 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -15,6 +15,16 @@ module ccv_model {
import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains).* from "./ccv"
+ type Parameters = {
+ VscTimeout: Time,
+ CcvTimeout: Chain -> Time,
+ UnbondingPeriodPerChain: Chain -> Time,
+ ConsumerChains: Set[Chain],
+ Nodes: Set[Node],
+ InitialValidatorSet: Node -> int,
+ }
+
+ var params: Parameters
var currentState: ProtocolState
@@ -126,6 +136,14 @@ module ccv_model {
consumerStates: consumerStates
},
trace' = List(emptyAction.with("kind", "init")),
+ params' = {
+ VscTimeout: VscTimeout,
+ CcvTimeout: CcvTimeout,
+ UnbondingPeriodPerChain: UnbondingPeriodPerChain,
+ ConsumerChains: ConsumerChains,
+ Nodes: nodes,
+ InitialValidatorSet: InitialValidatorSet,
+ }
}
action VotingPowerChange(validator: Node, newVotingPower: int): bool =
@@ -133,7 +151,8 @@ module ccv_model {
all {
result.hasError() == false,
currentState' = result.newState,
- trace' = trace.append(emptyAction.with("kind", "VotingPowerChange").with("validator", validator).with("newVotingPower", newVotingPower))
+ trace' = trace.append(emptyAction.with("kind", "VotingPowerChange").with("validator", validator).with("newVotingPower", newVotingPower)),
+ params' = params,
}
// The receiver receives the next outstanding VscPacket from the provider.
@@ -144,7 +163,8 @@ module ccv_model {
all {
result.hasError() == false,
currentState' = result.newState,
- trace' = trace.append(emptyAction.with("kind", "DeliverVscPacket").with("consumerChain", receiver))
+ trace' = trace.append(emptyAction.with("kind", "DeliverVscPacket").with("consumerChain", receiver)),
+ params' = params,
}
// The provider receives the next outstanding VscMaturedPacket from the sender.
@@ -155,7 +175,8 @@ module ccv_model {
all {
result.hasError() == false,
currentState' = result.newState,
- trace' = trace.append(emptyAction.with("kind", "DeliverVscMaturedPacket").with("consumerChain", sender))
+ trace' = trace.append(emptyAction.with("kind", "DeliverVscMaturedPacket").with("consumerChain", sender)),
+ params' = params,
}
action EndAndBeginBlockForProvider(
@@ -166,7 +187,8 @@ module ccv_model {
all {
result.hasError() == false,
currentState' = result.newState,
- trace' = trace.append(emptyAction.with("kind", "EndAndBeginBlockForProvider").with("timeAdvancement", timeAdvancement).with("consumersToStart", consumersToStart).with("consumersToStop", consumersToStop))
+ trace' = trace.append(emptyAction.with("kind", "EndAndBeginBlockForProvider").with("timeAdvancement", timeAdvancement).with("consumersToStart", consumersToStart).with("consumersToStop", consumersToStop)),
+ params' = params,
}
action EndAndBeginBlockForConsumer(
@@ -176,7 +198,8 @@ module ccv_model {
all {
result.hasError() == false,
currentState' = result.newState,
- trace' = trace.append(emptyAction.with("kind", "EndAndBeginBlockForConsumer").with("consumerChain", chain).with("timeAdvancement", timeAdvancement))
+ trace' = trace.append(emptyAction.with("kind", "EndAndBeginBlockForConsumer").with("consumerChain", chain).with("timeAdvancement", timeAdvancement)),
+ params' = params,
}
// ==================
diff --git a/tests/difference/core/quint_model/driver/common.go b/tests/difference/core/quint_model/driver/common.go
new file mode 100644
index 0000000000..db8f5c3885
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/common.go
@@ -0,0 +1,96 @@
+package main
+
+import (
+ "time"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ tmtypes "github.com/cometbft/cometbft/types"
+)
+
+const (
+ P = "provider"
+ C = "consumer"
+)
+
+// ValStates represents the total delegation
+// and bond status of a validator
+type ValStates struct {
+ Delegation []int
+ Tokens []int
+ ValidatorExtraTokens []int
+ Status []stakingtypes.BondStatus
+}
+
+type InitState struct {
+ PKSeeds []string
+ NumValidators int
+ MaxValidators int
+ InitialDelegatorTokens int
+ SlashDoublesign sdk.Dec
+ SlashDowntime sdk.Dec
+ UnbondingP time.Duration
+ UnbondingC time.Duration
+ Trusting time.Duration
+ MaxClockDrift time.Duration
+ BlockInterval time.Duration
+ ConsensusParams *tmproto.ConsensusParams
+ ValStates ValStates
+ MaxEntries int
+}
+
+var initStateVar InitState
+
+func init() {
+ // tokens === power
+ sdk.DefaultPowerReduction = sdk.NewInt(1)
+ initStateVar = InitState{
+ PKSeeds: []string{
+ // Fixed seeds are used to create the private keys for validators.
+ // The seeds are chosen to ensure that the resulting validators are
+ // sorted in descending order by the staking module.
+ "bbaaaababaabbaabababbaabbbbbbaaa",
+ "abbbababbbabaaaaabaaabbbbababaab",
+ "bbabaabaabbbbbabbbaababbbbabbbbb",
+ "aabbbabaaaaababbbabaabaabbbbbbba",
+ },
+ NumValidators: 4,
+ MaxValidators: 2,
+ InitialDelegatorTokens: 10000000000000,
+ SlashDoublesign: sdk.NewDec(0),
+ SlashDowntime: sdk.NewDec(0),
+ UnbondingP: time.Second * 70,
+ UnbondingC: time.Second * 50,
+ Trusting: time.Second * 49,
+ MaxClockDrift: time.Second * 10000,
+ BlockInterval: time.Second * 6,
+ ValStates: ValStates{
+ Delegation: []int{4000, 3000, 2000, 1000},
+ Tokens: []int{5000, 4000, 3000, 2000},
+ ValidatorExtraTokens: []int{1000, 1000, 1000, 1000},
+ Status: []stakingtypes.BondStatus{
+ stakingtypes.Bonded, stakingtypes.Bonded,
+ stakingtypes.Unbonded, stakingtypes.Unbonded,
+ },
+ },
+ MaxEntries: 1000000,
+ ConsensusParams: &tmproto.ConsensusParams{
+ Block: &tmproto.BlockParams{
+ MaxBytes: 9223372036854775807,
+ MaxGas: 9223372036854775807,
+ },
+ Evidence: &tmproto.EvidenceParams{
+ MaxAgeNumBlocks: 302400,
+ MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration
+ MaxBytes: 10000,
+ },
+ Validator: &tmproto.ValidatorParams{
+ PubKeyTypes: []string{
+ tmtypes.ABCIPubKeyTypeEd25519,
+ },
+ },
+ },
+ }
+}
diff --git a/tests/difference/core/quint_model/driver/core_test.go b/tests/difference/core/quint_model/driver/core_test.go
new file mode 100644
index 0000000000..0bcaedb5dd
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/core_test.go
@@ -0,0 +1,346 @@
+package main
+
+import (
+ "fmt"
+ "time"
+
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
+ "github.com/stretchr/testify/suite"
+
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
+ stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
+ appProvider "github.com/cosmos/interchain-security/v3/app/provider"
+ ibctestingcore "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/core"
+ ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing"
+ simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
+ consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
+)
+
+type CoreSuite struct {
+ suite.Suite
+
+ initState InitState
+
+ // simulate a relayed path
+ simibc simibc.RelayedPath
+
+ // keep around validators for easy access
+ valAddresses []sdk.ValAddress
+
+ // offsets: the model time and heights start at 0
+ // so offsets are needed for comparisons.
+ offsetTimeUnix int64
+ offsetHeight int64
+}
+
+// ctx returns the sdk.Context for the chain
+func (s *CoreSuite) ctx(chain string) sdk.Context {
+ return s.chain(chain).GetContext()
+}
+
+func (s *CoreSuite) chainID(chain string) string {
+ return map[string]string{P: ibctesting.GetChainID(0), C: ibctesting.GetChainID(1)}[chain]
+}
+
+// chain returns the TestChain for a given chain identifier
+func (s *CoreSuite) chain(chain string) *ibctesting.TestChain {
+ return map[string]*ibctesting.TestChain{P: s.providerChain(), C: s.consumerChain()}[chain]
+}
+
+func (s *CoreSuite) providerChain() *ibctesting.TestChain {
+ return s.simibc.Chain(ibctesting.GetChainID(0))
+}
+
+func (s *CoreSuite) consumerChain() *ibctesting.TestChain {
+ return s.simibc.Chain(ibctesting.GetChainID(1))
+}
+
+func (b *CoreSuite) providerStakingKeeper() stakingkeeper.Keeper {
+ return *b.providerChain().App.(*appProvider.App).StakingKeeper
+}
+
+func (b *CoreSuite) providerSlashingKeeper() slashingkeeper.Keeper {
+ return b.providerChain().App.(*appProvider.App).SlashingKeeper
+}
+
+func (b *CoreSuite) consumerKeeper() consumerkeeper.Keeper {
+ return b.consumerChain().App.(*appConsumer.App).ConsumerKeeper
+}
+
+// height returns the height of the current header of chain
+func (s *CoreSuite) height(chain string) int64 {
+ return s.chain(chain).CurrentHeader.GetHeight()
+}
+
+// time returns the time of the current header of chain
+func (s *CoreSuite) time(chain string) time.Time {
+ return s.chain(chain).CurrentHeader.Time
+}
+
+// delegator retrieves the address for the delegator account
+func (s *CoreSuite) delegator() sdk.AccAddress {
+ return s.providerChain().SenderAccount.GetAddress()
+}
+
+// validator returns the address for the validator with id (ix) i
+func (s *CoreSuite) validator(i int64) sdk.ValAddress {
+ return s.valAddresses[i]
+}
+
+// consAddr returns the ConsAdd for the validator with id (ix) i
+func (s *CoreSuite) consAddr(i int64) sdk.ConsAddress {
+ return sdk.ConsAddress(s.validator(i))
+}
+
+// isJailed returns the jail status of validator with id (ix) i
+func (s *CoreSuite) isJailed(i int64) bool {
+ val, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
+ s.Require().Truef(found, "GetValidator() -> !found")
+ return val.IsJailed()
+}
+
+// consumerPower returns the power on the consumer chain for
+// validator with id (ix) i
+func (s *CoreSuite) consumerPower(i int64) (int64, error) {
+ v, found := s.consumerKeeper().GetCCValidator(s.ctx(C), s.validator(i))
+ if !found {
+ return 0, fmt.Errorf("GetCCValidator() -> !found")
+ }
+ return v.Power, nil
+}
+
+// delegation returns the number of delegated tokens in the delegation from
+// the delegator account to the validator with id (ix) i
+func (s *CoreSuite) delegation(i int64) int64 {
+ d, found := s.providerStakingKeeper().GetDelegation(s.ctx(P), s.delegator(), s.validator(i))
+ s.Require().Truef(found, "GetDelegation() -> !found")
+ return d.Shares.TruncateInt64()
+}
+
+// validatorStatus returns the validator status for validator with id (ix) i
+// on the provider chain
+func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
+ v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
+ s.Require().Truef(found, "GetValidator() -> !found")
+ return v.GetStatus()
+}
+
+// providerTokens returns the number of tokens that the validator with
+// id (ix) i has delegated to it in total on the provider chain
+func (s *CoreSuite) providerTokens(i int64) int64 {
+ v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
+ s.Require().Truef(found, "GetValidator() -> !found")
+ return v.Tokens.Int64()
+}
+
+// delegatorBalance returns the balance of the delegator account
+func (s *CoreSuite) delegatorBalance() int64 {
+ d := s.delegator()
+ bal := s.providerChain().App.(*appProvider.App).BankKeeper.GetBalance(s.ctx(P), d, sdk.DefaultBondDenom)
+ return bal.Amount.Int64()
+}
+
+// delegate delegates amt tokens to validator val
+func (s *CoreSuite) delegate(val, amt int64) {
+ providerStaking := s.providerStakingKeeper()
+ server := stakingkeeper.NewMsgServerImpl(&providerStaking)
+ coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
+ d := s.delegator()
+ v := s.validator(val)
+ msg := stakingtypes.NewMsgDelegate(d, v, coin)
+ _, err := server.Delegate(sdk.WrapSDKContext(s.ctx(P)), msg)
+ // There may or may not be an error, depending on the trace
+ _ = err
+}
+
+// undelegate undelegates amt tokens from validator val
+func (s *CoreSuite) undelegate(val, amt int64) {
+ providerStaking := s.providerStakingKeeper()
+ server := stakingkeeper.NewMsgServerImpl(&providerStaking)
+ coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
+ d := s.delegator()
+ v := s.validator(val)
+ msg := stakingtypes.NewMsgUndelegate(d, v, coin)
+ _, err := server.Undelegate(sdk.WrapSDKContext(s.ctx(P)), msg)
+ // There may or may not be an error, depending on the trace
+ _ = err
+}
+
+// consumerSlash simulates a slash event occurring on the consumer chain.
+// It can be for a downtime or doublesign.
+func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool) {
+ kind := stakingtypes.Infraction_INFRACTION_DOUBLE_SIGN
+ if isDowntime {
+ kind = stakingtypes.Infraction_INFRACTION_DOWNTIME
+ }
+ ctx := s.ctx(C)
+ before := len(ctx.EventManager().Events())
+ s.consumerKeeper().SlashWithInfractionReason(ctx, val, h, 0, sdk.Dec{}, kind)
+ // consumer module emits packets on slash, so these must be collected.
+ evts := ctx.EventManager().ABCIEvents()
+ for _, e := range evts[before:] {
+ if e.Type == channeltypes.EventTypeSendPacket {
+ packet, err := ibctestingcore.ReconstructPacketFromEvent(e)
+ s.Require().NoError(err)
+ s.simibc.Outboxes.AddPacket(s.chainID(C), packet)
+ }
+ }
+}
+
+func (s *CoreSuite) updateClient(chain string) {
+ s.simibc.UpdateClient(s.chainID(chain))
+}
+
+// deliver numPackets packets from the network to chain
+func (s *CoreSuite) deliver(chain string, numPackets int) {
+ // Makes sure client is updated
+ s.updateClient(chain)
+ // Deliver any outstanding acks
+ s.simibc.DeliverAcks(s.chainID(chain), 999999)
+ // Consume deliverable packets from the network
+ s.simibc.DeliverPackets(s.chainID(chain), numPackets)
+}
+
+func (s *CoreSuite) endAndBeginBlock(chain string) {
+ s.simibc.EndAndBeginBlock(s.chainID(chain), s.initState.BlockInterval, func() {
+ // s.compareModelAndSystemState()
+ })
+}
+
+// // compareModelAndSystemState compares the state in the SUT to the state in the
+// // the model.
+// func (s *CoreSuite) compareModelAndSystemState() {
+// // Get a diagnostic for debugging
+// diagnostic := s.traces.Diagnostic()
+// chain := s.traces.Action().Chain
+
+// // Model time, height start at 0 so we need an offset for comparisons.
+// sutTimeOffset := time.Unix(s.offsetTimeUnix, 0).Add(-s.initState.BlockInterval).UTC()
+// modelTimeOffset := time.Duration(s.traces.Time()) * time.Second
+// sutHeightOffset := s.offsetHeight - 1
+// modelHeightOffset := int64(s.traces.Height())
+// s.Require().Equalf(sutTimeOffset.Add(modelTimeOffset), s.time(chain), diagnostic+"%s Time mismatch", chain)
+// s.Require().Equalf(sutHeightOffset+modelHeightOffset, s.height(chain), diagnostic+"%s Time mismatch", chain)
+// if chain == P {
+// for j := 0; j < s.initState.NumValidators; j++ {
+// have := s.validatorStatus(int64(j))
+// s.Require().Equalf(s.traces.Status(j), have, diagnostic+"P bond status mismatch for val %d, expect %s, have %s", j, s.traces.Status(j).String(), have.String())
+// }
+// for j := 0; j < s.initState.NumValidators; j++ {
+// s.Require().Equalf(int64(s.traces.Tokens(j)), s.providerTokens(int64(j)), diagnostic+"P tokens mismatch for val %d", j)
+// }
+// s.Require().Equalf(int64(s.traces.DelegatorTokens()), s.delegatorBalance(), diagnostic+"P del balance mismatch")
+// for j := 0; j < s.initState.NumValidators; j++ {
+// a := s.traces.Jailed(j) != nil
+// b := s.isJailed(int64(j))
+// s.Require().Equalf(a, b, diagnostic+"P jail status mismatch for val %d", j)
+// }
+// }
+// if chain == C {
+// for j := 0; j < s.initState.NumValidators; j++ {
+// exp := s.traces.ConsumerPower(j)
+// actual, err := s.consumerPower(int64(j))
+// if exp != nil {
+// s.Require().Nilf(err, diagnostic+" validator not found")
+// s.Require().Equalf(int64(*exp), actual, diagnostic+" power mismatch for val %d", j)
+// } else {
+// s.Require().Errorf(err, diagnostic+" power mismatch for val %d, expect 0 (nil), got %d", j, actual)
+// }
+// }
+// }
+// }
+
+// func (s *CoreSuite) executeTrace() {
+// for i := range s.traces.Actions() {
+// s.traces.CurrentActionIx = i
+
+// a := s.traces.Action()
+
+// switch a.Kind {
+// case "Delegate":
+// s.delegate(
+// int64(a.Val),
+// int64(a.Amt),
+// )
+// case "Undelegate":
+// s.undelegate(
+// int64(a.Val),
+// int64(a.Amt),
+// )
+// case "ConsumerSlash":
+// s.consumerSlash(
+// s.consAddr(int64(a.Val)),
+// // The SUT height is greater than the model height
+// // because the SUT has to do initialization.
+// int64(a.InfractionHeight)+s.offsetHeight,
+// a.IsDowntime,
+// )
+// case "UpdateClient":
+// s.updateClient(a.Chain)
+// case "Deliver":
+// s.deliver(a.Chain, a.NumPackets)
+// case "EndAndBeginBlock":
+// s.endAndBeginBlock(a.Chain)
+// default:
+// s.Require().FailNow("Failed to parse action")
+// }
+// }
+// }
+
+// // Test a set of traces
+// func (s *CoreSuite) TestTraces() {
+// s.traces = Traces{
+// Data: LoadTraces("traces.json"),
+// }
+// shortest := -1
+// shortestLen := 10000000000
+// for i := range s.traces.Data {
+// if !s.Run(fmt.Sprintf("Trace ix: %d", i), func() {
+// // Setup a new pair of chains for each trace
+// s.SetupTest()
+
+// s.traces.CurrentTraceIx = i
+// defer func() {
+// // If a panic occurs, we trap it to print a diagnostic
+// // and improve debugging experience.
+// if r := recover(); r != nil {
+// fmt.Println(s.traces.Diagnostic())
+// fmt.Println(r)
+// // Double panic to halt.
+// panic("Panic occurred during TestTraces")
+// }
+// }()
+// // Record information about the trace, for debugging
+// // diagnostics.
+// s.executeTrace()
+// }) {
+// if s.traces.CurrentActionIx < shortestLen {
+// shortest = s.traces.CurrentTraceIx
+// shortestLen = s.traces.CurrentActionIx
+// }
+// }
+// }
+// fmt.Println("Shortest [traceIx, actionIx]:", shortest, shortestLen)
+// }
+
+// TODO: diff tests will eventually be replaced by quint tests, and all this code could then be deleted.
+// Until that decision is finalized, we'll just comment out the top-level test.
+
+// func TestCoreSuite(t *testing.T) {
+// suite.Run(t, new(CoreSuite))
+// }
+
+// SetupTest sets up the test suite in a 'zero' state which matches
+// the initial state in the model.
+func (s *CoreSuite) SetupTest() {
+ path, valAddresses, offsetHeight, offsetTimeUnix := GetZeroState(&s.Suite, initStateVar)
+ s.initState = initStateVar
+ s.valAddresses = valAddresses
+ s.offsetHeight = offsetHeight
+ s.offsetTimeUnix = offsetTimeUnix
+ s.simibc = simibc.MakeRelayedPath(s.Suite.T(), path)
+}
diff --git a/tests/difference/core/quint_model/driver/driver/.gitignore b/tests/difference/core/quint_model/driver/driver/.gitignore
new file mode 100644
index 0000000000..a241de283a
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/driver/.gitignore
@@ -0,0 +1,2 @@
+*.log
+debug.json
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
new file mode 100644
index 0000000000..8ec992039d
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -0,0 +1,68 @@
+package main
+
+import (
+ "log"
+ "testing"
+
+ "github.com/informalsystems/itf-go/itf"
+)
+
+func TestItfTrace(t *testing.T) {
+ path := "trace.json"
+ log.Printf("🟡 Testing trace %s", path)
+
+ // Load trace
+ trace := &itf.Trace{}
+ if err := trace.LoadFromFile(path); err != nil {
+ log.Fatalf("Error loading trace file: %s", err)
+ }
+
+ log.Println("Reading auxiliary information...")
+ if trace.Vars[0] != "currentState" || trace.Vars[1] != "trace" {
+ log.Fatalf("Error loading trace file %s: %s", path, "Variables should be currentState, trace")
+ }
+
+ log.Println("Reading the trace...")
+
+ for index, state := range trace.States {
+ log.Printf("Reading state %v", index)
+
+ // modelState := state.VarValues["currentState"]
+ trace := state.VarValues["trace"].Value.(itf.ListExprType)
+ // fmt.Println(modelState)
+ lastAction := trace[len(trace)-1].Value.(itf.MapExprType)
+
+ actionKind := lastAction["kind"].Value.(string)
+ switch actionKind {
+ case "init":
+ // start the chain(s)
+ case "VotingPowerChange":
+ node := lastAction["validator"].Value.(string)
+ newVotingPower := lastAction["newVotingPower"].Value.(int64)
+ log.Println(node, newVotingPower)
+ case "EndAndBeginBlockForProvider":
+ timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
+ consumersToStart := lastAction["consumersToStart"].Value.(itf.ListExprType)
+ consumersToStop := lastAction["consumersToStop"].Value.(itf.ListExprType)
+ log.Println(timeAdvancement, consumersToStart, consumersToStop)
+ case "EndAndBeginBlockForConsumer":
+ consumerChain := lastAction["consumerChain"].Value.(string)
+ timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
+
+ log.Println(consumerChain, timeAdvancement)
+ case "DeliverVscPacket":
+ consumerChain := lastAction["consumerChain"].Value.(string)
+
+ log.Println(consumerChain)
+ case "DeliverVscMaturedPacket":
+ consumerChain := lastAction["consumerChain"].Value.(string)
+
+ log.Println(consumerChain)
+ default:
+
+ log.Fatalf("Error loading trace file %s, step %v: do not know action type %s",
+ path, index, actionKind)
+ }
+ }
+ t.FailNow()
+}
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
new file mode 100644
index 0000000000..35f0e1e8a4
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -0,0 +1,622 @@
+package main
+
+import (
+ "bytes"
+ cryptoEd25519 "crypto/ed25519"
+ "encoding/json"
+ "time"
+
+ clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
+ commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
+ ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
+ "github.com/cosmos/ibc-go/v7/testing/mock"
+ "github.com/stretchr/testify/require"
+ "github.com/stretchr/testify/suite"
+
+ "github.com/cosmos/cosmos-sdk/baseapp"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
+ cosmosEd25519 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
+ "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+ slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
+ slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
+ stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ abci "github.com/cometbft/cometbft/abci/types"
+ tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ tmtypes "github.com/cometbft/cometbft/types"
+
+ appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
+ appProvider "github.com/cosmos/interchain-security/v3/app/provider"
+ ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing"
+ icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
+ simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
+ consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
+ consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
+ providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
+ ccv "github.com/cosmos/interchain-security/v3/x/ccv/types"
+)
+
+type Builder struct {
+ suite *suite.Suite
+ path *ibctesting.Path
+ coordinator *ibctesting.Coordinator
+ valAddresses []sdk.ValAddress
+ initState InitState
+}
+
+func (b *Builder) provider() *ibctesting.TestChain {
+ return b.coordinator.GetChain(ibctesting.GetChainID(0))
+}
+
+func (b *Builder) consumer() *ibctesting.TestChain {
+ return b.coordinator.GetChain(ibctesting.GetChainID(1))
+}
+
+func (b *Builder) providerCtx() sdk.Context {
+ return b.provider().GetContext()
+}
+
+func (b *Builder) consumerCtx() sdk.Context {
+ return b.consumer().GetContext()
+}
+
+func (b *Builder) providerStakingKeeper() stakingkeeper.Keeper {
+ return *b.provider().App.(*appProvider.App).StakingKeeper
+}
+
+func (b *Builder) providerSlashingKeeper() slashingkeeper.Keeper {
+ return b.provider().App.(*appProvider.App).SlashingKeeper
+}
+
+func (b *Builder) providerKeeper() providerkeeper.Keeper {
+ return b.provider().App.(*appProvider.App).ProviderKeeper
+}
+
+func (b *Builder) consumerKeeper() consumerkeeper.Keeper {
+ return b.consumer().App.(*appConsumer.App).ConsumerKeeper
+}
+
+func (b *Builder) providerEndpoint() *ibctesting.Endpoint {
+ return b.path.EndpointB
+}
+
+func (b *Builder) consumerEndpoint() *ibctesting.Endpoint {
+ return b.path.EndpointA
+}
+
+func (b *Builder) validator(i int64) sdk.ValAddress {
+ return b.valAddresses[i]
+}
+
+func (b *Builder) consAddr(i int64) sdk.ConsAddress {
+ return sdk.ConsAddress(b.validator(i))
+}
+
+// getValidatorPK returns the validator private key using the given seed index
+func (b *Builder) getValidatorPK(seedIx int) mock.PV {
+ seed := []byte(b.initState.PKSeeds[seedIx])
+ return mock.PV{PrivKey: &cosmosEd25519.PrivKey{Key: cryptoEd25519.NewKeyFromSeed(seed)}} //nolint:staticcheck // SA1019: cosmosEd25519.PrivKey is deprecated: PrivKey defines a ed25519 private key. NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context.
+}
+
+func (b *Builder) getAppBytesAndSenders(
+ chainID string,
+ app ibctesting.TestingApp,
+ genesis map[string]json.RawMessage,
+ validators *tmtypes.ValidatorSet,
+) ([]byte, []ibctesting.SenderAccount) {
+ accounts := []authtypes.GenesisAccount{}
+ balances := []banktypes.Balance{}
+ senderAccounts := []ibctesting.SenderAccount{}
+
+ // Create genesis accounts.
+ for i := 0; i < b.initState.MaxValidators; i++ {
+ pk := secp256k1.GenPrivKey()
+ acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
+
+ // Give enough funds for many delegations
+ // Extra units are to delegate to extra validators created later
+ // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
+ extra := 0
+ for j := 0; j < b.initState.NumValidators; j++ {
+ if b.initState.ValStates.Status[j] != stakingtypes.Bonded {
+ extra += b.initState.ValStates.Delegation[j]
+ }
+ }
+ amt := uint64(b.initState.InitialDelegatorTokens + extra)
+
+ bal := banktypes.Balance{
+ Address: acc.GetAddress().String(),
+ Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewIntFromUint64(amt))),
+ }
+
+ accounts = append(accounts, acc)
+ balances = append(balances, bal)
+
+ senderAccount := ibctesting.SenderAccount{
+ SenderAccount: acc,
+ SenderPrivKey: pk,
+ }
+
+ senderAccounts = append(senderAccounts, senderAccount)
+ }
+
+ // set genesis accounts
+ genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
+ genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
+
+ stakingValidators := make([]stakingtypes.Validator, 0, len(validators.Validators))
+ delegations := make([]stakingtypes.Delegation, 0, len(validators.Validators))
+
+ // Sum bonded is needed for BondedPool account
+ sumBonded := sdk.NewInt(0)
+ initValPowers := []abci.ValidatorUpdate{}
+
+ for i, val := range validators.Validators {
+ status := b.initState.ValStates.Status[i]
+ delegation := b.initState.ValStates.Delegation[i]
+ extra := b.initState.ValStates.ValidatorExtraTokens[i]
+
+ tokens := sdk.NewInt(int64(delegation + extra))
+ b.suite.Require().Equal(status, stakingtypes.Bonded, "All genesis validators should be bonded")
+ sumBonded = sumBonded.Add(tokens)
+ // delegator account receives delShares shares
+ delShares := sdk.NewDec(int64(delegation))
+ // validator has additional sumShares due to extra units
+ sumShares := sdk.NewDec(int64(delegation + extra))
+
+ pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
+ require.NoError(b.suite.T(), err)
+ pkAny, err := codectypes.NewAnyWithValue(pk)
+ require.NoError(b.suite.T(), err)
+
+ validator := stakingtypes.Validator{
+ OperatorAddress: sdk.ValAddress(val.Address).String(),
+ ConsensusPubkey: pkAny,
+ Jailed: false,
+ Status: status,
+ Tokens: tokens,
+ DelegatorShares: sumShares,
+ Description: stakingtypes.Description{},
+ UnbondingHeight: int64(0),
+ UnbondingTime: time.Unix(0, 0).UTC(),
+ Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+ MinSelfDelegation: sdk.ZeroInt(),
+ }
+
+ stakingValidators = append(stakingValidators, validator)
+
+ // Store delegation from the model delegator account
+ delegations = append(delegations, stakingtypes.NewDelegation(accounts[0].GetAddress(), val.Address.Bytes(), delShares))
+ // Remaining delegation is from extra account
+ delegations = append(delegations, stakingtypes.NewDelegation(accounts[1].GetAddress(), val.Address.Bytes(), sumShares.Sub(delShares)))
+
+ // add initial validator powers so consumer InitGenesis runs correctly
+ pub, _ := val.ToProto()
+ initValPowers = append(initValPowers, abci.ValidatorUpdate{
+ Power: val.VotingPower,
+ PubKey: pub.PubKey,
+ })
+ }
+
+ bondDenom := sdk.DefaultBondDenom
+ genesisStaking := stakingtypes.GenesisState{}
+ genesisConsumer := consumertypes.GenesisState{}
+
+ if genesis[stakingtypes.ModuleName] != nil {
+ // If staking module genesis already exists
+ app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
+ bondDenom = genesisStaking.Params.BondDenom
+ }
+
+ if genesis[consumertypes.ModuleName] != nil {
+ app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
+ genesisConsumer.InitialValSet = initValPowers
+ genesisConsumer.Params.Enabled = true
+ genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
+ }
+
+ // Set model parameters
+ genesisStaking.Params.MaxEntries = uint32(b.initState.MaxEntries)
+ genesisStaking.Params.MaxValidators = uint32(b.initState.MaxValidators)
+ genesisStaking.Params.UnbondingTime = b.initState.UnbondingP
+ genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
+ genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
+
+ // add bonded amount to bonded pool module account
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
+ })
+
+ // add unbonded amount
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
+ })
+
+ // update total funds supply
+ genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
+ genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
+
+ stateBytes, err := json.MarshalIndent(genesis, "", " ")
+ require.NoError(b.suite.T(), err)
+
+ return stateBytes, senderAccounts
+}
+
+func (b *Builder) newChain(
+ coord *ibctesting.Coordinator,
+ appInit ibctesting.AppIniter,
+ chainID string,
+ validators *tmtypes.ValidatorSet,
+ signers map[string]tmtypes.PrivValidator,
+) *ibctesting.TestChain {
+ app, genesis := appInit()
+
+ baseapp.SetChainID(chainID)(app.GetBaseApp())
+
+ stateBytes, senderAccounts := b.getAppBytesAndSenders(chainID, app, genesis, validators)
+
+ app.InitChain(
+ abci.RequestInitChain{
+ ChainId: chainID,
+ Validators: []abci.ValidatorUpdate{},
+ ConsensusParams: b.initState.ConsensusParams,
+ AppStateBytes: stateBytes,
+ },
+ )
+
+ app.Commit()
+
+ app.BeginBlock(
+ abci.RequestBeginBlock{
+ Header: tmproto.Header{
+ ChainID: chainID,
+ Height: app.LastBlockHeight() + 1,
+ AppHash: app.LastCommitID().Hash,
+ ValidatorsHash: validators.Hash(),
+ NextValidatorsHash: validators.Hash(),
+ },
+ },
+ )
+
+ chain := &ibctesting.TestChain{
+ T: b.suite.T(),
+ Coordinator: coord,
+ ChainID: chainID,
+ App: app,
+ CurrentHeader: tmproto.Header{
+ ChainID: chainID,
+ Height: 1,
+ Time: coord.CurrentTime.UTC(),
+ },
+ QueryServer: app.GetIBCKeeper(),
+ TxConfig: app.GetTxConfig(),
+ Codec: app.AppCodec(),
+ Vals: validators,
+ NextVals: validators,
+ Signers: signers,
+ SenderPrivKey: senderAccounts[0].SenderPrivKey,
+ SenderAccount: senderAccounts[0].SenderAccount,
+ SenderAccounts: senderAccounts,
+ }
+
+ coord.CommitBlock(chain)
+
+ return chain
+}
+
+func (b *Builder) createValidators() (*tmtypes.ValidatorSet, map[string]tmtypes.PrivValidator, []sdk.ValAddress) {
+ addresses := []sdk.ValAddress{}
+ signers := map[string]tmtypes.PrivValidator{}
+ validators := []*tmtypes.Validator{}
+
+ for i, power := range b.initState.ValStates.Tokens {
+ if b.initState.ValStates.Status[i] != stakingtypes.Bonded {
+ continue
+ }
+ privVal := b.getValidatorPK(i)
+
+ pubKey, err := privVal.GetPubKey()
+ require.NoError(b.suite.T(), err)
+
+ // Compute address
+ addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
+ require.NoError(b.suite.T(), err)
+ addresses = append(addresses, addr)
+
+ // Save signer
+ signers[pubKey.Address().String()] = privVal
+
+ // Save validator with power
+ validators = append(validators, tmtypes.NewValidator(pubKey, int64(power)))
+ }
+
+ return tmtypes.NewValidatorSet(validators), signers, addresses
+}
+
+func (b *Builder) createProviderAndConsumer() {
+ coordinator := ibctesting.NewCoordinator(b.suite.T(), 0)
+
+ // Create validators
+ validators, signers, addresses := b.createValidators()
+ // Create provider
+ coordinator.Chains[ibctesting.GetChainID(0)] = b.newChain(coordinator, icstestingutils.ProviderAppIniter, ibctesting.GetChainID(0), validators, signers)
+ // Create consumer, using the same validators.
+ coordinator.Chains[ibctesting.GetChainID(1)] = b.newChain(coordinator, icstestingutils.ConsumerAppIniter, ibctesting.GetChainID(1), validators, signers)
+
+ b.coordinator = coordinator
+ b.valAddresses = addresses
+}
+
+// setSigningInfos sets the validator signing info in the provider Slashing module
+func (b *Builder) setSigningInfos() {
+ for i := 0; i < b.initState.NumValidators; i++ {
+ info := slashingtypes.NewValidatorSigningInfo(
+ b.consAddr(int64(i)),
+ b.provider().CurrentHeader.GetHeight(),
+ 0,
+ time.Unix(0, 0),
+ false,
+ 0,
+ )
+ b.providerSlashingKeeper().SetValidatorSigningInfo(b.providerCtx(), b.consAddr(int64(i)), info)
+ }
+}
+
+// Checks that the lexicographic ordering of validator addresses as computed in
+// the staking module match the ordering of validators in the model.
+func (b *Builder) ensureValidatorLexicographicOrderingMatchesModel() {
+ check := func(lesser, greater sdk.ValAddress) {
+ lesserV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), lesser)
+ greaterV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), greater)
+ lesserKey := stakingtypes.GetValidatorsByPowerIndexKey(lesserV, sdk.DefaultPowerReduction)
+ greaterKey := stakingtypes.GetValidatorsByPowerIndexKey(greaterV, sdk.DefaultPowerReduction)
+ // The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
+ res := bytes.Compare(lesserKey, greaterKey)
+ // Confirm that validator precedence is the same in code as in model
+ b.suite.Require().Equal(-1, res)
+ }
+
+ // In order to match the model to the system under test it is necessary
+ // to enforce a strict lexicographic ordering on the validators.
+ // We must do this because the staking module will break ties when
+ // deciding the active validator set by comparing addresses lexicographically.
+ // Thus, we assert here that the ordering in the model matches the ordering
+ // in the SUT.
+ for i := range b.valAddresses[:len(b.valAddresses)-1] {
+ // validators are chosen sorted descending in the staking module
+ greater := b.valAddresses[i]
+ lesser := b.valAddresses[i+1]
+ check(lesser, greater)
+ }
+}
+
+// delegate is used to delegate tokens to newly created
+// validators in the setup process.
+func (b *Builder) delegate(del int, val sdk.ValAddress, amt int64) {
+ d := b.provider().SenderAccounts[del].SenderAccount.GetAddress()
+ coins := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
+ msg := stakingtypes.NewMsgDelegate(d, val, coins)
+ providerStaking := b.providerStakingKeeper()
+ pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
+ _, err := pskServer.Delegate(sdk.WrapSDKContext(b.providerCtx()), msg)
+ b.suite.Require().NoError(err)
+}
+
+// addValidatorToStakingModule creates an additional validator with zero commission
+// and zero tokens (zero voting power).
+func (b *Builder) addValidatorToStakingModule(privVal mock.PV) {
+ coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(0))
+
+ pubKey, err := privVal.GetPubKey()
+ require.NoError(b.suite.T(), err)
+
+ // Compute address
+ addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
+ require.NoError(b.suite.T(), err)
+
+ sdkPK, err := cryptocodec.FromTmPubKeyInterface(pubKey)
+ require.NoError(b.suite.T(), err)
+
+ msg, err := stakingtypes.NewMsgCreateValidator(
+ addr,
+ sdkPK,
+ coin,
+ stakingtypes.Description{},
+ stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+ sdk.ZeroInt())
+ b.suite.Require().NoError(err)
+ providerStaking := b.providerStakingKeeper()
+ pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
+ _, _ = pskServer.CreateValidator(sdk.WrapSDKContext(b.providerCtx()), msg)
+}
+
+func (b *Builder) addExtraProviderValidators() {
+ for i, status := range b.initState.ValStates.Status {
+ if status == stakingtypes.Unbonded {
+ privVal := b.getValidatorPK(i)
+ b.addValidatorToStakingModule(privVal)
+ pubKey, err := privVal.GetPubKey()
+ require.NoError(b.suite.T(), err)
+
+ addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
+ require.NoError(b.suite.T(), err)
+
+ b.valAddresses = append(b.valAddresses, addr)
+ b.provider().Signers[pubKey.Address().String()] = privVal
+ b.consumer().Signers[pubKey.Address().String()] = privVal
+ }
+ }
+
+ b.setSigningInfos()
+
+ b.ensureValidatorLexicographicOrderingMatchesModel()
+
+ for i := range b.initState.ValStates.Status {
+ if b.initState.ValStates.Status[i] == stakingtypes.Unbonded {
+ del := b.initState.ValStates.Delegation[i]
+ extra := b.initState.ValStates.ValidatorExtraTokens[i]
+ b.delegate(0, b.validator(int64(i)), int64(del))
+ b.delegate(1, b.validator(int64(i)), int64(extra))
+ }
+ }
+}
+
+func (b *Builder) setProviderParams() {
+ // Set the slash factors on the provider to match the model
+ slash := b.providerSlashingKeeper().GetParams(b.providerCtx())
+ slash.SlashFractionDoubleSign = b.initState.SlashDoublesign
+ slash.SlashFractionDowntime = b.initState.SlashDowntime
+ err := b.providerSlashingKeeper().SetParams(b.providerCtx(), slash)
+ if err != nil {
+ panic(err)
+ }
+ // Set the throttle factors
+ throttle := b.providerKeeper().GetParams(b.providerCtx())
+ throttle.SlashMeterReplenishFraction = "1.0"
+ throttle.SlashMeterReplenishPeriod = time.Second * 1
+ b.providerKeeper().SetParams(b.providerCtx(), throttle)
+}
+
+func (b *Builder) configurePath() {
+ b.path = ibctesting.NewPath(b.consumer(), b.provider())
+ b.consumerEndpoint().ChannelConfig.PortID = ccv.ConsumerPortID
+ b.providerEndpoint().ChannelConfig.PortID = ccv.ProviderPortID
+ b.consumerEndpoint().ChannelConfig.Version = ccv.Version
+ b.providerEndpoint().ChannelConfig.Version = ccv.Version
+ b.consumerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
+ b.providerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
+}
+
+func (b *Builder) createProvidersLocalClient() {
+ // Configure and create the consumer Client
+ tmCfg := b.providerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
+ tmCfg.UnbondingPeriod = b.initState.UnbondingC
+ tmCfg.TrustingPeriod = b.initState.Trusting
+ tmCfg.MaxClockDrift = b.initState.MaxClockDrift
+ err := b.providerEndpoint().CreateClient()
+ b.suite.Require().NoError(err)
+ // Create the Consumer chain ID mapping in the provider state
+ b.providerKeeper().SetConsumerClientId(b.providerCtx(), b.consumer().ChainID, b.providerEndpoint().ClientID)
+}
+
+func (b *Builder) createConsumersLocalClientGenesis() *ibctmtypes.ClientState {
+ tmCfg := b.consumerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
+ tmCfg.UnbondingPeriod = b.initState.UnbondingP
+ tmCfg.TrustingPeriod = b.initState.Trusting
+ tmCfg.MaxClockDrift = b.initState.MaxClockDrift
+
+ return ibctmtypes.NewClientState(
+ b.provider().ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
+ b.provider().LastHeader.GetHeight().(clienttypes.Height), commitmenttypes.GetSDKSpecs(),
+ []string{"upgrade", "upgradedIBCState"},
+ )
+}
+
+func (b *Builder) createConsumerGenesis(client *ibctmtypes.ClientState) *consumertypes.GenesisState {
+ providerConsState := b.provider().LastHeader.ConsensusState()
+
+ valUpdates := tmtypes.TM2PB.ValidatorUpdates(b.provider().Vals)
+ params := consumertypes.NewParams(
+ true,
+ 1000, // ignore distribution
+ "", // ignore distribution
+ "", // ignore distribution
+ ccv.DefaultCCVTimeoutPeriod,
+ consumertypes.DefaultTransferTimeoutPeriod,
+ consumertypes.DefaultConsumerRedistributeFrac,
+ consumertypes.DefaultHistoricalEntries,
+ b.initState.UnbondingC,
+ "0", // disable soft opt-out
+ []string{},
+ []string{},
+ )
+ return consumertypes.NewInitialGenesisState(client, providerConsState, valUpdates, params)
+}
+
+// The state of the data returned is equivalent to the state of two chains
+// after a full handshake, but the precise order of steps used to reach the
+// state does not necessarily mimic the order of steps that happen in a
+// live scenario.
+func GetZeroState(
+ suite *suite.Suite,
+ initState InitState,
+) (path *ibctesting.Path, addrs []sdk.ValAddress, heightLastCommitted, timeLastCommitted int64) {
+ b := Builder{initState: initState, suite: suite}
+
+ b.createProviderAndConsumer()
+
+ b.setProviderParams()
+
+ // This is the simplest way to initialize the slash meter
+ // after a change to the param value.
+ b.providerKeeper().InitializeSlashMeter(b.providerCtx())
+
+ b.addExtraProviderValidators()
+
+ // Commit the additional validators
+ b.coordinator.CommitBlock(b.provider())
+
+ b.configurePath()
+
+ // Create a client for the provider chain to use, using ibc go testing.
+ b.createProvidersLocalClient()
+
+ // Manually create a client for the consumer chain to and bootstrap
+ // via genesis.
+ clientState := b.createConsumersLocalClientGenesis()
+
+ consumerGenesis := b.createConsumerGenesis(clientState)
+
+ b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
+
+ // Client ID is set in InitGenesis and we treat it as a block box. So
+ // must query it to use it with the endpoint.
+ clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
+ b.consumerEndpoint().ClientID = clientID
+
+ // Handshake
+ b.coordinator.CreateConnections(b.path)
+ b.coordinator.CreateChannels(b.path)
+
+ // Usually the consumer sets the channel ID when it receives a first VSC packet
+ // to the provider. For testing purposes, we can set it here. This is because
+ // we model a blank slate: a provider and consumer that have fully established
+ // their channel, and are ready for anything to happen.
+ b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
+
+ // Catch up consumer height to provider height. The provider was one ahead
+ // from committing additional validators.
+ simibc.EndBlock(b.consumer(), func() {})
+
+ simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+ simibc.BeginBlock(b.provider(), initState.BlockInterval)
+
+ // Commit a block on both chains, giving us two committed headers from
+ // the same time and height. This is the starting point for all our
+ // data driven testing.
+ lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
+ lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
+
+ // Want the height and time of last COMMITTED block
+ heightLastCommitted = b.provider().CurrentHeader.Height
+ timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
+
+ // Get ready to update clients.
+ simibc.BeginBlock(b.provider(), initState.BlockInterval)
+ simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+
+ // Update clients to the latest header. Now everything is ready to go!
+ // Ignore errors for brevity. Everything is checked in Assuptions test.
+ _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
+ _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
+
+ return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
+}
diff --git a/tests/difference/core/quint_model/driver/trace.json b/tests/difference/core/quint_model/driver/trace.json
new file mode 100644
index 0000000000..6b4c317ecf
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/trace.json
@@ -0,0 +1,19892 @@
+{
+ "#meta": {
+ "format": "ITF",
+ "format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html",
+ "source": "ccv_model.qnt",
+ "status": "ok",
+ "description": "Created by Quint on Wed Oct 18 2023 14:44:12 GMT+0200 (Central European Summer Time)",
+ "timestamp": 1697633052446
+ },
+ "vars": [
+ "currentState",
+ "trace"
+ ],
+ "states": [
+ {
+ "#meta": {
+ "index": 0
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "not consumer"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "not consumer"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": false,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 1
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "running"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": false,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 2
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "running"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": false,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 3
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "running"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 4
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "running"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 5
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "running"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 6
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4838400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 7
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4838400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 8
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4838400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 9
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4838400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "0"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 10
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4924800"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "running"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": false,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 11
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4924800"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "running"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 12
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "4924800"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "running"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 13
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "5529600"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 14
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6134400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 15
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6134400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 16
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6220800"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 17
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6220800"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 18
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6220800"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node6"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 19
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6220801"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node6"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "1"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 20
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "2419200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "6220801"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "0"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "stopped"
+ ],
+ [
+ "consumer2",
+ "stopped"
+ ],
+ [
+ "consumer3",
+ "stopped"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "4924800"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ }
+ }
+ },
+ "trace": [
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node1"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "2419200"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node7"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node4"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": [
+ "consumer2"
+ ]
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "604800"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node2"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "86400"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "100"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node10"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "50"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node6"
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "1"
+ },
+ "validator": ""
+ },
+ {
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "newVotingPower": {
+ "#bigint": "0"
+ },
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node6"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
From 5ffe64727e8c6a04a1eb83ae01da6c7abf828fef Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 19 Oct 2023 10:25:24 +0200
Subject: [PATCH 002/111] Clean up dependencies
---
go.mod | 2 +-
go.sum | 36 +++++++++++++++++++
.../core/quint_model/driver/core_test.go | 35 ++++++++----------
.../core/quint_model/driver/setup.go | 19 +++++-----
4 files changed, 63 insertions(+), 29 deletions(-)
diff --git a/go.mod b/go.mod
index 9bfb1b9f83..7c324de0f1 100644
--- a/go.mod
+++ b/go.mod
@@ -168,6 +168,7 @@ require (
)
require (
+ github.com/informalsystems/itf-go v0.0.1
github.com/spf13/viper v1.16.0
google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98
)
@@ -179,7 +180,6 @@ require (
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/getsentry/sentry-go v0.23.0 // indirect
github.com/google/s2a-go v0.1.4 // indirect
- github.com/informalsystems/itf-go v0.0.1 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
diff --git a/go.sum b/go.sum
index d982afd86f..930a7e6285 100644
--- a/go.sum
+++ b/go.sum
@@ -219,6 +219,7 @@ github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3
github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
+github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg=
@@ -228,7 +229,9 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3
github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg=
+github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw=
+github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
@@ -239,6 +242,7 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd
github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM=
github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I=
+github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg=
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
@@ -295,6 +299,7 @@ github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJ
github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U=
github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04=
github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ=
+github.com/btcsuite/btcd/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U=
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc=
@@ -311,6 +316,7 @@ github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
+github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
@@ -374,6 +380,7 @@ github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSM
github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q=
github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0=
github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg=
+github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@@ -447,7 +454,9 @@ github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
+github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk=
github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
@@ -481,9 +490,11 @@ github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
+github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
@@ -498,10 +509,12 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8=
+github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
+github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -523,10 +536,13 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ=
+github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
@@ -538,6 +554,7 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm
github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo=
github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM=
github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk=
+github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -625,12 +642,14 @@ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSN
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
+github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
+github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us=
github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -781,6 +800,7 @@ github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1C
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
+github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
@@ -797,6 +817,7 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o=
@@ -840,6 +861,7 @@ github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL
github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
@@ -913,6 +935,7 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8=
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
@@ -934,6 +957,7 @@ github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
@@ -944,15 +968,20 @@ github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
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=
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q=
+github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
+github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034=
+github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ=
github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w=
+github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg=
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
@@ -963,6 +992,7 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ
github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA=
+github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs=
github.com/oxyno-zeta/gomock-extra-matcher v1.2.0 h1:WPEclU0y0PMwUzdDcaKZvld4aXpa3fkzjiUMQdcBEHg=
github.com/oxyno-zeta/gomock-extra-matcher v1.2.0/go.mod h1:S0r7HmKeCGsHmvIVFMjKWwswb4+30nCNWbXRMBVPkaU=
github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
@@ -984,6 +1014,7 @@ github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG
github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
+github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -1068,6 +1099,7 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0=
+github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
@@ -1146,6 +1178,7 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
@@ -1271,6 +1304,7 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
+golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1584,6 +1618,7 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1874,6 +1909,7 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
gotest.tools/v3 v3.5.0 h1:Ljk6PdHdOhAb5aDMWXjDLMMhph+BpztA4v1QdqEW2eY=
+gotest.tools/v3 v3.5.0/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/tests/difference/core/quint_model/driver/core_test.go b/tests/difference/core/quint_model/driver/core_test.go
index 0bcaedb5dd..c4e6e29b3a 100644
--- a/tests/difference/core/quint_model/driver/core_test.go
+++ b/tests/difference/core/quint_model/driver/core_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"time"
- channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
"github.com/stretchr/testify/suite"
sdk "github.com/cosmos/cosmos-sdk/types"
@@ -14,8 +14,6 @@ import (
appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
appProvider "github.com/cosmos/interchain-security/v3/app/provider"
- ibctestingcore "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/core"
- ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing"
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
)
@@ -181,13 +179,10 @@ func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool)
before := len(ctx.EventManager().Events())
s.consumerKeeper().SlashWithInfractionReason(ctx, val, h, 0, sdk.Dec{}, kind)
// consumer module emits packets on slash, so these must be collected.
- evts := ctx.EventManager().ABCIEvents()
- for _, e := range evts[before:] {
- if e.Type == channeltypes.EventTypeSendPacket {
- packet, err := ibctestingcore.ReconstructPacketFromEvent(e)
- s.Require().NoError(err)
- s.simibc.Outboxes.AddPacket(s.chainID(C), packet)
- }
+ evts := ctx.EventManager().Events()
+ packets := simibc.ParsePacketsFromEvents(evts[before:])
+ if len(packets) > 0 {
+ s.simibc.Outboxes.AddPacket(s.chainID(C), packets[0])
}
}
@@ -205,11 +200,11 @@ func (s *CoreSuite) deliver(chain string, numPackets int) {
s.simibc.DeliverPackets(s.chainID(chain), numPackets)
}
-func (s *CoreSuite) endAndBeginBlock(chain string) {
- s.simibc.EndAndBeginBlock(s.chainID(chain), s.initState.BlockInterval, func() {
- // s.compareModelAndSystemState()
- })
-}
+// func (s *CoreSuite) endAndBeginBlock(chain string) {
+// s.simibc.EndAndBeginBlock(s.chainID(chain), s.initState.BlockInterval, func() {
+// s.compareModelAndSystemState()
+// })
+// }
// // compareModelAndSystemState compares the state in the SUT to the state in the
// // the model.
@@ -327,12 +322,12 @@ func (s *CoreSuite) endAndBeginBlock(chain string) {
// fmt.Println("Shortest [traceIx, actionIx]:", shortest, shortestLen)
// }
-// TODO: diff tests will eventually be replaced by quint tests, and all this code could then be deleted.
-// Until that decision is finalized, we'll just comment out the top-level test.
+// // TODO: diff tests will eventually be replaced by quint tests, and all this code could then be deleted.
+// // Until that decision is finalized, we'll just comment out the top-level test.
-// func TestCoreSuite(t *testing.T) {
-// suite.Run(t, new(CoreSuite))
-// }
+// // func TestCoreSuite(t *testing.T) {
+// // suite.Run(t, new(CoreSuite))
+// // }
// SetupTest sets up the test suite in a 'zero' state which matches
// the initial state in the model.
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 35f0e1e8a4..d5329b3464 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -10,6 +10,7 @@ import (
channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
"github.com/cosmos/ibc-go/v7/testing/mock"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
@@ -33,8 +34,8 @@ import (
appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
appProvider "github.com/cosmos/interchain-security/v3/app/provider"
- ibctesting "github.com/cosmos/interchain-security/v3/legacy_ibc_testing/testing"
icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
+ testutil "github.com/cosmos/interchain-security/v3/testutil/integration"
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
@@ -216,7 +217,7 @@ func (b *Builder) getAppBytesAndSenders(
if genesis[consumertypes.ModuleName] != nil {
app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
- genesisConsumer.InitialValSet = initValPowers
+ genesisConsumer.Provider.InitialValSet = initValPowers
genesisConsumer.Params.Enabled = true
genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
}
@@ -252,7 +253,7 @@ func (b *Builder) getAppBytesAndSenders(
func (b *Builder) newChain(
coord *ibctesting.Coordinator,
- appInit ibctesting.AppIniter,
+ appInit icstestingutils.AppIniter,
chainID string,
validators *tmtypes.ValidatorSet,
signers map[string]tmtypes.PrivValidator,
@@ -349,7 +350,8 @@ func (b *Builder) createProviderAndConsumer() {
// Create provider
coordinator.Chains[ibctesting.GetChainID(0)] = b.newChain(coordinator, icstestingutils.ProviderAppIniter, ibctesting.GetChainID(0), validators, signers)
// Create consumer, using the same validators.
- coordinator.Chains[ibctesting.GetChainID(1)] = b.newChain(coordinator, icstestingutils.ConsumerAppIniter, ibctesting.GetChainID(1), validators, signers)
+ valUpdates := testutil.ToValidatorUpdates(b.suite.T(), validators)
+ coordinator.Chains[ibctesting.GetChainID(1)] = b.newChain(coordinator, icstestingutils.ConsumerAppIniter(valUpdates), ibctesting.GetChainID(1), validators, signers)
b.coordinator = coordinator
b.valAddresses = addresses
@@ -524,19 +526,20 @@ func (b *Builder) createConsumerGenesis(client *ibctmtypes.ClientState) *consume
providerConsState := b.provider().LastHeader.ConsensusState()
valUpdates := tmtypes.TM2PB.ValidatorUpdates(b.provider().Vals)
- params := consumertypes.NewParams(
+ params := ccv.NewParams(
true,
1000, // ignore distribution
"", // ignore distribution
"", // ignore distribution
ccv.DefaultCCVTimeoutPeriod,
- consumertypes.DefaultTransferTimeoutPeriod,
- consumertypes.DefaultConsumerRedistributeFrac,
- consumertypes.DefaultHistoricalEntries,
+ ccv.DefaultTransferTimeoutPeriod,
+ ccv.DefaultConsumerRedistributeFrac,
+ ccv.DefaultHistoricalEntries,
b.initState.UnbondingC,
"0", // disable soft opt-out
[]string{},
[]string{},
+ ccv.DefaultRetryDelayPeriod,
)
return consumertypes.NewInitialGenesisState(client, providerConsState, valUpdates, params)
}
From 5f966436385fd2af645032210d3b7e6862e6aed0 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 1 Nov 2023 09:29:01 +0100
Subject: [PATCH 003/111] Start taking difftest code for mbt
---
.../core/quint_model/driver/core_test.go | 20 +-
.../core/quint_model/driver/mbt_test.go | 313 +-
.../core/quint_model/driver/setup.go | 1267 +-
.../core/quint_model/driver/trace.json | 18538 +---------------
4 files changed, 2001 insertions(+), 18137 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core_test.go b/tests/difference/core/quint_model/driver/core_test.go
index c4e6e29b3a..c04f2704db 100644
--- a/tests/difference/core/quint_model/driver/core_test.go
+++ b/tests/difference/core/quint_model/driver/core_test.go
@@ -329,13 +329,13 @@ func (s *CoreSuite) deliver(chain string, numPackets int) {
// // suite.Run(t, new(CoreSuite))
// // }
-// SetupTest sets up the test suite in a 'zero' state which matches
-// the initial state in the model.
-func (s *CoreSuite) SetupTest() {
- path, valAddresses, offsetHeight, offsetTimeUnix := GetZeroState(&s.Suite, initStateVar)
- s.initState = initStateVar
- s.valAddresses = valAddresses
- s.offsetHeight = offsetHeight
- s.offsetTimeUnix = offsetTimeUnix
- s.simibc = simibc.MakeRelayedPath(s.Suite.T(), path)
-}
+// // SetupTest sets up the test suite in a 'zero' state which matches
+// // the initial state in the model.
+// func (s *CoreSuite) SetupTest() {
+// path, valAddresses, offsetHeight, offsetTimeUnix := GetZeroState(&s.Suite, initStateVar)
+// s.initState = initStateVar
+// s.valAddresses = valAddresses
+// s.offsetHeight = offsetHeight
+// s.offsetTimeUnix = offsetTimeUnix
+// s.simibc = simibc.MakeRelayedPath(s.Suite.T(), path)
+// }
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 8ec992039d..0cbd253d75 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -1,15 +1,269 @@
package main
import (
+ "encoding/json"
"log"
"testing"
+ "time"
+ "cosmossdk.io/api/tendermint/abci"
+ cmttypes "github.com/cometbft/cometbft/types"
+ "github.com/cosmos/cosmos-sdk/baseapp"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
+ "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ "github.com/cosmos/interchain-security/v3/testutil/integration"
"github.com/informalsystems/itf-go/itf"
+ "github.com/stretchr/testify/require"
+
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
)
+const INITIAL_ACCOUNT_BALANCE = 1000000000
+
+func getAppBytesAndSenders(
+ t *testing.T,
+ chainID string,
+ app ibctesting.TestingApp,
+ genesis map[string]json.RawMessage,
+ initialValSet *cmttypes.ValidatorSet,
+ // the list of nodes that will be created, even ones that have no voting power initially
+ nodes []*cmttypes.Validator,
+) ([]byte, []ibctesting.SenderAccount) {
+ accounts := []authtypes.GenesisAccount{}
+ balances := []banktypes.Balance{}
+ senderAccounts := []ibctesting.SenderAccount{}
+
+ // Create genesis accounts.
+ for i := 0; i < len(nodes); i++ {
+ pk := secp256k1.GenPrivKey()
+ acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
+
+ // Give enough funds for many delegations
+ // Extra units are to delegate to extra validators created later
+ // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
+ bal := banktypes.Balance{
+ Address: acc.GetAddress().String(),
+ Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom,
+ sdk.NewIntFromUint64(INITIAL_ACCOUNT_BALANCE))),
+ }
+
+ accounts = append(accounts, acc)
+ balances = append(balances, bal)
+
+ senderAccount := ibctesting.SenderAccount{
+ SenderAccount: acc,
+ SenderPrivKey: pk,
+ }
+
+ senderAccounts = append(senderAccounts, senderAccount)
+ }
+
+ // set genesis accounts
+ genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
+ genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
+
+ stakingValidators := make([]stakingtypes.Validator, 0, len(nodes))
+ delegations := make([]stakingtypes.Delegation, 0, len(nodes))
+
+ // Sum bonded is needed for BondedPool account
+ sumBonded := sdk.NewInt(0)
+ initValPowers := []abci.ValidatorUpdate{}
+
+ for i, val := range nodes {
+ tokens := sdk.NewInt(int64(val.VotingPower))
+ sumBonded = sumBonded.Add(tokens)
+
+ pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
+ require.NoError(b.suite.T(), err)
+ pkAny, err := codectypes.NewAnyWithValue(pk)
+ require.NoError(b.suite.T(), err)
+
+ validator := stakingtypes.Validator{
+ OperatorAddress: sdk.ValAddress(val.Address).String(),
+ ConsensusPubkey: pkAny,
+ Jailed: false,
+ Status: status,
+ Tokens: tokens,
+ DelegatorShares: sumShares,
+ Description: stakingtypes.Description{},
+ UnbondingHeight: int64(0),
+ UnbondingTime: time.Unix(0, 0).UTC(),
+ Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+ MinSelfDelegation: sdk.ZeroInt(),
+ }
+
+ stakingValidators = append(stakingValidators, validator)
+
+ // Store delegation from the model delegator account
+ delegations = append(delegations, stakingtypes.NewDelegation(accounts[0].GetAddress(), val.Address.Bytes(), delShares))
+ // Remaining delegation is from extra account
+ delegations = append(delegations, stakingtypes.NewDelegation(accounts[1].GetAddress(), val.Address.Bytes(), sumShares.Sub(delShares)))
+
+ // add initial validator powers so consumer InitGenesis runs correctly
+ pub, _ := val.ToProto()
+ initValPowers = append(initValPowers, abci.ValidatorUpdate{
+ Power: val.VotingPower,
+ PubKey: pub.PubKey,
+ })
+ }
+
+ bondDenom := sdk.DefaultBondDenom
+ genesisStaking := stakingtypes.GenesisState{}
+ genesisConsumer := consumertypes.GenesisState{}
+
+ if genesis[stakingtypes.ModuleName] != nil {
+ // If staking module genesis already exists
+ app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
+ bondDenom = genesisStaking.Params.BondDenom
+ }
+
+ if genesis[consumertypes.ModuleName] != nil {
+ app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
+ genesisConsumer.Provider.InitialValSet = initValPowers
+ genesisConsumer.Params.Enabled = true
+ genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
+ }
+
+ // Set model parameters
+ genesisStaking.Params.MaxEntries = uint32(b.initState.MaxEntries)
+ genesisStaking.Params.MaxValidators = uint32(b.initState.MaxValidators)
+ genesisStaking.Params.UnbondingTime = b.initState.UnbondingP
+ genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
+ genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
+
+ // add bonded amount to bonded pool module account
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
+ })
+
+ // add unbonded amount
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
+ })
+
+ // update total funds supply
+ genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
+ genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
+
+ stateBytes, err := json.MarshalIndent(genesis, "", " ")
+ require.NoError(b.suite.T(), err)
+
+ return stateBytes, senderAccounts
+}
+
+func newChain(
+ coord *ibctesting.Coordinator,
+ appInit icstestingutils.AppIniter,
+ chainID string,
+ validators *tmtypes.ValidatorSet,
+ signers map[string]tmtypes.PrivValidator,
+) *ibctesting.TestChain {
+ app, genesis := appInit()
+
+ baseapp.SetChainID(chainID)(app.GetBaseApp())
+
+ stateBytes, senderAccounts := b.getAppBytesAndSenders(chainID, app, genesis, validators)
+
+ app.InitChain(
+ abci.RequestInitChain{
+ ChainId: chainID,
+ Validators: []abci.ValidatorUpdate{},
+ ConsensusParams: b.initState.ConsensusParams,
+ AppStateBytes: stateBytes,
+ },
+ )
+
+ app.Commit()
+
+ app.BeginBlock(
+ abci.RequestBeginBlock{
+ Header: tmproto.Header{
+ ChainID: chainID,
+ Height: app.LastBlockHeight() + 1,
+ AppHash: app.LastCommitID().Hash,
+ ValidatorsHash: validators.Hash(),
+ NextValidatorsHash: validators.Hash(),
+ },
+ },
+ )
+
+ chain := &ibctesting.TestChain{
+ T: b.suite.T(),
+ Coordinator: coord,
+ ChainID: chainID,
+ App: app,
+ CurrentHeader: tmproto.Header{
+ ChainID: chainID,
+ Height: 1,
+ Time: coord.CurrentTime.UTC(),
+ },
+ QueryServer: app.GetIBCKeeper(),
+ TxConfig: app.GetTxConfig(),
+ Codec: app.AppCodec(),
+ Vals: validators,
+ NextVals: validators,
+ Signers: signers,
+ SenderPrivKey: senderAccounts[0].SenderPrivKey,
+ SenderAccount: senderAccounts[0].SenderAccount,
+ SenderAccounts: senderAccounts,
+ }
+
+ coord.CommitBlock(chain)
+
+ return chain
+}
+
+// Given a map from node names to voting powers, create a validator set with the right voting powers.
+// All nodes should be included in the voting power map, even if they have voting power 0.
+// This way, the nodes will have validators (that can later be assigned voting powers) and signers created for them.
+//
+// Returns:
+// - a validator set
+// - a map from node names to validator objects and
+// - a map from validator addresses to private validators (signers)
+func CreateValSet(t *testing.T, initialValidatorSet map[string]int64) (*cmttypes.ValidatorSet, map[string]*cmttypes.Validator, map[string]cmttypes.PrivValidator) {
+ // create a valSet and signers, but the voting powers will not yet be right
+ valSet, _, signers := integration.CreateValidators(t, len(initialValidatorSet))
+
+ // create a map from validator names to validators
+ valMap := make(map[string]*cmttypes.Validator)
+
+ // impose an order on the validators
+ valNames := make([]string, 0, len(initialValidatorSet))
+ for valName := range initialValidatorSet {
+ valNames = append(valNames, valName)
+ }
+
+ // assign the validators from the created valSet to valNames in the chosen order
+ for i, valName := range valNames {
+ _, val := valSet.GetByIndex(int32(i))
+ valMap[valName] = val
+ }
+
+ // create a valSet that has the right voting powers
+ vals := make([]*cmttypes.Validator, len(valNames))
+ for index, valName := range valNames {
+ _, val := valSet.GetByIndex(int32(index))
+ val.VotingPower = initialValidatorSet[valName]
+ vals[index] = val
+ }
+
+ // override the valSet by creating a new one with the right voting powers
+ valSet = cmttypes.NewValidatorSet(vals)
+ return valSet, valMap, signers
+}
+
func TestItfTrace(t *testing.T) {
path := "trace.json"
- log.Printf("🟡 Testing trace %s", path)
+ t.Logf("🟡 Testing trace %s", path)
// Load trace
trace := &itf.Trace{}
@@ -17,15 +271,52 @@ func TestItfTrace(t *testing.T) {
log.Fatalf("Error loading trace file: %s", err)
}
- log.Println("Reading auxiliary information...")
- if trace.Vars[0] != "currentState" || trace.Vars[1] != "trace" {
- log.Fatalf("Error loading trace file %s: %s", path, "Variables should be currentState, trace")
+ if trace.Vars[0] != "currentState" ||
+ trace.Vars[1] != "params" ||
+ trace.Vars[2] != "trace" {
+ t.Fatalf("Error loading trace file %s: Variables should be currentState, params, trace but are %s",
+ path, trace.Vars)
+ }
+
+ t.Log("Reading params...")
+ params := trace.States[0].VarValues["params"].Value.(itf.MapExprType)
+
+ consumersExpr := params["ConsumerChains"].Value.(itf.ListExprType)
+ initialValSetExpr := params["InitialValidatorSet"].Value.(itf.MapExprType)
+
+ initialValSet := make(map[string]int64)
+ for val, power := range initialValSetExpr {
+ initialValSet[val] = power.Value.(int64)
}
- log.Println("Reading the trace...")
+ consumers := make([]string, len(consumersExpr))
+ for i, chain := range consumersExpr {
+ consumers[i] = chain.Value.(string)
+ }
+
+ t.Log("Consumer chains are: ", consumers)
+
+ valExprs := params["Nodes"].Value.(itf.ListExprType)
+ valNames := make([]string, len(valExprs))
+ for i, val := range valExprs {
+ valNames[i] = val.Value.(string)
+ }
+
+ // dummyValSet is a valSet with the right validators, but not yet right powers
+ valSet, addressMap, signers := CreateValSet(t, initialValSet)
+ t.Log("Initial validator set is: ", valSet)
+ t.Log(addressMap)
+ t.Log(signers)
+
+ t.Log("Creating coordinator")
+ coordinator := ibctesting.NewCoordinator(t, len(consumers))
+
+ // initializing the provider chain
+
+ t.Log("Reading the trace...")
for index, state := range trace.States {
- log.Printf("Reading state %v", index)
+ t.Logf("Reading state %v", index)
// modelState := state.VarValues["currentState"]
trace := state.VarValues["trace"].Value.(itf.ListExprType)
@@ -39,25 +330,25 @@ func TestItfTrace(t *testing.T) {
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
newVotingPower := lastAction["newVotingPower"].Value.(int64)
- log.Println(node, newVotingPower)
+ t.Log(node, newVotingPower)
case "EndAndBeginBlockForProvider":
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
consumersToStart := lastAction["consumersToStart"].Value.(itf.ListExprType)
consumersToStop := lastAction["consumersToStop"].Value.(itf.ListExprType)
- log.Println(timeAdvancement, consumersToStart, consumersToStop)
+ t.Log(timeAdvancement, consumersToStart, consumersToStop)
case "EndAndBeginBlockForConsumer":
consumerChain := lastAction["consumerChain"].Value.(string)
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
- log.Println(consumerChain, timeAdvancement)
+ t.Log(consumerChain, timeAdvancement)
case "DeliverVscPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
- log.Println(consumerChain)
+ t.Log(consumerChain)
case "DeliverVscMaturedPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
- log.Println(consumerChain)
+ t.Log(consumerChain)
default:
log.Fatalf("Error loading trace file %s, step %v: do not know action type %s",
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index d5329b3464..4ebaa1b009 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -1,625 +1,644 @@
+// package main
+
+// import (
+// "bytes"
+// cryptoEd25519 "crypto/ed25519"
+// "encoding/json"
+// "time"
+
+// clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
+// channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
+// commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
+// ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
+// ibctesting "github.com/cosmos/ibc-go/v7/testing"
+// "github.com/cosmos/ibc-go/v7/testing/mock"
+// "github.com/stretchr/testify/require"
+// "github.com/stretchr/testify/suite"
+
+// "github.com/cosmos/cosmos-sdk/baseapp"
+// codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+// cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
+// cosmosEd25519 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
+// "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
+// sdk "github.com/cosmos/cosmos-sdk/types"
+// authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+// slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
+// slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
+// stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
+// stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+
+// abci "github.com/cometbft/cometbft/abci/types"
+// tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
+// tmtypes "github.com/cometbft/cometbft/types"
+
+// appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
+// appProvider "github.com/cosmos/interchain-security/v3/app/provider"
+// icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
+// testutil "github.com/cosmos/interchain-security/v3/testutil/integration"
+// consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
+// consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
+// providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
+// ccv "github.com/cosmos/interchain-security/v3/x/ccv/types"
+// )
+
+// type Builder struct {
+// suite *suite.Suite
+// path *ibctesting.Path
+// coordinator *ibctesting.Coordinator
+// valAddresses []sdk.ValAddress
+// initState InitState
+// }
+
+// func (b *Builder) provider() *ibctesting.TestChain {
+// return b.coordinator.GetChain(ibctesting.GetChainID(0))
+// }
+
+// func (b *Builder) consumer() *ibctesting.TestChain {
+// return b.coordinator.GetChain(ibctesting.GetChainID(1))
+// }
+
+// func (b *Builder) providerCtx() sdk.Context {
+// return b.provider().GetContext()
+// }
+
+// func (b *Builder) consumerCtx() sdk.Context {
+// return b.consumer().GetContext()
+// }
+
+// func (b *Builder) providerStakingKeeper() stakingkeeper.Keeper {
+// return *b.provider().App.(*appProvider.App).StakingKeeper
+// }
+
+// func (b *Builder) providerSlashingKeeper() slashingkeeper.Keeper {
+// return b.provider().App.(*appProvider.App).SlashingKeeper
+// }
+
+// func (b *Builder) providerKeeper() providerkeeper.Keeper {
+// return b.provider().App.(*appProvider.App).ProviderKeeper
+// }
+
+// func (b *Builder) consumerKeeper() consumerkeeper.Keeper {
+// return b.consumer().App.(*appConsumer.App).ConsumerKeeper
+// }
+
+// func (b *Builder) providerEndpoint() *ibctesting.Endpoint {
+// return b.path.EndpointB
+// }
+
+// func (b *Builder) consumerEndpoint() *ibctesting.Endpoint {
+// return b.path.EndpointA
+// }
+
+// func (b *Builder) validator(i int64) sdk.ValAddress {
+// return b.valAddresses[i]
+// }
+
+// func (b *Builder) consAddr(i int64) sdk.ConsAddress {
+// return sdk.ConsAddress(b.validator(i))
+// }
+
+// // getValidatorPK returns the validator private key using the given seed index
+// func (b *Builder) getValidatorPK(seedIx int) mock.PV {
+// seed := []byte(b.initState.PKSeeds[seedIx])
+// return mock.PV{PrivKey: &cosmosEd25519.PrivKey{Key: cryptoEd25519.NewKeyFromSeed(seed)}} //nolint:staticcheck // SA1019: cosmosEd25519.PrivKey is deprecated: PrivKey defines a ed25519 private key. NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context.
+// }
+
+// func (b *Builder) getAppBytesAndSenders(
+// chainID string,
+// app ibctesting.TestingApp,
+// genesis map[string]json.RawMessage,
+// validators *tmtypes.ValidatorSet,
+// ) ([]byte, []ibctesting.SenderAccount) {
+// accounts := []authtypes.GenesisAccount{}
+// balances := []banktypes.Balance{}
+// senderAccounts := []ibctesting.SenderAccount{}
+
+// // Create genesis accounts.
+// for i := 0; i < b.initState.MaxValidators; i++ {
+// pk := secp256k1.GenPrivKey()
+// acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
+
+// // Give enough funds for many delegations
+// // Extra units are to delegate to extra validators created later
+// // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
+// extra := 0
+// for j := 0; j < b.initState.NumValidators; j++ {
+// if b.initState.ValStates.Status[j] != stakingtypes.Bonded {
+// extra += b.initState.ValStates.Delegation[j]
+// }
+// }
+// amt := uint64(b.initState.InitialDelegatorTokens + extra)
+
+// bal := banktypes.Balance{
+// Address: acc.GetAddress().String(),
+// Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewIntFromUint64(amt))),
+// }
+
+// accounts = append(accounts, acc)
+// balances = append(balances, bal)
+
+// senderAccount := ibctesting.SenderAccount{
+// SenderAccount: acc,
+// SenderPrivKey: pk,
+// }
+
+// senderAccounts = append(senderAccounts, senderAccount)
+// }
+
+// // set genesis accounts
+// genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
+// genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
+
+// stakingValidators := make([]stakingtypes.Validator, 0, len(validators.Validators))
+// delegations := make([]stakingtypes.Delegation, 0, len(validators.Validators))
+
+// // Sum bonded is needed for BondedPool account
+// sumBonded := sdk.NewInt(0)
+// initValPowers := []abci.ValidatorUpdate{}
+
+// for i, val := range validators.Validators {
+// status := b.initState.ValStates.Status[i]
+// delegation := b.initState.ValStates.Delegation[i]
+// extra := b.initState.ValStates.ValidatorExtraTokens[i]
+
+// tokens := sdk.NewInt(int64(delegation + extra))
+// b.suite.Require().Equal(status, stakingtypes.Bonded, "All genesis validators should be bonded")
+// sumBonded = sumBonded.Add(tokens)
+// // delegator account receives delShares shares
+// delShares := sdk.NewDec(int64(delegation))
+// // validator has additional sumShares due to extra units
+// sumShares := sdk.NewDec(int64(delegation + extra))
+
+// pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
+// require.NoError(b.suite.T(), err)
+// pkAny, err := codectypes.NewAnyWithValue(pk)
+// require.NoError(b.suite.T(), err)
+
+// validator := stakingtypes.Validator{
+// OperatorAddress: sdk.ValAddress(val.Address).String(),
+// ConsensusPubkey: pkAny,
+// Jailed: false,
+// Status: status,
+// Tokens: tokens,
+// DelegatorShares: sumShares,
+// Description: stakingtypes.Description{},
+// UnbondingHeight: int64(0),
+// UnbondingTime: time.Unix(0, 0).UTC(),
+// Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+// MinSelfDelegation: sdk.ZeroInt(),
+// }
+
+// stakingValidators = append(stakingValidators, validator)
+
+// // Store delegation from the model delegator account
+// delegations = append(delegations, stakingtypes.NewDelegation(accounts[0].GetAddress(), val.Address.Bytes(), delShares))
+// // Remaining delegation is from extra account
+// delegations = append(delegations, stakingtypes.NewDelegation(accounts[1].GetAddress(), val.Address.Bytes(), sumShares.Sub(delShares)))
+
+// // add initial validator powers so consumer InitGenesis runs correctly
+// pub, _ := val.ToProto()
+// initValPowers = append(initValPowers, abci.ValidatorUpdate{
+// Power: val.VotingPower,
+// PubKey: pub.PubKey,
+// })
+// }
+
+// bondDenom := sdk.DefaultBondDenom
+// genesisStaking := stakingtypes.GenesisState{}
+// genesisConsumer := consumertypes.GenesisState{}
+
+// if genesis[stakingtypes.ModuleName] != nil {
+// // If staking module genesis already exists
+// app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
+// bondDenom = genesisStaking.Params.BondDenom
+// }
+
+// if genesis[consumertypes.ModuleName] != nil {
+// app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
+// genesisConsumer.Provider.InitialValSet = initValPowers
+// genesisConsumer.Params.Enabled = true
+// genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
+// }
+
+// // Set model parameters
+// genesisStaking.Params.MaxEntries = uint32(b.initState.MaxEntries)
+// genesisStaking.Params.MaxValidators = uint32(b.initState.MaxValidators)
+// genesisStaking.Params.UnbondingTime = b.initState.UnbondingP
+// genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
+// genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
+
+// // add bonded amount to bonded pool module account
+// balances = append(balances, banktypes.Balance{
+// Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
+// Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
+// })
+
+// // add unbonded amount
+// balances = append(balances, banktypes.Balance{
+// Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
+// Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
+// })
+
+// // update total funds supply
+// genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
+// genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
+
+// stateBytes, err := json.MarshalIndent(genesis, "", " ")
+// require.NoError(b.suite.T(), err)
+
+// return stateBytes, senderAccounts
+// }
+
+// func (b *Builder) newChain(
+// coord *ibctesting.Coordinator,
+// appInit icstestingutils.AppIniter,
+// chainID string,
+// validators *tmtypes.ValidatorSet,
+// signers map[string]tmtypes.PrivValidator,
+// ) *ibctesting.TestChain {
+// app, genesis := appInit()
+
+// baseapp.SetChainID(chainID)(app.GetBaseApp())
+
+// stateBytes, senderAccounts := b.getAppBytesAndSenders(chainID, app, genesis, validators)
+
+// app.InitChain(
+// abci.RequestInitChain{
+// ChainId: chainID,
+// Validators: []abci.ValidatorUpdate{},
+// ConsensusParams: b.initState.ConsensusParams,
+// AppStateBytes: stateBytes,
+// },
+// )
+
+// app.Commit()
+
+// app.BeginBlock(
+// abci.RequestBeginBlock{
+// Header: tmproto.Header{
+// ChainID: chainID,
+// Height: app.LastBlockHeight() + 1,
+// AppHash: app.LastCommitID().Hash,
+// ValidatorsHash: validators.Hash(),
+// NextValidatorsHash: validators.Hash(),
+// },
+// },
+// )
+
+// chain := &ibctesting.TestChain{
+// T: b.suite.T(),
+// Coordinator: coord,
+// ChainID: chainID,
+// App: app,
+// CurrentHeader: tmproto.Header{
+// ChainID: chainID,
+// Height: 1,
+// Time: coord.CurrentTime.UTC(),
+// },
+// QueryServer: app.GetIBCKeeper(),
+// TxConfig: app.GetTxConfig(),
+// Codec: app.AppCodec(),
+// Vals: validators,
+// NextVals: validators,
+// Signers: signers,
+// SenderPrivKey: senderAccounts[0].SenderPrivKey,
+// SenderAccount: senderAccounts[0].SenderAccount,
+// SenderAccounts: senderAccounts,
+// }
+
+// coord.CommitBlock(chain)
+
+// return chain
+// }
+
+// func (b *Builder) createValidators(addresses []sdk.ValAddress) (*tmtypes.ValidatorSet, map[string]tmtypes.PrivValidator) {
+// signers := map[string]tmtypes.PrivValidator{}
+// validators := []*tmtypes.Validator{}
+
+// for i, power := range b.initState.ValStates.Tokens {
+// if b.initState.ValStates.Status[i] != stakingtypes.Bonded {
+// continue
+// }
+// privVal := b.getValidatorPK(i)
+
+// pubKey, err := privVal.GetPubKey()
+// require.NoError(b.suite.T(), err)
+
+// // Compute address
+// addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
+// require.NoError(b.suite.T(), err)
+// addresses = append(addresses, addr)
+
+// // Save signer
+// signers[pubKey.Address().String()] = privVal
+
+// // Save validator with power
+// validators = append(validators, tmtypes.NewValidator(pubKey, int64(power)))
+// }
+
+// return tmtypes.NewValidatorSet(validators), signers, addresses
+// }
+
+// func (b *Builder) createChain(initialValSet *tmproto.ValidatorSet) {
+// // Create provider
+// b.coordinator.Chains["provider"] = b.newChain(
+// b.coordinator,
+// icstestingutils.ProviderAppIniter,
+// "provider", validators, signers)
+
+// valUpdates := testutil.ToValidatorUpdates(b.suite.T(), validators)
+// }
+
+// func (b *Builder) createProviderAndConsumer() {
+// coordinator := ibctesting.NewCoordinator(b.suite.T(), 0)
+
+// // Create validators
+// validators, signers, addresses := b.createValidators()
+// // Create provider
+// coordinator.Chains[ibctesting.GetChainID(0)] = b.newChain(coordinator, icstestingutils.ProviderAppIniter, ibctesting.GetChainID(0), validators, signers)
+// // Create consumer, using the same validators.
+// valUpdates := testutil.ToValidatorUpdates(b.suite.T(), validators)
+// coordinator.Chains[ibctesting.GetChainID(1)] = b.newChain(coordinator, icstestingutils.ConsumerAppIniter(valUpdates), ibctesting.GetChainID(1), validators, signers)
+
+// b.coordinator = coordinator
+// b.valAddresses = addresses
+// }
+
+// // setSigningInfos sets the validator signing info in the provider Slashing module
+// func (b *Builder) setSigningInfos() {
+// for i := 0; i < b.initState.NumValidators; i++ {
+// info := slashingtypes.NewValidatorSigningInfo(
+// b.consAddr(int64(i)),
+// b.provider().CurrentHeader.GetHeight(),
+// 0,
+// time.Unix(0, 0),
+// false,
+// 0,
+// )
+// b.providerSlashingKeeper().SetValidatorSigningInfo(b.providerCtx(), b.consAddr(int64(i)), info)
+// }
+// }
+
+// // Checks that the lexicographic ordering of validator addresses as computed in
+// // the staking module match the ordering of validators in the model.
+// func (b *Builder) ensureValidatorLexicographicOrderingMatchesModel() {
+// check := func(lesser, greater sdk.ValAddress) {
+// lesserV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), lesser)
+// greaterV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), greater)
+// lesserKey := stakingtypes.GetValidatorsByPowerIndexKey(lesserV, sdk.DefaultPowerReduction)
+// greaterKey := stakingtypes.GetValidatorsByPowerIndexKey(greaterV, sdk.DefaultPowerReduction)
+// // The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
+// res := bytes.Compare(lesserKey, greaterKey)
+// // Confirm that validator precedence is the same in code as in model
+// b.suite.Require().Equal(-1, res)
+// }
+
+// // In order to match the model to the system under test it is necessary
+// // to enforce a strict lexicographic ordering on the validators.
+// // We must do this because the staking module will break ties when
+// // deciding the active validator set by comparing addresses lexicographically.
+// // Thus, we assert here that the ordering in the model matches the ordering
+// // in the SUT.
+// for i := range b.valAddresses[:len(b.valAddresses)-1] {
+// // validators are chosen sorted descending in the staking module
+// greater := b.valAddresses[i]
+// lesser := b.valAddresses[i+1]
+// check(lesser, greater)
+// }
+// }
+
+// // delegate is used to delegate tokens to newly created
+// // validators in the setup process.
+// func (b *Builder) delegate(del int, val sdk.ValAddress, amt int64) {
+// d := b.provider().SenderAccounts[del].SenderAccount.GetAddress()
+// coins := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
+// msg := stakingtypes.NewMsgDelegate(d, val, coins)
+// providerStaking := b.providerStakingKeeper()
+// pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
+// _, err := pskServer.Delegate(sdk.WrapSDKContext(b.providerCtx()), msg)
+// b.suite.Require().NoError(err)
+// }
+
+// // addValidatorToStakingModule creates an additional validator with zero commission
+// // and zero tokens (zero voting power).
+// func (b *Builder) addValidatorToStakingModule(privVal mock.PV) {
+// coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(0))
+
+// pubKey, err := privVal.GetPubKey()
+// require.NoError(b.suite.T(), err)
+
+// // Compute address
+// addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
+// require.NoError(b.suite.T(), err)
+
+// sdkPK, err := cryptocodec.FromTmPubKeyInterface(pubKey)
+// require.NoError(b.suite.T(), err)
+
+// msg, err := stakingtypes.NewMsgCreateValidator(
+// addr,
+// sdkPK,
+// coin,
+// stakingtypes.Description{},
+// stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+// sdk.ZeroInt())
+// b.suite.Require().NoError(err)
+// providerStaking := b.providerStakingKeeper()
+// pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
+// _, _ = pskServer.CreateValidator(sdk.WrapSDKContext(b.providerCtx()), msg)
+// }
+
+// func (b *Builder) addExtraProviderValidators() {
+// for i, status := range b.initState.ValStates.Status {
+// if status == stakingtypes.Unbonded {
+// privVal := b.getValidatorPK(i)
+// b.addValidatorToStakingModule(privVal)
+// pubKey, err := privVal.GetPubKey()
+// require.NoError(b.suite.T(), err)
+
+// addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
+// require.NoError(b.suite.T(), err)
+
+// b.valAddresses = append(b.valAddresses, addr)
+// b.provider().Signers[pubKey.Address().String()] = privVal
+// b.consumer().Signers[pubKey.Address().String()] = privVal
+// }
+// }
+
+// b.setSigningInfos()
+
+// b.ensureValidatorLexicographicOrderingMatchesModel()
+
+// for i := range b.initState.ValStates.Status {
+// if b.initState.ValStates.Status[i] == stakingtypes.Unbonded {
+// del := b.initState.ValStates.Delegation[i]
+// extra := b.initState.ValStates.ValidatorExtraTokens[i]
+// b.delegate(0, b.validator(int64(i)), int64(del))
+// b.delegate(1, b.validator(int64(i)), int64(extra))
+// }
+// }
+// }
+
+// func (b *Builder) setProviderParams() {
+// // Set the slash factors on the provider to match the model
+// slash := b.providerSlashingKeeper().GetParams(b.providerCtx())
+// slash.SlashFractionDoubleSign = b.initState.SlashDoublesign
+// slash.SlashFractionDowntime = b.initState.SlashDowntime
+// err := b.providerSlashingKeeper().SetParams(b.providerCtx(), slash)
+// if err != nil {
+// panic(err)
+// }
+// // Set the throttle factors
+// throttle := b.providerKeeper().GetParams(b.providerCtx())
+// throttle.SlashMeterReplenishFraction = "1.0"
+// throttle.SlashMeterReplenishPeriod = time.Second * 1
+// b.providerKeeper().SetParams(b.providerCtx(), throttle)
+// }
+
+// func (b *Builder) configurePath() {
+// b.path = ibctesting.NewPath(b.consumer(), b.provider())
+// b.consumerEndpoint().ChannelConfig.PortID = ccv.ConsumerPortID
+// b.providerEndpoint().ChannelConfig.PortID = ccv.ProviderPortID
+// b.consumerEndpoint().ChannelConfig.Version = ccv.Version
+// b.providerEndpoint().ChannelConfig.Version = ccv.Version
+// b.consumerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
+// b.providerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
+// }
+
+// func (b *Builder) createProvidersLocalClient() {
+// // Configure and create the consumer Client
+// tmCfg := b.providerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
+// tmCfg.UnbondingPeriod = b.initState.UnbondingC
+// tmCfg.TrustingPeriod = b.initState.Trusting
+// tmCfg.MaxClockDrift = b.initState.MaxClockDrift
+// err := b.providerEndpoint().CreateClient()
+// b.suite.Require().NoError(err)
+// // Create the Consumer chain ID mapping in the provider state
+// b.providerKeeper().SetConsumerClientId(b.providerCtx(), b.consumer().ChainID, b.providerEndpoint().ClientID)
+// }
+
+// func (b *Builder) createConsumersLocalClientGenesis() *ibctmtypes.ClientState {
+// tmCfg := b.consumerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
+// tmCfg.UnbondingPeriod = b.initState.UnbondingP
+// tmCfg.TrustingPeriod = b.initState.Trusting
+// tmCfg.MaxClockDrift = b.initState.MaxClockDrift
+
+// return ibctmtypes.NewClientState(
+// b.provider().ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
+// b.provider().LastHeader.GetHeight().(clienttypes.Height), commitmenttypes.GetSDKSpecs(),
+// []string{"upgrade", "upgradedIBCState"},
+// )
+// }
+
+// func (b *Builder) createConsumerGenesis(client *ibctmtypes.ClientState) *consumertypes.GenesisState {
+// providerConsState := b.provider().LastHeader.ConsensusState()
+
+// valUpdates := tmtypes.TM2PB.ValidatorUpdates(b.provider().Vals)
+// params := ccv.NewParams(
+// true,
+// 1000, // ignore distribution
+// "", // ignore distribution
+// "", // ignore distribution
+// ccv.DefaultCCVTimeoutPeriod,
+// ccv.DefaultTransferTimeoutPeriod,
+// ccv.DefaultConsumerRedistributeFrac,
+// ccv.DefaultHistoricalEntries,
+// b.initState.UnbondingC,
+// "0", // disable soft opt-out
+// []string{},
+// []string{},
+// ccv.DefaultRetryDelayPeriod,
+// )
+// return consumertypes.NewInitialGenesisState(client, providerConsState, valUpdates, params)
+// }
+
+// func NewBuilder(s *suite.Suite, valAddresses []sdk.ValAddress) *Builder {
+// coord := ibctesting.NewCoordinator(s.T(), 0)
+
+// return &Builder{
+// suite: s,
+// valAddresses: valAddresses,
+// coordinator: coord,
+// }
+// }
+
+// // // The state of the data returned is equivalent to the state of two chains
+// // // after a full handshake, but the precise order of steps used to reach the
+// // // state does not necessarily mimic the order of steps that happen in a
+// // // live scenario.
+// // func GetZeroState(
+// // suite *suite.Suite,
+// // initState InitState,
+// // ) (path *ibctesting.Path, addrs []sdk.ValAddress, heightLastCommitted, timeLastCommitted int64) {
+// // b := Builder{initState: initState, suite: suite}
+
+// // b.createProviderAndConsumer()
+
+// // b.setProviderParams()
+
+// // // This is the simplest way to initialize the slash meter
+// // // after a change to the param value.
+// // b.providerKeeper().InitializeSlashMeter(b.providerCtx())
+
+// // b.addExtraProviderValidators()
+
+// // // Commit the additional validators
+// // b.coordinator.CommitBlock(b.provider())
+
+// // b.configurePath()
+
+// // // Create a client for the provider chain to use, using ibc go testing.
+// // b.createProvidersLocalClient()
+
+// // // Manually create a client for the consumer chain to and bootstrap
+// // // via genesis.
+// // clientState := b.createConsumersLocalClientGenesis()
+
+// // consumerGenesis := b.createConsumerGenesis(clientState)
+
+// // b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
+
+// // // Client ID is set in InitGenesis and we treat it as a block box. So
+// // // must query it to use it with the endpoint.
+// // clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
+// // b.consumerEndpoint().ClientID = clientID
+
+// // // Handshake
+// // b.coordinator.CreateConnections(b.path)
+// // b.coordinator.CreateChannels(b.path)
+
+// // // Usually the consumer sets the channel ID when it receives a first VSC packet
+// // // to the provider. For testing purposes, we can set it here. This is because
+// // // we model a blank slate: a provider and consumer that have fully established
+// // // their channel, and are ready for anything to happen.
+// // b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
+
+// // // Catch up consumer height to provider height. The provider was one ahead
+// // // from committing additional validators.
+// // simibc.EndBlock(b.consumer(), func() {})
+
+// // simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+// // simibc.BeginBlock(b.provider(), initState.BlockInterval)
+
+// // // Commit a block on both chains, giving us two committed headers from
+// // // the same time and height. This is the starting point for all our
+// // // data driven testing.
+// // lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
+// // lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
+
+// // // Want the height and time of last COMMITTED block
+// // heightLastCommitted = b.provider().CurrentHeader.Height
+// // timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
+
+// // // Get ready to update clients.
+// // simibc.BeginBlock(b.provider(), initState.BlockInterval)
+// // simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+
+// // // Update clients to the latest header. Now everything is ready to go!
+// // // Ignore errors for brevity. Everything is checked in Assuptions test.
+// // _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
+// // _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
+
+// // return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
+// // }
package main
-
-import (
- "bytes"
- cryptoEd25519 "crypto/ed25519"
- "encoding/json"
- "time"
-
- clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
- channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
- commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
- ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
- ibctesting "github.com/cosmos/ibc-go/v7/testing"
- "github.com/cosmos/ibc-go/v7/testing/mock"
- "github.com/stretchr/testify/require"
- "github.com/stretchr/testify/suite"
-
- "github.com/cosmos/cosmos-sdk/baseapp"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
- cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
- cosmosEd25519 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
- "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
- sdk "github.com/cosmos/cosmos-sdk/types"
- authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
- stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-
- abci "github.com/cometbft/cometbft/abci/types"
- tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
- tmtypes "github.com/cometbft/cometbft/types"
-
- appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
- appProvider "github.com/cosmos/interchain-security/v3/app/provider"
- icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
- testutil "github.com/cosmos/interchain-security/v3/testutil/integration"
- simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
- consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
- consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
- providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
- ccv "github.com/cosmos/interchain-security/v3/x/ccv/types"
-)
-
-type Builder struct {
- suite *suite.Suite
- path *ibctesting.Path
- coordinator *ibctesting.Coordinator
- valAddresses []sdk.ValAddress
- initState InitState
-}
-
-func (b *Builder) provider() *ibctesting.TestChain {
- return b.coordinator.GetChain(ibctesting.GetChainID(0))
-}
-
-func (b *Builder) consumer() *ibctesting.TestChain {
- return b.coordinator.GetChain(ibctesting.GetChainID(1))
-}
-
-func (b *Builder) providerCtx() sdk.Context {
- return b.provider().GetContext()
-}
-
-func (b *Builder) consumerCtx() sdk.Context {
- return b.consumer().GetContext()
-}
-
-func (b *Builder) providerStakingKeeper() stakingkeeper.Keeper {
- return *b.provider().App.(*appProvider.App).StakingKeeper
-}
-
-func (b *Builder) providerSlashingKeeper() slashingkeeper.Keeper {
- return b.provider().App.(*appProvider.App).SlashingKeeper
-}
-
-func (b *Builder) providerKeeper() providerkeeper.Keeper {
- return b.provider().App.(*appProvider.App).ProviderKeeper
-}
-
-func (b *Builder) consumerKeeper() consumerkeeper.Keeper {
- return b.consumer().App.(*appConsumer.App).ConsumerKeeper
-}
-
-func (b *Builder) providerEndpoint() *ibctesting.Endpoint {
- return b.path.EndpointB
-}
-
-func (b *Builder) consumerEndpoint() *ibctesting.Endpoint {
- return b.path.EndpointA
-}
-
-func (b *Builder) validator(i int64) sdk.ValAddress {
- return b.valAddresses[i]
-}
-
-func (b *Builder) consAddr(i int64) sdk.ConsAddress {
- return sdk.ConsAddress(b.validator(i))
-}
-
-// getValidatorPK returns the validator private key using the given seed index
-func (b *Builder) getValidatorPK(seedIx int) mock.PV {
- seed := []byte(b.initState.PKSeeds[seedIx])
- return mock.PV{PrivKey: &cosmosEd25519.PrivKey{Key: cryptoEd25519.NewKeyFromSeed(seed)}} //nolint:staticcheck // SA1019: cosmosEd25519.PrivKey is deprecated: PrivKey defines a ed25519 private key. NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context.
-}
-
-func (b *Builder) getAppBytesAndSenders(
- chainID string,
- app ibctesting.TestingApp,
- genesis map[string]json.RawMessage,
- validators *tmtypes.ValidatorSet,
-) ([]byte, []ibctesting.SenderAccount) {
- accounts := []authtypes.GenesisAccount{}
- balances := []banktypes.Balance{}
- senderAccounts := []ibctesting.SenderAccount{}
-
- // Create genesis accounts.
- for i := 0; i < b.initState.MaxValidators; i++ {
- pk := secp256k1.GenPrivKey()
- acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
-
- // Give enough funds for many delegations
- // Extra units are to delegate to extra validators created later
- // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
- extra := 0
- for j := 0; j < b.initState.NumValidators; j++ {
- if b.initState.ValStates.Status[j] != stakingtypes.Bonded {
- extra += b.initState.ValStates.Delegation[j]
- }
- }
- amt := uint64(b.initState.InitialDelegatorTokens + extra)
-
- bal := banktypes.Balance{
- Address: acc.GetAddress().String(),
- Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewIntFromUint64(amt))),
- }
-
- accounts = append(accounts, acc)
- balances = append(balances, bal)
-
- senderAccount := ibctesting.SenderAccount{
- SenderAccount: acc,
- SenderPrivKey: pk,
- }
-
- senderAccounts = append(senderAccounts, senderAccount)
- }
-
- // set genesis accounts
- genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
- genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
-
- stakingValidators := make([]stakingtypes.Validator, 0, len(validators.Validators))
- delegations := make([]stakingtypes.Delegation, 0, len(validators.Validators))
-
- // Sum bonded is needed for BondedPool account
- sumBonded := sdk.NewInt(0)
- initValPowers := []abci.ValidatorUpdate{}
-
- for i, val := range validators.Validators {
- status := b.initState.ValStates.Status[i]
- delegation := b.initState.ValStates.Delegation[i]
- extra := b.initState.ValStates.ValidatorExtraTokens[i]
-
- tokens := sdk.NewInt(int64(delegation + extra))
- b.suite.Require().Equal(status, stakingtypes.Bonded, "All genesis validators should be bonded")
- sumBonded = sumBonded.Add(tokens)
- // delegator account receives delShares shares
- delShares := sdk.NewDec(int64(delegation))
- // validator has additional sumShares due to extra units
- sumShares := sdk.NewDec(int64(delegation + extra))
-
- pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
- require.NoError(b.suite.T(), err)
- pkAny, err := codectypes.NewAnyWithValue(pk)
- require.NoError(b.suite.T(), err)
-
- validator := stakingtypes.Validator{
- OperatorAddress: sdk.ValAddress(val.Address).String(),
- ConsensusPubkey: pkAny,
- Jailed: false,
- Status: status,
- Tokens: tokens,
- DelegatorShares: sumShares,
- Description: stakingtypes.Description{},
- UnbondingHeight: int64(0),
- UnbondingTime: time.Unix(0, 0).UTC(),
- Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
- MinSelfDelegation: sdk.ZeroInt(),
- }
-
- stakingValidators = append(stakingValidators, validator)
-
- // Store delegation from the model delegator account
- delegations = append(delegations, stakingtypes.NewDelegation(accounts[0].GetAddress(), val.Address.Bytes(), delShares))
- // Remaining delegation is from extra account
- delegations = append(delegations, stakingtypes.NewDelegation(accounts[1].GetAddress(), val.Address.Bytes(), sumShares.Sub(delShares)))
-
- // add initial validator powers so consumer InitGenesis runs correctly
- pub, _ := val.ToProto()
- initValPowers = append(initValPowers, abci.ValidatorUpdate{
- Power: val.VotingPower,
- PubKey: pub.PubKey,
- })
- }
-
- bondDenom := sdk.DefaultBondDenom
- genesisStaking := stakingtypes.GenesisState{}
- genesisConsumer := consumertypes.GenesisState{}
-
- if genesis[stakingtypes.ModuleName] != nil {
- // If staking module genesis already exists
- app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
- bondDenom = genesisStaking.Params.BondDenom
- }
-
- if genesis[consumertypes.ModuleName] != nil {
- app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
- genesisConsumer.Provider.InitialValSet = initValPowers
- genesisConsumer.Params.Enabled = true
- genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
- }
-
- // Set model parameters
- genesisStaking.Params.MaxEntries = uint32(b.initState.MaxEntries)
- genesisStaking.Params.MaxValidators = uint32(b.initState.MaxValidators)
- genesisStaking.Params.UnbondingTime = b.initState.UnbondingP
- genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
- genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
-
- // add bonded amount to bonded pool module account
- balances = append(balances, banktypes.Balance{
- Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
- Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
- })
-
- // add unbonded amount
- balances = append(balances, banktypes.Balance{
- Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
- Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
- })
-
- // update total funds supply
- genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
- genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
-
- stateBytes, err := json.MarshalIndent(genesis, "", " ")
- require.NoError(b.suite.T(), err)
-
- return stateBytes, senderAccounts
-}
-
-func (b *Builder) newChain(
- coord *ibctesting.Coordinator,
- appInit icstestingutils.AppIniter,
- chainID string,
- validators *tmtypes.ValidatorSet,
- signers map[string]tmtypes.PrivValidator,
-) *ibctesting.TestChain {
- app, genesis := appInit()
-
- baseapp.SetChainID(chainID)(app.GetBaseApp())
-
- stateBytes, senderAccounts := b.getAppBytesAndSenders(chainID, app, genesis, validators)
-
- app.InitChain(
- abci.RequestInitChain{
- ChainId: chainID,
- Validators: []abci.ValidatorUpdate{},
- ConsensusParams: b.initState.ConsensusParams,
- AppStateBytes: stateBytes,
- },
- )
-
- app.Commit()
-
- app.BeginBlock(
- abci.RequestBeginBlock{
- Header: tmproto.Header{
- ChainID: chainID,
- Height: app.LastBlockHeight() + 1,
- AppHash: app.LastCommitID().Hash,
- ValidatorsHash: validators.Hash(),
- NextValidatorsHash: validators.Hash(),
- },
- },
- )
-
- chain := &ibctesting.TestChain{
- T: b.suite.T(),
- Coordinator: coord,
- ChainID: chainID,
- App: app,
- CurrentHeader: tmproto.Header{
- ChainID: chainID,
- Height: 1,
- Time: coord.CurrentTime.UTC(),
- },
- QueryServer: app.GetIBCKeeper(),
- TxConfig: app.GetTxConfig(),
- Codec: app.AppCodec(),
- Vals: validators,
- NextVals: validators,
- Signers: signers,
- SenderPrivKey: senderAccounts[0].SenderPrivKey,
- SenderAccount: senderAccounts[0].SenderAccount,
- SenderAccounts: senderAccounts,
- }
-
- coord.CommitBlock(chain)
-
- return chain
-}
-
-func (b *Builder) createValidators() (*tmtypes.ValidatorSet, map[string]tmtypes.PrivValidator, []sdk.ValAddress) {
- addresses := []sdk.ValAddress{}
- signers := map[string]tmtypes.PrivValidator{}
- validators := []*tmtypes.Validator{}
-
- for i, power := range b.initState.ValStates.Tokens {
- if b.initState.ValStates.Status[i] != stakingtypes.Bonded {
- continue
- }
- privVal := b.getValidatorPK(i)
-
- pubKey, err := privVal.GetPubKey()
- require.NoError(b.suite.T(), err)
-
- // Compute address
- addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
- require.NoError(b.suite.T(), err)
- addresses = append(addresses, addr)
-
- // Save signer
- signers[pubKey.Address().String()] = privVal
-
- // Save validator with power
- validators = append(validators, tmtypes.NewValidator(pubKey, int64(power)))
- }
-
- return tmtypes.NewValidatorSet(validators), signers, addresses
-}
-
-func (b *Builder) createProviderAndConsumer() {
- coordinator := ibctesting.NewCoordinator(b.suite.T(), 0)
-
- // Create validators
- validators, signers, addresses := b.createValidators()
- // Create provider
- coordinator.Chains[ibctesting.GetChainID(0)] = b.newChain(coordinator, icstestingutils.ProviderAppIniter, ibctesting.GetChainID(0), validators, signers)
- // Create consumer, using the same validators.
- valUpdates := testutil.ToValidatorUpdates(b.suite.T(), validators)
- coordinator.Chains[ibctesting.GetChainID(1)] = b.newChain(coordinator, icstestingutils.ConsumerAppIniter(valUpdates), ibctesting.GetChainID(1), validators, signers)
-
- b.coordinator = coordinator
- b.valAddresses = addresses
-}
-
-// setSigningInfos sets the validator signing info in the provider Slashing module
-func (b *Builder) setSigningInfos() {
- for i := 0; i < b.initState.NumValidators; i++ {
- info := slashingtypes.NewValidatorSigningInfo(
- b.consAddr(int64(i)),
- b.provider().CurrentHeader.GetHeight(),
- 0,
- time.Unix(0, 0),
- false,
- 0,
- )
- b.providerSlashingKeeper().SetValidatorSigningInfo(b.providerCtx(), b.consAddr(int64(i)), info)
- }
-}
-
-// Checks that the lexicographic ordering of validator addresses as computed in
-// the staking module match the ordering of validators in the model.
-func (b *Builder) ensureValidatorLexicographicOrderingMatchesModel() {
- check := func(lesser, greater sdk.ValAddress) {
- lesserV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), lesser)
- greaterV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), greater)
- lesserKey := stakingtypes.GetValidatorsByPowerIndexKey(lesserV, sdk.DefaultPowerReduction)
- greaterKey := stakingtypes.GetValidatorsByPowerIndexKey(greaterV, sdk.DefaultPowerReduction)
- // The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
- res := bytes.Compare(lesserKey, greaterKey)
- // Confirm that validator precedence is the same in code as in model
- b.suite.Require().Equal(-1, res)
- }
-
- // In order to match the model to the system under test it is necessary
- // to enforce a strict lexicographic ordering on the validators.
- // We must do this because the staking module will break ties when
- // deciding the active validator set by comparing addresses lexicographically.
- // Thus, we assert here that the ordering in the model matches the ordering
- // in the SUT.
- for i := range b.valAddresses[:len(b.valAddresses)-1] {
- // validators are chosen sorted descending in the staking module
- greater := b.valAddresses[i]
- lesser := b.valAddresses[i+1]
- check(lesser, greater)
- }
-}
-
-// delegate is used to delegate tokens to newly created
-// validators in the setup process.
-func (b *Builder) delegate(del int, val sdk.ValAddress, amt int64) {
- d := b.provider().SenderAccounts[del].SenderAccount.GetAddress()
- coins := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
- msg := stakingtypes.NewMsgDelegate(d, val, coins)
- providerStaking := b.providerStakingKeeper()
- pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
- _, err := pskServer.Delegate(sdk.WrapSDKContext(b.providerCtx()), msg)
- b.suite.Require().NoError(err)
-}
-
-// addValidatorToStakingModule creates an additional validator with zero commission
-// and zero tokens (zero voting power).
-func (b *Builder) addValidatorToStakingModule(privVal mock.PV) {
- coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(0))
-
- pubKey, err := privVal.GetPubKey()
- require.NoError(b.suite.T(), err)
-
- // Compute address
- addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
- require.NoError(b.suite.T(), err)
-
- sdkPK, err := cryptocodec.FromTmPubKeyInterface(pubKey)
- require.NoError(b.suite.T(), err)
-
- msg, err := stakingtypes.NewMsgCreateValidator(
- addr,
- sdkPK,
- coin,
- stakingtypes.Description{},
- stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
- sdk.ZeroInt())
- b.suite.Require().NoError(err)
- providerStaking := b.providerStakingKeeper()
- pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
- _, _ = pskServer.CreateValidator(sdk.WrapSDKContext(b.providerCtx()), msg)
-}
-
-func (b *Builder) addExtraProviderValidators() {
- for i, status := range b.initState.ValStates.Status {
- if status == stakingtypes.Unbonded {
- privVal := b.getValidatorPK(i)
- b.addValidatorToStakingModule(privVal)
- pubKey, err := privVal.GetPubKey()
- require.NoError(b.suite.T(), err)
-
- addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
- require.NoError(b.suite.T(), err)
-
- b.valAddresses = append(b.valAddresses, addr)
- b.provider().Signers[pubKey.Address().String()] = privVal
- b.consumer().Signers[pubKey.Address().String()] = privVal
- }
- }
-
- b.setSigningInfos()
-
- b.ensureValidatorLexicographicOrderingMatchesModel()
-
- for i := range b.initState.ValStates.Status {
- if b.initState.ValStates.Status[i] == stakingtypes.Unbonded {
- del := b.initState.ValStates.Delegation[i]
- extra := b.initState.ValStates.ValidatorExtraTokens[i]
- b.delegate(0, b.validator(int64(i)), int64(del))
- b.delegate(1, b.validator(int64(i)), int64(extra))
- }
- }
-}
-
-func (b *Builder) setProviderParams() {
- // Set the slash factors on the provider to match the model
- slash := b.providerSlashingKeeper().GetParams(b.providerCtx())
- slash.SlashFractionDoubleSign = b.initState.SlashDoublesign
- slash.SlashFractionDowntime = b.initState.SlashDowntime
- err := b.providerSlashingKeeper().SetParams(b.providerCtx(), slash)
- if err != nil {
- panic(err)
- }
- // Set the throttle factors
- throttle := b.providerKeeper().GetParams(b.providerCtx())
- throttle.SlashMeterReplenishFraction = "1.0"
- throttle.SlashMeterReplenishPeriod = time.Second * 1
- b.providerKeeper().SetParams(b.providerCtx(), throttle)
-}
-
-func (b *Builder) configurePath() {
- b.path = ibctesting.NewPath(b.consumer(), b.provider())
- b.consumerEndpoint().ChannelConfig.PortID = ccv.ConsumerPortID
- b.providerEndpoint().ChannelConfig.PortID = ccv.ProviderPortID
- b.consumerEndpoint().ChannelConfig.Version = ccv.Version
- b.providerEndpoint().ChannelConfig.Version = ccv.Version
- b.consumerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
- b.providerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
-}
-
-func (b *Builder) createProvidersLocalClient() {
- // Configure and create the consumer Client
- tmCfg := b.providerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
- tmCfg.UnbondingPeriod = b.initState.UnbondingC
- tmCfg.TrustingPeriod = b.initState.Trusting
- tmCfg.MaxClockDrift = b.initState.MaxClockDrift
- err := b.providerEndpoint().CreateClient()
- b.suite.Require().NoError(err)
- // Create the Consumer chain ID mapping in the provider state
- b.providerKeeper().SetConsumerClientId(b.providerCtx(), b.consumer().ChainID, b.providerEndpoint().ClientID)
-}
-
-func (b *Builder) createConsumersLocalClientGenesis() *ibctmtypes.ClientState {
- tmCfg := b.consumerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
- tmCfg.UnbondingPeriod = b.initState.UnbondingP
- tmCfg.TrustingPeriod = b.initState.Trusting
- tmCfg.MaxClockDrift = b.initState.MaxClockDrift
-
- return ibctmtypes.NewClientState(
- b.provider().ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
- b.provider().LastHeader.GetHeight().(clienttypes.Height), commitmenttypes.GetSDKSpecs(),
- []string{"upgrade", "upgradedIBCState"},
- )
-}
-
-func (b *Builder) createConsumerGenesis(client *ibctmtypes.ClientState) *consumertypes.GenesisState {
- providerConsState := b.provider().LastHeader.ConsensusState()
-
- valUpdates := tmtypes.TM2PB.ValidatorUpdates(b.provider().Vals)
- params := ccv.NewParams(
- true,
- 1000, // ignore distribution
- "", // ignore distribution
- "", // ignore distribution
- ccv.DefaultCCVTimeoutPeriod,
- ccv.DefaultTransferTimeoutPeriod,
- ccv.DefaultConsumerRedistributeFrac,
- ccv.DefaultHistoricalEntries,
- b.initState.UnbondingC,
- "0", // disable soft opt-out
- []string{},
- []string{},
- ccv.DefaultRetryDelayPeriod,
- )
- return consumertypes.NewInitialGenesisState(client, providerConsState, valUpdates, params)
-}
-
-// The state of the data returned is equivalent to the state of two chains
-// after a full handshake, but the precise order of steps used to reach the
-// state does not necessarily mimic the order of steps that happen in a
-// live scenario.
-func GetZeroState(
- suite *suite.Suite,
- initState InitState,
-) (path *ibctesting.Path, addrs []sdk.ValAddress, heightLastCommitted, timeLastCommitted int64) {
- b := Builder{initState: initState, suite: suite}
-
- b.createProviderAndConsumer()
-
- b.setProviderParams()
-
- // This is the simplest way to initialize the slash meter
- // after a change to the param value.
- b.providerKeeper().InitializeSlashMeter(b.providerCtx())
-
- b.addExtraProviderValidators()
-
- // Commit the additional validators
- b.coordinator.CommitBlock(b.provider())
-
- b.configurePath()
-
- // Create a client for the provider chain to use, using ibc go testing.
- b.createProvidersLocalClient()
-
- // Manually create a client for the consumer chain to and bootstrap
- // via genesis.
- clientState := b.createConsumersLocalClientGenesis()
-
- consumerGenesis := b.createConsumerGenesis(clientState)
-
- b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
-
- // Client ID is set in InitGenesis and we treat it as a block box. So
- // must query it to use it with the endpoint.
- clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
- b.consumerEndpoint().ClientID = clientID
-
- // Handshake
- b.coordinator.CreateConnections(b.path)
- b.coordinator.CreateChannels(b.path)
-
- // Usually the consumer sets the channel ID when it receives a first VSC packet
- // to the provider. For testing purposes, we can set it here. This is because
- // we model a blank slate: a provider and consumer that have fully established
- // their channel, and are ready for anything to happen.
- b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
-
- // Catch up consumer height to provider height. The provider was one ahead
- // from committing additional validators.
- simibc.EndBlock(b.consumer(), func() {})
-
- simibc.BeginBlock(b.consumer(), initState.BlockInterval)
- simibc.BeginBlock(b.provider(), initState.BlockInterval)
-
- // Commit a block on both chains, giving us two committed headers from
- // the same time and height. This is the starting point for all our
- // data driven testing.
- lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
- lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
-
- // Want the height and time of last COMMITTED block
- heightLastCommitted = b.provider().CurrentHeader.Height
- timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
-
- // Get ready to update clients.
- simibc.BeginBlock(b.provider(), initState.BlockInterval)
- simibc.BeginBlock(b.consumer(), initState.BlockInterval)
-
- // Update clients to the latest header. Now everything is ready to go!
- // Ignore errors for brevity. Everything is checked in Assuptions test.
- _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
- _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
-
- return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
-}
diff --git a/tests/difference/core/quint_model/driver/trace.json b/tests/difference/core/quint_model/driver/trace.json
index 6b4c317ecf..a0c80be43e 100644
--- a/tests/difference/core/quint_model/driver/trace.json
+++ b/tests/difference/core/quint_model/driver/trace.json
@@ -4,11 +4,12 @@
"format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html",
"source": "ccv_model.qnt",
"status": "ok",
- "description": "Created by Quint on Wed Oct 18 2023 14:44:12 GMT+0200 (Central European Summer Time)",
- "timestamp": 1697633052446
+ "description": "Created by Quint on Thu Oct 19 2023 10:50:02 GMT+0200 (Central European Summer Time)",
+ "timestamp": 1697705402333
},
"vars": [
"currentState",
+ "params",
"trace"
],
"states": [
@@ -271,6 +272,152 @@
}
}
},
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
"trace": [
{
"consumerChain": "",
@@ -383,7 +530,68 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": []
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
},
"lastTimestamp": {
"#bigint": "0"
@@ -546,7 +754,7 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"votingPowerHistory": [
{
@@ -687,7 +895,7 @@
],
[
"consumer2",
- "not consumer"
+ "running"
],
[
"consumer3",
@@ -736,6 +944,152 @@
}
}
},
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
"trace": [
{
"consumerChain": "",
@@ -759,6 +1113,7 @@
"consumersToStart": {
"#set": [
"consumer1",
+ "consumer2",
"consumer3"
]
},
@@ -770,7 +1125,7 @@
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"validator": ""
}
@@ -868,9 +1223,70 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
"#bigint": "0"
},
"votingPowerHistory": []
@@ -951,74 +1367,9 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "0"
},
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
+ "votingPowerHistory": []
},
"maturationTimes": {
"#map": []
@@ -1042,7 +1393,7 @@
[
"node10",
{
- "#bigint": "100"
+ "#bigint": "0"
}
],
[
@@ -1096,7 +1447,7 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"votingPowerHistory": [
{
@@ -1237,7 +1588,7 @@
],
[
"consumer2",
- "not consumer"
+ "running"
],
[
"consumer3",
@@ -1261,7 +1612,7 @@
]
]
},
- "providerValidatorSetChangedInThisBlock": false,
+ "providerValidatorSetChangedInThisBlock": true,
"receivedMaturations": {
"#set": []
},
@@ -1286,6 +1637,152 @@
}
}
},
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
"trace": [
{
"consumerChain": "",
@@ -1309,6 +1806,7 @@
"consumersToStart": {
"#set": [
"consumer1",
+ "consumer2",
"consumer3"
]
},
@@ -1320,26 +1818,26 @@
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"validator": ""
},
{
- "consumerChain": "consumer3",
+ "consumerChain": "",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForConsumer",
+ "kind": "VotingPowerChange",
"newVotingPower": {
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node10"
}
]
},
@@ -1435,22 +1933,83 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": {
+ "#map": []
+ },
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
{
"chainState": {
"currentValidatorSet": {
@@ -1518,7 +2077,7 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "1"
},
"votingPowerHistory": [
{
@@ -1609,7 +2168,7 @@
[
"node10",
{
- "#bigint": "100"
+ "#bigint": "0"
}
],
[
@@ -1663,7 +2222,7 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"votingPowerHistory": [
{
@@ -1804,7 +2363,7 @@
],
[
"consumer2",
- "not consumer"
+ "running"
],
[
"consumer3",
@@ -1853,6 +2412,152 @@
}
}
},
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
"trace": [
{
"consumerChain": "",
@@ -1876,6 +2581,7 @@
"consumersToStart": {
"#set": [
"consumer1",
+ "consumer2",
"consumer3"
]
},
@@ -1887,43 +2593,43 @@
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"validator": ""
},
{
- "consumerChain": "consumer3",
+ "consumerChain": "",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForConsumer",
+ "kind": "VotingPowerChange",
"newVotingPower": {
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node10"
},
{
- "consumerChain": "",
+ "consumerChain": "consumer3",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
+ "kind": "EndAndBeginBlockForConsumer",
"newVotingPower": {
- "#bigint": "100"
+ "#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "0"
+ "#bigint": "1"
},
- "validator": "node1"
+ "validator": ""
}
]
},
@@ -2019,7 +2725,68 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": []
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
},
"lastTimestamp": {
"#bigint": "0"
@@ -2102,7 +2869,7 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "1"
},
"votingPowerHistory": [
{
@@ -2187,19 +2954,19 @@
[
"node1",
{
- "#bigint": "50"
+ "#bigint": "100"
}
],
[
"node10",
{
- "#bigint": "100"
+ "#bigint": "0"
}
],
[
"node2",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2247,7 +3014,7 @@
]
},
"lastTimestamp": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"votingPowerHistory": [
{
@@ -2388,7 +3155,7 @@
],
[
"consumer2",
- "not consumer"
+ "running"
],
[
"consumer3",
@@ -2437,6 +3204,152 @@
}
}
},
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
"trace": [
{
"consumerChain": "",
@@ -2460,6 +3373,7 @@
"consumersToStart": {
"#set": [
"consumer1",
+ "consumer2",
"consumer3"
]
},
@@ -2471,43 +3385,43 @@
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "604800"
},
"validator": ""
},
{
- "consumerChain": "consumer3",
+ "consumerChain": "",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForConsumer",
+ "kind": "VotingPowerChange",
"newVotingPower": {
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node10"
},
{
- "consumerChain": "",
+ "consumerChain": "consumer3",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
+ "kind": "EndAndBeginBlockForConsumer",
"newVotingPower": {
- "#bigint": "100"
+ "#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "0"
+ "#bigint": "1"
},
- "validator": "node1"
+ "validator": ""
},
{
"consumerChain": "",
@@ -2524,17367 +3438,7 @@
"timeAdvancement": {
"#bigint": "0"
},
- "validator": "node1"
- }
- ]
- },
- {
- "#meta": {
- "index": 5
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "running"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- }
- ]
- },
- {
- "#meta": {
- "index": 6
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4838400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 7
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4838400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- }
- ]
- },
- {
- "#meta": {
- "index": 8
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4838400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- }
- ]
- },
- {
- "#meta": {
- "index": 9
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4838400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- }
- ]
- },
- {
- "#meta": {
- "index": 10
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4924800"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "running"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": false,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 11
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4924800"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "running"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- }
- ]
- },
- {
- "#meta": {
- "index": 12
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "4924800"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "running"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- }
- ]
- },
- {
- "#meta": {
- "index": 13
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "5529600"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 14
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6134400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 15
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6134400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- }
- ]
- },
- {
- "#meta": {
- "index": 16
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6220800"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 17
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6220800"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- }
- ]
- },
- {
- "#meta": {
- "index": 18
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "50"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6220800"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node6"
- }
- ]
- },
- {
- "#meta": {
- "index": 19
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "50"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6220801"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "50"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node6"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 20
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "2419200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "0"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "6220801"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "50"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "0"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "50"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "stopped"
- ],
- [
- "consumer2",
- "stopped"
- ],
- [
- "consumer3",
- "stopped"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "4924800"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "50"
- }
- ],
- [
- "node10",
- {
- "#bigint": "50"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "50"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "50"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "trace": [
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node1"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer1",
- "consumer3"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "2419200"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node7"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer2"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node4"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": [
- "consumer2"
- ]
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "604800"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
"validator": "node2"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "86400"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "100"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node10"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node6"
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- },
- {
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "0"
- },
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node6"
}
]
}
From 2285a4cbba28abd4af5846f8a286d46f4c124807 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 2 Nov 2023 09:03:29 +0100
Subject: [PATCH 004/111] Implement chain startup
---
.../driver/{core_test.go => core.go} | 56 ++++----
.../core/quint_model/driver/driver/.gitignore | 2 -
.../core/quint_model/driver/mbt_test.go | 126 +++++++++++++-----
3 files changed, 122 insertions(+), 62 deletions(-)
rename tests/difference/core/quint_model/driver/{core_test.go => core.go} (89%)
delete mode 100644 tests/difference/core/quint_model/driver/driver/.gitignore
diff --git a/tests/difference/core/quint_model/driver/core_test.go b/tests/difference/core/quint_model/driver/core.go
similarity index 89%
rename from tests/difference/core/quint_model/driver/core_test.go
rename to tests/difference/core/quint_model/driver/core.go
index c04f2704db..5d21c98b0e 100644
--- a/tests/difference/core/quint_model/driver/core_test.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -2,10 +2,10 @@ package main
import (
"fmt"
+ "testing"
"time"
ibctesting "github.com/cosmos/ibc-go/v7/testing"
- "github.com/stretchr/testify/suite"
sdk "github.com/cosmos/cosmos-sdk/types"
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
@@ -19,9 +19,7 @@ import (
)
type CoreSuite struct {
- suite.Suite
-
- initState InitState
+ t *testing.T
// simulate a relayed path
simibc simibc.RelayedPath
@@ -46,15 +44,11 @@ func (s *CoreSuite) chainID(chain string) string {
// chain returns the TestChain for a given chain identifier
func (s *CoreSuite) chain(chain string) *ibctesting.TestChain {
- return map[string]*ibctesting.TestChain{P: s.providerChain(), C: s.consumerChain()}[chain]
+ return s.simibc.Chain(chain)
}
func (s *CoreSuite) providerChain() *ibctesting.TestChain {
- return s.simibc.Chain(ibctesting.GetChainID(0))
-}
-
-func (s *CoreSuite) consumerChain() *ibctesting.TestChain {
- return s.simibc.Chain(ibctesting.GetChainID(1))
+ return s.chain("provider")
}
func (b *CoreSuite) providerStakingKeeper() stakingkeeper.Keeper {
@@ -65,8 +59,8 @@ func (b *CoreSuite) providerSlashingKeeper() slashingkeeper.Keeper {
return b.providerChain().App.(*appProvider.App).SlashingKeeper
}
-func (b *CoreSuite) consumerKeeper() consumerkeeper.Keeper {
- return b.consumerChain().App.(*appConsumer.App).ConsumerKeeper
+func (b *CoreSuite) consumerKeeper(chain string) consumerkeeper.Keeper {
+ return b.chain(chain).App.(*appConsumer.App).ConsumerKeeper
}
// height returns the height of the current header of chain
@@ -97,16 +91,18 @@ func (s *CoreSuite) consAddr(i int64) sdk.ConsAddress {
// isJailed returns the jail status of validator with id (ix) i
func (s *CoreSuite) isJailed(i int64) bool {
val, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- s.Require().Truef(found, "GetValidator() -> !found")
+ if !found {
+ s.t.Errorf("GetValidator(%v) -> !found", s.validator(i))
+ }
return val.IsJailed()
}
-// consumerPower returns the power on the consumer chain for
+// consumerPower returns the power on the consumer chain chain for
// validator with id (ix) i
-func (s *CoreSuite) consumerPower(i int64) (int64, error) {
- v, found := s.consumerKeeper().GetCCValidator(s.ctx(C), s.validator(i))
+func (s *CoreSuite) consumerPower(i int64, chain string) (int64, error) {
+ v, found := s.consumerKeeper(chain).GetCCValidator(s.ctx(C), s.validator(i))
if !found {
- return 0, fmt.Errorf("GetCCValidator() -> !found")
+ return 0, fmt.Errorf("GetCCValidator(%v) -> !found", s.validator(i))
}
return v.Power, nil
}
@@ -115,7 +111,9 @@ func (s *CoreSuite) consumerPower(i int64) (int64, error) {
// the delegator account to the validator with id (ix) i
func (s *CoreSuite) delegation(i int64) int64 {
d, found := s.providerStakingKeeper().GetDelegation(s.ctx(P), s.delegator(), s.validator(i))
- s.Require().Truef(found, "GetDelegation() -> !found")
+ if !found {
+ s.t.Errorf("GetDelegation(%v) -> !found", s.validator(i))
+ }
return d.Shares.TruncateInt64()
}
@@ -123,7 +121,9 @@ func (s *CoreSuite) delegation(i int64) int64 {
// on the provider chain
func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- s.Require().Truef(found, "GetValidator() -> !found")
+ if !found {
+ s.t.Errorf("GetValidator(%v) -> !found", s.validator(i))
+ }
return v.GetStatus()
}
@@ -131,7 +131,9 @@ func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
// id (ix) i has delegated to it in total on the provider chain
func (s *CoreSuite) providerTokens(i int64) int64 {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- s.Require().Truef(found, "GetValidator() -> !found")
+ if !found {
+ s.t.Errorf("GetValidator(%v) -> !found", s.validator(i))
+ }
return v.Tokens.Int64()
}
@@ -170,14 +172,14 @@ func (s *CoreSuite) undelegate(val, amt int64) {
// consumerSlash simulates a slash event occurring on the consumer chain.
// It can be for a downtime or doublesign.
-func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool) {
+func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool, chain string) {
kind := stakingtypes.Infraction_INFRACTION_DOUBLE_SIGN
if isDowntime {
kind = stakingtypes.Infraction_INFRACTION_DOWNTIME
}
ctx := s.ctx(C)
before := len(ctx.EventManager().Events())
- s.consumerKeeper().SlashWithInfractionReason(ctx, val, h, 0, sdk.Dec{}, kind)
+ s.consumerKeeper(chain).SlashWithInfractionReason(ctx, val, h, 0, sdk.Dec{}, kind)
// consumer module emits packets on slash, so these must be collected.
evts := ctx.EventManager().Events()
packets := simibc.ParsePacketsFromEvents(evts[before:])
@@ -200,11 +202,11 @@ func (s *CoreSuite) deliver(chain string, numPackets int) {
s.simibc.DeliverPackets(s.chainID(chain), numPackets)
}
-// func (s *CoreSuite) endAndBeginBlock(chain string) {
-// s.simibc.EndAndBeginBlock(s.chainID(chain), s.initState.BlockInterval, func() {
-// s.compareModelAndSystemState()
-// })
-// }
+func (s *CoreSuite) endAndBeginBlock(chain string, timeAdvancement time.Duration) {
+ s.simibc.EndAndBeginBlock(s.chainID(chain), timeAdvancement, func() {
+ // s.compareModelAndSystemState()
+ })
+}
// // compareModelAndSystemState compares the state in the SUT to the state in the
// // the model.
diff --git a/tests/difference/core/quint_model/driver/driver/.gitignore b/tests/difference/core/quint_model/driver/driver/.gitignore
deleted file mode 100644
index a241de283a..0000000000
--- a/tests/difference/core/quint_model/driver/driver/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.log
-debug.json
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 0cbd253d75..65d886eba0 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -6,28 +6,43 @@ import (
"testing"
"time"
- "cosmossdk.io/api/tendermint/abci"
+ abcitypes "github.com/cometbft/cometbft/abci/types"
+ cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ "github.com/cometbft/cometbft/types"
cmttypes "github.com/cometbft/cometbft/types"
"github.com/cosmos/cosmos-sdk/baseapp"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
sdk "github.com/cosmos/cosmos-sdk/types"
+ icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
"github.com/cosmos/interchain-security/v3/testutil/integration"
"github.com/informalsystems/itf-go/itf"
- "github.com/stretchr/testify/require"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
+ ccvtypes "github.com/cosmos/interchain-security/v3/x/ccv/types"
ibctesting "github.com/cosmos/ibc-go/v7/testing"
)
-const INITIAL_ACCOUNT_BALANCE = 1000000000
+const (
+ INITIAL_ACCOUNT_BALANCE = 1000000000
+
+ // Parameters used in the staking module
+ StakingParamsMaxEntries = 10000
+ StakingParamsMaxValidators = 100
+ StakingParamsUnbondingTime = 5 * 7 * 24 * time.Hour // 5 weeks
+)
+
+// Parameters used by CometBFT
+var (
+ ConsensusParams = cmttypes.DefaultConsensusParams()
+)
func getAppBytesAndSenders(
- t *testing.T,
chainID string,
app ibctesting.TestingApp,
genesis map[string]json.RawMessage,
@@ -68,29 +83,48 @@ func getAppBytesAndSenders(
genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
+ // create initial validator set and its delegations
stakingValidators := make([]stakingtypes.Validator, 0, len(nodes))
delegations := make([]stakingtypes.Delegation, 0, len(nodes))
// Sum bonded is needed for BondedPool account
sumBonded := sdk.NewInt(0)
- initValPowers := []abci.ValidatorUpdate{}
+ initValPowers := []abcitypes.ValidatorUpdate{}
for i, val := range nodes {
- tokens := sdk.NewInt(int64(val.VotingPower))
+ _, valSetVal := initialValSet.GetByAddress(val.Address.Bytes())
+ valAccount := accounts[i]
+ if valSetVal == nil {
+ log.Panicf("error getting validator with address %v from valSet %v", val, initialValSet)
+ }
+ tokens := sdk.NewInt(valSetVal.VotingPower)
sumBonded = sumBonded.Add(tokens)
pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
- require.NoError(b.suite.T(), err)
+ if err != nil {
+ log.Panicf("error getting pubkey for val %v", val)
+ }
pkAny, err := codectypes.NewAnyWithValue(pk)
- require.NoError(b.suite.T(), err)
+ if err != nil {
+ log.Panicf("error getting pubkeyAny for val %v", val)
+ }
+
+ var valStatus stakingtypes.BondStatus
+ if val.VotingPower > 0 {
+ valStatus = stakingtypes.Bonded
+ } else {
+ valStatus = stakingtypes.Unbonded
+ }
+
+ delShares := sdk.NewDec(tokens.Int64()) // as many shares as tokens
validator := stakingtypes.Validator{
OperatorAddress: sdk.ValAddress(val.Address).String(),
ConsensusPubkey: pkAny,
Jailed: false,
- Status: status,
+ Status: valStatus,
Tokens: tokens,
- DelegatorShares: sumShares,
+ DelegatorShares: delShares,
Description: stakingtypes.Description{},
UnbondingHeight: int64(0),
UnbondingTime: time.Unix(0, 0).UTC(),
@@ -101,13 +135,11 @@ func getAppBytesAndSenders(
stakingValidators = append(stakingValidators, validator)
// Store delegation from the model delegator account
- delegations = append(delegations, stakingtypes.NewDelegation(accounts[0].GetAddress(), val.Address.Bytes(), delShares))
- // Remaining delegation is from extra account
- delegations = append(delegations, stakingtypes.NewDelegation(accounts[1].GetAddress(), val.Address.Bytes(), sumShares.Sub(delShares)))
+ delegations = append(delegations, stakingtypes.NewDelegation(valAccount.GetAddress(), val.Address.Bytes(), delShares))
// add initial validator powers so consumer InitGenesis runs correctly
pub, _ := val.ToProto()
- initValPowers = append(initValPowers, abci.ValidatorUpdate{
+ initValPowers = append(initValPowers, abcitypes.ValidatorUpdate{
Power: val.VotingPower,
PubKey: pub.PubKey,
})
@@ -123,17 +155,17 @@ func getAppBytesAndSenders(
bondDenom = genesisStaking.Params.BondDenom
}
- if genesis[consumertypes.ModuleName] != nil {
- app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
+ if genesis[ccvtypes.ModuleName] != nil {
+ app.AppCodec().MustUnmarshalJSON(genesis[ccvtypes.ModuleName], &genesisConsumer)
genesisConsumer.Provider.InitialValSet = initValPowers
genesisConsumer.Params.Enabled = true
- genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
+ genesis[ccvtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
}
// Set model parameters
- genesisStaking.Params.MaxEntries = uint32(b.initState.MaxEntries)
- genesisStaking.Params.MaxValidators = uint32(b.initState.MaxValidators)
- genesisStaking.Params.UnbondingTime = b.initState.UnbondingP
+ genesisStaking.Params.MaxEntries = StakingParamsMaxEntries
+ genesisStaking.Params.MaxValidators = StakingParamsMaxValidators
+ genesisStaking.Params.UnbondingTime = StakingParamsUnbondingTime
genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
@@ -154,29 +186,34 @@ func getAppBytesAndSenders(
genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
stateBytes, err := json.MarshalIndent(genesis, "", " ")
- require.NoError(b.suite.T(), err)
+ if err != nil {
+ log.Panicf("error marshalling genesis: %v", err)
+ }
return stateBytes, senderAccounts
}
func newChain(
+ t *testing.T,
coord *ibctesting.Coordinator,
appInit icstestingutils.AppIniter,
chainID string,
- validators *tmtypes.ValidatorSet,
- signers map[string]tmtypes.PrivValidator,
+ validators *cmttypes.ValidatorSet,
+ signers map[string]cmttypes.PrivValidator,
+ nodes []*cmttypes.Validator,
) *ibctesting.TestChain {
app, genesis := appInit()
baseapp.SetChainID(chainID)(app.GetBaseApp())
- stateBytes, senderAccounts := b.getAppBytesAndSenders(chainID, app, genesis, validators)
+ stateBytes, senderAccounts := getAppBytesAndSenders(chainID, app, genesis, validators, nodes)
+ protoConsParams := ConsensusParams.ToProto()
app.InitChain(
- abci.RequestInitChain{
+ abcitypes.RequestInitChain{
ChainId: chainID,
- Validators: []abci.ValidatorUpdate{},
- ConsensusParams: b.initState.ConsensusParams,
+ Validators: []abcitypes.ValidatorUpdate{},
+ ConsensusParams: &protoConsParams,
AppStateBytes: stateBytes,
},
)
@@ -184,8 +221,8 @@ func newChain(
app.Commit()
app.BeginBlock(
- abci.RequestBeginBlock{
- Header: tmproto.Header{
+ abcitypes.RequestBeginBlock{
+ Header: cmtproto.Header{
ChainID: chainID,
Height: app.LastBlockHeight() + 1,
AppHash: app.LastCommitID().Hash,
@@ -196,11 +233,11 @@ func newChain(
)
chain := &ibctesting.TestChain{
- T: b.suite.T(),
+ T: t,
Coordinator: coord,
ChainID: chainID,
App: app,
- CurrentHeader: tmproto.Header{
+ CurrentHeader: cmtproto.Header{
ChainID: chainID,
Height: 1,
Time: coord.CurrentTime.UTC(),
@@ -308,8 +345,30 @@ func TestItfTrace(t *testing.T) {
t.Log(addressMap)
t.Log(signers)
+ // get a slice of validators in the right order
+ nodes := make([]*cmttypes.Validator, len(valNames))
+ for i, valName := range valNames {
+ nodes[i] = addressMap[valName]
+ }
+
+ initValUpdates := types.TM2PB.ValidatorUpdates(valSet)
+
t.Log("Creating coordinator")
- coordinator := ibctesting.NewCoordinator(t, len(consumers))
+ coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
+
+ // start provider
+ t.Log("Creating provider chain")
+ providerChain := newChain(t, coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
+ coordinator.Chains["provider"] = providerChain
+
+ // start consumer chains
+ for _, chain := range consumers {
+ t.Logf("Creating consumer chain %v", chain)
+ consumerChain := newChain(t, coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
+ coordinator.Chains[chain] = consumerChain
+ }
+
+ t.Log("Started chains")
// initializing the provider chain
@@ -330,7 +389,8 @@ func TestItfTrace(t *testing.T) {
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
newVotingPower := lastAction["newVotingPower"].Value.(int64)
- t.Log(node, newVotingPower)
+ t.Logf("Setting provider voting power of %v to %v", node, newVotingPower)
+
case "EndAndBeginBlockForProvider":
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
consumersToStart := lastAction["consumersToStart"].Value.(itf.ListExprType)
From ae5b106f40e71d64fd89590a72d95a98f6a4b290 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 2 Nov 2023 13:19:04 +0100
Subject: [PATCH 005/111] Rewrite chain startup
---
.../core/quint_model/driver/core.go | 261 ++---
.../core/quint_model/driver/mbt_test.go | 250 ----
.../core/quint_model/driver/setup.go | 1006 ++++++-----------
3 files changed, 473 insertions(+), 1044 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 5d21c98b0e..18d37ecd0e 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -6,6 +6,7 @@ import (
"time"
ibctesting "github.com/cosmos/ibc-go/v7/testing"
+ "github.com/stretchr/testify/require"
sdk "github.com/cosmos/cosmos-sdk/types"
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
@@ -18,11 +19,18 @@ import (
consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
)
+type ChainId string
+
+type Params struct {
+ VscTimeout time.Duration
+ CcvTimeout map[ChainId]time.Duration
+}
+
type CoreSuite struct {
t *testing.T
- // simulate a relayed path
- simibc simibc.RelayedPath
+ // simulate IBC network: for each consumer chain name, we have a path between consumer and provider
+ simibcs map[string]*simibc.RelayedPath
// keep around validators for easy access
valAddresses []sdk.ValAddress
@@ -38,13 +46,18 @@ func (s *CoreSuite) ctx(chain string) sdk.Context {
return s.chain(chain).GetContext()
}
+// returns the path from the given chain to the provider.
+func (s *CoreSuite) path(chain string) *simibc.RelayedPath {
+ return s.simibcs[chain]
+}
+
func (s *CoreSuite) chainID(chain string) string {
return map[string]string{P: ibctesting.GetChainID(0), C: ibctesting.GetChainID(1)}[chain]
}
// chain returns the TestChain for a given chain identifier
func (s *CoreSuite) chain(chain string) *ibctesting.TestChain {
- return s.simibc.Chain(chain)
+ return s.path(chain).Chain(chain)
}
func (s *CoreSuite) providerChain() *ibctesting.TestChain {
@@ -91,9 +104,8 @@ func (s *CoreSuite) consAddr(i int64) sdk.ConsAddress {
// isJailed returns the jail status of validator with id (ix) i
func (s *CoreSuite) isJailed(i int64) bool {
val, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- if !found {
- s.t.Errorf("GetValidator(%v) -> !found", s.validator(i))
- }
+
+ require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
return val.IsJailed()
}
@@ -111,9 +123,7 @@ func (s *CoreSuite) consumerPower(i int64, chain string) (int64, error) {
// the delegator account to the validator with id (ix) i
func (s *CoreSuite) delegation(i int64) int64 {
d, found := s.providerStakingKeeper().GetDelegation(s.ctx(P), s.delegator(), s.validator(i))
- if !found {
- s.t.Errorf("GetDelegation(%v) -> !found", s.validator(i))
- }
+ require.True(s.t, found, "GetDelegation(%v) -> !found", s.validator(i))
return d.Shares.TruncateInt64()
}
@@ -121,9 +131,7 @@ func (s *CoreSuite) delegation(i int64) int64 {
// on the provider chain
func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- if !found {
- s.t.Errorf("GetValidator(%v) -> !found", s.validator(i))
- }
+ require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
return v.GetStatus()
}
@@ -131,12 +139,18 @@ func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
// id (ix) i has delegated to it in total on the provider chain
func (s *CoreSuite) providerTokens(i int64) int64 {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- if !found {
- s.t.Errorf("GetValidator(%v) -> !found", s.validator(i))
- }
+ require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
return v.Tokens.Int64()
}
+func (s *CoreSuite) validatorSet(chain string) []stakingtypes.Validator {
+ if chain == P {
+ return s.providerStakingKeeper().GetLastValidators(s.ctx(P))
+ } else {
+ return s.consumerKeeper(chain).GetAllValidators(s.ctx(C))
+ }
+}
+
// delegatorBalance returns the balance of the delegator account
func (s *CoreSuite) delegatorBalance() int64 {
d := s.delegator()
@@ -184,12 +198,12 @@ func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool,
evts := ctx.EventManager().Events()
packets := simibc.ParsePacketsFromEvents(evts[before:])
if len(packets) > 0 {
- s.simibc.Outboxes.AddPacket(s.chainID(C), packets[0])
+ s.path(chain).Outboxes.AddPacket(s.chainID(C), packets[0])
}
}
func (s *CoreSuite) updateClient(chain string) {
- s.simibc.UpdateClient(s.chainID(chain))
+ s.path(chain).UpdateClient(s.chainID(chain))
}
// deliver numPackets packets from the network to chain
@@ -197,147 +211,92 @@ func (s *CoreSuite) deliver(chain string, numPackets int) {
// Makes sure client is updated
s.updateClient(chain)
// Deliver any outstanding acks
- s.simibc.DeliverAcks(s.chainID(chain), 999999)
+ s.path(chain).DeliverAcks(s.chainID(chain), 999999)
// Consume deliverable packets from the network
- s.simibc.DeliverPackets(s.chainID(chain), numPackets)
+ s.path(chain).DeliverPackets(s.chainID(chain), numPackets)
}
-func (s *CoreSuite) endAndBeginBlock(chain string, timeAdvancement time.Duration) {
- s.simibc.EndAndBeginBlock(s.chainID(chain), timeAdvancement, func() {
- // s.compareModelAndSystemState()
+func (s *CoreSuite) endAndBeginBlock(chain string, timeAdvancement time.Duration, preCommitCallback func()) {
+ s.path(chain).EndAndBeginBlock(s.chainID(chain), timeAdvancement, func() {
})
}
-// // compareModelAndSystemState compares the state in the SUT to the state in the
-// // the model.
-// func (s *CoreSuite) compareModelAndSystemState() {
-// // Get a diagnostic for debugging
-// diagnostic := s.traces.Diagnostic()
-// chain := s.traces.Action().Chain
-
-// // Model time, height start at 0 so we need an offset for comparisons.
-// sutTimeOffset := time.Unix(s.offsetTimeUnix, 0).Add(-s.initState.BlockInterval).UTC()
-// modelTimeOffset := time.Duration(s.traces.Time()) * time.Second
-// sutHeightOffset := s.offsetHeight - 1
-// modelHeightOffset := int64(s.traces.Height())
-// s.Require().Equalf(sutTimeOffset.Add(modelTimeOffset), s.time(chain), diagnostic+"%s Time mismatch", chain)
-// s.Require().Equalf(sutHeightOffset+modelHeightOffset, s.height(chain), diagnostic+"%s Time mismatch", chain)
-// if chain == P {
-// for j := 0; j < s.initState.NumValidators; j++ {
-// have := s.validatorStatus(int64(j))
-// s.Require().Equalf(s.traces.Status(j), have, diagnostic+"P bond status mismatch for val %d, expect %s, have %s", j, s.traces.Status(j).String(), have.String())
-// }
-// for j := 0; j < s.initState.NumValidators; j++ {
-// s.Require().Equalf(int64(s.traces.Tokens(j)), s.providerTokens(int64(j)), diagnostic+"P tokens mismatch for val %d", j)
-// }
-// s.Require().Equalf(int64(s.traces.DelegatorTokens()), s.delegatorBalance(), diagnostic+"P del balance mismatch")
-// for j := 0; j < s.initState.NumValidators; j++ {
-// a := s.traces.Jailed(j) != nil
-// b := s.isJailed(int64(j))
-// s.Require().Equalf(a, b, diagnostic+"P jail status mismatch for val %d", j)
-// }
-// }
-// if chain == C {
-// for j := 0; j < s.initState.NumValidators; j++ {
-// exp := s.traces.ConsumerPower(j)
-// actual, err := s.consumerPower(int64(j))
-// if exp != nil {
-// s.Require().Nilf(err, diagnostic+" validator not found")
-// s.Require().Equalf(int64(*exp), actual, diagnostic+" power mismatch for val %d", j)
-// } else {
-// s.Require().Errorf(err, diagnostic+" power mismatch for val %d, expect 0 (nil), got %d", j, actual)
-// }
-// }
-// }
-// }
+// // The state of the data returned is equivalent to the state of two chains
+// // after a full handshake, but the precise order of steps used to reach the
+// // state does not necessarily mimic the order of steps that happen in a
+// // live scenario.
+// func GetZeroState(
+// suite *suite.Suite,
+// initState InitState,
+// ) (path *ibctesting.Path, addrs []sdk.ValAddress, heightLastCommitted, timeLastCommitted int64) {
+// b := Builder{initState: initState, suite: suite}
-// func (s *CoreSuite) executeTrace() {
-// for i := range s.traces.Actions() {
-// s.traces.CurrentActionIx = i
-
-// a := s.traces.Action()
-
-// switch a.Kind {
-// case "Delegate":
-// s.delegate(
-// int64(a.Val),
-// int64(a.Amt),
-// )
-// case "Undelegate":
-// s.undelegate(
-// int64(a.Val),
-// int64(a.Amt),
-// )
-// case "ConsumerSlash":
-// s.consumerSlash(
-// s.consAddr(int64(a.Val)),
-// // The SUT height is greater than the model height
-// // because the SUT has to do initialization.
-// int64(a.InfractionHeight)+s.offsetHeight,
-// a.IsDowntime,
-// )
-// case "UpdateClient":
-// s.updateClient(a.Chain)
-// case "Deliver":
-// s.deliver(a.Chain, a.NumPackets)
-// case "EndAndBeginBlock":
-// s.endAndBeginBlock(a.Chain)
-// default:
-// s.Require().FailNow("Failed to parse action")
-// }
-// }
-// }
+// b.createProviderAndConsumer()
-// // Test a set of traces
-// func (s *CoreSuite) TestTraces() {
-// s.traces = Traces{
-// Data: LoadTraces("traces.json"),
-// }
-// shortest := -1
-// shortestLen := 10000000000
-// for i := range s.traces.Data {
-// if !s.Run(fmt.Sprintf("Trace ix: %d", i), func() {
-// // Setup a new pair of chains for each trace
-// s.SetupTest()
-
-// s.traces.CurrentTraceIx = i
-// defer func() {
-// // If a panic occurs, we trap it to print a diagnostic
-// // and improve debugging experience.
-// if r := recover(); r != nil {
-// fmt.Println(s.traces.Diagnostic())
-// fmt.Println(r)
-// // Double panic to halt.
-// panic("Panic occurred during TestTraces")
-// }
-// }()
-// // Record information about the trace, for debugging
-// // diagnostics.
-// s.executeTrace()
-// }) {
-// if s.traces.CurrentActionIx < shortestLen {
-// shortest = s.traces.CurrentTraceIx
-// shortestLen = s.traces.CurrentActionIx
-// }
-// }
-// }
-// fmt.Println("Shortest [traceIx, actionIx]:", shortest, shortestLen)
-// }
+// b.setProviderParams()
+
+// // This is the simplest way to initialize the slash meter
+// // after a change to the param value.
+// b.providerKeeper().InitializeSlashMeter(b.providerCtx())
+
+// b.addExtraProviderValidators()
+
+// // Commit the additional validators
+// b.coordinator.CommitBlock(b.provider())
+
+// b.configurePath()
+
+// // Create a client for the provider chain to use, using ibc go testing.
+// b.createProvidersLocalClient()
+
+// // Manually create a client for the consumer chain to and bootstrap
+// // via genesis.
+// clientState := b.createConsumersLocalClientGenesis()
+
+// consumerGenesis := b.createConsumerGenesis(clientState)
+
+// b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
+
+// // Client ID is set in InitGenesis and we treat it as a block box. So
+// // must query it to use it with the endpoint.
+// clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
+// b.consumerEndpoint().ClientID = clientID
+
+// // Handshake
+// b.coordinator.CreateConnections(b.path)
+// b.coordinator.CreateChannels(b.path)
+
+// // Usually the consumer sets the channel ID when it receives a first VSC packet
+// // to the provider. For testing purposes, we can set it here. This is because
+// // we model a blank slate: a provider and consumer that have fully established
+// // their channel, and are ready for anything to happen.
+// b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
+
+// // Catch up consumer height to provider height. The provider was one ahead
+// // from committing additional validators.
+// simibc.EndBlock(b.consumer(), func() {})
+
+// simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+// simibc.BeginBlock(b.provider(), initState.BlockInterval)
+
+// // Commit a block on both chains, giving us two committed headers from
+// // the same time and height. This is the starting point for all our
+// // data driven testing.
+// lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
+// lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
+
+// // Want the height and time of last COMMITTED block
+// heightLastCommitted = b.provider().CurrentHeader.Height
+// timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
+
+// // Get ready to update clients.
+// simibc.BeginBlock(b.provider(), initState.BlockInterval)
+// simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+
+// // Update clients to the latest header. Now everything is ready to go!
+// // Ignore errors for brevity. Everything is checked in Assuptions test.
+// _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
+// _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
-// // TODO: diff tests will eventually be replaced by quint tests, and all this code could then be deleted.
-// // Until that decision is finalized, we'll just comment out the top-level test.
-
-// // func TestCoreSuite(t *testing.T) {
-// // suite.Run(t, new(CoreSuite))
-// // }
-
-// // SetupTest sets up the test suite in a 'zero' state which matches
-// // the initial state in the model.
-// func (s *CoreSuite) SetupTest() {
-// path, valAddresses, offsetHeight, offsetTimeUnix := GetZeroState(&s.Suite, initStateVar)
-// s.initState = initStateVar
-// s.valAddresses = valAddresses
-// s.offsetHeight = offsetHeight
-// s.offsetTimeUnix = offsetTimeUnix
-// s.simibc = simibc.MakeRelayedPath(s.Suite.T(), path)
+// return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
// }
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 65d886eba0..5325a2dc45 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -1,263 +1,17 @@
package main
import (
- "encoding/json"
"log"
"testing"
- "time"
- abcitypes "github.com/cometbft/cometbft/abci/types"
- cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
- "github.com/cometbft/cometbft/types"
cmttypes "github.com/cometbft/cometbft/types"
- "github.com/cosmos/cosmos-sdk/baseapp"
- codectypes "github.com/cosmos/cosmos-sdk/codec/types"
- cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
- "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
- sdk "github.com/cosmos/cosmos-sdk/types"
icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
"github.com/cosmos/interchain-security/v3/testutil/integration"
"github.com/informalsystems/itf-go/itf"
- authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
- consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
- ccvtypes "github.com/cosmos/interchain-security/v3/x/ccv/types"
-
ibctesting "github.com/cosmos/ibc-go/v7/testing"
)
-const (
- INITIAL_ACCOUNT_BALANCE = 1000000000
-
- // Parameters used in the staking module
- StakingParamsMaxEntries = 10000
- StakingParamsMaxValidators = 100
- StakingParamsUnbondingTime = 5 * 7 * 24 * time.Hour // 5 weeks
-)
-
-// Parameters used by CometBFT
-var (
- ConsensusParams = cmttypes.DefaultConsensusParams()
-)
-
-func getAppBytesAndSenders(
- chainID string,
- app ibctesting.TestingApp,
- genesis map[string]json.RawMessage,
- initialValSet *cmttypes.ValidatorSet,
- // the list of nodes that will be created, even ones that have no voting power initially
- nodes []*cmttypes.Validator,
-) ([]byte, []ibctesting.SenderAccount) {
- accounts := []authtypes.GenesisAccount{}
- balances := []banktypes.Balance{}
- senderAccounts := []ibctesting.SenderAccount{}
-
- // Create genesis accounts.
- for i := 0; i < len(nodes); i++ {
- pk := secp256k1.GenPrivKey()
- acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
-
- // Give enough funds for many delegations
- // Extra units are to delegate to extra validators created later
- // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
- bal := banktypes.Balance{
- Address: acc.GetAddress().String(),
- Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom,
- sdk.NewIntFromUint64(INITIAL_ACCOUNT_BALANCE))),
- }
-
- accounts = append(accounts, acc)
- balances = append(balances, bal)
-
- senderAccount := ibctesting.SenderAccount{
- SenderAccount: acc,
- SenderPrivKey: pk,
- }
-
- senderAccounts = append(senderAccounts, senderAccount)
- }
-
- // set genesis accounts
- genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
- genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
-
- // create initial validator set and its delegations
- stakingValidators := make([]stakingtypes.Validator, 0, len(nodes))
- delegations := make([]stakingtypes.Delegation, 0, len(nodes))
-
- // Sum bonded is needed for BondedPool account
- sumBonded := sdk.NewInt(0)
- initValPowers := []abcitypes.ValidatorUpdate{}
-
- for i, val := range nodes {
- _, valSetVal := initialValSet.GetByAddress(val.Address.Bytes())
- valAccount := accounts[i]
- if valSetVal == nil {
- log.Panicf("error getting validator with address %v from valSet %v", val, initialValSet)
- }
- tokens := sdk.NewInt(valSetVal.VotingPower)
- sumBonded = sumBonded.Add(tokens)
-
- pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
- if err != nil {
- log.Panicf("error getting pubkey for val %v", val)
- }
- pkAny, err := codectypes.NewAnyWithValue(pk)
- if err != nil {
- log.Panicf("error getting pubkeyAny for val %v", val)
- }
-
- var valStatus stakingtypes.BondStatus
- if val.VotingPower > 0 {
- valStatus = stakingtypes.Bonded
- } else {
- valStatus = stakingtypes.Unbonded
- }
-
- delShares := sdk.NewDec(tokens.Int64()) // as many shares as tokens
-
- validator := stakingtypes.Validator{
- OperatorAddress: sdk.ValAddress(val.Address).String(),
- ConsensusPubkey: pkAny,
- Jailed: false,
- Status: valStatus,
- Tokens: tokens,
- DelegatorShares: delShares,
- Description: stakingtypes.Description{},
- UnbondingHeight: int64(0),
- UnbondingTime: time.Unix(0, 0).UTC(),
- Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
- MinSelfDelegation: sdk.ZeroInt(),
- }
-
- stakingValidators = append(stakingValidators, validator)
-
- // Store delegation from the model delegator account
- delegations = append(delegations, stakingtypes.NewDelegation(valAccount.GetAddress(), val.Address.Bytes(), delShares))
-
- // add initial validator powers so consumer InitGenesis runs correctly
- pub, _ := val.ToProto()
- initValPowers = append(initValPowers, abcitypes.ValidatorUpdate{
- Power: val.VotingPower,
- PubKey: pub.PubKey,
- })
- }
-
- bondDenom := sdk.DefaultBondDenom
- genesisStaking := stakingtypes.GenesisState{}
- genesisConsumer := consumertypes.GenesisState{}
-
- if genesis[stakingtypes.ModuleName] != nil {
- // If staking module genesis already exists
- app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
- bondDenom = genesisStaking.Params.BondDenom
- }
-
- if genesis[ccvtypes.ModuleName] != nil {
- app.AppCodec().MustUnmarshalJSON(genesis[ccvtypes.ModuleName], &genesisConsumer)
- genesisConsumer.Provider.InitialValSet = initValPowers
- genesisConsumer.Params.Enabled = true
- genesis[ccvtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
- }
-
- // Set model parameters
- genesisStaking.Params.MaxEntries = StakingParamsMaxEntries
- genesisStaking.Params.MaxValidators = StakingParamsMaxValidators
- genesisStaking.Params.UnbondingTime = StakingParamsUnbondingTime
- genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
- genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
-
- // add bonded amount to bonded pool module account
- balances = append(balances, banktypes.Balance{
- Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
- Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
- })
-
- // add unbonded amount
- balances = append(balances, banktypes.Balance{
- Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
- Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
- })
-
- // update total funds supply
- genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
- genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
-
- stateBytes, err := json.MarshalIndent(genesis, "", " ")
- if err != nil {
- log.Panicf("error marshalling genesis: %v", err)
- }
-
- return stateBytes, senderAccounts
-}
-
-func newChain(
- t *testing.T,
- coord *ibctesting.Coordinator,
- appInit icstestingutils.AppIniter,
- chainID string,
- validators *cmttypes.ValidatorSet,
- signers map[string]cmttypes.PrivValidator,
- nodes []*cmttypes.Validator,
-) *ibctesting.TestChain {
- app, genesis := appInit()
-
- baseapp.SetChainID(chainID)(app.GetBaseApp())
-
- stateBytes, senderAccounts := getAppBytesAndSenders(chainID, app, genesis, validators, nodes)
-
- protoConsParams := ConsensusParams.ToProto()
- app.InitChain(
- abcitypes.RequestInitChain{
- ChainId: chainID,
- Validators: []abcitypes.ValidatorUpdate{},
- ConsensusParams: &protoConsParams,
- AppStateBytes: stateBytes,
- },
- )
-
- app.Commit()
-
- app.BeginBlock(
- abcitypes.RequestBeginBlock{
- Header: cmtproto.Header{
- ChainID: chainID,
- Height: app.LastBlockHeight() + 1,
- AppHash: app.LastCommitID().Hash,
- ValidatorsHash: validators.Hash(),
- NextValidatorsHash: validators.Hash(),
- },
- },
- )
-
- chain := &ibctesting.TestChain{
- T: t,
- Coordinator: coord,
- ChainID: chainID,
- App: app,
- CurrentHeader: cmtproto.Header{
- ChainID: chainID,
- Height: 1,
- Time: coord.CurrentTime.UTC(),
- },
- QueryServer: app.GetIBCKeeper(),
- TxConfig: app.GetTxConfig(),
- Codec: app.AppCodec(),
- Vals: validators,
- NextVals: validators,
- Signers: signers,
- SenderPrivKey: senderAccounts[0].SenderPrivKey,
- SenderAccount: senderAccounts[0].SenderAccount,
- SenderAccounts: senderAccounts,
- }
-
- coord.CommitBlock(chain)
-
- return chain
-}
-
// Given a map from node names to voting powers, create a validator set with the right voting powers.
// All nodes should be included in the voting power map, even if they have voting power 0.
// This way, the nodes will have validators (that can later be assigned voting powers) and signers created for them.
@@ -351,8 +105,6 @@ func TestItfTrace(t *testing.T) {
nodes[i] = addressMap[valName]
}
- initValUpdates := types.TM2PB.ValidatorUpdates(valSet)
-
t.Log("Creating coordinator")
coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
@@ -370,8 +122,6 @@ func TestItfTrace(t *testing.T) {
t.Log("Started chains")
- // initializing the provider chain
-
t.Log("Reading the trace...")
for index, state := range trace.States {
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 4ebaa1b009..4c7ca4ae6a 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -1,644 +1,364 @@
-// package main
-
-// import (
-// "bytes"
-// cryptoEd25519 "crypto/ed25519"
-// "encoding/json"
-// "time"
-
-// clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
-// channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
-// commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
-// ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
-// ibctesting "github.com/cosmos/ibc-go/v7/testing"
-// "github.com/cosmos/ibc-go/v7/testing/mock"
-// "github.com/stretchr/testify/require"
-// "github.com/stretchr/testify/suite"
-
-// "github.com/cosmos/cosmos-sdk/baseapp"
-// codectypes "github.com/cosmos/cosmos-sdk/codec/types"
-// cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
-// cosmosEd25519 "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
-// "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
-// sdk "github.com/cosmos/cosmos-sdk/types"
-// authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
-// banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
-// slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
-// slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
-// stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
-// stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-
-// abci "github.com/cometbft/cometbft/abci/types"
-// tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
-// tmtypes "github.com/cometbft/cometbft/types"
-
-// appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
-// appProvider "github.com/cosmos/interchain-security/v3/app/provider"
-// icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
-// testutil "github.com/cosmos/interchain-security/v3/testutil/integration"
-// consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
-// consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
-// providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
-// ccv "github.com/cosmos/interchain-security/v3/x/ccv/types"
-// )
-
-// type Builder struct {
-// suite *suite.Suite
-// path *ibctesting.Path
-// coordinator *ibctesting.Coordinator
-// valAddresses []sdk.ValAddress
-// initState InitState
-// }
-
-// func (b *Builder) provider() *ibctesting.TestChain {
-// return b.coordinator.GetChain(ibctesting.GetChainID(0))
-// }
-
-// func (b *Builder) consumer() *ibctesting.TestChain {
-// return b.coordinator.GetChain(ibctesting.GetChainID(1))
-// }
-
-// func (b *Builder) providerCtx() sdk.Context {
-// return b.provider().GetContext()
-// }
-
-// func (b *Builder) consumerCtx() sdk.Context {
-// return b.consumer().GetContext()
-// }
-
-// func (b *Builder) providerStakingKeeper() stakingkeeper.Keeper {
-// return *b.provider().App.(*appProvider.App).StakingKeeper
-// }
-
-// func (b *Builder) providerSlashingKeeper() slashingkeeper.Keeper {
-// return b.provider().App.(*appProvider.App).SlashingKeeper
-// }
-
-// func (b *Builder) providerKeeper() providerkeeper.Keeper {
-// return b.provider().App.(*appProvider.App).ProviderKeeper
-// }
-
-// func (b *Builder) consumerKeeper() consumerkeeper.Keeper {
-// return b.consumer().App.(*appConsumer.App).ConsumerKeeper
-// }
-
-// func (b *Builder) providerEndpoint() *ibctesting.Endpoint {
-// return b.path.EndpointB
-// }
-
-// func (b *Builder) consumerEndpoint() *ibctesting.Endpoint {
-// return b.path.EndpointA
-// }
-
-// func (b *Builder) validator(i int64) sdk.ValAddress {
-// return b.valAddresses[i]
-// }
-
-// func (b *Builder) consAddr(i int64) sdk.ConsAddress {
-// return sdk.ConsAddress(b.validator(i))
-// }
-
-// // getValidatorPK returns the validator private key using the given seed index
-// func (b *Builder) getValidatorPK(seedIx int) mock.PV {
-// seed := []byte(b.initState.PKSeeds[seedIx])
-// return mock.PV{PrivKey: &cosmosEd25519.PrivKey{Key: cryptoEd25519.NewKeyFromSeed(seed)}} //nolint:staticcheck // SA1019: cosmosEd25519.PrivKey is deprecated: PrivKey defines a ed25519 private key. NOTE: ed25519 keys must not be used in SDK apps except in a tendermint validator context.
-// }
-
-// func (b *Builder) getAppBytesAndSenders(
-// chainID string,
-// app ibctesting.TestingApp,
-// genesis map[string]json.RawMessage,
-// validators *tmtypes.ValidatorSet,
-// ) ([]byte, []ibctesting.SenderAccount) {
-// accounts := []authtypes.GenesisAccount{}
-// balances := []banktypes.Balance{}
-// senderAccounts := []ibctesting.SenderAccount{}
-
-// // Create genesis accounts.
-// for i := 0; i < b.initState.MaxValidators; i++ {
-// pk := secp256k1.GenPrivKey()
-// acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
-
-// // Give enough funds for many delegations
-// // Extra units are to delegate to extra validators created later
-// // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
-// extra := 0
-// for j := 0; j < b.initState.NumValidators; j++ {
-// if b.initState.ValStates.Status[j] != stakingtypes.Bonded {
-// extra += b.initState.ValStates.Delegation[j]
-// }
-// }
-// amt := uint64(b.initState.InitialDelegatorTokens + extra)
-
-// bal := banktypes.Balance{
-// Address: acc.GetAddress().String(),
-// Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewIntFromUint64(amt))),
-// }
-
-// accounts = append(accounts, acc)
-// balances = append(balances, bal)
-
-// senderAccount := ibctesting.SenderAccount{
-// SenderAccount: acc,
-// SenderPrivKey: pk,
-// }
-
-// senderAccounts = append(senderAccounts, senderAccount)
-// }
-
-// // set genesis accounts
-// genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
-// genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
-
-// stakingValidators := make([]stakingtypes.Validator, 0, len(validators.Validators))
-// delegations := make([]stakingtypes.Delegation, 0, len(validators.Validators))
-
-// // Sum bonded is needed for BondedPool account
-// sumBonded := sdk.NewInt(0)
-// initValPowers := []abci.ValidatorUpdate{}
-
-// for i, val := range validators.Validators {
-// status := b.initState.ValStates.Status[i]
-// delegation := b.initState.ValStates.Delegation[i]
-// extra := b.initState.ValStates.ValidatorExtraTokens[i]
-
-// tokens := sdk.NewInt(int64(delegation + extra))
-// b.suite.Require().Equal(status, stakingtypes.Bonded, "All genesis validators should be bonded")
-// sumBonded = sumBonded.Add(tokens)
-// // delegator account receives delShares shares
-// delShares := sdk.NewDec(int64(delegation))
-// // validator has additional sumShares due to extra units
-// sumShares := sdk.NewDec(int64(delegation + extra))
-
-// pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
-// require.NoError(b.suite.T(), err)
-// pkAny, err := codectypes.NewAnyWithValue(pk)
-// require.NoError(b.suite.T(), err)
-
-// validator := stakingtypes.Validator{
-// OperatorAddress: sdk.ValAddress(val.Address).String(),
-// ConsensusPubkey: pkAny,
-// Jailed: false,
-// Status: status,
-// Tokens: tokens,
-// DelegatorShares: sumShares,
-// Description: stakingtypes.Description{},
-// UnbondingHeight: int64(0),
-// UnbondingTime: time.Unix(0, 0).UTC(),
-// Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
-// MinSelfDelegation: sdk.ZeroInt(),
-// }
-
-// stakingValidators = append(stakingValidators, validator)
-
-// // Store delegation from the model delegator account
-// delegations = append(delegations, stakingtypes.NewDelegation(accounts[0].GetAddress(), val.Address.Bytes(), delShares))
-// // Remaining delegation is from extra account
-// delegations = append(delegations, stakingtypes.NewDelegation(accounts[1].GetAddress(), val.Address.Bytes(), sumShares.Sub(delShares)))
-
-// // add initial validator powers so consumer InitGenesis runs correctly
-// pub, _ := val.ToProto()
-// initValPowers = append(initValPowers, abci.ValidatorUpdate{
-// Power: val.VotingPower,
-// PubKey: pub.PubKey,
-// })
-// }
-
-// bondDenom := sdk.DefaultBondDenom
-// genesisStaking := stakingtypes.GenesisState{}
-// genesisConsumer := consumertypes.GenesisState{}
-
-// if genesis[stakingtypes.ModuleName] != nil {
-// // If staking module genesis already exists
-// app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
-// bondDenom = genesisStaking.Params.BondDenom
-// }
-
-// if genesis[consumertypes.ModuleName] != nil {
-// app.AppCodec().MustUnmarshalJSON(genesis[consumertypes.ModuleName], &genesisConsumer)
-// genesisConsumer.Provider.InitialValSet = initValPowers
-// genesisConsumer.Params.Enabled = true
-// genesis[consumertypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
-// }
-
-// // Set model parameters
-// genesisStaking.Params.MaxEntries = uint32(b.initState.MaxEntries)
-// genesisStaking.Params.MaxValidators = uint32(b.initState.MaxValidators)
-// genesisStaking.Params.UnbondingTime = b.initState.UnbondingP
-// genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
-// genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
-
-// // add bonded amount to bonded pool module account
-// balances = append(balances, banktypes.Balance{
-// Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
-// Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
-// })
-
-// // add unbonded amount
-// balances = append(balances, banktypes.Balance{
-// Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
-// Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
-// })
-
-// // update total funds supply
-// genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
-// genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
-
-// stateBytes, err := json.MarshalIndent(genesis, "", " ")
-// require.NoError(b.suite.T(), err)
-
-// return stateBytes, senderAccounts
-// }
-
-// func (b *Builder) newChain(
-// coord *ibctesting.Coordinator,
-// appInit icstestingutils.AppIniter,
-// chainID string,
-// validators *tmtypes.ValidatorSet,
-// signers map[string]tmtypes.PrivValidator,
-// ) *ibctesting.TestChain {
-// app, genesis := appInit()
-
-// baseapp.SetChainID(chainID)(app.GetBaseApp())
-
-// stateBytes, senderAccounts := b.getAppBytesAndSenders(chainID, app, genesis, validators)
-
-// app.InitChain(
-// abci.RequestInitChain{
-// ChainId: chainID,
-// Validators: []abci.ValidatorUpdate{},
-// ConsensusParams: b.initState.ConsensusParams,
-// AppStateBytes: stateBytes,
-// },
-// )
-
-// app.Commit()
-
-// app.BeginBlock(
-// abci.RequestBeginBlock{
-// Header: tmproto.Header{
-// ChainID: chainID,
-// Height: app.LastBlockHeight() + 1,
-// AppHash: app.LastCommitID().Hash,
-// ValidatorsHash: validators.Hash(),
-// NextValidatorsHash: validators.Hash(),
-// },
-// },
-// )
-
-// chain := &ibctesting.TestChain{
-// T: b.suite.T(),
-// Coordinator: coord,
-// ChainID: chainID,
-// App: app,
-// CurrentHeader: tmproto.Header{
-// ChainID: chainID,
-// Height: 1,
-// Time: coord.CurrentTime.UTC(),
-// },
-// QueryServer: app.GetIBCKeeper(),
-// TxConfig: app.GetTxConfig(),
-// Codec: app.AppCodec(),
-// Vals: validators,
-// NextVals: validators,
-// Signers: signers,
-// SenderPrivKey: senderAccounts[0].SenderPrivKey,
-// SenderAccount: senderAccounts[0].SenderAccount,
-// SenderAccounts: senderAccounts,
-// }
-
-// coord.CommitBlock(chain)
-
-// return chain
-// }
-
-// func (b *Builder) createValidators(addresses []sdk.ValAddress) (*tmtypes.ValidatorSet, map[string]tmtypes.PrivValidator) {
-// signers := map[string]tmtypes.PrivValidator{}
-// validators := []*tmtypes.Validator{}
-
-// for i, power := range b.initState.ValStates.Tokens {
-// if b.initState.ValStates.Status[i] != stakingtypes.Bonded {
-// continue
-// }
-// privVal := b.getValidatorPK(i)
-
-// pubKey, err := privVal.GetPubKey()
-// require.NoError(b.suite.T(), err)
-
-// // Compute address
-// addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
-// require.NoError(b.suite.T(), err)
-// addresses = append(addresses, addr)
-
-// // Save signer
-// signers[pubKey.Address().String()] = privVal
-
-// // Save validator with power
-// validators = append(validators, tmtypes.NewValidator(pubKey, int64(power)))
-// }
-
-// return tmtypes.NewValidatorSet(validators), signers, addresses
-// }
-
-// func (b *Builder) createChain(initialValSet *tmproto.ValidatorSet) {
-// // Create provider
-// b.coordinator.Chains["provider"] = b.newChain(
-// b.coordinator,
-// icstestingutils.ProviderAppIniter,
-// "provider", validators, signers)
-
-// valUpdates := testutil.ToValidatorUpdates(b.suite.T(), validators)
-// }
-
-// func (b *Builder) createProviderAndConsumer() {
-// coordinator := ibctesting.NewCoordinator(b.suite.T(), 0)
-
-// // Create validators
-// validators, signers, addresses := b.createValidators()
-// // Create provider
-// coordinator.Chains[ibctesting.GetChainID(0)] = b.newChain(coordinator, icstestingutils.ProviderAppIniter, ibctesting.GetChainID(0), validators, signers)
-// // Create consumer, using the same validators.
-// valUpdates := testutil.ToValidatorUpdates(b.suite.T(), validators)
-// coordinator.Chains[ibctesting.GetChainID(1)] = b.newChain(coordinator, icstestingutils.ConsumerAppIniter(valUpdates), ibctesting.GetChainID(1), validators, signers)
-
-// b.coordinator = coordinator
-// b.valAddresses = addresses
-// }
-
-// // setSigningInfos sets the validator signing info in the provider Slashing module
-// func (b *Builder) setSigningInfos() {
-// for i := 0; i < b.initState.NumValidators; i++ {
-// info := slashingtypes.NewValidatorSigningInfo(
-// b.consAddr(int64(i)),
-// b.provider().CurrentHeader.GetHeight(),
-// 0,
-// time.Unix(0, 0),
-// false,
-// 0,
-// )
-// b.providerSlashingKeeper().SetValidatorSigningInfo(b.providerCtx(), b.consAddr(int64(i)), info)
-// }
-// }
-
-// // Checks that the lexicographic ordering of validator addresses as computed in
-// // the staking module match the ordering of validators in the model.
-// func (b *Builder) ensureValidatorLexicographicOrderingMatchesModel() {
-// check := func(lesser, greater sdk.ValAddress) {
-// lesserV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), lesser)
-// greaterV, _ := b.providerStakingKeeper().GetValidator(b.providerCtx(), greater)
-// lesserKey := stakingtypes.GetValidatorsByPowerIndexKey(lesserV, sdk.DefaultPowerReduction)
-// greaterKey := stakingtypes.GetValidatorsByPowerIndexKey(greaterV, sdk.DefaultPowerReduction)
-// // The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
-// res := bytes.Compare(lesserKey, greaterKey)
-// // Confirm that validator precedence is the same in code as in model
-// b.suite.Require().Equal(-1, res)
-// }
-
-// // In order to match the model to the system under test it is necessary
-// // to enforce a strict lexicographic ordering on the validators.
-// // We must do this because the staking module will break ties when
-// // deciding the active validator set by comparing addresses lexicographically.
-// // Thus, we assert here that the ordering in the model matches the ordering
-// // in the SUT.
-// for i := range b.valAddresses[:len(b.valAddresses)-1] {
-// // validators are chosen sorted descending in the staking module
-// greater := b.valAddresses[i]
-// lesser := b.valAddresses[i+1]
-// check(lesser, greater)
-// }
-// }
-
-// // delegate is used to delegate tokens to newly created
-// // validators in the setup process.
-// func (b *Builder) delegate(del int, val sdk.ValAddress, amt int64) {
-// d := b.provider().SenderAccounts[del].SenderAccount.GetAddress()
-// coins := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
-// msg := stakingtypes.NewMsgDelegate(d, val, coins)
-// providerStaking := b.providerStakingKeeper()
-// pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
-// _, err := pskServer.Delegate(sdk.WrapSDKContext(b.providerCtx()), msg)
-// b.suite.Require().NoError(err)
-// }
-
-// // addValidatorToStakingModule creates an additional validator with zero commission
-// // and zero tokens (zero voting power).
-// func (b *Builder) addValidatorToStakingModule(privVal mock.PV) {
-// coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(0))
-
-// pubKey, err := privVal.GetPubKey()
-// require.NoError(b.suite.T(), err)
-
-// // Compute address
-// addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
-// require.NoError(b.suite.T(), err)
-
-// sdkPK, err := cryptocodec.FromTmPubKeyInterface(pubKey)
-// require.NoError(b.suite.T(), err)
-
-// msg, err := stakingtypes.NewMsgCreateValidator(
-// addr,
-// sdkPK,
-// coin,
-// stakingtypes.Description{},
-// stakingtypes.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
-// sdk.ZeroInt())
-// b.suite.Require().NoError(err)
-// providerStaking := b.providerStakingKeeper()
-// pskServer := stakingkeeper.NewMsgServerImpl(&providerStaking)
-// _, _ = pskServer.CreateValidator(sdk.WrapSDKContext(b.providerCtx()), msg)
-// }
-
-// func (b *Builder) addExtraProviderValidators() {
-// for i, status := range b.initState.ValStates.Status {
-// if status == stakingtypes.Unbonded {
-// privVal := b.getValidatorPK(i)
-// b.addValidatorToStakingModule(privVal)
-// pubKey, err := privVal.GetPubKey()
-// require.NoError(b.suite.T(), err)
-
-// addr, err := sdk.ValAddressFromHex(pubKey.Address().String())
-// require.NoError(b.suite.T(), err)
-
-// b.valAddresses = append(b.valAddresses, addr)
-// b.provider().Signers[pubKey.Address().String()] = privVal
-// b.consumer().Signers[pubKey.Address().String()] = privVal
-// }
-// }
-
-// b.setSigningInfos()
-
-// b.ensureValidatorLexicographicOrderingMatchesModel()
-
-// for i := range b.initState.ValStates.Status {
-// if b.initState.ValStates.Status[i] == stakingtypes.Unbonded {
-// del := b.initState.ValStates.Delegation[i]
-// extra := b.initState.ValStates.ValidatorExtraTokens[i]
-// b.delegate(0, b.validator(int64(i)), int64(del))
-// b.delegate(1, b.validator(int64(i)), int64(extra))
-// }
-// }
-// }
-
-// func (b *Builder) setProviderParams() {
-// // Set the slash factors on the provider to match the model
-// slash := b.providerSlashingKeeper().GetParams(b.providerCtx())
-// slash.SlashFractionDoubleSign = b.initState.SlashDoublesign
-// slash.SlashFractionDowntime = b.initState.SlashDowntime
-// err := b.providerSlashingKeeper().SetParams(b.providerCtx(), slash)
-// if err != nil {
-// panic(err)
-// }
-// // Set the throttle factors
-// throttle := b.providerKeeper().GetParams(b.providerCtx())
-// throttle.SlashMeterReplenishFraction = "1.0"
-// throttle.SlashMeterReplenishPeriod = time.Second * 1
-// b.providerKeeper().SetParams(b.providerCtx(), throttle)
-// }
-
-// func (b *Builder) configurePath() {
-// b.path = ibctesting.NewPath(b.consumer(), b.provider())
-// b.consumerEndpoint().ChannelConfig.PortID = ccv.ConsumerPortID
-// b.providerEndpoint().ChannelConfig.PortID = ccv.ProviderPortID
-// b.consumerEndpoint().ChannelConfig.Version = ccv.Version
-// b.providerEndpoint().ChannelConfig.Version = ccv.Version
-// b.consumerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
-// b.providerEndpoint().ChannelConfig.Order = channeltypes.ORDERED
-// }
-
-// func (b *Builder) createProvidersLocalClient() {
-// // Configure and create the consumer Client
-// tmCfg := b.providerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
-// tmCfg.UnbondingPeriod = b.initState.UnbondingC
-// tmCfg.TrustingPeriod = b.initState.Trusting
-// tmCfg.MaxClockDrift = b.initState.MaxClockDrift
-// err := b.providerEndpoint().CreateClient()
-// b.suite.Require().NoError(err)
-// // Create the Consumer chain ID mapping in the provider state
-// b.providerKeeper().SetConsumerClientId(b.providerCtx(), b.consumer().ChainID, b.providerEndpoint().ClientID)
-// }
-
-// func (b *Builder) createConsumersLocalClientGenesis() *ibctmtypes.ClientState {
-// tmCfg := b.consumerEndpoint().ClientConfig.(*ibctesting.TendermintConfig)
-// tmCfg.UnbondingPeriod = b.initState.UnbondingP
-// tmCfg.TrustingPeriod = b.initState.Trusting
-// tmCfg.MaxClockDrift = b.initState.MaxClockDrift
-
-// return ibctmtypes.NewClientState(
-// b.provider().ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
-// b.provider().LastHeader.GetHeight().(clienttypes.Height), commitmenttypes.GetSDKSpecs(),
-// []string{"upgrade", "upgradedIBCState"},
-// )
-// }
-
-// func (b *Builder) createConsumerGenesis(client *ibctmtypes.ClientState) *consumertypes.GenesisState {
-// providerConsState := b.provider().LastHeader.ConsensusState()
-
-// valUpdates := tmtypes.TM2PB.ValidatorUpdates(b.provider().Vals)
-// params := ccv.NewParams(
-// true,
-// 1000, // ignore distribution
-// "", // ignore distribution
-// "", // ignore distribution
-// ccv.DefaultCCVTimeoutPeriod,
-// ccv.DefaultTransferTimeoutPeriod,
-// ccv.DefaultConsumerRedistributeFrac,
-// ccv.DefaultHistoricalEntries,
-// b.initState.UnbondingC,
-// "0", // disable soft opt-out
-// []string{},
-// []string{},
-// ccv.DefaultRetryDelayPeriod,
-// )
-// return consumertypes.NewInitialGenesisState(client, providerConsState, valUpdates, params)
-// }
-
-// func NewBuilder(s *suite.Suite, valAddresses []sdk.ValAddress) *Builder {
-// coord := ibctesting.NewCoordinator(s.T(), 0)
-
-// return &Builder{
-// suite: s,
-// valAddresses: valAddresses,
-// coordinator: coord,
-// }
-// }
-
-// // // The state of the data returned is equivalent to the state of two chains
-// // // after a full handshake, but the precise order of steps used to reach the
-// // // state does not necessarily mimic the order of steps that happen in a
-// // // live scenario.
-// // func GetZeroState(
-// // suite *suite.Suite,
-// // initState InitState,
-// // ) (path *ibctesting.Path, addrs []sdk.ValAddress, heightLastCommitted, timeLastCommitted int64) {
-// // b := Builder{initState: initState, suite: suite}
-
-// // b.createProviderAndConsumer()
-
-// // b.setProviderParams()
-
-// // // This is the simplest way to initialize the slash meter
-// // // after a change to the param value.
-// // b.providerKeeper().InitializeSlashMeter(b.providerCtx())
-
-// // b.addExtraProviderValidators()
-
-// // // Commit the additional validators
-// // b.coordinator.CommitBlock(b.provider())
-
-// // b.configurePath()
-
-// // // Create a client for the provider chain to use, using ibc go testing.
-// // b.createProvidersLocalClient()
-
-// // // Manually create a client for the consumer chain to and bootstrap
-// // // via genesis.
-// // clientState := b.createConsumersLocalClientGenesis()
-
-// // consumerGenesis := b.createConsumerGenesis(clientState)
-
-// // b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
-
-// // // Client ID is set in InitGenesis and we treat it as a block box. So
-// // // must query it to use it with the endpoint.
-// // clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
-// // b.consumerEndpoint().ClientID = clientID
-
-// // // Handshake
-// // b.coordinator.CreateConnections(b.path)
-// // b.coordinator.CreateChannels(b.path)
-
-// // // Usually the consumer sets the channel ID when it receives a first VSC packet
-// // // to the provider. For testing purposes, we can set it here. This is because
-// // // we model a blank slate: a provider and consumer that have fully established
-// // // their channel, and are ready for anything to happen.
-// // b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
-
-// // // Catch up consumer height to provider height. The provider was one ahead
-// // // from committing additional validators.
-// // simibc.EndBlock(b.consumer(), func() {})
-
-// // simibc.BeginBlock(b.consumer(), initState.BlockInterval)
-// // simibc.BeginBlock(b.provider(), initState.BlockInterval)
-
-// // // Commit a block on both chains, giving us two committed headers from
-// // // the same time and height. This is the starting point for all our
-// // // data driven testing.
-// // lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
-// // lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
-
-// // // Want the height and time of last COMMITTED block
-// // heightLastCommitted = b.provider().CurrentHeader.Height
-// // timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
-
-// // // Get ready to update clients.
-// // simibc.BeginBlock(b.provider(), initState.BlockInterval)
-// // simibc.BeginBlock(b.consumer(), initState.BlockInterval)
-
-// // // Update clients to the latest header. Now everything is ready to go!
-// // // Ignore errors for brevity. Everything is checked in Assuptions test.
-// // _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
-// // _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
-
-// // return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
-// // }
package main
+
+import (
+ "encoding/json"
+ "log"
+ "testing"
+ "time"
+
+ abcitypes "github.com/cometbft/cometbft/abci/types"
+ cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
+ cmttypes "github.com/cometbft/cometbft/types"
+ "github.com/cosmos/cosmos-sdk/baseapp"
+ codectypes "github.com/cosmos/cosmos-sdk/codec/types"
+ cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
+ "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
+ sdk "github.com/cosmos/cosmos-sdk/types"
+ icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
+ simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
+
+ authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
+ banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
+ stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
+ consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
+ ccvtypes "github.com/cosmos/interchain-security/v3/x/ccv/types"
+
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
+)
+
+const (
+ INITIAL_ACCOUNT_BALANCE = 1000000000
+
+ // Parameters used in the staking module
+ StakingParamsMaxEntries = 10000
+ StakingParamsMaxValidators = 100
+ StakingParamsUnbondingTime = 5 * 7 * 24 * time.Hour // 5 weeks
+)
+
+// Parameters used by CometBFT
+var (
+ ConsensusParams = cmttypes.DefaultConsensusParams()
+)
+
+func getAppBytesAndSenders(
+ chainID string,
+ app ibctesting.TestingApp,
+ genesis map[string]json.RawMessage,
+ initialValSet *cmttypes.ValidatorSet,
+ // the list of nodes that will be created, even ones that have no voting power initially
+ nodes []*cmttypes.Validator,
+) ([]byte, []ibctesting.SenderAccount) {
+ accounts := []authtypes.GenesisAccount{}
+ balances := []banktypes.Balance{}
+ senderAccounts := []ibctesting.SenderAccount{}
+
+ // Create genesis accounts.
+ for i := 0; i < len(nodes); i++ {
+ pk := secp256k1.GenPrivKey()
+ acc := authtypes.NewBaseAccount(pk.PubKey().Address().Bytes(), pk.PubKey(), uint64(i), 0)
+
+ // Give enough funds for many delegations
+ // Extra units are to delegate to extra validators created later
+ // in order to bond them and still have INITIAL_DELEGATOR_TOKENS remaining
+ bal := banktypes.Balance{
+ Address: acc.GetAddress().String(),
+ Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom,
+ sdk.NewIntFromUint64(INITIAL_ACCOUNT_BALANCE))),
+ }
+
+ accounts = append(accounts, acc)
+ balances = append(balances, bal)
+
+ senderAccount := ibctesting.SenderAccount{
+ SenderAccount: acc,
+ SenderPrivKey: pk,
+ }
+
+ senderAccounts = append(senderAccounts, senderAccount)
+ }
+
+ // set genesis accounts
+ genesisAuth := authtypes.NewGenesisState(authtypes.DefaultParams(), accounts)
+ genesis[authtypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisAuth)
+
+ // create initial validator set and its delegations
+ stakingValidators := make([]stakingtypes.Validator, 0, len(nodes))
+ delegations := make([]stakingtypes.Delegation, 0, len(nodes))
+
+ // Sum bonded is needed for BondedPool account
+ sumBonded := sdk.NewInt(0)
+ initValPowers := []abcitypes.ValidatorUpdate{}
+
+ for i, val := range nodes {
+ _, valSetVal := initialValSet.GetByAddress(val.Address.Bytes())
+ valAccount := accounts[i]
+ if valSetVal == nil {
+ log.Panicf("error getting validator with address %v from valSet %v", val, initialValSet)
+ }
+ tokens := sdk.NewInt(valSetVal.VotingPower)
+ sumBonded = sumBonded.Add(tokens)
+
+ pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
+ if err != nil {
+ log.Panicf("error getting pubkey for val %v", val)
+ }
+ pkAny, err := codectypes.NewAnyWithValue(pk)
+ if err != nil {
+ log.Panicf("error getting pubkeyAny for val %v", val)
+ }
+
+ var valStatus stakingtypes.BondStatus
+ if val.VotingPower > 0 {
+ valStatus = stakingtypes.Bonded
+ } else {
+ valStatus = stakingtypes.Unbonded
+ }
+
+ delShares := sdk.NewDec(tokens.Int64()) // as many shares as tokens
+
+ validator := stakingtypes.Validator{
+ OperatorAddress: sdk.ValAddress(val.Address).String(),
+ ConsensusPubkey: pkAny,
+ Jailed: false,
+ Status: valStatus,
+ Tokens: tokens,
+ DelegatorShares: delShares,
+ Description: stakingtypes.Description{},
+ UnbondingHeight: int64(0),
+ UnbondingTime: time.Unix(0, 0).UTC(),
+ Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
+ MinSelfDelegation: sdk.ZeroInt(),
+ }
+
+ stakingValidators = append(stakingValidators, validator)
+
+ // Store delegation from the model delegator account
+ delegations = append(delegations, stakingtypes.NewDelegation(valAccount.GetAddress(), val.Address.Bytes(), delShares))
+
+ // add initial validator powers so consumer InitGenesis runs correctly
+ pub, _ := val.ToProto()
+ initValPowers = append(initValPowers, abcitypes.ValidatorUpdate{
+ Power: val.VotingPower,
+ PubKey: pub.PubKey,
+ })
+ }
+
+ bondDenom := sdk.DefaultBondDenom
+ genesisStaking := stakingtypes.GenesisState{}
+ genesisConsumer := consumertypes.GenesisState{}
+
+ if genesis[stakingtypes.ModuleName] != nil {
+ // If staking module genesis already exists
+ app.AppCodec().MustUnmarshalJSON(genesis[stakingtypes.ModuleName], &genesisStaking)
+ bondDenom = genesisStaking.Params.BondDenom
+ }
+
+ if genesis[ccvtypes.ModuleName] != nil {
+ app.AppCodec().MustUnmarshalJSON(genesis[ccvtypes.ModuleName], &genesisConsumer)
+ genesisConsumer.Provider.InitialValSet = initValPowers
+ genesisConsumer.Params.Enabled = true
+ genesis[ccvtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisConsumer)
+ }
+
+ // Set model parameters
+ genesisStaking.Params.MaxEntries = StakingParamsMaxEntries
+ genesisStaking.Params.MaxValidators = StakingParamsMaxValidators
+ genesisStaking.Params.UnbondingTime = StakingParamsUnbondingTime
+ genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
+ genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
+
+ // add bonded amount to bonded pool module account
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.BondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(bondDenom, sumBonded)},
+ })
+
+ // add unbonded amount
+ balances = append(balances, banktypes.Balance{
+ Address: authtypes.NewModuleAddress(stakingtypes.NotBondedPoolName).String(),
+ Coins: sdk.Coins{sdk.NewCoin(bondDenom, sdk.ZeroInt())},
+ })
+
+ // update total funds supply
+ genesisBank := banktypes.NewGenesisState(banktypes.DefaultGenesisState().Params, balances, sdk.NewCoins(), []banktypes.Metadata{}, []banktypes.SendEnabled{})
+ genesis[banktypes.ModuleName] = app.AppCodec().MustMarshalJSON(genesisBank)
+
+ stateBytes, err := json.MarshalIndent(genesis, "", " ")
+ if err != nil {
+ log.Panicf("error marshalling genesis: %v", err)
+ }
+
+ return stateBytes, senderAccounts
+}
+
+func newChain(
+ t *testing.T,
+ coord *ibctesting.Coordinator,
+ appInit icstestingutils.AppIniter,
+ chainID string,
+ validators *cmttypes.ValidatorSet,
+ signers map[string]cmttypes.PrivValidator,
+ nodes []*cmttypes.Validator,
+) *ibctesting.TestChain {
+ app, genesis := appInit()
+
+ baseapp.SetChainID(chainID)(app.GetBaseApp())
+
+ stateBytes, senderAccounts := getAppBytesAndSenders(chainID, app, genesis, validators, nodes)
+
+ protoConsParams := ConsensusParams.ToProto()
+ app.InitChain(
+ abcitypes.RequestInitChain{
+ ChainId: chainID,
+ Validators: []abcitypes.ValidatorUpdate{},
+ ConsensusParams: &protoConsParams,
+ AppStateBytes: stateBytes,
+ },
+ )
+
+ app.Commit()
+
+ app.BeginBlock(
+ abcitypes.RequestBeginBlock{
+ Header: cmtproto.Header{
+ ChainID: chainID,
+ Height: app.LastBlockHeight() + 1,
+ AppHash: app.LastCommitID().Hash,
+ ValidatorsHash: validators.Hash(),
+ NextValidatorsHash: validators.Hash(),
+ },
+ },
+ )
+
+ chain := &ibctesting.TestChain{
+ T: t,
+ Coordinator: coord,
+ ChainID: chainID,
+ App: app,
+ CurrentHeader: cmtproto.Header{
+ ChainID: chainID,
+ Height: 1,
+ Time: coord.CurrentTime.UTC(),
+ },
+ QueryServer: app.GetIBCKeeper(),
+ TxConfig: app.GetTxConfig(),
+ Codec: app.AppCodec(),
+ Vals: validators,
+ NextVals: validators,
+ Signers: signers,
+ SenderPrivKey: senderAccounts[0].SenderPrivKey,
+ SenderAccount: senderAccounts[0].SenderAccount,
+ SenderAccounts: senderAccounts,
+ }
+
+ coord.CommitBlock(chain)
+
+ return chain
+}
+
+// Creates a path for cross-chain validation from the consumer to the provider and configures the channel config of the endpoints
+// as well as the clients
+func ConfigureNewPath(consumerChain *ibctesting.TestChain, providerChain *ibctesting.TestChain) *ibctesting.Path {
+ path := ibctesting.NewPath(consumerChain, providerChain)
+ consumerEndPoint := path.EndpointA
+ providerEndPoint := path.EndpointB
+ consumerEndPoint.ChannelConfig.PortID = ccvtypes.ConsumerPortID
+ providerEndPoint.ChannelConfig.PortID = ccvtypes.ProviderPortID
+ consumerEndPoint.ChannelConfig.Version = ccvtypes.Version
+ providerEndPoint.ChannelConfig.Version = ccvtypes.Version
+ consumerEndPoint.ChannelConfig.Order = channeltypes.ORDERED
+ providerEndPoint.ChannelConfig.Order = channeltypes.ORDERED
+
+ // Configure and create the consumer Client
+ tmCfg := providerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
+ tmCfg.UnbondingPeriod = b.initState.UnbondingC
+ tmCfg.TrustingPeriod = b.initState.Trusting
+ err := b.providerEndpoint().CreateClient()
+ b.suite.Require().NoError(err)
+ // Create the Consumer chain ID mapping in the provider state
+ b.providerKeeper().SetConsumerClientId(b.providerCtx(), b.consumer().ChainID, b.providerEndpoint().ClientID)
+
+ return path
+}
+
+func SetupChains(t *testing.T,
+ s *CoreSuite,
+ valSet *cmttypes.ValidatorSet, // the initial validator set
+ signers map[string]cmttypes.PrivValidator, // a map of validator addresses to private validators (signers)
+ nodes []*cmttypes.Validator, // the list of nodes, even ones that have no voting power initially
+ consumers []string, // a list of consumer chain names
+) {
+ initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
+
+ t.Log("Creating coordinator")
+ coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
+
+ // start provider
+ t.Log("Creating provider chain")
+ providerChain := newChain(t, coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
+ coordinator.Chains["provider"] = providerChain
+
+ // start consumer chains
+ for _, chain := range consumers {
+ t.Logf("Creating consumer chain %v", chain)
+ consumerChain := newChain(t, coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
+ coordinator.Chains[chain] = consumerChain
+
+ path := ConfigureNewPath(consumerChain, providerChain)
+ }
+
+ // Create a client for the provider chain to use, using ibc go testing.
+ b.createProvidersLocalClient()
+
+ // Manually create a client for the consumer chain to and bootstrap
+ // via genesis.
+ clientState := b.createConsumersLocalClientGenesis()
+
+ consumerGenesis := b.createConsumerGenesis(clientState)
+
+ b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
+
+ // Client ID is set in InitGenesis and we treat it as a block box. So
+ // must query it to use it with the endpoint.
+ clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
+ b.consumerEndpoint().ClientID = clientID
+
+ // Handshake
+ b.coordinator.CreateConnections(b.path)
+ b.coordinator.CreateChannels(b.path)
+
+ // Usually the consumer sets the channel ID when it receives a first VSC packet
+ // to the provider. For testing purposes, we can set it here. This is because
+ // we model a blank slate: a provider and consumer that have fully established
+ // their channel, and are ready for anything to happen.
+ b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
+
+ // Catch up consumer height to provider height. The provider was one ahead
+ // from committing additional validators.
+ simibc.EndBlock(b.consumer(), func() {})
+
+ simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+ simibc.BeginBlock(b.provider(), initState.BlockInterval)
+
+ // Commit a block on both chains, giving us two committed headers from
+ // the same time and height. This is the starting point for all our
+ // data driven testing.
+ lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
+ lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
+
+ // Want the height and time of last COMMITTED block
+ heightLastCommitted = b.provider().CurrentHeader.Height
+ timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
+
+ // Get ready to update clients.
+ simibc.BeginBlock(b.provider(), initState.BlockInterval)
+ simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+
+ // Update clients to the latest header. Now everything is ready to go!
+ // Ignore errors for brevity. Everything is checked in Assuptions test.
+ _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
+ _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
+
+ return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
+}
From 50231fbf5ff511267d20a267205f8d391f9ead87 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Mon, 6 Nov 2023 09:42:05 +0100
Subject: [PATCH 006/111] Continue chain setup
---
.../core/quint_model/driver/core.go | 109 +++++++-----
.../core/quint_model/driver/mbt_test.go | 45 +++--
.../core/quint_model/driver/setup.go | 165 ++++++++++--------
3 files changed, 189 insertions(+), 130 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 18d37ecd0e..5938b540a5 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -15,94 +15,100 @@ import (
appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
appProvider "github.com/cosmos/interchain-security/v3/app/provider"
+
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
+ providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
)
+// Define a new type for ChainIds to be more explicit
+// about what the string represents.
type ChainId string
-type Params struct {
- VscTimeout time.Duration
- CcvTimeout map[ChainId]time.Duration
+type ModelParams struct {
+ VscTimeout time.Duration
+ CcvTimeout map[ChainId]time.Duration
+ UnbondingPeriodPerChain map[ChainId]time.Duration
}
-type CoreSuite struct {
+type Driver struct {
t *testing.T
+ coordinator *ibctesting.Coordinator
+
// simulate IBC network: for each consumer chain name, we have a path between consumer and provider
- simibcs map[string]*simibc.RelayedPath
+ simibcs map[ChainId]*simibc.RelayedPath
// keep around validators for easy access
valAddresses []sdk.ValAddress
-
- // offsets: the model time and heights start at 0
- // so offsets are needed for comparisons.
- offsetTimeUnix int64
- offsetHeight int64
}
// ctx returns the sdk.Context for the chain
-func (s *CoreSuite) ctx(chain string) sdk.Context {
+func (s *Driver) ctx(chain ChainId) sdk.Context {
return s.chain(chain).GetContext()
}
// returns the path from the given chain to the provider.
-func (s *CoreSuite) path(chain string) *simibc.RelayedPath {
+func (s *Driver) path(chain ChainId) *simibc.RelayedPath {
return s.simibcs[chain]
}
-func (s *CoreSuite) chainID(chain string) string {
- return map[string]string{P: ibctesting.GetChainID(0), C: ibctesting.GetChainID(1)}[chain]
-}
-
// chain returns the TestChain for a given chain identifier
-func (s *CoreSuite) chain(chain string) *ibctesting.TestChain {
- return s.path(chain).Chain(chain)
+func (s *Driver) chain(chain ChainId) *ibctesting.TestChain {
+ return s.path(chain).Chain(string(chain))
}
-func (s *CoreSuite) providerChain() *ibctesting.TestChain {
+func (s *Driver) providerChain() *ibctesting.TestChain {
return s.chain("provider")
}
-func (b *CoreSuite) providerStakingKeeper() stakingkeeper.Keeper {
+func (s *Driver) providerCtx() sdk.Context {
+ return s.providerChain().GetContext()
+}
+
+func (s *Driver) providerKeeper() providerkeeper.Keeper {
+ return s.providerChain().App.(*appProvider.App).ProviderKeeper
+}
+
+func (b *Driver) providerStakingKeeper() stakingkeeper.Keeper {
return *b.providerChain().App.(*appProvider.App).StakingKeeper
}
-func (b *CoreSuite) providerSlashingKeeper() slashingkeeper.Keeper {
+func (b *Driver) providerSlashingKeeper() slashingkeeper.Keeper {
return b.providerChain().App.(*appProvider.App).SlashingKeeper
}
-func (b *CoreSuite) consumerKeeper(chain string) consumerkeeper.Keeper {
+func (b *Driver) consumerKeeper(chain ChainId) consumerkeeper.Keeper {
return b.chain(chain).App.(*appConsumer.App).ConsumerKeeper
}
// height returns the height of the current header of chain
-func (s *CoreSuite) height(chain string) int64 {
+func (s *Driver) height(chain ChainId) int64 {
return s.chain(chain).CurrentHeader.GetHeight()
}
// time returns the time of the current header of chain
-func (s *CoreSuite) time(chain string) time.Time {
+func (s *Driver) time(chain ChainId) time.Time {
return s.chain(chain).CurrentHeader.Time
}
// delegator retrieves the address for the delegator account
-func (s *CoreSuite) delegator() sdk.AccAddress {
+func (s *Driver) delegator() sdk.AccAddress {
return s.providerChain().SenderAccount.GetAddress()
}
// validator returns the address for the validator with id (ix) i
-func (s *CoreSuite) validator(i int64) sdk.ValAddress {
+func (s *Driver) validator(i int64) sdk.ValAddress {
return s.valAddresses[i]
}
// consAddr returns the ConsAdd for the validator with id (ix) i
-func (s *CoreSuite) consAddr(i int64) sdk.ConsAddress {
+func (s *Driver) consAddr(i int64) sdk.ConsAddress {
return sdk.ConsAddress(s.validator(i))
}
// isJailed returns the jail status of validator with id (ix) i
-func (s *CoreSuite) isJailed(i int64) bool {
+func (s *Driver) isJailed(i int64) bool {
val, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
@@ -111,7 +117,7 @@ func (s *CoreSuite) isJailed(i int64) bool {
// consumerPower returns the power on the consumer chain chain for
// validator with id (ix) i
-func (s *CoreSuite) consumerPower(i int64, chain string) (int64, error) {
+func (s *Driver) consumerPower(i int64, chain ChainId) (int64, error) {
v, found := s.consumerKeeper(chain).GetCCValidator(s.ctx(C), s.validator(i))
if !found {
return 0, fmt.Errorf("GetCCValidator(%v) -> !found", s.validator(i))
@@ -121,7 +127,7 @@ func (s *CoreSuite) consumerPower(i int64, chain string) (int64, error) {
// delegation returns the number of delegated tokens in the delegation from
// the delegator account to the validator with id (ix) i
-func (s *CoreSuite) delegation(i int64) int64 {
+func (s *Driver) delegation(i int64) int64 {
d, found := s.providerStakingKeeper().GetDelegation(s.ctx(P), s.delegator(), s.validator(i))
require.True(s.t, found, "GetDelegation(%v) -> !found", s.validator(i))
return d.Shares.TruncateInt64()
@@ -129,7 +135,7 @@ func (s *CoreSuite) delegation(i int64) int64 {
// validatorStatus returns the validator status for validator with id (ix) i
// on the provider chain
-func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
+func (s *Driver) validatorStatus(i int64) stakingtypes.BondStatus {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
return v.GetStatus()
@@ -137,13 +143,13 @@ func (s *CoreSuite) validatorStatus(i int64) stakingtypes.BondStatus {
// providerTokens returns the number of tokens that the validator with
// id (ix) i has delegated to it in total on the provider chain
-func (s *CoreSuite) providerTokens(i int64) int64 {
+func (s *Driver) providerTokens(i int64) int64 {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
return v.Tokens.Int64()
}
-func (s *CoreSuite) validatorSet(chain string) []stakingtypes.Validator {
+func (s *Driver) validatorSet(chain ChainId) []stakingtypes.Validator {
if chain == P {
return s.providerStakingKeeper().GetLastValidators(s.ctx(P))
} else {
@@ -152,14 +158,14 @@ func (s *CoreSuite) validatorSet(chain string) []stakingtypes.Validator {
}
// delegatorBalance returns the balance of the delegator account
-func (s *CoreSuite) delegatorBalance() int64 {
+func (s *Driver) delegatorBalance() int64 {
d := s.delegator()
bal := s.providerChain().App.(*appProvider.App).BankKeeper.GetBalance(s.ctx(P), d, sdk.DefaultBondDenom)
return bal.Amount.Int64()
}
// delegate delegates amt tokens to validator val
-func (s *CoreSuite) delegate(val, amt int64) {
+func (s *Driver) delegate(val, amt int64) {
providerStaking := s.providerStakingKeeper()
server := stakingkeeper.NewMsgServerImpl(&providerStaking)
coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
@@ -172,7 +178,7 @@ func (s *CoreSuite) delegate(val, amt int64) {
}
// undelegate undelegates amt tokens from validator val
-func (s *CoreSuite) undelegate(val, amt int64) {
+func (s *Driver) undelegate(val, amt int64) {
providerStaking := s.providerStakingKeeper()
server := stakingkeeper.NewMsgServerImpl(&providerStaking)
coin := sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(amt))
@@ -186,7 +192,7 @@ func (s *CoreSuite) undelegate(val, amt int64) {
// consumerSlash simulates a slash event occurring on the consumer chain.
// It can be for a downtime or doublesign.
-func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool, chain string) {
+func (s *Driver) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool, chain ChainId) {
kind := stakingtypes.Infraction_INFRACTION_DOUBLE_SIGN
if isDowntime {
kind = stakingtypes.Infraction_INFRACTION_DOWNTIME
@@ -198,29 +204,42 @@ func (s *CoreSuite) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool,
evts := ctx.EventManager().Events()
packets := simibc.ParsePacketsFromEvents(evts[before:])
if len(packets) > 0 {
- s.path(chain).Outboxes.AddPacket(s.chainID(C), packets[0])
+ s.path(chain).Outboxes.AddPacket(C, packets[0])
}
}
-func (s *CoreSuite) updateClient(chain string) {
- s.path(chain).UpdateClient(s.chainID(chain))
+func (s *Driver) updateClient(chain ChainId) {
+ s.path(chain).UpdateClient(string(chain))
}
// deliver numPackets packets from the network to chain
-func (s *CoreSuite) deliver(chain string, numPackets int) {
+func (s *Driver) deliver(chain ChainId, numPackets int) {
// Makes sure client is updated
s.updateClient(chain)
// Deliver any outstanding acks
- s.path(chain).DeliverAcks(s.chainID(chain), 999999)
+ s.path(chain).DeliverAcks(string(chain), 999999)
// Consume deliverable packets from the network
- s.path(chain).DeliverPackets(s.chainID(chain), numPackets)
+ s.path(chain).DeliverPackets(string(chain), numPackets)
}
-func (s *CoreSuite) endAndBeginBlock(chain string, timeAdvancement time.Duration, preCommitCallback func()) {
- s.path(chain).EndAndBeginBlock(s.chainID(chain), timeAdvancement, func() {
+func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration, preCommitCallback func()) {
+ s.path(chain).EndAndBeginBlock(string(chain), timeAdvancement, func() {
})
}
+func newDriver(t *testing.T, valAddresses []sdk.ValAddress) *Driver {
+ t.Log("Creating coordinator")
+ coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
+
+ suite := &Driver{
+ t: t,
+ coordinator: coordinator,
+ simibcs: make(map[ChainId]*simibc.RelayedPath),
+ valAddresses: valAddresses,
+ }
+ return suite
+}
+
// // The state of the data returned is equivalent to the state of two chains
// // after a full handshake, but the precise order of steps used to reach the
// // state does not necessarily mimic the order of steps that happen in a
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 5325a2dc45..53cb7b9a78 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -3,13 +3,12 @@ package main
import (
"log"
"testing"
+ "time"
cmttypes "github.com/cometbft/cometbft/types"
- icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
+ "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/interchain-security/v3/testutil/integration"
"github.com/informalsystems/itf-go/itf"
-
- ibctesting "github.com/cosmos/ibc-go/v7/testing"
)
// Given a map from node names to voting powers, create a validator set with the right voting powers.
@@ -85,7 +84,25 @@ func TestItfTrace(t *testing.T) {
consumers[i] = chain.Value.(string)
}
- t.Log("Consumer chains are: ", consumers)
+ chains := append(consumers, "provider")
+
+ t.Log("Chains are: ", chains)
+
+ // create params struct
+ vscTimeout := time.Duration(params["VscTimeout"].Value.(int64))
+
+ unbondingPeriodPerChain := make(map[ChainId]time.Duration, len(consumers))
+ ccvTimeoutPerChain := make(map[ChainId]time.Duration, len(consumers))
+ for _, consumer := range chains {
+ unbondingPeriodPerChain[ChainId(consumer)] = time.Duration(params["UnbondingPeriodPerChain"].Value.(itf.MapExprType)[consumer].Value.(int64))
+ ccvTimeoutPerChain[ChainId(consumer)] = time.Duration(params["CcvTimeout"].Value.(itf.MapExprType)[consumer].Value.(int64))
+ }
+
+ modelParams := ModelParams{
+ VscTimeout: vscTimeout,
+ CcvTimeout: ccvTimeoutPerChain,
+ UnbondingPeriodPerChain: unbondingPeriodPerChain,
+ }
valExprs := params["Nodes"].Value.(itf.ListExprType)
valNames := make([]string, len(valExprs))
@@ -105,21 +122,15 @@ func TestItfTrace(t *testing.T) {
nodes[i] = addressMap[valName]
}
- t.Log("Creating coordinator")
- coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
-
- // start provider
- t.Log("Creating provider chain")
- providerChain := newChain(t, coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
- coordinator.Chains["provider"] = providerChain
-
- // start consumer chains
- for _, chain := range consumers {
- t.Logf("Creating consumer chain %v", chain)
- consumerChain := newChain(t, coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
- coordinator.Chains[chain] = consumerChain
+ valAddresses := make([]types.ValAddress, len(valNames))
+ for i, valNode := range nodes {
+ pbVal := cmttypes.TM2PB.Validator(valNode)
+ valAddresses[i] = pbVal.Address
}
+ driver := newDriver(t, valAddresses)
+ driver.setupChains(modelParams, valSet, signers, nodes, consumers)
+
t.Log("Started chains")
t.Log("Reading the trace...")
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 4c7ca4ae6a..02341044e0 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -14,8 +14,14 @@ import (
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
sdk "github.com/cosmos/cosmos-sdk/types"
+ clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
+ commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
+ ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
+ "github.com/stretchr/testify/require"
+
+ ccv "github.com/cosmos/interchain-security/v3/x/ccv/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
@@ -252,14 +258,17 @@ func newChain(
SenderAccounts: senderAccounts,
}
- coord.CommitBlock(chain)
+ chain.NextBlock()
return chain
}
// Creates a path for cross-chain validation from the consumer to the provider and configures the channel config of the endpoints
-// as well as the clients
-func ConfigureNewPath(consumerChain *ibctesting.TestChain, providerChain *ibctesting.TestChain) *ibctesting.Path {
+// as well as the clients.
+// this function stops when there is an initialized, ready-to-relay channel between the provider and consumer.
+func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerChain *ibctesting.TestChain, params ModelParams, lastProviderHeader *ibctmtypes.Header) *ibctesting.Path {
+ consumerChainId := ChainId(consumerChain.ChainID)
+
path := ibctesting.NewPath(consumerChain, providerChain)
consumerEndPoint := path.EndpointA
providerEndPoint := path.EndpointB
@@ -270,95 +279,115 @@ func ConfigureNewPath(consumerChain *ibctesting.TestChain, providerChain *ibctes
consumerEndPoint.ChannelConfig.Order = channeltypes.ORDERED
providerEndPoint.ChannelConfig.Order = channeltypes.ORDERED
- // Configure and create the consumer Client
+ // Configure and create the client on the provider
tmCfg := providerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
- tmCfg.UnbondingPeriod = b.initState.UnbondingC
- tmCfg.TrustingPeriod = b.initState.Trusting
- err := b.providerEndpoint().CreateClient()
- b.suite.Require().NoError(err)
- // Create the Consumer chain ID mapping in the provider state
- b.providerKeeper().SetConsumerClientId(b.providerCtx(), b.consumer().ChainID, b.providerEndpoint().ClientID)
-
- return path
-}
+ tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[ChainId(providerChain.ChainID)]
+ err := providerEndPoint.CreateClient()
+ require.NoError(s.t, err, "Error creating client on provider for chain %v", consumerChain.ChainID)
-func SetupChains(t *testing.T,
- s *CoreSuite,
- valSet *cmttypes.ValidatorSet, // the initial validator set
- signers map[string]cmttypes.PrivValidator, // a map of validator addresses to private validators (signers)
- nodes []*cmttypes.Validator, // the list of nodes, even ones that have no voting power initially
- consumers []string, // a list of consumer chain names
-) {
- initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
-
- t.Log("Creating coordinator")
- coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
-
- // start provider
- t.Log("Creating provider chain")
- providerChain := newChain(t, coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
- coordinator.Chains["provider"] = providerChain
-
- // start consumer chains
- for _, chain := range consumers {
- t.Logf("Creating consumer chain %v", chain)
- consumerChain := newChain(t, coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
- coordinator.Chains[chain] = consumerChain
-
- path := ConfigureNewPath(consumerChain, providerChain)
- }
+ // Create the Consumer chain ID mapping in the provider state
+ s.providerKeeper().SetConsumerClientId(providerChain.GetContext(), consumerChain.ChainID, providerEndPoint.ClientID)
- // Create a client for the provider chain to use, using ibc go testing.
- b.createProvidersLocalClient()
+ // Configure and create the client on the consumer
+ tmCfg = consumerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
+ tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[consumerChainId]
- // Manually create a client for the consumer chain to and bootstrap
- // via genesis.
- clientState := b.createConsumersLocalClientGenesis()
+ consumerClientState := ibctmtypes.NewClientState(
+ providerChain.ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
+ providerChain.LastHeader.GetHeight().(clienttypes.Height), commitmenttypes.GetSDKSpecs(),
+ []string{"upgrade", "upgradedIBCState"},
+ )
- consumerGenesis := b.createConsumerGenesis(clientState)
+ consumerGenesis := createConsumerGenesis(params, providerChain, consumerClientState)
- b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
+ s.consumerKeeper(consumerChainId).InitGenesis(s.ctx(consumerChainId), consumerGenesis)
// Client ID is set in InitGenesis and we treat it as a block box. So
// must query it to use it with the endpoint.
- clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
- b.consumerEndpoint().ClientID = clientID
+ clientID, _ := s.consumerKeeper(consumerChainId).GetProviderClientID(s.ctx(consumerChainId))
+ consumerEndPoint.ClientID = clientID
// Handshake
- b.coordinator.CreateConnections(b.path)
- b.coordinator.CreateChannels(b.path)
+ s.coordinator.CreateConnections(path)
+ s.coordinator.CreateChannels(path)
// Usually the consumer sets the channel ID when it receives a first VSC packet
// to the provider. For testing purposes, we can set it here. This is because
// we model a blank slate: a provider and consumer that have fully established
// their channel, and are ready for anything to happen.
- b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
+ s.consumerKeeper(consumerChainId).SetProviderChannel(s.ctx(consumerChainId), consumerEndPoint.ChannelID)
- // Catch up consumer height to provider height. The provider was one ahead
- // from committing additional validators.
- simibc.EndBlock(b.consumer(), func() {})
+ // // Catch up consumer height to provider height. The provider was one ahead TODO: activate this
+ // // from committing additional validators.
+ // simibc.EndBlock(consumerChain, func() {})
- simibc.BeginBlock(b.consumer(), initState.BlockInterval)
- simibc.BeginBlock(b.provider(), initState.BlockInterval)
+ // simibc.BeginBlock(consumerChain, initState.BlockInterval)
+ // simibc.BeginBlock(providerChain, initState.BlockInterval)
// Commit a block on both chains, giving us two committed headers from
// the same time and height. This is the starting point for all our
// data driven testing.
- lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
- lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
-
- // Want the height and time of last COMMITTED block
- heightLastCommitted = b.provider().CurrentHeader.Height
- timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
+ lastConsumerHeader, _ := simibc.EndBlock(consumerChain, func() {})
// Get ready to update clients.
- simibc.BeginBlock(b.provider(), initState.BlockInterval)
- simibc.BeginBlock(b.consumer(), initState.BlockInterval)
+ simibc.BeginBlock(providerChain, 0)
+ simibc.BeginBlock(consumerChain, 0)
+
+ // Update clients to the latest header.
+ err = simibc.UpdateReceiverClient(consumerEndPoint, providerEndPoint, lastConsumerHeader)
+ require.NoError(s.t, err, "Error updating client on consumer for chain %v", consumerChain.ChainID)
+ err = simibc.UpdateReceiverClient(providerEndPoint, consumerEndPoint, lastProviderHeader)
+ require.NoError(s.t, err, "Error updating client on provider for chain %v", consumerChain.ChainID)
- // Update clients to the latest header. Now everything is ready to go!
- // Ignore errors for brevity. Everything is checked in Assuptions test.
- _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
- _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
+ // path is ready to go
+ return path
+}
- return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
+func (s *Driver) setupChains(
+ params ModelParams,
+ valSet *cmttypes.ValidatorSet, // the initial validator set
+ signers map[string]cmttypes.PrivValidator, // a map of validator addresses to private validators (signers)
+ nodes []*cmttypes.Validator, // the list of nodes, even ones that have no voting power initially
+ consumers []string, // a list of consumer chain names
+) {
+ initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
+ // start provider
+ s.t.Log("Creating provider chain")
+ providerChain := newChain(s.t, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
+ s.coordinator.Chains["provider"] = providerChain
+
+ providerHeader, _ := simibc.EndBlock(providerChain, func() {})
+
+ // start consumer chains
+ for _, chain := range consumers {
+ s.t.Logf("Creating consumer chain %v", chain)
+ consumerChain := newChain(s.t, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
+ s.coordinator.Chains[chain] = consumerChain
+
+ path := s.ConfigureNewPath(consumerChain, providerChain, params, providerHeader)
+ relayedPath := simibc.MakeRelayedPath(s.t, path)
+ s.simibcs[ChainId(chain)] = &relayedPath
+ }
+}
+
+func createConsumerGenesis(modelParams ModelParams, providerChain *ibctesting.TestChain, consumerClientState *ibctmtypes.ClientState) *consumertypes.GenesisState {
+ providerConsState := providerChain.LastHeader.ConsensusState()
+
+ valUpdates := cmttypes.TM2PB.ValidatorUpdates(providerChain.Vals)
+ params := ccv.NewParams(
+ true,
+ 1000, // ignore distribution
+ "", // ignore distribution
+ "", // ignore distribution
+ ccv.DefaultCCVTimeoutPeriod,
+ ccv.DefaultTransferTimeoutPeriod,
+ ccv.DefaultConsumerRedistributeFrac,
+ ccv.DefaultHistoricalEntries,
+ consumerClientState.UnbondingPeriod,
+ "0", // disable soft opt-out
+ []string{},
+ []string{},
+ ccv.DefaultRetryDelayPeriod,
+ )
+ return consumertypes.NewInitialGenesisState(consumerClientState, providerConsState, valUpdates, params)
}
From 2d29208be301d2e0e2cad72d8d4e6b74955d8e66 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Mon, 6 Nov 2023 13:57:35 +0100
Subject: [PATCH 007/111] Add trusting period
---
tests/difference/core/quint_model/ccv.qnt | 5 +
.../difference/core/quint_model/ccv_model.qnt | 5 +-
.../core/quint_model/driver/core.go | 132 +--
.../core/quint_model/driver/mbt_test.go | 31 +-
.../core/quint_model/driver/setup.go | 29 +-
.../core/quint_model/driver/trace.json | 916 ++++++++----------
6 files changed, 501 insertions(+), 617 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 0e07b4476c..b89331da33 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -235,6 +235,11 @@ module ccv {
// The timeoutTimestamp for sent packets. Can differ by chain.
const CcvTimeout: Chain -> int
+ // The trusting period on each chain.
+ // If headers on a channel between two chains are not updated within this period,
+ // they expire and the channel will be closed.
+ const TrustingPeriodPerChain: Chain -> int // TODO: USE THIS!
+
// ===================
// PROTOCOL LOGIC contains the meat of the protocol
// functions here roughly correspond to API calls that can be triggered from external sources
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 500246bd6b..813450301a 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -8,17 +8,19 @@ module ccv_model {
pure val consumerChains = Set("consumer1", "consumer2", "consumer3")
pure val chains = consumerChains.union(Set(PROVIDER_CHAIN))
pure val unbondingPeriods = chains.mapBy(chain => 2 * Week)
+ pure val trustingPeriods = chains.mapBy(chain => 1 * Week)
pure val ccvTimeouts = chains.mapBy(chain => 3 * Week)
pure val nodes = Set("node1", "node2", "node3", "node4", "node5", "node6", "node7", "node8", "node9", "node10")
pure val InitialValidatorSet = nodes.mapBy(node => 100)
- import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains).* from "./ccv"
+ import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains, TrustingPeriodPerChain = trustingPeriods).* from "./ccv"
type Parameters = {
VscTimeout: Time,
CcvTimeout: Chain -> Time,
UnbondingPeriodPerChain: Chain -> Time,
+ TrustingPeriodPerChain: Chain -> Time, // TODO: integrate trusting period in logic
ConsumerChains: Set[Chain],
Nodes: Set[Node],
InitialValidatorSet: Node -> int,
@@ -143,6 +145,7 @@ module ccv_model {
ConsumerChains: ConsumerChains,
Nodes: nodes,
InitialValidatorSet: InitialValidatorSet,
+ TrustingPeriodPerChain: TrustingPeriodPerChain,
}
}
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 5938b540a5..7890913ab3 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -2,6 +2,7 @@ package main
import (
"fmt"
+ "strings"
"testing"
"time"
@@ -29,6 +30,7 @@ type ModelParams struct {
VscTimeout time.Duration
CcvTimeout map[ChainId]time.Duration
UnbondingPeriodPerChain map[ChainId]time.Duration
+ TrustingPeriodPerChain map[ChainId]time.Duration
}
type Driver struct {
@@ -55,7 +57,7 @@ func (s *Driver) path(chain ChainId) *simibc.RelayedPath {
// chain returns the TestChain for a given chain identifier
func (s *Driver) chain(chain ChainId) *ibctesting.TestChain {
- return s.path(chain).Chain(string(chain))
+ return s.coordinator.GetChain(string(chain))
}
func (s *Driver) providerChain() *ibctesting.TestChain {
@@ -151,9 +153,9 @@ func (s *Driver) providerTokens(i int64) int64 {
func (s *Driver) validatorSet(chain ChainId) []stakingtypes.Validator {
if chain == P {
- return s.providerStakingKeeper().GetLastValidators(s.ctx(P))
+ return s.providerStakingKeeper().GetAllValidators(s.ctx(P))
} else {
- return s.consumerKeeper(chain).GetAllValidators(s.ctx(C))
+ return s.consumerKeeper(chain).GetAllValidators(s.ctx(chain))
}
}
@@ -222,6 +224,50 @@ func (s *Driver) deliver(chain ChainId, numPackets int) {
s.path(chain).DeliverPackets(string(chain), numPackets)
}
+func (s *Driver) getStateString() string {
+ var state strings.Builder
+
+ state.WriteString("Provider\n")
+ state.WriteString(s.getChainStateString("provider"))
+ state.WriteString("\n")
+
+ for chain := range s.simibcs {
+ state.WriteString(fmt.Sprintf("Chain %s\n", chain))
+ state.WriteString(s.getChainStateString(chain))
+ state.WriteString("\n")
+ }
+
+ return state.String()
+}
+
+func (s *Driver) getChainStateString(chain ChainId) string {
+ ctx := s.ctx(chain)
+
+ // Get the current block height
+ height := ctx.BlockHeight()
+
+ // Get the current block time
+ blockTime := ctx.BlockTime()
+
+ // Get the validator set for the current block
+ validatorSet := s.validatorSet(chain)
+
+ // Build the chain info string
+ var chainInfo strings.Builder
+ chainInfo.WriteString(fmt.Sprintf(" Height: %d\n", height))
+ chainInfo.WriteString(fmt.Sprintf(" Time: %s\n", blockTime))
+
+ // Build the validator info string
+ var validatorInfo strings.Builder
+ for _, validator := range validatorSet {
+ validatorInfo.WriteString(fmt.Sprintf(" Validator %s: power=%d\n", validator.GetOperator().String(), validator.BondedTokens()))
+ }
+
+ chainInfo.WriteString(validatorInfo.String())
+
+ return chainInfo.String()
+}
+
func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration, preCommitCallback func()) {
s.path(chain).EndAndBeginBlock(string(chain), timeAdvancement, func() {
})
@@ -239,83 +285,3 @@ func newDriver(t *testing.T, valAddresses []sdk.ValAddress) *Driver {
}
return suite
}
-
-// // The state of the data returned is equivalent to the state of two chains
-// // after a full handshake, but the precise order of steps used to reach the
-// // state does not necessarily mimic the order of steps that happen in a
-// // live scenario.
-// func GetZeroState(
-// suite *suite.Suite,
-// initState InitState,
-// ) (path *ibctesting.Path, addrs []sdk.ValAddress, heightLastCommitted, timeLastCommitted int64) {
-// b := Builder{initState: initState, suite: suite}
-
-// b.createProviderAndConsumer()
-
-// b.setProviderParams()
-
-// // This is the simplest way to initialize the slash meter
-// // after a change to the param value.
-// b.providerKeeper().InitializeSlashMeter(b.providerCtx())
-
-// b.addExtraProviderValidators()
-
-// // Commit the additional validators
-// b.coordinator.CommitBlock(b.provider())
-
-// b.configurePath()
-
-// // Create a client for the provider chain to use, using ibc go testing.
-// b.createProvidersLocalClient()
-
-// // Manually create a client for the consumer chain to and bootstrap
-// // via genesis.
-// clientState := b.createConsumersLocalClientGenesis()
-
-// consumerGenesis := b.createConsumerGenesis(clientState)
-
-// b.consumerKeeper().InitGenesis(b.consumerCtx(), consumerGenesis)
-
-// // Client ID is set in InitGenesis and we treat it as a block box. So
-// // must query it to use it with the endpoint.
-// clientID, _ := b.consumerKeeper().GetProviderClientID(b.consumerCtx())
-// b.consumerEndpoint().ClientID = clientID
-
-// // Handshake
-// b.coordinator.CreateConnections(b.path)
-// b.coordinator.CreateChannels(b.path)
-
-// // Usually the consumer sets the channel ID when it receives a first VSC packet
-// // to the provider. For testing purposes, we can set it here. This is because
-// // we model a blank slate: a provider and consumer that have fully established
-// // their channel, and are ready for anything to happen.
-// b.consumerKeeper().SetProviderChannel(b.consumerCtx(), b.consumerEndpoint().ChannelID)
-
-// // Catch up consumer height to provider height. The provider was one ahead
-// // from committing additional validators.
-// simibc.EndBlock(b.consumer(), func() {})
-
-// simibc.BeginBlock(b.consumer(), initState.BlockInterval)
-// simibc.BeginBlock(b.provider(), initState.BlockInterval)
-
-// // Commit a block on both chains, giving us two committed headers from
-// // the same time and height. This is the starting point for all our
-// // data driven testing.
-// lastProviderHeader, _ := simibc.EndBlock(b.provider(), func() {})
-// lastConsumerHeader, _ := simibc.EndBlock(b.consumer(), func() {})
-
-// // Want the height and time of last COMMITTED block
-// heightLastCommitted = b.provider().CurrentHeader.Height
-// timeLastCommitted = b.provider().CurrentHeader.Time.Unix()
-
-// // Get ready to update clients.
-// simibc.BeginBlock(b.provider(), initState.BlockInterval)
-// simibc.BeginBlock(b.consumer(), initState.BlockInterval)
-
-// // Update clients to the latest header. Now everything is ready to go!
-// // Ignore errors for brevity. Everything is checked in Assuptions test.
-// _ = simibc.UpdateReceiverClient(b.consumerEndpoint(), b.providerEndpoint(), lastConsumerHeader)
-// _ = simibc.UpdateReceiverClient(b.providerEndpoint(), b.consumerEndpoint(), lastProviderHeader)
-
-// return b.path, b.valAddresses, heightLastCommitted, timeLastCommitted
-// }
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 53cb7b9a78..f480d45048 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -9,6 +9,7 @@ import (
"github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/interchain-security/v3/testutil/integration"
"github.com/informalsystems/itf-go/itf"
+ "github.com/stretchr/testify/require"
)
// Given a map from node names to voting powers, create a validator set with the right voting powers.
@@ -61,11 +62,21 @@ func TestItfTrace(t *testing.T) {
log.Fatalf("Error loading trace file: %s", err)
}
- if trace.Vars[0] != "currentState" ||
- trace.Vars[1] != "params" ||
- trace.Vars[2] != "trace" {
- t.Fatalf("Error loading trace file %s: Variables should be currentState, params, trace but are %s",
- path, trace.Vars)
+ expectedVarNames := []string{"currentState", "params", "trace"}
+
+ varNames := make(map[string]bool, len(expectedVarNames))
+ // populate the set
+ for _, varName := range trace.Vars {
+ varNames[varName] = true
+ }
+
+ // sanity check: there are as many var names as we expect
+ require.Equal(t, len(expectedVarNames), len(varNames), "Expected %v var names, got %v", expectedVarNames, varNames)
+
+ // sanity check: each expected var name should be in the set
+ for _, expectedVarName := range expectedVarNames {
+ _, ok := varNames[expectedVarName]
+ require.True(t, ok, "Expected var name %v not found in actual var names %v", expectedVarName, varNames)
}
t.Log("Reading params...")
@@ -92,16 +103,19 @@ func TestItfTrace(t *testing.T) {
vscTimeout := time.Duration(params["VscTimeout"].Value.(int64))
unbondingPeriodPerChain := make(map[ChainId]time.Duration, len(consumers))
+ trustingPeriodPerChain := make(map[ChainId]time.Duration, len(consumers))
ccvTimeoutPerChain := make(map[ChainId]time.Duration, len(consumers))
for _, consumer := range chains {
- unbondingPeriodPerChain[ChainId(consumer)] = time.Duration(params["UnbondingPeriodPerChain"].Value.(itf.MapExprType)[consumer].Value.(int64))
- ccvTimeoutPerChain[ChainId(consumer)] = time.Duration(params["CcvTimeout"].Value.(itf.MapExprType)[consumer].Value.(int64))
+ unbondingPeriodPerChain[ChainId(consumer)] = time.Duration(params["UnbondingPeriodPerChain"].Value.(itf.MapExprType)[consumer].Value.(int64)) * time.Second
+ trustingPeriodPerChain[ChainId(consumer)] = time.Duration(params["TrustingPeriodPerChain"].Value.(itf.MapExprType)[consumer].Value.(int64)) * time.Second
+ ccvTimeoutPerChain[ChainId(consumer)] = time.Duration(params["CcvTimeout"].Value.(itf.MapExprType)[consumer].Value.(int64)) * time.Second
}
modelParams := ModelParams{
VscTimeout: vscTimeout,
CcvTimeout: ccvTimeoutPerChain,
UnbondingPeriodPerChain: unbondingPeriodPerChain,
+ TrustingPeriodPerChain: trustingPeriodPerChain,
}
valExprs := params["Nodes"].Value.(itf.ListExprType)
@@ -146,7 +160,8 @@ func TestItfTrace(t *testing.T) {
actionKind := lastAction["kind"].Value.(string)
switch actionKind {
case "init":
- // start the chain(s)
+ t.Log("Initializing...")
+ t.Logf(driver.getStateString())
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
newVotingPower := lastAction["newVotingPower"].Value.(int64)
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 02341044e0..9667fb221f 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -39,7 +39,6 @@ const (
// Parameters used in the staking module
StakingParamsMaxEntries = 10000
StakingParamsMaxValidators = 100
- StakingParamsUnbondingTime = 5 * 7 * 24 * time.Hour // 5 weeks
)
// Parameters used by CometBFT
@@ -49,6 +48,7 @@ var (
func getAppBytesAndSenders(
chainID string,
+ modelParams ModelParams,
app ibctesting.TestingApp,
genesis map[string]json.RawMessage,
initialValSet *cmttypes.ValidatorSet,
@@ -115,7 +115,7 @@ func getAppBytesAndSenders(
}
var valStatus stakingtypes.BondStatus
- if val.VotingPower > 0 {
+ if tokens.Int64() > 0 {
valStatus = stakingtypes.Bonded
} else {
valStatus = stakingtypes.Unbonded
@@ -145,7 +145,7 @@ func getAppBytesAndSenders(
// add initial validator powers so consumer InitGenesis runs correctly
pub, _ := val.ToProto()
initValPowers = append(initValPowers, abcitypes.ValidatorUpdate{
- Power: val.VotingPower,
+ Power: tokens.Int64(),
PubKey: pub.PubKey,
})
}
@@ -170,7 +170,7 @@ func getAppBytesAndSenders(
// Set model parameters
genesisStaking.Params.MaxEntries = StakingParamsMaxEntries
genesisStaking.Params.MaxValidators = StakingParamsMaxValidators
- genesisStaking.Params.UnbondingTime = StakingParamsUnbondingTime
+ genesisStaking.Params.UnbondingTime = modelParams.UnbondingPeriodPerChain[ChainId(chainID)]
genesisStaking = *stakingtypes.NewGenesisState(genesisStaking.Params, stakingValidators, delegations)
genesis[stakingtypes.ModuleName] = app.AppCodec().MustMarshalJSON(&genesisStaking)
@@ -200,6 +200,7 @@ func getAppBytesAndSenders(
func newChain(
t *testing.T,
+ modelParams ModelParams,
coord *ibctesting.Coordinator,
appInit icstestingutils.AppIniter,
chainID string,
@@ -211,7 +212,7 @@ func newChain(
baseapp.SetChainID(chainID)(app.GetBaseApp())
- stateBytes, senderAccounts := getAppBytesAndSenders(chainID, app, genesis, validators, nodes)
+ stateBytes, senderAccounts := getAppBytesAndSenders(chainID, modelParams, app, genesis, validators, nodes)
protoConsParams := ConsensusParams.ToProto()
app.InitChain(
@@ -282,6 +283,7 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
// Configure and create the client on the provider
tmCfg := providerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[ChainId(providerChain.ChainID)]
+ tmCfg.TrustingPeriod = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)]
err := providerEndPoint.CreateClient()
require.NoError(s.t, err, "Error creating client on provider for chain %v", consumerChain.ChainID)
@@ -291,6 +293,7 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
// Configure and create the client on the consumer
tmCfg = consumerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[consumerChainId]
+ tmCfg.TrustingPeriod = params.TrustingPeriodPerChain[consumerChainId]
consumerClientState := ibctmtypes.NewClientState(
providerChain.ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
@@ -317,17 +320,11 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
// their channel, and are ready for anything to happen.
s.consumerKeeper(consumerChainId).SetProviderChannel(s.ctx(consumerChainId), consumerEndPoint.ChannelID)
- // // Catch up consumer height to provider height. The provider was one ahead TODO: activate this
- // // from committing additional validators.
- // simibc.EndBlock(consumerChain, func() {})
-
- // simibc.BeginBlock(consumerChain, initState.BlockInterval)
- // simibc.BeginBlock(providerChain, initState.BlockInterval)
-
// Commit a block on both chains, giving us two committed headers from
// the same time and height. This is the starting point for all our
// data driven testing.
lastConsumerHeader, _ := simibc.EndBlock(consumerChain, func() {})
+ lastProviderHeader, _ = simibc.EndBlock(providerChain, func() {})
// Get ready to update clients.
simibc.BeginBlock(providerChain, 0)
@@ -353,15 +350,16 @@ func (s *Driver) setupChains(
initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
// start provider
s.t.Log("Creating provider chain")
- providerChain := newChain(s.t, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
+ providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
s.coordinator.Chains["provider"] = providerChain
providerHeader, _ := simibc.EndBlock(providerChain, func() {})
+ simibc.BeginBlock(providerChain, 0)
// start consumer chains
for _, chain := range consumers {
s.t.Logf("Creating consumer chain %v", chain)
- consumerChain := newChain(s.t, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
+ consumerChain := newChain(s.t, params, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
s.coordinator.Chains[chain] = consumerChain
path := s.ConfigureNewPath(consumerChain, providerChain, params, providerHeader)
@@ -389,5 +387,8 @@ func createConsumerGenesis(modelParams ModelParams, providerChain *ibctesting.Te
[]string{},
ccv.DefaultRetryDelayPeriod,
)
+ params.CcvTimeoutPeriod = modelParams.CcvTimeout[ChainId(consumerClientState.ChainId)]
+ params.UnbondingPeriod = modelParams.UnbondingPeriodPerChain[ChainId(consumerClientState.ChainId)]
+
return consumertypes.NewInitialGenesisState(consumerClientState, providerConsState, valUpdates, params)
}
diff --git a/tests/difference/core/quint_model/driver/trace.json b/tests/difference/core/quint_model/driver/trace.json
index a0c80be43e..8433328980 100644
--- a/tests/difference/core/quint_model/driver/trace.json
+++ b/tests/difference/core/quint_model/driver/trace.json
@@ -4,13 +4,13 @@
"format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html",
"source": "ccv_model.qnt",
"status": "ok",
- "description": "Created by Quint on Thu Oct 19 2023 10:50:02 GMT+0200 (Central European Summer Time)",
- "timestamp": 1697705402333
+ "description": "Created by Quint on Mon Nov 06 2023 10:21:20 GMT+0100 (Central European Standard Time)",
+ "timestamp": 1699262480568
},
"vars": [
"currentState",
- "params",
- "trace"
+ "trace",
+ "params"
],
"states": [
{
@@ -313,7 +313,7 @@
[
"node1",
{
- "#bigint": "50"
+ "#bigint": "100"
}
],
[
@@ -386,6 +386,34 @@
"node9"
]
},
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
"UnbondingPeriodPerChain": {
"#map": [
[
@@ -450,68 +478,7 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
@@ -530,68 +497,7 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
@@ -610,68 +516,7 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
@@ -891,15 +736,15 @@
"#map": [
[
"consumer1",
- "running"
+ "not consumer"
],
[
"consumer2",
- "running"
+ "not consumer"
],
[
"consumer3",
- "running"
+ "not consumer"
]
]
},
@@ -1058,6 +903,34 @@
"node9"
]
},
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
"UnbondingPeriodPerChain": {
"#map": [
[
@@ -1111,11 +984,7 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
+ "#set": []
},
"consumersToStop": {
"#set": []
@@ -1223,68 +1092,7 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
@@ -1393,7 +1201,7 @@
[
"node10",
{
- "#bigint": "0"
+ "#bigint": "100"
}
],
[
@@ -1447,7 +1255,7 @@
]
},
"lastTimestamp": {
- "#bigint": "604800"
+ "#bigint": "3024000"
},
"votingPowerHistory": [
{
@@ -1514,6 +1322,70 @@
]
]
},
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
{
"#map": [
[
@@ -1588,7 +1460,7 @@
],
[
"consumer2",
- "running"
+ "not consumer"
],
[
"consumer3",
@@ -1612,7 +1484,7 @@
]
]
},
- "providerValidatorSetChangedInThisBlock": true,
+ "providerValidatorSetChangedInThisBlock": false,
"receivedMaturations": {
"#set": []
},
@@ -1751,6 +1623,34 @@
"node9"
]
},
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
"UnbondingPeriodPerChain": {
"#map": [
[
@@ -1804,11 +1704,7 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
+ "#set": []
},
"consumersToStop": {
"#set": []
@@ -1825,19 +1721,22 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": []
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
+ "kind": "EndAndBeginBlockForProvider",
"newVotingPower": {
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "0"
+ "#bigint": "2419200"
},
- "validator": "node10"
+ "validator": ""
}
]
},
@@ -1933,68 +1832,7 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
@@ -2077,74 +1915,9 @@
]
},
"lastTimestamp": {
- "#bigint": "1"
+ "#bigint": "0"
},
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
+ "votingPowerHistory": []
},
"maturationTimes": {
"#map": []
@@ -2168,13 +1941,13 @@
[
"node10",
{
- "#bigint": "0"
+ "#bigint": "100"
}
],
[
"node2",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2219,12 +1992,76 @@
"#bigint": "100"
}
]
- ]
- },
- "lastTimestamp": {
- "#bigint": "604800"
- },
- "votingPowerHistory": [
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "3024000"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
{
"#map": [
[
@@ -2363,7 +2200,7 @@
],
[
"consumer2",
- "running"
+ "not consumer"
],
[
"consumer3",
@@ -2526,6 +2363,34 @@
"node9"
]
},
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
"UnbondingPeriodPerChain": {
"#map": [
[
@@ -2579,11 +2444,7 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
+ "#set": []
},
"consumersToStop": {
"#set": []
@@ -2600,36 +2461,39 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": []
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
+ "kind": "EndAndBeginBlockForProvider",
"newVotingPower": {
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "0"
+ "#bigint": "2419200"
},
- "validator": "node10"
+ "validator": ""
},
{
- "consumerChain": "consumer3",
+ "consumerChain": "",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForConsumer",
+ "kind": "VotingPowerChange",
"newVotingPower": {
- "#bigint": "0"
+ "#bigint": "50"
},
"timeAdvancement": {
- "#bigint": "1"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node2"
}
]
},
@@ -2725,68 +2589,7 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
@@ -2869,7 +2672,7 @@
]
},
"lastTimestamp": {
- "#bigint": "1"
+ "#bigint": "86400"
},
"votingPowerHistory": [
{
@@ -2960,7 +2763,7 @@
[
"node10",
{
- "#bigint": "0"
+ "#bigint": "100"
}
],
[
@@ -3014,7 +2817,7 @@
]
},
"lastTimestamp": {
- "#bigint": "604800"
+ "#bigint": "3024000"
},
"votingPowerHistory": [
{
@@ -3081,6 +2884,70 @@
]
]
},
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
{
"#map": [
[
@@ -3155,7 +3022,7 @@
],
[
"consumer2",
- "running"
+ "not consumer"
],
[
"consumer3",
@@ -3318,6 +3185,34 @@
"node9"
]
},
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
"UnbondingPeriodPerChain": {
"#map": [
[
@@ -3371,11 +3266,7 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
+ "#set": []
},
"consumersToStop": {
"#set": []
@@ -3392,53 +3283,56 @@
{
"consumerChain": "",
"consumersToStart": {
- "#set": []
+ "#set": [
+ "consumer1",
+ "consumer3"
+ ]
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
+ "kind": "EndAndBeginBlockForProvider",
"newVotingPower": {
"#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "0"
+ "#bigint": "2419200"
},
- "validator": "node10"
+ "validator": ""
},
{
- "consumerChain": "consumer3",
+ "consumerChain": "",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForConsumer",
+ "kind": "VotingPowerChange",
"newVotingPower": {
- "#bigint": "0"
+ "#bigint": "50"
},
"timeAdvancement": {
- "#bigint": "1"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node2"
},
{
- "consumerChain": "",
+ "consumerChain": "consumer3",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
+ "kind": "EndAndBeginBlockForConsumer",
"newVotingPower": {
- "#bigint": "50"
+ "#bigint": "0"
},
"timeAdvancement": {
- "#bigint": "0"
+ "#bigint": "86400"
},
- "validator": "node2"
+ "validator": ""
}
]
}
From 81bcd3b0e2ddf18ffea9234c1d3f75d1cb49ce9c Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 7 Nov 2023 09:39:53 +0100
Subject: [PATCH 008/111] Adjust tests for fee testing
---
Dockerfile.gaia | 2 +-
tests/e2e/actions.go | 69 ++++++++++++++++++------
tests/e2e/steps_start_chains.go | 41 ++------------
tests/e2e/testnet-scripts/start-chain.sh | 1 +
4 files changed, 61 insertions(+), 52 deletions(-)
diff --git a/Dockerfile.gaia b/Dockerfile.gaia
index b9f6ff007f..40dbd98da7 100644
--- a/Dockerfile.gaia
+++ b/Dockerfile.gaia
@@ -29,7 +29,7 @@ RUN if [ -n "${GAIA_TAG}" ]; \
then git checkout "${GAIA_TAG}"; \
# if GAIA_TAG is not set, build the latest tagged version
else \
- git checkout $(git tag | tail -1); \
+ git checkout $(git tag | sort -Vr | head -n1); \
fi
# Also replace sdk version in the go.mod if specified
diff --git a/tests/e2e/actions.go b/tests/e2e/actions.go
index 63070289d6..3bac7cc5c8 100644
--- a/tests/e2e/actions.go
+++ b/tests/e2e/actions.go
@@ -43,7 +43,8 @@ func (tr TestConfig) sendTokens(
tr.validatorConfigs[action.From].DelAddress,
tr.validatorConfigs[action.To].DelAddress,
fmt.Sprint(action.Amount)+`stake`,
-
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.From),
`--node`, tr.getValidatorNode(action.Chain, action.From),
@@ -205,6 +206,9 @@ func (tr TestConfig) submitTextProposal(
`--description`, action.Description,
`--deposit`, fmt.Sprint(action.Deposit)+`stake`,
`--from`, `validator`+fmt.Sprint(action.From),
+ `--gas`, "auto",
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.From),
`--node`, tr.getValidatorNode(action.Chain, action.From),
@@ -274,16 +278,22 @@ func (tr TestConfig) submitConsumerAdditionProposal(
//#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments.
// CONSUMER ADDITION PROPOSAL
- bz, err = exec.Command("docker", "exec", tr.containerConfig.InstanceName, tr.chainConfigs[action.Chain].BinaryName,
+ cmd := exec.Command("docker", "exec", tr.containerConfig.InstanceName, tr.chainConfigs[action.Chain].BinaryName,
"tx", "gov", "submit-legacy-proposal", "consumer-addition", "/temp-proposal.json",
`--from`, `validator`+fmt.Sprint(action.From),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.From),
- `--gas`, `900000`,
+ `--gas`, "auto",
`--node`, tr.getValidatorNode(action.Chain, action.From),
`--keyring-backend`, `test`,
`-y`,
- ).CombinedOutput()
+ )
+
+ log.Println(cmd)
+
+ bz, err = cmd.CombinedOutput()
if err != nil {
log.Fatal(err, "\n", string(bz))
@@ -338,10 +348,12 @@ func (tr TestConfig) submitConsumerRemovalProposal(
"tx", "gov", "submit-legacy-proposal", "consumer-removal",
"/temp-proposal.json",
`--from`, `validator`+fmt.Sprint(action.From),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.From),
`--node`, tr.getValidatorNode(action.Chain, action.From),
- `--gas`, "900000",
+ `--gas`, "auto",
`--keyring-backend`, `test`,
`-y`,
).CombinedOutput()
@@ -414,10 +426,12 @@ func (tr TestConfig) submitParamChangeProposal(
"tx", "gov", "submit-legacy-proposal", "param-change", "/params-proposal.json",
`--from`, `validator`+fmt.Sprint(action.From),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.From),
`--node`, tr.getValidatorNode(action.Chain, action.From),
- `--gas`, "900000",
+ `--gas`, "auto",
`--keyring-backend`, `test`,
`-y`,
)
@@ -490,7 +504,9 @@ func (tr TestConfig) submitEquivocationProposal(action submitEquivocationProposa
`--chain-id`, string(providerChain.ChainId),
`--home`, tr.getValidatorHome(providerChain.ChainId, action.From),
`--node`, tr.getValidatorNode(providerChain.ChainId, action.From),
- `--gas`, "9000000",
+ `--gas`, "auto",
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--keyring-backend`, `test`,
`-y`,
).CombinedOutput()
@@ -527,11 +543,13 @@ func (tr *TestConfig) voteGovProposal(
fmt.Sprint(action.PropNumber), vote,
`--from`, `validator`+fmt.Sprint(val),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, val),
`--node`, tr.getValidatorNode(action.Chain, val),
`--keyring-backend`, `test`,
- `--gas`, "900000",
+ `--gas`, "auto",
`-y`,
).CombinedOutput()
if err != nil {
@@ -740,7 +758,7 @@ websocket_addr = "%s"
[chains.gas_price]
denom = "stake"
- price = 0.000
+ price = 0.025
[chains.trust_threshold]
denominator = "3"
@@ -1015,6 +1033,10 @@ func (tr TestConfig) addIbcConnectionHermes(
"--b-client", "07-tendermint-"+fmt.Sprint(action.ClientB),
)
+ if verbose {
+ log.Println("addIbcConnectionHermes cmd: ", cmd.String())
+ }
+
cmdReader, err := cmd.StdoutPipe()
if err != nil {
log.Fatal(err)
@@ -1386,6 +1408,9 @@ func (tr TestConfig) delegateTokens(
fmt.Sprint(action.Amount)+`stake`,
`--from`, `validator`+fmt.Sprint(action.From),
+ `--gas`, "auto",
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.From),
`--node`, tr.getValidatorNode(action.Chain, action.From),
@@ -1430,10 +1455,12 @@ func (tr TestConfig) unbondTokens(
fmt.Sprint(action.Amount)+`stake`,
`--from`, `validator`+fmt.Sprint(action.Sender),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.Sender),
`--node`, tr.getValidatorNode(action.Chain, action.Sender),
- `--gas`, "900000",
+ `--gas`, "auto",
`--keyring-backend`, `test`,
`-y`,
)
@@ -1497,10 +1524,12 @@ func (tr TestConfig) cancelUnbondTokens(
fmt.Sprint(action.Amount)+`stake`,
fmt.Sprint(creationHeight),
`--from`, `validator`+fmt.Sprint(action.Delegator),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.Delegator),
`--node`, tr.getValidatorNode(action.Chain, action.Delegator),
- `--gas`, "900000",
+ `--gas`, "auto",
`--keyring-backend`, `test`,
`-o`, `json`,
`-y`,
@@ -1550,11 +1579,13 @@ func (tr TestConfig) redelegateTokens(action redelegateTokensAction, verbose boo
redelegateDst,
fmt.Sprint(action.Amount)+`stake`,
`--from`, `validator`+fmt.Sprint(action.TxSender),
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, action.TxSender),
`--node`, tr.getValidatorNode(action.Chain, action.TxSender),
// Need to manually set gas limit past default (200000), since redelegate has a lot of operations
- `--gas`, "900000",
+ `--gas`, "auto",
`--keyring-backend`, `test`,
`-y`,
)
@@ -1680,7 +1711,9 @@ func (tr TestConfig) unjailValidator(action unjailValidatorAction, verbose bool)
`--chain-id`, string(tr.chainConfigs[action.Provider].ChainId),
`--home`, tr.getValidatorHome(action.Provider, action.Validator),
`--node`, tr.getValidatorNode(action.Provider, action.Validator),
- `--gas`, "900000",
+ `--gas`, "auto",
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--keyring-backend`, `test`,
`-y`,
)
@@ -1738,6 +1771,9 @@ func (tr TestConfig) registerRepresentative(
`--commission-max-change-rate`, "0.01",
`--min-self-delegation`, "1",
`--from`, `validator`+fmt.Sprint(val),
+ `--gas`, "auto",
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--chain-id`, string(tr.chainConfigs[action.Chain].ChainId),
`--home`, tr.getValidatorHome(action.Chain, val),
`--node`, tr.getValidatorNode(action.Chain, val),
@@ -1802,7 +1838,9 @@ func (tr TestConfig) submitChangeRewardDenomsProposal(action submitChangeRewardD
`--chain-id`, string(providerChain.ChainId),
`--home`, tr.getValidatorHome(providerChain.ChainId, action.From),
`--node`, tr.getValidatorNode(providerChain.ChainId, action.From),
- `--gas`, "9000000",
+ `--gas`, "auto",
+ `--gas-prices`, `0.0025stake`,
+ `--gas-adjustment`, `1.5`,
`--keyring-backend`, `test`,
`-y`,
).CombinedOutput()
@@ -1955,7 +1993,7 @@ func (tr TestConfig) assignConsumerPubKey(action assignConsumerPubKeyAction, ver
gas = "9000000"
}
assignKey := fmt.Sprintf(
- `%s tx provider assign-consensus-key %s '%s' --from validator%s --chain-id %s --home %s --node %s --gas %s --keyring-backend test -y -o json`,
+ `%s tx provider assign-consensus-key %s '%s' --from validator%s --chain-id %s --home %s --node %s --gas %s --gas-prices %s --gas-adjustment 1.5 --keyring-backend test -y -o json`,
tr.chainConfigs[ChainID("provi")].BinaryName,
string(tr.chainConfigs[action.Chain].ChainId),
action.ConsumerPubkey,
@@ -1964,6 +2002,7 @@ func (tr TestConfig) assignConsumerPubKey(action assignConsumerPubKeyAction, ver
tr.getValidatorHome(ChainID("provi"), action.Validator),
tr.getValidatorNode(ChainID("provi"), action.Validator),
gas,
+ `0.0025stake`,
)
//#nosec G204 -- Bypass linter warning for spawning subprocess with cmd arguments.
diff --git a/tests/e2e/steps_start_chains.go b/tests/e2e/steps_start_chains.go
index ace3d6c255..6d929fc8be 100644
--- a/tests/e2e/steps_start_chains.go
+++ b/tests/e2e/steps_start_chains.go
@@ -10,20 +10,12 @@ func stepStartProviderChain() []Step {
Action: StartChainAction{
Chain: ChainID("provi"),
Validators: []StartChainValidator{
- {Id: ValidatorID("bob"), Stake: 500000000, Allocation: 10000000000},
- {Id: ValidatorID("alice"), Stake: 500000000, Allocation: 10000000000},
- {Id: ValidatorID("carol"), Stake: 500000000, Allocation: 10000000000},
- },
- },
- State: State{
- ChainID("provi"): ChainState{
- ValBalances: &map[ValidatorID]uint{
- ValidatorID("alice"): 9500000000,
- ValidatorID("bob"): 9500000000,
- ValidatorID("carol"): 9500000000,
- },
+ {Id: ValidatorID("bob"), Stake: 500000000, Allocation: 1000000000000000},
+ {Id: ValidatorID("alice"), Stake: 500000000, Allocation: 1000000000000000},
+ {Id: ValidatorID("carol"), Stake: 500000000, Allocation: 1000000000000000},
},
},
+ State: State{},
},
}
}
@@ -41,10 +33,6 @@ func stepsStartConsumerChain(consumerName string, proposalIndex, chainIndex uint
},
State: State{
ChainID("provi"): ChainState{
- ValBalances: &map[ValidatorID]uint{
- ValidatorID("alice"): 9489999999,
- ValidatorID("bob"): 9500000000,
- },
Proposals: &map[uint]Proposal{
proposalIndex: ConsumerAdditionProposal{
Deposit: 10000001,
@@ -133,10 +121,6 @@ func stepsStartConsumerChain(consumerName string, proposalIndex, chainIndex uint
Status: "PROPOSAL_STATUS_PASSED",
},
},
- ValBalances: &map[ValidatorID]uint{
- ValidatorID("alice"): 9500000000,
- ValidatorID("bob"): 9500000000,
- },
},
},
},
@@ -156,22 +140,7 @@ func stepsStartConsumerChain(consumerName string, proposalIndex, chainIndex uint
// 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"): 9500000000,
- ValidatorID("carol"): 9500000000,
- },
- },
- ChainID(consumerName): ChainState{
- ValBalances: &map[ValidatorID]uint{
- ValidatorID("alice"): 10000000000,
- ValidatorID("bob"): 10000000000,
- ValidatorID("carol"): 10000000000,
- },
- },
- },
+ State: State{},
},
{
Action: addIbcConnectionAction{
diff --git a/tests/e2e/testnet-scripts/start-chain.sh b/tests/e2e/testnet-scripts/start-chain.sh
index 88c8455e51..c2ec92d6b5 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
+ sed -i 's/minimum-gas-prices = "0stake"/minimum-gas-prices = "0.0025stake"/g' $CHAIN_ID/validator$VAL_ID/config/app.toml
done
From eedcf46efce3cd55031efd2a3879057bdcfad409 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 7 Nov 2023 16:36:56 +0100
Subject: [PATCH 009/111] Use correct validators in RequestInitChain
---
tests/difference/core/quint_model/driver/setup.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 9667fb221f..e396e31df7 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -218,7 +218,7 @@ func newChain(
app.InitChain(
abcitypes.RequestInitChain{
ChainId: chainID,
- Validators: []abcitypes.ValidatorUpdate{},
+ Validators: cmttypes.TM2PB.ValidatorUpdates(validators),
ConsensusParams: &protoConsParams,
AppStateBytes: stateBytes,
},
From 1bb6ed078154f3da55b39963035b2e073b7a6187 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 7 Nov 2023 17:11:21 +0100
Subject: [PATCH 010/111] Remove min and max functions
---
tests/difference/core/quint_model/ccv.qnt | 6 +-
.../difference/core/quint_model/ccv_model.qnt | 61 ++++++++++++++++++-
.../quint_model/libraries/extraSpells.qnt | 42 -------------
3 files changed, 63 insertions(+), 46 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index b89331da33..8990c12055 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -478,7 +478,7 @@ module ccv {
}
).toList()
)
- val newConsumerState2 = newConsumerState.with(
+ val newConsumerState2: ConsumerState = newConsumerState.with(
"maturationTimes", newMaturationTimes
).with(
"outstandingPacketsToProvider", newOutstandingPackets
@@ -801,7 +801,9 @@ module ccv {
CcvTimeout.keys().forall(chain => CcvTimeout.get(chain) > 0)
run CcvTimeoutLargerThanUnbondingPeriodTest =
- CcvTimeout.get(PROVIDER_CHAIN) > UnbondingPeriodPerChain.values().max()
+ UnbondingPeriodPerChain.values().forall(
+ value => CcvTimeout.get(PROVIDER_CHAIN) > value
+ )
run ProviderIsNotAConsumerTest =
not(ConsumerChains.contains(PROVIDER_CHAIN))
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 813450301a..2797f169ed 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -205,6 +205,63 @@ module ccv_model {
params' = params,
}
+ // ==================
+ // UTILITY FUNCTIONS
+ // ==================
+
+ pure def earliest(packets: Set[VscPacket]): VscPacket =
+ val latestPossiblePacket: VscPacket = {
+ id: 0,
+ validatorSet: Map(),
+ sendingTime: 9999999999999 * Second,
+ }
+ packets.fold(
+ latestPossiblePacket,
+ (res, pack) => if(res.sendingTime < pack.sendingTime) { res } else { pack }
+ )
+
+ pure def latest(packets: Set[VscPacket]): VscPacket =
+ val earliestPossiblePacket: VscPacket = {
+ id: 0,
+ validatorSet: Map(),
+ sendingTime: -9999999999 * Second,
+ }
+ packets.fold(
+ earliestPossiblePacket,
+ (res, pack) => if(res.sendingTime >= pack.sendingTime) { res } else { pack }
+ )
+
+ // run maxByTest =
+ // all {
+ // assert(maxBy(Set(1, 2, 3), __x => __x) == 3),
+ // assert(maxBy(Set(1, 2, 3), __x => -__x) == 1),
+ // }
+ run earliestLatestTest = {
+ val packet1 = {
+ id: 1,
+ validatorSet: Map(),
+ sendingTime: 1 * Second,
+ }
+
+ val packet2 = {
+ id: 2,
+ validatorSet: Map(),
+ sendingTime: 2 * Second,
+ }
+
+ val packet3 = {
+ id: 3,
+ validatorSet: Map(),
+ sendingTime: 3 * Second,
+ }
+ all {
+ assert(earliest(Set(packet1, packet2, packet3)) == packet1),
+ assert(earliest(Set(packet3, packet2, packet1)) == packet1),
+ assert(latest(Set(packet1, packet2, packet3)) == packet3),
+ assert(latest(Set(packet3, packet2, packet1)) == packet3),
+ }
+ }
+
// ==================
// INVARIANT CHECKS
// ==================
@@ -251,8 +308,8 @@ module ccv_model {
if (commonPackets.size() == 0) {
true // they don't share any packets, so nothing to check
} else {
- val newestCommonPacket = commonPackets.maxBy(packet => packet.sendingTime)
- val oldestCommonPacket = commonPackets.minBy(packet => packet.sendingTime)
+ val newestCommonPacket = commonPackets.latest()
+ val oldestCommonPacket = commonPackets.earliest()
// get all packets sent between the oldest and newest common packet
val packetsBetween1 = packets1.select(
packet => packet.sendingTime >= oldestCommonPacket.sendingTime and packet.sendingTime <= newestCommonPacket.sendingTime
diff --git a/tests/difference/core/quint_model/libraries/extraSpells.qnt b/tests/difference/core/quint_model/libraries/extraSpells.qnt
index cc20c17aef..cfea35de57 100644
--- a/tests/difference/core/quint_model/libraries/extraSpells.qnt
+++ b/tests/difference/core/quint_model/libraries/extraSpells.qnt
@@ -168,46 +168,4 @@ module extraSpells {
assert(values(Map(1 -> 2, 3 -> 4)) == Set(2, 4)),
assert(values(Map()) == Set())
}
-
- // Returns the maximal element of the set.
- // If the set is empty, the function call will fail at runtime.
- pure def max(__set: Set[int]): int = maxBy(__set, __a => __a)
-
- run maxTest =
- all {
- assert(max(Set(1, 2, 3)) == 3),
- }
-
- // Returns the minimal element of the set.
- // If the set is empty, the function call will fail at runtime.
- pure def min(__set: Set[int]): int = minBy(__set, __a => __a)
-
- run minTest =
- all {
- assert(min(Set(1, 2, 3)) == 1),
- }
-
- // Returns the maximum element of a set, according to a given function.
- // If two elements are equally large, an arbitrary one will be returned.
- // If the set is empty, the function call will fail at runtime.
- pure def maxBy(__set: Set[a], __f: a => int): a = {
- __set.fold(
- oneOf(__set),
- (__m, __e) => if(__f(__m) > __f(__e)) {__m } else {__e}
- )
- }
-
- run maxByTest =
- all {
- assert(maxBy(Set(1, 2, 3), __x => __x) == 3),
- assert(maxBy(Set(1, 2, 3), __x => -__x) == 1),
- }
-
- // Like maxBy, but returns the minimum element.
- pure def minBy(__set: Set[a], __f: a => int): a = {
- __set.fold(
- oneOf(__set),
- (__m, __e) => if(__f(__m) < __f(__e)) {__m } else {__e}
- )
- }
}
From 065f458c3307b0904eb2b6b8c6a04e20e7cada36 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 13:16:13 +0100
Subject: [PATCH 011/111] Add type annotations
---
tests/difference/core/quint_model/ccv.qnt | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 8990c12055..43f0920e4d 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -295,7 +295,7 @@ module ccv {
val newProviderState = currentState.providerState.with(
"consumerStatus", newConsumerStatus
)
- val newState = currentState.with(
+ val newState: ProtocolState = currentState.with(
"providerState", newProviderState
)
(Ok(newState), true) // true because the packet timed out
@@ -344,7 +344,7 @@ module ccv {
val newProviderState = currentState.providerState.with(
"consumerStatus", newConsumerStatus
)
- val newState = currentState.with(
+ val newState: ProtocolState = currentState.with(
"providerState", newProviderState
)
(Ok(newState), true) // true because the packet timed out
@@ -415,8 +415,8 @@ module ccv {
tmpState.consumerStates.keys().mapBy(
(consumer) =>
if (consumersToStart.contains(consumer)) {
- val currentConsumerState = tmpState.consumerStates.get(consumer)
- val newConsumerState = currentConsumerState.with(
+ val currentConsumerState: ConsumerState = tmpState.consumerStates.get(consumer)
+ val newConsumerState: ConsumerState = currentConsumerState.with(
"chainState", currentConsumerState.chainState.with(
"currentValidatorSet", providerStateAfterConsumerAdvancement.chainState.currentValidatorSet
)
@@ -459,9 +459,9 @@ module ccv {
// if the chain is not a consumer, return an error
Err("chain is not a consumer")
} else {
- val currentConsumerState = currentState.consumerStates.get(chain)
- val newChainState = currentConsumerState.chainState.endAndBeginBlockShared(timeAdvancement)
- val newConsumerState = currentConsumerState.with(
+ val currentConsumerState: ConsumerState = currentState.consumerStates.get(chain)
+ val newChainState: ChainState = currentConsumerState.chainState.endAndBeginBlockShared(timeAdvancement)
+ val newConsumerState: ConsumerState = currentConsumerState.with(
"chainState", newChainState
)
val maturedPackets = newConsumerState.maturationTimes.keys().filter(
@@ -484,7 +484,7 @@ module ccv {
"outstandingPacketsToProvider", newOutstandingPackets
)
val newConsumerStates = currentState.consumerStates.set(chain, newConsumerState2)
- val newState = currentState.with(
+ val newState: ProtocolState = currentState.with(
"consumerStates", newConsumerStates
)
Ok(newState)
@@ -650,8 +650,8 @@ module ccv {
} else {
// update the running validator set, but not the history yet,
// as that only happens when the next block is started
- val currentConsumerState = currentState.consumerStates.get(receiver)
- val newConsumerState =
+ val currentConsumerState: ConsumerState = currentState.consumerStates.get(receiver)
+ val newConsumerState: ConsumerState =
{
...currentConsumerState,
chainState: currentConsumerState.chainState.with(
@@ -769,7 +769,7 @@ module ccv {
(false, "Consumer is not currently a consumer - must have 'running' status!")
} else {
val providerState = currentState.providerState
- val consumerState = currentState.consumerStates.get(consumer)
+ val consumerState: ConsumerState = currentState.consumerStates.get(consumer)
// has a packet been sent on the provider more than VscTimeout ago, but we have not received an answer since then?
val sentVscPacketsToConsumer = providerState.sentVscPacketsToConsumer.get(consumer)
From b1fde438035f90bf164563ede9bcd7f59a08fbfd Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 13:16:51 +0100
Subject: [PATCH 012/111] Make state printing more robust
---
.../core/quint_model/driver/common.go | 96 ++-----------------
.../core/quint_model/driver/core.go | 68 +++++++++----
.../core/quint_model/driver/mbt_test.go | 21 ++--
.../core/quint_model/driver/setup.go | 25 +++--
4 files changed, 86 insertions(+), 124 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/common.go b/tests/difference/core/quint_model/driver/common.go
index db8f5c3885..a5e0cf8e5c 100644
--- a/tests/difference/core/quint_model/driver/common.go
+++ b/tests/difference/core/quint_model/driver/common.go
@@ -1,96 +1,16 @@
package main
-import (
- "time"
-
- sdk "github.com/cosmos/cosmos-sdk/types"
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
-
- tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
- tmtypes "github.com/cometbft/cometbft/types"
-)
-
const (
P = "provider"
- C = "consumer"
)
-// ValStates represents the total delegation
-// and bond status of a validator
-type ValStates struct {
- Delegation []int
- Tokens []int
- ValidatorExtraTokens []int
- Status []stakingtypes.BondStatus
-}
-
-type InitState struct {
- PKSeeds []string
- NumValidators int
- MaxValidators int
- InitialDelegatorTokens int
- SlashDoublesign sdk.Dec
- SlashDowntime sdk.Dec
- UnbondingP time.Duration
- UnbondingC time.Duration
- Trusting time.Duration
- MaxClockDrift time.Duration
- BlockInterval time.Duration
- ConsensusParams *tmproto.ConsensusParams
- ValStates ValStates
- MaxEntries int
-}
-
-var initStateVar InitState
-
-func init() {
- // tokens === power
- sdk.DefaultPowerReduction = sdk.NewInt(1)
- initStateVar = InitState{
- PKSeeds: []string{
- // Fixed seeds are used to create the private keys for validators.
- // The seeds are chosen to ensure that the resulting validators are
- // sorted in descending order by the staking module.
- "bbaaaababaabbaabababbaabbbbbbaaa",
- "abbbababbbabaaaaabaaabbbbababaab",
- "bbabaabaabbbbbabbbaababbbbabbbbb",
- "aabbbabaaaaababbbabaabaabbbbbbba",
- },
- NumValidators: 4,
- MaxValidators: 2,
- InitialDelegatorTokens: 10000000000000,
- SlashDoublesign: sdk.NewDec(0),
- SlashDowntime: sdk.NewDec(0),
- UnbondingP: time.Second * 70,
- UnbondingC: time.Second * 50,
- Trusting: time.Second * 49,
- MaxClockDrift: time.Second * 10000,
- BlockInterval: time.Second * 6,
- ValStates: ValStates{
- Delegation: []int{4000, 3000, 2000, 1000},
- Tokens: []int{5000, 4000, 3000, 2000},
- ValidatorExtraTokens: []int{1000, 1000, 1000, 1000},
- Status: []stakingtypes.BondStatus{
- stakingtypes.Bonded, stakingtypes.Bonded,
- stakingtypes.Unbonded, stakingtypes.Unbonded,
- },
- },
- MaxEntries: 1000000,
- ConsensusParams: &tmproto.ConsensusParams{
- Block: &tmproto.BlockParams{
- MaxBytes: 9223372036854775807,
- MaxGas: 9223372036854775807,
- },
- Evidence: &tmproto.EvidenceParams{
- MaxAgeNumBlocks: 302400,
- MaxAgeDuration: 504 * time.Hour, // 3 weeks is the max duration
- MaxBytes: 10000,
- },
- Validator: &tmproto.ValidatorParams{
- PubKeyTypes: []string{
- tmtypes.ABCIPubKeyTypeEd25519,
- },
- },
- },
+// getIndexOfString returns the index of the first occurrence of the given string
+// in the given slice, or -1 if the string is not found.
+func getIndexOfString(s string, slice []string) int {
+ for i, v := range slice {
+ if v == s {
+ return i
+ }
}
+ return -1
}
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 7890913ab3..d01ddab4a7 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -20,6 +20,8 @@ import (
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
+
+ cmttypes "github.com/cometbft/cometbft/types"
)
// Define a new type for ChainIds to be more explicit
@@ -42,7 +44,8 @@ type Driver struct {
simibcs map[ChainId]*simibc.RelayedPath
// keep around validators for easy access
- valAddresses []sdk.ValAddress
+ validators []*cmttypes.Validator
+ valNames []string
}
// ctx returns the sdk.Context for the chain
@@ -101,7 +104,7 @@ func (s *Driver) delegator() sdk.AccAddress {
// validator returns the address for the validator with id (ix) i
func (s *Driver) validator(i int64) sdk.ValAddress {
- return s.valAddresses[i]
+ return sdk.ValAddress(s.validators[i].Address)
}
// consAddr returns the ConsAdd for the validator with id (ix) i
@@ -120,13 +123,21 @@ func (s *Driver) isJailed(i int64) bool {
// consumerPower returns the power on the consumer chain chain for
// validator with id (ix) i
func (s *Driver) consumerPower(i int64, chain ChainId) (int64, error) {
- v, found := s.consumerKeeper(chain).GetCCValidator(s.ctx(C), s.validator(i))
+ v, found := s.consumerKeeper(chain).GetCCValidator(s.ctx(chain), s.validator(i))
if !found {
return 0, fmt.Errorf("GetCCValidator(%v) -> !found", s.validator(i))
}
return v.Power, nil
}
+// consumerTokens returns the number of tokens that the validator with
+// id (ix) i has delegated to it in total on the provider chain
+func (s *Driver) providerPower(i int64) int64 {
+ v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
+ require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
+ return v.BondedTokens().Int64()
+}
+
// delegation returns the number of delegated tokens in the delegation from
// the delegator account to the validator with id (ix) i
func (s *Driver) delegation(i int64) int64 {
@@ -147,7 +158,9 @@ func (s *Driver) validatorStatus(i int64) stakingtypes.BondStatus {
// id (ix) i has delegated to it in total on the provider chain
func (s *Driver) providerTokens(i int64) int64 {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
+ if !found {
+ return 0
+ }
return v.Tokens.Int64()
}
@@ -199,14 +212,14 @@ func (s *Driver) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool, ch
if isDowntime {
kind = stakingtypes.Infraction_INFRACTION_DOWNTIME
}
- ctx := s.ctx(C)
+ ctx := s.ctx(chain)
before := len(ctx.EventManager().Events())
s.consumerKeeper(chain).SlashWithInfractionReason(ctx, val, h, 0, sdk.Dec{}, kind)
// consumer module emits packets on slash, so these must be collected.
evts := ctx.EventManager().Events()
packets := simibc.ParsePacketsFromEvents(evts[before:])
if len(packets) > 0 {
- s.path(chain).Outboxes.AddPacket(C, packets[0])
+ s.path(chain).Outboxes.AddPacket(string(chain), packets[0])
}
}
@@ -240,6 +253,10 @@ func (s *Driver) getStateString() string {
return state.String()
}
+func (s *Driver) isProviderChain(chain ChainId) bool {
+ return chain == "provider"
+}
+
func (s *Driver) getChainStateString(chain ChainId) string {
ctx := s.ctx(chain)
@@ -249,18 +266,36 @@ func (s *Driver) getChainStateString(chain ChainId) string {
// Get the current block time
blockTime := ctx.BlockTime()
- // Get the validator set for the current block
- validatorSet := s.validatorSet(chain)
-
// Build the chain info string
var chainInfo strings.Builder
chainInfo.WriteString(fmt.Sprintf(" Height: %d\n", height))
chainInfo.WriteString(fmt.Sprintf(" Time: %s\n", blockTime))
+ if !s.isProviderChain(chain) {
+ // Check whether the chain is in the consumer chains on the provider
+
+ consumerChains := s.providerKeeper().GetAllConsumerChains(s.providerCtx())
+
+ found := false
+ for _, consumerChain := range consumerChains {
+ if consumerChain.ChainId == string(chain) {
+ found = true
+ }
+ }
+
+ if found {
+ chainInfo.WriteString("...is currently a consumer chain")
+ } else {
+ chainInfo.WriteString("...is currently not a consumer chain")
+ }
+ }
+
// Build the validator info string
var validatorInfo strings.Builder
- for _, validator := range validatorSet {
- validatorInfo.WriteString(fmt.Sprintf(" Validator %s: power=%d\n", validator.GetOperator().String(), validator.BondedTokens()))
+ for index, valName := range s.valNames {
+ power := s.providerPower(int64(index))
+
+ validatorInfo.WriteString(fmt.Sprintf(" Validator %s: power=%d\n", valName, power))
}
chainInfo.WriteString(validatorInfo.String())
@@ -273,15 +308,16 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration,
})
}
-func newDriver(t *testing.T, valAddresses []sdk.ValAddress) *Driver {
+func newDriver(t *testing.T, validators []*cmttypes.Validator, valNames []string) *Driver {
t.Log("Creating coordinator")
coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
suite := &Driver{
- t: t,
- coordinator: coordinator,
- simibcs: make(map[ChainId]*simibc.RelayedPath),
- valAddresses: valAddresses,
+ t: t,
+ coordinator: coordinator,
+ simibcs: make(map[ChainId]*simibc.RelayedPath),
+ validators: validators,
+ valNames: valNames,
}
return suite
}
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index f480d45048..ebece67ee6 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -6,7 +6,6 @@ import (
"time"
cmttypes "github.com/cometbft/cometbft/types"
- "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/interchain-security/v3/testutil/integration"
"github.com/informalsystems/itf-go/itf"
"github.com/stretchr/testify/require"
@@ -136,14 +135,8 @@ func TestItfTrace(t *testing.T) {
nodes[i] = addressMap[valName]
}
- valAddresses := make([]types.ValAddress, len(valNames))
- for i, valNode := range nodes {
- pbVal := cmttypes.TM2PB.Validator(valNode)
- valAddresses[i] = pbVal.Address
- }
-
- driver := newDriver(t, valAddresses)
- driver.setupChains(modelParams, valSet, signers, nodes, consumers)
+ driver := newDriver(t, nodes, valNames)
+ driver.setupChains(modelParams, valSet, signers, nodes, valNames, consumers)
t.Log("Started chains")
@@ -161,12 +154,18 @@ func TestItfTrace(t *testing.T) {
switch actionKind {
case "init":
t.Log("Initializing...")
- t.Logf(driver.getStateString())
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
newVotingPower := lastAction["newVotingPower"].Value.(int64)
t.Logf("Setting provider voting power of %v to %v", node, newVotingPower)
+ // valIndex := getIndexOfString(node, valNames)
+
+ // // set the voting power of the validator
+
+ // // get the previous voting power of that validator
+ // prevVotingPower := driver.validato
+
case "EndAndBeginBlockForProvider":
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
consumersToStart := lastAction["consumersToStart"].Value.(itf.ListExprType)
@@ -190,6 +189,8 @@ func TestItfTrace(t *testing.T) {
log.Fatalf("Error loading trace file %s, step %v: do not know action type %s",
path, index, actionKind)
}
+
+ t.Logf("Current actual state: %s", driver.getStateString())
}
t.FailNow()
}
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index e396e31df7..b85b592cb5 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -54,6 +54,7 @@ func getAppBytesAndSenders(
initialValSet *cmttypes.ValidatorSet,
// the list of nodes that will be created, even ones that have no voting power initially
nodes []*cmttypes.Validator,
+ valNames []string,
) ([]byte, []ibctesting.SenderAccount) {
accounts := []authtypes.GenesisAccount{}
balances := []banktypes.Balance{}
@@ -124,13 +125,15 @@ func getAppBytesAndSenders(
delShares := sdk.NewDec(tokens.Int64()) // as many shares as tokens
validator := stakingtypes.Validator{
- OperatorAddress: sdk.ValAddress(val.Address).String(),
- ConsensusPubkey: pkAny,
- Jailed: false,
- Status: valStatus,
- Tokens: tokens,
- DelegatorShares: delShares,
- Description: stakingtypes.Description{},
+ OperatorAddress: sdk.ValAddress(val.Address).String(),
+ ConsensusPubkey: pkAny,
+ Jailed: false,
+ Status: valStatus,
+ Tokens: tokens,
+ DelegatorShares: delShares,
+ Description: stakingtypes.Description{
+ Moniker: valNames[i],
+ },
UnbondingHeight: int64(0),
UnbondingTime: time.Unix(0, 0).UTC(),
Commission: stakingtypes.NewCommission(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()),
@@ -207,12 +210,13 @@ func newChain(
validators *cmttypes.ValidatorSet,
signers map[string]cmttypes.PrivValidator,
nodes []*cmttypes.Validator,
+ valNames []string,
) *ibctesting.TestChain {
app, genesis := appInit()
baseapp.SetChainID(chainID)(app.GetBaseApp())
- stateBytes, senderAccounts := getAppBytesAndSenders(chainID, modelParams, app, genesis, validators, nodes)
+ stateBytes, senderAccounts := getAppBytesAndSenders(chainID, modelParams, app, genesis, validators, nodes, valNames)
protoConsParams := ConsensusParams.ToProto()
app.InitChain(
@@ -345,12 +349,13 @@ func (s *Driver) setupChains(
valSet *cmttypes.ValidatorSet, // the initial validator set
signers map[string]cmttypes.PrivValidator, // a map of validator addresses to private validators (signers)
nodes []*cmttypes.Validator, // the list of nodes, even ones that have no voting power initially
+ valNames []string,
consumers []string, // a list of consumer chain names
) {
initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
// start provider
s.t.Log("Creating provider chain")
- providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes)
+ providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes, valNames)
s.coordinator.Chains["provider"] = providerChain
providerHeader, _ := simibc.EndBlock(providerChain, func() {})
@@ -359,7 +364,7 @@ func (s *Driver) setupChains(
// start consumer chains
for _, chain := range consumers {
s.t.Logf("Creating consumer chain %v", chain)
- consumerChain := newChain(s.t, params, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes)
+ consumerChain := newChain(s.t, params, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes, valNames)
s.coordinator.Chains[chain] = consumerChain
path := s.ConfigureNewPath(consumerChain, providerChain, params, providerHeader)
From 44914e2b89b4c777e97d428e8d1499aa6f600eaf Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 13:36:53 +0100
Subject: [PATCH 013/111] Fix setting default power reduction
---
tests/difference/core/quint_model/driver/common.go | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tests/difference/core/quint_model/driver/common.go b/tests/difference/core/quint_model/driver/common.go
index a5e0cf8e5c..db1557c2d0 100644
--- a/tests/difference/core/quint_model/driver/common.go
+++ b/tests/difference/core/quint_model/driver/common.go
@@ -1,5 +1,9 @@
package main
+import (
+ sdk "github.com/cosmos/cosmos-sdk/types"
+)
+
const (
P = "provider"
)
@@ -14,3 +18,8 @@ func getIndexOfString(s string, slice []string) int {
}
return -1
}
+
+func init() {
+ // tokens === power
+ sdk.DefaultPowerReduction = sdk.NewInt(1)
+}
From e9d7107a44a24fe1ca4ff29d7d6d789245df5b1b Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 14:12:42 +0100
Subject: [PATCH 014/111] Adjust max steps and run all tests
---
tests/difference/core/quint_model/run_invariants.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/difference/core/quint_model/run_invariants.sh b/tests/difference/core/quint_model/run_invariants.sh
index 4c65693cc0..03e63db579 100755
--- a/tests/difference/core/quint_model/run_invariants.sh
+++ b/tests/difference/core/quint_model/run_invariants.sh
@@ -1,4 +1,5 @@
#! /bin/sh
quint test ccv_model.qnt
-quint run --invariant "all{ValidatorUpdatesArePropagatedInv,ValidatorSetHasExistedInv,SameVscPacketsInv,MatureOnTimeInv,EventuallyMatureOnProviderInv}" ccv_model.qnt --max-steps 500 --max-samples 200
\ No newline at end of file
+quint test ccv_test.qnt
+quint run --invariant "all{ValidatorUpdatesArePropagatedInv,ValidatorSetHasExistedInv,SameVscPacketsInv,MatureOnTimeInv,EventuallyMatureOnProviderInv}" ccv_model.qnt --max-steps 200 --max-samples 200
\ No newline at end of file
From b8640d904fad67c1ae41a241ed0823f869cce4b2 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 14:13:07 +0100
Subject: [PATCH 015/111] Change semantics of VotingPowerChange to take change
amount, not new total
---
tests/difference/core/quint_model/ccv.qnt | 11 ++++++-----
tests/difference/core/quint_model/ccv_model.qnt | 16 ++++++++--------
tests/difference/core/quint_model/ccv_test.qnt | 12 ++++++------
3 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 43f0920e4d..4080a6b4d3 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -245,14 +245,15 @@ module ccv {
// functions here roughly correspond to API calls that can be triggered from external sources
// ===================
- // the power of a validator on the provider chain is changed to the given amount. We do not care how this happens,
+ // the power of a validator on the provider chain is changed by the given amount. We do not care how this happens,
// e.g. via undelegations, or delegations, ...
pure def votingPowerChange(currentState: ProtocolState, validator: Node, amount: int): Result = {
- if (amount < 0) {
- Err("Voting power changes must be nonnegative")
+ pure val currentValidatorSet = currentState.providerState.chainState.currentValidatorSet
+ pure val oldVotingPower = if (currentValidatorSet.keys().contains(validator)) currentValidatorSet.get(validator) else 0
+ if (amount == 0) {
+ Err("Voting power cannot change by zero!")
} else {
- pure val currentValidatorSet = currentState.providerState.chainState.currentValidatorSet
- pure val newValidatorSet = currentValidatorSet.put(validator, amount)
+ pure val newValidatorSet = currentValidatorSet.put(validator, oldVotingPower + amount)
// set the validator set changed flag
val newProviderState = currentState.providerState.with(
"providerValidatorSetChangedInThisBlock", true
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 2797f169ed..4539ea4421 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -43,7 +43,7 @@ module ccv_model {
consumersToStart: Set[Chain],
consumersToStop: Set[Chain],
validator: Node,
- newVotingPower: int,
+ changeAmount: int,
}
@@ -64,7 +64,7 @@ module ccv_model {
consumersToStart: Set(),
consumersToStop: Set(),
validator: "",
- newVotingPower: 0,
+ changeAmount: 0,
}
// step allows the most generic nondeterminism, in particular it becomes relatively likely
@@ -149,12 +149,12 @@ module ccv_model {
}
}
- action VotingPowerChange(validator: Node, newVotingPower: int): bool =
- val result = votingPowerChange(currentState, validator, newVotingPower)
+ action VotingPowerChange(validator: Node, changeAmount: int): bool =
+ val result = votingPowerChange(currentState, validator, changeAmount)
all {
result.hasError() == false,
currentState' = result.newState,
- trace' = trace.append(emptyAction.with("kind", "VotingPowerChange").with("validator", validator).with("newVotingPower", newVotingPower)),
+ trace' = trace.append(emptyAction.with("kind", "VotingPowerChange").with("validator", validator).with("changeAmount", changeAmount)),
params' = params,
}
@@ -448,7 +448,7 @@ module ccv_model {
.then(
all {
// the validator set has changed
- assert(currentState.providerState.chainState.currentValidatorSet == InitialValidatorSet.put("node1", 50)),
+ assert(currentState.providerState.chainState.currentValidatorSet == InitialValidatorSet.put("node1", 150)),
// start consumer1
EndAndBeginBlockForProvider(1 * Second, Set("consumer1"), Set())
})
@@ -459,7 +459,7 @@ module ccv_model {
// a packet was sent to consumer1
assert(currentState.providerState.outstandingPacketsToConsumer.get("consumer1").length() == 1),
// the validator set on the provider was entered into the history
- assert(currentState.providerState.chainState.votingPowerHistory == List(InitialValidatorSet.put("node1", 50), InitialValidatorSet)),
+ assert(currentState.providerState.chainState.votingPowerHistory == List(InitialValidatorSet.put("node1", 150), InitialValidatorSet)),
// deliver the packet
DeliverVscPacket("consumer1")
}
@@ -471,7 +471,7 @@ module ccv_model {
// ensure the maturation time was entered on the consumer
assert(currentState.consumerStates.get("consumer1").maturationTimes.keys().size() == 1),
// the validator set was put as the current validator set
- assert(currentState.consumerStates.get("consumer1").chainState.currentValidatorSet == InitialValidatorSet.put("node1", 50)),
+ assert(currentState.consumerStates.get("consumer1").chainState.currentValidatorSet == InitialValidatorSet.put("node1", 150)),
// advance time on provider until the unbonding period is over
EndAndBeginBlockForProvider(UnbondingPeriodPerChain.get("consumer1"), Set(), Set()),
}
diff --git a/tests/difference/core/quint_model/ccv_test.qnt b/tests/difference/core/quint_model/ccv_test.qnt
index 6bbe884d52..56320b12f0 100644
--- a/tests/difference/core/quint_model/ccv_test.qnt
+++ b/tests/difference/core/quint_model/ccv_test.qnt
@@ -13,13 +13,13 @@ module ccv_test {
import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains).* from "./ccv"
- // negative voting powers give an error
- run VotingPowerNegativeTest =
+ // changing voting power by zero gives an error
+ run VotingPowerZeroChangeTest =
{
votingPowerChange(
GetEmptyProtocolState,
"validator",
- -1
+ 0
).hasError()
}
@@ -46,7 +46,7 @@ module ccv_test {
val finalResult = votingPowerChange(
tmpResult.newState,
"validator",
- 0
+ -5
)
not(finalResult.hasError()) and
finalResult.newState.providerState.chainState.currentValidatorSet.get("validator") == 0
@@ -64,7 +64,7 @@ module ccv_test {
val finalResult = votingPowerChange(
tmpResult.newState,
"validator",
- 0
+ -5
)
// still should set the flag
not(finalResult.hasError()) and
@@ -78,7 +78,7 @@ module ccv_test {
val result = votingPowerChange(
GetEmptyProtocolState,
"validator",
- 0
+ 2
)
not(result.hasError()) and
result.newState.providerState.chainState.votingPowerHistory == List()
From a8f45c4b8dc0c0b8c54fe379de1b71dae0024b82 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 18:27:42 +0100
Subject: [PATCH 016/111] Adjust voting power choices to be changes instead of
absolute values
---
tests/difference/core/quint_model/ccv_model.qnt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 4539ea4421..8818163a00 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -88,7 +88,7 @@ module ccv_model {
nondet node = oneOf(nodes)
// very restricted set of voting powers. exact values are not important,
// and this keeps the state space smaller.
- nondet newVotingPower = oneOf(Set(0, 50, 100))
+ nondet newVotingPower = oneOf(Set(-50, 50))
VotingPowerChange(node, newVotingPower),
// try to send a packet. we could filter by chains that can actually send,
From ef7a80e6bfcb5b31ba481383573092358c35800f Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 8 Nov 2023 18:34:19 +0100
Subject: [PATCH 017/111] Start refactoring relaying code
---
.../core/quint_model/driver/core.go | 85 ++++++++++++-
.../core/quint_model/driver/mbt_test.go | 36 +++---
.../core/quint_model/driver/setup.go | 3 +-
testutil/simibc/relayed_path.go | 114 ++++++++++++------
4 files changed, 178 insertions(+), 60 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index d01ddab4a7..f88f68405e 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -55,6 +55,8 @@ func (s *Driver) ctx(chain ChainId) sdk.Context {
// returns the path from the given chain to the provider.
func (s *Driver) path(chain ChainId) *simibc.RelayedPath {
+ if s.isProviderChain(chain) {
+ }
return s.simibcs[chain]
}
@@ -244,6 +246,15 @@ func (s *Driver) getStateString() string {
state.WriteString(s.getChainStateString("provider"))
state.WriteString("\n")
+ state.WriteString("Consumers Chains:\n")
+ consumerChains := s.providerKeeper().GetAllConsumerChains(s.providerCtx())
+ chainIds := make([]string, len(consumerChains))
+ for i, consumerChain := range consumerChains {
+ chainIds[i] = consumerChain.ChainId
+ }
+ state.WriteString(strings.Join(chainIds, ", "))
+ state.WriteString("\n\n")
+
for chain := range s.simibcs {
state.WriteString(fmt.Sprintf("Chain %s\n", chain))
state.WriteString(s.getChainStateString(chain))
@@ -300,14 +311,84 @@ func (s *Driver) getChainStateString(chain ChainId) string {
chainInfo.WriteString(validatorInfo.String())
+ if !s.isProviderChain(chain) {
+ var outboxInfo strings.Builder
+ outboxInfo.WriteString("OutboxPackets:\n")
+
+ outboxInfo.WriteString("OutgoingPackets: \n")
+ outgoing := s.path(chain).Outboxes.OutboxPackets[string(chain)]
+ for _, packet := range outgoing {
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ }
+
+ outboxInfo.WriteString("IncomingPackets: \n")
+ incoming := s.path(chain).Outboxes.OutboxPackets[P]
+ for _, packet := range incoming {
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ }
+
+ outboxInfo.WriteString("utboxAcks:\n")
+
+ outboxInfo.WriteString("OutgoingAcks: \n")
+ outgoingAcks := s.path(chain).Outboxes.OutboxAcks[string(chain)]
+ for _, packet := range outgoingAcks {
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ }
+
+ outboxInfo.WriteString("IncomingAcks: \n")
+ incomingAcks := s.path(chain).Outboxes.OutboxAcks[P]
+ for _, packet := range incomingAcks {
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ }
+
+ chainInfo.WriteString(outboxInfo.String())
+ }
+
return chainInfo.String()
}
+// endAndBeginBlock ends the current block and begins a new one.
+// Before Comitting, it runs the preCommitCallback, which allows
+// checks to be run before the context of the old block is discarded.
+// After comitting, it processes any packets that have been sent by the chain,
+// as witnessed by events, and adds them to the correct paths.
+// It also updates the client header on the paths
+// that involve the chain.
func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration, preCommitCallback func()) {
- s.path(chain).EndAndBeginBlock(string(chain), timeAdvancement, func() {
- })
+ testChain, found := s.coordinator.Chains[string(chain)]
+ require.True(s.t, found, "chain %s not found", chain)
+
+ header, packets := simibc.EndBlock(testChain, preCommitCallback)
+
+ for _, path := range s.simibcs {
+ if path.InvolvesChain(string(chain)) {
+ path.AddClientHeader(string(chain), header)
+ path.Outboxes.Commit(string(chain))
+ }
+ }
+
+ // for each packet, find the path it should be sent on
+ for _, p := range packets {
+ found := false
+ for _, path := range s.simibcs {
+ if path.PacketBelongs(p) {
+ path.Outboxes.AddPacket(string(chain), p)
+ found = true
+ break
+ }
+ }
+ if !found {
+ s.t.Fatal("packet does not belong to any path: ", p)
+ }
+ }
+
+ simibc.BeginBlock(testChain, timeAdvancement)
}
+// newDriver creates a new Driver object.
+// It creates a new coordinator, but does not start any chains.
+// The caller must call setupChains to start the chains and
+// fully populate the Driver.
func newDriver(t *testing.T, validators []*cmttypes.Validator, valNames []string) *Driver {
t.Log("Creating coordinator")
coordinator := ibctesting.NewCoordinator(t, 0) // start without chains, which we add later
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index ebece67ee6..1b9c84d629 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -125,9 +125,6 @@ func TestItfTrace(t *testing.T) {
// dummyValSet is a valSet with the right validators, but not yet right powers
valSet, addressMap, signers := CreateValSet(t, initialValSet)
- t.Log("Initial validator set is: ", valSet)
- t.Log(addressMap)
- t.Log(signers)
// get a slice of validators in the right order
nodes := make([]*cmttypes.Validator, len(valNames))
@@ -156,34 +153,39 @@ func TestItfTrace(t *testing.T) {
t.Log("Initializing...")
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
- newVotingPower := lastAction["newVotingPower"].Value.(int64)
- t.Logf("Setting provider voting power of %v to %v", node, newVotingPower)
-
- // valIndex := getIndexOfString(node, valNames)
-
- // // set the voting power of the validator
-
- // // get the previous voting power of that validator
- // prevVotingPower := driver.validato
-
+ changeAmount := lastAction["changeAmount"].Value.(int64)
+ t.Logf("Setting provider voting power of %v to %v", node, changeAmount)
+
+ valIndex := getIndexOfString(node, valNames)
+
+ if changeAmount > 0 {
+ // delegate to the validator
+ driver.delegate(int64(valIndex), changeAmount)
+ } else {
+ // undelegate from the validator
+ driver.undelegate(int64(valIndex), -changeAmount)
+ }
case "EndAndBeginBlockForProvider":
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
consumersToStart := lastAction["consumersToStart"].Value.(itf.ListExprType)
consumersToStop := lastAction["consumersToStop"].Value.(itf.ListExprType)
- t.Log(timeAdvancement, consumersToStart, consumersToStop)
+ t.Log("EndAndBeginBlockForProvider", timeAdvancement, consumersToStart, consumersToStop)
+
+ driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second, func() {})
case "EndAndBeginBlockForConsumer":
consumerChain := lastAction["consumerChain"].Value.(string)
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
- t.Log(consumerChain, timeAdvancement)
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second, func() {})
+ t.Log("EndAndBeginBlockForConsumer", consumerChain, timeAdvancement)
case "DeliverVscPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
- t.Log(consumerChain)
+ t.Log("DeliverVscPacket", consumerChain)
case "DeliverVscMaturedPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
- t.Log(consumerChain)
+ t.Log("DeliverVscMaturedPacket", consumerChain)
default:
log.Fatalf("Error loading trace file %s, step %v: do not know action type %s",
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index b85b592cb5..76a48ddfd2 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -368,8 +368,7 @@ func (s *Driver) setupChains(
s.coordinator.Chains[chain] = consumerChain
path := s.ConfigureNewPath(consumerChain, providerChain, params, providerHeader)
- relayedPath := simibc.MakeRelayedPath(s.t, path)
- s.simibcs[ChainId(chain)] = &relayedPath
+ s.simibcs[ChainId(chain)] = simibc.MakeRelayedPath(s.t, path)
}
}
diff --git a/testutil/simibc/relayed_path.go b/testutil/simibc/relayed_path.go
index daf32f0c84..8105b7997e 100644
--- a/testutil/simibc/relayed_path.go
+++ b/testutil/simibc/relayed_path.go
@@ -1,9 +1,10 @@
package simibc
import (
+ "bytes"
"testing"
- "time"
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
ibctesting "github.com/cosmos/ibc-go/v7/testing"
)
@@ -16,7 +17,7 @@ import (
// new blocks on each chain.
type RelayedPath struct {
t *testing.T
- path *ibctesting.Path
+ Path *ibctesting.Path
// clientHeaders is a map from chainID to an ordered list of headers that
// have been committed to that chain. The headers are used to update the
// client of the counterparty chain.
@@ -30,28 +31,85 @@ type RelayedPath struct {
// MakeRelayedPath returns an initialized RelayedPath without any
// packets, acks or headers. Requires a fully initialised path where
// the connection and any channel handshakes have been COMPLETED.
-func MakeRelayedPath(t *testing.T, path *ibctesting.Path) RelayedPath {
+func MakeRelayedPath(t *testing.T, path *ibctesting.Path) *RelayedPath {
t.Helper()
- return RelayedPath{
+ return &RelayedPath{
t: t,
clientHeaders: map[string][]*ibctmtypes.Header{},
- path: path,
+ Path: path,
Outboxes: MakeOrderedOutbox(),
}
}
+// PacketBelongs returns true if the packet belongs to this relayed path.
+func (f *RelayedPath) PacketBelongs(packet channeltypes.Packet) bool {
+ return f.PacketSentByA(packet) || f.PacketSentByB(packet)
+}
+
+// PacketSentByA returns true if the given packet was sent by chain A on this path.
+func (f *RelayedPath) PacketSentByA(packet channeltypes.Packet) bool {
+ committedByA := f.Path.EndpointA.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(
+ f.Path.EndpointA.Chain.GetContext(),
+ f.Path.EndpointA.ChannelConfig.PortID,
+ f.Path.EndpointA.ChannelID,
+ packet.GetSequence(),
+ )
+
+ return bytes.Equal(committedByA, channeltypes.CommitPacket(f.Path.EndpointA.Chain.App.AppCodec(), packet))
+}
+
+// PacketSentByB returns true if the given packet was sent by chain B on this path.
+func (f *RelayedPath) PacketSentByB(packet channeltypes.Packet) bool {
+ committedByB := f.Path.EndpointB.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(
+ f.Path.EndpointB.Chain.GetContext(),
+ f.Path.EndpointB.ChannelConfig.PortID,
+ f.Path.EndpointB.ChannelID,
+ packet.GetSequence(),
+ )
+
+ return bytes.Equal(committedByB, channeltypes.CommitPacket(f.Path.EndpointB.Chain.App.AppCodec(), packet))
+}
+
+// AddPacket adds a packet to the outbox of the chain with chainID.
+// It will fail if the chain is not involved in the relayed path,
+// or if the packet does not belong to this path,
+// i.e. if the pace
+func (f *RelayedPath) AddPacket(chainID string, packet channeltypes.Packet) {
+ if !f.InvolvesChain(chainID) {
+ f.t.Fatal("in relayed path could not add packet to chain: ", chainID, " because it is not involved in the relayed path")
+ }
+
+ f.Outboxes.AddPacket(chainID, packet)
+}
+
+// AddClientHeader adds a client header to the chain with chainID.
+// The header is used to update the client of the counterparty chain.
+// It will fail if the chain is not involved in the relayed path.
+func (f *RelayedPath) AddClientHeader(chainID string, header *ibctmtypes.Header) {
+ if !f.InvolvesChain(chainID) {
+ f.t.Fatal("in relayed path could not add client header to chain: ", chainID, " because it is not involved in the relayed path")
+ }
+ f.clientHeaders[chainID] = append(f.clientHeaders[chainID], header)
+}
+
// Chain returns the chain with chainID
func (f *RelayedPath) Chain(chainID string) *ibctesting.TestChain {
- if f.path.EndpointA.Chain.ChainID == chainID {
- return f.path.EndpointA.Chain
+ if f.Path.EndpointA.Chain.ChainID == chainID {
+ return f.Path.EndpointA.Chain
}
- if f.path.EndpointB.Chain.ChainID == chainID {
- return f.path.EndpointB.Chain
+ if f.Path.EndpointB.Chain.ChainID == chainID {
+ return f.Path.EndpointB.Chain
}
f.t.Fatal("no chain found in relayed path with chainID: ", chainID)
return nil
}
+// InvolvesChain returns true if the chain is involved in the relayed path,
+// i.e. if it is either the source or destination chain.
+func (f *RelayedPath) InvolvesChain(chainID string) bool {
+ return f.Path.EndpointA.Chain.ChainID == chainID || f.Path.EndpointB.Chain.ChainID == chainID
+}
+
// UpdateClient updates the chain with the latest sequence
// of available headers committed by the counterparty chain since
// the last call to UpdateClient (or all for the first call).
@@ -106,35 +164,13 @@ func (f *RelayedPath) DeliverAcks(chainID string, num int) {
}
}
-// EndAndBeginBlock calls EndBlock and commits block state, storing the header which can later
-// be used to update the client on the counterparty chain. After committing, the chain local
-// time progresses by dt, and BeginBlock is called with a header timestamped for the new time.
-//
-// preCommitCallback is called after EndBlock and before Commit, allowing arbitrary access to
-// the sdk.Context after EndBlock. The callback is useful for testing purposes to execute
-// arbitrary code before the chain sdk context is cleared in .Commit().
-// For example, app.EndBlock may lead to a new state, which you would like to query
-// to check that it is correct. However, the sdk context is cleared after .Commit(),
-// so you can query the state inside the callback.
-func (f *RelayedPath) EndAndBeginBlock(chainID string, dt time.Duration, preCommitCallback func()) {
- c := f.Chain(chainID)
-
- header, packets := EndBlock(c, preCommitCallback)
- f.clientHeaders[chainID] = append(f.clientHeaders[chainID], header)
- for _, p := range packets {
- f.Outboxes.AddPacket(chainID, p)
- }
- f.Outboxes.Commit(chainID)
- BeginBlock(c, dt)
-}
-
// counterparty is a helper returning the counterparty chainID
func (f *RelayedPath) counterparty(chainID string) string {
- if f.path.EndpointA.Chain.ChainID == chainID {
- return f.path.EndpointB.Chain.ChainID
+ if f.Path.EndpointA.Chain.ChainID == chainID {
+ return f.Path.EndpointB.Chain.ChainID
}
- if f.path.EndpointB.Chain.ChainID == chainID {
- return f.path.EndpointA.Chain.ChainID
+ if f.Path.EndpointB.Chain.ChainID == chainID {
+ return f.Path.EndpointA.Chain.ChainID
}
f.t.Fatal("no chain found in relayed path with chainID: ", chainID)
return ""
@@ -142,11 +178,11 @@ func (f *RelayedPath) counterparty(chainID string) string {
// endpoint is a helper returning the endpoint for the chain
func (f *RelayedPath) endpoint(chainID string) *ibctesting.Endpoint {
- if chainID == f.path.EndpointA.Chain.ChainID {
- return f.path.EndpointA
+ if chainID == f.Path.EndpointA.Chain.ChainID {
+ return f.Path.EndpointA
}
- if chainID == f.path.EndpointB.Chain.ChainID {
- return f.path.EndpointB
+ if chainID == f.Path.EndpointB.Chain.ChainID {
+ return f.Path.EndpointB
}
f.t.Fatal("no chain found in relayed path with chainID: ", chainID)
return nil
From 6336273bd0b14d10ae4c8328c04f2b95bcc226fa Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 10 Nov 2023 09:29:18 +0100
Subject: [PATCH 018/111] Refactor map to list of pairs
---
tests/difference/core/quint_model/ccv.qnt | 35 ++++++++++++-------
.../difference/core/quint_model/ccv_model.qnt | 16 +++++----
2 files changed, 32 insertions(+), 19 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 4080a6b4d3..6e0275abe7 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -104,13 +104,14 @@ module ccv_types {
// the state that each chain needs to store
chainState: ChainState,
- // Stores the maturation times for VscPackets received by this consumer
- maturationTimes: VscPacket -> Time,
-
// stores the received vscpackets in descending order of recency,
// i.e. newest first.
receivedVscPackets: List[VscPacket],
+ // Stores the maturation times for VscPackets received by this consumer
+ // in the same order as they are in the receivedVscPackets.
+ maturationTimes: List[(VscPacket, Time)],
+
// Stores the list of packets that have been sent to the provider chain by this consumer
// and have not been received yet.
// ordered by recency, so the head is the oldest packet.
@@ -122,7 +123,7 @@ module ccv_types {
pure def GetEmptyConsumerState(): ConsumerState =
{
chainState: GetEmptyChainState,
- maturationTimes: Map(),
+ maturationTimes: List(),
outstandingPacketsToProvider: List(),
receivedVscPackets: List(),
}
@@ -465,19 +466,25 @@ module ccv {
val newConsumerState: ConsumerState = currentConsumerState.with(
"chainState", newChainState
)
- val maturedPackets = newConsumerState.maturationTimes.keys().filter(
- packet =>
- val maturationTime = newConsumerState.maturationTimes.get(packet)
+ val maturedPackets = newConsumerState.maturationTimes.select(
+ pair =>
+ val packet = pair._1
+ val maturationTime = pair._2
maturationTime <= newChainState.lastTimestamp
+ ).transform(pair => pair._1)
+ val newMaturationTimes = newConsumerState.maturationTimes.select(
+ pair =>
+ val packet = pair._1
+ val maturationTime = pair._2
+ maturationTime > newChainState.lastTimestamp
)
- val newMaturationTimes = newConsumerState.maturationTimes.mapRemoveAll(maturedPackets)
val newOutstandingPackets = newConsumerState.outstandingPacketsToProvider.concat(
- maturedPackets.map(
+ maturedPackets.transform(
packet => {
id: packet.id,
sendingTime: newConsumerState.chainState.lastTimestamp
}
- ).toList()
+ )
)
val newConsumerState2: ConsumerState = newConsumerState.with(
"maturationTimes", newMaturationTimes
@@ -658,9 +665,11 @@ module ccv {
chainState: currentConsumerState.chainState.with(
"currentValidatorSet", packet.validatorSet
),
- maturationTimes: currentConsumerState.maturationTimes.put(
- packet,
- currentConsumerState.chainState.lastTimestamp + UnbondingPeriodPerChain.get(receiver)
+ maturationTimes: currentConsumerState.maturationTimes.append(
+ (
+ packet,
+ currentConsumerState.chainState.lastTimestamp + UnbondingPeriodPerChain.get(receiver)
+ )
),
receivedVscPackets: currentConsumerState.receivedVscPackets.prepend(packet)
}
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 8818163a00..c253824e43 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -54,7 +54,9 @@ module ccv_model {
// Roughly, 1s for very small advances (like between blocks),
// and then longer values for increasingly severe downtime scenarios.
// Note that these can still be combined, so in effect we can get all time advancements by any amount of seconds.
- pure val timeAdvancements = Set(1 * Second, 1 * Day, 1 * Week, 4 * Week)
+ // These should be smaller than the minimal TrustingPeriodPerChain,
+ // otherwise connections will break down.
+ pure val timeAdvancements = Set(1 * Second, 1 * Day, 1 * Week - 1 * Hour) // 4 * Week)
pure def emptyAction =
{
@@ -260,7 +262,7 @@ module ccv_model {
assert(latest(Set(packet1, packet2, packet3)) == packet3),
assert(latest(Set(packet3, packet2, packet1)) == packet3),
}
- }
+ }
// ==================
// INVARIANT CHECKS
@@ -334,9 +336,11 @@ module ccv_model {
runningConsumers.forall(
consumer => {
val maturationTimes = currentState.consumerStates.get(consumer).maturationTimes
- maturationTimes.keys().forall(
+ maturationTimes.listForAll(
// check that the maturation time is in the future
- packet => maturationTimes.get(packet) >= currentState.consumerStates.get(consumer).chainState.lastTimestamp
+ pair =>
+ val maturationTime = pair._2
+ maturationTime >= currentState.consumerStates.get(consumer).chainState.lastTimestamp
)
}
)
@@ -469,7 +473,7 @@ module ccv_model {
// make sure the packet was removed from the provider
assert(currentState.providerState.outstandingPacketsToConsumer.get("consumer1").length() == 0),
// ensure the maturation time was entered on the consumer
- assert(currentState.consumerStates.get("consumer1").maturationTimes.keys().size() == 1),
+ assert(currentState.consumerStates.get("consumer1").maturationTimes.length() == 1),
// the validator set was put as the current validator set
assert(currentState.consumerStates.get("consumer1").chainState.currentValidatorSet == InitialValidatorSet.put("node1", 150)),
// advance time on provider until the unbonding period is over
@@ -485,7 +489,7 @@ module ccv_model {
// the packet has matured, so it was sent by the consumer
assert(currentState.consumerStates.get("consumer1").outstandingPacketsToProvider.length() == 1),
// it was removed from the maturationTimes
- assert(currentState.consumerStates.get("consumer1").maturationTimes.keys().size() == 0),
+ assert(currentState.consumerStates.get("consumer1").maturationTimes.length() == 0),
// receive the packet on the provider
DeliverVscMaturedPacket("consumer1")
}
From dd9d87838458fc01735ddba76adfec10a1150e9a Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 10 Nov 2023 17:48:43 +0100
Subject: [PATCH 019/111] Add libraries for map rewrite
---
.../quint_model/libraries/extraSpells.qnt | 41 ++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
diff --git a/tests/difference/core/quint_model/libraries/extraSpells.qnt b/tests/difference/core/quint_model/libraries/extraSpells.qnt
index cfea35de57..9167bb4bcb 100644
--- a/tests/difference/core/quint_model/libraries/extraSpells.qnt
+++ b/tests/difference/core/quint_model/libraries/extraSpells.qnt
@@ -168,4 +168,43 @@ module extraSpells {
assert(values(Map(1 -> 2, 3 -> 4)) == Set(2, 4)),
assert(values(Map()) == Set())
}
-}
+
+ //// Returns a new list l, where l[i] = __f(__list[i])
+ ////
+ //// - @param __list a list
+ //// - @param __f a function that is applied to each element of __list
+ ////
+ //// - @returns a set of the elements in __list
+ pure def transform(__list: List[a], __f: a => b): List[b] = {
+ __list.foldl(List(), (__l, __e) => __l.append(__f(__e)))
+ }
+
+ run transformTest =
+ all {
+ assert(transform(List(1, 2, 3), __x => __x + 1) == List(2, 3, 4)),
+ assert(transform(List(), __x => __x + 1) == List()),
+ assert(transform(List(1, 2, 3), __x => __x * 2) == List(2, 4, 6)),
+ assert(transform(List(1, 2, 3), __x => __x) == List(1, 2, 3)),
+ }
+
+
+ // listForAll returns true if the given predicate function returns true for all elements in the given list,
+ // and false otherwise.
+ //
+ // Parameters:
+ // - __list: The list to check.
+ // - __f: The predicate function to apply to each element in the list.
+ //
+ // Returns:
+ // - true if the predicate function returns true for all elements in the list, and false otherwise.
+ pure def listForAll(__list: List[a], __f: a => bool): bool = {
+ __list.foldl(true, (__b, __e) => __b and __f(__e))
+ }
+
+ run listForAllTest =
+ all {
+ assert(listForAll(List(1, 2, 3), __x => __x > 0)),
+ assert(not(listForAll(List(1, 2, 3), __x => __x > 1))),
+ assert(listForAll(List(), __x => __x > 0)),
+ }
+}
\ No newline at end of file
From 61b6a858569858e4bc4c8d94719714bbae37a9cb Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 10 Nov 2023 17:49:05 +0100
Subject: [PATCH 020/111] Start fixing client updates
---
.../core/quint_model/driver/core.go | 38 +-
.../core/quint_model/driver/mbt_test.go | 40 +-
.../core/quint_model/driver/setup.go | 13 +-
.../core/quint_model/driver/trace.json | 4249 ++++++++++++++---
testutil/simibc/chain_util.go | 7 +-
testutil/simibc/relayed_path.go | 53 +-
6 files changed, 3767 insertions(+), 633 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index f88f68405e..b332f1984e 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -55,8 +55,6 @@ func (s *Driver) ctx(chain ChainId) sdk.Context {
// returns the path from the given chain to the provider.
func (s *Driver) path(chain ChainId) *simibc.RelayedPath {
- if s.isProviderChain(chain) {
- }
return s.simibcs[chain]
}
@@ -205,6 +203,7 @@ func (s *Driver) undelegate(val, amt int64) {
_, err := server.Undelegate(sdk.WrapSDKContext(s.ctx(P)), msg)
// There may or may not be an error, depending on the trace
_ = err
+ providerStaking.GetAllDelegations(s.ctx(P))
}
// consumerSlash simulates a slash event occurring on the consumer chain.
@@ -304,7 +303,12 @@ func (s *Driver) getChainStateString(chain ChainId) string {
// Build the validator info string
var validatorInfo strings.Builder
for index, valName := range s.valNames {
- power := s.providerPower(int64(index))
+ var power int64
+ if s.isProviderChain(chain) {
+ power = s.providerPower(int64(index))
+ } else {
+ power, _ = s.consumerPower(int64(index), chain)
+ }
validatorInfo.WriteString(fmt.Sprintf(" Validator %s: power=%d\n", valName, power))
}
@@ -327,7 +331,7 @@ func (s *Driver) getChainStateString(chain ChainId) string {
outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
}
- outboxInfo.WriteString("utboxAcks:\n")
+ outboxInfo.WriteString("OutboxAcks:\n")
outboxInfo.WriteString("OutgoingAcks: \n")
outgoingAcks := s.path(chain).Outboxes.OutboxAcks[string(chain)]
@@ -354,11 +358,11 @@ func (s *Driver) getChainStateString(chain ChainId) string {
// as witnessed by events, and adds them to the correct paths.
// It also updates the client header on the paths
// that involve the chain.
-func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration, preCommitCallback func()) {
+func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration) { //}, preCommitCallback func()) {
testChain, found := s.coordinator.Chains[string(chain)]
require.True(s.t, found, "chain %s not found", chain)
- header, packets := simibc.EndBlock(testChain, preCommitCallback)
+ header, packets := simibc.EndBlock(testChain) //, preCommitCallback)
for _, path := range s.simibcs {
if path.InvolvesChain(string(chain)) {
@@ -371,7 +375,7 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration,
for _, p := range packets {
found := false
for _, path := range s.simibcs {
- if path.PacketBelongs(p) {
+ if path.PacketSentByChain(p, string(chain)) {
path.Outboxes.AddPacket(string(chain), p)
found = true
break
@@ -383,6 +387,26 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration,
}
simibc.BeginBlock(testChain, timeAdvancement)
+
+ for _, path := range s.simibcs {
+ if path.InvolvesChain(string(chain)) {
+ path.UpdateClient(path.Counterparty(string(chain)))
+ }
+ }
+}
+
+// DeliverPacketToConsumer delivers a packet from the provider to the given consumer recipient.
+// It updates the client before delivering the packet.
+// Since the channel is ordered, the packet that is delivered is the first packet in the outbox.
+func (s *Driver) DeliverPacketToConsumer(recipient ChainId) {
+ s.path(recipient).DeliverPackets(string(recipient), 1)
+}
+
+// DeliverPacketFromConsumer delivers a packet from the given consumer sender to the provider.
+// It updates the client before delivering the packet.
+// Since the channel is ordered, the packet that is delivered is the first packet in the outbox.
+func (s *Driver) DeliverPacketFromConsumer(sender ChainId) {
+ s.path(sender).DeliverPackets(P, 1) // deliver to the provider
}
// newDriver creates a new Driver object.
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 1b9c84d629..473b7ca048 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -154,7 +154,7 @@ func TestItfTrace(t *testing.T) {
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
changeAmount := lastAction["changeAmount"].Value.(int64)
- t.Logf("Setting provider voting power of %v to %v", node, changeAmount)
+ t.Logf("Changing provider voting power of %v by %v", node, changeAmount)
valIndex := getIndexOfString(node, valNames)
@@ -171,21 +171,49 @@ func TestItfTrace(t *testing.T) {
consumersToStop := lastAction["consumersToStop"].Value.(itf.ListExprType)
t.Log("EndAndBeginBlockForProvider", timeAdvancement, consumersToStart, consumersToStop)
- driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second, func() {})
+ // TODO continue here
+ totalDuration := time.Duration(timeAdvancement) * time.Second
+ halfDuration := totalDuration / 2
+ halfDuration = halfDuration.Round(time.Second)
+ remainingDuration := totalDuration - halfDuration
+ remainingDuration = remainingDuration.Round(time.Second)
+
+ require.True(t, halfDuration+remainingDuration == totalDuration)
+
+ // TODO: start and stop consumers
+ driver.endAndBeginBlock("provider", time.Duration(1)*time.Second) //, func() {})
+ driver.endAndBeginBlock("provider", time.Duration(1)*time.Second) //, func() {})
+ driver.endAndBeginBlock("provider", time.Duration(1)*time.Second) //, func() {})
case "EndAndBeginBlockForConsumer":
consumerChain := lastAction["consumerChain"].Value.(string)
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
-
- driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second, func() {})
t.Log("EndAndBeginBlockForConsumer", consumerChain, timeAdvancement)
+
+ // TODO continue here
+ totalDuration := time.Duration(timeAdvancement) * time.Second
+ halfDuration := totalDuration / 2
+ halfDuration = halfDuration.Round(time.Second)
+ remainingDuration := totalDuration - halfDuration
+ remainingDuration = remainingDuration.Round(time.Second)
+ // this is trying to split into two parts, but fails because all need to be non-0
+ // updating client multiple times with headers that do not progress in time is not allowed
+
+ require.True(t, halfDuration+remainingDuration == totalDuration)
+
+ // time duration needs 3 parts because the packet needs 3 commits to be delivered
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(1)*time.Second) //, func() {})
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(1)*time.Second) //, func() {})
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(1)*time.Second) //, func() {})
case "DeliverVscPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
-
t.Log("DeliverVscPacket", consumerChain)
+
+ driver.DeliverPacketToConsumer(ChainId(consumerChain))
case "DeliverVscMaturedPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
-
t.Log("DeliverVscMaturedPacket", consumerChain)
+
+ driver.DeliverPacketFromConsumer(ChainId(consumerChain))
default:
log.Fatalf("Error loading trace file %s, step %v: do not know action type %s",
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 76a48ddfd2..8a87e0d577 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -99,7 +99,6 @@ func getAppBytesAndSenders(
for i, val := range nodes {
_, valSetVal := initialValSet.GetByAddress(val.Address.Bytes())
- valAccount := accounts[i]
if valSetVal == nil {
log.Panicf("error getting validator with address %v from valSet %v", val, initialValSet)
}
@@ -143,7 +142,7 @@ func getAppBytesAndSenders(
stakingValidators = append(stakingValidators, validator)
// Store delegation from the model delegator account
- delegations = append(delegations, stakingtypes.NewDelegation(valAccount.GetAddress(), val.Address.Bytes(), delShares))
+ delegations = append(delegations, stakingtypes.NewDelegation(senderAccounts[0].SenderAccount.GetAddress(), val.Address.Bytes(), delShares))
// add initial validator powers so consumer InitGenesis runs correctly
pub, _ := val.ToProto()
@@ -327,12 +326,12 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
// Commit a block on both chains, giving us two committed headers from
// the same time and height. This is the starting point for all our
// data driven testing.
- lastConsumerHeader, _ := simibc.EndBlock(consumerChain, func() {})
- lastProviderHeader, _ = simibc.EndBlock(providerChain, func() {})
+ lastConsumerHeader, _ := simibc.EndBlock(consumerChain) //, func() {})
+ lastProviderHeader, _ = simibc.EndBlock(providerChain) //, func() {})
// Get ready to update clients.
- simibc.BeginBlock(providerChain, 0)
- simibc.BeginBlock(consumerChain, 0)
+ simibc.BeginBlock(providerChain, 5)
+ simibc.BeginBlock(consumerChain, 5)
// Update clients to the latest header.
err = simibc.UpdateReceiverClient(consumerEndPoint, providerEndPoint, lastConsumerHeader)
@@ -358,7 +357,7 @@ func (s *Driver) setupChains(
providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes, valNames)
s.coordinator.Chains["provider"] = providerChain
- providerHeader, _ := simibc.EndBlock(providerChain, func() {})
+ providerHeader, _ := simibc.EndBlock(providerChain) //, func() {})
simibc.BeginBlock(providerChain, 0)
// start consumer chains
diff --git a/tests/difference/core/quint_model/driver/trace.json b/tests/difference/core/quint_model/driver/trace.json
index 8433328980..d0f4fac106 100644
--- a/tests/difference/core/quint_model/driver/trace.json
+++ b/tests/difference/core/quint_model/driver/trace.json
@@ -3,9 +3,9 @@
"format": "ITF",
"format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html",
"source": "ccv_model.qnt",
- "status": "ok",
- "description": "Created by Quint on Mon Nov 06 2023 10:21:20 GMT+0100 (Central European Standard Time)",
- "timestamp": 1699262480568
+ "status": "violation",
+ "description": "Created by Quint on Fri Nov 10 2023 10:07:52 GMT+0100 (Central European Standard Time)",
+ "timestamp": 1699607272414
},
"vars": [
"currentState",
@@ -32,9 +32,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -51,9 +49,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -70,9 +66,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -448,6 +442,9 @@
},
"trace": [
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -456,9 +453,6 @@
"#set": []
},
"kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
"#bigint": "0"
},
@@ -485,9 +479,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -504,9 +496,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -523,9 +513,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -587,7 +575,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -599,73 +587,9 @@
]
},
"lastTimestamp": {
- "#bigint": "604800"
+ "#bigint": "0"
},
"votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
{
"#map": [
[
@@ -764,7 +688,7 @@
]
]
},
- "providerValidatorSetChangedInThisBlock": false,
+ "providerValidatorSetChangedInThisBlock": true,
"receivedMaturations": {
"#set": []
},
@@ -965,6 +889,9 @@
},
"trace": [
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -973,15 +900,15 @@
"#set": []
},
"kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
"#bigint": "0"
},
"validator": ""
},
{
+ "changeAmount": {
+ "#bigint": "-50"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -989,14 +916,11 @@
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
+ "kind": "VotingPowerChange",
"timeAdvancement": {
- "#bigint": "604800"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node8"
}
]
},
@@ -1012,77 +936,14 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -1099,9 +960,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -1163,7 +1022,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -1179,9 +1038,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -1243,7 +1100,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -1255,7 +1112,7 @@
]
},
"lastTimestamp": {
- "#bigint": "3024000"
+ "#bigint": "1"
},
"votingPowerHistory": [
{
@@ -1311,71 +1168,7 @@
[
"node8",
{
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -1456,7 +1249,7 @@
"#map": [
[
"consumer1",
- "running"
+ "not consumer"
],
[
"consumer2",
@@ -1480,36 +1273,182 @@
],
[
"consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": false,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "params": {
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": false,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ "params": {
"CcvTimeout": {
"#map": [
[
@@ -1685,6 +1624,9 @@
},
"trace": [
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -1693,15 +1635,15 @@
"#set": []
},
"kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
"#bigint": "0"
},
"validator": ""
},
{
+ "changeAmount": {
+ "#bigint": "-50"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -1709,20 +1651,19 @@
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
+ "kind": "VotingPowerChange",
"timeAdvancement": {
- "#bigint": "604800"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node8"
},
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": [
- "consumer1",
"consumer3"
]
},
@@ -1730,11 +1671,8 @@
"#set": []
},
"kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "1"
},
"validator": ""
}
@@ -1752,77 +1690,14 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
+ "#map": []
},
"lastTimestamp": {
"#bigint": "0"
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -1839,9 +1714,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -1903,7 +1776,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -1919,24 +1792,175 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
+ "maturationTimes": [
{
- "#bigint": "100"
- }
+ "#tup": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ },
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ }
+ ],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
],
[
"node10",
@@ -1947,7 +1971,7 @@
[
"node2",
{
- "#bigint": "50"
+ "#bigint": "100"
}
],
[
@@ -1983,7 +2007,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -1995,7 +2019,7 @@
]
},
"lastTimestamp": {
- "#bigint": "3024000"
+ "#bigint": "1"
},
"votingPowerHistory": [
{
@@ -2051,71 +2075,7 @@
[
"node8",
{
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2196,7 +2156,7 @@
"#map": [
[
"consumer1",
- "running"
+ "not consumer"
],
[
"consumer2",
@@ -2224,12 +2184,12 @@
]
]
},
- "providerValidatorSetChangedInThisBlock": true,
+ "providerValidatorSetChangedInThisBlock": false,
"receivedMaturations": {
"#set": []
},
"runningVscId": {
- "#bigint": "0"
+ "#bigint": "1"
},
"sentVscPacketsToConsumer": {
"#map": [
@@ -2243,7 +2203,80 @@
],
[
"consumer3",
- []
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
]
]
}
@@ -2425,6 +2458,9 @@
},
"trace": [
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -2433,15 +2469,15 @@
"#set": []
},
"kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
"#bigint": "0"
},
"validator": ""
},
{
+ "changeAmount": {
+ "#bigint": "-50"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -2449,20 +2485,19 @@
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
+ "kind": "VotingPowerChange",
"timeAdvancement": {
- "#bigint": "604800"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node8"
},
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": [
- "consumer1",
"consumer3"
]
},
@@ -2470,30 +2505,27 @@
"#set": []
},
"kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "1"
},
"validator": ""
},
{
- "consumerChain": "",
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
"consumersToStart": {
"#set": []
},
"consumersToStop": {
"#set": []
},
- "kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
+ "kind": "DeliverVscPacket",
"timeAdvancement": {
"#bigint": "0"
},
- "validator": "node2"
+ "validator": ""
}
]
},
@@ -2509,14 +2541,48 @@
{
"chainState": {
"currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
"node10",
{
"#bigint": "100"
@@ -2561,7 +2627,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2577,9 +2643,2761 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [
+ {
+ "#tup": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ },
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ }
+ ],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "150"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "1"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "not consumer"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
+ "trace": [
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "-50"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node8"
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "timeAdvancement": {
+ "#bigint": "1"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "DeliverVscPacket",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "50"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node3"
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 5
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "601200"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": [
+ {
+ "#tup": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ },
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ }
+ ],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "150"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "1"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "not consumer"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
+ "trace": [
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "-50"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node8"
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "timeAdvancement": {
+ "#bigint": "1"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "DeliverVscPacket",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "50"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node3"
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "timeAdvancement": {
+ "#bigint": "601200"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 6
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": []
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "1202400"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": [
+ {
+ "#tup": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ },
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ }
+ ],
+ "outstandingPacketsToProvider": [],
+ "receivedVscPackets": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ ]
+ },
+ "providerState": {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "150"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "1"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "consumerStatus": {
+ "#map": [
+ [
+ "consumer1",
+ "not consumer"
+ ],
+ [
+ "consumer2",
+ "not consumer"
+ ],
+ [
+ "consumer3",
+ "running"
+ ]
+ ]
+ },
+ "outstandingPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ []
+ ]
+ ]
+ },
+ "providerValidatorSetChangedInThisBlock": true,
+ "receivedMaturations": {
+ "#set": []
+ },
+ "runningVscId": {
+ "#bigint": "1"
+ },
+ "sentVscPacketsToConsumer": {
+ "#map": [
+ [
+ "consumer1",
+ []
+ ],
+ [
+ "consumer2",
+ []
+ ],
+ [
+ "consumer3",
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ "params": {
+ "CcvTimeout": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1814400"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1814400"
+ }
+ ]
+ ]
+ },
+ "ConsumerChains": {
+ "#set": [
+ "consumer1",
+ "consumer2",
+ "consumer3"
+ ]
+ },
+ "InitialValidatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ "Nodes": {
+ "#set": [
+ "node1",
+ "node10",
+ "node2",
+ "node3",
+ "node4",
+ "node5",
+ "node6",
+ "node7",
+ "node8",
+ "node9"
+ ]
+ },
+ "TrustingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "604800"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "604800"
+ }
+ ]
+ ]
+ },
+ "UnbondingPeriodPerChain": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer2",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "consumer3",
+ {
+ "#bigint": "1209600"
+ }
+ ],
+ [
+ "provider",
+ {
+ "#bigint": "1209600"
+ }
+ ]
+ ]
+ },
+ "VscTimeout": {
+ "#bigint": "3024000"
+ }
+ },
+ "trace": [
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "init",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "-50"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node8"
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": [
+ "consumer3"
+ ]
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForProvider",
+ "timeAdvancement": {
+ "#bigint": "1"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "DeliverVscPacket",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "50"
+ },
+ "consumerChain": "",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "VotingPowerChange",
+ "timeAdvancement": {
+ "#bigint": "0"
+ },
+ "validator": "node3"
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "timeAdvancement": {
+ "#bigint": "601200"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "timeAdvancement": {
+ "#bigint": "601200"
+ },
+ "validator": ""
+ }
+ ]
+ },
+ {
+ "#meta": {
+ "index": 7
+ },
+ "currentState": {
+ "consumerStates": {
+ "#map": [
+ [
+ "consumer1",
+ {
+ "chainState": {
+ "currentValidatorSet": {
+ "#map": []
+ },
+ "lastTimestamp": {
+ "#bigint": "0"
+ },
+ "votingPowerHistory": []
+ },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -2596,9 +5414,7 @@
},
"votingPowerHistory": []
},
- "maturationTimes": {
- "#map": []
- },
+ "maturationTimes": [],
"outstandingPacketsToProvider": [],
"receivedVscPackets": []
}
@@ -2660,7 +5476,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2669,13 +5485,226 @@
"#bigint": "100"
}
]
- ]
- },
- "lastTimestamp": {
- "#bigint": "86400"
- },
- "votingPowerHistory": [
- {
+ ]
+ },
+ "lastTimestamp": {
+ "#bigint": "1803600"
+ },
+ "votingPowerHistory": [
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ },
+ {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ ]
+ },
+ "maturationTimes": [],
+ "outstandingPacketsToProvider": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1803600"
+ }
+ }
+ ],
+ "receivedVscPackets": [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
"#map": [
[
"node1",
@@ -2728,7 +5757,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2739,13 +5768,8 @@
]
]
}
- ]
- },
- "maturationTimes": {
- "#map": []
- },
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
+ }
+ ]
}
]
]
@@ -2769,13 +5793,13 @@
[
"node2",
{
- "#bigint": "50"
+ "#bigint": "100"
}
],
[
"node3",
{
- "#bigint": "100"
+ "#bigint": "150"
}
],
[
@@ -2805,7 +5829,7 @@
[
"node8",
{
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -2817,7 +5841,7 @@
]
},
"lastTimestamp": {
- "#bigint": "3024000"
+ "#bigint": "1"
},
"votingPowerHistory": [
{
@@ -2873,71 +5897,7 @@
[
"node8",
{
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
+ "#bigint": "50"
}
],
[
@@ -3018,7 +5978,7 @@
"#map": [
[
"consumer1",
- "running"
+ "not consumer"
],
[
"consumer2",
@@ -3051,7 +6011,7 @@
"#set": []
},
"runningVscId": {
- "#bigint": "0"
+ "#bigint": "1"
},
"sentVscPacketsToConsumer": {
"#map": [
@@ -3065,7 +6025,80 @@
],
[
"consumer3",
- []
+ [
+ {
+ "id": {
+ "#bigint": "0"
+ },
+ "sendingTime": {
+ "#bigint": "1"
+ },
+ "validatorSet": {
+ "#map": [
+ [
+ "node1",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node10",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node2",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node3",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node4",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node5",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node6",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node7",
+ {
+ "#bigint": "100"
+ }
+ ],
+ [
+ "node8",
+ {
+ "#bigint": "50"
+ }
+ ],
+ [
+ "node9",
+ {
+ "#bigint": "100"
+ }
+ ]
+ ]
+ }
+ }
+ ]
]
]
}
@@ -3247,6 +6280,9 @@
},
"trace": [
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -3255,15 +6291,15 @@
"#set": []
},
"kind": "init",
- "newVotingPower": {
- "#bigint": "0"
- },
"timeAdvancement": {
"#bigint": "0"
},
"validator": ""
},
{
+ "changeAmount": {
+ "#bigint": "-50"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -3271,20 +6307,19 @@
"consumersToStop": {
"#set": []
},
- "kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
- "#bigint": "0"
- },
+ "kind": "VotingPowerChange",
"timeAdvancement": {
- "#bigint": "604800"
+ "#bigint": "0"
},
- "validator": ""
+ "validator": "node8"
},
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": [
- "consumer1",
"consumer3"
]
},
@@ -3292,15 +6327,32 @@
"#set": []
},
"kind": "EndAndBeginBlockForProvider",
- "newVotingPower": {
+ "timeAdvancement": {
+ "#bigint": "1"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
"#bigint": "0"
},
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "DeliverVscPacket",
"timeAdvancement": {
- "#bigint": "2419200"
+ "#bigint": "0"
},
"validator": ""
},
{
+ "changeAmount": {
+ "#bigint": "50"
+ },
"consumerChain": "",
"consumersToStart": {
"#set": []
@@ -3309,15 +6361,32 @@
"#set": []
},
"kind": "VotingPowerChange",
- "newVotingPower": {
- "#bigint": "50"
- },
"timeAdvancement": {
"#bigint": "0"
},
- "validator": "node2"
+ "validator": "node3"
+ },
+ {
+ "changeAmount": {
+ "#bigint": "0"
+ },
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
+ "timeAdvancement": {
+ "#bigint": "601200"
+ },
+ "validator": ""
},
{
+ "changeAmount": {
+ "#bigint": "0"
+ },
"consumerChain": "consumer3",
"consumersToStart": {
"#set": []
@@ -3326,11 +6395,25 @@
"#set": []
},
"kind": "EndAndBeginBlockForConsumer",
- "newVotingPower": {
+ "timeAdvancement": {
+ "#bigint": "601200"
+ },
+ "validator": ""
+ },
+ {
+ "changeAmount": {
"#bigint": "0"
},
+ "consumerChain": "consumer3",
+ "consumersToStart": {
+ "#set": []
+ },
+ "consumersToStop": {
+ "#set": []
+ },
+ "kind": "EndAndBeginBlockForConsumer",
"timeAdvancement": {
- "#bigint": "86400"
+ "#bigint": "601200"
},
"validator": ""
}
diff --git a/testutil/simibc/chain_util.go b/testutil/simibc/chain_util.go
index 1c00c928c5..fe60002333 100644
--- a/testutil/simibc/chain_util.go
+++ b/testutil/simibc/chain_util.go
@@ -39,14 +39,17 @@ func BeginBlock(c *ibctesting.TestChain, dt time.Duration) {
// so you can query the state inside the callback.
//
// NOTE: this method may be used independently of the rest of simibc.
-func EndBlock(c *ibctesting.TestChain, preCommitCallback func()) (*ibctmtypes.Header, []channeltypes.Packet) {
+func EndBlock(
+ c *ibctesting.TestChain,
+ // preCommitCallback func(),
+) (*ibctmtypes.Header, []channeltypes.Packet) {
ebRes := c.App.EndBlock(abci.RequestEndBlock{Height: c.CurrentHeader.Height})
/*
It is useful to call arbitrary code after ending the block but before
committing the block because the sdk.Context is cleared after committing.
*/
- preCommitCallback()
+ // preCommitCallback()
c.App.Commit()
diff --git a/testutil/simibc/relayed_path.go b/testutil/simibc/relayed_path.go
index 8105b7997e..b5ba476305 100644
--- a/testutil/simibc/relayed_path.go
+++ b/testutil/simibc/relayed_path.go
@@ -1,7 +1,6 @@
package simibc
import (
- "bytes"
"testing"
channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
@@ -42,32 +41,29 @@ func MakeRelayedPath(t *testing.T, path *ibctesting.Path) *RelayedPath {
}
// PacketBelongs returns true if the packet belongs to this relayed path.
-func (f *RelayedPath) PacketBelongs(packet channeltypes.Packet) bool {
- return f.PacketSentByA(packet) || f.PacketSentByB(packet)
+func (f *RelayedPath) PacketSentByChain(packet channeltypes.Packet, chainID string) bool {
+ if chainID == f.Path.EndpointA.Chain.ChainID {
+ return f.PacketSentByA(packet)
+ } else if chainID == f.Path.EndpointB.Chain.ChainID {
+ return f.PacketSentByB(packet)
+ }
+ return false
}
// PacketSentByA returns true if the given packet was sent by chain A on this path.
func (f *RelayedPath) PacketSentByA(packet channeltypes.Packet) bool {
- committedByA := f.Path.EndpointA.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(
- f.Path.EndpointA.Chain.GetContext(),
- f.Path.EndpointA.ChannelConfig.PortID,
- f.Path.EndpointA.ChannelID,
- packet.GetSequence(),
- )
-
- return bytes.Equal(committedByA, channeltypes.CommitPacket(f.Path.EndpointA.Chain.App.AppCodec(), packet))
+ return packet.SourcePort == f.Path.EndpointA.ChannelConfig.PortID &&
+ packet.SourceChannel == f.Path.EndpointA.ChannelID &&
+ packet.DestinationPort == f.Path.EndpointB.ChannelConfig.PortID &&
+ packet.DestinationChannel == f.Path.EndpointB.ChannelID
}
// PacketSentByB returns true if the given packet was sent by chain B on this path.
func (f *RelayedPath) PacketSentByB(packet channeltypes.Packet) bool {
- committedByB := f.Path.EndpointB.Chain.App.GetIBCKeeper().ChannelKeeper.GetPacketCommitment(
- f.Path.EndpointB.Chain.GetContext(),
- f.Path.EndpointB.ChannelConfig.PortID,
- f.Path.EndpointB.ChannelID,
- packet.GetSequence(),
- )
-
- return bytes.Equal(committedByB, channeltypes.CommitPacket(f.Path.EndpointB.Chain.App.AppCodec(), packet))
+ return packet.SourcePort == f.Path.EndpointB.ChannelConfig.PortID &&
+ packet.SourceChannel == f.Path.EndpointB.ChannelID &&
+ packet.DestinationPort == f.Path.EndpointA.ChannelConfig.PortID &&
+ packet.DestinationChannel == f.Path.EndpointA.ChannelID
}
// AddPacket adds a packet to the outbox of the chain with chainID.
@@ -114,13 +110,13 @@ func (f *RelayedPath) InvolvesChain(chainID string) bool {
// of available headers committed by the counterparty chain since
// the last call to UpdateClient (or all for the first call).
func (f *RelayedPath) UpdateClient(chainID string) {
- for _, header := range f.clientHeaders[f.counterparty(chainID)] {
- err := UpdateReceiverClient(f.endpoint(f.counterparty(chainID)), f.endpoint(chainID), header)
+ for _, header := range f.clientHeaders[f.Counterparty(chainID)] {
+ err := UpdateReceiverClient(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), header)
if err != nil {
f.t.Fatal("in relayed path could not update client of chain: ", chainID, " with header: ", header, " err: ", err)
}
}
- f.clientHeaders[f.counterparty(chainID)] = []*ibctmtypes.Header{}
+ f.clientHeaders[f.Counterparty(chainID)] = []*ibctmtypes.Header{}
}
// DeliverPackets delivers UP TO packets to the chain which have been
@@ -135,8 +131,8 @@ func (f *RelayedPath) UpdateClient(chainID string) {
// In order to deliver packets, the chain must have an up-to-date client
// of the counterparty chain. Ie. UpdateClient should be called before this.
func (f *RelayedPath) DeliverPackets(chainID string, num int) {
- for _, p := range f.Outboxes.ConsumePackets(f.counterparty(chainID), num) {
- ack, err := TryRecvPacket(f.endpoint(f.counterparty(chainID)), f.endpoint(chainID), p.Packet)
+ for _, p := range f.Outboxes.ConsumePackets(f.Counterparty(chainID), num) {
+ ack, err := TryRecvPacket(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), p.Packet)
if err != nil {
f.t.Fatal("deliver")
}
@@ -156,16 +152,17 @@ func (f *RelayedPath) DeliverPackets(chainID string, num int) {
// In order to deliver acks, the chain must have an up-to-date client
// of the counterparty chain. Ie. UpdateClient should be called before this.
func (f *RelayedPath) DeliverAcks(chainID string, num int) {
- for _, ack := range f.Outboxes.ConsumeAcks(f.counterparty(chainID), num) {
- err := TryRecvAck(f.endpoint(f.counterparty(chainID)), f.endpoint(chainID), ack.Packet, ack.Ack)
+ for _, ack := range f.Outboxes.ConsumeAcks(f.Counterparty(chainID), num) {
+ err := TryRecvAck(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), ack.Packet, ack.Ack)
if err != nil {
f.t.Fatal("deliverAcks")
}
}
}
-// counterparty is a helper returning the counterparty chainID
-func (f *RelayedPath) counterparty(chainID string) string {
+// Counterparty returns the chainID of the other chain,
+// from the perspective of the given chain.
+func (f *RelayedPath) Counterparty(chainID string) string {
if f.Path.EndpointA.Chain.ChainID == chainID {
return f.Path.EndpointB.Chain.ChainID
}
From abc12cfda02e483e2bf7f245baad871d7e4ec1c2 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 14 Nov 2023 10:57:48 +0100
Subject: [PATCH 021/111] Add ccv_happy module as a happyPath variant
---
.../difference/core/quint_model/ccv_happy.qnt | 67 ++++++++++++
.../difference/core/quint_model/ccv_model.qnt | 100 ++++++++++--------
2 files changed, 124 insertions(+), 43 deletions(-)
create mode 100644 tests/difference/core/quint_model/ccv_happy.qnt
diff --git a/tests/difference/core/quint_model/ccv_happy.qnt b/tests/difference/core/quint_model/ccv_happy.qnt
new file mode 100644
index 0000000000..60e2574422
--- /dev/null
+++ b/tests/difference/core/quint_model/ccv_happy.qnt
@@ -0,0 +1,67 @@
+module ccv_happy {
+ import ccv_model.* from "ccv_model"
+ import ccv_types as ccvt from "ccv"
+ import ccv from "ccv"
+ import Time.* from "./libraries/Time"
+ import extraSpells.* from "./libraries/extraSpells"
+
+
+ // The happy path module has its own init and step functions.
+ // They ensure that chains do not drift from each other in terms of time,
+ // and all chains produce blocks synchronously.
+ // To do so, it makes use of
+ // "action scheduling", essentially using a variable to
+ // determine the next action to be taken.
+
+ // QueuedEndBlocks contains a list of chains which will end their blocks next,
+ // together with the time advancement they should advance by.
+ // When stepHappyPath selects an action, it checks if there are any chains in this list,
+ // and if so, it will only select actions that end blocks on the head of the list.
+ // QueuedEndBlocks is thus used to schedule actions.
+ var QueuedEndBlocks: List[(ccvt::Chain, Time)]
+
+ // runs init, then ends and begins a block for each chain, while also starting all consumers.
+ // necessary because we want the happy path to have all consumer chains started.
+ action initHappy =
+ all {
+ init.then(
+ EndAndBeginBlockForProvider(1 * Second, consumerChains, Set())
+ ),
+ QueuedEndBlocks' = consumerChainList.foldl(
+ List(),
+ (acc, consumer) => acc.append((consumer, 1 * Second))
+ ),
+ }
+
+
+
+ // step will advance time for all chains at the same rate,
+ // thus the clock times are always in sync.
+ // This is useful to test happy paths.
+ action stepHappy = any {
+ nondet timeAdvancement = oneOf(timeAdvancements)
+ all {
+ QueuedEndBlocks.length() == 0,
+ EndAndBeginBlockForProvider(timeAdvancement, Set(), Set()),
+ QueuedEndBlocks' = consumerChainList.foldl(
+ List(),
+ (acc, consumer) => acc.append((consumer, timeAdvancement))
+ ),
+ },
+
+ all {
+ QueuedEndBlocks.length() > 0,
+ val pair = QueuedEndBlocks.head()
+ val chain = pair._1
+ val timeAdv = pair._2
+ EndAndBeginBlockForConsumer(chain, timeAdv),
+ QueuedEndBlocks' = QueuedEndBlocks.tail(),
+ },
+
+ all {
+ QueuedEndBlocks.length() == 0,
+ step_common,
+ QueuedEndBlocks' = QueuedEndBlocks,
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index c253824e43..80e414e3fa 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -5,10 +5,12 @@ module ccv_model {
import Time.* from "./libraries/Time"
import extraSpells.* from "./libraries/extraSpells"
- pure val consumerChains = Set("consumer1", "consumer2", "consumer3")
+ pure val consumerChainList = List("consumer1", "consumer2", "consumer3")
+ pure val consumerChains = consumerChainList.toSet()
pure val chains = consumerChains.union(Set(PROVIDER_CHAIN))
- pure val unbondingPeriods = chains.mapBy(chain => 2 * Week)
- pure val trustingPeriods = chains.mapBy(chain => 1 * Week)
+ pure val defUnbondingPeriod = 2 * Week
+ pure val unbondingPeriods = chains.mapBy(chain => defUnbondingPeriod)
+ pure val trustingPeriods = chains.mapBy(chain => defUnbondingPeriod - 1 * Hour)
pure val ccvTimeouts = chains.mapBy(chain => 3 * Week)
pure val nodes = Set("node1", "node2", "node3", "node4", "node5", "node6", "node7", "node8", "node9", "node10")
@@ -16,6 +18,8 @@ module ccv_model {
import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains, TrustingPeriodPerChain = trustingPeriods).* from "./ccv"
+ // TODO: introduce max clock drift to produce traces with bounded drift
+
type Parameters = {
VscTimeout: Time,
CcvTimeout: Chain -> Time,
@@ -69,46 +73,6 @@ module ccv_model {
changeAmount: 0,
}
- // step allows the most generic nondeterminism, in particular it becomes relatively likely
- // that over a long enough runtime, all consumers would time out by mismatching their time advancements,
- // and each endblock has a good chance to stop consumers, ...
- // step is thus suited to test also unhappy paths.
- action step = any {
- all {
- runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
- nondet chain = oneOf(runningConsumers)
- nondet timeAdvancement = oneOf(timeAdvancements)
- EndAndBeginBlockForConsumer(chain, timeAdvancement),
- },
-
- val consumerStatus = currentState.providerState.consumerStatus
- nondet consumersToStart = oneOf(nonConsumers.powerset())
- nondet consumersToStop = oneOf(runningConsumers.powerset())
- nondet timeAdvancement = oneOf(timeAdvancements)
- EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
-
- nondet node = oneOf(nodes)
- // very restricted set of voting powers. exact values are not important,
- // and this keeps the state space smaller.
- nondet newVotingPower = oneOf(Set(-50, 50))
- VotingPowerChange(node, newVotingPower),
-
- // try to send a packet. we could filter by chains that can actually send,
- // but it's probably not much faster than just trying and failing.
- all {
- runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
- nondet sender = oneOf(runningConsumers)
- DeliverVscMaturedPacket(sender),
- },
-
- // again, we could filter by chains that can actually receive,
- // but it's probably not much faster than just trying and failing.
- all {
- runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
- nondet recciver = oneOf(runningConsumers)
- DeliverVscPacket(recciver),
- },
- }
// some utility stateful vals to make invariants easier to define
val providerValidatorHistory = currentState.providerState.chainState.votingPowerHistory
@@ -207,6 +171,53 @@ module ccv_model {
params' = params,
}
+ // step_common is the core functionality of steps that does not have anything to do with time.
+ // Thus, it is part of both step and stepBoundedDrift.
+ action step_common = any {
+ nondet node = oneOf(nodes)
+ // very restricted set of voting powers. exact values are not important,
+ // and this keeps the state space smaller.
+ nondet newVotingPower = oneOf(Set(-50, 50))
+ VotingPowerChange(node, newVotingPower),
+
+ // try to send a packet. we could filter by chains that can actually send,
+ // but it's probably not much faster than just trying and failing.
+ all {
+ runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
+ nondet sender = oneOf(runningConsumers)
+ DeliverVscMaturedPacket(sender),
+ },
+
+ // again, we could filter by chains that can actually receive,
+ // but it's probably not much faster than just trying and failing.
+ all {
+ runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
+ nondet recciver = oneOf(runningConsumers)
+ DeliverVscPacket(recciver),
+ },
+ }
+
+ // step allows the most generic nondeterminism, in particular it becomes relatively likely
+ // that over a long enough runtime, all consumers would time out by mismatching their time advancements,
+ // and each endblock has a good chance to stop consumers, ...
+ // step is thus suited to test also unhappy paths.
+ action step = any {
+ all {
+ runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
+ nondet chain = oneOf(runningConsumers)
+ nondet timeAdvancement = oneOf(timeAdvancements)
+ EndAndBeginBlockForConsumer(chain, timeAdvancement),
+ },
+
+ val consumerStatus = currentState.providerState.consumerStatus
+ nondet consumersToStart = oneOf(nonConsumers.powerset())
+ nondet consumersToStop = oneOf(runningConsumers.powerset())
+ nondet timeAdvancement = oneOf(timeAdvancements)
+ EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
+
+ step_common
+ }
+
// ==================
// UTILITY FUNCTIONS
// ==================
@@ -400,6 +411,9 @@ module ccv_model {
currentState.providerState.outstandingPacketsToConsumer.get(consumer).length() > 0
))
+ val CanReceiveVscPackets =
+ not(trace[length(trace)-1].kind == "DeliverVscPacket")
+
val CanSendVscMaturedPackets =
not(ConsumerChains.exists(
consumer =>
From ad2502965586eced274cdcf96248be58550fe094 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 16 Nov 2023 13:09:13 +0100
Subject: [PATCH 022/111] Fix model: packets are emitted based on the timestamp
of the last block, not the new block
---
tests/difference/core/quint_model/ccv.qnt | 17 ++++++--
.../difference/core/quint_model/ccv_model.qnt | 41 ++++++++++++-------
2 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 6e0275abe7..5087098e3d 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -413,6 +413,7 @@ module ccv {
)
// for each consumer we just set to running, set its initial validator set to be the current one on the provider.
+ val valSet = providerStateAfterConsumerAdvancement.chainState.currentValidatorSet
val newConsumerStateMap =
tmpState.consumerStates.keys().mapBy(
(consumer) =>
@@ -420,7 +421,10 @@ module ccv {
val currentConsumerState: ConsumerState = tmpState.consumerStates.get(consumer)
val newConsumerState: ConsumerState = currentConsumerState.with(
"chainState", currentConsumerState.chainState.with(
- "currentValidatorSet", providerStateAfterConsumerAdvancement.chainState.currentValidatorSet
+ "currentValidatorSet", valSet
+ ).with(
+ "votingPowerHistory",
+ List(valSet)
)
)
newConsumerState
@@ -462,6 +466,7 @@ module ccv {
Err("chain is not a consumer")
} else {
val currentConsumerState: ConsumerState = currentState.consumerStates.get(chain)
+ val oldChainState: ChainState = currentConsumerState.chainState
val newChainState: ChainState = currentConsumerState.chainState.endAndBeginBlockShared(timeAdvancement)
val newConsumerState: ConsumerState = currentConsumerState.with(
"chainState", newChainState
@@ -470,19 +475,23 @@ module ccv {
pair =>
val packet = pair._1
val maturationTime = pair._2
- maturationTime <= newChainState.lastTimestamp
+ // important that the old chain state is used here, because sending packets happens on EndBlock,
+ // but the new timestamp only appears after BeginBlock
+ maturationTime <= oldChainState.lastTimestamp
).transform(pair => pair._1)
val newMaturationTimes = newConsumerState.maturationTimes.select(
pair =>
val packet = pair._1
val maturationTime = pair._2
- maturationTime > newChainState.lastTimestamp
+ // important that the old chain state is used here, because sending packets happens on EndBlock,
+ // but the new timestamp only appears after BeginBlock
+ maturationTime > oldChainState.lastTimestamp
)
val newOutstandingPackets = newConsumerState.outstandingPacketsToProvider.concat(
maturedPackets.transform(
packet => {
id: packet.id,
- sendingTime: newConsumerState.chainState.lastTimestamp
+ sendingTime: oldChainState.lastTimestamp
}
)
)
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 80e414e3fa..b580be32a5 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -338,24 +338,26 @@ module ccv_model {
)
// For every ValidatorSetChangePacket received by a consumer chain at
- // time t, a MaturedVscPacket is sent back to the provider in the first block
+ // time t, a MaturedVscPacket is sent back to the provider when we end the first block
// with a timestamp >= t + UnbondingPeriod
// NOTE: because we remove the maturationTimes entry when we send the packets,
- // it suffices to check that there is never an entry in maturationTimes
- // that has already matured, i.e. where the maturationTime is smaller-or-equal than the lastTimestamp
+ // it suffices to check that after we end/begin a block, there is never an entry in maturationTimes
+ // that has already matured, i.e. where the maturationTime is smaller-or-equal than the
+ // timestamp of the block we just ended
+ val MaturationPrecondition = trace[trace.length()-1].kind == "EndAndBeginBlockForConsumer"
+ val ConsumerWithPotentialMaturations = trace[trace.length()-1].consumerChain
+ val lastTimeAdvancement = trace[trace.length()-1].timeAdvancement
+ val lastBlockTime = currentState.consumerStates.get(ConsumerWithPotentialMaturations).chainState.lastTimestamp - lastTimeAdvancement
val MatureOnTimeInv =
- runningConsumers.forall(
- consumer => {
- val maturationTimes = currentState.consumerStates.get(consumer).maturationTimes
- maturationTimes.listForAll(
- // check that the maturation time is in the future
- pair =>
- val maturationTime = pair._2
- maturationTime >= currentState.consumerStates.get(consumer).chainState.lastTimestamp
- )
- }
+ MaturationPrecondition
+ implies
+ currentState.consumerStates.get(ConsumerWithPotentialMaturations).maturationTimes.toSet().forall(
+ pair =>
+ val maturationTime = pair._2
+ maturationTime > lastBlockTime
)
+
// If we send a VscPacket, this is eventually responded to by all consumers
// that were running at the time the packet was sent (and are still running).
// Since we remove sentVscPacketsToConsumer when we receive responses for them,
@@ -500,7 +502,18 @@ module ccv_model {
)
.then(
all {
- // the packet has matured, so it was sent by the consumer
+ // the packet has not matured yet - the timestamp for the current block is after the naturation time,
+ // but packets are only sent on EndBlock
+ assert(currentState.consumerStates.get("consumer1").outstandingPacketsToProvider.length() == 0),
+ // the packet is still waiting to mature
+ assert(currentState.consumerStates.get("consumer1").maturationTimes.length() == 1),
+ // end another block, this time after the time has been reached
+ EndAndBeginBlockForConsumer("consumer1", 1 * Second)
+ }
+ )
+ .then(
+ all {
+ // the packet now was sent by the consumer
assert(currentState.consumerStates.get("consumer1").outstandingPacketsToProvider.length() == 1),
// it was removed from the maturationTimes
assert(currentState.consumerStates.get("consumer1").maturationTimes.length() == 0),
From fea71dc84c414f35ab538100c63cb36348190b54 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 16 Nov 2023 13:10:22 +0100
Subject: [PATCH 023/111] Add viewer for ModelState and fix model-system
equivalence checks
---
.../core/quint_model/driver/core.go | 68 +-
.../core/quint_model/driver/mbt_test.go | 238 +-
.../core/quint_model/driver/model_viewer.go | 57 +
.../core/quint_model/driver/setup.go | 57 +-
.../core/quint_model/driver/trace.json | 6424 +----------------
testutil/simibc/chain_util.go | 2 +-
testutil/simibc/ordered_outbox.go | 11 +-
7 files changed, 338 insertions(+), 6519 deletions(-)
create mode 100644 tests/difference/core/quint_model/driver/model_viewer.go
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index b332f1984e..03e65f008c 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -13,6 +13,7 @@ import (
slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper"
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
+ consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
appProvider "github.com/cosmos/interchain-security/v3/app/provider"
@@ -164,12 +165,12 @@ func (s *Driver) providerTokens(i int64) int64 {
return v.Tokens.Int64()
}
-func (s *Driver) validatorSet(chain ChainId) []stakingtypes.Validator {
- if chain == P {
- return s.providerStakingKeeper().GetAllValidators(s.ctx(P))
- } else {
- return s.consumerKeeper(chain).GetAllValidators(s.ctx(chain))
- }
+func (s *Driver) providerValidatorSet(chain ChainId) []stakingtypes.Validator {
+ return s.providerStakingKeeper().GetAllValidators(s.ctx(P))
+}
+
+func (s *Driver) consumerValidatorSet(chain ChainId) []consumertypes.CrossChainValidator {
+ return s.consumerKeeper(chain).GetAllCCValidator(s.ctx(chain))
}
// delegatorBalance returns the balance of the delegator account
@@ -238,6 +239,33 @@ func (s *Driver) deliver(chain ChainId, numPackets int) {
s.path(chain).DeliverPackets(string(chain), numPackets)
}
+// packetQueue returns the queued packet sfrom sender to receiver,
+// where either sender or receiver must be the provider.
+func (s *Driver) packetQueue(sender ChainId, receiver ChainId) []simibc.Packet {
+ var path *simibc.RelayedPath
+ if sender == P {
+ path = s.path(receiver)
+ } else {
+ path = s.path(sender)
+ }
+ outboxes := path.Outboxes
+ outboxPackets := outboxes.OutboxPackets
+ res, ok := outboxPackets[string(sender)]
+ if !ok {
+ return []simibc.Packet{}
+ } else {
+ return res
+ }
+}
+
+func (s *Driver) getPacketsFromProviderToConsumer(consumer ChainId) []simibc.Packet {
+ return s.path(consumer).Outboxes.OutboxPackets[string(consumer)]
+}
+
+func (s *Driver) getPacketsFromConsumerToProvider(consumer ChainId) []simibc.Packet {
+ return s.path(consumer).Outboxes.OutboxPackets[P]
+}
+
func (s *Driver) getStateString() string {
var state strings.Builder
@@ -322,13 +350,13 @@ func (s *Driver) getChainStateString(chain ChainId) string {
outboxInfo.WriteString("OutgoingPackets: \n")
outgoing := s.path(chain).Outboxes.OutboxPackets[string(chain)]
for _, packet := range outgoing {
- outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet.Packet.String()))
}
outboxInfo.WriteString("IncomingPackets: \n")
incoming := s.path(chain).Outboxes.OutboxPackets[P]
for _, packet := range incoming {
- outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet.Packet.String()))
}
outboxInfo.WriteString("OutboxAcks:\n")
@@ -336,13 +364,13 @@ func (s *Driver) getChainStateString(chain ChainId) string {
outboxInfo.WriteString("OutgoingAcks: \n")
outgoingAcks := s.path(chain).Outboxes.OutboxAcks[string(chain)]
for _, packet := range outgoingAcks {
- outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet.Packet.String()))
}
outboxInfo.WriteString("IncomingAcks: \n")
incomingAcks := s.path(chain).Outboxes.OutboxAcks[P]
for _, packet := range incomingAcks {
- outboxInfo.WriteString(fmt.Sprintf("%v\n", packet))
+ outboxInfo.WriteString(fmt.Sprintf("%v\n", packet.Packet.String()))
}
chainInfo.WriteString(outboxInfo.String())
@@ -352,24 +380,15 @@ func (s *Driver) getChainStateString(chain ChainId) string {
}
// endAndBeginBlock ends the current block and begins a new one.
-// Before Comitting, it runs the preCommitCallback, which allows
-// checks to be run before the context of the old block is discarded.
// After comitting, it processes any packets that have been sent by the chain,
// as witnessed by events, and adds them to the correct paths.
// It also updates the client header on the paths
// that involve the chain.
-func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration) { //}, preCommitCallback func()) {
+func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration) {
testChain, found := s.coordinator.Chains[string(chain)]
require.True(s.t, found, "chain %s not found", chain)
- header, packets := simibc.EndBlock(testChain) //, preCommitCallback)
-
- for _, path := range s.simibcs {
- if path.InvolvesChain(string(chain)) {
- path.AddClientHeader(string(chain), header)
- path.Outboxes.Commit(string(chain))
- }
- }
+ header, packets := simibc.EndBlock(testChain, func() {})
// for each packet, find the path it should be sent on
for _, p := range packets {
@@ -386,6 +405,13 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration)
}
}
+ for _, path := range s.simibcs {
+ if path.InvolvesChain(string(chain)) {
+ path.AddClientHeader(string(chain), header)
+ path.Outboxes.Commit(string(chain))
+ }
+ }
+
simibc.BeginBlock(testChain, timeAdvancement)
for _, path := range s.simibcs {
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 473b7ca048..6f8b575300 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -1,55 +1,21 @@
package main
import (
+ "fmt"
"log"
+ "reflect"
"testing"
"time"
cmttypes "github.com/cometbft/cometbft/types"
- "github.com/cosmos/interchain-security/v3/testutil/integration"
+ sdktypes "github.com/cosmos/cosmos-sdk/types"
+ providertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types"
+
"github.com/informalsystems/itf-go/itf"
"github.com/stretchr/testify/require"
)
-// Given a map from node names to voting powers, create a validator set with the right voting powers.
-// All nodes should be included in the voting power map, even if they have voting power 0.
-// This way, the nodes will have validators (that can later be assigned voting powers) and signers created for them.
-//
-// Returns:
-// - a validator set
-// - a map from node names to validator objects and
-// - a map from validator addresses to private validators (signers)
-func CreateValSet(t *testing.T, initialValidatorSet map[string]int64) (*cmttypes.ValidatorSet, map[string]*cmttypes.Validator, map[string]cmttypes.PrivValidator) {
- // create a valSet and signers, but the voting powers will not yet be right
- valSet, _, signers := integration.CreateValidators(t, len(initialValidatorSet))
-
- // create a map from validator names to validators
- valMap := make(map[string]*cmttypes.Validator)
-
- // impose an order on the validators
- valNames := make([]string, 0, len(initialValidatorSet))
- for valName := range initialValidatorSet {
- valNames = append(valNames, valName)
- }
-
- // assign the validators from the created valSet to valNames in the chosen order
- for i, valName := range valNames {
- _, val := valSet.GetByIndex(int32(i))
- valMap[valName] = val
- }
-
- // create a valSet that has the right voting powers
- vals := make([]*cmttypes.Validator, len(valNames))
- for index, valName := range valNames {
- _, val := valSet.GetByIndex(int32(index))
- val.VotingPower = initialValidatorSet[valName]
- vals[index] = val
- }
-
- // override the valSet by creating a new one with the right voting powers
- valSet = cmttypes.NewValidatorSet(vals)
- return valSet, valMap, signers
-}
+const verbose = false
func TestItfTrace(t *testing.T) {
path := "trace.json"
@@ -69,14 +35,12 @@ func TestItfTrace(t *testing.T) {
varNames[varName] = true
}
- // sanity check: there are as many var names as we expect
- require.Equal(t, len(expectedVarNames), len(varNames), "Expected %v var names, got %v", expectedVarNames, varNames)
-
// sanity check: each expected var name should be in the set
for _, expectedVarName := range expectedVarNames {
_, ok := varNames[expectedVarName]
require.True(t, ok, "Expected var name %v not found in actual var names %v", expectedVarName, varNames)
}
+ // extra var names are ok, so no need to change the length
t.Log("Reading params...")
params := trace.States[0].VarValues["params"].Value.(itf.MapExprType)
@@ -135,6 +99,14 @@ func TestItfTrace(t *testing.T) {
driver := newDriver(t, nodes, valNames)
driver.setupChains(modelParams, valSet, signers, nodes, valNames, consumers)
+ // remember the time offsets to be able to compare times to the model
+ // this is necessary because the system needs to do many steps to initialize the chains,
+ // which is abstracted away in the model
+ timeOffsets := make(map[ChainId]time.Time, len(chains))
+ for _, chain := range chains {
+ timeOffsets[ChainId(chain)] = driver.time(ChainId(chain))
+ }
+
t.Log("Started chains")
t.Log("Reading the trace...")
@@ -151,6 +123,7 @@ func TestItfTrace(t *testing.T) {
switch actionKind {
case "init":
t.Log("Initializing...")
+ continue
case "VotingPowerChange":
node := lastAction["validator"].Value.(string)
changeAmount := lastAction["changeAmount"].Value.(int64)
@@ -171,39 +144,23 @@ func TestItfTrace(t *testing.T) {
consumersToStop := lastAction["consumersToStop"].Value.(itf.ListExprType)
t.Log("EndAndBeginBlockForProvider", timeAdvancement, consumersToStart, consumersToStop)
- // TODO continue here
- totalDuration := time.Duration(timeAdvancement) * time.Second
- halfDuration := totalDuration / 2
- halfDuration = halfDuration.Round(time.Second)
- remainingDuration := totalDuration - halfDuration
- remainingDuration = remainingDuration.Round(time.Second)
-
- require.True(t, halfDuration+remainingDuration == totalDuration)
+ // we need 2 blocks, because for a packet sent at height H, the receiving chain
+ // needs a header of height H+1 to accept the packet
+ // so we do one time advancement with a very small increment,
+ // and then increment the rest of the time]
// TODO: start and stop consumers
- driver.endAndBeginBlock("provider", time.Duration(1)*time.Second) //, func() {})
- driver.endAndBeginBlock("provider", time.Duration(1)*time.Second) //, func() {})
- driver.endAndBeginBlock("provider", time.Duration(1)*time.Second) //, func() {})
+ driver.endAndBeginBlock("provider", 1)
+ driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second-1)
case "EndAndBeginBlockForConsumer":
consumerChain := lastAction["consumerChain"].Value.(string)
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
t.Log("EndAndBeginBlockForConsumer", consumerChain, timeAdvancement)
- // TODO continue here
- totalDuration := time.Duration(timeAdvancement) * time.Second
- halfDuration := totalDuration / 2
- halfDuration = halfDuration.Round(time.Second)
- remainingDuration := totalDuration - halfDuration
- remainingDuration = remainingDuration.Round(time.Second)
- // this is trying to split into two parts, but fails because all need to be non-0
- // updating client multiple times with headers that do not progress in time is not allowed
-
- require.True(t, halfDuration+remainingDuration == totalDuration)
-
- // time duration needs 3 parts because the packet needs 3 commits to be delivered
- driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(1)*time.Second) //, func() {})
- driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(1)*time.Second) //, func() {})
- driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(1)*time.Second) //, func() {})
+ // as in EndAndBeginBlockForProvider, we need to produce 2 blocks,
+ // while still honoring the time advancement
+ driver.endAndBeginBlock(ChainId(consumerChain), 1)
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second-1)
case "DeliverVscPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
t.Log("DeliverVscPacket", consumerChain)
@@ -220,7 +177,148 @@ func TestItfTrace(t *testing.T) {
path, index, actionKind)
}
- t.Logf("Current actual state: %s", driver.getStateString())
+ if verbose {
+ t.Logf("Current actual state: %s", driver.getStateString())
+ }
+
+ currentModelState := state.VarValues["currentState"].Value.(itf.MapExprType)
+ // check that the actual state is the same as the model state
+
+ // check validator sets - provider current validator set should be the one from the staking keeper
+
+ // provider
+ // consumers - current validator set does not correspond to anything,
+ // we can only check the head of the voting power history
+ // no assignment found, so providerConsAddr is the consumerConsAddr
+ t.Log("Comparing validator sets")
+ CompareValidatorSets(t, driver, currentModelState, consumers, index)
+ t.Log("Validator sets match")
+
+ // check times - sanity check that the block times match the ones from the model
+ t.Log("Comparing timestamps")
+ CompareTimes(t, driver, consumers, currentModelState, timeOffsets)
+ t.Log("Timestamps match")
+
+ // check sent packets: we check that the package queues in the model and the system have the same length.
+ t.Log("Comparing packet queues")
+ for _, consumer := range consumers {
+ ComparePacketQueues(t, driver, currentModelState, consumer)
+ }
+ t.Log("Packet queues match")
}
t.FailNow()
}
+
+func CompareValidatorSets(t *testing.T, driver *Driver, currentModelState map[string]itf.Expr, consumers []string, index int) {
+ modelValSet := ValidatorSet(currentModelState, "provider")
+ curValSet := driver.providerValidatorSet("provider")
+
+ actualValSet := make(map[string]int64, len(curValSet))
+
+ for _, val := range curValSet {
+ valName := val.Description.Moniker
+ actualValSet[valName] = int64(val.Tokens.Int64())
+ }
+
+ require.NoError(t, CompareValSet(modelValSet, actualValSet), "Validator sets do not match")
+
+ for _, consumer := range consumers {
+ modelValSet = HistoricalValidatorSet(currentModelState, consumer, 0)
+
+ consumerVals := driver.consumerValidatorSet(ChainId(consumer))
+ consumerCurValSet := make(map[string]int64, len(consumerVals))
+ for _, val := range consumerVals {
+ pubkey, err := val.ConsPubKey()
+ require.NoError(t, err, "Error getting pubkey")
+
+ consAddr := providertypes.NewConsumerConsAddress(sdktypes.ConsAddress(pubkey.Address().Bytes()))
+
+ providerConsAddr, found := driver.providerKeeper().GetValidatorByConsumerAddr(driver.providerCtx(), consumer, consAddr)
+ if !found {
+ providerConsAddr = providertypes.NewProviderConsAddress(consAddr.Address)
+ }
+
+ providerVal, found := driver.providerStakingKeeper().GetValidatorByConsAddr(driver.providerCtx(), providerConsAddr.Address)
+ require.True(t, found, "Error getting provider validator")
+
+ consumerCurValSet[providerVal.GetMoniker()] = int64(val.Power)
+ }
+ for val, power := range modelValSet {
+ _ = val
+ intPow := power.Value.(int64)
+ _ = intPow
+ }
+ require.NoError(t, CompareValSet(modelValSet, consumerCurValSet), "Validator sets do not match for consumer %v", consumer)
+ }
+}
+
+// ComparePacketQueues compares the packet queues in the model to the packet queues in the system.
+// It compares both incoming (provider->consumer) and outgoing (consumer->provider) packets.
+// It only takes the number of packets into account, not the contents.
+func ComparePacketQueues(
+ t *testing.T,
+ driver *Driver,
+ currentModelState map[string]itf.Expr,
+ consumer string,
+) {
+ ComparePacketQueue(t, driver, currentModelState, Provider, consumer)
+ ComparePacketQueue(t, driver, currentModelState, consumer, Provider)
+}
+
+func ComparePacketQueue(t *testing.T, driver *Driver, currentModelState map[string]itf.Expr, sender string, receiver string) {
+ modelSenderQueue := PacketQueue(currentModelState, sender, receiver)
+ actualSenderQueue := driver.packetQueue(ChainId(sender), ChainId(receiver))
+
+ require.Equal(t,
+ len(modelSenderQueue),
+ len(actualSenderQueue),
+ "Packet queues do not match for sender %v, receiver %v",
+ sender,
+ receiver)
+}
+
+// CompareTimes compares the block times in the model to the block times in the system.
+// It takes into account the timeOffsets, which should be the starting times
+// of the chains in the system after the system has been initialized.
+func CompareTimes(
+ t *testing.T,
+ driver *Driver,
+ consumers []string,
+ currentModelState map[string]itf.Expr,
+ timeOffsets map[ChainId]time.Time,
+) {
+ providerLastTimestamp := Time(currentModelState, "provider")
+ actualProviderTime := driver.time("provider")
+ providerOffset := timeOffsets["provider"]
+
+ require.Equal(t,
+ providerLastTimestamp,
+ actualProviderTime.Unix()-providerOffset.Unix(),
+ "Block times do not match")
+
+ for _, chain := range consumers {
+ modelLastTimestamp := Time(currentModelState, chain)
+ actualChainTime := driver.time(ChainId(chain))
+
+ require.Equal(t,
+ modelLastTimestamp,
+ actualChainTime.Unix()-timeOffsets[ChainId(chain)].Unix(),
+ "Block times do not match")
+ }
+}
+
+// CompareValSet compares the validator set in the model to the validator set in the system.
+// The model validator set is given as a map from validator name to power,
+// whereas the system validator set is given as a slice of validators.
+// The names in the model validator set are expected to correspond to the monikers in the system validator set.
+func CompareValSet(modelValSet map[string]itf.Expr, systemValSet map[string]int64) error {
+ expectedValSet := make(map[string]int64, len(modelValSet))
+ for val, power := range modelValSet {
+ expectedValSet[val] = power.Value.(int64)
+ }
+
+ if !reflect.DeepEqual(expectedValSet, systemValSet) {
+ return fmt.Errorf("Model validator set %v, system validator set %v", expectedValSet, systemValSet)
+ }
+ return nil
+}
diff --git a/tests/difference/core/quint_model/driver/model_viewer.go b/tests/difference/core/quint_model/driver/model_viewer.go
new file mode 100644
index 0000000000..b293effbb9
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/model_viewer.go
@@ -0,0 +1,57 @@
+package main
+
+import "github.com/informalsystems/itf-go/itf"
+
+// This file contains logic to process
+// and access parts of the current state of the Quint trace.
+
+const Provider = "provider"
+
+func ProviderState(curStateExpr itf.MapExprType) itf.MapExprType {
+ return curStateExpr["providerState"].Value.(itf.MapExprType)
+}
+
+func ConsumerState(curStateExpr itf.MapExprType, consumer string) itf.MapExprType {
+ return curStateExpr["consumerStates"].Value.(itf.MapExprType)[consumer].Value.(itf.MapExprType)
+}
+
+func State(curStateExpr itf.MapExprType, chain string) itf.MapExprType {
+ if chain == Provider {
+ return ProviderState(curStateExpr)
+ } else {
+ return ConsumerState(curStateExpr, chain)
+ }
+}
+
+func ChainState(curStateExpr itf.MapExprType, chain string) itf.MapExprType {
+ return State(curStateExpr, chain)["chainState"].Value.(itf.MapExprType)
+}
+
+func ValidatorSet(curStateExpr itf.MapExprType, chain string) itf.MapExprType {
+ return ChainState(curStateExpr, chain)["currentValidatorSet"].Value.(itf.MapExprType)
+}
+
+func HistoricalValidatorSet(curStateExpr itf.MapExprType, chain string, index int) itf.MapExprType {
+ history := ChainState(curStateExpr, chain)["votingPowerHistory"].Value.(itf.ListExprType)
+ return history[index].Value.(itf.MapExprType)
+}
+
+func Time(curStateExpr itf.MapExprType, chain string) int64 {
+ return ChainState(curStateExpr, chain)["lastTimestamp"].Value.(int64)
+}
+
+// PacketQueue returns the queued packets between sender and receiver.
+// Either sender or receiver need to be the provider.
+func PacketQueue(curStateExpr itf.MapExprType, sender string, receiver string) itf.ListExprType {
+ if sender == Provider {
+ packetQueue := ProviderState(curStateExpr)["outstandingPacketsToConsumer"].Value.(itf.MapExprType)[receiver]
+ if packetQueue.Value == nil {
+ return itf.ListExprType{}
+ } else {
+ return packetQueue.Value.([]itf.Expr)
+ }
+ } else {
+ consumerState := State(curStateExpr, sender)
+ return consumerState["outstandingPacketsToProvider"].Value.([]itf.Expr)
+ }
+}
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 8a87e0d577..381f5560e2 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -18,6 +18,7 @@ import (
commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
+ "github.com/cosmos/interchain-security/v3/testutil/integration"
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
"github.com/stretchr/testify/require"
@@ -46,6 +47,46 @@ var (
ConsensusParams = cmttypes.DefaultConsensusParams()
)
+// Given a map from node names to voting powers, create a validator set with the right voting powers.
+// All nodes should be included in the voting power map, even if they have voting power 0.
+// This way, the nodes will have validators (that can later be assigned voting powers) and signers created for them.
+//
+// Returns:
+// - a validator set
+// - a map from node names to validator objects and
+// - a map from validator addresses to private validators (signers)
+func CreateValSet(t *testing.T, initialValidatorSet map[string]int64) (*cmttypes.ValidatorSet, map[string]*cmttypes.Validator, map[string]cmttypes.PrivValidator) {
+ // create a valSet and signers, but the voting powers will not yet be right
+ valSet, _, signers := integration.CreateValidators(t, len(initialValidatorSet))
+
+ // create a map from validator names to validators
+ valMap := make(map[string]*cmttypes.Validator)
+
+ // impose an order on the validators
+ valNames := make([]string, 0, len(initialValidatorSet))
+ for valName := range initialValidatorSet {
+ valNames = append(valNames, valName)
+ }
+
+ // assign the validators from the created valSet to valNames in the chosen order
+ for i, valName := range valNames {
+ _, val := valSet.GetByIndex(int32(i))
+ valMap[valName] = val
+ }
+
+ // create a valSet that has the right voting powers
+ vals := make([]*cmttypes.Validator, len(valNames))
+ for index, valName := range valNames {
+ _, val := valSet.GetByIndex(int32(index))
+ val.VotingPower = initialValidatorSet[valName]
+ vals[index] = val
+ }
+
+ // override the valSet by creating a new one with the right voting powers
+ valSet = cmttypes.NewValidatorSet(vals)
+ return valSet, valMap, signers
+}
+
func getAppBytesAndSenders(
chainID string,
modelParams ModelParams,
@@ -287,16 +328,26 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
tmCfg := providerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[ChainId(providerChain.ChainID)]
tmCfg.TrustingPeriod = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)]
+ tmCfg.MaxClockDrift = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)] // make the clock drift a non-issue
err := providerEndPoint.CreateClient()
require.NoError(s.t, err, "Error creating client on provider for chain %v", consumerChain.ChainID)
// Create the Consumer chain ID mapping in the provider state
s.providerKeeper().SetConsumerClientId(providerChain.GetContext(), consumerChain.ChainID, providerEndPoint.ClientID)
+ // create consumer key assignment
+ // for _, val := range s.providerValidatorSet(ChainId(providerChain.ChainID)) {
+ // pubKey, err := val.TmConsPublicKey()
+ // require.NoError(s.t, err, "Error getting consensus pubkey for validator %v", val)
+
+ // err = s.providerKeeper().AssignConsumerKey(providerChain.GetContext(), consumerChain.ChainID, val, pubKey)
+ // }
+
// Configure and create the client on the consumer
tmCfg = consumerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[consumerChainId]
tmCfg.TrustingPeriod = params.TrustingPeriodPerChain[consumerChainId]
+ tmCfg.MaxClockDrift = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)] // make the clock drift a non-issue
consumerClientState := ibctmtypes.NewClientState(
providerChain.ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
@@ -326,8 +377,8 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
// Commit a block on both chains, giving us two committed headers from
// the same time and height. This is the starting point for all our
// data driven testing.
- lastConsumerHeader, _ := simibc.EndBlock(consumerChain) //, func() {})
- lastProviderHeader, _ = simibc.EndBlock(providerChain) //, func() {})
+ lastConsumerHeader, _ := simibc.EndBlock(consumerChain, func() {})
+ lastProviderHeader, _ = simibc.EndBlock(providerChain, func() {})
// Get ready to update clients.
simibc.BeginBlock(providerChain, 5)
@@ -357,7 +408,7 @@ func (s *Driver) setupChains(
providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes, valNames)
s.coordinator.Chains["provider"] = providerChain
- providerHeader, _ := simibc.EndBlock(providerChain) //, func() {})
+ providerHeader, _ := simibc.EndBlock(providerChain, func() {})
simibc.BeginBlock(providerChain, 0)
// start consumer chains
diff --git a/tests/difference/core/quint_model/driver/trace.json b/tests/difference/core/quint_model/driver/trace.json
index d0f4fac106..9f3c7c35c1 100644
--- a/tests/difference/core/quint_model/driver/trace.json
+++ b/tests/difference/core/quint_model/driver/trace.json
@@ -1,6423 +1 @@
-{
- "#meta": {
- "format": "ITF",
- "format-description": "https://apalache.informal.systems/docs/adr/015adr-trace.html",
- "source": "ccv_model.qnt",
- "status": "violation",
- "description": "Created by Quint on Fri Nov 10 2023 10:07:52 GMT+0100 (Central European Standard Time)",
- "timestamp": 1699607272414
- },
- "vars": [
- "currentState",
- "trace",
- "params"
- ],
- "states": [
- {
- "#meta": {
- "index": 0
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "not consumer"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": false,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 1
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "not consumer"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "0"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- }
- ]
- },
- {
- "#meta": {
- "index": 2
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": false,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 3
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [
- {
- "#tup": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- },
- {
- "#bigint": "1209600"
- }
- ]
- }
- ],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": false,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "DeliverVscPacket",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 4
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [
- {
- "#tup": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- },
- {
- "#bigint": "1209600"
- }
- ]
- }
- ],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "150"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "DeliverVscPacket",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node3"
- }
- ]
- },
- {
- "#meta": {
- "index": 5
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "601200"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": [
- {
- "#tup": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- },
- {
- "#bigint": "1209600"
- }
- ]
- }
- ],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "150"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "DeliverVscPacket",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node3"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "timeAdvancement": {
- "#bigint": "601200"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 6
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1202400"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": [
- {
- "#tup": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- },
- {
- "#bigint": "1209600"
- }
- ]
- }
- ],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "150"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "DeliverVscPacket",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node3"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "timeAdvancement": {
- "#bigint": "601200"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "timeAdvancement": {
- "#bigint": "601200"
- },
- "validator": ""
- }
- ]
- },
- {
- "#meta": {
- "index": 7
- },
- "currentState": {
- "consumerStates": {
- "#map": [
- [
- "consumer1",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer2",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": []
- },
- "lastTimestamp": {
- "#bigint": "0"
- },
- "votingPowerHistory": []
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [],
- "receivedVscPackets": []
- }
- ],
- [
- "consumer3",
- {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1803600"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "maturationTimes": [],
- "outstandingPacketsToProvider": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1803600"
- }
- }
- ],
- "receivedVscPackets": [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- }
- ]
- ]
- },
- "providerState": {
- "chainState": {
- "currentValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "150"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "lastTimestamp": {
- "#bigint": "1"
- },
- "votingPowerHistory": [
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- ]
- },
- "consumerStatus": {
- "#map": [
- [
- "consumer1",
- "not consumer"
- ],
- [
- "consumer2",
- "not consumer"
- ],
- [
- "consumer3",
- "running"
- ]
- ]
- },
- "outstandingPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- []
- ]
- ]
- },
- "providerValidatorSetChangedInThisBlock": true,
- "receivedMaturations": {
- "#set": []
- },
- "runningVscId": {
- "#bigint": "1"
- },
- "sentVscPacketsToConsumer": {
- "#map": [
- [
- "consumer1",
- []
- ],
- [
- "consumer2",
- []
- ],
- [
- "consumer3",
- [
- {
- "id": {
- "#bigint": "0"
- },
- "sendingTime": {
- "#bigint": "1"
- },
- "validatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "50"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- }
- }
- ]
- ]
- ]
- }
- }
- },
- "params": {
- "CcvTimeout": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1814400"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1814400"
- }
- ]
- ]
- },
- "ConsumerChains": {
- "#set": [
- "consumer1",
- "consumer2",
- "consumer3"
- ]
- },
- "InitialValidatorSet": {
- "#map": [
- [
- "node1",
- {
- "#bigint": "100"
- }
- ],
- [
- "node10",
- {
- "#bigint": "100"
- }
- ],
- [
- "node2",
- {
- "#bigint": "100"
- }
- ],
- [
- "node3",
- {
- "#bigint": "100"
- }
- ],
- [
- "node4",
- {
- "#bigint": "100"
- }
- ],
- [
- "node5",
- {
- "#bigint": "100"
- }
- ],
- [
- "node6",
- {
- "#bigint": "100"
- }
- ],
- [
- "node7",
- {
- "#bigint": "100"
- }
- ],
- [
- "node8",
- {
- "#bigint": "100"
- }
- ],
- [
- "node9",
- {
- "#bigint": "100"
- }
- ]
- ]
- },
- "Nodes": {
- "#set": [
- "node1",
- "node10",
- "node2",
- "node3",
- "node4",
- "node5",
- "node6",
- "node7",
- "node8",
- "node9"
- ]
- },
- "TrustingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "604800"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "604800"
- }
- ],
- [
- "provider",
- {
- "#bigint": "604800"
- }
- ]
- ]
- },
- "UnbondingPeriodPerChain": {
- "#map": [
- [
- "consumer1",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer2",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "consumer3",
- {
- "#bigint": "1209600"
- }
- ],
- [
- "provider",
- {
- "#bigint": "1209600"
- }
- ]
- ]
- },
- "VscTimeout": {
- "#bigint": "3024000"
- }
- },
- "trace": [
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "init",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "-50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node8"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": [
- "consumer3"
- ]
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForProvider",
- "timeAdvancement": {
- "#bigint": "1"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "DeliverVscPacket",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "50"
- },
- "consumerChain": "",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "VotingPowerChange",
- "timeAdvancement": {
- "#bigint": "0"
- },
- "validator": "node3"
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "timeAdvancement": {
- "#bigint": "601200"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "timeAdvancement": {
- "#bigint": "601200"
- },
- "validator": ""
- },
- {
- "changeAmount": {
- "#bigint": "0"
- },
- "consumerChain": "consumer3",
- "consumersToStart": {
- "#set": []
- },
- "consumersToStop": {
- "#set": []
- },
- "kind": "EndAndBeginBlockForConsumer",
- "timeAdvancement": {
- "#bigint": "601200"
- },
- "validator": ""
- }
- ]
- }
- ]
-}
\ No newline at end of file
+{"#meta":{"format":"ITF","format-description":"https://apalache.informal.systems/docs/adr/015adr-trace.html","source":"ccv_happy.qnt","status":"violation","description":"Created by Quint on Thu Nov 16 2023 12:49:55 GMT+0100 (GMT+01:00)","timestamp":1700135395077},"vars":["QueuedEndBlocks","currentState","trace","params"],"states":[{"#meta":{"index":0},"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","not consumer"],["consumer2","not consumer"],["consumer3","not consumer"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""}]},{"#meta":{"index":1},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"1"}]},{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":2},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":3},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":4},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":5},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":true,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"}]},{"#meta":{"index":6},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"1"}]},{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":7},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":8},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":9},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":10},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""}]},{"#meta":{"index":11},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""}]},{"#meta":{"index":12},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"601200"}]},{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":13},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":14},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":15},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":16},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"601200"}]},{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":17},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":18},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":19},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":20},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"601200"}]},{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":21},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":22},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":23},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":24},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"86400"}]},{"#tup":["consumer2",{"#bigint":"86400"}]},{"#tup":["consumer3",{"#bigint":"86400"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":25},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"86400"}]},{"#tup":["consumer3",{"#bigint":"86400"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":26},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"86400"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":27},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":28},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscMaturedPacket","timeAdvancement":{"#bigint":"0"},"validator":""}]}]}
\ No newline at end of file
diff --git a/testutil/simibc/chain_util.go b/testutil/simibc/chain_util.go
index fe60002333..b102fffd13 100644
--- a/testutil/simibc/chain_util.go
+++ b/testutil/simibc/chain_util.go
@@ -41,7 +41,7 @@ func BeginBlock(c *ibctesting.TestChain, dt time.Duration) {
// NOTE: this method may be used independently of the rest of simibc.
func EndBlock(
c *ibctesting.TestChain,
- // preCommitCallback func(),
+ preCommitCallback func(),
) (*ibctmtypes.Header, []channeltypes.Packet) {
ebRes := c.App.EndBlock(abci.RequestEndBlock{Height: c.CurrentHeader.Height})
diff --git a/testutil/simibc/ordered_outbox.go b/testutil/simibc/ordered_outbox.go
index 3c969d2a32..b107cda7d8 100644
--- a/testutil/simibc/ordered_outbox.go
+++ b/testutil/simibc/ordered_outbox.go
@@ -2,6 +2,15 @@ package simibc
import channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
+// The number of blocks to wait before a packet or ack is available for delivery
+// after it has been comitted on the chain.
+// For example, if DelayPeriodBlocks is 0 and a packet p was sent at height h
+// (i.e. the chain has produced a header height h)
+// the packet can immediately be received.
+// If DelayPeriodBlocks is 1, the packet can be received
+// once the chain has produced a header for height h + 1.
+const DelayPeriodBlocks = 1
+
// Ack represents a (sent) ack committed to block state
type Ack struct {
Ack []byte
@@ -67,7 +76,7 @@ func (n OrderedOutbox) ConsumePackets(sender string, num int) []Packet {
num = sz
}
for _, p := range n.OutboxPackets[sender][:num] {
- if 1 < p.Commits {
+ if DelayPeriodBlocks < p.Commits {
ret = append(ret, p)
} else {
break
From 8f8d2c4e3db767b8fc27e8a218a8d87e1d18a2fd Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Mon, 20 Nov 2023 09:33:56 +0100
Subject: [PATCH 024/111] Add type annotations
---
tests/difference/core/quint_model/ccv.qnt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 5087098e3d..be7bc74efc 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -474,7 +474,7 @@ module ccv {
val maturedPackets = newConsumerState.maturationTimes.select(
pair =>
val packet = pair._1
- val maturationTime = pair._2
+ val maturationTime: Time = pair._2
// important that the old chain state is used here, because sending packets happens on EndBlock,
// but the new timestamp only appears after BeginBlock
maturationTime <= oldChainState.lastTimestamp
@@ -482,7 +482,7 @@ module ccv {
val newMaturationTimes = newConsumerState.maturationTimes.select(
pair =>
val packet = pair._1
- val maturationTime = pair._2
+ val maturationTime: Time = pair._2
// important that the old chain state is used here, because sending packets happens on EndBlock,
// but the new timestamp only appears after BeginBlock
maturationTime > oldChainState.lastTimestamp
From 6dacc097a2332c795062cf6a261695859226231e Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 22 Nov 2023 11:06:18 +0100
Subject: [PATCH 025/111] Add ack delivery after each step
---
.../core/quint_model/driver/core.go | 10 ++++
.../core/quint_model/driver/mbt_test.go | 5 +-
.../core/quint_model/driver/trace_gen.go | 60 +++++++++++++++++++
3 files changed, 74 insertions(+), 1 deletion(-)
create mode 100644 tests/difference/core/quint_model/driver/trace_gen.go
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 03e65f008c..6fb993b2c4 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -2,6 +2,7 @@ package main
import (
"fmt"
+ "math"
"strings"
"testing"
"time"
@@ -435,6 +436,15 @@ func (s *Driver) DeliverPacketFromConsumer(sender ChainId) {
s.path(sender).DeliverPackets(P, 1) // deliver to the provider
}
+// DeliverAcks delivers, for each path,
+// all possible acks (up to math.MaxInt many per path).
+func (s *Driver) DeliverAcks() {
+ for _, path := range s.simibcs {
+ path.DeliverAcks(string(path.Path.EndpointA.Chain.ChainID), math.MaxInt)
+ path.DeliverAcks(string(path.Path.EndpointB.Chain.ChainID), math.MaxInt)
+ }
+}
+
// newDriver creates a new Driver object.
// It creates a new coordinator, but does not start any chains.
// The caller must call setupChains to start the chains and
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 6f8b575300..ccd1955eee 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -15,7 +15,7 @@ import (
"github.com/stretchr/testify/require"
)
-const verbose = false
+const verbose = true
func TestItfTrace(t *testing.T) {
path := "trace.json"
@@ -177,6 +177,9 @@ func TestItfTrace(t *testing.T) {
path, index, actionKind)
}
+ // deliver all acks that are ready
+ driver.DeliverAcks()
+
if verbose {
t.Logf("Current actual state: %s", driver.getStateString())
}
diff --git a/tests/difference/core/quint_model/driver/trace_gen.go b/tests/difference/core/quint_model/driver/trace_gen.go
new file mode 100644
index 0000000000..2643e16b78
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/trace_gen.go
@@ -0,0 +1,60 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "os/exec"
+)
+
+type ModelConfig struct {
+ modelPath string
+ init string
+ step string
+}
+
+type InvariantConfig struct {
+ invariant string
+ numSamples int
+ numSteps int
+}
+
+// GenerateTraces generates a number of traces for a given invariant
+// and stores them in a given folder.
+// The traces will be named trace_0, trace_1, etc.
+// For each trace that is produced, quint will run at most for numSteps steps,
+// and run numSamples samples.
+// If a quint run does not produce a trace that violates the invariant,
+// it will not be retried, and there will simply be fewer than numTraces traces.
+func GenerateTraces(numTraces int, modelConfig ModelConfig, invConfig InvariantConfig, traceFolder string) {
+ // make sure the folder exists
+ if err := os.MkdirAll(traceFolder, 0o755); err != nil {
+ panic(err)
+ }
+
+ for i := 0; i < numTraces; i++ {
+ // Generate trace
+ traceName := fmt.Sprintf("trace_%d", i)
+ GenerateTrace(modelConfig, invConfig, traceName)
+ }
+}
+
+func GenerateTrace(modelConfig ModelConfig, invConfig InvariantConfig, traceName string) {
+ cmd := fmt.Sprintf(
+ "quint run --out-itf %v --init %v --step %v --invariant=%v --max-steps=%v --max-samples=%v %v",
+ traceName,
+ modelConfig.init,
+ modelConfig.step,
+ invConfig.invariant,
+ invConfig.numSteps,
+ invConfig.numSamples,
+ modelConfig.modelPath,
+ )
+
+ fmt.Println(cmd)
+
+ out, err := exec.Command("bash", "-c", cmd).CombinedOutput()
+ if err != nil {
+ fmt.Println(string(out))
+ panic(err)
+ }
+}
From 2c3a6d5568dd056fe3997e79eff478871fd28c20 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 22 Nov 2023 13:27:25 +0100
Subject: [PATCH 026/111] Add programmatic ways of generating traces
---
.../core/quint_model/driver/.gitignore | 1 +
.../quint_model/driver/generate_traces.sh | 1 +
.../core/quint_model/driver/main.go | 77 +++++++++++++++++++
.../core/quint_model/driver/mbt_test.go | 28 +++++--
.../core/quint_model/driver/trace_gen.go | 11 ++-
5 files changed, 110 insertions(+), 8 deletions(-)
create mode 100644 tests/difference/core/quint_model/driver/.gitignore
create mode 100755 tests/difference/core/quint_model/driver/generate_traces.sh
create mode 100644 tests/difference/core/quint_model/driver/main.go
diff --git a/tests/difference/core/quint_model/driver/.gitignore b/tests/difference/core/quint_model/driver/.gitignore
new file mode 100644
index 0000000000..f20fc92b55
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/.gitignore
@@ -0,0 +1 @@
+traces/*
diff --git a/tests/difference/core/quint_model/driver/generate_traces.sh b/tests/difference/core/quint_model/driver/generate_traces.sh
new file mode 100755
index 0000000000..7dc347bd89
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/generate_traces.sh
@@ -0,0 +1 @@
+go run ./... -modelPath=../ccv_happy.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces -numTraces 50
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/main.go b/tests/difference/core/quint_model/driver/main.go
new file mode 100644
index 0000000000..d6343a2ee5
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/main.go
@@ -0,0 +1,77 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "os"
+)
+
+// main generates traces according to a given config
+// and stores them in a folder.
+// This can be used to generate traces for testing, see mbt_test.go
+func main() {
+ // Define command-line flags
+ modelPath := flag.String("modelPath", "", "Path to the model")
+ init := flag.String("init", "init", "init action to use for quint")
+ step := flag.String("step", "step", "step action to use for quint")
+ invariant := flag.String("invariant", "", "The invariant to check")
+ numSamples := flag.Int("numSamples", 20, "Number of samples")
+ numSteps := flag.Int("numSteps", 20, "Number of steps")
+ traceFolder := flag.String("traceFolder", "", "Path to the trace folder")
+ numTraces := flag.Int("numTraces", 0, "Number of traces to generate")
+
+ // Parse command-line flags
+ flag.Parse()
+
+ // ensure flags were set
+ if *modelPath == "" {
+ fmt.Println("Error: modelPath flag is required")
+ os.Exit(1)
+ }
+
+ if *invariant == "" {
+ fmt.Println("Error: invariant flag is required")
+ os.Exit(1)
+ }
+
+ if *traceFolder == "" {
+ fmt.Println("Error: traceFolder flag is required")
+ os.Exit(1)
+ }
+
+ if *numTraces == 0 {
+ fmt.Println("Error: numTraces flag is required")
+ os.Exit(1)
+ }
+
+ // Create ModelConfig and InvariantConfig instances
+ modelConfig := ModelConfig{
+ modelPath: *modelPath,
+ init: *init,
+ step: *step,
+ }
+
+ invariantConfig := InvariantConfig{
+ invariant: *invariant,
+ numSamples: *numSamples,
+ numSteps: *numSteps,
+ }
+
+ // Print the parsed values
+ fmt.Println("Model Config:")
+ fmt.Println("Model Path:", modelConfig.modelPath)
+ fmt.Println("Init:", modelConfig.init)
+ fmt.Println("Step:", modelConfig.step)
+
+ fmt.Println("Invariant Config:")
+ fmt.Println("Invariant:", invariantConfig.invariant)
+ fmt.Println("Num Samples:", invariantConfig.numSamples)
+ fmt.Println("Num Steps:", invariantConfig.numSteps)
+
+ fmt.Println("Trace Folder:", *traceFolder)
+
+ fmt.Println("Num Traces:", *numTraces)
+
+ // Generate the traces
+ GenerateTraces(*numTraces, modelConfig, invariantConfig, *traceFolder)
+}
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index ccd1955eee..f0611f6a70 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"log"
+ "os"
"reflect"
"testing"
"time"
@@ -15,16 +16,29 @@ import (
"github.com/stretchr/testify/require"
)
-const verbose = true
+const verbose = false
-func TestItfTrace(t *testing.T) {
- path := "trace.json"
+func TestMBT(t *testing.T) {
+ dirEntries, err := os.ReadDir("traces")
+ if err != nil {
+ t.Fatal("Error:", err)
+ }
+
+ t.Log("Running traces from the traces folder")
+
+ for _, dirEntry := range dirEntries {
+ t.Log("Running trace ", dirEntry.Name())
+ RunItfTrace(t, "traces/"+dirEntry.Name())
+ }
+}
+
+func RunItfTrace(t *testing.T, path string) {
t.Logf("🟡 Testing trace %s", path)
// Load trace
trace := &itf.Trace{}
if err := trace.LoadFromFile(path); err != nil {
- log.Fatalf("Error loading trace file: %s", err)
+ t.Fatalf("Error loading trace file: %s", err)
}
expectedVarNames := []string{"currentState", "params", "trace"}
@@ -209,7 +223,6 @@ func TestItfTrace(t *testing.T) {
}
t.Log("Packet queues match")
}
- t.FailNow()
}
func CompareValidatorSets(t *testing.T, driver *Driver, currentModelState map[string]itf.Expr, consumers []string, index int) {
@@ -317,9 +330,12 @@ func CompareTimes(
func CompareValSet(modelValSet map[string]itf.Expr, systemValSet map[string]int64) error {
expectedValSet := make(map[string]int64, len(modelValSet))
for val, power := range modelValSet {
+ // strip away vals with power 0, since they do not appear at all in the system val set
+ if power.Value.(int64) == 0 {
+ continue
+ }
expectedValSet[val] = power.Value.(int64)
}
-
if !reflect.DeepEqual(expectedValSet, systemValSet) {
return fmt.Errorf("Model validator set %v, system validator set %v", expectedValSet, systemValSet)
}
diff --git a/tests/difference/core/quint_model/driver/trace_gen.go b/tests/difference/core/quint_model/driver/trace_gen.go
index 2643e16b78..d8a2a6e1dc 100644
--- a/tests/difference/core/quint_model/driver/trace_gen.go
+++ b/tests/difference/core/quint_model/driver/trace_gen.go
@@ -2,8 +2,10 @@ package main
import (
"fmt"
+ "log"
"os"
"os/exec"
+ "strings"
)
type ModelConfig struct {
@@ -24,7 +26,7 @@ type InvariantConfig struct {
// For each trace that is produced, quint will run at most for numSteps steps,
// and run numSamples samples.
// If a quint run does not produce a trace that violates the invariant,
-// it will not be retried, and there will simply be fewer than numTraces traces.
+// the trace will still be stored in the folder.
func GenerateTraces(numTraces int, modelConfig ModelConfig, invConfig InvariantConfig, traceFolder string) {
// make sure the folder exists
if err := os.MkdirAll(traceFolder, 0o755); err != nil {
@@ -33,8 +35,10 @@ func GenerateTraces(numTraces int, modelConfig ModelConfig, invConfig InvariantC
for i := 0; i < numTraces; i++ {
// Generate trace
- traceName := fmt.Sprintf("trace_%d", i)
+ traceName := fmt.Sprintf("%v/trace_%d", traceFolder, i)
GenerateTrace(modelConfig, invConfig, traceName)
+
+ log.Println("Generated trace", traceName)
}
}
@@ -54,6 +58,9 @@ func GenerateTrace(modelConfig ModelConfig, invConfig InvariantConfig, traceName
out, err := exec.Command("bash", "-c", cmd).CombinedOutput()
if err != nil {
+ if strings.Contains(string(out), "Invariant violated") {
+ return // this is an expected error, so no need to panic
+ }
fmt.Println(string(out))
panic(err)
}
From 71a3b80835f1ca9edcde90aab0bd945e0c4a141b Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 22 Nov 2023 13:39:58 +0100
Subject: [PATCH 027/111] Make invariant optional
---
tests/difference/core/quint_model/driver/main.go | 5 -----
tests/difference/core/quint_model/driver/trace_gen.go | 10 ++++++++--
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/main.go b/tests/difference/core/quint_model/driver/main.go
index d6343a2ee5..39193eff26 100644
--- a/tests/difference/core/quint_model/driver/main.go
+++ b/tests/difference/core/quint_model/driver/main.go
@@ -29,11 +29,6 @@ func main() {
os.Exit(1)
}
- if *invariant == "" {
- fmt.Println("Error: invariant flag is required")
- os.Exit(1)
- }
-
if *traceFolder == "" {
fmt.Println("Error: traceFolder flag is required")
os.Exit(1)
diff --git a/tests/difference/core/quint_model/driver/trace_gen.go b/tests/difference/core/quint_model/driver/trace_gen.go
index d8a2a6e1dc..3d23b6512d 100644
--- a/tests/difference/core/quint_model/driver/trace_gen.go
+++ b/tests/difference/core/quint_model/driver/trace_gen.go
@@ -43,12 +43,18 @@ func GenerateTraces(numTraces int, modelConfig ModelConfig, invConfig InvariantC
}
func GenerateTrace(modelConfig ModelConfig, invConfig InvariantConfig, traceName string) {
+ var invariant_config string
+ if invConfig.invariant != "" {
+ invariant_config = fmt.Sprintf("--invariant=%v", invConfig.invariant)
+ } else {
+ invariant_config = ""
+ }
cmd := fmt.Sprintf(
- "quint run --out-itf %v --init %v --step %v --invariant=%v --max-steps=%v --max-samples=%v %v",
+ "quint run --out-itf %v --init %v --step %v %v --max-steps=%v --max-samples=%v %v",
traceName,
modelConfig.init,
modelConfig.step,
- invConfig.invariant,
+ invariant_config,
invConfig.numSteps,
invConfig.numSamples,
modelConfig.modelPath,
From c510e61111bee6d8e8cded9f896417deef4c5e6e Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 22 Nov 2023 13:40:09 +0100
Subject: [PATCH 028/111] Pretty up the output
---
.../core/quint_model/driver/mbt_test.go | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index f0611f6a70..2b8dee82a9 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -30,6 +30,9 @@ func TestMBT(t *testing.T) {
t.Log("Running trace ", dirEntry.Name())
RunItfTrace(t, "traces/"+dirEntry.Name())
}
+
+ t.Log("✅ Running traces from the traces folder done")
+ t.Log(len(dirEntries), "traces run")
}
func RunItfTrace(t *testing.T, path string) {
@@ -223,6 +226,7 @@ func RunItfTrace(t *testing.T, path string) {
}
t.Log("Packet queues match")
}
+ t.Log("🟢 Trace is ok!")
}
func CompareValidatorSets(t *testing.T, driver *Driver, currentModelState map[string]itf.Expr, consumers []string, index int) {
@@ -329,15 +333,24 @@ func CompareTimes(
// The names in the model validator set are expected to correspond to the monikers in the system validator set.
func CompareValSet(modelValSet map[string]itf.Expr, systemValSet map[string]int64) error {
expectedValSet := make(map[string]int64, len(modelValSet))
+ // strip away vals with power 0, because they are not always in the system validator set
for val, power := range modelValSet {
- // strip away vals with power 0, since they do not appear at all in the system val set
if power.Value.(int64) == 0 {
continue
}
expectedValSet[val] = power.Value.(int64)
}
- if !reflect.DeepEqual(expectedValSet, systemValSet) {
- return fmt.Errorf("Model validator set %v, system validator set %v", expectedValSet, systemValSet)
+
+ actualValSet := make(map[string]int64, len(systemValSet))
+ for val, power := range systemValSet {
+ if power == 0 {
+ continue
+ }
+ actualValSet[val] = power
+ }
+
+ if !reflect.DeepEqual(expectedValSet, actualValSet) {
+ return fmt.Errorf("Model validator set %v, system validator set %v", expectedValSet, actualValSet)
}
return nil
}
From db16905a6ed126160173cd3123188271685a9795 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 22 Nov 2023 13:40:28 +0100
Subject: [PATCH 029/111] Add script for generating happy and normal traces
---
.../difference/core/quint_model/driver/generate_happy_traces.sh | 1 +
tests/difference/core/quint_model/driver/generate_traces.sh | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100755 tests/difference/core/quint_model/driver/generate_happy_traces.sh
diff --git a/tests/difference/core/quint_model/driver/generate_happy_traces.sh b/tests/difference/core/quint_model/driver/generate_happy_traces.sh
new file mode 100755
index 0000000000..7dc347bd89
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/generate_happy_traces.sh
@@ -0,0 +1 @@
+go run ./... -modelPath=../ccv_happy.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces -numTraces 50
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/generate_traces.sh b/tests/difference/core/quint_model/driver/generate_traces.sh
index 7dc347bd89..2b9a7b6b88 100755
--- a/tests/difference/core/quint_model/driver/generate_traces.sh
+++ b/tests/difference/core/quint_model/driver/generate_traces.sh
@@ -1 +1 @@
-go run ./... -modelPath=../ccv_happy.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces -numTraces 50
\ No newline at end of file
+go run ./... -modelPath=../ccv_model.qnt -init init -step step -traceFolder traces -numTraces 50
\ No newline at end of file
From 436aec4136a48adba0a0f33287ccc20dd4b8c520 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 23 Nov 2023 13:12:45 +0100
Subject: [PATCH 030/111] Remove message sends for consumers that were started
in this block
---
tests/difference/core/quint_model/ccv.qnt | 77 ++++++++++---------
.../difference/core/quint_model/ccv_model.qnt | 22 ++++--
2 files changed, 55 insertions(+), 44 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index be7bc74efc..86d34d7334 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -399,60 +399,61 @@ module ccv {
res._1
)
+ // send vsc packets
+ val providerStateAfterSending =
+ if (currentProviderState.providerValidatorSetChangedInThisBlock and
+ // important: check this on the provider state after the consumer advancement, not on the current state.
+ getRunningConsumers(providerStateAfterTimeAdvancement).size() > 0) {
+ providerStateAfterTimeAdvancement.sendVscPackets()
+ } else {
+ providerStateAfterTimeAdvancement
+ }
+
// start/stop chains
- val res = providerStateAfterTimeAdvancement.consumerStatus.StartStopConsumers(
+ val res = providerStateAfterSending.consumerStatus.StartStopConsumers(
consumersToStart,
consumersToStop,
timedOutConsumers
)
val newConsumerStatus = res._1
val err = res._2
- val providerStateAfterConsumerAdvancement = providerStateAfterTimeAdvancement.with(
+ val providerStateAfterConsumerAdvancement = providerStateAfterSending.with(
"consumerStatus", newConsumerStatus
- )
-
- // for each consumer we just set to running, set its initial validator set to be the current one on the provider.
- val valSet = providerStateAfterConsumerAdvancement.chainState.currentValidatorSet
- val newConsumerStateMap =
- tmpState.consumerStates.keys().mapBy(
- (consumer) =>
- if (consumersToStart.contains(consumer)) {
- val currentConsumerState: ConsumerState = tmpState.consumerStates.get(consumer)
- val newConsumerState: ConsumerState = currentConsumerState.with(
- "chainState", currentConsumerState.chainState.with(
- "currentValidatorSet", valSet
- ).with(
- "votingPowerHistory",
- List(valSet)
- )
- )
- newConsumerState
- } else {
- currentState.consumerStates.get(consumer)
- }
- )
- val newState = tmpState.with(
- "providerState", providerStateAfterConsumerAdvancement
).with(
- "consumerStates", newConsumerStateMap
+ "providerValidatorSetChangedInThisBlock", false
)
if (err != "") {
Err(err)
} else {
- val providerStateAfterSending =
- if (currentProviderState.providerValidatorSetChangedInThisBlock and
- // important: check this on the provider state after the consumer advancement, not on the current state.
- getRunningConsumers(providerStateAfterConsumerAdvancement).size() > 0) {
- providerStateAfterConsumerAdvancement.sendVscPackets()
- } else {
- providerStateAfterConsumerAdvancement
- }
- val finalState = newState.with(
- "providerState", providerStateAfterSending
+ // for each consumer we just set to running, set its initial validator set to be the current one on the provider.
+ val valSet = providerStateAfterConsumerAdvancement.chainState.currentValidatorSet
+ val newConsumerStateMap =
+ tmpState.consumerStates.keys().mapBy(
+ (consumer) =>
+ if (consumersToStart.contains(consumer)) {
+ val currentConsumerState: ConsumerState = tmpState.consumerStates.get(consumer)
+ val newConsumerState: ConsumerState = currentConsumerState.with(
+ "chainState", currentConsumerState.chainState.with(
+ "currentValidatorSet", valSet
+ ).with(
+ "votingPowerHistory",
+ List(valSet)
+ )
+ )
+ newConsumerState
+ } else {
+ currentState.consumerStates.get(consumer)
+ }
+ )
+ val newState = tmpState.with(
+ "providerState", providerStateAfterConsumerAdvancement
+ ).with(
+ "consumerStates", newConsumerStateMap
)
- Ok(finalState)
+
+ Ok(newState)
}
}
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index b580be32a5..45035ddfdd 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -299,10 +299,14 @@ module ccv_model {
val providerValSetInCurBlock = providerValidatorHistory.head()
// ... for each consumer that is running then ...
runningConsumers.forall(
- // ...the validator set is in a sent packet
+ // ...the validator set is in a sent packet...
consumer => currentState.providerState.sentVscPacketsToConsumer.get(consumer).toSet().exists(
packet => packet.validatorSet == providerValSetInCurBlock
)
+ // or the consumer was just started, which we detect by the consumer having a timestamp of 0
+ // and the consumer having the validator set that was just sent in the block
+ or
+ (currentState.consumerStates.get(consumer).chainState.lastTimestamp == 0 and currentState.consumerStates.get(consumer).chainState.currentValidatorSet == providerValSetInCurBlock)
)
// Every consumer chain receives the same sequence of
@@ -476,12 +480,18 @@ module ccv_model {
all {
// consumer1 was started
assert(currentState.providerState.consumerStatus.get("consumer1") == RUNNING),
- // a packet was sent to consumer1
- assert(currentState.providerState.outstandingPacketsToConsumer.get("consumer1").length() == 1),
+ // but no packet was sent to consumer 1
+ assert(currentState.providerState.outstandingPacketsToConsumer.get("consumer1").length() == 0),
// the validator set on the provider was entered into the history
assert(currentState.providerState.chainState.votingPowerHistory == List(InitialValidatorSet.put("node1", 150), InitialValidatorSet)),
- // deliver the packet
- DeliverVscPacket("consumer1")
+ // change voting power on provider again
+ VotingPowerChange("node1", 50).then(
+ // end another block
+ EndAndBeginBlockForProvider(1 * Second, Set(), Set())
+ ).then(
+ // deliver packet to consumer1
+ DeliverVscPacket("consumer1")
+ )
}
)
.then(
@@ -491,7 +501,7 @@ module ccv_model {
// ensure the maturation time was entered on the consumer
assert(currentState.consumerStates.get("consumer1").maturationTimes.length() == 1),
// the validator set was put as the current validator set
- assert(currentState.consumerStates.get("consumer1").chainState.currentValidatorSet == InitialValidatorSet.put("node1", 150)),
+ assert(currentState.consumerStates.get("consumer1").chainState.currentValidatorSet == InitialValidatorSet.put("node1", 200)),
// advance time on provider until the unbonding period is over
EndAndBeginBlockForProvider(UnbondingPeriodPerChain.get("consumer1"), Set(), Set()),
}
From 5d17552c1eaa3fe7f5abc1abfd8638cee8fcd123 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 23 Nov 2023 17:41:00 +0100
Subject: [PATCH 031/111] Use .itf extension instead of .json
---
.../difference/core/quint_model/driver/generate_happy_traces.sh | 2 +-
tests/difference/core/quint_model/driver/generate_traces.sh | 2 +-
tests/difference/core/quint_model/driver/trace_gen.go | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/generate_happy_traces.sh b/tests/difference/core/quint_model/driver/generate_happy_traces.sh
index 7dc347bd89..fd1a45f589 100755
--- a/tests/difference/core/quint_model/driver/generate_happy_traces.sh
+++ b/tests/difference/core/quint_model/driver/generate_happy_traces.sh
@@ -1 +1 @@
-go run ./... -modelPath=../ccv_happy.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces -numTraces 50
\ No newline at end of file
+go run ./... -modelPath=../ccv_happy.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces -numTraces 5
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/generate_traces.sh b/tests/difference/core/quint_model/driver/generate_traces.sh
index 2b9a7b6b88..2936b05455 100755
--- a/tests/difference/core/quint_model/driver/generate_traces.sh
+++ b/tests/difference/core/quint_model/driver/generate_traces.sh
@@ -1 +1 @@
-go run ./... -modelPath=../ccv_model.qnt -init init -step step -traceFolder traces -numTraces 50
\ No newline at end of file
+go run ./... -modelPath=../ccv_model.qnt -init init -step step -traceFolder traces -numTraces 100 --numSamples 1
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/trace_gen.go b/tests/difference/core/quint_model/driver/trace_gen.go
index 3d23b6512d..1d237319e8 100644
--- a/tests/difference/core/quint_model/driver/trace_gen.go
+++ b/tests/difference/core/quint_model/driver/trace_gen.go
@@ -35,7 +35,7 @@ func GenerateTraces(numTraces int, modelConfig ModelConfig, invConfig InvariantC
for i := 0; i < numTraces; i++ {
// Generate trace
- traceName := fmt.Sprintf("%v/trace_%d", traceFolder, i)
+ traceName := fmt.Sprintf("%v/trace_%d.itf", traceFolder, i)
GenerateTrace(modelConfig, invConfig, traceName)
log.Println("Generated trace", traceName)
From d085ccef85b82f79dea4657f5cabbc7a27ba80bb Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 23 Nov 2023 17:41:24 +0100
Subject: [PATCH 032/111] Start adjusting behaviour for started/stopped
consumers
---
.../core/quint_model/driver/core.go | 50 ++++++-
.../core/quint_model/driver/mbt_test.go | 129 +++++++++++++++---
.../core/quint_model/driver/model_viewer.go | 14 ++
.../core/quint_model/driver/setup.go | 46 +++++--
testutil/simibc/relayed_path.go | 1 +
5 files changed, 203 insertions(+), 37 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 6fb993b2c4..68d6f6fcd6 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -7,6 +7,7 @@ import (
"testing"
"time"
+ tendermint "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
ibctesting "github.com/cosmos/ibc-go/v7/testing"
"github.com/stretchr/testify/require"
@@ -15,6 +16,7 @@ import (
stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
consumertypes "github.com/cosmos/interchain-security/v3/x/ccv/consumer/types"
+ providertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types"
appConsumer "github.com/cosmos/interchain-security/v3/app/consumer"
appProvider "github.com/cosmos/interchain-security/v3/app/provider"
@@ -23,6 +25,7 @@ import (
consumerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/consumer/keeper"
providerkeeper "github.com/cosmos/interchain-security/v3/x/ccv/provider/keeper"
+ abcitypes "github.com/cometbft/cometbft/abci/types"
cmttypes "github.com/cometbft/cometbft/types"
)
@@ -96,7 +99,17 @@ func (s *Driver) height(chain ChainId) int64 {
// time returns the time of the current header of chain
func (s *Driver) time(chain ChainId) time.Time {
- return s.chain(chain).CurrentHeader.Time
+ testChain := s.chain(chain)
+ return testChain.CurrentHeader.Time
+}
+
+func (s *Driver) allTimes() map[ChainId]time.Time {
+ chains := s.coordinator.Chains
+ times := make(map[ChainId]time.Time, len(chains))
+ for _, chain := range chains {
+ times[ChainId(chain.ChainID)] = chain.CurrentHeader.Time
+ }
+ return times
}
// delegator retrieves the address for the delegator account
@@ -385,7 +398,8 @@ func (s *Driver) getChainStateString(chain ChainId) string {
// as witnessed by events, and adds them to the correct paths.
// It also updates the client header on the paths
// that involve the chain.
-func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration) {
+// Returns the header of the chain.
+func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration) *tendermint.Header {
testChain, found := s.coordinator.Chains[string(chain)]
require.True(s.t, found, "chain %s not found", chain)
@@ -408,17 +422,29 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration)
for _, path := range s.simibcs {
if path.InvolvesChain(string(chain)) {
- path.AddClientHeader(string(chain), header)
path.Outboxes.Commit(string(chain))
}
}
simibc.BeginBlock(testChain, timeAdvancement)
+ return header
+}
- for _, path := range s.simibcs {
- if path.InvolvesChain(string(chain)) {
- path.UpdateClient(path.Counterparty(string(chain)))
- }
+func (s *Driver) runningConsumers() []providertypes.Chain {
+ return s.providerKeeper().GetAllConsumerChains(s.providerCtx())
+}
+
+func (s *Driver) setTime(chain ChainId, newTime time.Time) {
+ testChain, found := s.coordinator.Chains[string(chain)]
+ require.True(s.t, found, "chain %s not found", chain)
+
+ testChain.CurrentHeader.Time = newTime
+ testChain.App.BeginBlock(abcitypes.RequestBeginBlock{Header: testChain.CurrentHeader})
+}
+
+func (s *Driver) setAllTimes(newTimes map[ChainId]time.Time) {
+ for chain, newTime := range newTimes {
+ s.setTime(chain, newTime)
}
}
@@ -445,6 +471,16 @@ func (s *Driver) DeliverAcks() {
}
}
+// stopConsumer stops a given consumer chain.
+func (s *Driver) stopConsumer(chain ChainId) {
+ // stop the consumer chain on the provider
+ s.providerKeeper().StopConsumerChain(s.providerCtx(), string(chain), true)
+ // delete the chain from the coordinator
+ delete(s.coordinator.Chains, string(chain))
+ // delete the path from the driver
+ delete(s.simibcs, chain)
+}
+
// newDriver creates a new Driver object.
// It creates a new coordinator, but does not start any chains.
// The caller must call setupChains to start the chains and
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 2b8dee82a9..89de31135c 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -5,6 +5,7 @@ import (
"log"
"os"
"reflect"
+ "sort"
"testing"
"time"
@@ -16,7 +17,7 @@ import (
"github.com/stretchr/testify/require"
)
-const verbose = false
+const verbose = true
func TestMBT(t *testing.T) {
dirEntries, err := os.ReadDir("traces")
@@ -114,15 +115,14 @@ func RunItfTrace(t *testing.T, path string) {
}
driver := newDriver(t, nodes, valNames)
- driver.setupChains(modelParams, valSet, signers, nodes, valNames, consumers)
+
+ driver.setupProvider(modelParams, valSet, signers, nodes, valNames)
// remember the time offsets to be able to compare times to the model
// this is necessary because the system needs to do many steps to initialize the chains,
// which is abstracted away in the model
timeOffsets := make(map[ChainId]time.Time, len(chains))
- for _, chain := range chains {
- timeOffsets[ChainId(chain)] = driver.time(ChainId(chain))
- }
+ timeOffsets[Provider] = driver.time(Provider)
t.Log("Started chains")
@@ -167,8 +167,81 @@ func RunItfTrace(t *testing.T, path string) {
// and then increment the rest of the time]
// TODO: start and stop consumers
- driver.endAndBeginBlock("provider", 1)
- driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second-1)
+ driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
+ driver.endAndBeginBlock("provider", 1*time.Nanosecond)
+
+ // save the last timestamp for each chain,
+ // because setting up chains will modify timestamps
+ // when the coordinator is starting chains
+ lastTimestamps := driver.allTimes()
+ // start consumers
+ for _, consumer := range consumersToStart {
+ driver.setupConsumer(
+ consumer.Value.(string),
+ modelParams,
+ driver.providerChain().Vals,
+ signers,
+ nodes,
+ valNames,
+ driver.providerChain(),
+ )
+ lastTimestamps[ChainId(consumer.Value.(string))] = driver.time(ChainId(consumer.Value.(string)))
+ }
+
+ // stop consumers
+ for _, consumer := range consumersToStop {
+ consumerChain := ChainId(consumer.Value.(string))
+ driver.stopConsumer(consumerChain)
+
+ // remove the consumer from timestamps map and time offsets
+ delete(lastTimestamps, consumerChain)
+ delete(timeOffsets, consumerChain)
+ }
+
+ // remove the stopped consumers from the timestamps
+ for _, consumer := range consumersToStop {
+ consumerChain := ChainId(consumer.Value.(string))
+ delete(lastTimestamps, consumerChain)
+ delete(timeOffsets, consumerChain)
+ }
+
+ // restore the old timestamps, but increment by 1 nanosecond to avoid duplicate timestamps in headers
+ for chain, oldTimestamp := range lastTimestamps {
+ // if the chain was stopped, we don't need to restore the timestamp
+ driver.setTime(ChainId(chain), oldTimestamp.Add(1*time.Nanosecond))
+ // also set the offset for each chain correctly - offset is incremented by 1 nanosecond
+ timeOffsets[ChainId(chain)] = timeOffsets[ChainId(chain)].Add(1 * time.Nanosecond)
+ }
+
+ // set the timeOffsets for the newly started chains
+ for _, consumer := range consumersToStart {
+ consumerChain := ChainId(consumer.Value.(string))
+ timeOffsets[consumerChain] = driver.time(consumerChain)
+ }
+
+ // need to produce another block to fix messed up times because the provider comitted blocks with
+ // times that were fixed by the coordinator
+ driver.endAndBeginBlock("provider", 0)
+ providerHeader := driver.providerChain().LastHeader
+
+ // same for the consumers that were started
+ for _, consumer := range consumersToStart {
+ consumerChainId := string(consumer.Value.(string))
+ driver.endAndBeginBlock(ChainId(consumerChainId), 0)
+ }
+
+ // for all connected consumers, update the clients...
+ // unless it was the last consumer to be started, in which case it already has the header
+ for _, consumer := range driver.runningConsumers() {
+ if len(consumersToStart) > 0 && consumer.ChainId == consumersToStart[len(consumersToStart)-1].Value.(string) {
+ continue
+ }
+ consumerChainId := string(consumer.ChainId)
+
+ driver.path(ChainId(consumerChainId)).AddClientHeader(Provider, providerHeader)
+ driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId)
+ }
+
case "EndAndBeginBlockForConsumer":
consumerChain := lastAction["consumerChain"].Value.(string)
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
@@ -176,8 +249,16 @@ func RunItfTrace(t *testing.T, path string) {
// as in EndAndBeginBlockForProvider, we need to produce 2 blocks,
// while still honoring the time advancement
- driver.endAndBeginBlock(ChainId(consumerChain), 1)
- driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second-1)
+ headerBefore := driver.chain(ChainId(consumerChain)).LastHeader
+ _ = headerBefore
+
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
+ driver.endAndBeginBlock(ChainId(consumerChain), 1*time.Nanosecond)
+
+ // update the client on the provider
+ consumerHeader := driver.chain(ChainId(consumerChain)).LastHeader
+ driver.path(ChainId(consumerChain)).AddClientHeader(consumerChain, consumerHeader)
+ driver.path(ChainId(consumerChain)).UpdateClient(Provider)
case "DeliverVscPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
t.Log("DeliverVscPacket", consumerChain)
@@ -204,24 +285,38 @@ func RunItfTrace(t *testing.T, path string) {
currentModelState := state.VarValues["currentState"].Value.(itf.MapExprType)
// check that the actual state is the same as the model state
- // check validator sets - provider current validator set should be the one from the staking keeper
+ // compare the running consumers
+ modelRunningConsumers := RunningConsumers(currentModelState)
+
+ systemRunningConsumers := driver.runningConsumers()
+ actualRunningConsumers := make([]string, len(systemRunningConsumers))
+ for i, chain := range systemRunningConsumers {
+ actualRunningConsumers[i] = chain.ChainId
+ }
- // provider
- // consumers - current validator set does not correspond to anything,
- // we can only check the head of the voting power history
- // no assignment found, so providerConsAddr is the consumerConsAddr
+ // sort the slices so that we can compare them
+ sort.Slice(modelRunningConsumers, func(i, j int) bool {
+ return modelRunningConsumers[i] < modelRunningConsumers[j]
+ })
+ sort.Slice(actualRunningConsumers, func(i, j int) bool {
+ return actualRunningConsumers[i] < actualRunningConsumers[j]
+ })
+
+ require.Equal(t, modelRunningConsumers, actualRunningConsumers, "Running consumers do not match")
+
+ // check validator sets - provider current validator set should be the one from the staking keeper
t.Log("Comparing validator sets")
- CompareValidatorSets(t, driver, currentModelState, consumers, index)
+ CompareValidatorSets(t, driver, currentModelState, actualRunningConsumers, index)
t.Log("Validator sets match")
// check times - sanity check that the block times match the ones from the model
t.Log("Comparing timestamps")
- CompareTimes(t, driver, consumers, currentModelState, timeOffsets)
+ CompareTimes(t, driver, actualRunningConsumers, currentModelState, timeOffsets)
t.Log("Timestamps match")
// check sent packets: we check that the package queues in the model and the system have the same length.
t.Log("Comparing packet queues")
- for _, consumer := range consumers {
+ for _, consumer := range actualRunningConsumers {
ComparePacketQueues(t, driver, currentModelState, consumer)
}
t.Log("Packet queues match")
diff --git a/tests/difference/core/quint_model/driver/model_viewer.go b/tests/difference/core/quint_model/driver/model_viewer.go
index b293effbb9..e72363b313 100644
--- a/tests/difference/core/quint_model/driver/model_viewer.go
+++ b/tests/difference/core/quint_model/driver/model_viewer.go
@@ -55,3 +55,17 @@ func PacketQueue(curStateExpr itf.MapExprType, sender string, receiver string) i
return consumerState["outstandingPacketsToProvider"].Value.([]itf.Expr)
}
}
+
+// RunningConsumers returns a slice containing the names of the consumers
+// that are currently running.
+func RunningConsumers(curStateExpr itf.MapExprType) []string {
+ exprSlice := ProviderState(curStateExpr)["consumerStatus"].Value.(itf.MapExprType)
+ runningConsumers := make([]string, 0)
+ for consumer, statusExpr := range exprSlice {
+ status := statusExpr.Value.(string)
+ if status == "running" {
+ runningConsumers = append(runningConsumers, consumer)
+ }
+ }
+ return runningConsumers
+}
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 381f5560e2..da755546fc 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -6,6 +6,7 @@ import (
"testing"
"time"
+ "cosmossdk.io/math"
abcitypes "github.com/cometbft/cometbft/abci/types"
cmtproto "github.com/cometbft/cometbft/proto/tendermint/types"
cmttypes "github.com/cometbft/cometbft/types"
@@ -17,6 +18,7 @@ import (
clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
commitmenttypes "github.com/cosmos/ibc-go/v7/modules/core/23-commitment/types"
ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
+ tendermint "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
icstestingutils "github.com/cosmos/interchain-security/v3/testutil/ibc_testing"
"github.com/cosmos/interchain-security/v3/testutil/integration"
simibc "github.com/cosmos/interchain-security/v3/testutil/simibc"
@@ -140,10 +142,13 @@ func getAppBytesAndSenders(
for i, val := range nodes {
_, valSetVal := initialValSet.GetByAddress(val.Address.Bytes())
+ var tokens math.Int
if valSetVal == nil {
- log.Panicf("error getting validator with address %v from valSet %v", val, initialValSet)
+ tokens = sdk.NewInt(0)
+ } else {
+ tokens = sdk.NewInt(valSetVal.VotingPower)
}
- tokens := sdk.NewInt(valSetVal.VotingPower)
+
sumBonded = sumBonded.Add(tokens)
pk, err := cryptocodec.FromTmPubKeyInterface(val.PubKey)
@@ -394,32 +399,47 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
return path
}
-func (s *Driver) setupChains(
+func (s *Driver) providerHeader() *tendermint.Header {
+ return s.coordinator.Chains["provider"].LastHeader
+}
+
+func (s *Driver) setupProvider(
params ModelParams,
valSet *cmttypes.ValidatorSet, // the initial validator set
signers map[string]cmttypes.PrivValidator, // a map of validator addresses to private validators (signers)
nodes []*cmttypes.Validator, // the list of nodes, even ones that have no voting power initially
valNames []string,
- consumers []string, // a list of consumer chain names
) {
- initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
// start provider
s.t.Log("Creating provider chain")
providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes, valNames)
s.coordinator.Chains["provider"] = providerChain
- providerHeader, _ := simibc.EndBlock(providerChain, func() {})
+ // produce a first block
+ simibc.EndBlock(providerChain, func() {})
simibc.BeginBlock(providerChain, 0)
+}
+
+func (s *Driver) setupConsumer(
+ chain string,
+ params ModelParams,
+ valSet *cmttypes.ValidatorSet, // the current validator set on the provider chain
+ signers map[string]cmttypes.PrivValidator, // a map of validator addresses to private validators (signers)
+ nodes []*cmttypes.Validator, // the list of nodes, even ones that have no voting power initially
+ valNames []string,
+ providerChain *ibctesting.TestChain,
+) {
+ s.t.Logf("Starting consumer %v", chain)
+
+ initValUpdates := cmttypes.TM2PB.ValidatorUpdates(valSet)
// start consumer chains
- for _, chain := range consumers {
- s.t.Logf("Creating consumer chain %v", chain)
- consumerChain := newChain(s.t, params, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes, valNames)
- s.coordinator.Chains[chain] = consumerChain
+ s.t.Logf("Creating consumer chain %v", chain)
+ consumerChain := newChain(s.t, params, s.coordinator, icstestingutils.ConsumerAppIniter(initValUpdates), chain, valSet, signers, nodes, valNames)
+ s.coordinator.Chains[chain] = consumerChain
- path := s.ConfigureNewPath(consumerChain, providerChain, params, providerHeader)
- s.simibcs[ChainId(chain)] = simibc.MakeRelayedPath(s.t, path)
- }
+ path := s.ConfigureNewPath(consumerChain, providerChain, params, s.providerHeader())
+ s.simibcs[ChainId(chain)] = simibc.MakeRelayedPath(s.t, path)
}
func createConsumerGenesis(modelParams ModelParams, providerChain *ibctesting.TestChain, consumerClientState *ibctmtypes.ClientState) *consumertypes.GenesisState {
diff --git a/testutil/simibc/relayed_path.go b/testutil/simibc/relayed_path.go
index b5ba476305..8c2b79bc3d 100644
--- a/testutil/simibc/relayed_path.go
+++ b/testutil/simibc/relayed_path.go
@@ -21,6 +21,7 @@ type RelayedPath struct {
// have been committed to that chain. The headers are used to update the
// client of the counterparty chain.
clientHeaders map[string][]*ibctmtypes.Header
+
// TODO: Make this private and expose methods to add packets and acks.
// Currently, packets and acks are added directly to the outboxes,
// but we should hide this implementation detail.
From 3a7564e6b3d87f660c7f13ad1e636d2ee6e87497 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 24 Nov 2023 14:48:48 +0100
Subject: [PATCH 033/111] Use GetEmptyProtocolState instead of verbose
declaration
---
tests/difference/core/quint_model/ccv.qnt | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 86d34d7334..2bada21c96 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -164,20 +164,7 @@ module ccv_types {
pure def Err(msg: str): Result = {
{
newState: {
- providerState: {
- chainState: {
- votingPowerHistory: List(),
- currentValidatorSet: Map(),
- lastTimestamp: 0,
- },
- outstandingPacketsToConsumer: Map(),
- receivedMaturations: Set(),
- sentVscPacketsToConsumer: Map(),
- providerValidatorSetChangedInThisBlock: false,
- consumerStatus: Map(),
- runningVscId: 0,
- },
- consumerStates: Map(),
+ GetEmptyProtocolState
},
error: msg
}
From 1b8ae7bfdffeec3b39f731a42028af6eb0521111 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 24 Nov 2023 15:08:36 +0100
Subject: [PATCH 034/111] Add expired status and set timestamps of new
consumers
---
tests/difference/core/quint_model/ccv.qnt | 31 ++++++++++++++++++-----
1 file changed, 24 insertions(+), 7 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 2bada21c96..9d9a29cce1 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -177,6 +177,7 @@ module ccv_types {
pure val TIMEDOUT = "timedout" // the chain has timed out and was dropped by the provider. This is only used for involuntary drops.
pure val RUNNING = "running" //Â the chain is currently a consumer chain. Running chains are those that get sent VscPackets.
pure val NOT_CONSUMER = "not consumer" // the chain has never been a consumer chain, and is available to become one.
+ pure val EXPIRED = "expired" // The channel between the chains is expired. This is only used for involuntary drops.
// When a chain is dropped, it cannot become a consumer again - we assume that would be done by another consumer becoming running.
// the provider chain.
@@ -226,7 +227,7 @@ module ccv {
// The trusting period on each chain.
// If headers on a channel between two chains are not updated within this period,
// they expire and the channel will be closed.
- const TrustingPeriodPerChain: Chain -> int // TODO: USE THIS!
+ const TrustingPeriodPerChain: Chain -> int
// ===================
// PROTOCOL LOGIC contains the meat of the protocol
@@ -273,7 +274,8 @@ module ccv {
val result = stopConsumers(
currentState.providerState.consumerStatus,
Set(),
- Set(sender)
+ Set(sender),
+ Set()
)
val newConsumerStatus = result._1
@@ -322,7 +324,8 @@ module ccv {
val result = stopConsumers(
currentState.providerState.consumerStatus,
Set(),
- Set(receiver)
+ Set(receiver),
+ Set()
)
val newConsumerStatus = result._1
@@ -386,6 +389,12 @@ module ccv {
res._1
)
+ val expiredConsumers = getRunningConsumers(providerStateAfterTimeAdvancement).filter(
+ consumer =>
+ val res = TimeoutDueToVscTimeout(tmpState, consumer)
+ res._1
+ ).exclude(timedOutConsumers)
+
// send vsc packets
val providerStateAfterSending =
if (currentProviderState.providerValidatorSetChangedInThisBlock and
@@ -401,7 +410,8 @@ module ccv {
val res = providerStateAfterSending.consumerStatus.StartStopConsumers(
consumersToStart,
consumersToStop,
- timedOutConsumers
+ timedOutConsumers,
+ expiredConsumers
)
val newConsumerStatus = res._1
val err = res._2
@@ -427,6 +437,9 @@ module ccv {
).with(
"votingPowerHistory",
List(valSet)
+ ).with(
+ "lastTimestamp",
+ providerStateAfterConsumerAdvancement.chainState.lastTimestamp
)
)
newConsumerState
@@ -509,7 +522,8 @@ module ccv {
pure def stopConsumers(
currentConsumerStatusMap: Chain -> str,
consumersToStop: Set[Chain],
- consumersToTimeout: Set[Chain]): (Chain -> str, str) = {
+ consumersToTimeout: Set[Chain],
+ expiredConsumers: Set[Chain]): (Chain -> str, str) = {
val runningConsumers = currentConsumerStatusMap.keys().filter(
chain => currentConsumerStatusMap.get(chain) == RUNNING
)
@@ -521,6 +535,8 @@ module ccv {
(chain) =>
if (consumersToTimeout.contains(chain)) {
TIMEDOUT
+ } else if (expiredConsumers.contains(chain)) {
+ EXPIRED
} else if (consumersToStop.contains(chain)) {
STOPPED
} else {
@@ -560,7 +576,8 @@ module ccv {
currentConsumerStatusMap: Chain -> str,
consumersToStart: Set[Chain],
consumersToStop: Set[Chain],
- consumersToTimeout: Set[Chain]
+ consumersToTimeout: Set[Chain],
+ expiredConsumers: Set[Chain]
): (Chain -> str, str) = {
// check if any consumer is both started and stopped
if (consumersToStart.intersect(consumersToStop).size() > 0) {
@@ -569,7 +586,7 @@ module ccv {
val res1 = currentConsumerStatusMap.startConsumers(consumersToStart)
val newConsumerStatus = res1._1
val err1 = res1._2
- val res2 = newConsumerStatus.stopConsumers(consumersToStop, consumersToTimeout)
+ val res2 = newConsumerStatus.stopConsumers(consumersToStop, consumersToTimeout, expiredConsumers)
val err2 = res2._2
if (err1 != "") {
(currentConsumerStatusMap, err1)
From c7cba8b762674490639502e44b2e7c79c6de3d89 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 24 Nov 2023 18:07:02 +0100
Subject: [PATCH 035/111] Add note to split up timestamps
---
tests/difference/core/quint_model/ccv.qnt | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 9d9a29cce1..bc252522a5 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -42,6 +42,9 @@ module ccv_types {
// e.g. there may be more modifications in the current block.
currentValidatorSet: ValidatorSet,
+
+ // TODO: split into lastTimestamp and runningTimestamp
+ // TODO: check how expiry needs to work (checks own chains runningTimestamp, but for foreign chain it's tracking the last comitted timestamp)
// the latest timestamp that was comitted on chain
lastTimestamp: Time,
}
@@ -117,6 +120,9 @@ module ccv_types {
// ordered by recency, so the head is the oldest packet.
// In the implementation, essentially unacknowledged IBC packets.
outstandingPacketsToProvider: List[VscMaturedPacket],
+
+ // true if the local client of that chain has expired, false otherwise.
+ localClientExpired: bool,
}
// utility function: returns a consumer state that is initialized minimally.
@@ -126,6 +132,7 @@ module ccv_types {
maturationTimes: List(),
outstandingPacketsToProvider: List(),
receivedVscPackets: List(),
+ localClientExpired: false,
}
// the state of the protocol consists of the composition of the state of one provider chain with potentially many consumer chains.
@@ -242,7 +249,8 @@ module ccv {
if (amount == 0) {
Err("Voting power cannot change by zero!")
} else {
- pure val newValidatorSet = currentValidatorSet.put(validator, oldVotingPower + amount)
+ pure val newVotingPower = oldVotingPower + amount
+ pure val newValidatorSet = currentValidatorSet.put(validator, if(newVotingPower >= 0) newVotingPower else 0)
// set the validator set changed flag
val newProviderState = currentState.providerState.with(
"providerValidatorSetChangedInThisBlock", true
@@ -496,10 +504,19 @@ module ccv {
}
)
)
+ // checks whether the local client for the provider chain has expired on the consumer
+ val clientExpired =
+ if (newChainState.lastTimestamp > currentState.providerState.chainState.lastTimestamp + TrustingPeriodPerChain.get(chain)) {
+ true
+ } else {
+ false
+ }
val newConsumerState2: ConsumerState = newConsumerState.with(
"maturationTimes", newMaturationTimes
).with(
"outstandingPacketsToProvider", newOutstandingPackets
+ ).with(
+ "localClientExpired", clientExpired
)
val newConsumerStates = currentState.consumerStates.set(chain, newConsumerState2)
val newState: ProtocolState = currentState.with(
From 2d130df3bfe1c39b7c11c56a58320f29a41d270c Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Fri, 24 Nov 2023 18:07:25 +0100
Subject: [PATCH 036/111] Advance MBT prototype
---
.../core/quint_model/driver/core.go | 20 +++--
.../core/quint_model/driver/mbt_test.go | 87 ++++++++++---------
.../core/quint_model/driver/model_viewer.go | 8 ++
.../core/quint_model/driver/setup.go | 8 +-
testutil/simibc/relay_util.go | 10 +--
testutil/simibc/relayed_path.go | 7 +-
6 files changed, 78 insertions(+), 62 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 68d6f6fcd6..ac4eb9a4ee 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -38,6 +38,7 @@ type ModelParams struct {
CcvTimeout map[ChainId]time.Duration
UnbondingPeriodPerChain map[ChainId]time.Duration
TrustingPeriodPerChain map[ChainId]time.Duration
+ MaxClockDrift time.Duration
}
type Driver struct {
@@ -147,10 +148,13 @@ func (s *Driver) consumerPower(i int64, chain ChainId) (int64, error) {
// consumerTokens returns the number of tokens that the validator with
// id (ix) i has delegated to it in total on the provider chain
-func (s *Driver) providerPower(i int64) int64 {
+func (s *Driver) providerPower(i int64) (int64, error) {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
- return v.BondedTokens().Int64()
+ if !found {
+ return 0, fmt.Errorf("Validator with id %v not found on provider!", i)
+ } else {
+ return v.BondedTokens().Int64(), nil
+ }
}
// delegation returns the number of delegated tokens in the delegation from
@@ -179,7 +183,7 @@ func (s *Driver) providerTokens(i int64) int64 {
return v.Tokens.Int64()
}
-func (s *Driver) providerValidatorSet(chain ChainId) []stakingtypes.Validator {
+func (s *Driver) providerValidatorSet() []stakingtypes.Validator {
return s.providerStakingKeeper().GetAllValidators(s.ctx(P))
}
@@ -239,14 +243,12 @@ func (s *Driver) consumerSlash(val sdk.ConsAddress, h int64, isDowntime bool, ch
}
}
-func (s *Driver) updateClient(chain ChainId) {
- s.path(chain).UpdateClient(string(chain))
+func (s *Driver) updateClient(chain ChainId) error {
+ return s.path(chain).UpdateClient(string(chain), false)
}
// deliver numPackets packets from the network to chain
func (s *Driver) deliver(chain ChainId, numPackets int) {
- // Makes sure client is updated
- s.updateClient(chain)
// Deliver any outstanding acks
s.path(chain).DeliverAcks(string(chain), 999999)
// Consume deliverable packets from the network
@@ -347,7 +349,7 @@ func (s *Driver) getChainStateString(chain ChainId) string {
for index, valName := range s.valNames {
var power int64
if s.isProviderChain(chain) {
- power = s.providerPower(int64(index))
+ power, _ = s.providerPower(int64(index))
} else {
power, _ = s.consumerPower(int64(index), chain)
}
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 89de31135c..4d8c36304c 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -11,7 +11,9 @@ import (
cmttypes "github.com/cometbft/cometbft/types"
sdktypes "github.com/cosmos/cosmos-sdk/types"
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
providertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types"
+ "github.com/kylelemons/godebug/pretty"
"github.com/informalsystems/itf-go/itf"
"github.com/stretchr/testify/require"
@@ -27,6 +29,8 @@ func TestMBT(t *testing.T) {
t.Log("Running traces from the traces folder")
+ ibctesting.TimeIncrement = 1 * time.Nanosecond
+
for _, dirEntry := range dirEntries {
t.Log("Running trace ", dirEntry.Name())
RunItfTrace(t, "traces/"+dirEntry.Name())
@@ -129,13 +133,15 @@ func RunItfTrace(t *testing.T, path string) {
t.Log("Reading the trace...")
for index, state := range trace.States {
- t.Logf("Reading state %v", index)
+ t.Logf("Reading state %v of trace %v", index, path)
// modelState := state.VarValues["currentState"]
trace := state.VarValues["trace"].Value.(itf.ListExprType)
// fmt.Println(modelState)
lastAction := trace[len(trace)-1].Value.(itf.MapExprType)
+ currentModelState := state.VarValues["currentState"].Value.(itf.MapExprType)
+
actionKind := lastAction["kind"].Value.(string)
switch actionKind {
case "init":
@@ -165,15 +171,18 @@ func RunItfTrace(t *testing.T, path string) {
// needs a header of height H+1 to accept the packet
// so we do one time advancement with a very small increment,
// and then increment the rest of the time]
-
- // TODO: start and stop consumers
- driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
driver.endAndBeginBlock("provider", 1*time.Nanosecond)
+ driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
- // save the last timestamp for each chain,
+ // save the last timestamp for runningConsumers,
// because setting up chains will modify timestamps
// when the coordinator is starting chains
- lastTimestamps := driver.allTimes()
+ lastTimestamps := make(map[ChainId]time.Time, len(consumers))
+ for _, consumer := range driver.runningConsumers() {
+ lastTimestamps[ChainId(consumer.ChainId)] = driver.time(ChainId(consumer.ChainId))
+ }
+
+ driver.coordinator.CurrentTime = driver.time("provider")
// start consumers
for _, consumer := range consumersToStart {
driver.setupConsumer(
@@ -185,7 +194,6 @@ func RunItfTrace(t *testing.T, path string) {
valNames,
driver.providerChain(),
)
- lastTimestamps[ChainId(consumer.Value.(string))] = driver.time(ChainId(consumer.Value.(string)))
}
// stop consumers
@@ -194,40 +202,23 @@ func RunItfTrace(t *testing.T, path string) {
driver.stopConsumer(consumerChain)
// remove the consumer from timestamps map and time offsets
- delete(lastTimestamps, consumerChain)
delete(timeOffsets, consumerChain)
- }
-
- // remove the stopped consumers from the timestamps
- for _, consumer := range consumersToStop {
- consumerChain := ChainId(consumer.Value.(string))
delete(lastTimestamps, consumerChain)
- delete(timeOffsets, consumerChain)
}
- // restore the old timestamps, but increment by 1 nanosecond to avoid duplicate timestamps in headers
- for chain, oldTimestamp := range lastTimestamps {
- // if the chain was stopped, we don't need to restore the timestamp
- driver.setTime(ChainId(chain), oldTimestamp.Add(1*time.Nanosecond))
- // also set the offset for each chain correctly - offset is incremented by 1 nanosecond
- timeOffsets[ChainId(chain)] = timeOffsets[ChainId(chain)].Add(1 * time.Nanosecond)
+ // reset the times for the consumers that were not stopped or started just now
+ // their times were messed up by the coordinator
+ for consumer, timestamp := range lastTimestamps {
+ driver.setTime(consumer, timestamp)
}
// set the timeOffsets for the newly started chains
for _, consumer := range consumersToStart {
consumerChain := ChainId(consumer.Value.(string))
- timeOffsets[consumerChain] = driver.time(consumerChain)
- }
-
- // need to produce another block to fix messed up times because the provider comitted blocks with
- // times that were fixed by the coordinator
- driver.endAndBeginBlock("provider", 0)
- providerHeader := driver.providerChain().LastHeader
-
- // same for the consumers that were started
- for _, consumer := range consumersToStart {
- consumerChainId := string(consumer.Value.(string))
- driver.endAndBeginBlock(ChainId(consumerChainId), 0)
+ // the time offset is the time of the provider,
+ // because the model sets the timestamp on the consumer to the provider time
+ // when the consumer is started
+ timeOffsets[consumerChain] = timeOffsets["provider"]
}
// for all connected consumers, update the clients...
@@ -238,8 +229,14 @@ func RunItfTrace(t *testing.T, path string) {
}
consumerChainId := string(consumer.ChainId)
- driver.path(ChainId(consumerChainId)).AddClientHeader(Provider, providerHeader)
- driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId)
+ driver.path(ChainId(consumerChainId)).AddClientHeader(Provider, driver.providerHeader())
+ var err error
+ if ConsumerStatus(currentModelState, consumerChainId) == "expired" {
+ err = driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId, true)
+ } else {
+ err = driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId, false)
+ }
+ require.True(t, err == nil, "Error updating client from %v on provider: %v", consumerChainId, err)
}
case "EndAndBeginBlockForConsumer":
@@ -252,13 +249,20 @@ func RunItfTrace(t *testing.T, path string) {
headerBefore := driver.chain(ChainId(consumerChain)).LastHeader
_ = headerBefore
- driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
driver.endAndBeginBlock(ChainId(consumerChain), 1*time.Nanosecond)
+ driver.endAndBeginBlock(ChainId(consumerChain), time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
// update the client on the provider
consumerHeader := driver.chain(ChainId(consumerChain)).LastHeader
driver.path(ChainId(consumerChain)).AddClientHeader(consumerChain, consumerHeader)
- driver.path(ChainId(consumerChain)).UpdateClient(Provider)
+ var err error
+ if LocalClientExpired(currentModelState, consumerChain) {
+ err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, true)
+ } else {
+ err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, false)
+ }
+ require.True(t, err == nil, "Error updating client from %v on provider: %v", consumerChain, err)
+
case "DeliverVscPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
t.Log("DeliverVscPacket", consumerChain)
@@ -282,7 +286,6 @@ func RunItfTrace(t *testing.T, path string) {
t.Logf("Current actual state: %s", driver.getStateString())
}
- currentModelState := state.VarValues["currentState"].Value.(itf.MapExprType)
// check that the actual state is the same as the model state
// compare the running consumers
@@ -326,7 +329,7 @@ func RunItfTrace(t *testing.T, path string) {
func CompareValidatorSets(t *testing.T, driver *Driver, currentModelState map[string]itf.Expr, consumers []string, index int) {
modelValSet := ValidatorSet(currentModelState, "provider")
- curValSet := driver.providerValidatorSet("provider")
+ curValSet := driver.providerValidatorSet()
actualValSet := make(map[string]int64, len(curValSet))
@@ -395,6 +398,8 @@ func ComparePacketQueue(t *testing.T, driver *Driver, currentModelState map[stri
// CompareTimes compares the block times in the model to the block times in the system.
// It takes into account the timeOffsets, which should be the starting times
// of the chains in the system after the system has been initialized.
+// We only compare down to seconds, because the model and system will differ
+// on the order of nanoseconds.
func CompareTimes(
t *testing.T,
driver *Driver,
@@ -409,7 +414,7 @@ func CompareTimes(
require.Equal(t,
providerLastTimestamp,
actualProviderTime.Unix()-providerOffset.Unix(),
- "Block times do not match")
+ "Block times do not match for provider")
for _, chain := range consumers {
modelLastTimestamp := Time(currentModelState, chain)
@@ -418,7 +423,7 @@ func CompareTimes(
require.Equal(t,
modelLastTimestamp,
actualChainTime.Unix()-timeOffsets[ChainId(chain)].Unix(),
- "Block times do not match")
+ "Block times do not match for chain %v", chain)
}
}
@@ -445,7 +450,7 @@ func CompareValSet(modelValSet map[string]itf.Expr, systemValSet map[string]int6
}
if !reflect.DeepEqual(expectedValSet, actualValSet) {
- return fmt.Errorf("Model validator set %v, system validator set %v", expectedValSet, actualValSet)
+ return fmt.Errorf("Validator sets do not match: (+ expected, - actual): %v", pretty.Compare(expectedValSet, actualValSet))
}
return nil
}
diff --git a/tests/difference/core/quint_model/driver/model_viewer.go b/tests/difference/core/quint_model/driver/model_viewer.go
index e72363b313..309690bb7b 100644
--- a/tests/difference/core/quint_model/driver/model_viewer.go
+++ b/tests/difference/core/quint_model/driver/model_viewer.go
@@ -69,3 +69,11 @@ func RunningConsumers(curStateExpr itf.MapExprType) []string {
}
return runningConsumers
}
+
+func ConsumerStatus(curStateExpr itf.MapExprType, consumer string) string {
+ return ProviderState(curStateExpr)["consumerStatus"].Value.(itf.MapExprType)[consumer].Value.(string)
+}
+
+func LocalClientExpired(curStateExpr itf.MapExprType, consumer string) bool {
+ return ConsumerState(curStateExpr, consumer)["localClientExpired"].Value.(bool)
+}
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index da755546fc..9a9263d376 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -333,7 +333,7 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
tmCfg := providerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[ChainId(providerChain.ChainID)]
tmCfg.TrustingPeriod = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)]
- tmCfg.MaxClockDrift = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)] // make the clock drift a non-issue
+ tmCfg.MaxClockDrift = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)] * 5 // make the clock drift a non-issue
err := providerEndPoint.CreateClient()
require.NoError(s.t, err, "Error creating client on provider for chain %v", consumerChain.ChainID)
@@ -352,7 +352,7 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
tmCfg = consumerEndPoint.ClientConfig.(*ibctesting.TendermintConfig)
tmCfg.UnbondingPeriod = params.UnbondingPeriodPerChain[consumerChainId]
tmCfg.TrustingPeriod = params.TrustingPeriodPerChain[consumerChainId]
- tmCfg.MaxClockDrift = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)] // make the clock drift a non-issue
+ tmCfg.MaxClockDrift = params.TrustingPeriodPerChain[ChainId(providerChain.ChainID)] * 5 // make the clock drift a non-issue
consumerClientState := ibctmtypes.NewClientState(
providerChain.ChainID, tmCfg.TrustLevel, tmCfg.TrustingPeriod, tmCfg.UnbondingPeriod, tmCfg.MaxClockDrift,
@@ -390,9 +390,9 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
simibc.BeginBlock(consumerChain, 5)
// Update clients to the latest header.
- err = simibc.UpdateReceiverClient(consumerEndPoint, providerEndPoint, lastConsumerHeader)
+ err = simibc.UpdateReceiverClient(consumerEndPoint, providerEndPoint, lastConsumerHeader, false)
require.NoError(s.t, err, "Error updating client on consumer for chain %v", consumerChain.ChainID)
- err = simibc.UpdateReceiverClient(providerEndPoint, consumerEndPoint, lastProviderHeader)
+ err = simibc.UpdateReceiverClient(providerEndPoint, consumerEndPoint, lastProviderHeader, false)
require.NoError(s.t, err, "Error updating client on provider for chain %v", consumerChain.ChainID)
// path is ready to go
diff --git a/testutil/simibc/relay_util.go b/testutil/simibc/relay_util.go
index 9fd5213d5b..edfbfddb35 100644
--- a/testutil/simibc/relay_util.go
+++ b/testutil/simibc/relay_util.go
@@ -7,7 +7,6 @@ import (
ibctmtypes "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
ibctesting "github.com/cosmos/ibc-go/v7/testing"
simapp "github.com/cosmos/ibc-go/v7/testing/simapp"
- "github.com/stretchr/testify/require"
errorsmod "cosmossdk.io/errors"
@@ -23,7 +22,7 @@ import (
// must have a client of the sender chain that it can update.
//
// NOTE: this function MAY be used independently of the rest of simibc.
-func UpdateReceiverClient(sender, receiver *ibctesting.Endpoint, header *ibctmtypes.Header) (err error) {
+func UpdateReceiverClient(sender, receiver *ibctesting.Endpoint, header *ibctmtypes.Header, expectExpiration bool) (err error) {
err = augmentHeader(sender.Chain, receiver.Chain, receiver.ClientID, header)
if err != nil {
@@ -34,8 +33,9 @@ func UpdateReceiverClient(sender, receiver *ibctesting.Endpoint, header *ibctmty
receiver.ClientID, header,
receiver.Chain.SenderAccount.GetAddress().String(),
)
-
- require.NoError(receiver.Chain.T, err)
+ if err != nil {
+ return err
+ }
_, _, err = simapp.SignAndDeliver(
receiver.Chain.T,
@@ -46,7 +46,7 @@ func UpdateReceiverClient(sender, receiver *ibctesting.Endpoint, header *ibctmty
receiver.Chain.ChainID,
[]uint64{receiver.Chain.SenderAccount.GetAccountNumber()},
[]uint64{receiver.Chain.SenderAccount.GetSequence()},
- true, true, receiver.Chain.SenderPrivKey,
+ true, !expectExpiration, receiver.Chain.SenderPrivKey,
)
if err != nil {
diff --git a/testutil/simibc/relayed_path.go b/testutil/simibc/relayed_path.go
index 8c2b79bc3d..bda1a50a10 100644
--- a/testutil/simibc/relayed_path.go
+++ b/testutil/simibc/relayed_path.go
@@ -110,14 +110,15 @@ func (f *RelayedPath) InvolvesChain(chainID string) bool {
// UpdateClient updates the chain with the latest sequence
// of available headers committed by the counterparty chain since
// the last call to UpdateClient (or all for the first call).
-func (f *RelayedPath) UpdateClient(chainID string) {
+func (f *RelayedPath) UpdateClient(chainID string, expectExpiration bool) error {
for _, header := range f.clientHeaders[f.Counterparty(chainID)] {
- err := UpdateReceiverClient(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), header)
+ err := UpdateReceiverClient(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), header, expectExpiration)
if err != nil {
- f.t.Fatal("in relayed path could not update client of chain: ", chainID, " with header: ", header, " err: ", err)
+ return err
}
}
f.clientHeaders[f.Counterparty(chainID)] = []*ibctmtypes.Header{}
+ return nil
}
// DeliverPackets delivers UP TO packets to the chain which have been
From 8f31705f1d9a8fa2a8cf9cc510e0109698c48305 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Mon, 27 Nov 2023 17:35:22 +0100
Subject: [PATCH 037/111] Add test case for expired clients
---
tests/difference/core/quint_model/ccv.qnt | 46 ++++++++++---------
.../difference/core/quint_model/ccv_model.qnt | 31 +++++++++++--
.../difference/core/quint_model/ccv_test.qnt | 5 ++
3 files changed, 58 insertions(+), 24 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index bc252522a5..c0f7137412 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -43,10 +43,11 @@ module ccv_types {
currentValidatorSet: ValidatorSet,
- // TODO: split into lastTimestamp and runningTimestamp
- // TODO: check how expiry needs to work (checks own chains runningTimestamp, but for foreign chain it's tracking the last comitted timestamp)
// the latest timestamp that was comitted on chain
lastTimestamp: Time,
+
+ // the running timestamp of the current block (that will be put on chain when the block is ended)
+ runningTimestamp: Time,
}
// utility function: returns a chain state that is initialized minimally.
@@ -55,6 +56,7 @@ module ccv_types {
votingPowerHistory: List(),
currentValidatorSet: Map(),
lastTimestamp: 0,
+ runningTimestamp: 0,
}
// Defines the current state of the provider chain. Essentially, all information here is stored by the provider on-chain (or could be derived purely by information that is on-chain).
@@ -277,7 +279,7 @@ module ccv {
(Err("No outstanding packets to deliver"), false)
} else {
val packet = currentState.consumerStates.get(sender).outstandingPacketsToProvider.head()
- if(packet.sendingTime + CcvTimeout.get(sender) < currentState.providerState.chainState.lastTimestamp) {
+ if(packet.sendingTime + CcvTimeout.get(sender) < currentState.providerState.chainState.runningTimestamp) {
// drop consumer
val result = stopConsumers(
currentState.providerState.consumerStatus,
@@ -327,7 +329,7 @@ module ccv {
} else {
val packet = currentState.providerState.outstandingPacketsToConsumer.get(receiver).head()
// check if the consumer timed out
- if (packet.sendingTime + CcvTimeout.get(PROVIDER_CHAIN) < currentState.consumerStates.get(receiver).chainState.lastTimestamp) {
+ if (packet.sendingTime + CcvTimeout.get(PROVIDER_CHAIN) < currentState.consumerStates.get(receiver).chainState.runningTimestamp) {
// drop consumer
val result = stopConsumers(
currentState.providerState.consumerStatus,
@@ -399,8 +401,7 @@ module ccv {
val expiredConsumers = getRunningConsumers(providerStateAfterTimeAdvancement).filter(
consumer =>
- val res = TimeoutDueToVscTimeout(tmpState, consumer)
- res._1
+ providerStateAfterTimeAdvancement.chainState.runningTimestamp > tmpState.consumerStates.get(consumer).chainState.lastTimestamp + TrustingPeriodPerChain.get("provider")
).exclude(timedOutConsumers)
// send vsc packets
@@ -448,6 +449,9 @@ module ccv {
).with(
"lastTimestamp",
providerStateAfterConsumerAdvancement.chainState.lastTimestamp
+ ).with(
+ "runningTimestamp",
+ providerStateAfterConsumerAdvancement.chainState.runningTimestamp
)
)
newConsumerState
@@ -484,29 +488,28 @@ module ccv {
pair =>
val packet = pair._1
val maturationTime: Time = pair._2
- // important that the old chain state is used here, because sending packets happens on EndBlock,
- // but the new timestamp only appears after BeginBlock
- maturationTime <= oldChainState.lastTimestamp
+ // important: this uses the last comitted timestamp, not the running timestamp!
+ maturationTime <= newChainState.lastTimestamp
).transform(pair => pair._1)
val newMaturationTimes = newConsumerState.maturationTimes.select(
pair =>
val packet = pair._1
val maturationTime: Time = pair._2
- // important that the old chain state is used here, because sending packets happens on EndBlock,
- // but the new timestamp only appears after BeginBlock
- maturationTime > oldChainState.lastTimestamp
+ // important: this uses the last comitted timestamp, not the running timestamp!
+
+ maturationTime > newChainState.lastTimestamp
)
val newOutstandingPackets = newConsumerState.outstandingPacketsToProvider.concat(
maturedPackets.transform(
packet => {
id: packet.id,
- sendingTime: oldChainState.lastTimestamp
+ sendingTime: newChainState.runningTimestamp
}
)
)
// checks whether the local client for the provider chain has expired on the consumer
val clientExpired =
- if (newChainState.lastTimestamp > currentState.providerState.chainState.lastTimestamp + TrustingPeriodPerChain.get(chain)) {
+ if (newChainState.runningTimestamp > currentState.providerState.chainState.lastTimestamp + TrustingPeriodPerChain.get(chain)) {
true
} else {
false
@@ -626,10 +629,11 @@ module ccv {
}
// Advances the timestamp in the chainState by timeAdvancement
- pure def advanceTime(chainState: ChainState, timeAdvancement: Time): ChainState = {
- chainState.with(
- "lastTimestamp", chainState.lastTimestamp + timeAdvancement
- )
+ pure def advanceTime(chainState: ChainState, timeAdvancement: Time): ChainState =
+ {
+ lastTimestamp: chainState.runningTimestamp,
+ runningTimestamp: chainState.runningTimestamp + timeAdvancement,
+ ...chainState
}
// common logic to update the chain state, used by both provider and consumers.
@@ -652,7 +656,7 @@ module ccv {
List({
id: providerState.runningVscId,
validatorSet: providerState.chainState.currentValidatorSet,
- sendingTime: providerState.chainState.lastTimestamp
+ sendingTime: providerState.chainState.runningTimestamp
})
} else {
List()
@@ -699,7 +703,7 @@ module ccv {
maturationTimes: currentConsumerState.maturationTimes.append(
(
packet,
- currentConsumerState.chainState.lastTimestamp + UnbondingPeriodPerChain.get(receiver)
+ currentConsumerState.chainState.runningTimestamp + UnbondingPeriodPerChain.get(receiver)
)
),
receivedVscPackets: currentConsumerState.receivedVscPackets.prepend(packet)
@@ -816,7 +820,7 @@ module ccv {
val sentVscPacketsToConsumer = providerState.sentVscPacketsToConsumer.get(consumer)
if(sentVscPacketsToConsumer.length() > 0) {
val oldestSentVscPacket = sentVscPacketsToConsumer.head() // if length is 0, this is undefined, but we check for this before we use it
- if(oldestSentVscPacket.sendingTime + VscTimeout < providerState.chainState.lastTimestamp) {
+ if(oldestSentVscPacket.sendingTime + VscTimeout < providerState.chainState.runningTimestamp) {
(true, "")
} else {
// no timeout yet, it has not been VscTimeout since that packet was sent
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 45035ddfdd..f0f200e7a8 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -18,13 +18,11 @@ module ccv_model {
import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains, TrustingPeriodPerChain = trustingPeriods).* from "./ccv"
- // TODO: introduce max clock drift to produce traces with bounded drift
-
type Parameters = {
VscTimeout: Time,
CcvTimeout: Chain -> Time,
UnbondingPeriodPerChain: Chain -> Time,
- TrustingPeriodPerChain: Chain -> Time, // TODO: integrate trusting period in logic
+ TrustingPeriodPerChain: Chain -> Time,
ConsumerChains: Set[Chain],
Nodes: Set[Node],
InitialValidatorSet: Node -> int,
@@ -615,4 +613,31 @@ module ccv_model {
VotingPowerChange("node1", 50) // action needs to be there but does not matter what it is
}
)
+
+ // check that when the running timestamp of a chain and the last timestamp of a counterparty differ by more than the trusting period,
+ // the client is expired
+ run ExpiredClientTest =
+ init.then(
+ EndAndBeginBlockForProvider(1 * Second, Set("consumer1"), Set())
+ ).then(
+ 20.reps(
+ i => all {
+ {
+ // if the trusting period has passed
+ (currentState.consumerStates.get("consumer1").chainState.lastTimestamp + TrustingPeriodPerChain.get("provider") < currentState.providerState.chainState.runningTimestamp or
+ currentState.providerState.chainState.lastTimestamp + TrustingPeriodPerChain.get("consumer1") < currentState.consumerStates.get("consumer1").chainState.runningTimestamp)
+ implies
+ (currentState.consumerStates.get("consumer1").localClientExpired or
+ currentState.providerState.consumerStatus.get("consumer1") == EXPIRED or
+ currentState.providerState.consumerStatus.get("consumer1") == TIMEDOUT)
+ },
+ any {
+ // advance time on the provider
+ EndAndBeginBlockForProvider(1 * Week, Set(), Set()),
+ // advance time on the consumer
+ EndAndBeginBlockForConsumer("consumer1", 1 * Week),
+ }
+ }
+ )
+ )
}
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/ccv_test.qnt b/tests/difference/core/quint_model/ccv_test.qnt
index 56320b12f0..477d0dc419 100644
--- a/tests/difference/core/quint_model/ccv_test.qnt
+++ b/tests/difference/core/quint_model/ccv_test.qnt
@@ -10,6 +10,7 @@ module ccv_test {
pure val chains = consumerChains.union(Set(PROVIDER_CHAIN))
pure val unbondingPeriods = chains.mapBy(chain => 2 * Week)
pure val ccvTimeouts = chains.mapBy(chain => 3 * Week)
+ pure val trustingPeriods = chains.mapBy(chain => 2 * Week - 1 * Hour)
import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains).* from "./ccv"
@@ -195,6 +196,7 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain1"),
Set("chain2"),
+ Set(),
Set()
)
res._2 == "" and
@@ -214,6 +216,7 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain2"),
Set("chain3"),
+ Set(),
Set()
)
res._2 == "cannot start a consumer that is stopped or already a consumer"
@@ -230,6 +233,7 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain1"),
Set("chain3"),
+ Set(),
Set()
)
res._2 == "Cannot stop a consumer that is not running"
@@ -246,6 +250,7 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain1"),
Set("chain1"),
+ Set(),
Set()
)
res._2 == "Cannot start and stop a consumer at the same time"
From 8681895bb224f431eac5bd20aafdfa8a35a5b1b5 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 09:25:41 +0100
Subject: [PATCH 038/111] Adjust tests for new timestamp handling
---
tests/difference/core/quint_model/ccv_model.qnt | 15 +++++++++------
tests/difference/core/quint_model/ccv_test.qnt | 4 ++--
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index f0f200e7a8..5cea4644ff 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -500,14 +500,17 @@ module ccv_model {
assert(currentState.consumerStates.get("consumer1").maturationTimes.length() == 1),
// the validator set was put as the current validator set
assert(currentState.consumerStates.get("consumer1").chainState.currentValidatorSet == InitialValidatorSet.put("node1", 200)),
- // advance time on provider until the unbonding period is over
- EndAndBeginBlockForProvider(UnbondingPeriodPerChain.get("consumer1"), Set(), Set()),
+ // advance time on provider and consumer until unbonding period is over - ensure that the consumer and provider
+ // stay in sync relative to each other
+ 4.reps(
+ i =>
+ EndAndBeginBlockForProvider(UnbondingPeriodPerChain.get("consumer1")/4, Set(), Set()).then(
+ EndAndBeginBlockForConsumer("consumer1", UnbondingPeriodPerChain.get("consumer1")/4)
+ )
+
+ )
}
)
- .then(
- // advance time on consumer until the unbonding period is over
- EndAndBeginBlockForConsumer("consumer1", UnbondingPeriodPerChain.get("consumer1"))
- )
.then(
all {
// the packet has not matured yet - the timestamp for the current block is after the naturation time,
diff --git a/tests/difference/core/quint_model/ccv_test.qnt b/tests/difference/core/quint_model/ccv_test.qnt
index 477d0dc419..8152a6c29e 100644
--- a/tests/difference/core/quint_model/ccv_test.qnt
+++ b/tests/difference/core/quint_model/ccv_test.qnt
@@ -12,7 +12,7 @@ module ccv_test {
pure val ccvTimeouts = chains.mapBy(chain => 3 * Week)
pure val trustingPeriods = chains.mapBy(chain => 2 * Week - 1 * Hour)
- import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains).* from "./ccv"
+ import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains, TrustingPeriodPerChain=trustingPeriods).* from "./ccv"
// changing voting power by zero gives an error
run VotingPowerZeroChangeTest =
@@ -158,7 +158,7 @@ module ccv_test {
"providerState", DeliverPacketToProviderHappyPathTest_testState.providerState.with(
"chainState", DeliverPacketToProviderHappyPathTest_testState.providerState.chainState.with(
// set the timestamp to be after the timeout
- "lastTimestamp", CcvTimeout.get("sender") + 1
+ "runningTimestamp", CcvTimeout.get("sender") + 1
)
)
)
From f229db7b690502208d98c625777555dc4625e8ea Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 09:43:42 +0100
Subject: [PATCH 039/111] Use -1 as last timestamp when no block was comitted
---
tests/difference/core/quint_model/ccv.qnt | 2 +-
tests/difference/core/quint_model/ccv_model.qnt | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index c0f7137412..3902c5ed36 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -55,7 +55,7 @@ module ccv_types {
{
votingPowerHistory: List(),
currentValidatorSet: Map(),
- lastTimestamp: 0,
+ lastTimestamp: -1, // last timestamp -1 means that in the model, there was no block comitted on chain yet.
runningTimestamp: 0,
}
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 5cea4644ff..46dfb9c493 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -464,7 +464,8 @@ module ccv_model {
assert(currentState.consumerStates.keys() == consumerChains),
assert(currentState.providerState.chainState.votingPowerHistory == List(InitialValidatorSet)),
assert(currentState.providerState.chainState.currentValidatorSet == InitialValidatorSet),
- assert(currentState.providerState.chainState.lastTimestamp == 0),
+ assert(currentState.providerState.chainState.lastTimestamp == -1),
+ assert(currentState.providerState.chainState.runningTimestamp == 0),
VotingPowerChange("node1", 50)
})
.then(
@@ -623,7 +624,7 @@ module ccv_model {
init.then(
EndAndBeginBlockForProvider(1 * Second, Set("consumer1"), Set())
).then(
- 20.reps(
+ 8.reps(
i => all {
{
// if the trusting period has passed
From 8bbb86aa25c79eaa9b58969f50e57be39d2aa07d Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 10:19:07 +0100
Subject: [PATCH 040/111] Fix client expiration conditions
---
tests/difference/core/quint_model/ccv_model.qnt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 46dfb9c493..98870e4e6b 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -628,8 +628,8 @@ module ccv_model {
i => all {
{
// if the trusting period has passed
- (currentState.consumerStates.get("consumer1").chainState.lastTimestamp + TrustingPeriodPerChain.get("provider") < currentState.providerState.chainState.runningTimestamp or
- currentState.providerState.chainState.lastTimestamp + TrustingPeriodPerChain.get("consumer1") < currentState.consumerStates.get("consumer1").chainState.runningTimestamp)
+ (currentState.consumerStates.get("consumer1").chainState.runningTimestamp + TrustingPeriodPerChain.get("provider") < currentState.providerState.chainState.lastTimestamp or
+ currentState.providerState.chainState.runningTimestamp + TrustingPeriodPerChain.get("consumer1") < currentState.consumerStates.get("consumer1").chainState.lastTimestamp)
implies
(currentState.consumerStates.get("consumer1").localClientExpired or
currentState.providerState.consumerStatus.get("consumer1") == EXPIRED or
From 9237c346bb66219041bdf7ccf63215a51b00d9fc Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 11:44:16 +0100
Subject: [PATCH 041/111] Start writing model with boundeddrift
---
tests/difference/core/quint_model/ccv.qnt | 7 +--
.../core/quint_model/ccv_boundeddrift.qnt | 53 +++++++++++++++++++
.../difference/core/quint_model/ccv_model.qnt | 1 -
.../{ccv_happy.qnt => ccv_sync.qnt} | 6 +--
4 files changed, 60 insertions(+), 7 deletions(-)
create mode 100644 tests/difference/core/quint_model/ccv_boundeddrift.qnt
rename tests/difference/core/quint_model/{ccv_happy.qnt => ccv_sync.qnt} (92%)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 3902c5ed36..07bb6525e5 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -399,9 +399,10 @@ module ccv {
res._1
)
+ // check whether the local client for the provider has expired on any consumer
val expiredConsumers = getRunningConsumers(providerStateAfterTimeAdvancement).filter(
consumer =>
- providerStateAfterTimeAdvancement.chainState.runningTimestamp > tmpState.consumerStates.get(consumer).chainState.lastTimestamp + TrustingPeriodPerChain.get("provider")
+ providerStateAfterTimeAdvancement.chainState.lastTimestamp > tmpState.consumerStates.get(consumer).chainState.runningTimestamp + TrustingPeriodPerChain.get(consumer)
).exclude(timedOutConsumers)
// send vsc packets
@@ -507,9 +508,9 @@ module ccv {
}
)
)
- // checks whether the local client for the provider chain has expired on the consumer
+ // checks whether the local client for the consumer has expired on the provider
val clientExpired =
- if (newChainState.runningTimestamp > currentState.providerState.chainState.lastTimestamp + TrustingPeriodPerChain.get(chain)) {
+ if (newChainState.lastTimestamp > currentState.providerState.chainState.runningTimestamp + TrustingPeriodPerChain.get(chain)) {
true
} else {
false
diff --git a/tests/difference/core/quint_model/ccv_boundeddrift.qnt b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
new file mode 100644
index 0000000000..81dca41a56
--- /dev/null
+++ b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
@@ -0,0 +1,53 @@
+module ccv_happy {
+ import ccv_model.* from "ccv_model"
+ import ccv_types as ccvt from "ccv"
+ import ccv from "ccv"
+ import Time.* from "./libraries/Time"
+ import extraSpells.* from "./libraries/extraSpells"
+
+
+ // The boundeddrift module has its own step function.
+ // They ensure that chains do not drift from each other in terms of time
+ // more than a given bound.
+ // It differs from the sync module in that it does not require
+ // the chains to produce blocks at the same time.
+
+ // The maximal drift that this module will allow between chains.
+ // In particular, it will ensure that the lastTime of any chain
+ // does not differ from the runningTime of any other chain by more than
+ // this value.
+ pure val maxDrift = defUnbondingPeriod - 2 * Hour
+
+ // Finds the maximal time advancement that can be done for a given chain
+ // without violating the maxDrift constraint.
+ pure def findMaxTimeAdvancement(advancingChain: ccvt::ChainState, otherChains: Set[ccvt::ChainState]): Time =
+ val otherChainsLastTimes = otherChains.map(c => c.lastTimestamp)
+ 0
+ // // start with advancingChain.RunningTime - if this is the minimal element, we can advance by maxDrift anyways
+ // val otherChainsMinLastTime = otherChainsLastTimes.fold(advancingChain.runningTimestamp, (acc, t) => if (acc < t) acc else t)
+ // val maxTime = advancingChain.runningTimestamp - otherChainsMinLastTime + maxDrift
+
+ // step will advance time for all chains at the same rate,
+ // thus the clock times are always in sync.
+ // This is useful to test happy paths.
+ action stepBoundedDrift = any {
+ step_common, // allow actions that do not influence time
+
+ all {
+ // advance a block for a consumer
+ all {
+ runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
+ nondet chain = oneOf(runningConsumers)
+ nondet timeAdvancement = oneOf(timeAdvancements)
+ EndAndBeginBlockForConsumer(chain, timeAdvancement),
+ },
+
+ // advance a block for the provider
+ val consumerStatus = currentState.providerState.consumerStatus
+ nondet consumersToStart = oneOf(nonConsumers.powerset())
+ nondet consumersToStop = oneOf(runningConsumers.powerset())
+ nondet timeAdvancement = oneOf(timeAdvancements)
+ EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
+ }
+ }
+}
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 98870e4e6b..4f44322da7 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -170,7 +170,6 @@ module ccv_model {
}
// step_common is the core functionality of steps that does not have anything to do with time.
- // Thus, it is part of both step and stepBoundedDrift.
action step_common = any {
nondet node = oneOf(nodes)
// very restricted set of voting powers. exact values are not important,
diff --git a/tests/difference/core/quint_model/ccv_happy.qnt b/tests/difference/core/quint_model/ccv_sync.qnt
similarity index 92%
rename from tests/difference/core/quint_model/ccv_happy.qnt
rename to tests/difference/core/quint_model/ccv_sync.qnt
index 60e2574422..99bbcdc720 100644
--- a/tests/difference/core/quint_model/ccv_happy.qnt
+++ b/tests/difference/core/quint_model/ccv_sync.qnt
@@ -1,4 +1,4 @@
-module ccv_happy {
+module ccv_sync {
import ccv_model.* from "ccv_model"
import ccv_types as ccvt from "ccv"
import ccv from "ccv"
@@ -6,7 +6,7 @@ module ccv_happy {
import extraSpells.* from "./libraries/extraSpells"
- // The happy path module has its own init and step functions.
+ // The sync module has its own init and step functions.
// They ensure that chains do not drift from each other in terms of time,
// and all chains produce blocks synchronously.
// To do so, it makes use of
@@ -15,7 +15,7 @@ module ccv_happy {
// QueuedEndBlocks contains a list of chains which will end their blocks next,
// together with the time advancement they should advance by.
- // When stepHappyPath selects an action, it checks if there are any chains in this list,
+ // When stepHappy selects an action, it checks if there are any chains in this list,
// and if so, it will only select actions that end blocks on the head of the list.
// QueuedEndBlocks is thus used to schedule actions.
var QueuedEndBlocks: List[(ccvt::Chain, Time)]
From 2b9873af7733a23b427e0336896fc98ba9851489 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 12:52:49 +0100
Subject: [PATCH 042/111] Add model with bounded drift
---
.../core/quint_model/ccv_boundeddrift.qnt | 76 +++++++++++++------
1 file changed, 53 insertions(+), 23 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv_boundeddrift.qnt b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
index 81dca41a56..23f74a2272 100644
--- a/tests/difference/core/quint_model/ccv_boundeddrift.qnt
+++ b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
@@ -1,6 +1,6 @@
module ccv_happy {
import ccv_model.* from "ccv_model"
- import ccv_types as ccvt from "ccv"
+ import ccv_types as Ccvt from "ccv"
import ccv from "ccv"
import Time.* from "./libraries/Time"
import extraSpells.* from "./libraries/extraSpells"
@@ -18,14 +18,34 @@ module ccv_happy {
// this value.
pure val maxDrift = defUnbondingPeriod - 2 * Hour
- // Finds the maximal time advancement that can be done for a given chain
- // without violating the maxDrift constraint.
- pure def findMaxTimeAdvancement(advancingChain: ccvt::ChainState, otherChains: Set[ccvt::ChainState]): Time =
+ pure def findMaxTimeAdvancement(advancingChain: Ccvt::ChainState, otherChains: Set[Ccvt::ChainState], maximalDrift: Time): Time =
val otherChainsLastTimes = otherChains.map(c => c.lastTimestamp)
- 0
- // // start with advancingChain.RunningTime - if this is the minimal element, we can advance by maxDrift anyways
- // val otherChainsMinLastTime = otherChainsLastTimes.fold(advancingChain.runningTimestamp, (acc, t) => if (acc < t) acc else t)
- // val maxTime = advancingChain.runningTimestamp - otherChainsMinLastTime + maxDrift
+ // start with advancingChain.RunningTime - if this is the minimal element, we can advance by maxDrift anyways
+ val otherChainsMinLastTime = otherChainsLastTimes.fold(advancingChain.runningTimestamp, (acc, t) => if (acc < t) acc else t)
+ val maxTime = advancingChain.runningTimestamp - otherChainsMinLastTime + maximalDrift
+ maxTime
+
+ // Given the name of a chain, gets a set with the chain states of all other chains.
+ def GetOtherChainStates(advancingChain: Ccvt::Chain): Set[Ccvt::ChainState] =
+ val runCons = ccv::getRunningConsumers(currentState.providerState)
+ if (advancingChain == Ccvt::PROVIDER_CHAIN) {
+ runCons.map(c => currentState.consumerStates.get(c).chainState)
+ } else {
+ val consumerChainStates = runCons.filter(c => c != advancingChain).map(c => currentState.consumerStates.get(c).chainState)
+ consumerChainStates.union(Set(currentState.providerState.chainState))
+ }
+
+ def GetChainState(advancingChain: Ccvt::Chain): Ccvt::ChainState =
+ if (advancingChain == Ccvt::PROVIDER_CHAIN) {
+ currentState.providerState.chainState
+ } else {
+ currentState.consumerStates.get(advancingChain).chainState
+ }
+
+ def GetChainStates(): Set[Ccvt::ChainState] =
+ val runCons = ccv::getRunningConsumers(currentState.providerState)
+ val consumerChainStates = runCons.map(c => currentState.consumerStates.get(c).chainState)
+ consumerChainStates.union(Set(currentState.providerState.chainState))
// step will advance time for all chains at the same rate,
// thus the clock times are always in sync.
@@ -33,21 +53,31 @@ module ccv_happy {
action stepBoundedDrift = any {
step_common, // allow actions that do not influence time
+ // advance a block for a consumer
all {
- // advance a block for a consumer
- all {
- runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
- nondet chain = oneOf(runningConsumers)
- nondet timeAdvancement = oneOf(timeAdvancements)
- EndAndBeginBlockForConsumer(chain, timeAdvancement),
- },
-
- // advance a block for the provider
- val consumerStatus = currentState.providerState.consumerStatus
- nondet consumersToStart = oneOf(nonConsumers.powerset())
- nondet consumersToStop = oneOf(runningConsumers.powerset())
- nondet timeAdvancement = oneOf(timeAdvancements)
- EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
- }
+ runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
+ nondet chain = oneOf(runningConsumers)
+ val maxTimeAdvancement = findMaxTimeAdvancement(GetChainState(chain), GetOtherChainStates(chain), maxDrift)
+ nondet timeAdvancement = oneOf(timeAdvancements.filter(t => t <= maxTimeAdvancement))
+ EndAndBeginBlockForConsumer(chain, timeAdvancement),
+ },
+
+ // advance a block for the provider
+ val consumerStatus = currentState.providerState.consumerStatus
+ nondet consumersToStart = oneOf(nonConsumers.powerset())
+ nondet consumersToStop = oneOf(runningConsumers.powerset())
+ val maxTimeAdvancement = findMaxTimeAdvancement(GetChainState(Ccvt::PROVIDER_CHAIN), GetOtherChainStates(Ccvt::PROVIDER_CHAIN), maxDrift)
+ nondet timeAdvancement = oneOf(timeAdvancements.filter(t => t <= maxTimeAdvancement))
+ EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
}
+
+ // INVARIANT
+ // The maxDrift between chains is never exceeded.
+ // This *should* be ensured by the step function.
+ val BoundedDriftInv =
+ GetChainStates.forall(
+ chain1 => GetChainStates.forall(
+ chain2 => chain1.runningTimestamp - chain2.lastTimestamp <= maxDrift
+ )
+ )
}
\ No newline at end of file
From dd2cd7c4faa64638e32f40de32c20f709aa51a92 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 14:01:06 +0100
Subject: [PATCH 043/111] Rename module to match filename
---
.../difference/core/quint_model/ccv_boundeddrift.qnt | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv_boundeddrift.qnt b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
index 23f74a2272..ca1298cefe 100644
--- a/tests/difference/core/quint_model/ccv_boundeddrift.qnt
+++ b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
@@ -1,4 +1,4 @@
-module ccv_happy {
+module ccv_boundeddrift {
import ccv_model.* from "ccv_model"
import ccv_types as Ccvt from "ccv"
import ccv from "ccv"
@@ -22,7 +22,7 @@ module ccv_happy {
val otherChainsLastTimes = otherChains.map(c => c.lastTimestamp)
// start with advancingChain.RunningTime - if this is the minimal element, we can advance by maxDrift anyways
val otherChainsMinLastTime = otherChainsLastTimes.fold(advancingChain.runningTimestamp, (acc, t) => if (acc < t) acc else t)
- val maxTime = advancingChain.runningTimestamp - otherChainsMinLastTime + maximalDrift
+ val maxTime = otherChainsMinLastTime - advancingChain.runningTimestamp + maximalDrift
maxTime
// Given the name of a chain, gets a set with the chain states of all other chains.
@@ -42,7 +42,7 @@ module ccv_happy {
currentState.consumerStates.get(advancingChain).chainState
}
- def GetChainStates(): Set[Ccvt::ChainState] =
+ def GetRunningChainStates(): Set[Ccvt::ChainState] =
val runCons = ccv::getRunningConsumers(currentState.providerState)
val consumerChainStates = runCons.map(c => currentState.consumerStates.get(c).chainState)
consumerChainStates.union(Set(currentState.providerState.chainState))
@@ -75,9 +75,9 @@ module ccv_happy {
// The maxDrift between chains is never exceeded.
// This *should* be ensured by the step function.
val BoundedDriftInv =
- GetChainStates.forall(
- chain1 => GetChainStates.forall(
- chain2 => chain1.runningTimestamp - chain2.lastTimestamp <= maxDrift
+ GetRunningChainStates.forall(
+ chain1 => GetRunningChainStates.forall(
+ chain2 => abs(chain1.runningTimestamp - chain2.lastTimestamp) <= maxDrift
)
)
}
\ No newline at end of file
From 603a66844a66f77bf1174725dd92d5104810a162 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 14:01:49 +0100
Subject: [PATCH 044/111] Add extra log output and trace gen scripts
---
.../core/quint_model/driver/core.go | 18 +++-
.../driver/generate_boundeddrift_traces.sh | 1 +
.../driver/generate_happy_traces.sh | 1 -
.../core/quint_model/driver/mbt_test.go | 85 +++++++++++++++----
.../core/quint_model/driver/model_viewer.go | 6 +-
5 files changed, 87 insertions(+), 24 deletions(-)
create mode 100755 tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
delete mode 100755 tests/difference/core/quint_model/driver/generate_happy_traces.sh
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index ac4eb9a4ee..fa75970ed1 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -98,12 +98,18 @@ func (s *Driver) height(chain ChainId) int64 {
return s.chain(chain).CurrentHeader.GetHeight()
}
-// time returns the time of the current header of chain
-func (s *Driver) time(chain ChainId) time.Time {
+// runningTime returns the timestamp of the current header of chain
+func (s *Driver) runningTime(chain ChainId) time.Time {
testChain := s.chain(chain)
return testChain.CurrentHeader.Time
}
+// lastTime returns the timestamp of the last header of chain
+func (s *Driver) lastTime(chain ChainId) time.Time {
+ testChain := s.chain(chain)
+ return testChain.LastHeader.Header.Time
+}
+
func (s *Driver) allTimes() map[ChainId]time.Time {
chains := s.coordinator.Chains
times := make(map[ChainId]time.Time, len(chains))
@@ -318,12 +324,16 @@ func (s *Driver) getChainStateString(chain ChainId) string {
height := ctx.BlockHeight()
// Get the current block time
- blockTime := ctx.BlockTime()
+ runningTime := s.runningTime(chain)
+
+ // get the time of the last block
+ lastTime := s.lastTime(chain)
// Build the chain info string
var chainInfo strings.Builder
chainInfo.WriteString(fmt.Sprintf(" Height: %d\n", height))
- chainInfo.WriteString(fmt.Sprintf(" Time: %s\n", blockTime))
+ chainInfo.WriteString(fmt.Sprintf(" Running Time: %s\n", runningTime))
+ chainInfo.WriteString(fmt.Sprintf(" Last Time entered on chain: %s\n", lastTime))
if !s.isProviderChain(chain) {
// Check whether the chain is in the consumer chains on the provider
diff --git a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
new file mode 100755
index 0000000000..4633a253b0
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
@@ -0,0 +1 @@
+go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -traceFolder traces -numTraces 100
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/generate_happy_traces.sh b/tests/difference/core/quint_model/driver/generate_happy_traces.sh
deleted file mode 100755
index fd1a45f589..0000000000
--- a/tests/difference/core/quint_model/driver/generate_happy_traces.sh
+++ /dev/null
@@ -1 +0,0 @@
-go run ./... -modelPath=../ccv_happy.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces -numTraces 5
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 4d8c36304c..978c7026d6 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -21,6 +21,18 @@ import (
const verbose = true
+// keep some interesting statistics
+type Stats struct {
+ highestObservedValPower int64
+ longestObservedPacketQueue int
+
+ numStartedChains int
+ numStops int
+ numTimeouts int
+}
+
+var stats = Stats{}
+
func TestMBT(t *testing.T) {
dirEntries, err := os.ReadDir("traces")
if err != nil {
@@ -38,6 +50,12 @@ func TestMBT(t *testing.T) {
t.Log("✅ Running traces from the traces folder done")
t.Log(len(dirEntries), "traces run")
+
+ // print some stats
+ t.Logf("Highest observed voting power: %v", stats.highestObservedValPower)
+ t.Logf("Longest observed packet queue: %v", stats.longestObservedPacketQueue)
+ t.Logf("Number of started chains: %v", stats.numStartedChains)
+ t.Logf("Number of stopped chains: %v", stats.numStops)
}
func RunItfTrace(t *testing.T, path string) {
@@ -126,7 +144,7 @@ func RunItfTrace(t *testing.T, path string) {
// this is necessary because the system needs to do many steps to initialize the chains,
// which is abstracted away in the model
timeOffsets := make(map[ChainId]time.Time, len(chains))
- timeOffsets[Provider] = driver.time(Provider)
+ timeOffsets[Provider] = driver.runningTime(Provider)
t.Log("Started chains")
@@ -167,6 +185,9 @@ func RunItfTrace(t *testing.T, path string) {
consumersToStop := lastAction["consumersToStop"].Value.(itf.ListExprType)
t.Log("EndAndBeginBlockForProvider", timeAdvancement, consumersToStart, consumersToStop)
+ stats.numStartedChains += len(consumersToStart)
+ stats.numStops += len(consumersToStop)
+
// we need 2 blocks, because for a packet sent at height H, the receiving chain
// needs a header of height H+1 to accept the packet
// so we do one time advancement with a very small increment,
@@ -179,10 +200,10 @@ func RunItfTrace(t *testing.T, path string) {
// when the coordinator is starting chains
lastTimestamps := make(map[ChainId]time.Time, len(consumers))
for _, consumer := range driver.runningConsumers() {
- lastTimestamps[ChainId(consumer.ChainId)] = driver.time(ChainId(consumer.ChainId))
+ lastTimestamps[ChainId(consumer.ChainId)] = driver.runningTime(ChainId(consumer.ChainId))
}
- driver.coordinator.CurrentTime = driver.time("provider")
+ driver.coordinator.CurrentTime = driver.runningTime("provider")
// start consumers
for _, consumer := range consumersToStart {
driver.setupConsumer(
@@ -256,11 +277,11 @@ func RunItfTrace(t *testing.T, path string) {
consumerHeader := driver.chain(ChainId(consumerChain)).LastHeader
driver.path(ChainId(consumerChain)).AddClientHeader(consumerChain, consumerHeader)
var err error
- if LocalClientExpired(currentModelState, consumerChain) {
- err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, true)
- } else {
- err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, false)
- }
+ // if LocalClientExpired(currentModelState, consumerChain) {
+ // err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, true)
+ // } else {
+ err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, false)
+ // }
require.True(t, err == nil, "Error updating client from %v on provider: %v", consumerChain, err)
case "DeliverVscPacket":
@@ -323,6 +344,8 @@ func RunItfTrace(t *testing.T, path string) {
ComparePacketQueues(t, driver, currentModelState, consumer)
}
t.Log("Packet queues match")
+
+ stats.EnterStats(driver)
}
t.Log("🟢 Trace is ok!")
}
@@ -407,23 +430,27 @@ func CompareTimes(
currentModelState map[string]itf.Expr,
timeOffsets map[ChainId]time.Time,
) {
- providerLastTimestamp := Time(currentModelState, "provider")
- actualProviderTime := driver.time("provider")
providerOffset := timeOffsets["provider"]
+ providerRunningTimestamp := RunningTime(currentModelState, "provider")
+ actualRunningProviderTime := driver.runningTime("provider")
+
require.Equal(t,
- providerLastTimestamp,
- actualProviderTime.Unix()-providerOffset.Unix(),
- "Block times do not match for provider")
+ providerRunningTimestamp,
+ actualRunningProviderTime.Unix()-providerOffset.Unix(),
+ "Running times do not match for provider")
for _, chain := range consumers {
- modelLastTimestamp := Time(currentModelState, chain)
- actualChainTime := driver.time(ChainId(chain))
+ offset := timeOffsets[ChainId(chain)]
+
+ modelRunningTimestamp := RunningTime(currentModelState, chain)
+ actualRunningChainTime := driver.runningTime(ChainId(chain))
require.Equal(t,
- modelLastTimestamp,
- actualChainTime.Unix()-timeOffsets[ChainId(chain)].Unix(),
- "Block times do not match for chain %v", chain)
+ modelRunningTimestamp,
+ actualRunningChainTime.Unix()-offset.Unix(),
+ "Running times do not match for chain %v", chain)
+
}
}
@@ -454,3 +481,25 @@ func CompareValSet(modelValSet map[string]itf.Expr, systemValSet map[string]int6
}
return nil
}
+
+func (s *Stats) EnterStats(driver *Driver) {
+ // highest observed voting power
+ for _, val := range driver.providerValidatorSet() {
+ if val.Tokens.Int64() > s.highestObservedValPower {
+ s.highestObservedValPower = val.Tokens.Int64()
+ }
+ }
+
+ // longest observed packet queue
+ for _, consumer := range driver.runningConsumers() {
+ queueToConsumer := driver.packetQueue(Provider, ChainId(consumer.ChainId))
+ if len(queueToConsumer) > s.longestObservedPacketQueue {
+ s.longestObservedPacketQueue = len(queueToConsumer)
+ }
+
+ queueFromConsumer := driver.packetQueue(ChainId(consumer.ChainId), Provider)
+ if len(queueFromConsumer) > s.longestObservedPacketQueue {
+ s.longestObservedPacketQueue = len(queueFromConsumer)
+ }
+ }
+}
diff --git a/tests/difference/core/quint_model/driver/model_viewer.go b/tests/difference/core/quint_model/driver/model_viewer.go
index 309690bb7b..0b0c9d014d 100644
--- a/tests/difference/core/quint_model/driver/model_viewer.go
+++ b/tests/difference/core/quint_model/driver/model_viewer.go
@@ -36,10 +36,14 @@ func HistoricalValidatorSet(curStateExpr itf.MapExprType, chain string, index in
return history[index].Value.(itf.MapExprType)
}
-func Time(curStateExpr itf.MapExprType, chain string) int64 {
+func LastTime(curStateExpr itf.MapExprType, chain string) int64 {
return ChainState(curStateExpr, chain)["lastTimestamp"].Value.(int64)
}
+func RunningTime(curStateExpr itf.MapExprType, chain string) int64 {
+ return ChainState(curStateExpr, chain)["runningTimestamp"].Value.(int64)
+}
+
// PacketQueue returns the queued packets between sender and receiver.
// Either sender or receiver need to be the provider.
func PacketQueue(curStateExpr itf.MapExprType, sender string, receiver string) itf.ListExprType {
From 719614c890ca0265bff3c7030693f05396f31f0a Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 14:03:14 +0100
Subject: [PATCH 045/111] Add Apalache output folder to gitignore
---
tests/difference/core/quint_model/.gitignore | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 tests/difference/core/quint_model/.gitignore
diff --git a/tests/difference/core/quint_model/.gitignore b/tests/difference/core/quint_model/.gitignore
new file mode 100644
index 0000000000..cca2dcf61e
--- /dev/null
+++ b/tests/difference/core/quint_model/.gitignore
@@ -0,0 +1,2 @@
+# Output generated by the Apalache model checker
+_apalache-out
\ No newline at end of file
From 468dc7fbbcbef8d7fd05169d3ac5e3c95ab1d29d Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Tue, 28 Nov 2023 17:51:36 +0100
Subject: [PATCH 046/111] Remove expired clients
---
tests/difference/core/quint_model/ccv.qnt | 41 ++++---------------
.../difference/core/quint_model/ccv_model.qnt | 35 ++++------------
.../difference/core/quint_model/ccv_test.qnt | 4 --
3 files changed, 15 insertions(+), 65 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 07bb6525e5..879e2387a0 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -122,9 +122,6 @@ module ccv_types {
// ordered by recency, so the head is the oldest packet.
// In the implementation, essentially unacknowledged IBC packets.
outstandingPacketsToProvider: List[VscMaturedPacket],
-
- // true if the local client of that chain has expired, false otherwise.
- localClientExpired: bool,
}
// utility function: returns a consumer state that is initialized minimally.
@@ -134,7 +131,6 @@ module ccv_types {
maturationTimes: List(),
outstandingPacketsToProvider: List(),
receivedVscPackets: List(),
- localClientExpired: false,
}
// the state of the protocol consists of the composition of the state of one provider chain with potentially many consumer chains.
@@ -186,7 +182,6 @@ module ccv_types {
pure val TIMEDOUT = "timedout" // the chain has timed out and was dropped by the provider. This is only used for involuntary drops.
pure val RUNNING = "running" //Â the chain is currently a consumer chain. Running chains are those that get sent VscPackets.
pure val NOT_CONSUMER = "not consumer" // the chain has never been a consumer chain, and is available to become one.
- pure val EXPIRED = "expired" // The channel between the chains is expired. This is only used for involuntary drops.
// When a chain is dropped, it cannot become a consumer again - we assume that would be done by another consumer becoming running.
// the provider chain.
@@ -250,6 +245,8 @@ module ccv {
pure val oldVotingPower = if (currentValidatorSet.keys().contains(validator)) currentValidatorSet.get(validator) else 0
if (amount == 0) {
Err("Voting power cannot change by zero!")
+ } else if (oldVotingPower == 0) {
+ Err("Voting power cannot be changed for a validator that is not in the current validator set!")
} else {
pure val newVotingPower = oldVotingPower + amount
pure val newValidatorSet = currentValidatorSet.put(validator, if(newVotingPower >= 0) newVotingPower else 0)
@@ -284,8 +281,7 @@ module ccv {
val result = stopConsumers(
currentState.providerState.consumerStatus,
Set(),
- Set(sender),
- Set()
+ Set(sender)
)
val newConsumerStatus = result._1
@@ -334,8 +330,7 @@ module ccv {
val result = stopConsumers(
currentState.providerState.consumerStatus,
Set(),
- Set(receiver),
- Set()
+ Set(receiver)
)
val newConsumerStatus = result._1
@@ -399,12 +394,6 @@ module ccv {
res._1
)
- // check whether the local client for the provider has expired on any consumer
- val expiredConsumers = getRunningConsumers(providerStateAfterTimeAdvancement).filter(
- consumer =>
- providerStateAfterTimeAdvancement.chainState.lastTimestamp > tmpState.consumerStates.get(consumer).chainState.runningTimestamp + TrustingPeriodPerChain.get(consumer)
- ).exclude(timedOutConsumers)
-
// send vsc packets
val providerStateAfterSending =
if (currentProviderState.providerValidatorSetChangedInThisBlock and
@@ -420,8 +409,7 @@ module ccv {
val res = providerStateAfterSending.consumerStatus.StartStopConsumers(
consumersToStart,
consumersToStop,
- timedOutConsumers,
- expiredConsumers
+ timedOutConsumers
)
val newConsumerStatus = res._1
val err = res._2
@@ -508,19 +496,10 @@ module ccv {
}
)
)
- // checks whether the local client for the consumer has expired on the provider
- val clientExpired =
- if (newChainState.lastTimestamp > currentState.providerState.chainState.runningTimestamp + TrustingPeriodPerChain.get(chain)) {
- true
- } else {
- false
- }
val newConsumerState2: ConsumerState = newConsumerState.with(
"maturationTimes", newMaturationTimes
).with(
"outstandingPacketsToProvider", newOutstandingPackets
- ).with(
- "localClientExpired", clientExpired
)
val newConsumerStates = currentState.consumerStates.set(chain, newConsumerState2)
val newState: ProtocolState = currentState.with(
@@ -543,8 +522,7 @@ module ccv {
pure def stopConsumers(
currentConsumerStatusMap: Chain -> str,
consumersToStop: Set[Chain],
- consumersToTimeout: Set[Chain],
- expiredConsumers: Set[Chain]): (Chain -> str, str) = {
+ consumersToTimeout: Set[Chain]): (Chain -> str, str) = {
val runningConsumers = currentConsumerStatusMap.keys().filter(
chain => currentConsumerStatusMap.get(chain) == RUNNING
)
@@ -556,8 +534,6 @@ module ccv {
(chain) =>
if (consumersToTimeout.contains(chain)) {
TIMEDOUT
- } else if (expiredConsumers.contains(chain)) {
- EXPIRED
} else if (consumersToStop.contains(chain)) {
STOPPED
} else {
@@ -597,8 +573,7 @@ module ccv {
currentConsumerStatusMap: Chain -> str,
consumersToStart: Set[Chain],
consumersToStop: Set[Chain],
- consumersToTimeout: Set[Chain],
- expiredConsumers: Set[Chain]
+ consumersToTimeout: Set[Chain]
): (Chain -> str, str) = {
// check if any consumer is both started and stopped
if (consumersToStart.intersect(consumersToStop).size() > 0) {
@@ -607,7 +582,7 @@ module ccv {
val res1 = currentConsumerStatusMap.startConsumers(consumersToStart)
val newConsumerStatus = res1._1
val err1 = res1._2
- val res2 = newConsumerStatus.stopConsumers(consumersToStop, consumersToTimeout, expiredConsumers)
+ val res2 = newConsumerStatus.stopConsumers(consumersToStop, consumersToTimeout)
val err2 = res2._2
if (err1 != "") {
(currentConsumerStatusMap, err1)
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 4f44322da7..0c21dffc86 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -16,7 +16,13 @@ module ccv_model {
pure val nodes = Set("node1", "node2", "node3", "node4", "node5", "node6", "node7", "node8", "node9", "node10")
pure val InitialValidatorSet = nodes.mapBy(node => 100)
- import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains, TrustingPeriodPerChain = trustingPeriods).* from "./ccv"
+ import ccv(
+ VscTimeout = 5 * Week,
+ CcvTimeout = ccvTimeouts,
+ UnbondingPeriodPerChain = unbondingPeriods,
+ ConsumerChains = consumerChains,
+ TrustingPeriodPerChain = trustingPeriods
+ ).* from "./ccv"
type Parameters = {
VscTimeout: Time,
@@ -616,31 +622,4 @@ module ccv_model {
VotingPowerChange("node1", 50) // action needs to be there but does not matter what it is
}
)
-
- // check that when the running timestamp of a chain and the last timestamp of a counterparty differ by more than the trusting period,
- // the client is expired
- run ExpiredClientTest =
- init.then(
- EndAndBeginBlockForProvider(1 * Second, Set("consumer1"), Set())
- ).then(
- 8.reps(
- i => all {
- {
- // if the trusting period has passed
- (currentState.consumerStates.get("consumer1").chainState.runningTimestamp + TrustingPeriodPerChain.get("provider") < currentState.providerState.chainState.lastTimestamp or
- currentState.providerState.chainState.runningTimestamp + TrustingPeriodPerChain.get("consumer1") < currentState.consumerStates.get("consumer1").chainState.lastTimestamp)
- implies
- (currentState.consumerStates.get("consumer1").localClientExpired or
- currentState.providerState.consumerStatus.get("consumer1") == EXPIRED or
- currentState.providerState.consumerStatus.get("consumer1") == TIMEDOUT)
- },
- any {
- // advance time on the provider
- EndAndBeginBlockForProvider(1 * Week, Set(), Set()),
- // advance time on the consumer
- EndAndBeginBlockForConsumer("consumer1", 1 * Week),
- }
- }
- )
- )
}
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/ccv_test.qnt b/tests/difference/core/quint_model/ccv_test.qnt
index 8152a6c29e..6a270d0803 100644
--- a/tests/difference/core/quint_model/ccv_test.qnt
+++ b/tests/difference/core/quint_model/ccv_test.qnt
@@ -196,7 +196,6 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain1"),
Set("chain2"),
- Set(),
Set()
)
res._2 == "" and
@@ -216,7 +215,6 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain2"),
Set("chain3"),
- Set(),
Set()
)
res._2 == "cannot start a consumer that is stopped or already a consumer"
@@ -233,7 +231,6 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain1"),
Set("chain3"),
- Set(),
Set()
)
res._2 == "Cannot stop a consumer that is not running"
@@ -250,7 +247,6 @@ module ccv_test {
currentConsumerStatusMap,
Set("chain1"),
Set("chain1"),
- Set(),
Set()
)
res._2 == "Cannot start and stop a consumer at the same time"
From 31bd231e9466b63e20102d22c26f6978837979b2 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 09:59:24 +0100
Subject: [PATCH 047/111] Remove different time offsets for different chains
---
.../core/quint_model/driver/core.go | 32 ++++-
.../driver/generate_boundeddrift_traces.sh | 2 +-
.../core/quint_model/driver/mbt_test.go | 112 +++++++-----------
.../core/quint_model/driver/setup.go | 9 +-
.../core/quint_model/driver/stats.go | 19 +++
5 files changed, 93 insertions(+), 81 deletions(-)
create mode 100644 tests/difference/core/quint_model/driver/stats.go
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index fa75970ed1..0688fb4ad1 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -27,6 +27,8 @@ import (
abcitypes "github.com/cometbft/cometbft/abci/types"
cmttypes "github.com/cometbft/cometbft/types"
+
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
)
// Define a new type for ChainIds to be more explicit
@@ -52,6 +54,8 @@ type Driver struct {
// keep around validators for easy access
validators []*cmttypes.Validator
valNames []string
+
+ DriverStats *Stats
}
// ctx returns the sdk.Context for the chain
@@ -172,11 +176,14 @@ func (s *Driver) delegation(i int64) int64 {
}
// validatorStatus returns the validator status for validator with id (ix) i
-// on the provider chain
-func (s *Driver) validatorStatus(i int64) stakingtypes.BondStatus {
+// on the provider chain, and also whether the validator was found.
+// If the validator was not found, the status is returned as Unbonded.
+func (s *Driver) validatorStatus(i int64) (stakingtypes.BondStatus, bool) {
v, found := s.providerStakingKeeper().GetValidator(s.ctx(P), s.validator(i))
- require.True(s.t, found, "GetValidator(%v) -> !found", s.validator(i))
- return v.GetStatus()
+ if !found {
+ return stakingtypes.Unbonded, false
+ }
+ return v.GetStatus(), true
}
// providerTokens returns the number of tokens that the validator with
@@ -417,6 +424,10 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration)
header, packets := simibc.EndBlock(testChain, func() {})
+ s.DriverStats.numSentPackets += len(packets)
+ s.DriverStats.numBlocks += 1
+ s.DriverStats.totalBlockTimePassedPerTrace += timeAdvancement
+
// for each packet, find the path it should be sent on
for _, p := range packets {
found := false
@@ -443,7 +454,18 @@ func (s *Driver) endAndBeginBlock(chain ChainId, timeAdvancement time.Duration)
}
func (s *Driver) runningConsumers() []providertypes.Chain {
- return s.providerKeeper().GetAllConsumerChains(s.providerCtx())
+ // consumers that are still consumers on the provider
+ consumersOnProvider := s.providerKeeper().GetAllConsumerChains(s.providerCtx())
+
+ consumersWithIntactChannel := make([]providertypes.Chain, 0)
+ for _, consumer := range consumersOnProvider {
+ if s.path(ChainId(consumer.ChainId)).Path.EndpointA.GetChannel().State == channeltypes.CLOSED ||
+ s.path(ChainId(consumer.ChainId)).Path.EndpointB.GetChannel().State == channeltypes.CLOSED {
+ continue
+ }
+ consumersWithIntactChannel = append(consumersWithIntactChannel, consumer)
+ }
+ return consumersWithIntactChannel
}
func (s *Driver) setTime(chain ChainId, newTime time.Time) {
diff --git a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
index 4633a253b0..e61ea4c922 100755
--- a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
+++ b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
@@ -1 +1 @@
-go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -traceFolder traces -numTraces 100
\ No newline at end of file
+go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift --inv CanTimeoutConsumer -traceFolder traces -numTraces 100
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 978c7026d6..7f996a9532 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -22,15 +22,6 @@ import (
const verbose = true
// keep some interesting statistics
-type Stats struct {
- highestObservedValPower int64
- longestObservedPacketQueue int
-
- numStartedChains int
- numStops int
- numTimeouts int
-}
-
var stats = Stats{}
func TestMBT(t *testing.T) {
@@ -53,9 +44,13 @@ func TestMBT(t *testing.T) {
// print some stats
t.Logf("Highest observed voting power: %v", stats.highestObservedValPower)
- t.Logf("Longest observed packet queue: %v", stats.longestObservedPacketQueue)
t.Logf("Number of started chains: %v", stats.numStartedChains)
t.Logf("Number of stopped chains: %v", stats.numStops)
+ t.Logf("Number of timeouts: %v", stats.numTimeouts)
+ t.Logf("Number of sent packets: %v", stats.numSentPackets)
+ t.Logf("Number of blocks: %v", stats.numBlocks)
+ t.Logf("Number of transactions: %v", stats.numTxs)
+ t.Logf("Average summed block time delta passed per trace: %v", stats.totalBlockTimePassedPerTrace/time.Duration(len(dirEntries)))
}
func RunItfTrace(t *testing.T, path string) {
@@ -127,7 +122,7 @@ func RunItfTrace(t *testing.T, path string) {
valNames[i] = val.Value.(string)
}
- // dummyValSet is a valSet with the right validators, but not yet right powers
+ // initialValSet has the right vals, but not yet the right powers
valSet, addressMap, signers := CreateValSet(t, initialValSet)
// get a slice of validators in the right order
@@ -137,14 +132,14 @@ func RunItfTrace(t *testing.T, path string) {
}
driver := newDriver(t, nodes, valNames)
+ driver.DriverStats = &stats
driver.setupProvider(modelParams, valSet, signers, nodes, valNames)
// remember the time offsets to be able to compare times to the model
// this is necessary because the system needs to do many steps to initialize the chains,
// which is abstracted away in the model
- timeOffsets := make(map[ChainId]time.Time, len(chains))
- timeOffsets[Provider] = driver.runningTime(Provider)
+ timeOffset := driver.runningTime("provider")
t.Log("Started chains")
@@ -179,6 +174,8 @@ func RunItfTrace(t *testing.T, path string) {
// undelegate from the validator
driver.undelegate(int64(valIndex), -changeAmount)
}
+
+ stats.numTxs++
case "EndAndBeginBlockForProvider":
timeAdvancement := lastAction["timeAdvancement"].Value.(int64)
consumersToStart := lastAction["consumersToStart"].Value.(itf.ListExprType)
@@ -217,31 +214,12 @@ func RunItfTrace(t *testing.T, path string) {
)
}
- // stop consumers
- for _, consumer := range consumersToStop {
- consumerChain := ChainId(consumer.Value.(string))
- driver.stopConsumer(consumerChain)
-
- // remove the consumer from timestamps map and time offsets
- delete(timeOffsets, consumerChain)
- delete(lastTimestamps, consumerChain)
- }
-
// reset the times for the consumers that were not stopped or started just now
// their times were messed up by the coordinator
for consumer, timestamp := range lastTimestamps {
driver.setTime(consumer, timestamp)
}
- // set the timeOffsets for the newly started chains
- for _, consumer := range consumersToStart {
- consumerChain := ChainId(consumer.Value.(string))
- // the time offset is the time of the provider,
- // because the model sets the timestamp on the consumer to the provider time
- // when the consumer is started
- timeOffsets[consumerChain] = timeOffsets["provider"]
- }
-
// for all connected consumers, update the clients...
// unless it was the last consumer to be started, in which case it already has the header
for _, consumer := range driver.runningConsumers() {
@@ -251,12 +229,7 @@ func RunItfTrace(t *testing.T, path string) {
consumerChainId := string(consumer.ChainId)
driver.path(ChainId(consumerChainId)).AddClientHeader(Provider, driver.providerHeader())
- var err error
- if ConsumerStatus(currentModelState, consumerChainId) == "expired" {
- err = driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId, true)
- } else {
- err = driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId, false)
- }
+ err := driver.path(ChainId(consumerChainId)).UpdateClient(consumerChainId, false)
require.True(t, err == nil, "Error updating client from %v on provider: %v", consumerChainId, err)
}
@@ -276,12 +249,7 @@ func RunItfTrace(t *testing.T, path string) {
// update the client on the provider
consumerHeader := driver.chain(ChainId(consumerChain)).LastHeader
driver.path(ChainId(consumerChain)).AddClientHeader(consumerChain, consumerHeader)
- var err error
- // if LocalClientExpired(currentModelState, consumerChain) {
- // err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, true)
- // } else {
- err = driver.path(ChainId(consumerChain)).UpdateClient(Provider, false)
- // }
+ err := driver.path(ChainId(consumerChain)).UpdateClient(Provider, false)
require.True(t, err == nil, "Error updating client from %v on provider: %v", consumerChain, err)
case "DeliverVscPacket":
@@ -335,13 +303,13 @@ func RunItfTrace(t *testing.T, path string) {
// check times - sanity check that the block times match the ones from the model
t.Log("Comparing timestamps")
- CompareTimes(t, driver, actualRunningConsumers, currentModelState, timeOffsets)
+ CompareTimes(t, driver, actualRunningConsumers, currentModelState, timeOffset)
t.Log("Timestamps match")
// check sent packets: we check that the package queues in the model and the system have the same length.
t.Log("Comparing packet queues")
for _, consumer := range actualRunningConsumers {
- ComparePacketQueues(t, driver, currentModelState, consumer)
+ ComparePacketQueues(t, driver, currentModelState, consumer, timeOffset)
}
t.Log("Packet queues match")
@@ -401,21 +369,36 @@ func ComparePacketQueues(
driver *Driver,
currentModelState map[string]itf.Expr,
consumer string,
+ timeOffset time.Time,
) {
- ComparePacketQueue(t, driver, currentModelState, Provider, consumer)
- ComparePacketQueue(t, driver, currentModelState, consumer, Provider)
+ ComparePacketQueue(t, driver, currentModelState, Provider, consumer, timeOffset)
+ ComparePacketQueue(t, driver, currentModelState, consumer, Provider, timeOffset)
}
-func ComparePacketQueue(t *testing.T, driver *Driver, currentModelState map[string]itf.Expr, sender string, receiver string) {
+func ComparePacketQueue(
+ t *testing.T,
+ driver *Driver,
+ currentModelState map[string]itf.Expr,
+ sender string,
+ receiver string,
+ timeOffset time.Time,
+) {
modelSenderQueue := PacketQueue(currentModelState, sender, receiver)
actualSenderQueue := driver.packetQueue(ChainId(sender), ChainId(receiver))
require.Equal(t,
len(modelSenderQueue),
len(actualSenderQueue),
- "Packet queues do not match for sender %v, receiver %v",
+ "Packet queue sizes do not match for sender %v, receiver %v",
sender,
receiver)
+
+ // for i := range modelSenderQueue {
+ // actualPacket := actualSenderQueue[i]
+ // modelPacket := modelSenderQueue[i]
+
+ // actualPacket.Packet.TimeoutTimestamp - timeOffset
+ // }
}
// CompareTimes compares the block times in the model to the block times in the system.
@@ -428,27 +411,23 @@ func CompareTimes(
driver *Driver,
consumers []string,
currentModelState map[string]itf.Expr,
- timeOffsets map[ChainId]time.Time,
+ timeOffset time.Time,
) {
- providerOffset := timeOffsets["provider"]
-
providerRunningTimestamp := RunningTime(currentModelState, "provider")
actualRunningProviderTime := driver.runningTime("provider")
require.Equal(t,
providerRunningTimestamp,
- actualRunningProviderTime.Unix()-providerOffset.Unix(),
+ actualRunningProviderTime.Unix()-timeOffset.Unix(),
"Running times do not match for provider")
for _, chain := range consumers {
- offset := timeOffsets[ChainId(chain)]
-
modelRunningTimestamp := RunningTime(currentModelState, chain)
actualRunningChainTime := driver.runningTime(ChainId(chain))
require.Equal(t,
modelRunningTimestamp,
- actualRunningChainTime.Unix()-offset.Unix(),
+ actualRunningChainTime.Unix()-timeOffset.Unix(),
"Running times do not match for chain %v", chain)
}
@@ -490,16 +469,15 @@ func (s *Stats) EnterStats(driver *Driver) {
}
}
- // longest observed packet queue
+ // max number of in-flight packets
+ inFlightPackets := 0
for _, consumer := range driver.runningConsumers() {
- queueToConsumer := driver.packetQueue(Provider, ChainId(consumer.ChainId))
- if len(queueToConsumer) > s.longestObservedPacketQueue {
- s.longestObservedPacketQueue = len(queueToConsumer)
- }
-
- queueFromConsumer := driver.packetQueue(ChainId(consumer.ChainId), Provider)
- if len(queueFromConsumer) > s.longestObservedPacketQueue {
- s.longestObservedPacketQueue = len(queueFromConsumer)
- }
+ inFlightPackets += len(driver.packetQueue(Provider, ChainId(consumer.ChainId)))
+ inFlightPackets += len(driver.packetQueue(ChainId(consumer.ChainId), Provider))
+ }
+ if inFlightPackets > s.maxNumInFlightPackets {
+ s.maxNumInFlightPackets = inFlightPackets
}
+
+ // number of sent packets
}
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index 9a9263d376..fa84d70210 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -160,20 +160,13 @@ func getAppBytesAndSenders(
log.Panicf("error getting pubkeyAny for val %v", val)
}
- var valStatus stakingtypes.BondStatus
- if tokens.Int64() > 0 {
- valStatus = stakingtypes.Bonded
- } else {
- valStatus = stakingtypes.Unbonded
- }
-
delShares := sdk.NewDec(tokens.Int64()) // as many shares as tokens
validator := stakingtypes.Validator{
OperatorAddress: sdk.ValAddress(val.Address).String(),
ConsensusPubkey: pkAny,
Jailed: false,
- Status: valStatus,
+ Status: stakingtypes.Bonded,
Tokens: tokens,
DelegatorShares: delShares,
Description: stakingtypes.Description{
diff --git a/tests/difference/core/quint_model/driver/stats.go b/tests/difference/core/quint_model/driver/stats.go
new file mode 100644
index 0000000000..0d397571be
--- /dev/null
+++ b/tests/difference/core/quint_model/driver/stats.go
@@ -0,0 +1,19 @@
+package main
+
+import "time"
+
+type Stats struct {
+ highestObservedValPower int64
+
+ maxNumInFlightPackets int
+
+ numStartedChains int
+ numStops int
+ numTimeouts int
+
+ numSentPackets int
+ numBlocks int
+ numTxs int
+
+ totalBlockTimePassedPerTrace time.Duration
+}
From 76dcc15d79def3ac0bfd7158c4ccfda18de79bc2 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 09:59:53 +0100
Subject: [PATCH 048/111] Fix timestamp
---
tests/difference/core/quint_model/ccv.qnt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index 879e2387a0..d0a3a525ef 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -796,7 +796,7 @@ module ccv {
val sentVscPacketsToConsumer = providerState.sentVscPacketsToConsumer.get(consumer)
if(sentVscPacketsToConsumer.length() > 0) {
val oldestSentVscPacket = sentVscPacketsToConsumer.head() // if length is 0, this is undefined, but we check for this before we use it
- if(oldestSentVscPacket.sendingTime + VscTimeout < providerState.chainState.runningTimestamp) {
+ if(oldestSentVscPacket.sendingTime + VscTimeout < providerState.chainState.lastTimestamp) {
(true, "")
} else {
// no timeout yet, it has not been VscTimeout since that packet was sent
From 3286e097e9abe4d0546e2225c0ed9e39943aac10 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 10:00:30 +0100
Subject: [PATCH 049/111] Fix error where we would choose nondet from empty
sets
---
.../core/quint_model/ccv_boundeddrift.qnt | 34 ++++++++++++-------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv_boundeddrift.qnt b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
index ca1298cefe..ba258ea387 100644
--- a/tests/difference/core/quint_model/ccv_boundeddrift.qnt
+++ b/tests/difference/core/quint_model/ccv_boundeddrift.qnt
@@ -55,20 +55,30 @@ module ccv_boundeddrift {
// advance a block for a consumer
all {
- runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
- nondet chain = oneOf(runningConsumers)
- val maxTimeAdvancement = findMaxTimeAdvancement(GetChainState(chain), GetOtherChainStates(chain), maxDrift)
- nondet timeAdvancement = oneOf(timeAdvancements.filter(t => t <= maxTimeAdvancement))
- EndAndBeginBlockForConsumer(chain, timeAdvancement),
+ runningConsumers.size() > 0, // ensure there is a running consumer, otherwise this action does not make sense
+ nondet chain = runningConsumers.oneOf()
+ val maxAdv = findMaxTimeAdvancement(GetChainState(chain), GetOtherChainStates(chain), maxDrift)
+ val possibleAdvancements = timeAdvancements.filter(t => t <= maxAdv)
+ all {
+ possibleAdvancements.size() > 0, // ensure there is a possible advancement, otherwise this action does not make sense
+ nondet timeAdvancement = possibleAdvancements.oneOf()
+ EndAndBeginBlockForConsumer(chain, timeAdvancement),
+ }
},
-
+
// advance a block for the provider
- val consumerStatus = currentState.providerState.consumerStatus
- nondet consumersToStart = oneOf(nonConsumers.powerset())
- nondet consumersToStop = oneOf(runningConsumers.powerset())
- val maxTimeAdvancement = findMaxTimeAdvancement(GetChainState(Ccvt::PROVIDER_CHAIN), GetOtherChainStates(Ccvt::PROVIDER_CHAIN), maxDrift)
- nondet timeAdvancement = oneOf(timeAdvancements.filter(t => t <= maxTimeAdvancement))
- EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
+ val maxAdv = findMaxTimeAdvancement(GetChainState(Ccvt::PROVIDER_CHAIN), GetOtherChainStates(Ccvt::PROVIDER_CHAIN), maxDrift)
+ val possibleAdvancements = timeAdvancements.filter(t => t <= maxAdv)
+ all {
+ possibleAdvancements.size() > 0, // ensure there is a possible advancement, otherwise this action does not make sense
+ // advance a block for the provider
+ val consumerStatus = currentState.providerState.consumerStatus
+ nondet consumersToStart = oneOf(nonConsumers.powerset())
+ // nondet consumersToStop = oneOf(runningConsumers.powerset())
+ nondet consumersToStop = Set() // never stop consumers
+ nondet timeAdvancement = oneOf(possibleAdvancements)
+ EndAndBeginBlockForProvider(timeAdvancement, consumersToStart, consumersToStop),
+ }
}
// INVARIANT
From 1433ee4221d4be4f69bcf441802a0976bcc88c54 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 10:35:10 +0100
Subject: [PATCH 050/111] Add timeout timestamps to packets
---
tests/difference/core/quint_model/ccv.qnt | 23 ++++++++++++-------
.../difference/core/quint_model/ccv_model.qnt | 5 ++++
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index d0a3a525ef..d1727bb515 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -17,16 +17,21 @@ module ccv_types {
id: VscId,
// the new validator set. in the implementation, this would be a list of validator updates
validatorSet: ValidatorSet,
- // the time at which the packet was sent. used to check whether packets have timed out.
- sendingTime: Time
+ // the time at which the packet was sent.
+ sendingTime: Time,
+ // the time (on the receiver) at which the packet will time out
+ timeoutTime: Time
+
}
type VscMaturedPacket =
{
// the id of the VscPacket that matured
id: VscId,
- // the time at which the packet was sent. used to check whether packets have timed out.
- sendingTime: Time
+ // the time at which the packet was sent.
+ sendingTime: Time,
+ // the time (on the receiver) at which the packet will time out
+ timeoutTime: Time
}
@@ -276,7 +281,7 @@ module ccv {
(Err("No outstanding packets to deliver"), false)
} else {
val packet = currentState.consumerStates.get(sender).outstandingPacketsToProvider.head()
- if(packet.sendingTime + CcvTimeout.get(sender) < currentState.providerState.chainState.runningTimestamp) {
+ if(packet.timeoutTime <= currentState.providerState.chainState.runningTimestamp) {
// drop consumer
val result = stopConsumers(
currentState.providerState.consumerStatus,
@@ -325,7 +330,7 @@ module ccv {
} else {
val packet = currentState.providerState.outstandingPacketsToConsumer.get(receiver).head()
// check if the consumer timed out
- if (packet.sendingTime + CcvTimeout.get(PROVIDER_CHAIN) < currentState.consumerStates.get(receiver).chainState.runningTimestamp) {
+ if (packet.timeoutTime <= currentState.consumerStates.get(receiver).chainState.runningTimestamp) {
// drop consumer
val result = stopConsumers(
currentState.providerState.consumerStatus,
@@ -492,7 +497,8 @@ module ccv {
maturedPackets.transform(
packet => {
id: packet.id,
- sendingTime: newChainState.runningTimestamp
+ sendingTime: newChainState.runningTimestamp,
+ timeoutTime: newChainState.runningTimestamp + CcvTimeout.get(chain)
}
)
)
@@ -632,7 +638,8 @@ module ccv {
List({
id: providerState.runningVscId,
validatorSet: providerState.chainState.currentValidatorSet,
- sendingTime: providerState.chainState.runningTimestamp
+ sendingTime: providerState.chainState.runningTimestamp,
+ timeoutTime: providerState.chainState.runningTimestamp + CcvTimeout.get(PROVIDER_CHAIN)
})
} else {
List()
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 0c21dffc86..4889fd5061 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -230,6 +230,7 @@ module ccv_model {
id: 0,
validatorSet: Map(),
sendingTime: 9999999999999 * Second,
+ timeoutTime: 9999999999999 * Second,
}
packets.fold(
latestPossiblePacket,
@@ -241,6 +242,7 @@ module ccv_model {
id: 0,
validatorSet: Map(),
sendingTime: -9999999999 * Second,
+ timeoutTime: -9999999999 * Second,
}
packets.fold(
earliestPossiblePacket,
@@ -257,18 +259,21 @@ module ccv_model {
id: 1,
validatorSet: Map(),
sendingTime: 1 * Second,
+ timeoutTime: 1 * Second,
}
val packet2 = {
id: 2,
validatorSet: Map(),
sendingTime: 2 * Second,
+ timeoutTime: 2 * Second,
}
val packet3 = {
id: 3,
validatorSet: Map(),
sendingTime: 3 * Second,
+ timeoutTime: 3 * Second,
}
all {
assert(earliest(Set(packet1, packet2, packet3)) == packet1),
From 0f8228dd1e0c809cfe08b29f607b7726c3989831 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 10:50:51 +0100
Subject: [PATCH 051/111] Adapt tests to the empty-validator-power behaviour
---
.../difference/core/quint_model/ccv_test.qnt | 57 ++++++++++++++-----
1 file changed, 43 insertions(+), 14 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv_test.qnt b/tests/difference/core/quint_model/ccv_test.qnt
index 6a270d0803..0101460219 100644
--- a/tests/difference/core/quint_model/ccv_test.qnt
+++ b/tests/difference/core/quint_model/ccv_test.qnt
@@ -14,11 +14,22 @@ module ccv_test {
import ccv(VscTimeout = 5 * Week, CcvTimeout = ccvTimeouts, UnbondingPeriodPerChain = unbondingPeriods, ConsumerChains = consumerChains, TrustingPeriodPerChain=trustingPeriods).* from "./ccv"
+ val votingPowerTestInitState =
+ GetEmptyProtocolState.with(
+ "providerState", GetEmptyProtocolState.providerState.with(
+ "chainState", GetEmptyProtocolState.providerState.chainState.with(
+ "currentValidatorSet", GetEmptyProtocolState.providerState.chainState.currentValidatorSet.put(
+ "validator", 5
+ )
+ )
+ )
+ )
+
// changing voting power by zero gives an error
run VotingPowerZeroChangeTest =
{
votingPowerChange(
- GetEmptyProtocolState,
+ votingPowerTestInitState,
"validator",
0
).hasError()
@@ -27,25 +38,20 @@ module ccv_test {
run VotingPowerOkTest =
{
val result = votingPowerChange(
- GetEmptyProtocolState,
+ votingPowerTestInitState,
"validator",
5
)
not(result.hasError()) and
result.newState.providerState.chainState.currentValidatorSet.keys().contains("validator") and
- result.newState.providerState.chainState.currentValidatorSet.get("validator") == 5
+ result.newState.providerState.chainState.currentValidatorSet.get("validator") == 10
}
// voting power of 0 is allowed and applied as usual
run VotingPowerZeroTest =
{
- val tmpResult = votingPowerChange(
- GetEmptyProtocolState,
- "validator",
- 5
- )
val finalResult = votingPowerChange(
- tmpResult.newState,
+ votingPowerTestInitState,
"validator",
-5
)
@@ -57,7 +63,7 @@ module ccv_test {
{
// change voting power
val tmpResult = votingPowerChange(
- GetEmptyProtocolState,
+ votingPowerTestInitState,
"validator",
5
)
@@ -77,7 +83,7 @@ module ccv_test {
run VotingPowerChangeDoesNotChangeHistoryTest =
{
val result = votingPowerChange(
- GetEmptyProtocolState,
+ votingPowerTestInitState,
"validator",
2
)
@@ -85,6 +91,26 @@ module ccv_test {
result.newState.providerState.chainState.votingPowerHistory == List()
}
+ // Changing the voting power to positive from zero is not possible,
+ // since the validator will be removed from the current validator set
+ run VotingPowerChangeFromZeroTest =
+ {
+ val result = votingPowerChange(
+ votingPowerTestInitState,
+ "validator",
+ -5
+ )
+ val result2 = votingPowerChange(
+ result.newState,
+ "validator",
+ 5
+ )
+ not(result.hasError()) and
+ result.newState.providerState.chainState.currentValidatorSet.get("validator") == 0 and
+ result2.hasError()
+
+ }
+
// Defines a test state to test the deliverPacketToProvider function against.
pure val _DeliverPacketToProvider_TestState =
val currentState = GetEmptyProtocolState
@@ -100,7 +126,8 @@ module ccv_test {
"outstandingPacketsToConsumer", providerState2.outstandingPacketsToConsumer.put(sender, List({
id: 0,
validatorSet: Map(),
- sendingTime: 0
+ sendingTime: 0,
+ timeoutTime: CcvTimeout.get(sender)
}))
)
currentState.with(
@@ -115,7 +142,8 @@ module ccv_test {
"sender", _DeliverPacketToProvider_TestState.consumerStates.get("sender").with(
"outstandingPacketsToProvider", List({
id: 0,
- sendingTime: 0
+ sendingTime: 0,
+ timeoutTime: CcvTimeout.get("sender")
})
)
)
@@ -126,7 +154,8 @@ module ccv_test {
"sender", List({
id: 0,
validatorSet: _DeliverPacketToProvider_TestState.providerState.chainState.currentValidatorSet,
- sendingTime: 0
+ sendingTime: 0,
+ timeoutTime: CcvTimeout.get("sender")
})
)
)
From 688790681f692992496452686f330b34dc0db7ed Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 11:05:03 +0100
Subject: [PATCH 052/111] Adjust timeout test
---
tests/difference/core/quint_model/ccv_model.qnt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 4889fd5061..444ecc0f3e 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -618,6 +618,10 @@ module ccv_model {
// advance time on provider by VscTimeout + 1 Second
EndAndBeginBlockForProvider(VscTimeout + 1 * Second, Set(), Set())
)
+ .then(
+ // end a block with the advanced time
+ EndAndBeginBlockForProvider(1 * Second, Set(), Set())
+ )
.then(
all {
// the consumer chains should have timed out
From ab1430a0632553ee76b86496fd4606fe8db13204 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 11:10:51 +0100
Subject: [PATCH 053/111] Add logic for comparing timestamps of packets
---
.../core/quint_model/driver/mbt_test.go | 19 ++++++++++++++-----
.../core/quint_model/driver/model_viewer.go | 8 +++++++-
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index 7f996a9532..ec61c51462 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -393,12 +393,21 @@ func ComparePacketQueue(
sender,
receiver)
- // for i := range modelSenderQueue {
- // actualPacket := actualSenderQueue[i]
- // modelPacket := modelSenderQueue[i]
+ for i := range modelSenderQueue {
+ actualPacket := actualSenderQueue[i]
+ modelPacket := modelSenderQueue[i].Value.(itf.MapExprType)
- // actualPacket.Packet.TimeoutTimestamp - timeOffset
- // }
+ actualTimeout := int64(actualPacket.Packet.TimeoutTimestamp) - timeOffset.Unix()
+ modelTimeout := GetTimeoutForPacket(modelPacket)
+
+ require.Equal(t,
+ modelTimeout,
+ actualTimeout,
+ "Timeouts do not match for packet %v, sender %v, receiver %v",
+ actualPacket,
+ sender,
+ receiver)
+ }
}
// CompareTimes compares the block times in the model to the block times in the system.
diff --git a/tests/difference/core/quint_model/driver/model_viewer.go b/tests/difference/core/quint_model/driver/model_viewer.go
index 0b0c9d014d..f274fb35e3 100644
--- a/tests/difference/core/quint_model/driver/model_viewer.go
+++ b/tests/difference/core/quint_model/driver/model_viewer.go
@@ -1,6 +1,8 @@
package main
-import "github.com/informalsystems/itf-go/itf"
+import (
+ "github.com/informalsystems/itf-go/itf"
+)
// This file contains logic to process
// and access parts of the current state of the Quint trace.
@@ -81,3 +83,7 @@ func ConsumerStatus(curStateExpr itf.MapExprType, consumer string) string {
func LocalClientExpired(curStateExpr itf.MapExprType, consumer string) bool {
return ConsumerState(curStateExpr, consumer)["localClientExpired"].Value.(bool)
}
+
+func GetTimeoutForPacket(packetExpr itf.MapExprType) int64 {
+ return packetExpr["timeoutTime"].Value.(int64)
+}
From dbbe2b0c3206510aaef46fe949360aec31bbb7e2 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 15:23:57 +0100
Subject: [PATCH 054/111] Fix: VSCTimeout is based on EndBlocj
---
tests/difference/core/quint_model/ccv.qnt | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index d1727bb515..a3b33e78ff 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -393,7 +393,8 @@ module ccv {
)
// check for Vsc timeouts
- val timedOutConsumers = getRunningConsumers(providerStateAfterTimeAdvancement).filter(
+ // needs to be done with the old provider state, since this happens during EndBlock
+ val timedOutConsumers = getRunningConsumers(currentProviderState).filter(
consumer =>
val res = TimeoutDueToVscTimeout(tmpState, consumer)
res._1
@@ -404,7 +405,8 @@ module ccv {
if (currentProviderState.providerValidatorSetChangedInThisBlock and
// important: check this on the provider state after the consumer advancement, not on the current state.
getRunningConsumers(providerStateAfterTimeAdvancement).size() > 0) {
- providerStateAfterTimeAdvancement.sendVscPackets()
+ // need to use the old timestamp because this happens during EndBlock
+ providerStateAfterTimeAdvancement.sendVscPackets(currentProviderState.chainState.runningTimestamp)
} else {
providerStateAfterTimeAdvancement
}
@@ -497,8 +499,9 @@ module ccv {
maturedPackets.transform(
packet => {
id: packet.id,
- sendingTime: newChainState.runningTimestamp,
- timeoutTime: newChainState.runningTimestamp + CcvTimeout.get(chain)
+ // it is important to use the oldChainState here, since this happens during EndBlock
+ sendingTime: oldChainState.runningTimestamp,
+ timeoutTime: oldChainState.runningTimestamp + CcvTimeout.get(chain)
}
)
)
@@ -624,12 +627,12 @@ module ccv {
}
// returns the providerState with the following modifications:
- // * sends VscPackets to all running consumers
+ // * sends VscPackets to all running consumers, using the provided timestamp as sending time
// * increments the runningVscId
// This should only be called when the provider chain is ending a block,
// and only when the running validator set is considered to have changed
// and there is a consumer to send a packet to.
- pure def sendVscPackets(providerState: ProviderState): ProviderState = {
+ pure def sendVscPackets(providerState: ProviderState, sendingTimestamp: Time): ProviderState = {
val newSentPacketsPerConsumer = ConsumerChains.mapBy(
(consumer) =>
// if validator set changed and the consumer is running, send a packet
@@ -638,8 +641,8 @@ module ccv {
List({
id: providerState.runningVscId,
validatorSet: providerState.chainState.currentValidatorSet,
- sendingTime: providerState.chainState.runningTimestamp,
- timeoutTime: providerState.chainState.runningTimestamp + CcvTimeout.get(PROVIDER_CHAIN)
+ sendingTime: sendingTimestamp,
+ timeoutTime: sendingTimestamp + CcvTimeout.get(PROVIDER_CHAIN)
})
} else {
List()
From 680f3c4c2c992dd227c0217c75d2f0d29bbc106f Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 15:24:21 +0100
Subject: [PATCH 055/111] Add logic for timed out vsc packets
---
.../core/quint_model/driver/core.go | 16 ++-----
.../driver/generate_boundeddrift_traces.sh | 2 +-
.../core/quint_model/driver/mbt_test.go | 48 +++++++++++++++++--
.../core/quint_model/driver/setup.go | 24 ++++++++--
.../core/quint_model/driver/trace.json | 1 -
testutil/simibc/relay_util.go | 4 +-
testutil/simibc/relayed_path.go | 13 +++--
7 files changed, 79 insertions(+), 29 deletions(-)
delete mode 100644 tests/difference/core/quint_model/driver/trace.json
diff --git a/tests/difference/core/quint_model/driver/core.go b/tests/difference/core/quint_model/driver/core.go
index 0688fb4ad1..6fcfc33c63 100644
--- a/tests/difference/core/quint_model/driver/core.go
+++ b/tests/difference/core/quint_model/driver/core.go
@@ -260,14 +260,6 @@ func (s *Driver) updateClient(chain ChainId) error {
return s.path(chain).UpdateClient(string(chain), false)
}
-// deliver numPackets packets from the network to chain
-func (s *Driver) deliver(chain ChainId, numPackets int) {
- // Deliver any outstanding acks
- s.path(chain).DeliverAcks(string(chain), 999999)
- // Consume deliverable packets from the network
- s.path(chain).DeliverPackets(string(chain), numPackets)
-}
-
// packetQueue returns the queued packet sfrom sender to receiver,
// where either sender or receiver must be the provider.
func (s *Driver) packetQueue(sender ChainId, receiver ChainId) []simibc.Packet {
@@ -485,15 +477,15 @@ func (s *Driver) setAllTimes(newTimes map[ChainId]time.Time) {
// DeliverPacketToConsumer delivers a packet from the provider to the given consumer recipient.
// It updates the client before delivering the packet.
// Since the channel is ordered, the packet that is delivered is the first packet in the outbox.
-func (s *Driver) DeliverPacketToConsumer(recipient ChainId) {
- s.path(recipient).DeliverPackets(string(recipient), 1)
+func (s *Driver) DeliverPacketToConsumer(recipient ChainId, expectError bool) {
+ s.path(recipient).DeliverPackets(string(recipient), 1, expectError)
}
// DeliverPacketFromConsumer delivers a packet from the given consumer sender to the provider.
// It updates the client before delivering the packet.
// Since the channel is ordered, the packet that is delivered is the first packet in the outbox.
-func (s *Driver) DeliverPacketFromConsumer(sender ChainId) {
- s.path(sender).DeliverPackets(P, 1) // deliver to the provider
+func (s *Driver) DeliverPacketFromConsumer(sender ChainId, expectError bool) {
+ s.path(sender).DeliverPackets(P, 1, expectError) // deliver to the provider
}
// DeliverAcks delivers, for each path,
diff --git a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
index e61ea4c922..8d071d196b 100755
--- a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
+++ b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
@@ -1 +1 @@
-go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift --inv CanTimeoutConsumer -traceFolder traces -numTraces 100
\ No newline at end of file
+go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -invariant CanTimeoutConsumer -traceFolder traces -numTraces 150 -numSteps 200 -numSamples 200
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index ec61c51462..c1bae4b26e 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -98,7 +98,7 @@ func RunItfTrace(t *testing.T, path string) {
t.Log("Chains are: ", chains)
// create params struct
- vscTimeout := time.Duration(params["VscTimeout"].Value.(int64))
+ vscTimeout := time.Duration(params["VscTimeout"].Value.(int64)) * time.Second
unbondingPeriodPerChain := make(map[ChainId]time.Duration, len(consumers))
trustingPeriodPerChain := make(map[ChainId]time.Duration, len(consumers))
@@ -189,8 +189,24 @@ func RunItfTrace(t *testing.T, path string) {
// needs a header of height H+1 to accept the packet
// so we do one time advancement with a very small increment,
// and then increment the rest of the time]
+ runningConsumersBefore := driver.runningConsumers()
driver.endAndBeginBlock("provider", 1*time.Nanosecond)
driver.endAndBeginBlock("provider", time.Duration(timeAdvancement)*time.Second-1*time.Nanosecond)
+ runningConsumersAfter := driver.runningConsumers()
+
+ // the consumers that were running before but not after must have timed out
+ for _, consumer := range runningConsumersBefore {
+ found := false
+ for _, consumerAfter := range runningConsumersAfter {
+ if consumerAfter.ChainId == consumer.ChainId {
+ found = true
+ break
+ }
+ }
+ if !found {
+ stats.numTimeouts++
+ }
+ }
// save the last timestamp for runningConsumers,
// because setting up chains will modify timestamps
@@ -256,12 +272,36 @@ func RunItfTrace(t *testing.T, path string) {
consumerChain := lastAction["consumerChain"].Value.(string)
t.Log("DeliverVscPacket", consumerChain)
- driver.DeliverPacketToConsumer(ChainId(consumerChain))
+ // delivering the packet should give an error
+ // if the consumer is timed out in the model
+ var expectError bool
+ if ConsumerStatus(currentModelState, consumerChain) == "timedout" {
+ expectError = true
+ driver.DeliverPacketToConsumer(ChainId(consumerChain), expectError)
+
+ // stop the consumer chain
+ driver.providerKeeper().StopConsumerChain(driver.providerCtx(), consumerChain, true)
+ } else {
+ expectError = false
+ driver.DeliverPacketToConsumer(ChainId(consumerChain), expectError)
+ }
case "DeliverVscMaturedPacket":
consumerChain := lastAction["consumerChain"].Value.(string)
t.Log("DeliverVscMaturedPacket", consumerChain)
- driver.DeliverPacketFromConsumer(ChainId(consumerChain))
+ var expectError bool
+ if ConsumerStatus(currentModelState, consumerChain) == "timedout" {
+ expectError = true
+ // expectError is true, because we expect the consumer to have timed out.
+ // the call will fail if there is no error
+ driver.DeliverPacketFromConsumer(ChainId(consumerChain), expectError)
+
+ // stop the consumer chain on the provider
+ driver.providerKeeper().StopConsumerChain(driver.providerCtx(), consumerChain, true)
+ } else {
+ expectError = false
+ driver.DeliverPacketFromConsumer(ChainId(consumerChain), expectError)
+ }
default:
log.Fatalf("Error loading trace file %s, step %v: do not know action type %s",
@@ -397,7 +437,7 @@ func ComparePacketQueue(
actualPacket := actualSenderQueue[i]
modelPacket := modelSenderQueue[i].Value.(itf.MapExprType)
- actualTimeout := int64(actualPacket.Packet.TimeoutTimestamp) - timeOffset.Unix()
+ actualTimeout := time.Unix(0, int64(actualPacket.Packet.TimeoutTimestamp)).Unix() - timeOffset.Unix()
modelTimeout := GetTimeoutForPacket(modelPacket)
require.Equal(t,
diff --git a/tests/difference/core/quint_model/driver/setup.go b/tests/difference/core/quint_model/driver/setup.go
index fa84d70210..c72227801d 100644
--- a/tests/difference/core/quint_model/driver/setup.go
+++ b/tests/difference/core/quint_model/driver/setup.go
@@ -357,6 +357,17 @@ func (s *Driver) ConfigureNewPath(consumerChain *ibctesting.TestChain, providerC
s.consumerKeeper(consumerChainId).InitGenesis(s.ctx(consumerChainId), consumerGenesis)
+ consumerGenesisForProvider := ccvtypes.ConsumerGenesisState{
+ Params: consumerGenesis.Params,
+ Provider: consumerGenesis.Provider,
+ NewChain: consumerGenesis.NewChain,
+ }
+
+ s.providerKeeper().SetConsumerGenesis(
+ providerChain.GetContext(),
+ string(consumerChainId),
+ consumerGenesisForProvider)
+
// Client ID is set in InitGenesis and we treat it as a block box. So
// must query it to use it with the endpoint.
clientID, _ := s.consumerKeeper(consumerChainId).GetProviderClientID(s.ctx(consumerChainId))
@@ -408,6 +419,13 @@ func (s *Driver) setupProvider(
providerChain := newChain(s.t, params, s.coordinator, icstestingutils.ProviderAppIniter, "provider", valSet, signers, nodes, valNames)
s.coordinator.Chains["provider"] = providerChain
+ // set the VscTimeout
+ s.providerKeeper().SetVscTimeoutPeriod(s.ctx("provider"), params.VscTimeout)
+ // set the CcvTimeoutPeriod
+ providerParams := s.providerKeeper().GetParams(s.ctx("provider"))
+ providerParams.CcvTimeoutPeriod = params.CcvTimeout[ChainId(providerChain.ChainID)]
+ s.providerKeeper().SetParams(s.ctx("provider"), providerParams)
+
// produce a first block
simibc.EndBlock(providerChain, func() {})
simibc.BeginBlock(providerChain, 0)
@@ -444,18 +462,16 @@ func createConsumerGenesis(modelParams ModelParams, providerChain *ibctesting.Te
1000, // ignore distribution
"", // ignore distribution
"", // ignore distribution
- ccv.DefaultCCVTimeoutPeriod,
+ modelParams.CcvTimeout[ChainId(consumerClientState.ChainId)],
ccv.DefaultTransferTimeoutPeriod,
ccv.DefaultConsumerRedistributeFrac,
ccv.DefaultHistoricalEntries,
- consumerClientState.UnbondingPeriod,
+ modelParams.UnbondingPeriodPerChain[ChainId(consumerClientState.ChainId)],
"0", // disable soft opt-out
[]string{},
[]string{},
ccv.DefaultRetryDelayPeriod,
)
- params.CcvTimeoutPeriod = modelParams.CcvTimeout[ChainId(consumerClientState.ChainId)]
- params.UnbondingPeriod = modelParams.UnbondingPeriodPerChain[ChainId(consumerClientState.ChainId)]
return consumertypes.NewInitialGenesisState(consumerClientState, providerConsState, valUpdates, params)
}
diff --git a/tests/difference/core/quint_model/driver/trace.json b/tests/difference/core/quint_model/driver/trace.json
deleted file mode 100644
index 9f3c7c35c1..0000000000
--- a/tests/difference/core/quint_model/driver/trace.json
+++ /dev/null
@@ -1 +0,0 @@
-{"#meta":{"format":"ITF","format-description":"https://apalache.informal.systems/docs/adr/015adr-trace.html","source":"ccv_happy.qnt","status":"violation","description":"Created by Quint on Thu Nov 16 2023 12:49:55 GMT+0100 (GMT+01:00)","timestamp":1700135395077},"vars":["QueuedEndBlocks","currentState","trace","params"],"states":[{"#meta":{"index":0},"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","not consumer"],["consumer2","not consumer"],["consumer3","not consumer"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""}]},{"#meta":{"index":1},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"1"}]},{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":2},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":3},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"0"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":4},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":5},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":true,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"0"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[]],["consumer2",[]],["consumer3",[]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"}]},{"#meta":{"index":6},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"1"}]},{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":7},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"1"}]},{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":8},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"1"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":9},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""}]},{"#meta":{"index":10},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""}]},{"#meta":{"index":11},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""}]},{"#meta":{"index":12},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"601200"}]},{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":13},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":14},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"2"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":15},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":16},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"601200"}]},{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":17},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":18},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"601202"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":19},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":20},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"601200"}]},{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":21},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"601200"}]},{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":22},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"601200"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1202402"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":23},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""}]},{"#meta":{"index":24},"QueuedEndBlocks":[{"#tup":["consumer1",{"#bigint":"86400"}]},{"#tup":["consumer2",{"#bigint":"86400"}]},{"#tup":["consumer3",{"#bigint":"86400"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":25},"QueuedEndBlocks":[{"#tup":["consumer2",{"#bigint":"86400"}]},{"#tup":["consumer3",{"#bigint":"86400"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":26},"QueuedEndBlocks":[{"#tup":["consumer3",{"#bigint":"86400"}]}],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1803602"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[{"#tup":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}},{"#bigint":"1209602"}]}],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":27},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""}]},{"#meta":{"index":28},"QueuedEndBlocks":[],"currentState":{"consumerStates":{"#map":[["consumer1",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[]}],["consumer2",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}],["consumer3",{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"maturationTimes":[],"outstandingPacketsToProvider":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}],"receivedVscPackets":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]}]]},"providerState":{"chainState":{"currentValidatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"lastTimestamp":{"#bigint":"1890002"},"votingPowerHistory":[{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}]},"consumerStatus":{"#map":[["consumer1","running"],["consumer2","running"],["consumer3","running"]]},"outstandingPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[]],["consumer3",[]]]},"providerValidatorSetChangedInThisBlock":false,"receivedMaturations":{"#set":[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"1803602"}}]},"runningVscId":{"#bigint":"1"},"sentVscPacketsToConsumer":{"#map":[["consumer1",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer2",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]],["consumer3",[{"id":{"#bigint":"0"},"sendingTime":{"#bigint":"2"},"validatorSet":{"#map":[["node1",{"#bigint":"50"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]}}]]]}}},"params":{"CcvTimeout":{"#map":[["consumer1",{"#bigint":"1814400"}],["consumer2",{"#bigint":"1814400"}],["consumer3",{"#bigint":"1814400"}],["provider",{"#bigint":"1814400"}]]},"ConsumerChains":{"#set":["consumer1","consumer2","consumer3"]},"InitialValidatorSet":{"#map":[["node1",{"#bigint":"100"}],["node10",{"#bigint":"100"}],["node2",{"#bigint":"100"}],["node3",{"#bigint":"100"}],["node4",{"#bigint":"100"}],["node5",{"#bigint":"100"}],["node6",{"#bigint":"100"}],["node7",{"#bigint":"100"}],["node8",{"#bigint":"100"}],["node9",{"#bigint":"100"}]]},"Nodes":{"#set":["node1","node10","node2","node3","node4","node5","node6","node7","node8","node9"]},"TrustingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1206000"}],["consumer2",{"#bigint":"1206000"}],["consumer3",{"#bigint":"1206000"}],["provider",{"#bigint":"1206000"}]]},"UnbondingPeriodPerChain":{"#map":[["consumer1",{"#bigint":"1209600"}],["consumer2",{"#bigint":"1209600"}],["consumer3",{"#bigint":"1209600"}],["provider",{"#bigint":"1209600"}]]},"VscTimeout":{"#bigint":"3024000"}},"trace":[{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"init","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":["consumer1","consumer2","consumer3"]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"-50"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"VotingPowerChange","timeAdvancement":{"#bigint":"0"},"validator":"node1"},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"1"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscPacket","timeAdvancement":{"#bigint":"0"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"601200"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForProvider","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer1","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer3","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"EndAndBeginBlockForConsumer","timeAdvancement":{"#bigint":"86400"},"validator":""},{"changeAmount":{"#bigint":"0"},"consumerChain":"consumer2","consumersToStart":{"#set":[]},"consumersToStop":{"#set":[]},"kind":"DeliverVscMaturedPacket","timeAdvancement":{"#bigint":"0"},"validator":""}]}]}
\ No newline at end of file
diff --git a/testutil/simibc/relay_util.go b/testutil/simibc/relay_util.go
index edfbfddb35..f6be32cd60 100644
--- a/testutil/simibc/relay_util.go
+++ b/testutil/simibc/relay_util.go
@@ -68,7 +68,7 @@ func UpdateReceiverClient(sender, receiver *ibctesting.Endpoint, header *ibctmty
// The packet must be sent from the sender chain to the receiver chain, and the
// receiver chain must have a client for the sender chain which has been updated
// to a recent height of the sender chain so that it can verify the packet.
-func TryRecvPacket(sender, receiver *ibctesting.Endpoint, packet channeltypes.Packet) (ack []byte, err error) {
+func TryRecvPacket(sender, receiver *ibctesting.Endpoint, packet channeltypes.Packet, expectError bool) (ack []byte, err error) {
packetKey := host.PacketCommitmentKey(packet.GetSourcePort(), packet.GetSourceChannel(), packet.GetSequence())
proof, proofHeight := sender.Chain.QueryProof(packetKey)
@@ -83,7 +83,7 @@ func TryRecvPacket(sender, receiver *ibctesting.Endpoint, packet channeltypes.Pa
receiver.Chain.ChainID,
[]uint64{receiver.Chain.SenderAccount.GetAccountNumber()},
[]uint64{receiver.Chain.SenderAccount.GetSequence()},
- true, true, receiver.Chain.SenderPrivKey,
+ true, !expectError, receiver.Chain.SenderPrivKey,
)
if err != nil {
return nil, err
diff --git a/testutil/simibc/relayed_path.go b/testutil/simibc/relayed_path.go
index bda1a50a10..4a5226e59a 100644
--- a/testutil/simibc/relayed_path.go
+++ b/testutil/simibc/relayed_path.go
@@ -132,13 +132,16 @@ func (f *RelayedPath) UpdateClient(chainID string, expectExpiration bool) error
//
// In order to deliver packets, the chain must have an up-to-date client
// of the counterparty chain. Ie. UpdateClient should be called before this.
-func (f *RelayedPath) DeliverPackets(chainID string, num int) {
+//
+// If expectError is true, we expect *each* packet to be delivered to cause an error.
+func (f *RelayedPath) DeliverPackets(chainID string, num int, expectError bool) {
for _, p := range f.Outboxes.ConsumePackets(f.Counterparty(chainID), num) {
- ack, err := TryRecvPacket(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), p.Packet)
- if err != nil {
- f.t.Fatal("deliver")
+ ack, err := TryRecvPacket(f.endpoint(f.Counterparty(chainID)), f.endpoint(chainID), p.Packet, expectError)
+ if err != nil && !expectError {
+ f.t.Fatal("Got an error from TryRecvPacket: ", err)
+ } else {
+ f.Outboxes.AddAck(chainID, ack, p.Packet)
}
- f.Outboxes.AddAck(chainID, ack, p.Packet)
}
}
From 4238978c6c088b330c2956c7199c8be9842635f0 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 15:29:22 +0100
Subject: [PATCH 056/111] Fix vsc timeouts should happen during endblock
---
tests/difference/core/quint_model/ccv.qnt | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index a3b33e78ff..c8b6db577a 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -381,8 +381,17 @@ module ccv {
// forced stops, e.g. because a consumer timed out,
// will be added automatically.
consumersToStop: Set[Chain]): Result = {
- // commit the current running validator set on chain
val currentProviderState = currentState.providerState
+
+ // check for Vsc timeouts
+ val timedOutConsumers = getRunningConsumers(currentProviderState).filter(
+ consumer =>
+ val res = TimeoutDueToVscTimeout(currentState, consumer)
+ res._1
+ )
+
+
+ // run the shared core chainState logic
val newChainState = currentProviderState.chainState.endAndBeginBlockShared(timeAdvancement)
val providerStateAfterTimeAdvancement = currentProviderState.with(
"chainState", newChainState
@@ -392,13 +401,6 @@ module ccv {
"providerState", providerStateAfterTimeAdvancement
)
- // check for Vsc timeouts
- // needs to be done with the old provider state, since this happens during EndBlock
- val timedOutConsumers = getRunningConsumers(currentProviderState).filter(
- consumer =>
- val res = TimeoutDueToVscTimeout(tmpState, consumer)
- res._1
- )
// send vsc packets
val providerStateAfterSending =
From 2d1a874dc2d7d6381196d25870b6a827a8360bfd Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 15:32:24 +0100
Subject: [PATCH 057/111] Revert the timestamp change
---
tests/difference/core/quint_model/ccv.qnt | 2 +-
tests/difference/core/quint_model/ccv_model.qnt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index c8b6db577a..e324d734a1 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -808,7 +808,7 @@ module ccv {
val sentVscPacketsToConsumer = providerState.sentVscPacketsToConsumer.get(consumer)
if(sentVscPacketsToConsumer.length() > 0) {
val oldestSentVscPacket = sentVscPacketsToConsumer.head() // if length is 0, this is undefined, but we check for this before we use it
- if(oldestSentVscPacket.sendingTime + VscTimeout < providerState.chainState.lastTimestamp) {
+ if(oldestSentVscPacket.sendingTime + VscTimeout < providerState.chainState.runningTimestamp) {
(true, "")
} else {
// no timeout yet, it has not been VscTimeout since that packet was sent
diff --git a/tests/difference/core/quint_model/ccv_model.qnt b/tests/difference/core/quint_model/ccv_model.qnt
index 444ecc0f3e..750ae20792 100644
--- a/tests/difference/core/quint_model/ccv_model.qnt
+++ b/tests/difference/core/quint_model/ccv_model.qnt
@@ -619,7 +619,7 @@ module ccv_model {
EndAndBeginBlockForProvider(VscTimeout + 1 * Second, Set(), Set())
)
.then(
- // end a block with the advanced time
+ // eenter the advanced time on chain
EndAndBeginBlockForProvider(1 * Second, Set(), Set())
)
.then(
From bcdd85c445fb9508c61cfcba4cd2cb9a3f04cd7f Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Wed, 29 Nov 2023 17:44:04 +0100
Subject: [PATCH 058/111] Add more diverse traces
---
tests/difference/core/quint_model/ccv.qnt | 5 +-
.../driver/generate_boundeddrift_traces.sh | 1 -
.../quint_model/driver/generate_traces.sh | 11 ++-
.../core/quint_model/driver/mbt_test.go | 69 +++++++++++++++----
.../core/quint_model/driver/model_viewer.go | 14 ++++
5 files changed, 83 insertions(+), 17 deletions(-)
delete mode 100755 tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
diff --git a/tests/difference/core/quint_model/ccv.qnt b/tests/difference/core/quint_model/ccv.qnt
index e324d734a1..109a2e9ba4 100644
--- a/tests/difference/core/quint_model/ccv.qnt
+++ b/tests/difference/core/quint_model/ccv.qnt
@@ -721,7 +721,10 @@ module ccv {
// prune the sentVscPacket
val newSentVscPacket = currentState.providerState.sentVscPacketsToConsumer.get(sender).tail()
val newState = currentState.with(
- "providerState", newProviderState
+ "providerState",
+ {...newProviderState,
+ sentVscPacketsToConsumer: currentState.providerState.sentVscPacketsToConsumer.set(sender, newSentVscPacket)
+ }
)
Ok(newState)
}
diff --git a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh b/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
deleted file mode 100755
index 8d071d196b..0000000000
--- a/tests/difference/core/quint_model/driver/generate_boundeddrift_traces.sh
+++ /dev/null
@@ -1 +0,0 @@
-go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -invariant CanTimeoutConsumer -traceFolder traces -numTraces 150 -numSteps 200 -numSamples 200
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/generate_traces.sh b/tests/difference/core/quint_model/driver/generate_traces.sh
index 2936b05455..0d08ea436b 100755
--- a/tests/difference/core/quint_model/driver/generate_traces.sh
+++ b/tests/difference/core/quint_model/driver/generate_traces.sh
@@ -1 +1,10 @@
-go run ./... -modelPath=../ccv_model.qnt -init init -step step -traceFolder traces -numTraces 100 --numSamples 1
\ No newline at end of file
+echo "Generating bounded drift traces with timeouts"
+go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -invariant CanTimeoutConsumer -traceFolder traces/bound_timeout -numTraces 10 -numSteps 200 -numSamples 200
+echo "Generating long bounded drift traces without invariants"
+go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -traceFolder traces/bound_noinv -numTraces 10 -numSteps 500 -numSamples 1
+echo "Generating bounded drift traces with maturations"
+go run ./... -modelPath=../ccv_boundeddrift.qnt -step stepBoundedDrift -invariant CanReceiveMaturations -traceFolder traces/bound_mat -numTraces 10 -numSteps 100 -numSamples 20
+echo "Generating synched traces with maturations"
+go run ./... -modelPath=../ccv_sync.qnt -init initHappy -step stepHappy -invariant CanReceiveMaturations -traceFolder traces/sync_mat -numTraces 10 -numSteps 300 -numSamples 20
+echo "Generating long synched traces without invariants"
+go run ./... -modelPath=../ccv_sync.qnt -init initHappy -step stepHappy -traceFolder traces/sync_noinv -numTraces 10 -numSteps 500 -numSamples 1
\ No newline at end of file
diff --git a/tests/difference/core/quint_model/driver/mbt_test.go b/tests/difference/core/quint_model/driver/mbt_test.go
index c1bae4b26e..7fe1ea3772 100644
--- a/tests/difference/core/quint_model/driver/mbt_test.go
+++ b/tests/difference/core/quint_model/driver/mbt_test.go
@@ -4,6 +4,7 @@ import (
"fmt"
"log"
"os"
+ "path/filepath"
"reflect"
"sort"
"testing"
@@ -11,36 +12,51 @@ import (
cmttypes "github.com/cometbft/cometbft/types"
sdktypes "github.com/cosmos/cosmos-sdk/types"
- ibctesting "github.com/cosmos/ibc-go/v7/testing"
providertypes "github.com/cosmos/interchain-security/v3/x/ccv/provider/types"
"github.com/kylelemons/godebug/pretty"
"github.com/informalsystems/itf-go/itf"
"github.com/stretchr/testify/require"
+
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
)
-const verbose = true
+const verbose = false
// keep some interesting statistics
var stats = Stats{}
func TestMBT(t *testing.T) {
- dirEntries, err := os.ReadDir("traces")
- if err != nil {
- t.Fatal("Error:", err)
- }
+ dir := "traces"
- t.Log("Running traces from the traces folder")
+ numTraces := 0
ibctesting.TimeIncrement = 1 * time.Nanosecond
- for _, dirEntry := range dirEntries {
- t.Log("Running trace ", dirEntry.Name())
- RunItfTrace(t, "traces/"+dirEntry.Name())
+ err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
+
+ if info.IsDir() {
+ return nil
+ }
+
+ ext := filepath.Ext(path)
+ if ext == ".json" || ext == ".itf" {
+ fmt.Println("Running trace:", path)
+ numTraces++
+ RunItfTrace(t, path)
+ }
+
+ return nil
+ })
+ if err != nil {
+ t.Fatal("Error:", err)
}
t.Log("✅ Running traces from the traces folder done")
- t.Log(len(dirEntries), "traces run")
+ t.Log(numTraces, "traces run")
// print some stats
t.Logf("Highest observed voting power: %v", stats.highestObservedValPower)
@@ -50,7 +66,7 @@ func TestMBT(t *testing.T) {
t.Logf("Number of sent packets: %v", stats.numSentPackets)
t.Logf("Number of blocks: %v", stats.numBlocks)
t.Logf("Number of transactions: %v", stats.numTxs)
- t.Logf("Average summed block time delta passed per trace: %v", stats.totalBlockTimePassedPerTrace/time.Duration(len(dirEntries)))
+ t.Logf("Average summed block time delta passed per trace: %v", stats.totalBlockTimePassedPerTrace/time.Duration(numTraces))
}
func RunItfTrace(t *testing.T, path string) {
@@ -353,6 +369,9 @@ func RunItfTrace(t *testing.T, path string) {
}
t.Log("Packet queues match")
+ // compare that the sent packets on the proider match the model
+ CompareSentPacketsOnProvider(driver, currentModelState, timeOffset)
+
stats.EnterStats(driver)
}
t.Log("🟢 Trace is ok!")
@@ -510,6 +529,30 @@ func CompareValSet(modelValSet map[string]itf.Expr, systemValSet map[string]int6
return nil
}
+func CompareSentPacketsOnProvider(driver *Driver, currentModelState map[string]itf.Expr, timeOffset time.Time) {
+ for _, consumer := range driver.runningConsumers() {
+ vscSendTimestamps := driver.providerKeeper().GetAllVscSendTimestamps(driver.providerCtx(), consumer.ChainId)
+
+ actualVscSendTimestamps := make([]time.Time, 0)
+ for _, vscSendTimestamp := range vscSendTimestamps {
+ actualVscSendTimestamps = append(actualVscSendTimestamps, vscSendTimestamp.Timestamp)
+ }
+
+ modelVscSendTimestamps := VscSendTimestamps(currentModelState, consumer.ChainId)
+
+ for i, modelVscSendTimestamp := range modelVscSendTimestamps {
+ actualTimeWithOffset := actualVscSendTimestamps[i].Unix() - timeOffset.Unix()
+ require.Equal(
+ driver.t,
+ modelVscSendTimestamp,
+ actualTimeWithOffset,
+ "Vsc send timestamps do not match for consumer %v",
+ consumer.ChainId,
+ )
+ }
+ }
+}
+
func (s *Stats) EnterStats(driver *Driver) {
// highest observed voting power
for _, val := range driver.providerValidatorSet() {
@@ -527,6 +570,4 @@ func (s *Stats) EnterStats(driver *Driver) {
if inFlightPackets > s.maxNumInFlightPackets {
s.maxNumInFlightPackets = inFlightPackets
}
-
- // number of sent packets
}
diff --git a/tests/difference/core/quint_model/driver/model_viewer.go b/tests/difference/core/quint_model/driver/model_viewer.go
index f274fb35e3..b2167febbb 100644
--- a/tests/difference/core/quint_model/driver/model_viewer.go
+++ b/tests/difference/core/quint_model/driver/model_viewer.go
@@ -87,3 +87,17 @@ func LocalClientExpired(curStateExpr itf.MapExprType, consumer string) bool {
func GetTimeoutForPacket(packetExpr itf.MapExprType) int64 {
return packetExpr["timeoutTime"].Value.(int64)
}
+
+func GetSendingTimeForPacket(packetExpr itf.MapExprType) int64 {
+ return packetExpr["sendingTime"].Value.(int64)
+}
+
+func VscSendTimestamps(curStateExpr itf.MapExprType, consumer string) []int64 {
+ sentVscPackets := ProviderState(curStateExpr)["sentVscPacketsToConsumer"].Value.(itf.MapExprType)[consumer].Value.(itf.ListExprType)
+
+ res := make([]int64, 0)
+ for _, packetExpr := range sentVscPackets {
+ res = append(res, GetSendingTimeForPacket(packetExpr.Value.(itf.MapExprType)))
+ }
+ return res
+}
From eacfd870d5429b3c72d20c7467770d679f126176 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 30 Nov 2023 09:49:26 +0100
Subject: [PATCH 059/111] Fix acct sequences not incrementing when messages
error ot
---
testutil/simibc/relay_util.go | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/testutil/simibc/relay_util.go b/testutil/simibc/relay_util.go
index f6be32cd60..e113c02fef 100644
--- a/testutil/simibc/relay_util.go
+++ b/testutil/simibc/relay_util.go
@@ -49,14 +49,13 @@ func UpdateReceiverClient(sender, receiver *ibctesting.Endpoint, header *ibctmty
true, !expectExpiration, receiver.Chain.SenderPrivKey,
)
+ setSequenceErr := receiver.Chain.SenderAccount.SetSequence(receiver.Chain.SenderAccount.GetSequence() + 1)
if err != nil {
return err
}
- err = receiver.Chain.SenderAccount.SetSequence(receiver.Chain.SenderAccount.GetSequence() + 1)
-
- if err != nil {
- return err
+ if setSequenceErr != nil {
+ return setSequenceErr
}
return nil
@@ -85,14 +84,14 @@ func TryRecvPacket(sender, receiver *ibctesting.Endpoint, packet channeltypes.Pa
[]uint64{receiver.Chain.SenderAccount.GetSequence()},
true, !expectError, receiver.Chain.SenderPrivKey,
)
+ // need to set the sequence even if there was an error in delivery
+ setSequenceErr := receiver.Chain.SenderAccount.SetSequence(receiver.Chain.SenderAccount.GetSequence() + 1)
if err != nil {
return nil, err
}
- err = receiver.Chain.SenderAccount.SetSequence(receiver.Chain.SenderAccount.GetSequence() + 1)
-
- if err != nil {
- return nil, err
+ if setSequenceErr != nil {
+ return nil, setSequenceErr
}
ack, err = ibctesting.ParseAckFromEvents(resWithAck.GetEvents())
@@ -129,14 +128,13 @@ func TryRecvAck(sender, receiver *ibctesting.Endpoint, packet channeltypes.Packe
true, true, receiver.Chain.SenderPrivKey,
)
+ setSequenceErr := receiver.Chain.SenderAccount.SetSequence(receiver.Chain.SenderAccount.GetSequence() + 1)
if err != nil {
return err
}
- err = receiver.Chain.SenderAccount.SetSequence(receiver.Chain.SenderAccount.GetSequence() + 1)
-
- if err != nil {
- return err
+ if setSequenceErr != nil {
+ return setSequenceErr
}
return nil
From 33de97b84d00dbd96a125a11a8bb6b445f703d65 Mon Sep 17 00:00:00 2001
From: Philip Offtermatt
Date: Thu, 30 Nov 2023 11:20:04 +0100
Subject: [PATCH 060/111] Move from difference folder to mbt folder
---
tests/difference/core/README.md | 135 -
tests/difference/core/docs/METHOD.md | 128 -
.../core/docs/diagrams/diagram0.excalidraw | 1678 ----------
.../core/docs/diagrams/diagram0.png | Bin 174961 -> 0 bytes
tests/difference/core/driver/.gitignore | 2 -
tests/difference/core/driver/common.go | 96 -
tests/difference/core/driver/core_test.go | 344 --
.../core/driver/seed_gen_fuzzy_test.go | 85 -
tests/difference/core/driver/setup.go | 625 ----
tests/difference/core/driver/setup_test.go | 139 -
tests/difference/core/driver/trace.go | 166 -
tests/difference/core/driver/traces.json | 1 -
tests/difference/core/model/.eslintignore | 1 -
tests/difference/core/model/.eslintrc.json | 27 -
tests/difference/core/model/.gitignore | 31 -
tests/difference/core/model/.prettierrc | 17 -
.../core/model/__tests__/gen.test.ts | 14 -
.../core/model/__tests__/tsconfig.json | 30 -
tests/difference/core/model/jest.config.js | 24 -
tests/difference/core/model/package.json | 50 -
tests/difference/core/model/src/common.ts | 244 --
tests/difference/core/model/src/constants.ts | 140 -
tests/difference/core/model/src/main.ts | 533 ---
tests/difference/core/model/src/model.ts | 794 -----
tests/difference/core/model/src/properties.ts | 359 ---
tests/difference/core/model/src/traceUtil.ts | 233 --
tests/difference/core/model/tsconfig.json | 28 -
.../core/model/tsconfig.release.json | 8 -
tests/difference/core/model/yarn.lock | 2862 -----------------
.../quint_model/driver/generate_traces.sh | 10 -
.../core/quint_model => mbt}/.gitignore | 0
tests/mbt/README.md | 68 +
.../quint_model => mbt}/driver/.gitignore | 0
tests/mbt/driver/README.md | 5 +
.../core/quint_model => mbt}/driver/common.go | 0
.../core/quint_model => mbt}/driver/core.go | 3 +-
tests/mbt/driver/generate_traces.sh | 10 +
.../core/quint_model => mbt}/driver/main.go | 0
.../quint_model => mbt}/driver/mbt_test.go | 10 +-
.../driver/model_viewer.go | 0
.../core/quint_model => mbt}/driver/setup.go | 0
.../core/quint_model => mbt}/driver/stats.go | 0
.../quint_model => mbt}/driver/trace_gen.go | 0
.../core/quint_model => mbt/model}/README.md | 54 +-
.../core/quint_model => mbt/model}/ccv.qnt | 0
.../model}/ccv_boundeddrift.qnt | 8 +-
.../quint_model => mbt/model}/ccv_model.qnt | 0
.../quint_model => mbt/model}/ccv_sync.qnt | 0
.../quint_model => mbt/model}/ccv_test.qnt | 0
.../model}/libraries/Time.qnt | 0
.../model}/libraries/extraSpells.qnt | 0
.../quint_model => mbt}/run_invariants.sh | 0
52 files changed, 143 insertions(+), 8819 deletions(-)
delete mode 100644 tests/difference/core/README.md
delete mode 100644 tests/difference/core/docs/METHOD.md
delete mode 100644 tests/difference/core/docs/diagrams/diagram0.excalidraw
delete mode 100644 tests/difference/core/docs/diagrams/diagram0.png
delete mode 100644 tests/difference/core/driver/.gitignore
delete mode 100644 tests/difference/core/driver/common.go
delete mode 100644 tests/difference/core/driver/core_test.go
delete mode 100644 tests/difference/core/driver/seed_gen_fuzzy_test.go
delete mode 100644 tests/difference/core/driver/setup.go
delete mode 100644 tests/difference/core/driver/setup_test.go
delete mode 100644 tests/difference/core/driver/trace.go
delete mode 100644 tests/difference/core/driver/traces.json
delete mode 100644 tests/difference/core/model/.eslintignore
delete mode 100644 tests/difference/core/model/.eslintrc.json
delete mode 100644 tests/difference/core/model/.gitignore
delete mode 100644 tests/difference/core/model/.prettierrc
delete mode 100644 tests/difference/core/model/__tests__/gen.test.ts
delete mode 100644 tests/difference/core/model/__tests__/tsconfig.json
delete mode 100644 tests/difference/core/model/jest.config.js
delete mode 100644 tests/difference/core/model/package.json
delete mode 100644 tests/difference/core/model/src/common.ts
delete mode 100644 tests/difference/core/model/src/constants.ts
delete mode 100644 tests/difference/core/model/src/main.ts
delete mode 100644 tests/difference/core/model/src/model.ts
delete mode 100644 tests/difference/core/model/src/properties.ts
delete mode 100644 tests/difference/core/model/src/traceUtil.ts
delete mode 100644 tests/difference/core/model/tsconfig.json
delete mode 100644 tests/difference/core/model/tsconfig.release.json
delete mode 100644 tests/difference/core/model/yarn.lock
delete mode 100755 tests/difference/core/quint_model/driver/generate_traces.sh
rename tests/{difference/core/quint_model => mbt}/.gitignore (100%)
create mode 100644 tests/mbt/README.md
rename tests/{difference/core/quint_model => mbt}/driver/.gitignore (100%)
create mode 100644 tests/mbt/driver/README.md
rename tests/{difference/core/quint_model => mbt}/driver/common.go (100%)
rename tests/{difference/core/quint_model => mbt}/driver/core.go (99%)
create mode 100755 tests/mbt/driver/generate_traces.sh
rename tests/{difference/core/quint_model => mbt}/driver/main.go (100%)
rename tests/{difference/core/quint_model => mbt}/driver/mbt_test.go (99%)
rename tests/{difference/core/quint_model => mbt}/driver/model_viewer.go (100%)
rename tests/{difference/core/quint_model => mbt}/driver/setup.go (100%)
rename tests/{difference/core/quint_model => mbt}/driver/stats.go (100%)
rename tests/{difference/core/quint_model => mbt}/driver/trace_gen.go (100%)
rename tests/{difference/core/quint_model => mbt/model}/README.md (51%)
rename tests/{difference/core/quint_model => mbt/model}/ccv.qnt (100%)
rename tests/{difference/core/quint_model => mbt/model}/ccv_boundeddrift.qnt (91%)
rename tests/{difference/core/quint_model => mbt/model}/ccv_model.qnt (100%)
rename tests/{difference/core/quint_model => mbt/model}/ccv_sync.qnt (100%)
rename tests/{difference/core/quint_model => mbt/model}/ccv_test.qnt (100%)
rename tests/{difference/core/quint_model => mbt/model}/libraries/Time.qnt (100%)
rename tests/{difference/core/quint_model => mbt/model}/libraries/extraSpells.qnt (100%)
rename tests/{difference/core/quint_model => mbt}/run_invariants.sh (100%)
diff --git a/tests/difference/core/README.md b/tests/difference/core/README.md
deleted file mode 100644
index 1d9bbf04e2..0000000000
--- a/tests/difference/core/README.md
+++ /dev/null
@@ -1,135 +0,0 @@
-# Differential testing for Interchain Security 'core' protocol
-
-This directory contains model and trace generation code for the differential approach to testing Interchain Security. In particular, this work is used to test 'core' (normal operation) features of the protocol.
-
-At a high level, the model consists of one Provider chain and one Consumer chain. There is a single delegator account on the Provider, whose actions will change the delegation and thus the tokens and voting power of the validators. The voting power changes are relayed to the Consumer chain. The entire cycle of unbonding operation maturity is captured, because the Consumer will send unbonding maturity packets. Moreoever, slashing is modelled, as the Consumer can initiate slashing actions.
-
-## Scope
-
-### Tested (Unchecked means that work is in progress. Checked means the work is complete.)
-
-The following aspects of the system are tested
-
-- [x] Sending VSC packets from provider to one consumer
-- [x] Sending VSC maturities from one consumer to provider
-- [x] Slashing logic (not including actual token burning)
-- [x] Validator power change
-- [x] Validators leaving or joining the active validor set
-- [x] Consumer initiated slashing
-- [x] Delegation operations
-- [x] Undelegation operations
-- [x] Validator unbonding
-- [x] Valiator jailing
-- [x] Validator tombstoning
-- [x] Packet acknowledgements
-- [x] The 'Bond Based Consumer Voting Power' property ([link](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/system_model_and_properties.md#system-properties))
-- [x] The 'Validator Set Replication' property ([link](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/system_model_and_properties.md#system-properties))
-- [ ] The 'Slashable Consumer Misbehavior' property ([link](https://github.com/cosmos/ibc/blob/main/spec/app/ics-028-cross-chain-validation/system_model_and_properties.md#system-properties)) (_maybe_)
-- [ ] PendingVSC when consumer start (_maybe_)
-- [ ] Redelegation operations
-- [ ] Unjailing operations
-
-### NOT Tested
-
-The following aspects of the system are not tested by this work.
-
-- Completing the IBC handshakes
-- Repairing an expired IBC channel through governance
-- Slashing with non-zero slash factors
-- Submitting proposals
-- Executing proposals
-- Adding a new consumer chain
-- Removing a consumer chain for any reason
-- Distribution of rewards
-- Provider Governance
-- Consumer Governance/Democracy
-- Anything to do with cosmwasm
-- Client expiry
-- Packet timeouts
-- Restarting any chain from exported state
-- Any logic that deals with having _more than one consumer chain_
-- Multiple delegator accounts
-
-## Usage
-
-### Overview
-
-This typescript project contains code for
-
-- Modelling the aspects of the system listed under TESTED above
-- Generating and executing actions against a model system based on those aspects, in order to explore various behaviors. The actions are generated using heuristics and randomness.
-- Recording traces of executions to file
-- Choosing a set of traces in a manner convenient for testing the SUT.
-- Replaying a given existing trace against a new model instance, for debugging purposes.
-
-### Usage prerequisities
-
-```bash
-# nodejs version 16 is required.
-node --version
-# yarn package manager is required
-yarn --version
-# setup the project
-yarn install
-```
-
-### Commands
-
-There are several top level yarn project scripts which can be run via
-
-```bash
-yarn
-```
-
-as per the `scripts` entry in [package.json](./package.json). The most important of these are
-
-```bash
-# install the project
-yarn install;
-# build in watch mode. Repeatedly build the project when the src changes
-# recommended to run in background process
-yarn build:watch
-# start main.ts - the entry point to the program
-yarn start
-# test - run the tests in __tests__
-yarn test
-```
-
-The actual functionality has entrypoint in [src/main.ts](./src/main.ts). Please see the file for details. The available functionalities are
-
-```bash
-# generate traces for x seconds
-yarn start gen
-# check properties for x seconds
-yarn start properties
-# create a subset of traces
-yarn start subset