github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/module.go (about) 1 package distribution 2 3 import ( 4 "encoding/json" 5 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/simulation" 6 "math/rand" 7 8 "github.com/gorilla/mux" 9 "github.com/spf13/cobra" 10 11 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 13 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 14 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/module" 15 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 16 17 "github.com/fibonacci-chain/fbc/x/distribution/client/cli" 18 "github.com/fibonacci-chain/fbc/x/distribution/client/rest" 19 "github.com/fibonacci-chain/fbc/x/distribution/types" 20 ) 21 22 var ( 23 _ module.AppModule = AppModule{} 24 _ module.AppModuleBasic = AppModuleBasic{} 25 ) 26 27 // AppModuleBasic is a struct of app module basics object 28 type AppModuleBasic struct{} 29 30 // Name returns module name 31 func (AppModuleBasic) Name() string { 32 return ModuleName 33 } 34 35 // RegisterCodec registers module codec 36 func (AppModuleBasic) RegisterCodec(cdc *codec.Codec) { 37 RegisterCodec(cdc) 38 } 39 40 // DefaultGenesis returns default genesis state 41 func (AppModuleBasic) DefaultGenesis() json.RawMessage { 42 //return ModuleCdc.MustMarshalJSON(DefaultGenesisState()) 43 return ModuleCdc.MustMarshalJSON(types.DefaultGenesisState()) 44 } 45 46 // ValidateGenesis gives a validity check to module genesis 47 func (AppModuleBasic) ValidateGenesis(bz json.RawMessage) error { 48 var data GenesisState 49 err := ModuleCdc.UnmarshalJSON(bz, &data) 50 if err != nil { 51 return err 52 } 53 return ValidateGenesis(data) 54 } 55 56 // RegisterRESTRoutes registers rest routes 57 func (AppModuleBasic) RegisterRESTRoutes(ctx context.CLIContext, rtr *mux.Router) { 58 rest.RegisterRoutes(ctx, rtr, StoreKey) 59 } 60 61 // GetTxCmd gets the root tx command of this module 62 func (AppModuleBasic) GetTxCmd(cdc *codec.Codec) *cobra.Command { 63 return cli.GetTxCmd(StoreKey, cdc) 64 } 65 66 // GetQueryCmd gets the root query command of this module 67 func (AppModuleBasic) GetQueryCmd(cdc *codec.Codec) *cobra.Command { 68 return cli.GetQueryCmd(StoreKey, cdc) 69 } 70 71 // AppModule is a struct of app module 72 type AppModule struct { 73 AppModuleBasic 74 keeper Keeper 75 supplyKeeper types.SupplyKeeper 76 } 77 78 // TODO: implement AppModuleSimulation later 79 func (am AppModule) GenerateGenesisState(input *module.SimulationState) { 80 } 81 82 func (am AppModule) ProposalContents(simState module.SimulationState) []simulation.WeightedProposalContent { 83 return nil 84 } 85 86 func (am AppModule) RandomizedParams(r *rand.Rand) []simulation.ParamChange { 87 return nil 88 } 89 90 func (am AppModule) RegisterStoreDecoder(registry sdk.StoreDecoderRegistry) { 91 } 92 93 func (am AppModule) WeightedOperations(simState module.SimulationState) []simulation.WeightedOperation { 94 return nil 95 } 96 97 // NewAppModule creates a new AppModule object 98 func NewAppModule(keeper Keeper, supplyKeeper types.SupplyKeeper) AppModule { 99 return AppModule{ 100 AppModuleBasic: AppModuleBasic{}, 101 keeper: keeper, 102 supplyKeeper: supplyKeeper, 103 } 104 } 105 106 // Name returns module name 107 func (AppModule) Name() string { 108 return ModuleName 109 } 110 111 // RegisterInvariants registers invariants 112 func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { 113 RegisterInvariants(ir, am.keeper) 114 } 115 116 // Route returns module message route name 117 func (AppModule) Route() string { 118 return RouterKey 119 } 120 121 // NewHandler returns module handler 122 func (am AppModule) NewHandler() sdk.Handler { 123 return NewHandler(am.keeper) 124 } 125 126 // QuerierRoute returns module querier route name 127 func (AppModule) QuerierRoute() string { 128 return QuerierRoute 129 } 130 131 // NewQuerierHandler returns module querier 132 func (am AppModule) NewQuerierHandler() sdk.Querier { 133 return NewQuerier(am.keeper) 134 } 135 136 // InitGenesis initializes module genesis 137 func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate { 138 var genesisState GenesisState 139 ModuleCdc.MustUnmarshalJSON(data, &genesisState) 140 InitGenesis(ctx, am.keeper, am.supplyKeeper, genesisState) 141 return []abci.ValidatorUpdate{} 142 } 143 144 // ExportGenesis exports module genesis 145 func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage { 146 gs := ExportGenesis(ctx, am.keeper) 147 return ModuleCdc.MustMarshalJSON(gs) 148 } 149 150 // BeginBlock is invoked on the beginning of each block 151 func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) { 152 BeginBlocker(ctx, req, am.keeper) 153 } 154 155 // EndBlock is invoked on the end of each block 156 func (AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { 157 return []abci.ValidatorUpdate{} 158 }