diff --git a/Makefile b/Makefile index 82f1960526..3bb5cc3ddb 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,7 @@ build_tags_comma_sep := $(subst $(whitespace),$(comma),$(build_tags)) # ********** process linker flags ********** -ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=cosmapp \ +ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=cosmos \ -X github.com/cosmos/cosmos-sdk/version.AppName=tutoriald \ -X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \ -X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \ @@ -147,10 +147,10 @@ start-localnet: build ./build/tutoriald genesis add-genesis-account val1 10000000000000000000000000uatom ./build/tutoriald genesis add-genesis-account alice 1000000000000000000uatom ./build/tutoriald genesis add-genesis-account bob 1000000000000000000uatom - ./build/tutoriald genesis gentx val1 1000000000uatom --chain-id cosmos- + ./build/tutoriald genesis gentx val1 1000000000uatom --chain-id cosmos-1 ./build/tutoriald genesis collect-gentxs sed -i.bak'' 's/minimum-gas-prices = ""/minimum-gas-prices = "0.025uatom"/' ~/.tutoriald/config/app.toml - ./build/tutoriald start + ./build/tutoriald start --val-key val1 ############################################################################### ### Tests & Simulation ### ############################################################################### diff --git a/app/app.go b/app/app.go index 6a075f10c5..ac40557dd6 100644 --- a/app/app.go +++ b/app/app.go @@ -1,100 +1,100 @@ package app import ( - _ "embed" "encoding/json" "fmt" "io" "os" "path/filepath" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/tx/signing" + "cosmossdk.io/x/upgrade" upgradetypes "cosmossdk.io/x/upgrade/types" - dbm "github.com/cosmos/cosmos-db" - "github.com/cosmos/gogoproto/proto" + "github.com/cosmos/cosmos-sdk/client/flags" + abci2 "github.com/cosmos/sdk-tutorials/x/ns-auction/abci" + mempool2 "github.com/cosmos/sdk-tutorials/x/ns-auction/mempool" "github.com/cosmos/sdk-tutorials/x/ns-auction/provider" "github.com/spf13/cast" - "go.etcd.io/etcd/version" + + "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/std" + "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/bank" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/consensus" + consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + "github.com/cosmos/cosmos-sdk/x/distribution" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" + "github.com/cosmos/cosmos-sdk/x/params" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" + "github.com/cosmos/cosmos-sdk/x/staking" + stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "cosmossdk.io/client/v2/autocli" - "cosmossdk.io/core/appconfig" "cosmossdk.io/core/appmodule" - "cosmossdk.io/depinject" - "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/tx/signing" - "cosmossdk.io/x/upgrade" + "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/types/msgservice" + authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + "github.com/cosmos/cosmos-sdk/x/gov" + govclient "github.com/cosmos/cosmos-sdk/x/gov/client" + paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" + "github.com/cosmos/gogoproto/proto" + // ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client" + + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1" + "cosmossdk.io/log" upgradekeeper "cosmossdk.io/x/upgrade/keeper" + abci "github.com/cometbft/cometbft/abci/types" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/runtime" runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services" "github.com/cosmos/cosmos-sdk/server" "github.com/cosmos/cosmos-sdk/server/api" "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/std" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/types/msgservice" - "github.com/cosmos/cosmos-sdk/x/auth" - authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec" + "github.com/cosmos/cosmos-sdk/version" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/consensus" - consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" consensusparamkeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" - consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - "github.com/cosmos/cosmos-sdk/x/distribution" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/cosmos/cosmos-sdk/x/gov" - govclient "github.com/cosmos/cosmos-sdk/x/gov/client" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - "github.com/cosmos/cosmos-sdk/x/params" - paramsclient "github.com/cosmos/cosmos-sdk/x/params/client" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - paramproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal" - "github.com/cosmos/cosmos-sdk/x/staking" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - nsauction "github.com/cosmos/sdk-tutorials/x/ns-auction" nstypes "github.com/cosmos/sdk-tutorials/x/ns-auction" - abci2 "github.com/cosmos/sdk-tutorials/x/ns-auction/abci" nskeeper "github.com/cosmos/sdk-tutorials/x/ns-auction/keeper" - mempool2 "github.com/cosmos/sdk-tutorials/x/ns-auction/mempool" - nsauctionmod "github.com/cosmos/sdk-tutorials/x/ns-auction/module" + nameservice "github.com/cosmos/sdk-tutorials/x/ns-auction/module" +) - autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" - _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects - abci "github.com/cometbft/cometbft/abci/types" - _ "github.com/cosmos/cosmos-sdk/x/auth" // import for side-effects - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import for side-effects - _ "github.com/cosmos/cosmos-sdk/x/bank" // import for side-effects - _ "github.com/cosmos/cosmos-sdk/x/consensus" // import for side-effects - _ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects - _ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects - _ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects +const ( + Bech32Prefix = "cosmos" + AppName = "tutorial" + DefaultDenom = "uatom" + Bech32PrefixAccAddr = Bech32Prefix + Bech32PrefixAccPub = Bech32Prefix + "pub" + Bech32PrefixValAddr = Bech32Prefix + "valoper" + Bech32PrefixValPub = Bech32Prefix + "valoperpub" + Bech32PrefixConsAddr = Bech32Prefix + "valcons" + Bech32PrefixConsPub = Bech32Prefix + "valconspub" ) -// DefaultNodeHome default home directories for the application daemon var ( DefaultNodeHome string // module account permissions @@ -108,20 +108,15 @@ var ( } ) -//go:embed app.yaml -var AppConfigYAML []byte - var ( _ runtime.AppI = (*TutorialApp)(nil) _ servertypes.Application = (*TutorialApp)(nil) ) -// TutorialApp extends an ABCI application, but with most of its parameters exported. -// They are exported for convenience in creating helper functions, as object -// capabilities aren't needed for testing. type TutorialApp struct { *baseapp.BaseApp - legacyAmino *codec.LegacyAmino + + legacyAmino *codec.LegacyAmino //nolint:staticcheck appCodec codec.Codec txConfig client.TxConfig interfaceRegistry types.InterfaceRegistry @@ -130,15 +125,15 @@ type TutorialApp struct { tkeys map[string]*storetypes.TransientStoreKey // keepers - AccountKeeper authkeeper.AccountKeeper - BankKeeper bankkeeper.Keeper - StakingKeeper *stakingkeeper.Keeper - DistrKeeper distrkeeper.Keeper - GovKeeper govkeeper.Keeper - UpgradeKeeper *upgradekeeper.Keeper - ParamsKeeper paramskeeper.Keeper - ConsensusParamsKeeper consensuskeeper.Keeper - NameserviceAuctionKeeper nskeeper.Keeper + AccountKeeper authkeeper.AccountKeeper + BankKeeper bankkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + DistrKeeper distrkeeper.Keeper + GovKeeper govkeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + ParamsKeeper paramskeeper.Keeper + ConsensusParamsKeeper consensusparamkeeper.Keeper + NameserviceKeeper nskeeper.Keeper mm *module.Manager BasicManager module.BasicManager @@ -157,20 +152,6 @@ func init() { DefaultNodeHome = filepath.Join(userHomeDir, ".tutoriald") } -// AppConfig returns the default app config. -func AppConfig() depinject.Config { - return depinject.Configs( - appconfig.LoadYAML(AppConfigYAML), - depinject.Supply( - // supply custom module basics - map[string]module.AppModuleBasic{ - genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), - }, - ), - ) -} - -// NewTutorialApp returns a reference to an initialized tutorialApp. func NewTutorialApp( logger log.Logger, db dbm.DB, @@ -180,34 +161,7 @@ func NewTutorialApp( valKeyName string, appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), -) (*TutorialApp, error) { - var ( - app = &TutorialApp{} - appBuilder *runtime.AppBuilder - ) - - if err := depinject.Inject( - depinject.Configs( - AppConfig(), - depinject.Supply( - logger, - appOpts, - ), - ), - &appBuilder, - &app.appCodec, - &app.legacyAmino, - &app.txConfig, - &app.interfaceRegistry, - &app.AccountKeeper, - &app.BankKeeper, - &app.StakingKeeper, - &app.DistrKeeper, - &app.ConsensusParamsKeeper, - ); err != nil { - return nil, err - } - +) *TutorialApp { homePath := cast.ToString(appOpts.Get(flags.FlagHome)) // Set demo flag runProvider := cast.ToBool(appOpts.Get(nstypes.FlagRunProvider)) @@ -241,7 +195,7 @@ func NewTutorialApp( app.SetMempool(mempool) }) - bApp := baseapp.NewBaseApp("tutorial", logger, db, app.txConfig.TxDecoder(), baseAppOptions...) + bApp := baseapp.NewBaseApp(AppName, logger, db, txConfig.TxDecoder(), baseAppOptions...) bApp.SetCommitMultiStoreTracer(traceStore) bApp.SetVersion(version.Version) bApp.SetInterfaceRegistry(interfaceRegistry) @@ -265,7 +219,7 @@ func NewTutorialApp( tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) - app = &TutorialApp{ + app := &TutorialApp{ BaseApp: bApp, legacyAmino: legacyAmino, txConfig: txConfig, @@ -397,13 +351,13 @@ func NewTutorialApp( ), ) - app.NameserviceAuctionKeeper = nskeeper.NewKeeper( + app.NameserviceKeeper = nskeeper.NewKeeper( appCodec, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), - runtime.NewKVStoreService(keys[nsauction.StoreKey]), + runtime.NewKVStoreService(keys[nstypes.StoreKey]), authtypes.NewModuleAddress(govtypes.ModuleName).String(), app.BankKeeper, - "uatom", + DefaultDenom, ) app.mm = module.NewManager( @@ -419,7 +373,7 @@ func NewTutorialApp( upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()), params.NewAppModule(app.ParamsKeeper), consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper), - nsauctionmod.NewAppModule(appCodec, app.NameserviceAuctionKeeper), + nameservice.NewAppModule(appCodec, app.NameserviceKeeper), ) // Basic manager @@ -520,7 +474,7 @@ func NewTutorialApp( } } - return app, nil + return app } func (app *TutorialApp) Name() string { return app.BaseApp.Name() } @@ -539,12 +493,12 @@ func (app *TutorialApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) { func (app *TutorialApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) { var genesisState GenesisState - // // Enable VE - // req.ConsensusParams = &tmtypes.ConsensusParams{ - // Abci: &tmtypes.ABCIParams{ - // VoteExtensionsEnableHeight: 2, - // }, - // } + // Enable VE + //req.ConsensusParams = &cmtproto.ConsensusParams{ + // Abci: &cmtproto.ABCIParams{ + // VoteExtensionsEnableHeight: 2, + // }, + //} if err := json.Unmarshal(req.AppStateBytes, &genesisState); err != nil { panic(err) diff --git a/app/params/config.go b/app/params/config.go index 7b1fbc1541..ef10409499 100644 --- a/app/params/config.go +++ b/app/params/config.go @@ -15,7 +15,7 @@ const ( DefaultBondDenom = CoinUnit // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address. - Bech32PrefixAccAddr = "tutorial" + Bech32PrefixAccAddr = "cosmos" ) var ( diff --git a/build/tutoriald b/build/tutoriald index ab2fcda623..91be61e383 100755 Binary files a/build/tutoriald and b/build/tutoriald differ diff --git a/cmd/tutoriald/cmd/cmd.go b/cmd/tutoriald/cmd/cmd.go new file mode 100644 index 0000000000..97c6adeb4c --- /dev/null +++ b/cmd/tutoriald/cmd/cmd.go @@ -0,0 +1,111 @@ +package cmd + +import ( + "os" + + "github.com/cosmos/sdk-tutorials/x/ns-auction/testutils" + + "cosmossdk.io/log" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/codec" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" + + "github.com/cosmos/sdk-tutorials/app" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/config" + "github.com/cosmos/cosmos-sdk/server" + + "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/spf13/cobra" +) + +func NewRootCmd() (*cobra.Command, testutils.EncodingConfig) { + tmpApp := app.NewTutorialApp( + log.NewNopLogger(), + dbm.NewMemDB(), + nil, + true, + map[int64]bool{}, + "val", + simtestutil.NewAppOptionsWithFlagHome(tempDir()), + ) + + encodingConfig := testutils.EncodingConfig{ + InterfaceRegistry: tmpApp.InterfaceRegistry(), + Marshaler: tmpApp.AppCodec(), + TxConfig: tmpApp.GetTxConfig(), + Amino: tmpApp.LegacyAmino(), + } + + initClientCtx := client.Context{}. + WithCodec(encodingConfig.Marshaler). + WithInterfaceRegistry(encodingConfig.InterfaceRegistry). + WithTxConfig(encodingConfig.TxConfig). + WithLegacyAmino(encodingConfig.Amino). + WithInput(os.Stdin). + WithAccountRetriever(types.AccountRetriever{}). + WithHomeDir(app.DefaultNodeHome). + WithViper("") + + rootCmd := &cobra.Command{ + Use: app.AppName + "d", + Short: "Cosmos App", + PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + cmd.SetOut(cmd.OutOrStdout()) + cmd.SetErr(cmd.ErrOrStderr()) + + initClientCtx = initClientCtx.WithCmdContext(cmd.Context()) + initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) + if err != nil { + return err + } + + initClientCtx, err = config.ReadFromClientConfig(initClientCtx) + if err != nil { + return err + } + + // This needs to go after ReadFromClientConfig, as that function + // sets the RPC client needed for SIGN_MODE_TEXTUAL. + enabledSignModes := append(tx.DefaultSignModes, signing.SignMode_SIGN_MODE_TEXTUAL) + txConfigOpts := tx.ConfigOptions{ + EnabledSignModes: enabledSignModes, + TextualCoinMetadataQueryFn: txmodule.NewGRPCCoinMetadataQueryFn(initClientCtx), + } + txConfigWithTextual, err := tx.NewTxConfigWithOptions( + codec.NewProtoCodec(encodingConfig.InterfaceRegistry), + txConfigOpts, + ) + if err != nil { + return err + } + initClientCtx = initClientCtx.WithTxConfig(txConfigWithTextual) + + if err = client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { + return err + } + + customAppTemplate, customAppConfig := initAppConfig() + customTMConfig := initTendermintConfig() + + return server.InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig, customTMConfig) + }, + } + + initRootCmd(rootCmd, encodingConfig, tmpApp.BasicManager, app.DefaultNodeHome) + + // add keyring to autocli opts + // autoCliOpts := tmpApp.AutoCliOpts() + // initClientCtx, _ = config.ReadFromClientConfig(initClientCtx) + // // autoCliOpts.Keyring = initClientCtx.Keyring + + // if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { + // panic(err) + // } + + return rootCmd, encodingConfig +} diff --git a/cmd/tutoriald/cmd/commands.go b/cmd/tutoriald/cmd/commands.go index ddd88b0772..430dc00b9e 100644 --- a/cmd/tutoriald/cmd/commands.go +++ b/cmd/tutoriald/cmd/commands.go @@ -5,15 +5,16 @@ import ( "io" "os" - dbm "github.com/cosmos/cosmos-db" - "github.com/spf13/cast" - "github.com/spf13/cobra" - "github.com/spf13/viper" + ns "github.com/cosmos/sdk-tutorials/x/ns-auction" + "github.com/cosmos/sdk-tutorials/x/ns-auction/testutils" + + sdk "github.com/cosmos/cosmos-sdk/types" "cosmossdk.io/log" confixcmd "cosmossdk.io/tools/confix/cmd" tmcfg "github.com/cometbft/cometbft/config" - + app "github.com/cosmos/sdk-tutorials/app" + dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/debug" "github.com/cosmos/cosmos-sdk/client/flags" @@ -24,13 +25,13 @@ import ( "github.com/cosmos/cosmos-sdk/server" serverconfig "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + "github.com/cosmos/cosmos-sdk/x/crisis" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" - - "github.com/cosmos/sdk-tutorials/app" - ns "github.com/cosmos/sdk-tutorials/x/ns-auction" + "github.com/spf13/cast" + "github.com/spf13/cobra" + "github.com/spf13/viper" ) func initTendermintConfig() *tmcfg.Config { @@ -57,28 +58,43 @@ func initAppConfig() (string, interface{}) { return defaultAppTemplate, customAppConfig } -func initRootCmd(rootCmd *cobra.Command, txConfig client.TxConfig, basicManager module.BasicManager) { +func initRootCmd(rootCmd *cobra.Command, encodingConfig testutils.EncodingConfig, basicManager module.BasicManager, defaultNodeHome string) { cfg := sdk.GetConfig() cfg.Seal() rootCmd.AddCommand( - genutilcli.InitCmd(basicManager, app.DefaultNodeHome), + genutilcli.InitCmd(basicManager, defaultNodeHome), debug.Cmd(), confixcmd.ConfigCommand(), - pruning.Cmd(newApp, app.DefaultNodeHome), + pruning.Cmd(newApp, defaultNodeHome), snapshot.Cmd(newApp), ) - server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, appExport, func(startCmd *cobra.Command) {}) + server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, appExport, addModuleInitFlags) - // add keybase, auxiliary RPC, query, genesis, and tx child commands rootCmd.AddCommand( server.StatusCommand(), - genutilcli.Commands(txConfig, basicManager, app.DefaultNodeHome), + genesisCommand(encodingConfig, app.DefaultNodeHome, basicManager), queryCommand(), txCommand(), keys.Commands(), ) + +} + +func addModuleInitFlags(startCmd *cobra.Command) { + crisis.AddModuleInitFlags(startCmd) + startCmd.Flags().String(ns.FlagValKey, "", "Name of Validator Key to Sign Txs") + startCmd.Flags().String(ns.FlagRunProvider, "false", "Run the transaction provider logic") +} + +func genesisCommand(encodingConfig testutils.EncodingConfig, defaultNodeHome string, basicManager module.BasicManager, cmds ...*cobra.Command) *cobra.Command { + cmd := genutilcli.Commands(encodingConfig.TxConfig, basicManager, defaultNodeHome) + + for _, subCmd := range cmds { + cmd.AddCommand(subCmd) + } + return cmd } func queryCommand() *cobra.Command { @@ -86,13 +102,13 @@ func queryCommand() *cobra.Command { Use: "query", Aliases: []string{"q"}, Short: "Querying subcommands", - DisableFlagParsing: false, + DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, } cmd.AddCommand( - rpc.ValidatorCommand(), + rpc.QueryEventForTxCmd(), server.QueryBlockCmd(), authcmd.QueryTxsByEventsCmd(), server.QueryBlocksCmd(), @@ -107,7 +123,7 @@ func txCommand() *cobra.Command { cmd := &cobra.Command{ Use: "tx", Short: "Transactions subcommands", - DisableFlagParsing: false, + DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, } @@ -127,7 +143,6 @@ func txCommand() *cobra.Command { return cmd } -// newApp is an appCreator func newApp( logger log.Logger, db dbm.DB, @@ -146,7 +161,7 @@ func newApp( valKey = "val" } - tutorialApp, err := app.NewTutorialApp( + return app.NewTutorialApp( logger, db, traceStore, @@ -156,10 +171,6 @@ func newApp( appOpts, baseappOptions..., ) - if err != nil { - panic(err) - } - return tutorialApp } func appExport( @@ -196,7 +207,7 @@ func appExport( loadLatest = true } - exportApp, err := app.NewTutorialApp( + exportApp = app.NewTutorialApp( logger, db, traceStore, @@ -205,9 +216,6 @@ func appExport( valKey, appOpts, ) - if err != nil { - return servertypes.ExportedApp{}, err - } if height != -1 { if err := exportApp.LoadHeight(height); err != nil { @@ -219,7 +227,7 @@ func appExport( } var tempDir = func() string { - dir, err := os.MkdirTemp("", "cosmapp") + dir, err := os.MkdirTemp("", "tutorial") if err != nil { dir = app.DefaultNodeHome } diff --git a/cmd/tutoriald/cmd/root.go b/cmd/tutoriald/cmd/root.go deleted file mode 100644 index aea6b06f96..0000000000 --- a/cmd/tutoriald/cmd/root.go +++ /dev/null @@ -1,155 +0,0 @@ -package cmd - -import ( - "os" - "time" - - cmtcfg "github.com/cometbft/cometbft/config" - "github.com/spf13/cobra" - - "cosmossdk.io/client/v2/autocli" - clientv2keyring "cosmossdk.io/client/v2/autocli/keyring" - "cosmossdk.io/core/address" - "cosmossdk.io/depinject" - "cosmossdk.io/log" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/config" - "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/server" - serverconfig "github.com/cosmos/cosmos-sdk/server/config" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/types/tx/signing" - "github.com/cosmos/cosmos-sdk/x/auth/tx" - txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" - "github.com/cosmos/cosmos-sdk/x/auth/types" - - "github.com/cosmos/sdk-tutorials/app" -) - -// NewRootCmd creates a new root command for tutoriald. It is called once in the -// main function. -func NewRootCmd() *cobra.Command { - var ( - // It can be used to set options like the signer, fee granularity, and other transaction-related configurations. - txConfigOpts tx.ConfigOptions - // It can include options for modules, address codecs, and other CLI-related configurations. - autoCliOpts autocli.AppOptions - // This includes things like genesis data, default genesis data, verifying genesis data, and the module's name. - moduleBasicManager module.BasicManager - // This can include things like the client's home directory, the client's input/output, and the client's trust node. - clientCtx client.Context - ) - - if err := depinject.Inject( - depinject.Configs(app.AppConfig(), - depinject.Supply( - log.NewNopLogger(), - ), - depinject.Provide( - ProvideClientContext, - ProvideKeyring, - ), - ), - &txConfigOpts, - &autoCliOpts, - &moduleBasicManager, - &clientCtx, - ); err != nil { - panic(err) - } - - rootCmd := &cobra.Command{ - Use: "tutoriald", - Short: "tutoriald - the tutorial chain app", - PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { - // set the default command outputs - cmd.SetOut(cmd.OutOrStdout()) - cmd.SetErr(cmd.ErrOrStderr()) - - clientCtx = clientCtx.WithCmdContext(cmd.Context()) - clientCtx, err := client.ReadPersistentCommandFlags(clientCtx, cmd.Flags()) - if err != nil { - return err - } - - clientCtx, err = config.ReadFromClientConfig(clientCtx) - if err != nil { - return err - } - - // sign mode textual is only available in online mode - if !clientCtx.Offline { - // This needs to go after ReadFromClientConfig, as that function ets the RPC client needed for SIGN_MODE_TEXTUAL. - txConfigOpts.EnabledSignModes = append(txConfigOpts.EnabledSignModes, signing.SignMode_SIGN_MODE_TEXTUAL) - txConfigOpts.TextualCoinMetadataQueryFn = txmodule.NewGRPCCoinMetadataQueryFn(clientCtx) - txConfigWithTextual, err := tx.NewTxConfigWithOptions(codec.NewProtoCodec(clientCtx.InterfaceRegistry), txConfigOpts) - if err != nil { - return err - } - - clientCtx = clientCtx.WithTxConfig(txConfigWithTextual) - } - - if err := client.SetCmdClientContextHandler(clientCtx, cmd); err != nil { - return err - } - - if err := client.SetCmdClientContextHandler(clientCtx, cmd); err != nil { - return err - } - - // overwrite the minimum gas price from the app configuration - srvCfg := serverconfig.DefaultConfig() - srvCfg.MinGasPrices = "0tutorial" - - // overwrite the block timeout - cmtCfg := cmtcfg.DefaultConfig() - cmtCfg.Consensus.TimeoutCommit = 3 * time.Second - cmtCfg.LogLevel = "*:error,p2p:info,state:info" // better default logging - - return server.InterceptConfigsPreRunHandler(cmd, serverconfig.DefaultConfigTemplate, srvCfg, cmtCfg) - }, - } - - initRootCmd(rootCmd, clientCtx.TxConfig, moduleBasicManager) - - if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { - panic(err) - } - - return rootCmd -} - -func ProvideClientContext( - appCodec codec.Codec, - interfaceRegistry codectypes.InterfaceRegistry, - txConfig client.TxConfig, - legacyAmino *codec.LegacyAmino, -) client.Context { - clientCtx := client.Context{}. - WithCodec(appCodec). - WithInterfaceRegistry(interfaceRegistry). - WithTxConfig(txConfig). - WithLegacyAmino(legacyAmino). - WithInput(os.Stdin). - WithAccountRetriever(types.AccountRetriever{}). - WithHomeDir(app.DefaultNodeHome). - WithViper("TUTORIAL") // env variable prefix - - // Read the config again to overwrite the default values with the values from the config file - clientCtx, _ = config.ReadFromClientConfig(clientCtx) - - return clientCtx -} - -func ProvideKeyring(clientCtx client.Context, addressCodec address.Codec) (clientv2keyring.Keyring, error) { - kb, err := client.NewKeyringFromBackend(clientCtx, clientCtx.Keyring.Backend()) - if err != nil { - return nil, err - } - - return keyring.NewAutoCLIKeyring(kb) -} diff --git a/cmd/tutoriald/main.go b/cmd/tutoriald/main.go index 712a42323d..3caecb59f4 100644 --- a/cmd/tutoriald/main.go +++ b/cmd/tutoriald/main.go @@ -14,7 +14,7 @@ import ( func main() { params.SetAddressPrefixes() - rootCmd := cmd.NewRootCmd() + rootCmd, _ := cmd.NewRootCmd() if err := svrcmd.Execute(rootCmd, "", app.DefaultNodeHome); err != nil { fmt.Fprintln(rootCmd.OutOrStderr(), err) os.Exit(1) diff --git a/x/ns-auction/keeper/keeper_test.go b/x/ns-auction/keeper/keeper_test.go index 16faa097d0..da59ddca29 100644 --- a/x/ns-auction/keeper/keeper_test.go +++ b/x/ns-auction/keeper/keeper_test.go @@ -37,7 +37,7 @@ func initFixture(t *testing.T) *testFixture { defaultDenom := "stake" k := keeper.NewKeeper( encCfg.Codec, - addresscodec.NewBech32Codec("cosmos"), + addresscodec.NewBech32Codec("tutorial"), storeService, addrs[0].String(), bankKeeper, diff --git a/x/ns-auction/provider/provider.go b/x/ns-auction/provider/provider.go index 14c3df56de..92a083ce0b 100644 --- a/x/ns-auction/provider/provider.go +++ b/x/ns-auction/provider/provider.go @@ -69,7 +69,7 @@ func (ls *LocalSigner) Init(txCfg client.TxConfig, cdc codec.Codec, logger log.L ls.codec = cdc ls.lg = logger - kb, err := keyring.New("cosmos", keyring.BackendTest, ls.KeyringDir, nil, ls.codec) + kb, err := keyring.New("tutorial", keyring.BackendTest, ls.KeyringDir, nil, ls.codec) if err != nil { return err } diff --git a/x/ns-auction/query.pb.gw.go b/x/ns-auction/query.pb.gw.go index a87d9fd185..49e480b0a5 100644 --- a/x/ns-auction/query.pb.gw.go +++ b/x/ns-auction/query.pb.gw.go @@ -181,7 +181,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_Name_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 2}, []string{"cosmos", "ns", "name"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Name_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 2}, []string{"tutorial", "ns", "name"}, "", runtime.AssumeColonVerbOpt(false))) ) var (