From d73ad1b9355c37ddf8cc5fdffb60fe0cf63f298d Mon Sep 17 00:00:00 2001 From: Cashmaney Date: Wed, 3 Aug 2022 19:15:34 +0300 Subject: [PATCH 01/11] Refactored upgrade handler to be a bit easier to work with Added empty migrations for compute module for now --- app/app.go | 41 ++++++++++++++++++++----- app/upgrades/types.go | 33 ++++++++++++++++++++ app/upgrades/v1.3/upgrades.go | 26 ++++++++++++++-- app/upgrades/v1.4/upgrades.go | 36 ++++++++++++++++++++++ x/compute/internal/keeper/migrations.go | 21 +++++++++++++ x/compute/migrations/v1/types.go | 3 ++ x/compute/migrations/v2/store.go | 28 +++++++++++++++++ x/compute/module.go | 9 +++++- 8 files changed, 185 insertions(+), 12 deletions(-) create mode 100644 app/upgrades/types.go create mode 100644 app/upgrades/v1.4/upgrades.go create mode 100644 x/compute/internal/keeper/migrations.go create mode 100644 x/compute/migrations/v1/types.go create mode 100644 x/compute/migrations/v2/store.go diff --git a/app/app.go b/app/app.go index 326fddf9f..a3f60ccda 100644 --- a/app/app.go +++ b/app/app.go @@ -2,6 +2,8 @@ package app import ( "fmt" + "github.com/enigmampc/SecretNetwork/app/upgrades" + v1_4 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.4" "io" "net/http" "os" @@ -136,6 +138,8 @@ var ( allowedReceivingModAcc = map[string]bool{ distrtypes.ModuleName: true, } + + Upgrades = []upgrades.Upgrade{v1_3.Upgrade, v1_4.Upgrade} ) // Verify app interface at compile time @@ -171,7 +175,7 @@ type SecretNetworkApp struct { paramsKeeper paramskeeper.Keeper evidenceKeeper evidencekeeper.Keeper feeGrantKeeper feegrantkeeper.Keeper - computeKeeper compute.Keeper + ComputeKeeper compute.Keeper regKeeper reg.Keeper ibcKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly transferKeeper ibctransferkeeper.Keeper @@ -421,7 +425,7 @@ func NewSecretNetworkApp( // if we want to allow any custom callbacks supportedFeatures := "staking" - app.computeKeeper = compute.NewKeeper( + app.ComputeKeeper = compute.NewKeeper( appCodec, *legacyAmino, keys[compute.StoreKey], @@ -463,7 +467,7 @@ func NewSecretNetworkApp( staking.NewAppModule(appCodec, app.stakingKeeper, app.accountKeeper, app.bankKeeper), upgrade.NewAppModule(app.upgradeKeeper), evidence.NewAppModule(app.evidenceKeeper), - compute.NewAppModule(app.computeKeeper), + compute.NewAppModule(app.ComputeKeeper), params.NewAppModule(app.paramsKeeper), authzmodule.NewAppModule(appCodec, app.authzKeeper, app.accountKeeper, app.bankKeeper, app.interfaceRegistry), reg.NewAppModule(app.regKeeper), @@ -584,7 +588,7 @@ func NewSecretNetworkApp( // distr.NewAppModule(appCodec, app.distrKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper), // slashing.NewAppModule(appCodec, app.slashingKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper), // params.NewAppModule(app.paramsKeeper), - // //compute.NewAppModule(app.computeKeeper), + // //compute.NewAppModule(app.ComputeKeeper), // evidence.NewAppModule(app.evidenceKeeper), //) @@ -617,7 +621,7 @@ func NewSecretNetworkApp( if manager := app.SnapshotManager(); manager != nil { err := manager.RegisterExtensions( - compute.NewWasmSnapshotter(app.CommitMultiStore(), &app.computeKeeper), + compute.NewWasmSnapshotter(app.CommitMultiStore(), &app.ComputeKeeper), ) if err != nil { panic(fmt.Errorf("failed to register snapshot extension: %s", err)) @@ -747,9 +751,20 @@ func (app *SecretNetworkApp) BlockedAddrs() map[string]bool { func (app *SecretNetworkApp) setupUpgradeHandlers(icamodule *ica.AppModule) { // this configures a no-op upgrade handler for the v4 upgrade, // which improves the lockup module's store management. - app.upgradeKeeper.SetUpgradeHandler( - v1_3.UpgradeName, v1_3.CreateUpgradeHandler( - app.mm, icamodule, app.configurator)) + for _, upgradeDetails := range Upgrades { + app.upgradeKeeper.SetUpgradeHandler( + upgradeDetails.UpgradeName, + upgradeDetails.CreateUpgradeHandler( + app.mm, + app, + app.configurator, + ), + ) + } + // + //app.upgradeKeeper.SetUpgradeHandler( + // v1_3.UpgradeName, v1_3.CreateUpgradeHandler( + // app.mm, icamodule, app.configurator)) } func (app *SecretNetworkApp) setupUpgradeStoreLoaders() { @@ -758,6 +773,16 @@ func (app *SecretNetworkApp) setupUpgradeStoreLoaders() { panic(fmt.Sprintf("Failed to read upgrade info from disk %s", err)) } + if app.upgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + return + } + + for _, upgradeDetails := range Upgrades { + if upgradeInfo.Name == upgradeDetails.UpgradeName { + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgradeDetails.StoreUpgrades)) + } + } + if upgradeInfo.Name == v1_3.UpgradeName && !app.upgradeKeeper.IsSkipHeight(upgradeInfo.Height) { // @Frey do we do this for Cosmwasm? storeUpgrades := store.StoreUpgrades{ diff --git a/app/upgrades/types.go b/app/upgrades/types.go new file mode 100644 index 000000000..eef657eb7 --- /dev/null +++ b/app/upgrades/types.go @@ -0,0 +1,33 @@ +package upgrades + +import ( + store "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + "github.com/enigmampc/SecretNetwork/app" + abci "github.com/tendermint/tendermint/abci/types" +) + +// BaseAppParamManager defines an interrace that BaseApp is expected to fullfil +// that allows upgrade handlers to modify BaseApp parameters. +type BaseAppParamManager interface { + GetConsensusParams(ctx sdk.Context) *abci.ConsensusParams + StoreConsensusParams(ctx sdk.Context, cp *abci.ConsensusParams) +} + +// Upgrade defines a struct containing necessary fields that a SoftwareUpgradeProposal +// must have written, in order for the state migration to go smoothly. +// An upgrade must implement this struct, and then set it in the app.go. +// The app.go will then define the handler. +type Upgrade struct { + // Upgrade version name, for the upgrade handler, e.g. `v1.4` + UpgradeName string + + // CreateUpgradeHandler defines the function that creates an upgrade handler + // mm *module.Manager, computeModule *computetypes.AppModule, configurator module.Configurator + CreateUpgradeHandler func(*module.Manager, *app.SecretNetworkApp, module.Configurator) upgradetypes.UpgradeHandler + + // Store upgrades, should be used for any new modules introduced, new modules deleted, or store names renamed. + StoreUpgrades store.StoreUpgrades +} diff --git a/app/upgrades/v1.3/upgrades.go b/app/upgrades/v1.3/upgrades.go index 41af2fca0..9f6f1844f 100644 --- a/app/upgrades/v1.3/upgrades.go +++ b/app/upgrades/v1.3/upgrades.go @@ -1,6 +1,7 @@ package v1_3 import ( + store "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" @@ -8,11 +9,21 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types" icahosttypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types" icatypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types" + "github.com/enigmampc/SecretNetwork/app" + "github.com/enigmampc/SecretNetwork/app/upgrades" ) +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: store.StoreUpgrades{ + Added: []string{icahosttypes.StoreKey}, + }, +} + const UpgradeName = "v1.3" -func CreateUpgradeHandler(mm *module.Manager, icamodule *icamodule.AppModule, configurator module.Configurator, +func CreateUpgradeHandler(mm *module.Manager, _ *app.SecretNetworkApp, configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { // Assaf: Set version map for all modules because for some @@ -20,11 +31,12 @@ func CreateUpgradeHandler(mm *module.Manager, icamodule *icamodule.AppModule, co // We upgrade from cosmos-sdk v0.44.5 to v0.45.4 and ibc-go v1.1.5 to v3.0.0 // There were no ConsensusVersion changes between these versions // so we should be safe to use the curent ConsensusVersion() for each moudle + for moduleName := range mm.Modules { vm[moduleName] = mm.Modules[moduleName].ConsensusVersion() } - vm[icatypes.ModuleName] = icamodule.ConsensusVersion() + vm[icatypes.ModuleName] = mm.Modules[icatypes.ModuleName].ConsensusVersion() // create ICS27 Controller submodule params controllerParams := icacontrollertypes.Params{ @@ -60,7 +72,15 @@ func CreateUpgradeHandler(mm *module.Manager, icamodule *icamodule.AppModule, co ctx.Logger().Info("Starting to init interchainaccount module...") // initialize ICS27 module - icamodule.InitModule(ctx, controllerParams, hostParams) + // icamodule.InitModule(ctx, controllerParams, hostParams) + + // initialize ICS27 module + icamoduleInstance, correctTypecast := mm.Modules[icatypes.ModuleName].(icamodule.AppModule) + if !correctTypecast { + panic("mm.Modules[icatypes.ModuleName] is not of type ica.AppModule") + } + + icamoduleInstance.InitModule(ctx, controllerParams, hostParams) ctx.Logger().Info("Starting to run module migrations...") diff --git a/app/upgrades/v1.4/upgrades.go b/app/upgrades/v1.4/upgrades.go new file mode 100644 index 000000000..a9ef64719 --- /dev/null +++ b/app/upgrades/v1.4/upgrades.go @@ -0,0 +1,36 @@ +package v1_4 + +import ( + store "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + "github.com/enigmampc/SecretNetwork/app" + "github.com/enigmampc/SecretNetwork/app/upgrades" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + CreateUpgradeHandler: CreateUpgradeHandler, + StoreUpgrades: store.StoreUpgrades{}, +} + +const UpgradeName = "v1.4" + +func CreateUpgradeHandler(mm *module.Manager, _ *app.SecretNetworkApp, configurator module.Configurator, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + // Assaf: Set version map for all modules because for some + // reason it's not already set in upgradekeepr. + // We upgrade from cosmos-sdk v0.44.5 to v0.45.4 and ibc-go v1.1.5 to v3.0.0 + // There were no ConsensusVersion changes between these versions + // so we should be safe to use the curent ConsensusVersion() for each moudle + for moduleName := range mm.Modules { + vm[moduleName] = mm.Modules[moduleName].ConsensusVersion() + } + + ctx.Logger().Info("Starting to run module migrations...") + + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/x/compute/internal/keeper/migrations.go b/x/compute/internal/keeper/migrations.go new file mode 100644 index 000000000..329f83e91 --- /dev/null +++ b/x/compute/internal/keeper/migrations.go @@ -0,0 +1,21 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + v2 "github.com/enigmampc/SecretNetwork/x/compute/migrations/v2" +) + +// Migrator is a struct for handling in-place store migrations. +type Migrator struct { + keeper Keeper +} + +// NewMigrator returns a new Migrator. +func NewMigrator(keeper Keeper) Migrator { + return Migrator{keeper: keeper} +} + +// Migrate1to2 migrates from version 1 to 2. +func (m Migrator) Migrate1to2(ctx sdk.Context) error { + return v2.MigrateStore(ctx, m.keeper.storeKey, m.keeper.cdc) +} diff --git a/x/compute/migrations/v1/types.go b/x/compute/migrations/v1/types.go new file mode 100644 index 000000000..80461c8cc --- /dev/null +++ b/x/compute/migrations/v1/types.go @@ -0,0 +1,3 @@ +package v1 + +// if needed legacy types go here diff --git a/x/compute/migrations/v2/store.go b/x/compute/migrations/v2/store.go new file mode 100644 index 000000000..875caf186 --- /dev/null +++ b/x/compute/migrations/v2/store.go @@ -0,0 +1,28 @@ +package v2 + +import ( + "github.com/cosmos/cosmos-sdk/codec" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// migrateSomething migrates the supply to be stored by denom key instead in a +// single blob. +// ref: https://github.com/cosmos/cosmos-sdk/issues/7092 +func migrateSomething(store sdk.KVStore, cdc codec.BinaryCodec) error { + return nil +} + +// MigrateStore performs in-place store migrations from v1 to v2. The +// migration includes: +// +// +func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { + store := ctx.KVStore(storeKey) + + if err := migrateSomething(store, cdc); err != nil { + return err + } + + return nil +} diff --git a/x/compute/module.go b/x/compute/module.go index a593250dc..5210a8d97 100644 --- a/x/compute/module.go +++ b/x/compute/module.go @@ -3,6 +3,7 @@ package compute import ( "context" "encoding/json" + "fmt" "math/rand" "github.com/gorilla/mux" @@ -100,10 +101,16 @@ func NewAppModule(keeper Keeper) AppModule { } // ConsensusVersion implements AppModule/ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 1 } +func (AppModule) ConsensusVersion() uint64 { return 2 } func (am AppModule) RegisterServices(configurator module.Configurator) { types.RegisterQueryServer(configurator.QueryServer(), NewQuerier(am.keeper)) + + m := keeper.NewMigrator(am.keeper) + if err := configurator.RegisterMigration(types.ModuleName, 1, m.Migrate1to2); err != nil { + panic(fmt.Sprintf("failed to migrate x/bank from version 1 to 2: %v", err)) + } + } func (am AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { From 05fb57b92f71e6158c846332160bef84915feec7 Mon Sep 17 00:00:00 2001 From: Itzik Date: Sun, 4 Sep 2022 23:35:57 +0300 Subject: [PATCH 02/11] Fixed dependencies so it actually compiles and can be tested now --- app/app.go | 1 - app/upgrades/types.go | 3 +-- app/upgrades/v1.3/upgrades.go | 3 +-- app/upgrades/v1.4/upgrades.go | 3 +-- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/app.go b/app/app.go index a3f60ccda..90f0d4367 100644 --- a/app/app.go +++ b/app/app.go @@ -756,7 +756,6 @@ func (app *SecretNetworkApp) setupUpgradeHandlers(icamodule *ica.AppModule) { upgradeDetails.UpgradeName, upgradeDetails.CreateUpgradeHandler( app.mm, - app, app.configurator, ), ) diff --git a/app/upgrades/types.go b/app/upgrades/types.go index eef657eb7..595f21932 100644 --- a/app/upgrades/types.go +++ b/app/upgrades/types.go @@ -5,7 +5,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/enigmampc/SecretNetwork/app" abci "github.com/tendermint/tendermint/abci/types" ) @@ -26,7 +25,7 @@ type Upgrade struct { // CreateUpgradeHandler defines the function that creates an upgrade handler // mm *module.Manager, computeModule *computetypes.AppModule, configurator module.Configurator - CreateUpgradeHandler func(*module.Manager, *app.SecretNetworkApp, module.Configurator) upgradetypes.UpgradeHandler + CreateUpgradeHandler func(*module.Manager, module.Configurator) upgradetypes.UpgradeHandler // Store upgrades, should be used for any new modules introduced, new modules deleted, or store names renamed. StoreUpgrades store.StoreUpgrades diff --git a/app/upgrades/v1.3/upgrades.go b/app/upgrades/v1.3/upgrades.go index 9f6f1844f..ba76c3a7b 100644 --- a/app/upgrades/v1.3/upgrades.go +++ b/app/upgrades/v1.3/upgrades.go @@ -9,7 +9,6 @@ import ( icacontrollertypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types" icahosttypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types" icatypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types" - "github.com/enigmampc/SecretNetwork/app" "github.com/enigmampc/SecretNetwork/app/upgrades" ) @@ -23,7 +22,7 @@ var Upgrade = upgrades.Upgrade{ const UpgradeName = "v1.3" -func CreateUpgradeHandler(mm *module.Manager, _ *app.SecretNetworkApp, configurator module.Configurator, +func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { // Assaf: Set version map for all modules because for some diff --git a/app/upgrades/v1.4/upgrades.go b/app/upgrades/v1.4/upgrades.go index a9ef64719..0e894211c 100644 --- a/app/upgrades/v1.4/upgrades.go +++ b/app/upgrades/v1.4/upgrades.go @@ -5,7 +5,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/enigmampc/SecretNetwork/app" "github.com/enigmampc/SecretNetwork/app/upgrades" ) @@ -17,7 +16,7 @@ var Upgrade = upgrades.Upgrade{ const UpgradeName = "v1.4" -func CreateUpgradeHandler(mm *module.Manager, _ *app.SecretNetworkApp, configurator module.Configurator, +func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { // Assaf: Set version map for all modules because for some From 7d2767450ac050c739b21b141c697375d2737cee Mon Sep 17 00:00:00 2001 From: Itzik Date: Mon, 5 Sep 2022 00:57:35 +0300 Subject: [PATCH 03/11] Fixed dependencies so it actually compiles and can be tested now --- deployment/docker/devimage/bootstrap_init_no_stop.sh | 0 scripts/protoc-swagger-openapi-gen.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 deployment/docker/devimage/bootstrap_init_no_stop.sh mode change 100755 => 100644 scripts/protoc-swagger-openapi-gen.sh diff --git a/deployment/docker/devimage/bootstrap_init_no_stop.sh b/deployment/docker/devimage/bootstrap_init_no_stop.sh old mode 100755 new mode 100644 diff --git a/scripts/protoc-swagger-openapi-gen.sh b/scripts/protoc-swagger-openapi-gen.sh old mode 100755 new mode 100644 From 2a83cbbb2a3445269d45f703c257100127a56a0b Mon Sep 17 00:00:00 2001 From: Itzik Date: Mon, 5 Sep 2022 01:02:00 +0300 Subject: [PATCH 04/11] Consensus version = 1 --- x/compute/module.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/compute/module.go b/x/compute/module.go index 71f54ab54..18359f4b4 100644 --- a/x/compute/module.go +++ b/x/compute/module.go @@ -101,7 +101,7 @@ func NewAppModule(keeper Keeper) AppModule { } // ConsensusVersion implements AppModule/ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 2 } +func (AppModule) ConsensusVersion() uint64 { return 1 } func (am AppModule) RegisterServices(configurator module.Configurator) { types.RegisterMsgServer(configurator.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) From 8690d897fed268e0ddd8586de291711cb7e6d388 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 13:41:45 +0300 Subject: [PATCH 05/11] Remove admin & history stuff --- go-cosmwasm/types/queries.go | 10 - x/compute/alias.go | 3 - x/compute/client/cli/gov_tx.go | 297 ---------------- x/compute/client/cli/new_tx.go | 138 -------- x/compute/client/cli/tx.go | 1 - x/compute/client/proposal_handler.go | 18 - x/compute/client/proposal_handler_test.go | 236 ------------- x/compute/client/rest/gov.go | 272 --------------- x/compute/client/rest/query.go | 25 -- x/compute/client/rest/tx.go | 2 - x/compute/handler.go | 51 --- x/compute/internal/keeper/keeper_test.go | 406 +--------------------- x/compute/internal/keeper/querier_test.go | 106 +----- x/compute/internal/keeper/test_common.go | 2 +- x/compute/internal/keeper/test_fuzz.go | 37 +- x/compute/internal/types/msg_test.go | 209 ----------- x/compute/internal/types/test_fixtures.go | 132 ------- x/compute/internal/types/types.go | 12 - x/compute/internal/types/types_test.go | 10 - 19 files changed, 6 insertions(+), 1961 deletions(-) delete mode 100644 x/compute/client/cli/gov_tx.go delete mode 100644 x/compute/client/cli/new_tx.go delete mode 100644 x/compute/client/proposal_handler.go delete mode 100644 x/compute/client/proposal_handler_test.go delete mode 100644 x/compute/client/rest/gov.go diff --git a/go-cosmwasm/types/queries.go b/go-cosmwasm/types/queries.go index 65d8f4e24..c124f3c7f 100644 --- a/go-cosmwasm/types/queries.go +++ b/go-cosmwasm/types/queries.go @@ -264,16 +264,6 @@ type ContractInfoQuery struct { ContractAddr string `json:"contract_addr"` } -type ContractInfoResponse struct { - CodeID uint64 `json:"code_id"` - Creator string `json:"creator"` - // Set to the admin who can migrate contract, if any - Admin string `json:"admin,omitempty"` - Pinned bool `json:"pinned"` - // Set if the contract is IBC enabled - IBCPort string `json:"ibc_port,omitempty"` -} - type DistQuery struct { Rewards *RewardsQuery `json:"rewards,omitempty"` } diff --git a/x/compute/alias.go b/x/compute/alias.go index ef4a5b04c..7a62c86ac 100644 --- a/x/compute/alias.go +++ b/x/compute/alias.go @@ -128,7 +128,4 @@ type ( QueryHandler = keeper.QueryHandler CustomQuerier = keeper.CustomQuerier QueryPlugins = keeper.QueryPlugins - // MsgMigrateContract = types.MsgMigrateContract - // MsgUpdateAdmin = types.MsgUpdateAdmin - // MsgClearAdmin = types.MsgClearAdmin ) diff --git a/x/compute/client/cli/gov_tx.go b/x/compute/client/cli/gov_tx.go deleted file mode 100644 index 808936a1d..000000000 --- a/x/compute/client/cli/gov_tx.go +++ /dev/null @@ -1,297 +0,0 @@ -package cli - -/* -import ( - "bufio" - - "github.com/enigmampc/SecretNetwork/x/compute/internal/types" - "github.com/cosmos/cosmos-sdk/client/context" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/client/utils" - "github.com/cosmos/cosmos-sdk/x/gov/client/cli" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/pkg/errors" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -func ProposalStoreCodeCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "wasm-store [wasm file] --source [source] --builder [builder] --title [text] --description [text] --run-as [address]", - Short: "Submit a wasm binary proposal", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - src, err := parseStoreCodeArgs(args, cliCtx) - if err != nil { - return err - } - if len(viper.GetString(flagRunAs)) == 0 { - return errors.New("run-as address is required") - } - runAsAddr, err := sdk.AccAddressFromBech32(viper.GetString(flagRunAs)) - if err != nil { - return errors.Wrap(err, "run-as") - } - content := types.StoreCodeProposal{ - WasmProposal: types.WasmProposal{ - Title: viper.GetString(cli.FlagTitle), - Description: viper.GetString(cli.FlagDescription), - }, - RunAs: runAsAddr, - WASMByteCode: src.WASMByteCode, - Source: src.Source, - Builder: src.Builder, - InstantiatePermission: src.InstantiatePermission, - } - - deposit, err := sdk.ParseCoins(viper.GetString(cli.FlagDeposit)) - if err != nil { - return err - } - - msg := govtypes.NewMsgSubmitProposal(content, deposit, cliCtx.GetFromAddress()) - if err = msg.ValidateBasic(); err != nil { - return err - } - - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - - cmd.Flags().String(flagSource, "", "A valid URI reference to the contract's source code, optional") - cmd.Flags().String(flagBuilder, "", "A valid docker tag for the build system, optional") - cmd.Flags().String(flagRunAs, "", "The address that is stored as code creator") - cmd.Flags().String(flagInstantiateByEverybody, "", "Everybody can instantiate a contract from the code, optional") - cmd.Flags().String(flagInstantiateByAddress, "", "Only this address can instantiate a contract instance from the code, optional") - - // proposal flags - cmd.Flags().String(cli.FlagTitle, "", "Title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "Description of proposal") - cmd.Flags().String(cli.FlagDeposit, "", "Deposit of proposal") - cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") - // type values must match the "ProposalHandler" "routes" in cli - cmd.Flags().String(flagProposalType, "", "Type of proposal, types: store-code/instantiate/migrate/update-admin/clear-admin/text/parameter_change/software_upgrade") - return cmd -} - -func ProposalInstantiateContractCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "instantiate-contract [code_id_int64] [json_encoded_init_args] --label [text] --title [text] --description [text] --run-as [address] --admin [address,optional] --amount [coins,optional]", - Short: "Submit an instantiate wasm contract proposal", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - src, err := parseInstantiateArgs(args, cliCtx) - if err != nil { - return err - } - if len(viper.GetString(flagRunAs)) == 0 { - return errors.New("creator address is required") - } - creator, err := sdk.AccAddressFromBech32(viper.GetString(flagRunAs)) - if err != nil { - return errors.Wrap(err, "creator") - } - content := types.InstantiateContractProposal{ - WasmProposal: types.WasmProposal{ - Title: viper.GetString(cli.FlagTitle), - Description: viper.GetString(cli.FlagDescription), - }, - RunAs: creator, - Admin: src.Admin, - CodeID: src.CodeID, - Label: src.Label, - InitMsg: src.InitMsg, - InitFunds: src.InitFunds, - } - - deposit, err := sdk.ParseCoins(viper.GetString(cli.FlagDeposit)) - if err != nil { - return err - } - - msg := govtypes.NewMsgSubmitProposal(content, deposit, cliCtx.GetFromAddress()) - if err = msg.ValidateBasic(); err != nil { - return err - } - - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - cmd.Flags().String(flagAmount, "", "Coins to send to the contract during instantiation") - cmd.Flags().String(flagLabel, "", "A human-readable name for this contract in lists") - cmd.Flags().String(flagAdmin, "", "Address of an admin") - cmd.Flags().String(flagRunAs, "", "The address that pays the init funds. It is the creator of the contract and passed to the contract as sender on proposal execution") - - // proposal flags - cmd.Flags().String(cli.FlagTitle, "", "Title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "Description of proposal") - cmd.Flags().String(cli.FlagDeposit, "", "Deposit of proposal") - cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") - // type values must match the "ProposalHandler" "routes" in cli - cmd.Flags().String(flagProposalType, "", "Type of proposal, types: store-code/instantiate/migrate/update-admin/clear-admin/text/parameter_change/software_upgrade") - return cmd -} - -func ProposalMigrateContractCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "migrate-contract [contract_addr_bech32] [new_code_id_int64] [json_encoded_migration_args]", - Short: "Submit a migrate wasm contract to a new code version proposal", - Args: cobra.ExactArgs(3), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - src, err := parseMigrateContractArgs(args, cliCtx) - if err != nil { - return err - } - - if len(viper.GetString(flagRunAs)) == 0 { - return errors.New("run-as address is required") - } - runAs, err := sdk.AccAddressFromBech32(viper.GetString(flagRunAs)) - if err != nil { - return errors.Wrap(err, "run-as") - } - - content := types.MigrateContractProposal{ - WasmProposal: types.WasmProposal{ - Title: viper.GetString(cli.FlagTitle), - Description: viper.GetString(cli.FlagDescription), - }, - Contract: src.Contract, - CodeID: src.CodeID, - MigrateMsg: src.MigrateMsg, - RunAs: runAs, - } - - deposit, err := sdk.ParseCoins(viper.GetString(cli.FlagDeposit)) - if err != nil { - return err - } - - msg := govtypes.NewMsgSubmitProposal(content, deposit, cliCtx.GetFromAddress()) - if err = msg.ValidateBasic(); err != nil { - return err - } - - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - cmd.Flags().String(flagRunAs, "", "The address that is passed as sender to the contract on proposal execution") - - // proposal flags - cmd.Flags().String(cli.FlagTitle, "", "Title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "Description of proposal") - cmd.Flags().String(cli.FlagDeposit, "", "Deposit of proposal") - cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") - // type values must match the "ProposalHandler" "routes" in cli - cmd.Flags().String(flagProposalType, "", "Type of proposal, types: store-code/instantiate/migrate/update-admin/clear-admin/text/parameter_change/software_upgrade") - return cmd -} - -func ProposalUpdateContractAdminCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "set-contract-admin [contract_addr_bech32] [new_admin_addr_bech32]", - Short: "Submit a new admin for a contract proposal", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - src, err := parseUpdateContractAdminArgs(args, cliCtx) - if err != nil { - return err - } - - content := types.UpdateAdminProposal{ - WasmProposal: types.WasmProposal{ - Title: viper.GetString(cli.FlagTitle), - Description: viper.GetString(cli.FlagDescription), - }, - Contract: src.Contract, - NewAdmin: src.NewAdmin, - } - - deposit, err := sdk.ParseCoins(viper.GetString(cli.FlagDeposit)) - if err != nil { - return err - } - - msg := govtypes.NewMsgSubmitProposal(content, deposit, cliCtx.GetFromAddress()) - if err = msg.ValidateBasic(); err != nil { - return err - } - - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - // proposal flags - cmd.Flags().String(cli.FlagTitle, "", "Title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "Description of proposal") - cmd.Flags().String(cli.FlagDeposit, "", "Deposit of proposal") - cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") - // type values must match the "ProposalHandler" "routes" in cli - cmd.Flags().String(flagProposalType, "", "Type of proposal, types: store-code/instantiate/migrate/update-admin/clear-admin/text/parameter_change/software_upgrade") - return cmd -} - -func ProposalClearContractAdminCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "clear-contract-admin [contract_addr_bech32]", - Short: "Submit a clear admin for a contract to prevent further migrations proposal", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - contractAddr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - return sdkerrors.Wrap(err, "contract") - } - - content := types.ClearAdminProposal{ - WasmProposal: types.WasmProposal{ - Title: viper.GetString(cli.FlagTitle), - Description: viper.GetString(cli.FlagDescription), - }, - Contract: contractAddr, - } - - deposit, err := sdk.ParseCoins(viper.GetString(cli.FlagDeposit)) - if err != nil { - return err - } - - msg := govtypes.NewMsgSubmitProposal(content, deposit, cliCtx.GetFromAddress()) - if err = msg.ValidateBasic(); err != nil { - return err - } - - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - // proposal flags - cmd.Flags().String(cli.FlagTitle, "", "Title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "Description of proposal") - cmd.Flags().String(cli.FlagDeposit, "", "Deposit of proposal") - cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") - // type values must match the "ProposalHandler" "routes" in cli - cmd.Flags().String(flagProposalType, "", "Type of proposal, types: store-code/instantiate/migrate/update-admin/clear-admin/text/parameter_change/software_upgrade") - return cmd -} -*/ diff --git a/x/compute/client/cli/new_tx.go b/x/compute/client/cli/new_tx.go deleted file mode 100644 index 0520b283e..000000000 --- a/x/compute/client/cli/new_tx.go +++ /dev/null @@ -1,138 +0,0 @@ -package cli - -/* -import ( - "bufio" - "strconv" - - "github.com/enigmampc/SecretNetwork/x/compute/internal/types" - "github.com/cosmos/cosmos-sdk/client/context" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/client/utils" - "github.com/spf13/cobra" -) - -// MigrateContractCmd will migrate a contract to a new code version -// NO SUPPORT FOR THIS COMMAND YET -func MigrateContractCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "migrate [contract_addr_bech32] [new_code_id_int64] [json_encoded_migration_args]", - Short: "Migrate a wasm contract to a new code version", - Args: cobra.ExactArgs(3), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - msg, err := parseMigrateContractArgs(args, cliCtx) - if err != nil { - return err - } - if err := msg.ValidateBasic(); err != nil { - return nil - } - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - return cmd -} - -func parseMigrateContractArgs(args []string, cliCtx context.CLIContext) (types.MsgMigrateContract, error) { - contractAddr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - return types.MsgMigrateContract{}, sdkerrors.Wrap(err, "contract") - } - - // get the id of the code to instantiate - codeID, err := strconv.ParseUint(args[1], 10, 64) - if err != nil { - return types.MsgMigrateContract{}, sdkerrors.Wrap(err, "code id") - } - - migrateMsg := args[2] - - msg := types.MsgMigrateContract{ - Sender: cliCtx.GetFromAddress(), - Contract: contractAddr, - CodeID: codeID, - MigrateMsg: []byte(migrateMsg), - } - return msg, nil -} - -// UpdateContractAdminCmd sets an new admin for a contract -// NO SUPPORT FOR THIS COMMAND YET -func UpdateContractAdminCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "set-contract-admin [contract_addr_bech32] [new_admin_addr_bech32]", - Short: "Set new admin for a contract", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - msg, err := parseUpdateContractAdminArgs(args, cliCtx) - if err != nil { - return err - } - if err := msg.ValidateBasic(); err != nil { - return err - } - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - return cmd -} - -func parseUpdateContractAdminArgs(args []string, cliCtx context.CLIContext) (types.MsgUpdateAdmin, error) { - contractAddr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - return types.MsgUpdateAdmin{}, sdkerrors.Wrap(err, "contract") - } - newAdmin, err := sdk.AccAddressFromBech32(args[1]) - if err != nil { - return types.MsgUpdateAdmin{}, sdkerrors.Wrap(err, "new admin") - } - - msg := types.MsgUpdateAdmin{ - Sender: cliCtx.GetFromAddress(), - Contract: contractAddr, - NewAdmin: newAdmin, - } - return msg, nil -} - -// ClearContractAdminCmd clears an admin for a contract -// NO SUPPORT FOR THIS COMMAND YET -func ClearContractAdminCmd(cdc *codec.Codec) *cobra.Command { - cmd := &cobra.Command{ - Use: "clear-contract-admin [contract_addr_bech32]", - Short: "Clears admin for a contract to prevent further migrations", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - inBuf := bufio.NewReader(cmd.InOrStdin()) - txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) - cliCtx := context.NewCLIContextWithInput(inBuf).WithCodec(cdc) - - contractAddr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - return sdkerrors.Wrap(err, "contract") - } - - msg := types.MsgClearAdmin{ - Sender: cliCtx.GetFromAddress(), - Contract: contractAddr, - } - if err := msg.ValidateBasic(); err != nil { - return err - } - return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) - }, - } - return cmd -} -*/ diff --git a/x/compute/client/cli/tx.go b/x/compute/client/cli/tx.go index 935096789..8fe9b1f2a 100644 --- a/x/compute/client/cli/tx.go +++ b/x/compute/client/cli/tx.go @@ -147,7 +147,6 @@ func InstantiateContractCmd() *cobra.Command { "io-master-cert.der file, which you can get using the command `secretcli q register secret-network-params` ") cmd.Flags().String(flagAmount, "", "Coins to send to the contract during instantiation") cmd.Flags().String(flagLabel, "", "A human-readable name for this contract in lists") - // cmd.Flags().String(flagAdmin, "", "Address of an admin") flags.AddTxFlagsToCmd(cmd) return cmd } diff --git a/x/compute/client/proposal_handler.go b/x/compute/client/proposal_handler.go deleted file mode 100644 index 0e171d952..000000000 --- a/x/compute/client/proposal_handler.go +++ /dev/null @@ -1,18 +0,0 @@ -package client - -/* -import ( - "github.com/enigmampc/SecretNetwork/x/compute/client/cli" - "github.com/enigmampc/SecretNetwork/x/compute/client/rest" - govclient "github.com/cosmos/cosmos-sdk/x/gov/client" -) - -// ProposalHandlers define the wasm cli proposal types and rest handler. -var ProposalHandlers = []govclient.ProposalHandler{ - govclient.NewProposalHandler(cli.ProposalStoreCodeCmd, rest.StoreCodeProposalHandler), - govclient.NewProposalHandler(cli.ProposalInstantiateContractCmd, rest.InstantiateProposalHandler), - govclient.NewProposalHandler(cli.ProposalMigrateContractCmd, rest.MigrateProposalHandler), - govclient.NewProposalHandler(cli.ProposalUpdateContractAdminCmd, rest.UpdateContractAdminProposalHandler), - govclient.NewProposalHandler(cli.ProposalClearContractAdminCmd, rest.ClearContractAdminProposalHandler), -} -*/ diff --git a/x/compute/client/proposal_handler_test.go b/x/compute/client/proposal_handler_test.go deleted file mode 100644 index d219f1bda..000000000 --- a/x/compute/client/proposal_handler_test.go +++ /dev/null @@ -1,236 +0,0 @@ -package client - -/* -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - "net/http/httptest" - "testing" - - wasmtypes "github.com/enigmampc/SecretNetwork/x/compute/internal/types" - "github.com/cosmos/cosmos-sdk/client/context" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - authvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting" - "github.com/cosmos/cosmos-sdk/x/gov" - "github.com/gorilla/mux" - "github.com/stretchr/testify/require" -) - -func TestGovRestHandlers(t *testing.T) { - type dict map[string]interface{} - var ( - anyAddress = "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz" - aBaseReq = dict{ - "from": anyAddress, - "memo": "rest test", - "chain_id": "testing", - "account_number": "1", - "sequence": "1", - "fees": []dict{{"denom": "ustake", "amount": "1000000"}}, - } - ) - cdc := MakeCodec() - clientCtx := context.CLIContext{}.WithChainID("testing").WithCodec(cdc) - - // router setup as in gov/client/rest/tx.go - propSubRtr := mux.NewRouter().PathPrefix("/gov/proposals").Subrouter() - for _, ph := range ProposalHandlers { - r := ph.RESTHandler(clientCtx) - propSubRtr.HandleFunc(fmt.Sprintf("/%s", r.SubRoute), r.Handler).Methods("POST") - } - - specs := map[string]struct { - srcBody dict - srcPath string - expCode int - }{ - "store-code": { - srcPath: "/gov/proposals/wasm_store_code", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "store-code", - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "wasm_byte_code": []byte("valid wasm byte code"), - "source": "https://example.com/", - "builder": "my/builder:tag", - "instantiate_permission": dict{ - "permission": "OnlyAddress", - "address": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - }, - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusOK, - }, - "store-code without permission": { - srcPath: "/gov/proposals/wasm_store_code", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "store-code", - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "wasm_byte_code": []byte("valid wasm byte code"), - "source": "https://example.com/", - "builder": "my/builder:tag", - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusOK, - }, - "store-code invalid permission": { - srcPath: "/gov/proposals/wasm_store_code", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "store-code", - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "wasm_byte_code": []byte("valid wasm byte code"), - "source": "https://example.com/", - "builder": "my/builder:tag", - "instantiate_permission": dict{ - "permission": "Nobody", - "address": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - }, - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusBadRequest, - }, - "store-code with incomplete proposal data: blank title": { - srcPath: "/gov/proposals/wasm_store_code", - srcBody: dict{ - "title": "", - "description": "My proposal", - "type": "store-code", - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "wasm_byte_code": []byte("valid wasm byte code"), - "source": "https://example.com/", - "builder": "my/builder:tag", - "instantiate_permission": dict{ - "permission": "OnlyAddress", - "address": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - }, - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusBadRequest, - }, - "store-code with incomplete content data: no wasm_byte_code": { - srcPath: "/gov/proposals/wasm_store_code", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "store-code", - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "wasm_byte_code": "", - "source": "https://example.com/", - "builder": "my/builder:tag", - "instantiate_permission": dict{ - "permission": "OnlyAddress", - "address": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - }, - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusBadRequest, - }, - "instantiate contract": { - srcPath: "/gov/proposals/wasm_instantiate", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "instantiate", - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "admin": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "code_id": "1", - "label": "https://example.com/", - "init_msg": "my/builder:tag", - "init_funds": []dict{{"denom": "ustake", "amount": "100"}}, - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusOK, - }, - "migrate contract": { - srcPath: "/gov/proposals/wasm_migrate", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "migrate", - "contract": "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5", - "code_id": "1", - "msg": dict{"foo": "bar"}, - "run_as": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusOK, - }, - "update contract admin": { - srcPath: "/gov/proposals/wasm_update_admin", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "migrate", - "contract": "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5", - "new_admin": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz", - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusOK, - }, - "clear contract admin": { - srcPath: "/gov/proposals/wasm_clear_admin", - srcBody: dict{ - "title": "Test Proposal", - "description": "My proposal", - "type": "migrate", - "contract": "cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5", - "deposit": []dict{{"denom": "ustake", "amount": "10"}}, - "proposer": "cosmos1ve557a5g9yw2g2z57js3pdmcvd5my6g8ze20np", - "base_req": aBaseReq, - }, - expCode: http.StatusOK, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - src, err := json.Marshal(spec.srcBody) - require.NoError(t, err) - - // when - r := httptest.NewRequest("POST", spec.srcPath, bytes.NewReader(src)) - w := httptest.NewRecorder() - propSubRtr.ServeHTTP(w, r) - - // then - require.Equal(t, spec.expCode, w.Code, w.Body.String()) - }) - } -} - -func MakeCodec() *codec.Codec { - var cdc = codec.New() - wasmtypes.RegisterCodec(cdc) - gov.RegisterCodec(cdc) - sdk.RegisterCodec(cdc) - codec.RegisterCrypto(cdc) - codec.RegisterEvidences(cdc) - authvesting.RegisterCodec(cdc) - - return cdc.Seal() - -} -*/ diff --git a/x/compute/client/rest/gov.go b/x/compute/client/rest/gov.go deleted file mode 100644 index 98c1f2b85..000000000 --- a/x/compute/client/rest/gov.go +++ /dev/null @@ -1,272 +0,0 @@ -package rest - -/* -import ( - "encoding/json" - "net/http" - - "github.com/enigmampc/SecretNetwork/x/compute/internal/types" - "github.com/cosmos/cosmos-sdk/client/context" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/rest" - "github.com/cosmos/cosmos-sdk/x/auth/client/utils" - "github.com/cosmos/cosmos-sdk/x/gov" - govrest "github.com/cosmos/cosmos-sdk/x/gov/client/rest" -) - -type StoreCodeProposalJsonReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - - RunAs sdk.AccAddress `json:"run_as" yaml:"run_as"` - // WASMByteCode can be raw or gzip compressed - WASMByteCode []byte `json:"wasm_byte_code" yaml:"wasm_byte_code"` - // Source is a valid absolute HTTPS URI to the contract's source code, optional - Source string `json:"source" yaml:"source"` - // Builder is a valid docker image name with tag, optional - Builder string `json:"builder" yaml:"builder"` - // InstantiatePermission to apply on contract creation, optional - InstantiatePermission *types.AccessConfig `json:"instantiate_permission" yaml:"instantiate_permission"` -} - -func (s StoreCodeProposalJsonReq) Content() gov.Content { - return types.StoreCodeProposal{ - WasmProposal: types.WasmProposal{ - Title: s.Title, - Description: s.Description, - }, - RunAs: s.RunAs, - WASMByteCode: s.WASMByteCode, - Source: s.Source, - Builder: s.Builder, - InstantiatePermission: s.InstantiatePermission, - } -} -func (s StoreCodeProposalJsonReq) GetProposer() sdk.AccAddress { - return s.Proposer -} -func (s StoreCodeProposalJsonReq) GetDeposit() sdk.Coins { - return s.Deposit -} -func (s StoreCodeProposalJsonReq) GetBaseReq() rest.BaseReq { - return s.BaseReq -} - -func StoreCodeProposalHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: "wasm_store_code", - Handler: func(w http.ResponseWriter, r *http.Request) { - var req StoreCodeProposalJsonReq - if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { - return - } - toStdTxResponse(cliCtx, w, req) - }, - } -} - -type InstantiateProposalJsonReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - - Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - - RunAs sdk.AccAddress `json:"run_as" yaml:"run_as"` - // Admin is an optional address that can execute migrations - Admin sdk.AccAddress `json:"admin,omitempty" yaml:"admin"` - Code uint64 `json:"code_id" yaml:"code_id"` - Label string `json:"label" yaml:"label"` - InitMsg json.RawMessage `json:"init_msg" yaml:"init_msg"` - InitFunds sdk.Coins `json:"init_funds" yaml:"init_funds"` -} - -func (s InstantiateProposalJsonReq) Content() gov.Content { - return types.InstantiateContractProposal{ - WasmProposal: types.WasmProposal{Title: s.Title, Description: s.Description}, - RunAs: s.RunAs, - Admin: s.Admin, - CodeID: s.Code, - Label: s.Label, - InitMsg: s.InitMsg, - InitFunds: s.InitFunds, - } -} -func (s InstantiateProposalJsonReq) GetProposer() sdk.AccAddress { - return s.Proposer -} -func (s InstantiateProposalJsonReq) GetDeposit() sdk.Coins { - return s.Deposit -} -func (s InstantiateProposalJsonReq) GetBaseReq() rest.BaseReq { - return s.BaseReq -} - -func InstantiateProposalHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: "wasm_instantiate", - Handler: func(w http.ResponseWriter, r *http.Request) { - var req InstantiateProposalJsonReq - if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { - return - } - toStdTxResponse(cliCtx, w, req) - }, - } -} - -type MigrateProposalJsonReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - - Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - - Contract sdk.AccAddress `json:"contract" yaml:"contract"` - Code uint64 `json:"code_id" yaml:"code_id"` - MigrateMsg json.RawMessage `json:"msg" yaml:"msg"` - // RunAs is the role that is passed to the contract's environment - RunAs sdk.AccAddress `json:"run_as" yaml:"run_as"` -} - -func (s MigrateProposalJsonReq) Content() gov.Content { - return types.MigrateContractProposal{ - WasmProposal: types.WasmProposal{Title: s.Title, Description: s.Description}, - Contract: s.Contract, - CodeID: s.Code, - MigrateMsg: s.MigrateMsg, - RunAs: s.RunAs, - } -} -func (s MigrateProposalJsonReq) GetProposer() sdk.AccAddress { - return s.Proposer -} -func (s MigrateProposalJsonReq) GetDeposit() sdk.Coins { - return s.Deposit -} -func (s MigrateProposalJsonReq) GetBaseReq() rest.BaseReq { - return s.BaseReq -} -func MigrateProposalHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: "wasm_migrate", - Handler: func(w http.ResponseWriter, r *http.Request) { - var req MigrateProposalJsonReq - if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { - return - } - toStdTxResponse(cliCtx, w, req) - }, - } -} - -type UpdateAdminJsonReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - - Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - - NewAdmin sdk.AccAddress `json:"new_admin" yaml:"new_admin"` - Contract sdk.AccAddress `json:"contract" yaml:"contract"` -} - -func (s UpdateAdminJsonReq) Content() gov.Content { - return types.UpdateAdminProposal{ - WasmProposal: types.WasmProposal{Title: s.Title, Description: s.Description}, - Contract: s.Contract, - NewAdmin: s.NewAdmin, - } -} -func (s UpdateAdminJsonReq) GetProposer() sdk.AccAddress { - return s.Proposer -} -func (s UpdateAdminJsonReq) GetDeposit() sdk.Coins { - return s.Deposit -} -func (s UpdateAdminJsonReq) GetBaseReq() rest.BaseReq { - return s.BaseReq -} -func UpdateContractAdminProposalHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: "wasm_update_admin", - Handler: func(w http.ResponseWriter, r *http.Request) { - var req UpdateAdminJsonReq - if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { - return - } - toStdTxResponse(cliCtx, w, req) - }, - } -} - -type ClearAdminJsonReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - - Proposer sdk.AccAddress `json:"proposer" yaml:"proposer"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - - Contract sdk.AccAddress `json:"contract" yaml:"contract"` -} - -func (s ClearAdminJsonReq) Content() gov.Content { - return types.ClearAdminProposal{ - WasmProposal: types.WasmProposal{Title: s.Title, Description: s.Description}, - Contract: s.Contract, - } -} -func (s ClearAdminJsonReq) GetProposer() sdk.AccAddress { - return s.Proposer -} -func (s ClearAdminJsonReq) GetDeposit() sdk.Coins { - return s.Deposit -} -func (s ClearAdminJsonReq) GetBaseReq() rest.BaseReq { - return s.BaseReq -} -func ClearContractAdminProposalHandler(cliCtx context.CLIContext) govrest.ProposalRESTHandler { - return govrest.ProposalRESTHandler{ - SubRoute: "wasm_clear_admin", - Handler: func(w http.ResponseWriter, r *http.Request) { - var req ClearAdminJsonReq - if !rest.ReadRESTReq(w, r, cliCtx.Codec, &req) { - return - } - toStdTxResponse(cliCtx, w, req) - }, - } -} - -type wasmProposalData interface { - Content() gov.Content - GetProposer() sdk.AccAddress - GetDeposit() sdk.Coins - GetBaseReq() rest.BaseReq -} - -func toStdTxResponse(cliCtx context.CLIContext, w http.ResponseWriter, data wasmProposalData) { - msg := gov.NewMsgSubmitProposal(data.Content(), data.GetDeposit(), data.GetProposer()) - if err := msg.ValidateBasic(); err != nil { - rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) - return - } - baseReq := data.GetBaseReq().Sanitize() - if !baseReq.ValidateBasic(w) { - return - } - utils.WriteGenerateStdTxResponse(w, cliCtx, baseReq, []sdk.Msg{msg}) -} -*/ diff --git a/x/compute/client/rest/query.go b/x/compute/client/rest/query.go index 8c582fea8..1dfaeca34 100644 --- a/x/compute/client/rest/query.go +++ b/x/compute/client/rest/query.go @@ -305,31 +305,6 @@ func queryContractHashHandlerFn(cliCtx client.Context) http.HandlerFunc { } } -/* -func queryContractHistoryFn(cliCtx context.CLIContext) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - addr, err := sdk.AccAddressFromBech32(mux.Vars(r)["contractAddr"]) - if err != nil { - rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) - return - } - cliCtx, ok := rest.ParseQueryHeightOrReturnBadRequest(w, cliCtx, r) - if !ok { - return - } - - route := fmt.Sprintf("custom/%s/%s/%s", types.QuerierRoute, keeper.QueryContractHistory, addr.String()) - res, height, err := cliCtx.Query(route) - if err != nil { - rest.WriteErrorResponse(w, http.StatusInternalServerError, err.Error()) - return - } - cliCtx = cliCtx.WithHeight(height) - rest.PostProcessResponse(w, cliCtx, json.RawMessage(res)) - } -} -*/ - type argumentDecoder struct { // dec is the default decoder dec func(string) ([]byte, error) diff --git a/x/compute/client/rest/tx.go b/x/compute/client/rest/tx.go index d630e09c9..68e65fd7c 100644 --- a/x/compute/client/rest/tx.go +++ b/x/compute/client/rest/tx.go @@ -32,7 +32,6 @@ type storeCodeReq struct { type instantiateContractReq struct { BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - // Admin sdk.AccAddress `json:"admin,omitempty" yaml:"admin"` InitMsg []byte `json:"init_msg" yaml:"init_msg"` } @@ -120,7 +119,6 @@ func instantiateContractHandlerFn(cliCtx client.Context) http.HandlerFunc { CallbackCodeHash: "", InitFunds: req.Deposit, InitMsg: req.InitMsg, - // Admin: req.Admin, } err = msg.ValidateBasic() diff --git a/x/compute/handler.go b/x/compute/handler.go index 1521b8ef1..3009828e6 100644 --- a/x/compute/handler.go +++ b/x/compute/handler.go @@ -135,54 +135,3 @@ func handleExecute(ctx sdk.Context, k Keeper, msg *MsgExecuteContract) (*sdk.Res return res, nil } - -/* -func handleMigration(ctx sdk.Context, k Keeper, msg *MsgMigrateContract) (*sdk.Result, error) { - res, err := k.Migrate(ctx, msg.Contract, msg.Sender, msg.CodeID, msg.MigrateMsg) // for MsgMigrateContract, there is only one signer which is msg.Sender (https://github.com/enigmampc/SecretNetwork/blob/d7813792fa07b93a10f0885eaa4c5e0a0a698854/x/compute/internal/types/msg.go#L228-L230) - if err != nil { - return nil, err - } - - events := filteredMessageEvents(ctx.EventManager()) - ourEvent := sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, ModuleName), - sdk.NewAttribute(types.AttributeKeySigner, msg.Sender.String()), - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract.String()), - ) - res.Events = append(events, ourEvent) - return res, nil -} - -func handleUpdateContractAdmin(ctx sdk.Context, k Keeper, msg *MsgUpdateAdmin) (*sdk.Result, error) { - if err := k.UpdateContractAdmin(ctx, msg.Contract, msg.Sender, msg.NewAdmin); err != nil { - return nil, err - } - events := ctx.EventManager().Events() - ourEvent := sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, ModuleName), - sdk.NewAttribute(types.AttributeKeySigner, msg.Sender.String()), - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract.String()), - ) - return &sdk.Result{ - Events: append(events, ourEvent), - }, nil -} - -func handleClearContractAdmin(ctx sdk.Context, k Keeper, msg *MsgClearAdmin) (*sdk.Result, error) { - if err := k.ClearContractAdmin(ctx, msg.Contract, msg.Sender); err != nil { - return nil, err - } - events := ctx.EventManager().Events() - ourEvent := sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, ModuleName), - sdk.NewAttribute(types.AttributeKeySigner, msg.Sender.String()), - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract.String()), - ) - return &sdk.Result{ - Events: append(events, ourEvent), - }, nil -} -*/ diff --git a/x/compute/internal/keeper/keeper_test.go b/x/compute/internal/keeper/keeper_test.go index ac3977fd7..46ed374c0 100644 --- a/x/compute/internal/keeper/keeper_test.go +++ b/x/compute/internal/keeper/keeper_test.go @@ -261,8 +261,7 @@ func TestInstantiate(t *testing.T) { require.NoError(t, err) instantiateMsg := types.MsgInstantiateContract{ - Sender: creator, - // Admin: nil, + Sender: creator, CodeID: contractID, Label: "demo contract 1", InitMsg: initMsgBz, @@ -294,16 +293,6 @@ func TestInstantiate(t *testing.T) { // test that creating again with the same label will fail _, _, err = keeper.Instantiate(ctx, contractID, creator /* , nil */, initMsgBz, "demo contract 1", nil, nil) require.Error(t, err) - - /* - exp := []types.ContractCodeHistoryEntry{{ - Operation: types.InitContractCodeHistoryType, - CodeID: contractID, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: json.RawMessage(initMsgBz), - }} - assert.Equal(t, exp, keeper.GetContractHistory(ctx, contractAddr)) - */ } func TestInstantiateWithDeposit(t *testing.T) { @@ -388,8 +377,7 @@ func TestInstantiateWithNonExistingCodeID(t *testing.T) { require.NoError(t, err) instantiateMsg := types.MsgInstantiateContract{ - Sender: creator, - // Admin: nil, + Sender: creator, CodeID: nonExistingCodeID, Label: "demo contract 1", InitMsg: initMsgBz, @@ -738,8 +726,7 @@ func TestExecuteWithCpuLoop(t *testing.T) { require.NoError(t, err) instantiateMsg := types.MsgInstantiateContract{ - Sender: creator, - // Admin: nil, + Sender: creator, CodeID: contractID, Label: "demo contract 1", InitMsg: msgBz, @@ -882,245 +869,6 @@ func TestExecuteWithStorageLoop(t *testing.T) { require.True(t, false, "We must panic before this line") } -/* -func TestMigrate(t *testing.T) { - t.SkipNow() // secret network does not support migrate - tempDir, err := os.MkdirTemp("", "wasm") - require.NoError(t, err) - defer os.RemoveAll(tempDir) - ctx, keepers := CreateTestInput(t, false, tempDir, SupportedFeatures, nil, nil) - accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper - - deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, _ := CreateFakeFundedAccount(ctx, accKeeper, deposit.Add(deposit...)) - fred, _ := CreateFakeFundedAccount(ctx, accKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 5000))) - - wasmCode, err := os.ReadFile("./testdata/contract.wasm") - require.NoError(t, err) - - originalCodeID, err := keeper.Create(ctx, creator, wasmCode, "", "") - require.NoError(t, err) - newCodeID, err := keeper.Create(ctx, creator, wasmCode, "", "") - require.NoError(t, err) - require.NotEqual(t, originalCodeID, newCodeID) - - _, _, anyAddr := keyPubAddr() - _, _, newVerifierAddr := keyPubAddr() - initMsg := InitMsg{ - Verifier: fred, - Beneficiary: anyAddr, - } - initMsgBz, err := json.Marshal(initMsg) - require.NoError(t, err) - initMsgBz, err = wasmCtx.Encrypt(initMsgBz) - require.NoError(t, err) - - migMsg := struct { - Verifier sdk.AccAddress `json:"verifier"` - }{Verifier: newVerifierAddr} - migMsgBz, err := json.Marshal(migMsg) - require.NoError(t, err) - - specs := map[string]struct { - admin sdk.AccAddress - overrideContractAddr sdk.AccAddress - caller sdk.AccAddress - codeID uint64 - migrateMsg []byte - expErr *sdkerrors.Error - expVerifier sdk.AccAddress - }{ - "all good with same code id": { - admin: creator, - caller: creator, - codeID: originalCodeID, - migrateMsg: migMsgBz, - expVerifier: newVerifierAddr, - }, - "all good with different code id": { - admin: creator, - caller: creator, - codeID: newCodeID, - migrateMsg: migMsgBz, - expVerifier: newVerifierAddr, - }, - "all good with admin set": { - admin: fred, - caller: fred, - codeID: newCodeID, - migrateMsg: migMsgBz, - expVerifier: newVerifierAddr, - }, - "prevent migration when admin was not set on instantiate": { - caller: creator, - codeID: originalCodeID, - expErr: sdkerrors.ErrUnauthorized, - }, - "prevent migration when not sent by admin": { - caller: creator, - admin: fred, - codeID: originalCodeID, - expErr: sdkerrors.ErrUnauthorized, - }, - "fail with non existing code id": { - admin: creator, - caller: creator, - codeID: 99999, - expErr: sdkerrors.ErrInvalidRequest, - }, - "fail with non existing contract addr": { - admin: creator, - caller: creator, - overrideContractAddr: anyAddr, - codeID: originalCodeID, - expErr: sdkerrors.ErrInvalidRequest, - }, - "fail in contract with invalid migrate msg": { - admin: creator, - caller: creator, - codeID: originalCodeID, - migrateMsg: bytes.Repeat([]byte{0x1}, 7), - expErr: types.ErrMigrationFailed, - }, - "fail in contract without migrate msg": { - admin: creator, - caller: creator, - codeID: originalCodeID, - expErr: types.ErrMigrationFailed, - }, - } - - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) - contractAddr, err := keeper.Instantiate(ctx, originalCodeID, creator, spec.admin, initMsgBz, "demo contract", nil, nil) - require.NoError(t, err) - if spec.overrideContractAddr != nil { - contractAddr = spec.overrideContractAddr - } - _, err = keeper.Migrate(ctx, contractAddr, spec.caller, spec.codeID, spec.migrateMsg) - require.True(t, spec.expErr.Is(err), "expected %v but got %+v", spec.expErr, err) - if spec.expErr != nil { - return - } - cInfo := keeper.GetContractInfo(ctx, contractAddr) - assert.Equal(t, spec.codeID, cInfo.CodeID) - - expHistory := []types.ContractCodeHistoryEntry{{ - Operation: types.InitContractCodeHistoryType, - CodeID: originalCodeID, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: initMsgBz, - }, { - Operation: types.MigrateContractCodeHistoryType, - CodeID: spec.codeID, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: spec.migrateMsg, - }} - assert.Equal(t, expHistory, keeper.GetContractHistory(ctx, contractAddr)) - - m := keeper.QueryRaw(ctx, contractAddr, []byte("config")) - require.Len(t, m, 1) - var stored map[string][]byte - require.NoError(t, json.Unmarshal(m[0].Value, &stored)) - require.Contains(t, stored, "verifier") - require.NoError(t, err) - assert.Equal(t, spec.expVerifier, sdk.AccAddress(stored["verifier"])) - }) - } -} - -func TestMigrateWithDispatchedMessage(t *testing.T) { - t.SkipNow() // secret network does not support migrate - tempDir, err := os.MkdirTemp("", "wasm") - require.NoError(t, err) - defer os.RemoveAll(tempDir) - ctx, keepers := CreateTestInput(t, false, tempDir, SupportedFeatures, nil, nil) - accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper - - deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - creator, _ := CreateFakeFundedAccount(ctx, accKeeper, deposit.Add(deposit...)) - fred, _ := CreateFakeFundedAccount(ctx, accKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 5000))) - - wasmCode, err := os.ReadFile("./testdata/contract.wasm") - require.NoError(t, err) - burnerCode, err := os.ReadFile("./testdata/burner.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "") - require.NoError(t, err) - burnerContractID, err := keeper.Create(ctx, creator, burnerCode, "", "") - require.NoError(t, err) - require.NotEqual(t, originalContractID, burnerContractID) - - _, _, myPayoutAddr := keyPubAddr() - initMsg := InitMsg{ - Verifier: fred, - Beneficiary: fred, - } - initMsgBz, err := json.Marshal(initMsg) - require.NoError(t, err) - initMsgBz, err = wasmCtx.Encrypt(initMsgBz) - require.NoError(t, err) - - ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) - contractAddr, err := keeper.Instantiate(ctx, originalContractID, creator, fred, initMsgBz, "demo contract", deposit, nil) - require.NoError(t, err) - - migMsg := struct { - Payout sdk.AccAddress `json:"payout"` - }{Payout: myPayoutAddr} - migMsgBz, err := json.Marshal(migMsg) - require.NoError(t, err) - ctx = ctx.WithEventManager(sdk.NewEventManager()).WithBlockHeight(ctx.BlockHeight() + 1) - res, err := keeper.Migrate(ctx, contractAddr, fred, burnerContractID, migMsgBz) - require.NoError(t, err) - assert.Equal(t, "burnt 1 keys", string(res.Data)) - assert.Equal(t, "", res.Log) - type dict map[string]interface{} - expEvents := []dict{ - { - "Type": "wasm", - "Attr": []dict{ - {"contract_address": contractAddr}, - {"action": "burn"}, - {"payout": myPayoutAddr}, - }, - }, - { - "Type": "transfer", - "Attr": []dict{ - {"recipient": myPayoutAddr}, - {"sender": contractAddr}, - {"amount": "100000denom"}, - }, - }, - { - "Type": "message", - "Attr": []dict{ - {"sender": contractAddr}, - }, - }, - { - "Type": "message", - "Attr": []dict{ - {"module": "bank"}, - }, - }, - } - expJsonEvts := string(mustMarshal(t, expEvents)) - assert.JSONEq(t, expJsonEvts, prettyEvents(t, ctx.EventManager().Events())) - - // all persistent data cleared - m := keeper.QueryRaw(ctx, contractAddr, []byte("config")) - require.Len(t, m, 0) - - // and all deposit tokens sent to myPayoutAddr - balance := accKeeper.GetAccount(ctx, myPayoutAddr).GetCoins() - assert.Equal(t, deposit, balance) -} -*/ - func prettyEvents(t *testing.T, events sdk.Events) string { t.Helper() type prettyEvent struct { @@ -1146,154 +894,6 @@ func mustMarshal(t *testing.T, r interface{}) []byte { return bz } -/* -func TestUpdateContractAdmin(t *testing.T) { - t.SkipNow() // secret network does not support migrate - tempDir, err := os.MkdirTemp("", "wasm") - require.NoError(t, err) - defer os.RemoveAll(tempDir) - ctx, keepers := CreateTestInput(t, false, tempDir, SupportedFeatures, nil, nil) - accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper - - deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator, _ := CreateFakeFundedAccount(ctx, accKeeper, deposit.Add(deposit...)) - fred, _ := CreateFakeFundedAccount(ctx, accKeeper, topUp) - - wasmCode, err := os.ReadFile("./testdata/contract.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "") - require.NoError(t, err) - - _, _, anyAddr := keyPubAddr() - initMsg := InitMsg{ - Verifier: fred, - Beneficiary: anyAddr, - } - initMsgBz, err := json.Marshal(initMsg) - require.NoError(t, err) - initMsgBz, err = wasmCtx.Encrypt(initMsgBz) - require.NoError(t, err) - specs := map[string]struct { - instAdmin sdk.AccAddress - newAdmin sdk.AccAddress - overrideContractAddr sdk.AccAddress - caller sdk.AccAddress - expErr *sdkerrors.Error - }{ - "all good with admin set": { - instAdmin: fred, - newAdmin: anyAddr, - caller: fred, - }, - "prevent update when admin was not set on instantiate": { - caller: creator, - newAdmin: fred, - expErr: sdkerrors.ErrUnauthorized, - }, - "prevent updates from non admin address": { - instAdmin: creator, - newAdmin: fred, - caller: fred, - expErr: sdkerrors.ErrUnauthorized, - }, - "fail with non existing contract addr": { - instAdmin: creator, - newAdmin: anyAddr, - caller: creator, - overrideContractAddr: anyAddr, - expErr: sdkerrors.ErrInvalidRequest, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - addr, err := keeper.Instantiate(ctx, originalContractID, creator, spec.instAdmin, initMsgBz, "demo contract", nil, nil) - require.NoError(t, err) - if spec.overrideContractAddr != nil { - addr = spec.overrideContractAddr - } - err = keeper.UpdateContractAdmin(ctx, addr, spec.caller, spec.newAdmin) - require.True(t, spec.expErr.Is(err), "expected %v but got %+v", spec.expErr, err) - if spec.expErr != nil { - return - } - cInfo := keeper.GetContractInfo(ctx, addr) - assert.Equal(t, spec.newAdmin, cInfo.Admin) - }) - } -} - -func TestClearContractAdmin(t *testing.T) { - tempDir, err := os.MkdirTemp("", "wasm") - require.NoError(t, err) - defer os.RemoveAll(tempDir) - ctx, keepers := CreateTestInput(t, false, tempDir, SupportedFeatures, nil, nil) - accKeeper, keeper := keepers.AccountKeeper, keepers.WasmKeeper - - deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) - topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000)) - creator := CreateFakeFundedAccount(ctx, accKeeper, deposit.Add(deposit...)) - fred := CreateFakeFundedAccount(ctx, accKeeper, topUp) - - wasmCode, err := os.ReadFile("./testdata/contract.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "") - require.NoError(t, err) - - _, _, anyAddr := keyPubAddr() - initMsg := InitMsg{ - Verifier: fred, - Beneficiary: anyAddr, - } - initMsgBz, err := json.Marshal(initMsg) - require.NoError(t, err) - specs := map[string]struct { - instAdmin sdk.AccAddress - overrideContractAddr sdk.AccAddress - caller sdk.AccAddress - expErr *sdkerrors.Error - }{ - "all good when called by proper admin": { - instAdmin: fred, - caller: fred, - }, - "prevent update when admin was not set on instantiate": { - caller: creator, - expErr: sdkerrors.ErrUnauthorized, - }, - "prevent updates from non admin address": { - instAdmin: creator, - caller: fred, - expErr: sdkerrors.ErrUnauthorized, - }, - "fail with non existing contract addr": { - instAdmin: creator, - caller: creator, - overrideContractAddr: anyAddr, - expErr: sdkerrors.ErrInvalidRequest, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - addr, err := keeper.Instantiate(ctx, originalContractID, creator, spec.instAdmin, initMsgBz, "demo contract", nil) - require.NoError(t, err) - if spec.overrideContractAddr != nil { - addr = spec.overrideContractAddr - } - err = keeper.ClearContractAdmin(ctx, addr, spec.caller) - require.True(t, spec.expErr.Is(err), "expected %v but got %+v", spec.expErr, err) - if spec.expErr != nil { - return - } - cInfo := keeper.GetContractInfo(ctx, addr) - assert.Empty(t, cInfo.Admin) - }) - } -} -*/ - type InitMsg struct { Verifier sdk.AccAddress `json:"verifier"` Beneficiary sdk.AccAddress `json:"beneficiary"` diff --git a/x/compute/internal/keeper/querier_test.go b/x/compute/internal/keeper/querier_test.go index 04b5aa722..17a609b07 100644 --- a/x/compute/internal/keeper/querier_test.go +++ b/x/compute/internal/keeper/querier_test.go @@ -330,8 +330,7 @@ func TestListContractByCodeOrdering(t *testing.T) { require.NoError(t, err) instantiateMsg := types.MsgInstantiateContract{ - Sender: creator, - // Admin: nil, + Sender: creator, CodeID: codeID, Label: fmt.Sprintf("contract %d", i), InitMsg: initMsgBz, @@ -369,106 +368,3 @@ func TestListContractByCodeOrdering(t *testing.T) { assert.Nil(t, contract.Created) } } - -/* -func TestQueryContractHistory(t *testing.T) { - tempDir, err := os.MkdirTemp("", "wasm") - require.NoError(t, err) - defer os.RemoveAll(tempDir) - ctx, keepers := CreateTestInput(t, false, tempDir, SupportedFeatures, nil, nil) - keeper := keepers.WasmKeeper - - var ( - otherAddr sdk.AccAddress = bytes.Repeat([]byte{0x2}, sdk.AddrLen) - ) - - specs := map[string]struct { - srcQueryAddr sdk.AccAddress - srcHistory []types.ContractCodeHistoryEntry - expContent []types.ContractCodeHistoryEntry - }{ - "response with internal fields cleared": { - srcHistory: []types.ContractCodeHistoryEntry{{ - Operation: types.GenesisContractCodeHistoryType, - CodeID: 1, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: []byte(`"init message"`), - }}, - expContent: []types.ContractCodeHistoryEntry{{ - Operation: types.GenesisContractCodeHistoryType, - CodeID: 1, - Msg: []byte(`"init message"`), - }}, - }, - "response with multiple entries": { - srcHistory: []types.ContractCodeHistoryEntry{{ - Operation: types.InitContractCodeHistoryType, - CodeID: 1, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: []byte(`"init message"`), - }, { - Operation: types.MigrateContractCodeHistoryType, - CodeID: 2, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: []byte(`"migrate message 1"`), - }, { - Operation: types.MigrateContractCodeHistoryType, - CodeID: 3, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: []byte(`"migrate message 2"`), - }}, - expContent: []types.ContractCodeHistoryEntry{{ - Operation: types.InitContractCodeHistoryType, - CodeID: 1, - Msg: []byte(`"init message"`), - }, { - Operation: types.MigrateContractCodeHistoryType, - CodeID: 2, - Msg: []byte(`"migrate message 1"`), - }, { - Operation: types.MigrateContractCodeHistoryType, - CodeID: 3, - Msg: []byte(`"migrate message 2"`), - }}, - }, - "unknown contract address": { - srcQueryAddr: otherAddr, - srcHistory: []types.ContractCodeHistoryEntry{{ - Operation: types.GenesisContractCodeHistoryType, - CodeID: 1, - Updated: types.NewAbsoluteTxPosition(ctx), - Msg: []byte(`"init message"`), - }}, - expContent: nil, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - _, _, myContractAddr := keyPubAddr() - keeper.appendToContractHistory(ctx, myContractAddr, spec.srcHistory...) - q := NewQuerier(keeper) - queryContractAddr := spec.srcQueryAddr - if queryContractAddr == nil { - queryContractAddr = myContractAddr - } - - // when - query := []string{QueryContractHistory, queryContractAddr.String()} - data := abci.RequestQuery{} - resData, err := q(ctx, query, data) - - // then - require.NoError(t, err) - if spec.expContent == nil { - require.Nil(t, resData) - return - } - var got []types.ContractCodeHistoryEntry - err = json.Unmarshal(resData, &got) - require.NoError(t, err) - - assert.Equal(t, spec.expContent, got) - }) - } -} -*/ diff --git a/x/compute/internal/keeper/test_common.go b/x/compute/internal/keeper/test_common.go index f75880a42..388873bc0 100644 --- a/x/compute/internal/keeper/test_common.go +++ b/x/compute/internal/keeper/test_common.go @@ -513,7 +513,7 @@ func TestHandler(k Keeper) sdk.Handler { } func handleInstantiate(ctx sdk.Context, k Keeper, msg *wasmtypes.MsgInstantiateContract) (*sdk.Result, error) { - contractAddr, data, err := k.Instantiate(ctx, msg.CodeID, msg.Sender /* msg.Admin, */, msg.InitMsg, msg.Label, msg.InitFunds, msg.CallbackSig) + contractAddr, data, err := k.Instantiate(ctx, msg.CodeID, msg.Sender, msg.InitMsg, msg.Label, msg.InitFunds, msg.CallbackSig) if err != nil { result := sdk.Result{} result.Data = data diff --git a/x/compute/internal/keeper/test_fuzz.go b/x/compute/internal/keeper/test_fuzz.go index c5d625beb..d64c52c81 100644 --- a/x/compute/internal/keeper/test_fuzz.go +++ b/x/compute/internal/keeper/test_fuzz.go @@ -7,7 +7,7 @@ import ( tmBytes "github.com/tendermint/tendermint/libs/bytes" ) -var ModelFuzzers = []interface{}{FuzzAddr, FuzzAbsoluteTxPosition, FuzzContractInfo, FuzzStateModel /*FuzzAccessType, FuzzAccessConfig FuzzContractCodeHistory */} +var ModelFuzzers = []interface{}{FuzzAddr, FuzzAbsoluteTxPosition, FuzzContractInfo, FuzzStateModel} func FuzzAddr(m *sdk.AccAddress, c fuzz.Continue) { *m = make([]byte, 20) @@ -22,46 +22,11 @@ func FuzzAbsoluteTxPosition(m *types.AbsoluteTxPosition, c fuzz.Continue) { func FuzzContractInfo(m *types.ContractInfo, c fuzz.Continue) { m.CodeID = c.RandUint64() FuzzAddr(&m.Creator, c) - // FuzzAddr(&m.Admin, c) m.Label = c.RandString() c.Fuzz(&m.Created) } -/* -func FuzzContractCodeHistory(m *types.ContractCodeHistoryEntry, c fuzz.Continue) { - const maxMsgSize = 128 - m.CodeID = c.RandUint64() - msg := make([]byte, c.RandUint64()%maxMsgSize) - c.Read(msg) - var err error - if m.Msg, err = json.Marshal(msg); err != nil { - panic(err) - } - c.Fuzz(&m.Updated) - m.Operation = types.AllCodeHistoryTypes[c.Int()%len(types.AllCodeHistoryTypes)] -} -*/ - func FuzzStateModel(m *types.Model, c fuzz.Continue) { m.Key = tmBytes.HexBytes(c.RandString()) c.Fuzz(&m.Value) } - -/* -func FuzzAccessType(m *types.AccessType, c fuzz.Continue) { - pos := c.Int() % len(types.AllAccessTypes) - for k, _ := range types.AllAccessTypes { - if pos == 0 { - *m = k - return - } - pos-- - } -} -func FuzzAccessConfig(m *types.AccessConfig, c fuzz.Continue) { - FuzzAccessType(&m.Type, c) - var add sdk.AccAddress - FuzzAddr(&add, c) - *m = m.Type.With(add) -} -*/ diff --git a/x/compute/internal/types/msg_test.go b/x/compute/internal/types/msg_test.go index 3ab8fa108..dfd010557 100644 --- a/x/compute/internal/types/msg_test.go +++ b/x/compute/internal/types/msg_test.go @@ -345,212 +345,3 @@ func TestExecuteContractValidation(t *testing.T) { }) } } - -/* -func TestMsgUpdateAdministrator(t *testing.T) { - badAddress, err := sdk.AccAddressFromHex("012345") - require.NoError(t, err) - // proper address size - goodAddress := sdk.AccAddress(make([]byte, 20)) - otherGoodAddress := sdk.AccAddress(bytes.Repeat([]byte{0x1}, 20)) - anotherGoodAddress := sdk.AccAddress(bytes.Repeat([]byte{0x2}, 20)) - - specs := map[string]struct { - src MsgUpdateAdmin - expErr bool - }{ - "all good": { - src: MsgUpdateAdmin{ - Sender: goodAddress, - NewAdmin: otherGoodAddress, - Contract: anotherGoodAddress, - }, - }, - "new admin required": { - src: MsgUpdateAdmin{ - Sender: goodAddress, - Contract: anotherGoodAddress, - }, - expErr: true, - }, - "bad sender": { - src: MsgUpdateAdmin{ - Sender: badAddress, - NewAdmin: otherGoodAddress, - Contract: anotherGoodAddress, - }, - expErr: true, - }, - "bad new admin": { - src: MsgUpdateAdmin{ - Sender: goodAddress, - NewAdmin: badAddress, - Contract: anotherGoodAddress, - }, - expErr: true, - }, - "bad contract addr": { - src: MsgUpdateAdmin{ - Sender: goodAddress, - NewAdmin: otherGoodAddress, - Contract: badAddress, - }, - expErr: true, - }, - "new admin same as old admin": { - src: MsgUpdateAdmin{ - Sender: goodAddress, - NewAdmin: goodAddress, - Contract: anotherGoodAddress, - }, - expErr: true, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - err := spec.src.ValidateBasic() - if spec.expErr { - require.Error(t, err) - return - } - require.NoError(t, err) - }) - } -} - -func TestMsgClearAdministrator(t *testing.T) { - badAddress, err := sdk.AccAddressFromHex("012345") - require.NoError(t, err) - // proper address size - goodAddress := sdk.AccAddress(make([]byte, 20)) - anotherGoodAddress := sdk.AccAddress(bytes.Repeat([]byte{0x2}, 20)) - - specs := map[string]struct { - src MsgClearAdmin - expErr bool - }{ - "all good": { - src: MsgClearAdmin{ - Sender: goodAddress, - Contract: anotherGoodAddress, - }, - }, - "bad sender": { - src: MsgClearAdmin{ - Sender: badAddress, - Contract: anotherGoodAddress, - }, - expErr: true, - }, - "bad contract addr": { - src: MsgClearAdmin{ - Sender: goodAddress, - Contract: badAddress, - }, - expErr: true, - }, - "contract missing": { - src: MsgClearAdmin{ - Sender: goodAddress, - }, - expErr: true, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - err := spec.src.ValidateBasic() - if spec.expErr { - require.Error(t, err) - return - } - require.NoError(t, err) - }) - } -} - -func TestMsgMigrateContract(t *testing.T) { - badAddress, err := sdk.AccAddressFromHex("012345") - require.NoError(t, err) - // proper address size - goodAddress := sdk.AccAddress(make([]byte, 20)) - anotherGoodAddress := sdk.AccAddress(bytes.Repeat([]byte{0x2}, 20)) - - specs := map[string]struct { - src MsgMigrateContract - expErr bool - }{ - "all good": { - src: MsgMigrateContract{ - Sender: goodAddress, - Contract: anotherGoodAddress, - CodeID: 1, - MigrateMsg: []byte("{}"), - }, - }, - "bad sender": { - src: MsgMigrateContract{ - Sender: badAddress, - Contract: anotherGoodAddress, - CodeID: 1, - }, - expErr: true, - }, - "empty sender": { - src: MsgMigrateContract{ - Contract: anotherGoodAddress, - CodeID: 1, - }, - expErr: true, - }, - "empty code": { - src: MsgMigrateContract{ - Sender: goodAddress, - Contract: anotherGoodAddress, - }, - expErr: true, - }, - "bad contract addr": { - src: MsgMigrateContract{ - Sender: goodAddress, - Contract: badAddress, - CodeID: 1, - }, - expErr: true, - }, - "empty contract addr": { - src: MsgMigrateContract{ - Sender: goodAddress, - CodeID: 1, - }, - expErr: true, - }, - "non json migrateMsg": { - src: MsgMigrateContract{ - Sender: goodAddress, - Contract: anotherGoodAddress, - CodeID: 1, - MigrateMsg: []byte("invalid json"), - }, - expErr: true, - }, - "empty migrateMsg": { - src: MsgMigrateContract{ - Sender: goodAddress, - Contract: anotherGoodAddress, - CodeID: 1, - }, - expErr: true, - }, - } - for msg, spec := range specs { - t.Run(msg, func(t *testing.T) { - err := spec.src.ValidateBasic() - if spec.expErr { - require.Error(t, err) - return - } - require.NoError(t, err) - }) - } -} -*/ diff --git a/x/compute/internal/types/test_fixtures.go b/x/compute/internal/types/test_fixtures.go index 6526a27c6..bc7ec726a 100644 --- a/x/compute/internal/types/test_fixtures.go +++ b/x/compute/internal/types/test_fixtures.go @@ -109,135 +109,3 @@ func WithSHA256CodeHash(wasmCode []byte) func(info *CodeInfo) { info.CodeHash = codeHash[:] } } - -/* -func StoreCodeProposalFixture(mutators ...func(*StoreCodeProposal)) StoreCodeProposal { - var anyValidAddress sdk.AccAddress = bytes.Repeat([]byte{0x1}, sdk.AddrLen) - p := StoreCodeProposal{ - WasmProposal: WasmProposal{ - Title: "Foo", - Description: "Bar", - }, - RunAs: anyValidAddress, - WASMByteCode: []byte{0x0}, - Source: "https://example.com/code", - Builder: "foo/bar:latest", - } - for _, m := range mutators { - m(&p) - } - return p -} - -func InstantiateContractProposalFixture(mutators ...func(p *InstantiateContractProposal)) InstantiateContractProposal { - var ( - anyValidAddress sdk.AccAddress = bytes.Repeat([]byte{0x1}, sdk.AddrLen) - - initMsg = struct { - Verifier sdk.AccAddress `json:"verifier"` - Beneficiary sdk.AccAddress `json:"beneficiary"` - }{ - Verifier: anyValidAddress, - Beneficiary: anyValidAddress, - } - ) - - initMsgBz, err := json.Marshal(initMsg) - if err != nil { - panic(err) - } - p := InstantiateContractProposal{ - WasmProposal: WasmProposal{ - Title: "Foo", - Description: "Bar", - }, - RunAs: anyValidAddress, - Admin: anyValidAddress, - CodeID: 1, - Label: "testing", - InitMsg: initMsgBz, - InitFunds: nil, - } - - for _, m := range mutators { - m(&p) - } - return p -} - -func MigrateContractProposalFixture(mutators ...func(p *MigrateContractProposal)) MigrateContractProposal { - var ( - anyValidAddress sdk.AccAddress = bytes.Repeat([]byte{0x1}, sdk.AddrLen) - - migMsg = struct { - Verifier sdk.AccAddress `json:"verifier"` - }{Verifier: anyValidAddress} - ) - - migMsgBz, err := json.Marshal(migMsg) - if err != nil { - panic(err) - } - contractAddr, err := sdk.AccAddressFromBech32("cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5") - if err != nil { - panic(err) - } - - p := MigrateContractProposal{ - WasmProposal: WasmProposal{ - Title: "Foo", - Description: "Bar", - }, - Contract: contractAddr, - CodeID: 1, - MigrateMsg: migMsgBz, - RunAs: anyValidAddress, - } - - for _, m := range mutators { - m(&p) - } - return p -} - -func UpdateAdminProposalFixture(mutators ...func(p *UpdateAdminProposal)) UpdateAdminProposal { - var anyValidAddress sdk.AccAddress = bytes.Repeat([]byte{0x1}, sdk.AddrLen) - - contractAddr, err := sdk.AccAddressFromBech32("cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5") - if err != nil { - panic(err) - } - - p := UpdateAdminProposal{ - WasmProposal: WasmProposal{ - Title: "Foo", - Description: "Bar", - }, - NewAdmin: anyValidAddress, - Contract: contractAddr, - } - for _, m := range mutators { - m(&p) - } - return p -} - -func ClearAdminProposalFixture(mutators ...func(p *ClearAdminProposal)) ClearAdminProposal { - contractAddr, err := sdk.AccAddressFromBech32("cosmos18vd8fpwxzck93qlwghaj6arh4p7c5n89uzcee5") - if err != nil { - panic(err) - } - - p := ClearAdminProposal{ - WasmProposal: WasmProposal{ - Title: "Foo", - Description: "Bar", - }, - Contract: contractAddr, - } - for _, m := range mutators { - m(&p) - } - return p -} -*/ diff --git a/x/compute/internal/types/types.go b/x/compute/internal/types/types.go index e7fa33014..b1a7161e0 100644 --- a/x/compute/internal/types/types.go +++ b/x/compute/internal/types/types.go @@ -82,18 +82,6 @@ func (c *ContractInfo) ValidateBasic() error { return nil } -/* -// ResetFromGenesis resets contracts timestamp and history. -func (c *ContractInfo) ResetFromGenesis(ctx sdk.Context) ContractCodeHistoryEntry { - c.Created = NewAbsoluteTxPosition(ctx) - return ContractCodeHistoryEntry{ - Operation: GenesisContractCodeHistoryType, - CodeID: c.CodeID, - Updated: c.Created, - } -} -*/ - // LessThan can be used to sort func (a *AbsoluteTxPosition) LessThan(b *AbsoluteTxPosition) bool { if a == nil { diff --git a/x/compute/internal/types/types_test.go b/x/compute/internal/types/types_test.go index ba9a5c92c..0ab28cf45 100644 --- a/x/compute/internal/types/types_test.go +++ b/x/compute/internal/types/types_test.go @@ -25,16 +25,6 @@ func TestContractInfoValidateBasic(t *testing.T) { srcMutator: func(c *ContractInfo) { c.Creator = make([]byte, 1000) }, expError: true, }, - /* - "admin empty": { - srcMutator: func(c *ContractInfo) { c.Admin = nil }, - expError: false, - }, - "admin not an address": { - srcMutator: func(c *ContractInfo) { c.Admin = make([]byte, sdk.AddrLen-1) }, - expError: true, - }, - */ "label empty": { srcMutator: func(c *ContractInfo) { c.Label = "" }, expError: true, From acb59ff85389462a955129c52d0e5b3a0b841505 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 13:46:08 +0300 Subject: [PATCH 06/11] lint --- app/app.go | 5 +++-- app/upgrades/v1.4/upgrades.go | 2 +- x/compute/client/rest/tx.go | 2 +- x/compute/migrations/v2/store.go | 2 -- x/compute/module.go | 1 - 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/app.go b/app/app.go index a47900e03..d19232eb3 100644 --- a/app/app.go +++ b/app/app.go @@ -2,13 +2,14 @@ package app import ( "fmt" - "github.com/enigmampc/SecretNetwork/app/upgrades" - v1_4 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.4" "io" "net/http" "os" "path/filepath" + "github.com/enigmampc/SecretNetwork/app/upgrades" + v1_4 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.4" + store "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/baseapp" diff --git a/app/upgrades/v1.4/upgrades.go b/app/upgrades/v1.4/upgrades.go index 0e894211c..336b652b5 100644 --- a/app/upgrades/v1.4/upgrades.go +++ b/app/upgrades/v1.4/upgrades.go @@ -23,7 +23,7 @@ func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator, // reason it's not already set in upgradekeepr. // We upgrade from cosmos-sdk v0.44.5 to v0.45.4 and ibc-go v1.1.5 to v3.0.0 // There were no ConsensusVersion changes between these versions - // so we should be safe to use the curent ConsensusVersion() for each moudle + // so we should be safe to use the current ConsensusVersion() for each moudle for moduleName := range mm.Modules { vm[moduleName] = mm.Modules[moduleName].ConsensusVersion() } diff --git a/x/compute/client/rest/tx.go b/x/compute/client/rest/tx.go index 68e65fd7c..518948ee6 100644 --- a/x/compute/client/rest/tx.go +++ b/x/compute/client/rest/tx.go @@ -32,7 +32,7 @@ type storeCodeReq struct { type instantiateContractReq struct { BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - InitMsg []byte `json:"init_msg" yaml:"init_msg"` + InitMsg []byte `json:"init_msg" yaml:"init_msg"` } type executeContractReq struct { diff --git a/x/compute/migrations/v2/store.go b/x/compute/migrations/v2/store.go index 875caf186..741fbec10 100644 --- a/x/compute/migrations/v2/store.go +++ b/x/compute/migrations/v2/store.go @@ -15,8 +15,6 @@ func migrateSomething(store sdk.KVStore, cdc codec.BinaryCodec) error { // MigrateStore performs in-place store migrations from v1 to v2. The // migration includes: -// -// func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { store := ctx.KVStore(storeKey) diff --git a/x/compute/module.go b/x/compute/module.go index 18359f4b4..deff948d7 100644 --- a/x/compute/module.go +++ b/x/compute/module.go @@ -111,7 +111,6 @@ func (am AppModule) RegisterServices(configurator module.Configurator) { if err := configurator.RegisterMigration(types.ModuleName, 1, m.Migrate1to2); err != nil { panic(fmt.Sprintf("failed to migrate x/bank from version 1 to 2: %v", err)) } - } func (am AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { From f70a62761e271359b8fa805f86f8fb97e74ab7ad Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 14:05:55 +0300 Subject: [PATCH 07/11] Refactor v1.4 upgrade handler & add code comments --- app/app.go | 8 +------- app/upgrades/v1.3/upgrades.go | 8 +++----- app/upgrades/v1.4/upgrades.go | 16 +++++----------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/app/app.go b/app/app.go index d19232eb3..ab17f8296 100644 --- a/app/app.go +++ b/app/app.go @@ -8,6 +8,7 @@ import ( "path/filepath" "github.com/enigmampc/SecretNetwork/app/upgrades" + v1_3 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.3" v1_4 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.4" store "github.com/cosmos/cosmos-sdk/store/types" @@ -40,7 +41,6 @@ import ( porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" - v1_3 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.3" icaauth "github.com/enigmampc/SecretNetwork/x/mauth" icaauthtypes "github.com/enigmampc/SecretNetwork/x/mauth/types" @@ -751,8 +751,6 @@ func (app *SecretNetworkApp) BlockedAddrs() map[string]bool { } func (app *SecretNetworkApp) setupUpgradeHandlers(icamodule *ica.AppModule) { - // this configures a no-op upgrade handler for the v4 upgrade, - // which improves the lockup module's store management. for _, upgradeDetails := range Upgrades { app.upgradeKeeper.SetUpgradeHandler( upgradeDetails.UpgradeName, @@ -762,10 +760,6 @@ func (app *SecretNetworkApp) setupUpgradeHandlers(icamodule *ica.AppModule) { ), ) } - // - //app.upgradeKeeper.SetUpgradeHandler( - // v1_3.UpgradeName, v1_3.CreateUpgradeHandler( - // app.mm, icamodule, app.configurator)) } func (app *SecretNetworkApp) setupUpgradeStoreLoaders() { diff --git a/app/upgrades/v1.3/upgrades.go b/app/upgrades/v1.3/upgrades.go index 5faf6a28e..d17ea9d97 100644 --- a/app/upgrades/v1.3/upgrades.go +++ b/app/upgrades/v1.3/upgrades.go @@ -12,16 +12,14 @@ import ( "github.com/enigmampc/SecretNetwork/app/upgrades" ) +const UpgradeName = "v1.3" + var Upgrade = upgrades.Upgrade{ UpgradeName: UpgradeName, CreateUpgradeHandler: CreateUpgradeHandler, - StoreUpgrades: store.StoreUpgrades{ - Added: []string{icahosttypes.StoreKey}, - }, + StoreUpgrades: store.StoreUpgrades{Added: []string{icahosttypes.StoreKey}}, } -const UpgradeName = "v1.3" - func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { diff --git a/app/upgrades/v1.4/upgrades.go b/app/upgrades/v1.4/upgrades.go index 336b652b5..27c23d59b 100644 --- a/app/upgrades/v1.4/upgrades.go +++ b/app/upgrades/v1.4/upgrades.go @@ -8,27 +8,21 @@ import ( "github.com/enigmampc/SecretNetwork/app/upgrades" ) +const UpgradeName = "v1.4" + var Upgrade = upgrades.Upgrade{ UpgradeName: UpgradeName, CreateUpgradeHandler: CreateUpgradeHandler, StoreUpgrades: store.StoreUpgrades{}, } -const UpgradeName = "v1.4" - func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - // Assaf: Set version map for all modules because for some - // reason it's not already set in upgradekeepr. - // We upgrade from cosmos-sdk v0.44.5 to v0.45.4 and ibc-go v1.1.5 to v3.0.0 - // There were no ConsensusVersion changes between these versions - // so we should be safe to use the current ConsensusVersion() for each moudle - for moduleName := range mm.Modules { - vm[moduleName] = mm.Modules[moduleName].ConsensusVersion() - } + // We're not upgrading cosmos-sdk, Tendermint or ibc-go, so no ConsensusVersion changes + // Therefore mm.RunMigrations() should not find any module to upgrade - ctx.Logger().Info("Starting to run module migrations...") + ctx.Logger().Info("Running module migrations for v1.4...") return mm.RunMigrations(ctx, configurator, vm) } From 23ea672971a136022219e7aff1b84fd3910c7647 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 14:14:07 +0300 Subject: [PATCH 08/11] Refactor setupUpgradeStoreLoaders() --- app/app.go | 44 +++++--------------------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/app/app.go b/app/app.go index ab17f8296..85608430d 100644 --- a/app/app.go +++ b/app/app.go @@ -11,8 +11,6 @@ import ( v1_3 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.3" v1_4 "github.com/enigmampc/SecretNetwork/app/upgrades/v1.4" - store "github.com/cosmos/cosmos-sdk/store/types" - "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" @@ -176,7 +174,7 @@ type SecretNetworkApp struct { paramsKeeper paramskeeper.Keeper evidenceKeeper evidencekeeper.Keeper feeGrantKeeper feegrantkeeper.Keeper - ComputeKeeper compute.Keeper + computeKeeper compute.Keeper regKeeper reg.Keeper ibcKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly transferKeeper ibctransferkeeper.Keeper @@ -425,7 +423,7 @@ func NewSecretNetworkApp( // if we want to allow any custom callbacks supportedFeatures := "staking,stargate,ibc3" - app.ComputeKeeper = compute.NewKeeper( + app.computeKeeper = compute.NewKeeper( appCodec, *legacyAmino, keys[compute.StoreKey], @@ -469,7 +467,7 @@ func NewSecretNetworkApp( staking.NewAppModule(appCodec, app.stakingKeeper, app.accountKeeper, app.bankKeeper), upgrade.NewAppModule(app.upgradeKeeper), evidence.NewAppModule(app.evidenceKeeper), - compute.NewAppModule(app.ComputeKeeper), + compute.NewAppModule(app.computeKeeper), params.NewAppModule(app.paramsKeeper), authzmodule.NewAppModule(appCodec, app.authzKeeper, app.accountKeeper, app.bankKeeper, app.interfaceRegistry), reg.NewAppModule(app.regKeeper), @@ -571,31 +569,9 @@ func NewSecretNetworkApp( app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) app.mm.RegisterServices(app.configurator) + // setupUpgradeHandlers() shoulbe be called after app.mm is configured app.setupUpgradeHandlers(&icaModule) - // add test gRPC service for testing gRPC queries in isolation - // testdata.RegisterTestServiceServer(app.GRPCQueryRouter(), testdata.QueryImpl{}) // TODO: this is testdata !!! - - // create the simulation manager and define the order of the modules for deterministic simulations - // - // NOTE: This is not required for apps that don't use the simulator for fuzz testing - // transactions. - // app.sm = module.NewSimulationManager( - // auth.NewAppModule(appCodec, app.accountKeeper, authsims.RandomGenesisAccounts), - // bank.NewAppModule(appCodec, app.bankKeeper, app.accountKeeper), - // capability.NewAppModule(appCodec, *app.capabilityKeeper), - // gov.NewAppModule(appCodec, app.govKeeper, app.accountKeeper, app.bankKeeper), - // mint.NewAppModule(appCodec, app.mintKeeper, app.accountKeeper), - // staking.NewAppModule(appCodec, app.stakingKeeper, app.accountKeeper, app.bankKeeper), - // distr.NewAppModule(appCodec, app.distrKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper), - // slashing.NewAppModule(appCodec, app.slashingKeeper, app.accountKeeper, app.bankKeeper, app.stakingKeeper), - // params.NewAppModule(app.paramsKeeper), - // //compute.NewAppModule(app.ComputeKeeper), - // evidence.NewAppModule(app.evidenceKeeper), - //) - - // app.sm.RegisterStoreDecoders() - // initialize stores app.MountKVStores(keys) app.MountTransientStores(tKeys) @@ -623,7 +599,7 @@ func NewSecretNetworkApp( if manager := app.SnapshotManager(); manager != nil { err := manager.RegisterExtensions( - compute.NewWasmSnapshotter(app.CommitMultiStore(), &app.ComputeKeeper), + compute.NewWasmSnapshotter(app.CommitMultiStore(), &app.computeKeeper), ) if err != nil { panic(fmt.Errorf("failed to register snapshot extension: %s", err)) @@ -777,16 +753,6 @@ func (app *SecretNetworkApp) setupUpgradeStoreLoaders() { app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgradeDetails.StoreUpgrades)) } } - - if upgradeInfo.Name == v1_3.UpgradeName && !app.upgradeKeeper.IsSkipHeight(upgradeInfo.Height) { - // @Frey do we do this for Cosmwasm? - storeUpgrades := store.StoreUpgrades{ - Added: []string{icahosttypes.StoreKey}, - } - - // configure store loader that checks if version == upgradeHeight and applies store upgrades - app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) - } } // LegacyAmino returns the application's sealed codec. From 0ec9f742162cf307a547b634bc6a7b55f61592cb Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 15:04:03 +0300 Subject: [PATCH 09/11] Remove compute 1->2 migration no migrations in v1.4 --- x/compute/internal/keeper/migrations.go | 10 ---------- x/compute/migrations/v2/store.go | 26 ------------------------- x/compute/module.go | 12 +++++++----- 3 files changed, 7 insertions(+), 41 deletions(-) delete mode 100644 x/compute/migrations/v2/store.go diff --git a/x/compute/internal/keeper/migrations.go b/x/compute/internal/keeper/migrations.go index 329f83e91..92902cbad 100644 --- a/x/compute/internal/keeper/migrations.go +++ b/x/compute/internal/keeper/migrations.go @@ -1,10 +1,5 @@ package keeper -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - v2 "github.com/enigmampc/SecretNetwork/x/compute/migrations/v2" -) - // Migrator is a struct for handling in-place store migrations. type Migrator struct { keeper Keeper @@ -14,8 +9,3 @@ type Migrator struct { func NewMigrator(keeper Keeper) Migrator { return Migrator{keeper: keeper} } - -// Migrate1to2 migrates from version 1 to 2. -func (m Migrator) Migrate1to2(ctx sdk.Context) error { - return v2.MigrateStore(ctx, m.keeper.storeKey, m.keeper.cdc) -} diff --git a/x/compute/migrations/v2/store.go b/x/compute/migrations/v2/store.go deleted file mode 100644 index 741fbec10..000000000 --- a/x/compute/migrations/v2/store.go +++ /dev/null @@ -1,26 +0,0 @@ -package v2 - -import ( - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// migrateSomething migrates the supply to be stored by denom key instead in a -// single blob. -// ref: https://github.com/cosmos/cosmos-sdk/issues/7092 -func migrateSomething(store sdk.KVStore, cdc codec.BinaryCodec) error { - return nil -} - -// MigrateStore performs in-place store migrations from v1 to v2. The -// migration includes: -func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { - store := ctx.KVStore(storeKey) - - if err := migrateSomething(store, cdc); err != nil { - return err - } - - return nil -} diff --git a/x/compute/module.go b/x/compute/module.go index deff948d7..789f7b8ca 100644 --- a/x/compute/module.go +++ b/x/compute/module.go @@ -3,7 +3,6 @@ package compute import ( "context" "encoding/json" - "fmt" "math/rand" "github.com/gorilla/mux" @@ -107,10 +106,13 @@ func (am AppModule) RegisterServices(configurator module.Configurator) { types.RegisterMsgServer(configurator.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) types.RegisterQueryServer(configurator.QueryServer(), NewQuerier(am.keeper)) - m := keeper.NewMigrator(am.keeper) - if err := configurator.RegisterMigration(types.ModuleName, 1, m.Migrate1to2); err != nil { - panic(fmt.Sprintf("failed to migrate x/bank from version 1 to 2: %v", err)) - } + // migrations go here (in the future when we have any) + // example: + + // m := keeper.NewMigrator(am.keeper) + // if err := configurator.RegisterMigration(types.ModuleName, 1, m.Migrate1to2); err != nil { + // panic(fmt.Sprintf("failed to migrate x/compute from version 1 to 2: %v", err)) + // } } func (am AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { From 16e50071dfa43b9b2d0d10407c57856cfc67a8a2 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 15:23:20 +0300 Subject: [PATCH 10/11] Revert mode changes chmod +x deployment/docker/devimage/bootstrap_init_no_stop.sh chmod +x scripts/protoc-swagger-openapi-gen.sh --- deployment/docker/devimage/bootstrap_init_no_stop.sh | 0 scripts/protoc-swagger-openapi-gen.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 deployment/docker/devimage/bootstrap_init_no_stop.sh mode change 100644 => 100755 scripts/protoc-swagger-openapi-gen.sh diff --git a/deployment/docker/devimage/bootstrap_init_no_stop.sh b/deployment/docker/devimage/bootstrap_init_no_stop.sh old mode 100644 new mode 100755 diff --git a/scripts/protoc-swagger-openapi-gen.sh b/scripts/protoc-swagger-openapi-gen.sh old mode 100644 new mode 100755 From f52930967600d68627335126c14dfaf1c46d809b Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 6 Sep 2022 15:23:32 +0300 Subject: [PATCH 11/11] v2 store migration example --- x/compute/migrations/v2/store.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 x/compute/migrations/v2/store.go diff --git a/x/compute/migrations/v2/store.go b/x/compute/migrations/v2/store.go new file mode 100644 index 000000000..81e5dfb2c --- /dev/null +++ b/x/compute/migrations/v2/store.go @@ -0,0 +1,28 @@ +package v2 + +// example migration + +// import ( +// "github.com/cosmos/cosmos-sdk/codec" +// storetypes "github.com/cosmos/cosmos-sdk/store/types" +// sdk "github.com/cosmos/cosmos-sdk/types" +// ) + +// // migrateSomething migrates the supply to be stored by denom key instead in a +// // single blob. +// // ref: https://github.com/cosmos/cosmos-sdk/issues/7092 +// func migrateSomething(store sdk.KVStore, cdc codec.BinaryCodec) error { +// return nil +// } + +// // MigrateStore performs in-place store migrations from v1 to v2. The +// // migration includes: +// func MigrateStore(ctx sdk.Context, storeKey storetypes.StoreKey, cdc codec.BinaryCodec) error { +// store := ctx.KVStore(storeKey) + +// if err := migrateSomething(store, cdc); err != nil { +// return err +// } + +// return nil +// }