refactor(core,types,runtime,x): make HasName not mandatory (#20984)

This commit is contained in:
Julien Robert 2024-07-19 10:58:47 +02:00 committed by GitHub
parent 2e0e6d8776
commit 25dce71f62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 121 additions and 357 deletions

View File

@ -8,9 +8,20 @@ import (
"cosmossdk.io/core/appmodule/v2"
)
// HasGenesisBasics is the legacy interface for stateless genesis methods.
type HasGenesisBasics interface {
DefaultGenesis() json.RawMessage
ValidateGenesis(json.RawMessage) error
}
// HasGenesis defines a custom genesis handling API implementation.
type HasGenesis = appmodule.HasGenesis
// HasABCIGenesis defines a custom genesis handling API implementation for ABCI.
// (stateful genesis methods which returns validator updates)
// Most modules should not implement this interface.
type HasABCIGenesis = appmodule.HasABCIGenesis
// HasGenesisAuto is the extension interface that modules should implement to handle
// genesis data and state initialization.
// WARNING: This interface is experimental and may change at any time.
@ -30,14 +41,6 @@ type HasGenesisAuto interface {
ExportGenesis(context.Context, GenesisTarget) error
}
// HasGenesisBasics is the legacy interface for stateless genesis methods.
type HasGenesisBasics interface {
HasName
DefaultGenesis() json.RawMessage
ValidateGenesis(json.RawMessage) error
}
// GenesisSource is a source for genesis data in JSON format. It may abstract over a
// single JSON object or separate files for each field in a JSON object that can
// be streamed over. Modules should open a separate io.ReadCloser for each field that

View File

@ -66,11 +66,6 @@ type HasPrecommit interface {
Precommit(context.Context) error
}
// HasName is an extension interface that must return the appmodule.AppModule's Name.
type HasName interface {
Name() string
}
// HasAminoCodec is an extension interface that module must implement to support JSON encoding and decoding of its types
// through amino. This is used in genesis & the CLI client.
type HasAminoCodec interface {

View File

@ -7,18 +7,27 @@ import (
// HasGenesis defines a custom genesis handling API implementation.
// WARNING: this API is meant as a short-term solution to allow for the
// migration of existing modules to the new app module API. It is intended to be replaced by collections
// migration of existing modules to the new app module API.
// It is intended to be replaced by an automatic genesis with collections/orm.
type HasGenesis interface {
AppModule
DefaultGenesis() json.RawMessage
ValidateGenesis(data json.RawMessage) error
InitGenesis(ctx context.Context, data json.RawMessage) error
ExportGenesis(ctx context.Context) (json.RawMessage, error)
}
// HasABCIGenesis defines a custom genesis handling API implementation for ABCI.
// (stateful genesis methods which returns validator updates)
// Most modules should not implement this interface.
type HasABCIGenesis interface {
AppModule
DefaultGenesis() json.RawMessage
ValidateGenesis(data json.RawMessage) error
InitGenesis(ctx context.Context, data json.RawMessage) ([]ValidatorUpdate, error)
ExportGenesis(ctx context.Context) (json.RawMessage, error)
}
type GenesisDecoder interface {

View File

@ -30,9 +30,8 @@ There are 2 main application module interfaces:
The above interfaces are mostly embedding smaller interfaces (extension interfaces), that defines specific functionalities:
<!-- TO UPDATE - THIS IS SEVERELY OUTDATED -->
<!-- TO UPDATE - THIS IS SEVERELY OUTDATED appmodule / appmodulev2-->
* (legacy) `module.HasName`: Allows the module to provide its own name for legacy purposes.
* (legacy) [`module.HasGenesisBasics`](#modulehasgenesisbasics): The legacy interface for stateless genesis methods.
* (legacy) [`module.HasGenesis`](#modulehasgenesis) for inter-dependent genesis-related module functionalities.
* (legacy) [`module.HasABCIGenesis`](#modulehasabcigenesis) for inter-dependent genesis-related module functionalities.
@ -72,19 +71,10 @@ https://github.com/cosmos/cosmos-sdk/blob/eee5e21e1c8d0995b6d4f83b7f55ec0b58d27b
* `RegisterGRPCGatewayRoutes(client.Context, *runtime.ServeMux)`: Registers gRPC routes for the module.
### `HasName`
```go reference
https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/types/module/module.go#L71-L73
```
* `HasName` is an interface that has a method `Name()`. This method returns the name of the module as a `string`.
### Genesis
:::tip
For easily creating an `AppModule` that only has genesis functionalities, implement `module.HasGenesis/HasABCIGenesis` and `module.HasName`.
For easily creating an `AppModule` that only has genesis functionalities, implement `module.HasGenesis/HasABCIGenesis`.
:::
#### `module.HasGenesisBasics`

View File

@ -36,22 +36,26 @@ func (a *AppBuilder[T]) DefaultGenesis() map[string]json.RawMessage {
// RegisterModules registers the provided modules with the module manager.
// This is the primary hook for integrating with modules which are not registered using the app config.
func (a *AppBuilder[T]) RegisterModules(modules ...appmodulev2.AppModule) error {
for _, appModule := range modules {
if mod, ok := appModule.(appmodule.HasName); ok {
name := mod.Name()
if _, ok := a.app.moduleManager.modules[name]; ok {
return fmt.Errorf("module named %q already exists", name)
func (a *AppBuilder[T]) RegisterModules(modules map[string]appmodulev2.AppModule) error {
for name, appModule := range modules {
// if a (legacy) module implements the HasName interface, check that the name matches
if mod, ok := appModule.(interface{ Name() string }); ok {
if name != mod.Name() {
a.app.logger.Warn(fmt.Sprintf("module name %q does not match name returned by HasName: %q", name, mod.Name()))
}
a.app.moduleManager.modules[name] = appModule
}
if mod, ok := appModule.(appmodulev2.HasRegisterInterfaces); ok {
mod.RegisterInterfaces(a.app.interfaceRegistrar)
}
if _, ok := a.app.moduleManager.modules[name]; ok {
return fmt.Errorf("module named %q already exists", name)
}
a.app.moduleManager.modules[name] = appModule
if mod, ok := appModule.(appmodule.HasAminoCodec); ok {
mod.RegisterLegacyAminoCodec(a.app.amino)
}
if mod, ok := appModule.(appmodulev2.HasRegisterInterfaces); ok {
mod.RegisterInterfaces(a.app.interfaceRegistrar)
}
if mod, ok := appModule.(appmodule.HasAminoCodec); ok {
mod.RegisterLegacyAminoCodec(a.app.amino)
}
}

View File

@ -106,7 +106,7 @@ func (m *MM[T]) DefaultGenesis() map[string]json.RawMessage {
genesisData := make(map[string]json.RawMessage)
for name, b := range m.modules {
if mod, ok := b.(appmodule.HasGenesisBasics); ok {
genesisData[mod.Name()] = mod.DefaultGenesis()
genesisData[name] = mod.DefaultGenesis()
} else if mod, ok := b.(appmodulev2.HasGenesis); ok {
genesisData[name] = mod.DefaultGenesis()
} else {
@ -121,7 +121,7 @@ func (m *MM[T]) DefaultGenesis() map[string]json.RawMessage {
func (m *MM[T]) ValidateGenesis(genesisData map[string]json.RawMessage) error {
for name, b := range m.modules {
if mod, ok := b.(appmodule.HasGenesisBasics); ok {
if err := mod.ValidateGenesis(genesisData[mod.Name()]); err != nil {
if err := mod.ValidateGenesis(genesisData[name]); err != nil {
return err
}
} else if mod, ok := b.(appmodulev2.HasGenesis); ok {

View File

@ -12,7 +12,6 @@ $mockgen_cmd -source=orm/model/ormtable/hooks.go -package ormmocks -destination
$mockgen_cmd -source=x/nft/expected_keepers.go -package testutil -destination x/nft/testutil/expected_keepers_mocks.go
$mockgen_cmd -source=x/feegrant/expected_keepers.go -package testutil -destination x/feegrant/testutil/expected_keepers_mocks.go
$mockgen_cmd -source=x/mint/types/expected_keepers.go -package testutil -destination x/mint/testutil/expected_keepers_mocks.go
$mockgen_cmd -source=x/crisis/types/expected_keepers.go -package testutil -destination x/crisis/testutil/expected_keepers_mocks.go
$mockgen_cmd -source=x/auth/tx/config/expected_keepers.go -package testutil -destination x/auth/tx/testutil/expected_keepers_mocks.go
$mockgen_cmd -source=x/auth/types/expected_keepers.go -package testutil -destination x/auth/testutil/expected_keepers_mocks.go
$mockgen_cmd -source=x/auth/ante/expected_keepers.go -package testutil -destination x/auth/ante/testutil/expected_keepers_mocks.go

View File

@ -19,6 +19,7 @@ import (
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
"cosmossdk.io/client/v2/autocli"
clienthelpers "cosmossdk.io/client/v2/helpers"
"cosmossdk.io/core/appmodule"
"cosmossdk.io/core/log"
storetypes "cosmossdk.io/store/types"
"cosmossdk.io/x/accounts"
@ -51,6 +52,7 @@ import (
"cosmossdk.io/x/consensus"
consensusparamkeeper "cosmossdk.io/x/consensus/keeper"
consensusparamtypes "cosmossdk.io/x/consensus/types"
consensustypes "cosmossdk.io/x/consensus/types"
distr "cosmossdk.io/x/distribution"
distrkeeper "cosmossdk.io/x/distribution/keeper"
distrtypes "cosmossdk.io/x/distribution/types"
@ -79,6 +81,7 @@ import (
"cosmossdk.io/x/protocolpool"
poolkeeper "cosmossdk.io/x/protocolpool/keeper"
pooltypes "cosmossdk.io/x/protocolpool/types"
protocolpooltypes "cosmossdk.io/x/protocolpool/types"
"cosmossdk.io/x/slashing"
slashingkeeper "cosmossdk.io/x/slashing/keeper"
slashingtypes "cosmossdk.io/x/slashing/types"
@ -436,28 +439,29 @@ func NewSimApp(
// NOTE: Any module instantiated in the module manager that is later modified
// must be passed by reference here.
app.ModuleManager = module.NewManager(
genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator),
accounts.NewAppModule(appCodec, app.AccountsKeeper),
auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts),
vesting.NewAppModule(app.AuthKeeper, app.BankKeeper),
bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper),
feegrantmodule.NewAppModule(appCodec, app.AuthKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry),
gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper),
mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper, nil),
slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService),
distr.NewAppModule(appCodec, app.DistrKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper),
staking.NewAppModule(appCodec, app.StakingKeeper, app.AuthKeeper, app.BankKeeper),
upgrade.NewAppModule(app.UpgradeKeeper),
evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService),
authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper),
circuit.NewAppModule(appCodec, app.CircuitKeeper),
protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper),
epochs.NewAppModule(appCodec, app.EpochsKeeper),
)
app.ModuleManager = module.NewManagerFromMap(map[string]appmodule.AppModule{
genutiltypes.ModuleName: genutil.NewAppModule(appCodec, app.AuthKeeper, app.StakingKeeper, app, txConfig, genutiltypes.DefaultMessageValidator),
accounts.ModuleName: accounts.NewAppModule(appCodec, app.AccountsKeeper),
authtypes.ModuleName: auth.NewAppModule(appCodec, app.AuthKeeper, app.AccountsKeeper, authsims.RandomGenesisAccounts),
vestingtypes.ModuleName: vesting.NewAppModule(app.AuthKeeper, app.BankKeeper),
banktypes.ModuleName: bank.NewAppModule(appCodec, app.BankKeeper, app.AuthKeeper),
feegrant.ModuleName: feegrantmodule.NewAppModule(appCodec, app.AuthKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry),
govtypes.ModuleName: gov.NewAppModule(appCodec, &app.GovKeeper, app.AuthKeeper, app.BankKeeper, app.PoolKeeper),
minttypes.ModuleName: mint.NewAppModule(appCodec, app.MintKeeper, app.AuthKeeper, nil),
slashingtypes.ModuleName: slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.interfaceRegistry, cometService),
distrtypes.ModuleName: distr.NewAppModule(appCodec, app.DistrKeeper, app.AuthKeeper, app.BankKeeper, app.StakingKeeper, app.PoolKeeper),
stakingtypes.ModuleName: staking.NewAppModule(appCodec, app.StakingKeeper, app.AuthKeeper, app.BankKeeper),
upgradetypes.ModuleName: upgrade.NewAppModule(app.UpgradeKeeper),
evidencetypes.ModuleName: evidence.NewAppModule(appCodec, app.EvidenceKeeper, cometService),
authz.ModuleName: authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
group.ModuleName: groupmodule.NewAppModule(appCodec, app.GroupKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
nft.ModuleName: nftmodule.NewAppModule(appCodec, app.NFTKeeper, app.AuthKeeper, app.BankKeeper, app.interfaceRegistry),
consensustypes.ModuleName: consensus.NewAppModule(appCodec, app.ConsensusParamsKeeper),
circuittypes.ModuleName: circuit.NewAppModule(appCodec, app.CircuitKeeper),
protocolpooltypes.ModuleName: protocolpool.NewAppModule(appCodec, app.PoolKeeper, app.AuthKeeper, app.BankKeeper),
epochstypes.ModuleName: epochs.NewAppModule(appCodec, app.EpochsKeeper),
})
app.ModuleManager.RegisterLegacyAminoCodec(legacyAmino)
app.ModuleManager.RegisterInterfaces(interfaceRegistry)

View File

@ -10,6 +10,7 @@ import (
reflect "reflect"
appmodule "cosmossdk.io/core/appmodule"
appmodule0 "cosmossdk.io/core/appmodule/v2"
types "github.com/cosmos/cosmos-sdk/types"
module "github.com/cosmos/cosmos-sdk/types/module"
gomock "github.com/golang/mock/gomock"
@ -253,33 +254,33 @@ func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) EndBlock(arg0 interfac
}
// ExportGenesis mocks base method.
func (m *MockAppModuleWithAllExtensionsABCI) ExportGenesis(arg0 context.Context) (json.RawMessage, error) {
func (m *MockAppModuleWithAllExtensionsABCI) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ExportGenesis", arg0)
ret := m.ctrl.Call(m, "ExportGenesis", ctx)
ret0, _ := ret[0].(json.RawMessage)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ExportGenesis indicates an expected call of ExportGenesis.
func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) ExportGenesis(arg0 interface{}) *gomock.Call {
func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) ExportGenesis(ctx interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockAppModuleWithAllExtensionsABCI)(nil).ExportGenesis), arg0)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockAppModuleWithAllExtensionsABCI)(nil).ExportGenesis), ctx)
}
// InitGenesis mocks base method.
func (m *MockAppModuleWithAllExtensionsABCI) InitGenesis(arg0 context.Context, arg1 json.RawMessage) ([]module.ValidatorUpdate, error) {
func (m *MockAppModuleWithAllExtensionsABCI) InitGenesis(ctx context.Context, data json.RawMessage) ([]appmodule0.ValidatorUpdate, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1)
ret0, _ := ret[0].([]module.ValidatorUpdate)
ret := m.ctrl.Call(m, "InitGenesis", ctx, data)
ret0, _ := ret[0].([]appmodule0.ValidatorUpdate)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// InitGenesis indicates an expected call of InitGenesis.
func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) InitGenesis(arg0, arg1 interface{}) *gomock.Call {
func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) InitGenesis(ctx, data interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockAppModuleWithAllExtensionsABCI)(nil).InitGenesis), arg0, arg1)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockAppModuleWithAllExtensionsABCI)(nil).InitGenesis), ctx, data)
}
// IsAppModule mocks base method.
@ -345,17 +346,17 @@ func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) RegisterServices(arg0
}
// ValidateGenesis mocks base method.
func (m *MockAppModuleWithAllExtensionsABCI) ValidateGenesis(arg0 json.RawMessage) error {
func (m *MockAppModuleWithAllExtensionsABCI) ValidateGenesis(data json.RawMessage) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ValidateGenesis", arg0)
ret := m.ctrl.Call(m, "ValidateGenesis", data)
ret0, _ := ret[0].(error)
return ret0
}
// ValidateGenesis indicates an expected call of ValidateGenesis.
func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) ValidateGenesis(arg0 interface{}) *gomock.Call {
func (mr *MockAppModuleWithAllExtensionsABCIMockRecorder) ValidateGenesis(data interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModuleWithAllExtensionsABCI)(nil).ValidateGenesis), arg0)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockAppModuleWithAllExtensionsABCI)(nil).ValidateGenesis), data)
}
// MockCoreAppModule is a mock of CoreAppModule interface.

View File

@ -6,7 +6,6 @@ package mock
import (
context "context"
json "encoding/json"
reflect "reflect"
legacy "cosmossdk.io/core/legacy"
@ -40,20 +39,6 @@ func (m *MockAppModuleBasic) EXPECT() *MockAppModuleBasicMockRecorder {
return m.recorder
}
// Name mocks base method.
func (m *MockAppModuleBasic) Name() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Name")
ret0, _ := ret[0].(string)
return ret0
}
// Name indicates an expected call of Name.
func (mr *MockAppModuleBasicMockRecorder) Name() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModuleBasic)(nil).Name))
}
// RegisterGRPCGatewayRoutes mocks base method.
func (m *MockAppModuleBasic) RegisterGRPCGatewayRoutes(arg0 client.Context, arg1 *runtime.ServeMux) {
m.ctrl.T.Helper()
@ -139,108 +124,6 @@ func (mr *MockAppModuleMockRecorder) Name() *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockAppModule)(nil).Name))
}
// MockHasName is a mock of HasName interface.
type MockHasName struct {
ctrl *gomock.Controller
recorder *MockHasNameMockRecorder
}
// MockHasNameMockRecorder is the mock recorder for MockHasName.
type MockHasNameMockRecorder struct {
mock *MockHasName
}
// NewMockHasName creates a new mock instance.
func NewMockHasName(ctrl *gomock.Controller) *MockHasName {
mock := &MockHasName{ctrl: ctrl}
mock.recorder = &MockHasNameMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockHasName) EXPECT() *MockHasNameMockRecorder {
return m.recorder
}
// Name mocks base method.
func (m *MockHasName) Name() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Name")
ret0, _ := ret[0].(string)
return ret0
}
// Name indicates an expected call of Name.
func (mr *MockHasNameMockRecorder) Name() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockHasName)(nil).Name))
}
// MockHasGenesisBasics is a mock of HasGenesisBasics interface.
type MockHasGenesisBasics struct {
ctrl *gomock.Controller
recorder *MockHasGenesisBasicsMockRecorder
}
// MockHasGenesisBasicsMockRecorder is the mock recorder for MockHasGenesisBasics.
type MockHasGenesisBasicsMockRecorder struct {
mock *MockHasGenesisBasics
}
// NewMockHasGenesisBasics creates a new mock instance.
func NewMockHasGenesisBasics(ctrl *gomock.Controller) *MockHasGenesisBasics {
mock := &MockHasGenesisBasics{ctrl: ctrl}
mock.recorder = &MockHasGenesisBasicsMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockHasGenesisBasics) EXPECT() *MockHasGenesisBasicsMockRecorder {
return m.recorder
}
// DefaultGenesis mocks base method.
func (m *MockHasGenesisBasics) DefaultGenesis() json.RawMessage {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DefaultGenesis")
ret0, _ := ret[0].(json.RawMessage)
return ret0
}
// DefaultGenesis indicates an expected call of DefaultGenesis.
func (mr *MockHasGenesisBasicsMockRecorder) DefaultGenesis() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockHasGenesisBasics)(nil).DefaultGenesis))
}
// Name mocks base method.
func (m *MockHasGenesisBasics) Name() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Name")
ret0, _ := ret[0].(string)
return ret0
}
// Name indicates an expected call of Name.
func (mr *MockHasGenesisBasicsMockRecorder) Name() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockHasGenesisBasics)(nil).Name))
}
// ValidateGenesis mocks base method.
func (m *MockHasGenesisBasics) ValidateGenesis(arg0 json.RawMessage) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ValidateGenesis", arg0)
ret0, _ := ret[0].(error)
return ret0
}
// ValidateGenesis indicates an expected call of ValidateGenesis.
func (mr *MockHasGenesisBasicsMockRecorder) ValidateGenesis(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockHasGenesisBasics)(nil).ValidateGenesis), arg0)
}
// MockHasAminoCodec is a mock of HasAminoCodec interface.
type MockHasAminoCodec struct {
ctrl *gomock.Controller
@ -311,101 +194,6 @@ func (mr *MockHasGRPCGatewayMockRecorder) RegisterGRPCGatewayRoutes(arg0, arg1 i
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegisterGRPCGatewayRoutes", reflect.TypeOf((*MockHasGRPCGateway)(nil).RegisterGRPCGatewayRoutes), arg0, arg1)
}
// MockHasABCIGenesis is a mock of HasABCIGenesis interface.
type MockHasABCIGenesis struct {
ctrl *gomock.Controller
recorder *MockHasABCIGenesisMockRecorder
}
// MockHasABCIGenesisMockRecorder is the mock recorder for MockHasABCIGenesis.
type MockHasABCIGenesisMockRecorder struct {
mock *MockHasABCIGenesis
}
// NewMockHasABCIGenesis creates a new mock instance.
func NewMockHasABCIGenesis(ctrl *gomock.Controller) *MockHasABCIGenesis {
mock := &MockHasABCIGenesis{ctrl: ctrl}
mock.recorder = &MockHasABCIGenesisMockRecorder{mock}
return mock
}
// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockHasABCIGenesis) EXPECT() *MockHasABCIGenesisMockRecorder {
return m.recorder
}
// DefaultGenesis mocks base method.
func (m *MockHasABCIGenesis) DefaultGenesis() json.RawMessage {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DefaultGenesis")
ret0, _ := ret[0].(json.RawMessage)
return ret0
}
// DefaultGenesis indicates an expected call of DefaultGenesis.
func (mr *MockHasABCIGenesisMockRecorder) DefaultGenesis() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DefaultGenesis", reflect.TypeOf((*MockHasABCIGenesis)(nil).DefaultGenesis))
}
// ExportGenesis mocks base method.
func (m *MockHasABCIGenesis) ExportGenesis(arg0 context.Context) (json.RawMessage, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ExportGenesis", arg0)
ret0, _ := ret[0].(json.RawMessage)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ExportGenesis indicates an expected call of ExportGenesis.
func (mr *MockHasABCIGenesisMockRecorder) ExportGenesis(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportGenesis", reflect.TypeOf((*MockHasABCIGenesis)(nil).ExportGenesis), arg0)
}
// InitGenesis mocks base method.
func (m *MockHasABCIGenesis) InitGenesis(arg0 context.Context, arg1 json.RawMessage) ([]module.ValidatorUpdate, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "InitGenesis", arg0, arg1)
ret0, _ := ret[0].([]module.ValidatorUpdate)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// InitGenesis indicates an expected call of InitGenesis.
func (mr *MockHasABCIGenesisMockRecorder) InitGenesis(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitGenesis", reflect.TypeOf((*MockHasABCIGenesis)(nil).InitGenesis), arg0, arg1)
}
// Name mocks base method.
func (m *MockHasABCIGenesis) Name() string {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "Name")
ret0, _ := ret[0].(string)
return ret0
}
// Name indicates an expected call of Name.
func (mr *MockHasABCIGenesisMockRecorder) Name() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Name", reflect.TypeOf((*MockHasABCIGenesis)(nil).Name))
}
// ValidateGenesis mocks base method.
func (m *MockHasABCIGenesis) ValidateGenesis(arg0 json.RawMessage) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ValidateGenesis", arg0)
ret0, _ := ret[0].(error)
return ret0
}
// ValidateGenesis indicates an expected call of ValidateGenesis.
func (mr *MockHasABCIGenesisMockRecorder) ValidateGenesis(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidateGenesis", reflect.TypeOf((*MockHasABCIGenesis)(nil).ValidateGenesis), arg0)
}
// MockHasInvariants is a mock of HasInvariants interface.
type MockHasInvariants struct {
ctrl *gomock.Controller

View File

@ -8,12 +8,9 @@ import (
"github.com/cosmos/cosmos-sdk/testutil/x/counter/keeper"
"github.com/cosmos/cosmos-sdk/testutil/x/counter/types"
"github.com/cosmos/cosmos-sdk/types/module"
)
var (
_ module.HasName = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasRegisterInterfaces = AppModule{}
)
@ -43,7 +40,8 @@ func NewAppModule(keeper keeper.Keeper) AppModule {
// ConsensusVersion implements HasConsensusVersion
func (AppModule) ConsensusVersion() uint64 { return 1 }
// Name returns the consensus module's name.
// Name returns the module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string { return types.ModuleName }
// RegisterInterfaces registers interfaces and implementations of the bank module.

View File

@ -20,7 +20,6 @@ import (
var (
_ appmodule.AppModule = coreAppModuleAdaptor{}
_ HasName = coreAppModuleAdaptor{}
_ HasAminoCodec = coreAppModuleAdaptor{}
_ HasGRPCGateway = coreAppModuleAdaptor{}
_ appmodule.HasRegisterInterfaces = coreAppModuleAdaptor{}
@ -154,7 +153,8 @@ func (c coreAppModuleAdaptor) InitGenesis(ctx context.Context, bz json.RawMessag
return nil, nil
}
// Name implements HasName
// Name implements legacy Name() interface
// Kept for legacy reasons
func (c coreAppModuleAdaptor) Name() string {
return c.name
}

View File

@ -18,18 +18,16 @@ type AppModuleWithAllExtensions interface {
appmodulev2.HasConsensusVersion
appmodulev2.HasGenesis
module.HasABCIEndBlock
module.HasName
}
// mocks to be used in module tests.
type AppModuleWithAllExtensionsABCI interface {
module.AppModule
module.HasServices
module.HasABCIGenesis
appmodulev2.HasABCIGenesis
module.HasInvariants
appmodulev2.HasConsensusVersion
module.HasABCIEndBlock
module.HasName
}
// CoreAppModule is solely here for the purpose of generating

View File

@ -46,34 +46,21 @@ import (
// Deprecated: use the embed extension interfaces instead, when needed.
type AppModuleBasic interface {
HasName
HasGRPCGateway
HasAminoCodec
}
// AppModule is the form for an application module. Most of
// its functionality has been moved to extension interfaces.
// AppModule is the form for an application module.
// Most of its functionality has been moved to extension interfaces.
// Deprecated: use appmodule.AppModule with a combination of extension interfaces instead.
type AppModule interface {
HasName
Name() string
appmodulev2.AppModule
}
// HasName allows the module to provide its own name for legacy purposes.
// Newer apps should specify the name for their modules using a map
// using NewManagerFromMap.
type HasName interface {
Name() string
}
// HasGenesisBasics is the legacy interface for stateless genesis methods.
type HasGenesisBasics interface {
HasName
DefaultGenesis() json.RawMessage
ValidateGenesis(json.RawMessage) error
}
type HasGenesisBasics = appmodule.HasGenesisBasics
// HasAminoCodec is the interface for modules that have amino codec registration.
// Deprecated: modules should not need to register their own amino codecs.
@ -91,11 +78,7 @@ type HasGRPCGateway interface {
type HasGenesis = appmodulev2.HasGenesis
// HasABCIGenesis is the extension interface for stateful genesis methods which returns validator updates.
type HasABCIGenesis interface {
HasGenesisBasics
InitGenesis(context.Context, json.RawMessage) ([]ValidatorUpdate, error)
ExportGenesis(context.Context) (json.RawMessage, error)
}
type HasABCIGenesis = appmodulev2.HasABCIGenesis
// HasInvariants is the interface for registering invariants.
type HasInvariants interface {
@ -139,6 +122,7 @@ type Manager struct {
}
// NewManager creates a new Manager object.
// Deprecated: Use NewManagerFromMap instead.
func NewManager(modules ...AppModule) *Manager {
moduleMap := make(map[string]appmodule.AppModule)
modulesStr := make([]string, 0, len(modules))
@ -168,7 +152,6 @@ func NewManager(modules ...AppModule) *Manager {
}
// NewManagerFromMap creates a new Manager object from a map of module names to module implementations.
// This method should be used for apps and modules which have migrated to the cosmossdk.io/core.appmodule.AppModule API.
func NewManagerFromMap(moduleMap map[string]appmodule.AppModule) *Manager {
simpleModuleMap := make(map[string]appmodule.AppModule)
modulesStr := make([]string, 0, len(simpleModuleMap))
@ -321,7 +304,7 @@ func (m *Manager) DefaultGenesis() map[string]json.RawMessage {
genesisData := make(map[string]json.RawMessage)
for name, b := range m.Modules {
if mod, ok := b.(HasGenesisBasics); ok {
genesisData[mod.Name()] = mod.DefaultGenesis()
genesisData[name] = mod.DefaultGenesis()
} else if mod, ok := b.(appmodule.HasGenesis); ok {
genesisData[name] = mod.DefaultGenesis()
} else {
@ -336,7 +319,7 @@ func (m *Manager) DefaultGenesis() map[string]json.RawMessage {
func (m *Manager) ValidateGenesis(genesisData map[string]json.RawMessage) error {
for name, b := range m.Modules {
if mod, ok := b.(HasGenesisBasics); ok {
if err := mod.ValidateGenesis(genesisData[mod.Name()]); err != nil {
if err := mod.ValidateGenesis(genesisData[name]); err != nil {
return err
}
} else if mod, ok := b.(appmodule.HasGenesis); ok {

View File

@ -14,7 +14,6 @@ import (
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/types/address"
"github.com/cosmos/cosmos-sdk/types/module"
"github.com/cosmos/cosmos-sdk/types/msgservice"
)
@ -29,8 +28,6 @@ const (
var ModuleAccountAddress = address.Module(ModuleName)
var (
_ module.HasName = AppModule{}
_ appmodule.AppModule = AppModule{}
_ appmodule.HasServices = AppModule{}
_ appmodule.HasGenesis = AppModule{}
@ -48,6 +45,8 @@ type AppModule struct {
func (m AppModule) IsAppModule() {}
// Name returns the module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string { return ModuleName }
func (m AppModule) RegisterInterfaces(registrar registry.InterfaceRegistrar) {

View File

@ -12,7 +12,6 @@ import (
basev1beta1 "cosmossdk.io/api/cosmos/base/v1beta1"
"cosmossdk.io/core/address"
"cosmossdk.io/core/event"
"cosmossdk.io/core/log"
coretesting "cosmossdk.io/core/testing"
coretransaction "cosmossdk.io/core/transaction"
"cosmossdk.io/x/accounts/internal/implementation"
@ -74,7 +73,7 @@ func newKeeper(t *testing.T, accounts ...implementation.AccountCreatorFunc) (Kee
ctx := coretesting.Context()
ss := coretesting.KVStoreService(ctx, "test")
env := runtime.NewEnvironment(ss, log.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter))
env := runtime.NewEnvironment(ss, coretesting.NewNopLogger(), runtime.EnvWithQueryRouterService(queryRouter), runtime.EnvWithMsgRouterService(msgRouter))
env.EventService = eventService{}
m, err := NewKeeper(codec.NewProtoCodec(ir), env, addressCodec, ir, accounts...)
require.NoError(t, err)

View File

@ -33,7 +33,6 @@ const (
var (
_ module.AppModuleSimulation = AppModule{}
_ module.HasName = AppModule{}
_ appmodulev2.HasGenesis = AppModule{}
_ appmodulev2.AppModule = AppModule{}
@ -67,7 +66,8 @@ func NewAppModule(
}
}
// Name returns the auth module's name.
// Name returns the module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -6,16 +6,9 @@ import (
"cosmossdk.io/core/registry"
"cosmossdk.io/x/auth/keeper"
"cosmossdk.io/x/auth/vesting/types"
"github.com/cosmos/cosmos-sdk/types/module"
)
var (
_ module.AppModule = AppModule{}
_ module.HasName = AppModule{}
_ appmodule.AppModule = AppModule{}
)
var _ appmodule.AppModule = AppModule{}
// AppModule implementing the AppModule interface.
type AppModule struct {
@ -34,6 +27,7 @@ func NewAppModule(ak keeper.AccountKeeper, bk types.BankKeeper) AppModule {
func (am AppModule) IsAppModule() {}
// Name returns the module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -28,7 +28,6 @@ import (
const ConsensusVersion = 2
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -71,6 +70,7 @@ func NewAppModule(
func (AppModule) IsAppModule() {}
// Name returns the authz module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return authz.ModuleName
}

View File

@ -28,7 +28,6 @@ import (
const ConsensusVersion = 4
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -61,6 +60,7 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.Acc
func (am AppModule) IsAppModule() {}
// Name returns the bank module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string { return types.ModuleName }
// RegisterLegacyAminoCodec registers the bank module's types on the LegacyAmino codec.

View File

@ -22,7 +22,6 @@ import (
const ConsensusVersion = 1
var (
_ module.HasName = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ appmodule.AppModule = AppModule{}
@ -41,6 +40,7 @@ type AppModule struct {
func (AppModule) IsAppModule() {}
// Name returns the circuit module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string { return types.ModuleName }
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the circuit module.

View File

@ -21,7 +21,6 @@ import (
const ConsensusVersion = 1
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
@ -47,6 +46,7 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule {
func (AppModule) IsAppModule() {}
// Name returns the consensus module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string { return types.ModuleName }
// RegisterLegacyAminoCodec registers the consensus module's types on the LegacyAmino codec.

View File

@ -28,7 +28,6 @@ import (
const ConsensusVersion = 4
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -71,6 +70,7 @@ func NewAppModule(
func (am AppModule) IsAppModule() {}
// Name returns the distribution module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -21,7 +21,6 @@ import (
)
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -51,6 +50,7 @@ func NewAppModule(cdc codec.Codec, keeper *keeper.Keeper) AppModule {
func (am AppModule) IsAppModule() {}
// Name returns the epochs module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -26,7 +26,6 @@ import (
)
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -61,6 +60,7 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, cometService comet.Serv
func (am AppModule) IsAppModule() {}
// Name returns the evidence module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -24,7 +24,6 @@ import (
)
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -62,6 +61,7 @@ func NewAppModule(cdc codec.Codec, ak feegrant.AccountKeeper, bk feegrant.BankKe
func (AppModule) IsAppModule() {}
// Name returns the feegrant module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return feegrant.ModuleName
}

View File

@ -16,7 +16,6 @@ import (
)
var (
_ module.HasName = AppModule{}
_ module.HasABCIGenesis = AppModule{}
_ appmodule.AppModule = AppModule{}
@ -56,6 +55,7 @@ func NewAppModule(
func (AppModule) IsAppModule() {}
// Name returns the genutil module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -30,7 +30,6 @@ import (
const ConsensusVersion = 6
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -75,6 +74,7 @@ func NewAppModule(
func (am AppModule) IsAppModule() {}
// Name returns the gov module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return govtypes.ModuleName
}

View File

@ -29,7 +29,6 @@ import (
const ConsensusVersion = 2
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -67,6 +66,7 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak group.AccountKeeper,
func (AppModule) IsAppModule() {}
// Name returns the group module's name.
// Deprecated: kept for legacy reasons.
func (am AppModule) Name() string {
return group.ModuleName
}

View File

@ -25,7 +25,6 @@ import (
const ConsensusVersion = 3
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -76,6 +75,7 @@ func NewAppModule(
func (AppModule) IsAppModule() {}
// Name returns the mint module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -22,7 +22,6 @@ import (
)
var (
_ module.HasName = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -58,6 +57,7 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper, ak nft.AccountKeeper, b
func (AppModule) IsAppModule() {}
// Name returns the nft module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return nft.ModuleName
}

View File

@ -18,7 +18,6 @@ import (
)
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -47,6 +46,7 @@ func NewAppModule(k keeper.Keeper) AppModule {
func (am AppModule) IsAppModule() {}
// Name returns the params module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return proposal.ModuleName
}

View File

@ -22,7 +22,6 @@ import (
const ConsensusVersion = 1
var (
_ module.HasName = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -55,7 +54,8 @@ func NewAppModule(cdc codec.Codec, keeper keeper.Keeper,
// IsAppModule implements the appmodule.AppModule interface.
func (AppModule) IsAppModule() {}
// Name returns the pool module's name.
// Name returns the protocolpool module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string { return types.ModuleName }
// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes

View File

@ -27,7 +27,6 @@ import (
const ConsensusVersion = 4
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.AppModuleSimulation = AppModule{}
@ -77,6 +76,7 @@ func NewAppModule(
func (AppModule) IsAppModule() {}
// Name returns the slashing module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -29,7 +29,6 @@ const (
var (
_ module.AppModuleSimulation = AppModule{}
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
_ module.HasInvariants = AppModule{}
@ -71,6 +70,7 @@ func NewAppModule(
func (am AppModule) IsAppModule() {}
// Name returns the staking module's name.
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}

View File

@ -24,7 +24,6 @@ import (
const ConsensusVersion uint64 = 3
var (
_ module.HasName = AppModule{}
_ module.HasAminoCodec = AppModule{}
_ module.HasGRPCGateway = AppModule{}
@ -52,6 +51,7 @@ func NewAppModule(keeper *keeper.Keeper) AppModule {
func (AppModule) IsAppModule() {}
// Name returns the ModuleName
// Deprecated: kept for legacy reasons.
func (AppModule) Name() string {
return types.ModuleName
}