diff --git a/app/app.go b/app/app.go index 08ff8ef86..a7a32c7c1 100644 --- a/app/app.go +++ b/app/app.go @@ -898,6 +898,10 @@ func New( panic(err) } + // RegisterUpgradeHandlers is used for registering any on-chain upgrades. + // Make sure it's called after `app.ModuleManager` and `app.configurator` are set. + app.RegisterUpgradeHandlers() + autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.mm.Modules)) reflectionSvc, err := runtimeservices.NewReflectionService() if err != nil { @@ -956,6 +960,29 @@ func (app *App) setAnteHandler(txConfig client.TxConfig) { app.SetAnteHandler(anteHandler) } +func (app *App) RegisterUpgradeHandlers() { + const UpgradeName = "v0.2.0" + + app.UpgradeKeeper.SetUpgradeHandler( + UpgradeName, + func(ctx context.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + return app.ModuleManager().RunMigrations(ctx, app.Configurator(), fromVM) + }, + ) + + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() + if err != nil { + panic(err) + } + + if upgradeInfo.Name == UpgradeName && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + storeUpgrades := storetypes.StoreUpgrades{} + + // configure store loader that checks if version == upgradeHeight and applies store upgrades + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) + } +} + // Name returns the name of the App func (app *App) Name() string { return app.BaseApp.Name() } diff --git a/x/reporter/ante/ante.go b/x/reporter/ante/ante.go index 11316d561..99e89e551 100644 --- a/x/reporter/ante/ante.go +++ b/x/reporter/ante/ante.go @@ -31,8 +31,8 @@ func (t TrackStakeChangesDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simul var msgAmount math.Int for _, msg := range tx.GetMsgs() { switch msg := msg.(type) { - // case *stakingtypes.MsgCreateValidator: - // msgAmount = msg.Value.Amount + case *stakingtypes.MsgCreateValidator: + msgAmount = msg.Value.Amount case *stakingtypes.MsgDelegate: msgAmount = msg.Amount.Amount case *stakingtypes.MsgBeginRedelegate: diff --git a/x/reporter/ante/ante_test.go b/x/reporter/ante/ante_test.go index 52f921ffd..b28c409f0 100644 --- a/x/reporter/ante/ante_test.go +++ b/x/reporter/ante/ante_test.go @@ -31,20 +31,20 @@ func TestNewTrackStakeChangesDecorator(t *testing.T) { msg sdk.Msg err error }{ - // { - // name: "CreateValidator", - // msg: &stakingtypes.MsgCreateValidator{ - // Value: sdk.Coin{Denom: "loya", Amount: math.NewInt(1)}, - // }, - // err: nil, - // }, - // { - // name: "CreateValidator", - // msg: &stakingtypes.MsgCreateValidator{ - // Value: sdk.Coin{Denom: "loya", Amount: math.NewInt(100)}, - // }, - // err: errors.New("amount increases total stake by more than the allowed 5% in a twelve hour period"), - // }, + { + name: "CreateValidator", + msg: &stakingtypes.MsgCreateValidator{ + Value: sdk.Coin{Denom: "loya", Amount: math.NewInt(1)}, + }, + err: nil, + }, + { + name: "CreateValidator", + msg: &stakingtypes.MsgCreateValidator{ + Value: sdk.Coin{Denom: "loya", Amount: math.NewInt(100)}, + }, + err: errors.New("amount increases total stake by more than the allowed 5% in a twelve hour period"), + }, { name: "Delegate", msg: &stakingtypes.MsgDelegate{