mukan-core/app/app_config.go
2026-05-11 03:46:11 +03:00

227 lines
8 KiB
Go

package app
import (
_ "mukan/x/mukan/module"
mukanmoduletypes "mukan/x/mukan/types"
_ "mukan/x/poj/module"
pojmoduletypes "mukan/x/poj/types"
_ "mukan/x/qpos/module"
qposmoduletypes "mukan/x/qpos/types"
"time"
runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1"
authmodulev1 "cosmossdk.io/api/cosmos/auth/module/v1"
authzmodulev1 "cosmossdk.io/api/cosmos/authz/module/v1"
bankmodulev1 "cosmossdk.io/api/cosmos/bank/module/v1"
circuitmodulev1 "cosmossdk.io/api/cosmos/circuit/module/v1"
consensusmodulev1 "cosmossdk.io/api/cosmos/consensus/module/v1"
evidencemodulev1 "cosmossdk.io/api/cosmos/evidence/module/v1"
feegrantmodulev1 "cosmossdk.io/api/cosmos/feegrant/module/v1"
genutilmodulev1 "cosmossdk.io/api/cosmos/genutil/module/v1"
groupmodulev1 "cosmossdk.io/api/cosmos/group/module/v1"
nftmodulev1 "cosmossdk.io/api/cosmos/nft/module/v1"
paramsmodulev1 "cosmossdk.io/api/cosmos/params/module/v1"
slashingmodulev1 "cosmossdk.io/api/cosmos/slashing/module/v1"
stakingmodulev1 "cosmossdk.io/api/cosmos/staking/module/v1"
txconfigv1 "cosmossdk.io/api/cosmos/tx/config/v1"
upgrademodulev1 "cosmossdk.io/api/cosmos/upgrade/module/v1"
vestingmodulev1 "cosmossdk.io/api/cosmos/vesting/module/v1"
"cosmossdk.io/depinject/appconfig"
_ "cosmossdk.io/x/circuit" // import for side-effects
circuittypes "cosmossdk.io/x/circuit/types"
_ "cosmossdk.io/x/evidence" // import for side-effects
evidencetypes "cosmossdk.io/x/evidence/types"
"cosmossdk.io/x/feegrant"
_ "cosmossdk.io/x/feegrant/module" // import for side-effects
"cosmossdk.io/x/nft"
_ "cosmossdk.io/x/nft/module" // import for side-effects
_ "cosmossdk.io/x/upgrade" // import for side-effects
upgradetypes "cosmossdk.io/x/upgrade/types"
"git.cw.tr/mukan-network/mukan-sdk/runtime"
_ "git.cw.tr/mukan-network/mukan-sdk/x/auth/tx/config" // import for side-effects
authtypes "git.cw.tr/mukan-network/mukan-sdk/x/auth/types"
_ "git.cw.tr/mukan-network/mukan-sdk/x/auth/vesting" // import for side-effects
vestingtypes "git.cw.tr/mukan-network/mukan-sdk/x/auth/vesting/types"
"git.cw.tr/mukan-network/mukan-sdk/x/authz"
_ "git.cw.tr/mukan-network/mukan-sdk/x/authz/module" // import for side-effects
_ "git.cw.tr/mukan-network/mukan-sdk/x/bank" // import for side-effects
banktypes "git.cw.tr/mukan-network/mukan-sdk/x/bank/types"
_ "git.cw.tr/mukan-network/mukan-sdk/x/consensus" // import for side-effects
consensustypes "git.cw.tr/mukan-network/mukan-sdk/x/consensus/types"
genutiltypes "git.cw.tr/mukan-network/mukan-sdk/x/genutil/types"
"git.cw.tr/mukan-network/mukan-sdk/x/group"
_ "git.cw.tr/mukan-network/mukan-sdk/x/group/module" // import for side-effects
_ "git.cw.tr/mukan-network/mukan-sdk/x/params" // import for side-effects
paramstypes "git.cw.tr/mukan-network/mukan-sdk/x/params/types"
_ "git.cw.tr/mukan-network/mukan-sdk/x/slashing" // import for side-effects
slashingtypes "git.cw.tr/mukan-network/mukan-sdk/x/slashing/types"
_ "git.cw.tr/mukan-network/mukan-sdk/x/staking" // import for side-effects
stakingtypes "git.cw.tr/mukan-network/mukan-sdk/x/staking/types"
icatypes "git.cw.tr/mukan-network/mukan-ibc/modules/apps/27-interchain-accounts/types"
ibctransfertypes "git.cw.tr/mukan-network/mukan-ibc/modules/apps/transfer/types"
ibcexported "git.cw.tr/mukan-network/mukan-ibc/modules/core/exported"
"google.golang.org/protobuf/types/known/durationpb"
)
var (
moduleAccPerms = []*authmodulev1.ModuleAccountPermission{
{Account: authtypes.FeeCollectorName},
{Account: stakingtypes.BondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}},
{Account: stakingtypes.NotBondedPoolName, Permissions: []string{authtypes.Burner, stakingtypes.ModuleName}},
{Account: nft.ModuleName},
{Account: ibctransfertypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}},
{Account: icatypes.ModuleName},
{Account: pojmoduletypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner, authtypes.Staking}},
{Account: qposmoduletypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner, authtypes.Staking}},
}
// blocked account addresses
blockAccAddrs = []string{
authtypes.FeeCollectorName,
stakingtypes.BondedPoolName,
stakingtypes.NotBondedPoolName,
nft.ModuleName,
}
// application configuration (used by depinject)
appConfig = appconfig.Compose(&appv1alpha1.Config{
Modules: []*appv1alpha1.ModuleConfig{
{
Name: runtime.ModuleName,
Config: appconfig.WrapAny(&runtimev1alpha1.Module{
AppName: Name,
PreBlockers: []string{
upgradetypes.ModuleName,
authtypes.ModuleName,
},
BeginBlockers: []string{
slashingtypes.ModuleName,
evidencetypes.ModuleName,
stakingtypes.ModuleName,
authz.ModuleName,
ibcexported.ModuleName,
mukanmoduletypes.ModuleName,
pojmoduletypes.ModuleName,
qposmoduletypes.ModuleName,
},
EndBlockers: []string{
stakingtypes.ModuleName,
feegrant.ModuleName,
group.ModuleName,
mukanmoduletypes.ModuleName,
pojmoduletypes.ModuleName,
qposmoduletypes.ModuleName,
},
InitGenesis: []string{
consensustypes.ModuleName,
authtypes.ModuleName,
banktypes.ModuleName,
stakingtypes.ModuleName,
slashingtypes.ModuleName,
genutiltypes.ModuleName,
evidencetypes.ModuleName,
authz.ModuleName,
feegrant.ModuleName,
vestingtypes.ModuleName,
nft.ModuleName,
group.ModuleName,
upgradetypes.ModuleName,
circuittypes.ModuleName,
ibcexported.ModuleName,
ibctransfertypes.ModuleName,
icatypes.ModuleName,
mukanmoduletypes.ModuleName,
pojmoduletypes.ModuleName,
qposmoduletypes.ModuleName,
},
}),
},
{
Name: authtypes.ModuleName,
Config: appconfig.WrapAny(&authmodulev1.Module{
Bech32Prefix: AccountAddressPrefix,
ModuleAccountPermissions: moduleAccPerms,
EnableUnorderedTransactions: true,
}),
},
{
Name: vestingtypes.ModuleName,
Config: appconfig.WrapAny(&vestingmodulev1.Module{}),
},
{
Name: banktypes.ModuleName,
Config: appconfig.WrapAny(&bankmodulev1.Module{
BlockedModuleAccountsOverride: blockAccAddrs,
}),
},
{
Name: stakingtypes.ModuleName,
Config: appconfig.WrapAny(&stakingmodulev1.Module{}),
},
{
Name: slashingtypes.ModuleName,
Config: appconfig.WrapAny(&slashingmodulev1.Module{}),
},
{
Name: "tx",
Config: appconfig.WrapAny(&txconfigv1.Config{}),
},
{
Name: genutiltypes.ModuleName,
Config: appconfig.WrapAny(&genutilmodulev1.Module{}),
},
{
Name: authz.ModuleName,
Config: appconfig.WrapAny(&authzmodulev1.Module{}),
},
{
Name: upgradetypes.ModuleName,
Config: appconfig.WrapAny(&upgrademodulev1.Module{}),
},
{
Name: evidencetypes.ModuleName,
Config: appconfig.WrapAny(&evidencemodulev1.Module{}),
},
{
Name: group.ModuleName,
Config: appconfig.WrapAny(&groupmodulev1.Module{
MaxExecutionPeriod: durationpb.New(time.Second * 1209600),
MaxMetadataLen: 255,
}),
},
{
Name: nft.ModuleName,
Config: appconfig.WrapAny(&nftmodulev1.Module{}),
},
{
Name: feegrant.ModuleName,
Config: appconfig.WrapAny(&feegrantmodulev1.Module{}),
},
{
Name: consensustypes.ModuleName,
Config: appconfig.WrapAny(&consensusmodulev1.Module{}),
},
{
Name: circuittypes.ModuleName,
Config: appconfig.WrapAny(&circuitmodulev1.Module{}),
},
{
Name: paramstypes.ModuleName,
Config: appconfig.WrapAny(&paramsmodulev1.Module{}),
},
{
Name: mukanmoduletypes.ModuleName,
Config: appconfig.WrapAny(&mukanmoduletypes.Module{}),
},
{
Name: pojmoduletypes.ModuleName,
Config: appconfig.WrapAny(&pojmoduletypes.Module{}),
},
{
Name: qposmoduletypes.ModuleName,
Config: appconfig.WrapAny(&qposmoduletypes.Module{}),
},
},
})
)