Files
sonr/app/upgrades.go
Prad NukalaandGitHub 13e6c3e84d Master (#1262)
* clear

* feat: Add everything

* fix: Commenht
2025-10-03 14:45:52 -04:00

69 lines
2.0 KiB
Go
Executable File

// Package app provides upgrade handling functionality for the Sonr blockchain.
package app
import (
"fmt"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/sonr-io/sonr/app/upgrades"
"github.com/sonr-io/sonr/app/upgrades/noop"
)
// Upgrades contains the list of chain upgrades to be applied.
// Each upgrade defines the upgrade name, handler, and store migrations.
var Upgrades = []upgrades.Upgrade{}
// RegisterUpgradeHandlers registers the chain upgrade handlers for all defined upgrades.
// It sets up the upgrade handlers with the module manager and configurator,
// and configures the store loader for the current upgrade if applicable.
// If no upgrades are defined, it registers a no-op upgrade for testing purposes.
func (app *ChainApp) RegisterUpgradeHandlers() {
// setupLegacyKeyTables(&app.ParamsKeeper)
if len(Upgrades) == 0 {
// always have a unique upgrade registered for the current version to test in system tests
Upgrades = append(Upgrades, noop.NewUpgrade(app.Version()))
}
keepers := upgrades.AppKeepers{
AccountKeeper: &app.AccountKeeper,
ParamsKeeper: &app.ParamsKeeper,
ConsensusParamsKeeper: &app.ConsensusParamsKeeper,
CapabilityKeeper: app.CapabilityKeeper,
IBCKeeper: app.IBCKeeper,
Codec: app.appCodec,
GetStoreKey: app.GetKey,
}
// register all upgrade handlers
for _, upgrade := range Upgrades {
app.UpgradeKeeper.SetUpgradeHandler(
upgrade.UpgradeName,
upgrade.CreateUpgradeHandler(
app.ModuleManager,
app.configurator,
&keepers,
),
)
}
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic(fmt.Sprintf("failed to read upgrade info from disk %s", err))
}
if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
return
}
// register store loader for current upgrade
for _, upgrade := range Upgrades {
if upgradeInfo.Name == upgrade.UpgradeName {
app.SetStoreLoader(
upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades),
) // nolint:gosec
break
}
}
}