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  }