From ca8a99795ffdc0c051e217dd1cd775070cf204f2 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Thu, 17 Aug 2023 15:10:54 +0200 Subject: [PATCH] refactor: demonstrate `app.yaml` instead of `app_config.go` --- app/app.go | 37 +++++++++++- app/app.yaml | 54 ++++++++++++++++++ app/app_config.go | 130 ------------------------------------------ cmd/minid/cmd/root.go | 9 ++- 4 files changed, 97 insertions(+), 133 deletions(-) create mode 100644 app/app.yaml delete mode 100644 app/app_config.go diff --git a/app/app.go b/app/app.go index 2c54e4b..9a39f6c 100644 --- a/app/app.go +++ b/app/app.go @@ -1,12 +1,14 @@ package app import ( + _ "embed" "io" "os" "path/filepath" dbm "github.com/cosmos/cosmos-db" + "cosmossdk.io/core/appconfig" "cosmossdk.io/depinject" "cosmossdk.io/log" storetypes "cosmossdk.io/store/types" @@ -25,12 +27,26 @@ import ( bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + + _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects + _ "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 ) // DefaultNodeHome default home directories for the application daemon var DefaultNodeHome string +//go:embed app.yaml +var AppConfigYAML []byte + var ( _ runtime.AppI = (*MiniApp)(nil) _ servertypes.Application = (*MiniApp)(nil) @@ -66,6 +82,19 @@ func init() { DefaultNodeHome = filepath.Join(userHomeDir, ".minid") } +// 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), + }, + ), + ) +} + // NewMiniApp returns a reference to an initialized MiniApp. func NewMiniApp( logger log.Logger, @@ -81,7 +110,13 @@ func NewMiniApp( ) if err := depinject.Inject( - depinject.Configs(AppConfig, depinject.Supply(logger, appOpts)), + depinject.Configs( + AppConfig(), + depinject.Supply( + logger, + appOpts, + ), + ), &appBuilder, &app.appCodec, &app.legacyAmino, diff --git a/app/app.yaml b/app/app.yaml new file mode 100644 index 0000000..467c712 --- /dev/null +++ b/app/app.yaml @@ -0,0 +1,54 @@ +modules: + - name: runtime + config: + "@type": cosmos.app.runtime.v1alpha1.Module + app_name: MiniApp + # During begin block slashing happens after distr.BeginBlocker so that + # there is nothing left over in the validator fee pool, so as to keep the CanWithdrawInvariant invariant. + # NOTE: staking module is required if HistoricalEntries param > 0 + begin_blockers: [distribution, staking] + end_blockers: [staking] + # NOTE: The genutils module must occur after staking so that pools are properly initialized with tokens from genesis accounts. + # NOTE: The genutils module must also occur after auth so that it can access the params from auth. + init_genesis: [auth, bank, distribution, staking, genutil] + override_store_keys: + - module_name: auth + kv_store_key: acc + + - name: auth + config: + "@type": cosmos.auth.module.v1.Module + bech32_prefix: mini + module_account_permissions: + - account: fee_collector + - account: distribution + - account: bonded_tokens_pool + permissions: [burner, staking] + - account: not_bonded_tokens_pool + permissions: [burner, staking] + + - name: bank + config: + "@type": cosmos.bank.module.v1.Module + blocked_module_accounts_override: + [auth, distribution, bonded_tokens_pool, not_bonded_tokens_pool] + + - name: staking + config: + "@type": cosmos.staking.module.v1.Module + + - name: distribution + config: + "@type": cosmos.distribution.module.v1.Module + + - name: consensus + config: + "@type": cosmos.consensus.module.v1.Module + + - name: genutil + config: + "@type": cosmos.genutil.module.v1.Module + + - name: tx + config: + "@type": cosmos.tx.config.v1.Config diff --git a/app/app_config.go b/app/app_config.go deleted file mode 100644 index c968844..0000000 --- a/app/app_config.go +++ /dev/null @@ -1,130 +0,0 @@ -package app - -import ( - runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1" - appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1" - authmodulev1 "cosmossdk.io/api/cosmos/auth/module/v1" - bankmodulev1 "cosmossdk.io/api/cosmos/bank/module/v1" - consensusmodulev1 "cosmossdk.io/api/cosmos/consensus/module/v1" - distrmodulev1 "cosmossdk.io/api/cosmos/distribution/module/v1" - genutilmodulev1 "cosmossdk.io/api/cosmos/genutil/module/v1" - stakingmodulev1 "cosmossdk.io/api/cosmos/staking/module/v1" - txconfigv1 "cosmossdk.io/api/cosmos/tx/config/v1" - "cosmossdk.io/core/appconfig" - "cosmossdk.io/depinject" - - "github.com/cosmos/cosmos-sdk/types/module" - _ "github.com/cosmos/cosmos-sdk/x/auth/tx/config" // import for side-effects - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - 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" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - - _ "github.com/cosmos/cosmos-sdk/x/auth" // 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 -) - -var ( - // module account permissions - moduleAccPerms = []*authmodulev1.ModuleAccountPermission{ - {Account: authtypes.FeeCollectorName}, - {Account: distrtypes.ModuleName}, - {Account: stakingtypes.BondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}}, - {Account: stakingtypes.NotBondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}}, - } - - // blocked account addresses - blockAccAddrs = []string{ - authtypes.FeeCollectorName, - distrtypes.ModuleName, - stakingtypes.BondedPoolName, - stakingtypes.NotBondedPoolName, - // We allow the following module accounts to receive funds: - // govtypes.ModuleName - } - - // application configuration (used by depinject) - AppConfig = depinject.Configs(appconfig.Compose(&appv1alpha1.Config{ - Modules: []*appv1alpha1.ModuleConfig{ - { - Name: "runtime", - Config: appconfig.WrapAny(&runtimev1alpha1.Module{ - AppName: "MiniApp", - // During begin block slashing happens after distr.BeginBlocker so that - // there is nothing left over in the validator fee pool, so as to keep the - // CanWithdrawInvariant invariant. - // NOTE: staking module is required if HistoricalEntries param > 0 - BeginBlockers: []string{ - distrtypes.ModuleName, - stakingtypes.ModuleName, - }, - EndBlockers: []string{ - stakingtypes.ModuleName, - }, - OverrideStoreKeys: []*runtimev1alpha1.StoreKeyConfig{ - { - ModuleName: authtypes.ModuleName, - KvStoreKey: "acc", - }, - }, - InitGenesis: []string{ - // NOTE: The genutils module must occur after staking so that pools are - // properly initialized with tokens from genesis accounts. - // NOTE: The genutils module must also occur after auth so that it can access the params from auth. - authtypes.ModuleName, - banktypes.ModuleName, - distrtypes.ModuleName, - stakingtypes.ModuleName, - genutiltypes.ModuleName, - }, - }), - }, - { - Name: authtypes.ModuleName, - Config: appconfig.WrapAny(&authmodulev1.Module{ - Bech32Prefix: "mini", - ModuleAccountPermissions: moduleAccPerms, - }), - }, - { - Name: banktypes.ModuleName, - Config: appconfig.WrapAny(&bankmodulev1.Module{ - BlockedModuleAccountsOverride: blockAccAddrs, - }), - }, - { - Name: stakingtypes.ModuleName, - Config: appconfig.WrapAny(&stakingmodulev1.Module{}), - }, - { - Name: "tx", - Config: appconfig.WrapAny(&txconfigv1.Config{}), - }, - { - Name: genutiltypes.ModuleName, - Config: appconfig.WrapAny(&genutilmodulev1.Module{}), - }, - { - Name: distrtypes.ModuleName, - Config: appconfig.WrapAny(&distrmodulev1.Module{}), - }, - { - Name: consensustypes.ModuleName, - Config: appconfig.WrapAny(&consensusmodulev1.Module{}), - }, - }, - }), - depinject.Supply( - // supply custom module basics - map[string]module.AppModuleBasic{ - genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), - }, - )) -) diff --git a/cmd/minid/cmd/root.go b/cmd/minid/cmd/root.go index 196f2aa..5a14d99 100644 --- a/cmd/minid/cmd/root.go +++ b/cmd/minid/cmd/root.go @@ -4,6 +4,7 @@ import ( "errors" "io" "os" + "time" cmtcfg "github.com/cometbft/cometbft/config" dbm "github.com/cosmos/cosmos-db" @@ -53,7 +54,7 @@ func NewRootCmd() *cobra.Command { moduleBasicManager module.BasicManager ) - if err := depinject.Inject(depinject.Configs(app.AppConfig, depinject.Supply(log.NewNopLogger())), + if err := depinject.Inject(depinject.Configs(app.AppConfig(), depinject.Supply(log.NewNopLogger())), &interfaceRegistry, &appCodec, &txConfig, @@ -119,7 +120,11 @@ func NewRootCmd() *cobra.Command { srvCfg := serverconfig.DefaultConfig() srvCfg.MinGasPrices = "0mini" - return server.InterceptConfigsPreRunHandler(cmd, serverconfig.DefaultConfigTemplate, srvCfg, cmtcfg.DefaultConfig()) + // overwrite the block timeout + cmtCfg := cmtcfg.DefaultConfig() + cmtCfg.Consensus.TimeoutCommit = 3 * time.Second + + return server.InterceptConfigsPreRunHandler(cmd, serverconfig.DefaultConfigTemplate, srvCfg, cmtCfg) }, }