27 lines
1.2 KiB
Go
27 lines
1.2 KiB
Go
package types
|
|
|
|
import (
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/module"
|
|
)
|
|
|
|
// UpgradeHandler specifies the type of function that is called when an upgrade
|
|
// is applied.
|
|
//
|
|
// `fromVM` is a VersionMap of moduleName to fromVersion (unit64), where
|
|
// fromVersion denotes the version from which we should migrate the module, the
|
|
// target version being the module's latest version in the return VersionMap,
|
|
// let's call it `toVM`.
|
|
//
|
|
// `fromVM` is retrieved from x/upgrade's store, whereas `toVM` is chosen
|
|
// arbitrarily by the app developer (and persisted to x/upgrade's store right
|
|
// after the upgrade handler runs). In general, `toVM` should map all modules
|
|
// to their latest ConsensusVersion so that x/upgrade can track each module's
|
|
// latest ConsensusVersion; `fromVM` can be left as-is, but can also be
|
|
// modified inside the upgrade handler, e.g. to skip running InitGenesis or
|
|
// migrations for certain modules when calling the `module.Manager#RunMigrations`
|
|
// function.
|
|
//
|
|
// Please also refer to docs/core/upgrade.md for more information.
|
|
type UpgradeHandler func(ctx sdk.Context, plan Plan, fromVM module.VersionMap) (module.VersionMap, error)
|