diff --git a/app/app.go b/app/app.go index ea32803b8..9c8e4a49d 100644 --- a/app/app.go +++ b/app/app.go @@ -56,7 +56,7 @@ import ( "github.com/initia-labs/initia/app/keepers" "github.com/initia-labs/initia/app/params" - upgrades_v1_1_1 "github.com/initia-labs/initia/app/upgrades/v1_1_1" + upgrades_v1_1_4 "github.com/initia-labs/initia/app/upgrades/v1_1_4" cryptocodec "github.com/initia-labs/initia/crypto/codec" initiatx "github.com/initia-labs/initia/tx" moveconfig "github.com/initia-labs/initia/x/move/config" @@ -249,7 +249,7 @@ func NewInitiaApp( // The cosmos upgrade handler attempts to create ${HOME}/.initia/data to check for upgrade info, // but this isn't required during initial encoding config setup. if loadLatest { - upgrades_v1_1_1.RegisterUpgradeHandlers(app) + upgrades_v1_1_4.RegisterUpgradeHandlers(app) } autocliv1.RegisterQueryServer(app.GRPCQueryRouter(), runtimeservices.NewAutoCLIQueryService(app.ModuleManager.Modules)) diff --git a/app/upgrades/v1_1_4/upgrade.go b/app/upgrades/v1_1_4/upgrade.go new file mode 100644 index 000000000..eac4632c0 --- /dev/null +++ b/app/upgrades/v1_1_4/upgrade.go @@ -0,0 +1,42 @@ +package v1_1_4 + +import ( + "context" + + upgradetypes "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/types/module" + + "github.com/initia-labs/initia/app/upgrades" + movetypes "github.com/initia-labs/initia/x/move/types" + + vmprecom "github.com/initia-labs/movevm/precompile" + vmtypes "github.com/initia-labs/movevm/types" +) + +const upgradeName = "v1.1.4" + +// RegisterUpgradeHandlers returns upgrade handlers +func RegisterUpgradeHandlers(app upgrades.InitiaApp) { + app.GetUpgradeKeeper().SetUpgradeHandler( + upgradeName, + func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + moduleBytesArray, err := vmprecom.ReadStdlib() + if err != nil { + return nil, err + } + + var modules []vmtypes.Module + for _, module := range moduleBytesArray { + modules = append(modules, vmtypes.NewModule(module)) + } + + err = app.GetMoveKeeper().PublishModuleBundle(ctx, vmtypes.StdAddress, vmtypes.NewModuleBundle(modules...), movetypes.UpgradePolicy_COMPATIBLE) + if err != nil { + return nil, err + } + + return vm, nil + }, + ) +}