2022-09-01 20:20:37 +00:00
|
|
|
package app
|
|
|
|
|
2024-07-25 22:48:23 +00:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
2025-01-15 09:33:29 +00:00
|
|
|
wrappeda0gibasetypes "github.com/0glabs/0g-chain/x/wrapped-a0gi-base/types"
|
2024-07-25 22:48:23 +00:00
|
|
|
storetypes "github.com/cosmos/cosmos-sdk/store/types"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/types/module"
|
2025-01-15 09:33:29 +00:00
|
|
|
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
|
2024-07-25 22:48:23 +00:00
|
|
|
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2025-01-15 09:33:29 +00:00
|
|
|
UpgradeName_Testnet = "v0.5.0"
|
2024-07-25 22:48:23 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
// RegisterUpgradeHandlers registers the upgrade handlers for the app.
|
|
|
|
func (app App) RegisterUpgradeHandlers() {
|
|
|
|
app.upgradeKeeper.SetUpgradeHandler(
|
|
|
|
UpgradeName_Testnet,
|
|
|
|
upgradeHandler(app, UpgradeName_Testnet),
|
|
|
|
)
|
|
|
|
|
|
|
|
upgradeInfo, err := app.upgradeKeeper.ReadUpgradeInfoFromDisk()
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
2024-08-03 06:23:15 +00:00
|
|
|
doUpgrade := upgradeInfo.Name == UpgradeName_Testnet
|
2024-07-25 22:48:23 +00:00
|
|
|
|
|
|
|
if doUpgrade && !app.upgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
|
|
|
|
storeUpgrades := storetypes.StoreUpgrades{
|
|
|
|
Added: []string{
|
2025-01-15 09:33:29 +00:00
|
|
|
wrappeda0gibasetypes.ModuleName,
|
2024-07-25 22:48:23 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
// configure store loader that checks if version == upgradeHeight and applies store upgrades
|
|
|
|
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// upgradeHandler returns an UpgradeHandler for the given upgrade parameters.
|
|
|
|
func upgradeHandler(
|
|
|
|
app App,
|
|
|
|
name string,
|
|
|
|
) upgradetypes.UpgradeHandler {
|
|
|
|
return func(
|
|
|
|
ctx sdk.Context,
|
|
|
|
plan upgradetypes.Plan,
|
|
|
|
fromVM module.VersionMap,
|
|
|
|
) (module.VersionMap, error) {
|
|
|
|
logger := app.Logger()
|
|
|
|
logger.Info(fmt.Sprintf("running %s upgrade handler", name))
|
|
|
|
|
|
|
|
// Run migrations for all modules and return new consensus version map.
|
|
|
|
versionMap, err := app.mm.RunMigrations(ctx, app.configurator, fromVM)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2025-01-15 09:33:29 +00:00
|
|
|
app.mintKeeper.InitGenesis(ctx, app.accountKeeper, &minttypes.GenesisState{
|
|
|
|
BondDenom: "ua0gi",
|
2024-07-25 22:48:23 +00:00
|
|
|
})
|
|
|
|
|
2025-01-15 09:33:29 +00:00
|
|
|
logger.Info("completed store migrations")
|
2024-07-25 22:48:23 +00:00
|
|
|
|
2025-01-15 09:33:29 +00:00
|
|
|
return versionMap, nil
|
2024-07-25 22:48:23 +00:00
|
|
|
}
|
|
|
|
}
|