diff --git a/Dockerfile b/Dockerfile index f21a59d..7c9de5b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ ARG TARGETARCH ARG GOARCH # See https://github.com/initia-labs/movevm/releases -ENV LIBMOVEVM_VERSION=v0.4.12 +ENV LIBMOVEVM_VERSION=v0.5.0 # Install necessary packages RUN set -eux; apk add --no-cache ca-certificates build-base git cmake diff --git a/app/upgrade.go b/app/upgrade.go index 7b5e611..91584ed 100644 --- a/app/upgrade.go +++ b/app/upgrade.go @@ -2,54 +2,45 @@ package app import ( "context" + "encoding/base64" + "cosmossdk.io/errors" upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/cosmos/cosmos-sdk/types/module" movetypes "github.com/initia-labs/initia/x/move/types" - vmapi "github.com/initia-labs/movevm/api" vmtypes "github.com/initia-labs/movevm/types" ) -const upgradeName = "0.2.2" +const upgradeName = "0.5.4" // RegisterUpgradeHandlers returns upgrade handlers func (app *MinitiaApp) RegisterUpgradeHandlers(cfg module.Configurator) { app.UpgradeKeeper.SetUpgradeHandler( upgradeName, func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - codeMetadataStore, err := vmapi.ParseStructTag("0x1::code::MetadataStore") - if err != nil { - return nil, err - } - - metadataStore, err := app.MoveKeeper.GetResourceBytes(ctx, vmtypes.StdAddress, codeMetadataStore) - if err != nil { - return nil, err - } - - tableHandle, err := movetypes.ReadTableHandleFromTable(metadataStore) - if err != nil { - return nil, err + // diff: https://github.com/initia-labs/movevm/compare/v0.4.12...v0.5.0 + codes := []string{ + // cosmos.move + "oRzrCwYAAAALAQAQAhAaAyqXAQTBAQIFwwGQBAfTBZ4FCPEKIAaRCxoQqwt0Cp8MGgy5DPUJAAAACAAPABEAEgAZACgAMAABAwAABQMAAQcHAAIOBwEAAQMQCwAGJwgAAA0AAQAEEwIDAAEUBAUAABUGAQAAFgcBAAAXCAEAAAIBCgAAGAwKAAUaDQ0AARsEDgAAHAEKAAAdDAoAAB4QAQAAHxEBAAAgEgEAACEVAQAAIhcBAAAjGQEAACQaAQAAJRwBAAAmHgEAACkfAQAAKiEBAAArIgEAACwkAQAALSUBAAAuJwEAAS8TFAAHMSkTAQIAMisBABwoBAYMCAILAwEIBAMAAQYMAQUBBggCAQYKAgQFCgIGCwMBCAQDCgYMCAILAwEIBAMIAggCAwMDCAIKBQoCBgsDAQgEAwoCCgIDAwMKAgYKAgoCCgIGCwMBCAQKAgUBCAABAgIDCAIBAwEBAwMKAgEDBgwLAwEIBAMDBQYLAwEIBAMGBgwFCAIIAgoIAgoKAgEKAgEIAgcFBQoCCgIKCgIKCgIBDQYKCAIKCgIDAwoCCgIFBwoKAgYIAgoCAwoKAgEGBgwFCAIIAgoIAgoIAg8GCggCCgoCAwMKAgoCBQcKCgIGCAIKAgMKCgIKCgIKCgIBBAYMCgIKCAIKCgIFBQoCCgoCCgoCAQsGCggCCgoCAwMFBwoKAgYIAgoCAwoKAgEEBgwKAgoIAgoIAg0GCggCCgoCAwMFBwoKAgYIAgoCAwoKAgoKAgoKAgEKBgwIAgsDAQgFCggCCAIIAgMDAwgCCgUKAgYLAwEIBQoKAgoCCgIDAwMKAg4GCggCCgoCAwMGCwMBCAUKAgUHCgoCBggCCgIDCgoCCgIKAgkGDAgCCAILAwEIBAMLAwEIBAMLAwEIBAMJBQoCCgIGCwMBCAQDBgsDAQgEAwYLAwEIBAMGBgsDAQgEBgsDAQgEBgsDAQgECgIKAgUCBgwKAgMFCgIIAAIIAAUFBgwDCAIDCAIBCAEBBgkAAggBCgIDBgwKAggABmNvc21vcwdPcHRpb25zDWFsbG93X2ZhaWx1cmULY2FsbGJhY2tfaWQMY2FsbGJhY2tfZmlkC1ZvdGVSZXF1ZXN0Bl90eXBlXwZTdHJpbmcGc3RyaW5nC3Byb3Bvc2FsX2lkBXZvdGVyBm9wdGlvbghtZXRhZGF0YQhkZWxlZ2F0ZQZPYmplY3QGb2JqZWN0CE1ldGFkYXRhDmZ1bmdpYmxlX2Fzc2V0BnNpZ25lcgphZGRyZXNzX29mBWJ5dGVzEWRlbGVnYXRlX2ludGVybmFsCHRyYW5zZmVyEXRyYW5zZmVyX2ludGVybmFsG2FsbG93X2ZhaWx1cmVfd2l0aF9jYWxsYmFjawVlcnJvchBpbnZhbGlkX2FyZ3VtZW50CGlzX2VtcHR5EGRpc2FsbG93X2ZhaWx1cmUeZGlzYWxsb3dfZmFpbHVyZV93aXRoX2NhbGxiYWNrE2Z1bmRfY29tbXVuaXR5X3Bvb2wcZnVuZF9jb21tdW5pdHlfcG9vbF9pbnRlcm5hbAxtb3ZlX2V4ZWN1dGUVbW92ZV9leGVjdXRlX2ludGVybmFsFm1vdmVfZXhlY3V0ZV93aXRoX2pzb24LbW92ZV9zY3JpcHQUbW92ZV9zY3JpcHRfaW50ZXJuYWwVbW92ZV9zY3JpcHRfd2l0aF9qc29uDG5mdF90cmFuc2ZlcgpDb2xsZWN0aW9uCmNvbGxlY3Rpb24VbmZ0X3RyYW5zZmVyX2ludGVybmFsB3BheV9mZWUQcGF5X2ZlZV9pbnRlcm5hbAhzdGFyZ2F0ZRFzdGFyZ2F0ZV9pbnRlcm5hbA1zdGFyZ2F0ZV92b3RlBHV0ZjgEanNvbgdtYXJzaGFsFXN0YXJnYXRlX3dpdGhfb3B0aW9ucwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCgIXFi9jb3Ntb3MuZ292LnYxLk1zZ1ZvdGUUY29tcGlsYXRpb25fbWV0YWRhdGEJAAMyLjADMi4wE2luaXRpYTo6bWV0YWRhdGFfdjBAAgEAAAAAAAAAFEVJTlZBTElEX0NBTExCQUNLX0lEAAIAAAAAAAAAFUVJTlZBTElEX0NBTExCQUNLX0ZJRAAAAAACAwIBAwMECgIBAgUGCAIJAwoIAgsDDAgCAAEEAAEJCwARAQ4BEQIUDgILAxEDAgQBBAAJGwsAEQEOARECFA4CDgQRAhQOBRECFA4JEQIUDAoMCwwMCwMLDAsLCwYLBwsICwoRBQIGAQAAAQUIBgAAAAAAAAAAQAsAAAAAAAAAABIAAgcBAAAPGAoABgAAAAAAAAAAJAQFBQgGAQAAAAAAAAARCCcOAREJAwwFDwYCAAAAAAAAABEIJwgOARECFAwDCwALAxIAAgMAAgAKAQAAAQUJBgAAAAAAAAAAQAsAAAAAAAAAABIAAgsBAAAPGAoABgAAAAAAAAAAJAQFBQgGAQAAAAAAAAARCCcOAREJAwwFDwYCAAAAAAAAABEIJwkOARECFAwDCwALAxIAAgwBBAABBgsAEQEOAQsCEQ0CDQACAA4BBAAWOQsAEQEOAhECFA4DEQIUDgQMBkATAAAAAAAAAAAMBwYAAAAAAAAAAAoGQRQMCAwJDAoMCwwMCgkKCCMEKAoGCglCFA0HDA0RAhQMDwsNCw9EEwsJBgEAAAAAAAAAFgwJBSsLBgEFLAUUCwcMEQkMEgsMCwELCwsKCxELBQsSEQ8CDwACABABBAAYXAsAEQEOAhECFA4DEQIUDgQMBkATAAAAAAAAAAAMBwYAAAAAAAAAAAoGQRQMCAwJDAoMCwwMCgkKCCMEKAoGCglCFA0HDA0RAhQMDwsNCw9EEwsJBgEAAAAAAAAAFgwJBSsLBgEFLAUUCwcMEQ4FDAZAEwAAAAAAAAAADBIGAAAAAAAAAAAKBkEUDAgMCQoJCggjBEsKBgoJQhQNEgwNEQIUDA8LDQsPRBMLCQYBAAAAAAAAABYMCQVOCwYBBU8FNwsSDBMIDBQLDAsBCwsLCgsRCxMLFBEPAhEBBAAbLwsAEQEOAgwEQBMAAAAAAAAAAAwFBgAAAAAAAAAACgRBFAwGDAcMCAoHCgYjBCAKBAoHQhQNBQwJEQIUDAsLCQsLRBMLBwYBAAAAAAAAABYMBwUjCwQBBSQFDAsFDA0JDA4LCAsBCw0LAwsOERICEgACABMBBAAdUgsAEQEOAgwEQBMAAAAAAAAAAAwFBgAAAAAAAAAACgRBFAwGDAcMCAoHCgYjBCAKBAoHQhQNBQwJEQIUDAsLCQsLRBMLBwYBAAAAAAAAABYMBwUjCwQBBSQFDAsFDA0OAwwEQBMAAAAAAAAAAAwOBgAAAAAAAAAACgRBFAwGDAcKBwoGIwRDCgQKB0IUDQ4MCRECFAwLCwkLC0QTCwcGAQAAAAAAAAAWDAcFRgsEAQVHBS8LDgwPCAwQCwgLAQsNCw8LEBESAhQBBAAgRAsAEQEOARECFA4CDgMMCkATAAAAAAAAAAAMCwYAAAAAAAAAAAoKQRQMDAwNDA4MDwwQCg0KDCMEJgoKCg1CFA0LDBERAhQMEwsRCxNEEwsNBgEAAAAAAAAAFgwNBSkLCgEFKgUSCwsMFQ4EEQIUDgURAhQOCRECFAwWDBcMEwsQCw8LDgsVCxMLFwsGCwcLCAsWERUCFQACABYBBAAjFAsAEQEOARECFA4CEQIUDgMOBQ4HDAkMCgsECwoLBgsJCwgRFwIXAAIAGAEEACYICwARAREKDAILAQsCERkCGQACABoBBAAqDwcAERsLAQsCCwMLBBIBDAUOBTgADAYLAAsGERgCHQEAAAEGCwARAQsBCwIRGQIFAAIAAA==", } - bz, err := vmtypes.SerializeString("0x1::oracle") - if err != nil { - return nil, err - } + modules := make([]vmtypes.Module, len(codes)) + for i, code := range codes { + codeBz, err := base64.StdEncoding.DecodeString(code) + if err != nil { + return nil, errors.Wrap(err, "failed to decode module code") + } - tableEntry, err := app.MoveKeeper.GetTableEntryBytes(ctx, tableHandle, bz) - if err != nil { - return nil, err + modules[i] = vmtypes.NewModule(codeBz) } - tableEntry.ValueBytes[0] = 0 - err = app.MoveKeeper.SetTableEntry(ctx, tableEntry) + err := app.MoveKeeper.PublishModuleBundle(ctx, vmtypes.StdAddress, vmtypes.NewModuleBundle(modules...), movetypes.UpgradePolicy_COMPATIBLE) if err != nil { - return nil, err + return nil, errors.Wrap(err, "failed to publish module bundle") } - return app.ModuleManager.RunMigrations(ctx, app.configurator, vm) + return vm, nil }, ) } diff --git a/cmd/minitiad/root.go b/cmd/minitiad/root.go index 64db4cd..b055b77 100644 --- a/cmd/minitiad/root.go +++ b/cmd/minitiad/root.go @@ -173,7 +173,7 @@ func initRootCmd(rootCmd *cobra.Command, encodingConfig params.EncodingConfig, b ac := encodingConfig.TxConfig.SigningContext().AddressCodec() // add move commands - rootCmd.AddCommand(movecmd.MoveCommand(ac)) + rootCmd.AddCommand(movecmd.MoveCommand(ac, true)) // add launch commands rootCmd.AddCommand(LaunchCommand(a, encodingConfig, basicManager)) diff --git a/go.mod b/go.mod index 92e9537..ad4ee0d 100644 --- a/go.mod +++ b/go.mod @@ -25,15 +25,15 @@ require ( github.com/cosmos/ibc-go/v8 v8.5.0 github.com/golang/mock v1.6.0 github.com/gorilla/mux v1.8.1 - github.com/initia-labs/OPinit v0.5.2 - github.com/initia-labs/initia v0.5.3 + github.com/initia-labs/OPinit v0.5.4 + github.com/initia-labs/initia v0.5.5 github.com/initia-labs/kvindexer v0.1.8 github.com/initia-labs/kvindexer/submodules/block v0.1.0 github.com/initia-labs/kvindexer/submodules/move-nft v0.1.5 github.com/initia-labs/kvindexer/submodules/pair v0.1.1 github.com/initia-labs/kvindexer/submodules/tx v0.1.0 // we also need to update `LIBMOVEVM_VERSION` of Dockerfile#5 - github.com/initia-labs/movevm v0.4.12 + github.com/initia-labs/movevm v0.5.0 github.com/noble-assets/forwarding/v2 v2.0.0-20240521090705-86712c4c9e43 github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 diff --git a/go.sum b/go.sum index 6e7032d..54b4e46 100644 --- a/go.sum +++ b/go.sum @@ -1416,8 +1416,8 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/initia-labs/OPinit v0.5.2 h1:KEiC72KGBa+X5DDMRrzVJCqNEGi7KX5cOYH/zAoDaQk= -github.com/initia-labs/OPinit v0.5.2/go.mod h1:lx1amLMszculwPu8ln+btJno38UV28fd2nP7XC88ZeE= +github.com/initia-labs/OPinit v0.5.4 h1:5p/YwEsmKdQdlOl6swULHeENvftqaHfm/bpS+h7+zLg= +github.com/initia-labs/OPinit v0.5.4/go.mod h1:lx1amLMszculwPu8ln+btJno38UV28fd2nP7XC88ZeE= github.com/initia-labs/OPinit/api v0.5.1 h1:zwyJf7HtKJCKvLJ1R9PjVfJO1L+d/jKoeFyT7WTLHFI= github.com/initia-labs/OPinit/api v0.5.1/go.mod h1:gHK6DEWb3/DqQD5LjKirUx9jilAh2UioXanoQdgqVfU= github.com/initia-labs/cometbft v0.0.0-20240925132752-ff8ff0126261 h1:V62KOhe6Em3wAvJsDVP+3is98I3mk/29OKNVs4IxeFQ= @@ -1426,8 +1426,8 @@ github.com/initia-labs/cometbft-client v0.0.0-20240924071428-ef115cefa07e h1:k+p github.com/initia-labs/cometbft-client v0.0.0-20240924071428-ef115cefa07e/go.mod h1:aVposiPW9FOUeAeJ7JjJRdE3g+L6i8YDxFn6Cv6+Az4= github.com/initia-labs/ibc-go/v8 v8.0.0-20240802003717-19c0b4ad450d h1:TLq8lB1PtQ0pjGf+bN8YgGVeLMuytZ26SBGMOs1seKY= github.com/initia-labs/ibc-go/v8 v8.0.0-20240802003717-19c0b4ad450d/go.mod h1:zh6x1osR0hNvEcFrC/lhGD08sMfQmr9wHVvZ/mRWMCs= -github.com/initia-labs/initia v0.5.3 h1:aNchJzN44Ed1R+NkMxMqDOP92DtYq+0vSJKeOmqN43A= -github.com/initia-labs/initia v0.5.3/go.mod h1:dDsBItzItjqapfRB6JR0ku5chNRSSaxWgJdj42i+Mio= +github.com/initia-labs/initia v0.5.5 h1:NmWrca23YdLpGibbGNN8Wy68MWDDA8rfxy939BSd0oM= +github.com/initia-labs/initia v0.5.5/go.mod h1:QKdfEnRej+FGnHpuzYh0tG2+oLX+Rm+OJKlDYe1Ciks= github.com/initia-labs/kvindexer v0.1.8 h1:PZ7FPYZO2zFXBdnvVlwMFVv6O59fpgCObELxVYB0hBo= github.com/initia-labs/kvindexer v0.1.8/go.mod h1:OV85HaQ9KVrg+zGPUlxT9RF9nAaM3Yq4/3MoHqGqhWk= github.com/initia-labs/kvindexer/submodules/block v0.1.0 h1:y+EXnksd/I2F96mzIoQA64nZUZON2P+99YrSzeLCLoY= @@ -1438,8 +1438,8 @@ github.com/initia-labs/kvindexer/submodules/pair v0.1.1 h1:o151gA4jIbqEl+pWTOCiz github.com/initia-labs/kvindexer/submodules/pair v0.1.1/go.mod h1:8X1GE1ZLkH7z8TKb5MUh7UClTkcqVFIwXIIRdsqeUZY= github.com/initia-labs/kvindexer/submodules/tx v0.1.0 h1:6kbf6wmzXPN0XCQLasiFgq1AlZHkt5K3/ZG+IWw1nNs= github.com/initia-labs/kvindexer/submodules/tx v0.1.0/go.mod h1:i0XeLbLa6xdgTR01WF8kaAO50vMmwxbeq0fKexwpFHU= -github.com/initia-labs/movevm v0.4.12 h1:P30q4U2jUN/al3bX391ZkXr3t59owNTwr9qmC4d1S0Q= -github.com/initia-labs/movevm v0.4.12/go.mod h1:aUWdvFZPdULjJ2McQTE+mLnfnG3CLAz0TWJRFzFFUwg= +github.com/initia-labs/movevm v0.5.0 h1:dBSxoVyUumSE4x6/ZSOWtvbtZpw+V4W25/NH6qLU0uQ= +github.com/initia-labs/movevm v0.5.0/go.mod h1:aUWdvFZPdULjJ2McQTE+mLnfnG3CLAz0TWJRFzFFUwg= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=