From a32d778d4bda95682a0581a2dc02fecde63379cf Mon Sep 17 00:00:00 2001 From: Randy Grok Date: Thu, 8 Aug 2024 16:09:22 +0200 Subject: [PATCH] add validators into status --- server/v2/appmanager/appmanager.go | 15 +++++++++++++ simapp/v2/app_test.go | 34 ++++++++++++++++++++++++++++++ simapp/v2/export.go | 14 +++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/server/v2/appmanager/appmanager.go b/server/v2/appmanager/appmanager.go index 3c1718c17bed..ceb897040861 100644 --- a/server/v2/appmanager/appmanager.go +++ b/server/v2/appmanager/appmanager.go @@ -188,3 +188,18 @@ func (a AppManager[T]) QueryWithState( ) (transaction.Msg, error) { return a.stf.Query(ctx, state, a.config.QueryGasLimit, request) } + +// RunWithCtx is made to support genesis, if genesis was just the execution of messages instead +// of being something custom then we would not need this. PLEASE DO NOT USE. +// TODO: Remove +func (a AppManager[T]) RunWithCtx( + ctx context.Context, + closure func(ctx context.Context) error, +) (corestore.WriterMap, error) { + _, st, err := a.db.StateLatest() + if err != nil { + return nil, fmt.Errorf("unable to get latest state: %w", err) + } + + return a.stf.RunWithCtx(ctx, st, closure) +} diff --git a/simapp/v2/app_test.go b/simapp/v2/app_test.go index 799c95802746..db78c7df33e3 100644 --- a/simapp/v2/app_test.go +++ b/simapp/v2/app_test.go @@ -5,9 +5,16 @@ import ( app2 "cosmossdk.io/core/app" "cosmossdk.io/core/comet" context2 "cosmossdk.io/core/context" + sdkmath "cosmossdk.io/math" serverv2 "cosmossdk.io/server/v2" + authtypes "cosmossdk.io/x/auth/types" + banktypes "cosmossdk.io/x/bank/types" "crypto/sha256" "encoding/json" + "github.com/cometbft/cometbft/types" + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" + "github.com/cosmos/cosmos-sdk/testutil/mock" + sdk "github.com/cosmos/cosmos-sdk/types" "testing" "time" @@ -16,6 +23,7 @@ import ( "cosmossdk.io/log" comettypes "cosmossdk.io/server/v2/cometbft/types" "cosmossdk.io/store/v2/db" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/spf13/viper" "github.com/stretchr/testify/require" ) @@ -29,6 +37,32 @@ func NewTestApp(t *testing.T) (*SimApp[transaction.Tx], context.Context) { app := NewSimApp[transaction.Tx](logger, vp) genesis := app.ModuleManager().DefaultGenesis() + + privVal := mock.NewPV() + pubKey, err := privVal.GetPubKey() + require.NoError(t, err) + + // create validator set with single validator + validator := types.NewValidator(pubKey, 1) + valSet := types.NewValidatorSet([]*types.Validator{validator}) + + // generate genesis account + senderPrivKey := secp256k1.GenPrivKey() + acc := authtypes.NewBaseAccount(senderPrivKey.PubKey().Address().Bytes(), senderPrivKey.PubKey(), 0, 0) + balance := banktypes.Balance{ + Address: acc.GetAddress().String(), + Coins: sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(100000000000000))), + } + + genesis, err = simtestutil.GenesisStateWithValSet( + app.AppCodec(), + genesis, + valSet, + []authtypes.GenesisAccount{acc}, + balance, + ) + require.NoError(t, err) + genesisBytes, err := json.Marshal(genesis) require.NoError(t, err) diff --git a/simapp/v2/export.go b/simapp/v2/export.go index 41dcaf6be0bc..42dae5c2b0c2 100644 --- a/simapp/v2/export.go +++ b/simapp/v2/export.go @@ -5,6 +5,7 @@ import ( "cosmossdk.io/x/staking" cmtproto "github.com/cometbft/cometbft/api/cometbft/types/v1" + cmttypes "github.com/cometbft/cometbft/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" ) @@ -26,7 +27,18 @@ func (app *SimApp[T]) ExportAppStateAndValidators(forZeroHeight bool, jailAllowe return servertypes.ExportedApp{}, err } - validators, err := staking.WriteValidators(ctx, app.StakingKeeper) + var validators []cmttypes.GenesisValidator + _, err = app.RunWithCtx(ctx, func(ctx context.Context) error { + validators, err = staking.WriteValidators(ctx, app.StakingKeeper) + if err != nil { + return err + } + return nil + }) + if err != nil { + return servertypes.ExportedApp{}, err + } + return servertypes.ExportedApp{ AppState: genesis, Validators: validators,