ctx := app.BaseApp.NewUncachedContext(true, tmproto.Header{
})
    pubkey := &ed25519.PubKey{
    Key: newValPubKey.Bytes()
}
pubkeyAny, err := types.NewAnyWithValue(pubkey)
    if err != nil {
    tmos.Exit(err.Error())
}
	// STAKING
	//
	// Create Validator struct for our new validator.
	_, bz, err := bech32.DecodeAndConvert(newOperatorAddress)
    if err != nil {
    tmos.Exit(err.Error())
}
bech32Addr, err := bech32.ConvertAndEncode("simvaloper", bz)
    if err != nil {
    tmos.Exit(err.Error())
}
    newVal := stakingtypes.Validator{
    OperatorAddress: bech32Addr,
    ConsensusPubkey: pubkeyAny,
    Jailed:          false,
    Status:          stakingtypes.Bonded,
    Tokens:          sdk.NewInt(900000000000000),
    DelegatorShares: sdk.MustNewDecFromStr("10000000"),
    Description: stakingtypes.Description{
    Moniker: "Testnet Validator",
},
    Commission: stakingtypes.Commission{
    CommissionRates: stakingtypes.CommissionRates{
    Rate:          sdk.MustNewDecFromStr("0.05"),
    MaxRate:       sdk.MustNewDecFromStr("0.1"),
    MaxChangeRate: sdk.MustNewDecFromStr("0.05"),
},
},
    MinSelfDelegation: sdk.OneInt(),
}
	// Remove all validators from power store
    stakingKey := app.GetKey(stakingtypes.ModuleName)
    stakingStore := ctx.KVStore(stakingKey)
    iterator := app.StakingKeeper.ValidatorsPowerStoreIterator(ctx)
    for ; iterator.Valid(); iterator.Next() {
    stakingStore.Delete(iterator.Key())
}
iterator.Close()
	// Remove all validators from last validators store
	iterator = app.StakingKeeper.LastValidatorsIterator(ctx)
    for ; iterator.Valid(); iterator.Next() {
    app.StakingKeeper.LastValidatorPower.Delete(iterator.Key())
}
iterator.Close()
	// Add our validator to power and last validators store
	app.StakingKeeper.SetValidator(ctx, newVal)
err = app.StakingKeeper.SetValidatorByConsAddr(ctx, newVal)
    if err != nil {
    panic(err)
}
app.StakingKeeper.SetValidatorByPowerIndex(ctx, newVal)
app.StakingKeeper.SetLastValidatorPower(ctx, newVal.GetOperator(), 0)
    if err := app.StakingKeeper.Hooks().AfterValidatorCreated(ctx, newVal.GetOperator()); err != nil {
    panic(err)
}