Skip to content

Commit 50c26c6

Browse files
authored
feat(app): increase max validators (#549)
Implement upgrade handler to increase `MaxValidators` to 80 issue: none
1 parent 7fd6a79 commit 50c26c6

File tree

3 files changed

+98
-0
lines changed

3 files changed

+98
-0
lines changed

client/app/upgrades.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
sdk "github.com/cosmos/cosmos-sdk/types"
99

1010
"github.com/piplabs/story/client/app/upgrades"
11+
"github.com/piplabs/story/client/app/upgrades/polybius"
1112
"github.com/piplabs/story/client/app/upgrades/singularity/virgil"
1213
"github.com/piplabs/story/client/app/upgrades/v_1_2_0"
1314
)
@@ -18,11 +19,13 @@ var (
1819
Upgrades = []upgrades.Upgrade{
1920
virgil.Upgrade,
2021
v_1_2_0.Upgrade,
22+
polybius.Upgrade,
2123
}
2224
// Forks are for hard forks that breaks backward compatibility.
2325
Forks = []upgrades.Fork{
2426
virgil.Fork,
2527
v_1_2_0.Fork,
28+
polybius.Fork,
2629
}
2730
)
2831

@@ -81,6 +84,14 @@ func (a *App) scheduleForkUpgrade(ctx sdk.Context) {
8184
upgradeHeight = v120UpgradeHeight
8285
}
8386

87+
if fork.UpgradeName == polybius.UpgradeName {
88+
polybiusUpgradeHeight, ok := polybius.GetUpgradeHeight(ctx.ChainID())
89+
if !ok {
90+
continue
91+
}
92+
upgradeHeight = polybiusUpgradeHeight
93+
}
94+
8495
if currentBlockHeight == upgradeHeight {
8596
upgradePlan := upgradetypes.Plan{
8697
Height: currentBlockHeight,
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package polybius
2+
3+
import (
4+
storetypes "cosmossdk.io/store/types"
5+
6+
sdk "github.com/cosmos/cosmos-sdk/types"
7+
8+
"github.com/piplabs/story/client/app/keepers"
9+
"github.com/piplabs/story/client/app/upgrades"
10+
)
11+
12+
const (
13+
UpgradeName = "polybius"
14+
15+
// AeneidUpgradeHeight defines the block height at which v1.3.0 upgrade is triggered on Aeneid.
16+
AeneidUpgradeHeight = 6008000
17+
18+
NewMaxValidators = 80
19+
)
20+
21+
var Upgrade = upgrades.Upgrade{
22+
UpgradeName: UpgradeName,
23+
CreateUpgradeHandler: CreateUpgradeHandler,
24+
StoreUpgrades: storetypes.StoreUpgrades{},
25+
}
26+
27+
var Fork = upgrades.Fork{
28+
UpgradeName: UpgradeName,
29+
UpgradeInfo: "upgrade to increase max number of validator to 80",
30+
// UpgradeHeight is set in `scheduleForkUpgrade`
31+
BeginForkLogic: func(_ sdk.Context, _ *keepers.Keepers) {},
32+
}
33+
34+
func GetUpgradeHeight(chainID string) (int64, bool) {
35+
switch chainID {
36+
case upgrades.AeneidChainID:
37+
return AeneidUpgradeHeight, true
38+
default:
39+
return 0, false
40+
}
41+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package polybius
2+
3+
import (
4+
"context"
5+
6+
upgradetypes "cosmossdk.io/x/upgrade/types"
7+
8+
"github.com/cosmos/cosmos-sdk/types/module"
9+
10+
"github.com/piplabs/story/client/app/keepers"
11+
"github.com/piplabs/story/lib/errors"
12+
"github.com/piplabs/story/lib/log"
13+
)
14+
15+
func CreateUpgradeHandler(
16+
_ *module.Manager,
17+
_ module.Configurator,
18+
keepers *keepers.Keepers,
19+
) upgradetypes.UpgradeHandler {
20+
return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
21+
log.Info(ctx, "Start upgrade Polybius")
22+
23+
params, err := keepers.StakingKeeper.GetParams(ctx)
24+
if err != nil {
25+
return vm, errors.Wrap(err, "failed to get existing params of staking module")
26+
}
27+
28+
params.MaxValidators = NewMaxValidators
29+
if err := keepers.StakingKeeper.SetParams(ctx, params); err != nil {
30+
return vm, errors.Wrap(err, "failed to set new params of staking module")
31+
}
32+
33+
newParams, err := keepers.StakingKeeper.GetParams(ctx)
34+
if err != nil {
35+
return vm, errors.Wrap(err, "failed to get new params of staking module")
36+
}
37+
38+
if !newParams.Equal(params) {
39+
return vm, errors.New("new params mismatch")
40+
}
41+
42+
log.Info(ctx, "Upgrade Polybius complete")
43+
44+
return vm, nil
45+
}
46+
}

0 commit comments

Comments
 (0)